From a4f4b353fcd803f0c308808eb7feaabae45d0c7e Mon Sep 17 00:00:00 2001
From: Dan Gowans
Date: Tue, 10 Jan 2023 11:07:50 -0500
Subject: [PATCH] linting with mega linter
---
.cspell.json | 28 +-
.eslintrc.json | 110 +-
.jscpd.json | 26 +-
.ncurc.json | 2 +-
.prettierrc.json | 9 +-
app.js | 153 +-
app.ts | 305 ++-
cypress.config.js | 8 +-
cypress.config.ts | 16 +-
cypress/fixtures/fee.json | 4 +-
cypress/fixtures/map.json | 18 +-
gulpfile.js | 62 +-
gulpfile.ts | 126 +-
handlers/lots-post/doSearchLots.d.ts | 2 +-
handlers/lots-post/doSearchLots.js | 2 +-
handlers/lots-post/doSearchLots.ts | 22 +-
.../doCompleteWorkOrderMilestone.js | 2 +-
.../doCompleteWorkOrderMilestone.ts | 2 +-
...e.d.ts => completeWorkOrderMilestone.d.ts} | 0
...stone.js => completeWorkOrderMilestone.js} | 0
...stone.ts => completeWorkOrderMilestone.ts} | 0
helpers/lotOccupancyDB/getLots.js | 10 +-
helpers/lotOccupancyDB/getLots.ts | 11 +-
helpers/lotOccupancyDB/getWorkOrders.js | 4 +-
helpers/lotOccupancyDB/getWorkOrders.ts | 318 ++-
package-lock.json | 164 +-
package.json | 4 +-
public-scss/style.scss | 144 +-
public-typescript/adminCleanup.js | 22 +-
public-typescript/adminCleanup.ts | 90 +-
public-typescript/adminFees.js | 462 +++--
public-typescript/adminFees.ts | 1663 ++++++++-------
public-typescript/adminLotTypes.js | 249 ++-
public-typescript/adminLotTypes.ts | 1230 +++++------
public-typescript/adminOccupancyTypes.js | 403 ++--
public-typescript/adminOccupancyTypes.ts | 1835 +++++++++--------
public-typescript/adminTables.js | 412 ++--
public-typescript/adminTables/adminTables.js | 4 +-
public-typescript/adminTables/adminTables.ts | 38 +-
.../adminTablesLotOccupantTypes.js | 108 +-
.../adminTablesLotOccupantTypes.ts | 469 +++--
.../adminTables/adminTablesLotStatuses.js | 94 +-
.../adminTables/adminTablesLotStatuses.ts | 370 ++--
.../adminTablesWorkOrderMilestoneTypes.js | 104 +-
.../adminTablesWorkOrderMilestoneTypes.ts | 402 ++--
.../adminTables/adminTablesWorkOrderTypes.js | 102 +-
.../adminTables/adminTablesWorkOrderTypes.ts | 395 ++--
public-typescript/dashboard.js | 4 +-
public-typescript/dashboard.ts | 24 +-
public-typescript/lotEdit.js | 216 +-
public-typescript/lotEdit.ts | 945 +++++----
public-typescript/lotOccupancyEdit.js | 1009 ++++-----
.../lotOccupancyEdit/lotOccupancyEdit.js | 306 +--
.../lotOccupancyEdit/lotOccupancyEdit.ts | 1168 ++++++-----
.../lotOccupancyEditComments.js | 136 +-
.../lotOccupancyEditComments.ts | 530 ++---
.../lotOccupancyEdit/lotOccupancyEditFees.js | 274 +--
.../lotOccupancyEdit/lotOccupancyEditFees.ts | 1058 +++++-----
.../lotOccupancyEditOccupants.js | 293 +--
.../lotOccupancyEditOccupants.ts | 1012 ++++-----
public-typescript/lotOccupancySearch.js | 94 +-
public-typescript/lotOccupancySearch.ts | 319 +--
public-typescript/lotSearch.js | 60 +-
public-typescript/lotSearch.ts | 219 +-
public-typescript/lotView.js | 5 +-
public-typescript/lotView.ts | 23 +-
public-typescript/main.js | 295 +--
public-typescript/main.ts | 779 +++----
public-typescript/mapEdit.js | 43 +-
public-typescript/mapEdit.ts | 164 +-
public-typescript/mapSearch.js | 81 +-
public-typescript/mapSearch.ts | 215 +-
public-typescript/mapView.js | 6 +-
public-typescript/mapView.ts | 48 +-
public-typescript/reportSearch.js | 17 +-
public-typescript/reportSearch.ts | 65 +-
public-typescript/workOrderEdit.js | 764 +++----
.../workOrderEdit/workOrderEdit.js | 301 +--
.../workOrderEdit/workOrderEdit.ts | 1180 ++++++-----
.../workOrderEdit/workOrderEditComments.js | 125 +-
.../workOrderEdit/workOrderEditComments.ts | 458 ++--
.../workOrderEdit/workOrderEditLots.js | 338 +--
.../workOrderEdit/workOrderEditLots.ts | 1248 +++++------
.../workOrderMilestoneCalendar.js | 92 +-
.../workOrderMilestoneCalendar.ts | 310 +--
public-typescript/workOrderOutlook.js | 37 +-
public-typescript/workOrderOutlook.ts | 149 +-
public-typescript/workOrderSearch.js | 180 +-
public-typescript/workOrderSearch.ts | 391 ++--
public-typescript/workOrderView.js | 23 +-
public-typescript/workOrderView.ts | 93 +-
public/html/adminFees-editFee.html | 2 +-
public/html/adminLotTypes-addLotType.html | 2 +-
.../html/adminLotTypes-addLotTypeField.html | 2 +-
public/html/adminLotTypes-editLotType.html | 2 +-
.../html/adminLotTypes-editLotTypeField.html | 2 +-
.../adminOccupancyTypes-addOccupancyType.html | 2 +-
...nOccupancyTypes-addOccupancyTypeField.html | 2 +-
...adminOccupancyTypes-editOccupancyType.html | 2 +-
...OccupancyTypes-editOccupancyTypeField.html | 2 +-
public/html/workOrder-addLot.html | 2 +-
public/html/workOrder-addLotOccupancy.html | 2 +-
.../workOrderMilestoneCalendar.min.js | 2 +-
public/stylesheets/style.css | 2 +-
tsconfig.json | 34 +-
views/print/pdf/_workOrder-header.ejs | 40 +
views/print/pdf/workOrder-commentLog.ejs | 41 +-
views/print/pdf/workOrder.ejs | 45 +-
108 files changed, 13118 insertions(+), 12169 deletions(-)
rename helpers/lotOccupancyDB/{completeWorkOrderMiletstone.d.ts => completeWorkOrderMilestone.d.ts} (100%)
rename helpers/lotOccupancyDB/{completeWorkOrderMiletstone.js => completeWorkOrderMilestone.js} (100%)
rename helpers/lotOccupancyDB/{completeWorkOrderMiletstone.ts => completeWorkOrderMilestone.ts} (100%)
create mode 100644 views/print/pdf/_workOrder-header.ejs
diff --git a/.cspell.json b/.cspell.json
index b798d293..4553ba90 100644
--- a/.cspell.json
+++ b/.cspell.json
@@ -1,16 +1,16 @@
{
- "ignorePaths": [
- "**/node_modules/**",
- "**/vscode-extension/**",
- "**/.git/**",
- "**/.pnpm-lock.json",
- ".vscode",
- "megalinter",
- "package-lock.json",
- "report"
- ],
- "language": "en",
- "noConfigSearch": true,
- "words": ["megalinter", "oxsecurity"],
- "version": "0.2"
+ "ignorePaths": [
+ "**/node_modules/**",
+ "**/vscode-extension/**",
+ "**/.git/**",
+ "**/.pnpm-lock.json",
+ ".vscode",
+ "megalinter",
+ "package-lock.json",
+ "report"
+ ],
+ "language": "en",
+ "noConfigSearch": true,
+ "words": ["megalinter", "oxsecurity"],
+ "version": "0.2"
}
diff --git a/.eslintrc.json b/.eslintrc.json
index 1e42c2b9..e3642ff4 100644
--- a/.eslintrc.json
+++ b/.eslintrc.json
@@ -1,58 +1,58 @@
{
- "root": true,
- "env": {
- "es6": true
- },
- "parser": "@typescript-eslint/parser",
- "parserOptions": {
- "project": ["./tsconfig.json", "./tsconfig.client.json"],
- "ecmaVersion": 2020,
- "sourceType": "module"
- },
- "plugins": ["@typescript-eslint", "unicorn"],
- "extends": [
- "eslint:recommended",
- "plugin:import/recommended",
- "plugin:import/typescript",
- "plugin:node/recommended",
- "plugin:promise/recommended",
- "plugin:unicorn/recommended",
- "plugin:@typescript-eslint/recommended"
+ "root": true,
+ "env": {
+ "es6": true
+ },
+ "parser": "@typescript-eslint/parser",
+ "parserOptions": {
+ "project": ["./tsconfig.json", "./tsconfig.client.json"],
+ "ecmaVersion": 2020,
+ "sourceType": "module"
+ },
+ "plugins": ["@typescript-eslint", "unicorn"],
+ "extends": [
+ "eslint:recommended",
+ "plugin:import/recommended",
+ "plugin:import/typescript",
+ "plugin:node/recommended",
+ "plugin:promise/recommended",
+ "plugin:unicorn/recommended",
+ "plugin:@typescript-eslint/recommended"
+ ],
+ "rules": {
+ "@typescript-eslint/no-extra-semi": "off",
+ "node/no-missing-import": "off",
+ "node/no-unpublished-import": "off",
+ "unicorn/consistent-function-scoping": "warn",
+ "unicorn/empty-brace-spaces": "off",
+ "unicorn/filename-case": [
+ "error",
+ {
+ "case": "camelCase",
+ "ignore": ["DB", "URL"]
+ }
],
- "rules": {
- "node/no-missing-import": "off",
- "node/no-unpublished-import": "off",
- "unicorn/consistent-function-scoping": "warn",
- "unicorn/empty-brace-spaces": "off",
- "unicorn/filename-case": [
- "error",
- {
- "case": "camelCase",
- "ignore": ["DB", "URL"]
- }
- ],
- "unicorn/prefer-node-protocol": "off",
- "unicorn/prevent-abbreviations": [
- "error",
- {
- "replacements": {
- "def": {
- "definition": true
- },
- "ele": {
- "element": true
- },
- "eles": {
- "elements": true
- },
- "fns": {
- "functions": true
- },
- "res": {
- "result": false
- }
- }
- }
- ]
- }
+ "unicorn/prevent-abbreviations": [
+ "error",
+ {
+ "replacements": {
+ "def": {
+ "definition": true
+ },
+ "ele": {
+ "element": true
+ },
+ "eles": {
+ "elements": true
+ },
+ "fns": {
+ "functions": true
+ },
+ "res": {
+ "result": false
+ }
+ }
+ }
+ ]
+ }
}
diff --git a/.jscpd.json b/.jscpd.json
index 2cee5f5d..93f9c310 100644
--- a/.jscpd.json
+++ b/.jscpd.json
@@ -1,15 +1,15 @@
{
- "threshold": 0,
- "reporters": ["html", "markdown"],
- "ignore": [
- "**/node_modules/**",
- "**/.git/**",
- "**/.rbenv/**",
- "**/.venv/**",
- "**/*cache*/**",
- "**/.github/**",
- "**/.idea/**",
- "**/report/**",
- "**/*.svg"
- ]
+ "threshold": 0,
+ "reporters": ["html", "markdown"],
+ "ignore": [
+ "**/node_modules/**",
+ "**/.git/**",
+ "**/.rbenv/**",
+ "**/.venv/**",
+ "**/*cache*/**",
+ "**/.github/**",
+ "**/.idea/**",
+ "**/report/**",
+ "**/*.svg"
+ ]
}
diff --git a/.ncurc.json b/.ncurc.json
index ddac39cd..5d40c0eb 100644
--- a/.ncurc.json
+++ b/.ncurc.json
@@ -1,3 +1,3 @@
{
- "reject": ["@fortawesome/fontawesome-free"]
+ "reject": ["@fortawesome/fontawesome-free"]
}
diff --git a/.prettierrc.json b/.prettierrc.json
index 3339ce73..c50384fb 100644
--- a/.prettierrc.json
+++ b/.prettierrc.json
@@ -1,7 +1,6 @@
{
- "trailingComma": "none",
- "tabWidth": 4,
- "semi": true,
- "singleQuote": false,
- "printWidth": 110
+ "trailingComma": "none",
+ "tabWidth": 2,
+ "semi": false,
+ "singleQuote": true
}
diff --git a/app.js b/app.js
index 1ef276fc..6f829c64 100644
--- a/app.js
+++ b/app.js
@@ -1,44 +1,44 @@
-import createError from "http-errors";
-import express from "express";
-import compression from "compression";
-import path from "node:path";
-import cookieParser from "cookie-parser";
-import csurf from "csurf";
-import rateLimit from "express-rate-limit";
-import session from "express-session";
-import FileStore from "session-file-store";
-import * as permissionHandlers from "./handlers/permissions.js";
-import routerLogin from "./routes/login.js";
-import routerDashboard from "./routes/dashboard.js";
-import routerApi from "./routes/api.js";
-import routerPrint from "./routes/print.js";
-import routerMaps from "./routes/maps.js";
-import routerLots from "./routes/lots.js";
-import routerLotOccupancies from "./routes/lotOccupancies.js";
-import routerWorkOrders from "./routes/workOrders.js";
-import routerReports from "./routes/reports.js";
-import routerAdmin from "./routes/admin.js";
-import * as configFunctions from "./helpers/functions.config.js";
-import * as printFunctions from "./helpers/functions.print.js";
-import * as dateTimeFns from "@cityssm/expressjs-server-js/dateTimeFns.js";
-import * as stringFns from "@cityssm/expressjs-server-js/stringFns.js";
-import * as htmlFns from "@cityssm/expressjs-server-js/htmlFns.js";
-import { version } from "./version.js";
-import * as databaseInitializer from "./helpers/initializer.database.js";
-import { apiGetHandler } from "./handlers/permissions.js";
-import { getSafeRedirectURL } from "./helpers/functions.authentication.js";
-import debug from "debug";
-const debugApp = debug("lot-occupancy-system:app");
+import createError from 'http-errors';
+import express from 'express';
+import compression from 'compression';
+import path from 'node:path';
+import cookieParser from 'cookie-parser';
+import csurf from 'csurf';
+import rateLimit from 'express-rate-limit';
+import session from 'express-session';
+import FileStore from 'session-file-store';
+import * as permissionHandlers from './handlers/permissions.js';
+import routerLogin from './routes/login.js';
+import routerDashboard from './routes/dashboard.js';
+import routerApi from './routes/api.js';
+import routerPrint from './routes/print.js';
+import routerMaps from './routes/maps.js';
+import routerLots from './routes/lots.js';
+import routerLotOccupancies from './routes/lotOccupancies.js';
+import routerWorkOrders from './routes/workOrders.js';
+import routerReports from './routes/reports.js';
+import routerAdmin from './routes/admin.js';
+import * as configFunctions from './helpers/functions.config.js';
+import * as printFunctions from './helpers/functions.print.js';
+import * as dateTimeFns from '@cityssm/expressjs-server-js/dateTimeFns.js';
+import * as stringFns from '@cityssm/expressjs-server-js/stringFns.js';
+import * as htmlFns from '@cityssm/expressjs-server-js/htmlFns.js';
+import { version } from './version.js';
+import * as databaseInitializer from './helpers/initializer.database.js';
+import { apiGetHandler } from './handlers/permissions.js';
+import { getSafeRedirectURL } from './helpers/functions.authentication.js';
+import debug from 'debug';
+const debugApp = debug('lot-occupancy-system:app');
databaseInitializer.initializeDatabase();
-const __dirname = ".";
+const __dirname = '.';
export const app = express();
-app.disable("X-Powered-By");
-if (!configFunctions.getProperty("reverseProxy.disableEtag")) {
- app.set("etag", false);
+app.disable('X-Powered-By');
+if (!configFunctions.getProperty('reverseProxy.disableEtag')) {
+ app.set('etag', false);
}
-app.set("views", path.join(__dirname, "views"));
-app.set("view engine", "ejs");
-if (!configFunctions.getProperty("reverseProxy.disableCompression")) {
+app.set('views', path.join(__dirname, 'views'));
+app.set('view engine', 'ejs');
+if (!configFunctions.getProperty('reverseProxy.disableCompression')) {
app.use(compression());
}
app.use((request, _response, next) => {
@@ -53,38 +53,37 @@ app.use(cookieParser());
app.use(csurf({
cookie: true
}));
-const limiter = rateLimit({
- windowMs: 1000,
- max: 25 * Math.max(3, configFunctions.getProperty("users.canLogin").length)
-});
-app.use(limiter);
-const urlPrefix = configFunctions.getProperty("reverseProxy.urlPrefix");
-if (urlPrefix !== "") {
- debugApp("urlPrefix = " + urlPrefix);
+app.use(rateLimit({
+ windowMs: 10000,
+ max: 200
+}));
+const urlPrefix = configFunctions.getProperty('reverseProxy.urlPrefix');
+if (urlPrefix !== '') {
+ debugApp('urlPrefix = ' + urlPrefix);
}
-app.use(urlPrefix, express.static(path.join("public")));
-app.use(urlPrefix + "/lib/bulma-calendar", express.static(path.join("node_modules", "bulma-calendar", "dist")));
-app.use(urlPrefix + "/lib/cityssm-bulma-js", express.static(path.join("node_modules", "@cityssm", "bulma-js", "dist")));
-app.use(urlPrefix + "/lib/cityssm-bulma-webapp-js", express.static(path.join("node_modules", "@cityssm", "bulma-webapp-js")));
-app.use(urlPrefix + "/lib/fa", express.static(path.join("node_modules", "@fortawesome", "fontawesome-free")));
-app.use(urlPrefix + "/lib/leaflet", express.static(path.join("node_modules", "leaflet", "dist")));
-app.use(urlPrefix + "/lib/randomcolor", express.static(path.join("node_modules", "randomcolor")));
-const sessionCookieName = configFunctions.getProperty("session.cookieName");
+app.use(urlPrefix, express.static(path.join('public')));
+app.use(urlPrefix + '/lib/bulma-calendar', express.static(path.join('node_modules', 'bulma-calendar', 'dist')));
+app.use(urlPrefix + '/lib/cityssm-bulma-js', express.static(path.join('node_modules', '@cityssm', 'bulma-js', 'dist')));
+app.use(urlPrefix + '/lib/cityssm-bulma-webapp-js', express.static(path.join('node_modules', '@cityssm', 'bulma-webapp-js')));
+app.use(urlPrefix + '/lib/fa', express.static(path.join('node_modules', '@fortawesome', 'fontawesome-free')));
+app.use(urlPrefix + '/lib/leaflet', express.static(path.join('node_modules', 'leaflet', 'dist')));
+app.use(urlPrefix + '/lib/randomcolor', express.static(path.join('node_modules', 'randomcolor')));
+const sessionCookieName = configFunctions.getProperty('session.cookieName');
const FileStoreSession = FileStore(session);
app.use(session({
store: new FileStoreSession({
- path: "./data/sessions",
- logFn: debug("lot-occupancy-system:session"),
+ path: './data/sessions',
+ logFn: debug('lot-occupancy-system:session'),
retries: 20
}),
name: sessionCookieName,
- secret: configFunctions.getProperty("session.secret"),
+ secret: configFunctions.getProperty('session.secret'),
resave: true,
saveUninitialized: false,
rolling: true,
cookie: {
- maxAge: configFunctions.getProperty("session.maxAgeMillis"),
- sameSite: "strict"
+ maxAge: configFunctions.getProperty('session.maxAgeMillis'),
+ sameSite: 'strict'
}
}));
app.use((request, response, next) => {
@@ -109,38 +108,38 @@ app.use((request, response, next) => {
response.locals.dateTimeFunctions = dateTimeFns;
response.locals.stringFunctions = stringFns;
response.locals.htmlFunctions = htmlFns;
- response.locals.urlPrefix = configFunctions.getProperty("reverseProxy.urlPrefix");
+ response.locals.urlPrefix = configFunctions.getProperty('reverseProxy.urlPrefix');
next();
});
-app.get(urlPrefix + "/", sessionChecker, (_request, response) => {
- response.redirect(urlPrefix + "/dashboard");
+app.get(urlPrefix + '/', sessionChecker, (_request, response) => {
+ response.redirect(urlPrefix + '/dashboard');
});
-app.use(urlPrefix + "/dashboard", sessionChecker, routerDashboard);
-app.use(urlPrefix + "/api/:apiKey", apiGetHandler, routerApi);
-app.use(urlPrefix + "/print", sessionChecker, routerPrint);
-app.use(urlPrefix + "/maps", sessionChecker, routerMaps);
-app.use(urlPrefix + "/lots", sessionChecker, routerLots);
-app.use(urlPrefix + "/lotOccupancies", sessionChecker, routerLotOccupancies);
-app.use(urlPrefix + "/workOrders", sessionChecker, routerWorkOrders);
-app.use(urlPrefix + "/reports", sessionChecker, routerReports);
-app.use(urlPrefix + "/admin", sessionChecker, permissionHandlers.adminGetHandler, routerAdmin);
-app.all(urlPrefix + "/keepAlive", (_request, response) => {
+app.use(urlPrefix + '/dashboard', sessionChecker, routerDashboard);
+app.use(urlPrefix + '/api/:apiKey', apiGetHandler, routerApi);
+app.use(urlPrefix + '/print', sessionChecker, routerPrint);
+app.use(urlPrefix + '/maps', sessionChecker, routerMaps);
+app.use(urlPrefix + '/lots', sessionChecker, routerLots);
+app.use(urlPrefix + '/lotOccupancies', sessionChecker, routerLotOccupancies);
+app.use(urlPrefix + '/workOrders', sessionChecker, routerWorkOrders);
+app.use(urlPrefix + '/reports', sessionChecker, routerReports);
+app.use(urlPrefix + '/admin', sessionChecker, permissionHandlers.adminGetHandler, routerAdmin);
+app.all(urlPrefix + '/keepAlive', (_request, response) => {
response.json(true);
});
-app.use(urlPrefix + "/login", routerLogin);
-app.get(urlPrefix + "/logout", (request, response) => {
+app.use(urlPrefix + '/login', routerLogin);
+app.get(urlPrefix + '/logout', (request, response) => {
if (request.session.user && request.cookies[sessionCookieName]) {
request.session.destroy(() => {
response.clearCookie(sessionCookieName);
- response.redirect(urlPrefix + "/");
+ response.redirect(urlPrefix + '/');
});
}
else {
- response.redirect(urlPrefix + "/login");
+ response.redirect(urlPrefix + '/login');
}
});
app.use((request, _response, next) => {
debugApp(request.url);
- next(createError(404, "File not found."));
+ next(createError(404, 'File not found.'));
});
export default app;
diff --git a/app.ts b/app.ts
index 22ad0b00..a90bdc6c 100644
--- a/app.ts
+++ b/app.ts
@@ -1,189 +1,182 @@
-import createError from "http-errors";
-import express from "express";
+import createError from 'http-errors'
+import express from 'express'
-import compression from "compression";
-import path from "node:path";
-import cookieParser from "cookie-parser";
-import csurf from "csurf";
-import rateLimit from "express-rate-limit";
+import compression from 'compression'
+import path from 'node:path'
+import cookieParser from 'cookie-parser'
+import csurf from 'csurf'
+import rateLimit from 'express-rate-limit'
-import session from "express-session";
-import FileStore from "session-file-store";
+import session from 'express-session'
+import FileStore from 'session-file-store'
-import * as permissionHandlers from "./handlers/permissions.js";
-import routerLogin from "./routes/login.js";
-import routerDashboard from "./routes/dashboard.js";
-import routerApi from "./routes/api.js";
-import routerPrint from "./routes/print.js";
-import routerMaps from "./routes/maps.js";
-import routerLots from "./routes/lots.js";
-import routerLotOccupancies from "./routes/lotOccupancies.js";
-import routerWorkOrders from "./routes/workOrders.js";
-import routerReports from "./routes/reports.js";
-import routerAdmin from "./routes/admin.js";
+import * as permissionHandlers from './handlers/permissions.js'
+import routerLogin from './routes/login.js'
+import routerDashboard from './routes/dashboard.js'
+import routerApi from './routes/api.js'
+import routerPrint from './routes/print.js'
+import routerMaps from './routes/maps.js'
+import routerLots from './routes/lots.js'
+import routerLotOccupancies from './routes/lotOccupancies.js'
+import routerWorkOrders from './routes/workOrders.js'
+import routerReports from './routes/reports.js'
+import routerAdmin from './routes/admin.js'
-import * as configFunctions from "./helpers/functions.config.js";
-import * as printFunctions from "./helpers/functions.print.js";
-import * as dateTimeFns from "@cityssm/expressjs-server-js/dateTimeFns.js";
-import * as stringFns from "@cityssm/expressjs-server-js/stringFns.js";
-import * as htmlFns from "@cityssm/expressjs-server-js/htmlFns.js";
+import * as configFunctions from './helpers/functions.config.js'
+import * as printFunctions from './helpers/functions.print.js'
+import * as dateTimeFns from '@cityssm/expressjs-server-js/dateTimeFns.js'
+import * as stringFns from '@cityssm/expressjs-server-js/stringFns.js'
+import * as htmlFns from '@cityssm/expressjs-server-js/htmlFns.js'
-import { version } from "./version.js";
+import { version } from './version.js'
-import * as databaseInitializer from "./helpers/initializer.database.js";
+import * as databaseInitializer from './helpers/initializer.database.js'
-import { apiGetHandler } from "./handlers/permissions.js";
-import { getSafeRedirectURL } from "./helpers/functions.authentication.js";
+import { apiGetHandler } from './handlers/permissions.js'
+import { getSafeRedirectURL } from './helpers/functions.authentication.js'
-import debug from "debug";
-const debugApp = debug("lot-occupancy-system:app");
+import debug from 'debug'
+const debugApp = debug('lot-occupancy-system:app')
/*
- * INITALIZE THE DATABASE
+ * INITIALIZE THE DATABASE
*/
-databaseInitializer.initializeDatabase();
+databaseInitializer.initializeDatabase()
/*
* INITIALIZE APP
*/
-const __dirname = ".";
+const __dirname = '.'
-export const app = express();
+export const app = express()
-app.disable("X-Powered-By");
+app.disable('X-Powered-By')
-if (!configFunctions.getProperty("reverseProxy.disableEtag")) {
- app.set("etag", false);
+if (!configFunctions.getProperty('reverseProxy.disableEtag')) {
+ app.set('etag', false)
}
// View engine setup
-app.set("views", path.join(__dirname, "views"));
-app.set("view engine", "ejs");
+app.set('views', path.join(__dirname, 'views'))
+app.set('view engine', 'ejs')
-if (!configFunctions.getProperty("reverseProxy.disableCompression")) {
- app.use(compression());
+if (!configFunctions.getProperty('reverseProxy.disableCompression')) {
+ app.use(compression())
}
app.use((request, _response, next) => {
- debugApp(`${request.method} ${request.url}`);
- next();
-});
+ debugApp(`${request.method} ${request.url}`)
+ next()
+})
-app.use(express.json());
+app.use(express.json())
app.use(
- express.urlencoded({
- extended: false
- })
-);
+ express.urlencoded({
+ extended: false
+ })
+)
-app.use(cookieParser());
+app.use(cookieParser())
app.use(
- csurf({
- cookie: true
- })
-);
+ csurf({
+ cookie: true
+ })
+)
/*
* Rate Limiter
*/
-const limiter = rateLimit({
- windowMs: 1000,
- max: 25 * Math.max(3, configFunctions.getProperty("users.canLogin").length)
-});
-
-app.use(limiter);
+app.use(
+ rateLimit({
+ windowMs: 10_000,
+ max: 200
+ })
+)
/*
* STATIC ROUTES
*/
-const urlPrefix = configFunctions.getProperty("reverseProxy.urlPrefix");
+const urlPrefix = configFunctions.getProperty('reverseProxy.urlPrefix')
-if (urlPrefix !== "") {
- debugApp("urlPrefix = " + urlPrefix);
+if (urlPrefix !== '') {
+ debugApp('urlPrefix = ' + urlPrefix)
}
-app.use(urlPrefix, express.static(path.join("public")));
+app.use(urlPrefix, express.static(path.join('public')))
app.use(
- urlPrefix + "/lib/bulma-calendar",
- express.static(path.join("node_modules", "bulma-calendar", "dist"))
-);
+ urlPrefix + '/lib/bulma-calendar',
+ express.static(path.join('node_modules', 'bulma-calendar', 'dist'))
+)
app.use(
- urlPrefix + "/lib/cityssm-bulma-js",
- express.static(path.join("node_modules", "@cityssm", "bulma-js", "dist"))
-);
+ urlPrefix + '/lib/cityssm-bulma-js',
+ express.static(path.join('node_modules', '@cityssm', 'bulma-js', 'dist'))
+)
app.use(
- urlPrefix + "/lib/cityssm-bulma-webapp-js",
- express.static(path.join("node_modules", "@cityssm", "bulma-webapp-js"))
-);
+ urlPrefix + '/lib/cityssm-bulma-webapp-js',
+ express.static(path.join('node_modules', '@cityssm', 'bulma-webapp-js'))
+)
-app.use(
- urlPrefix + "/lib/fa",
- express.static(path.join("node_modules", "@fortawesome", "fontawesome-free"))
-);
+app.use(urlPrefix + '/lib/fa', express.static(path.join('node_modules', '@fortawesome', 'fontawesome-free')))
-app.use(urlPrefix + "/lib/leaflet", express.static(path.join("node_modules", "leaflet", "dist")));
+app.use(urlPrefix + '/lib/leaflet', express.static(path.join('node_modules', 'leaflet', 'dist')))
-app.use(urlPrefix + "/lib/randomcolor", express.static(path.join("node_modules", "randomcolor")));
+app.use(urlPrefix + '/lib/randomcolor', express.static(path.join('node_modules', 'randomcolor')))
/*
* SESSION MANAGEMENT
*/
-const sessionCookieName: string = configFunctions.getProperty("session.cookieName");
+const sessionCookieName: string = configFunctions.getProperty('session.cookieName')
-const FileStoreSession = FileStore(session);
+const FileStoreSession = FileStore(session)
// Initialize session
app.use(
- session({
- store: new FileStoreSession({
- path: "./data/sessions",
- logFn: debug("lot-occupancy-system:session"),
- retries: 20
- }),
- name: sessionCookieName,
- secret: configFunctions.getProperty("session.secret"),
- resave: true,
- saveUninitialized: false,
- rolling: true,
- cookie: {
- maxAge: configFunctions.getProperty("session.maxAgeMillis"),
- sameSite: "strict"
- }
- })
-);
+ session({
+ store: new FileStoreSession({
+ path: './data/sessions',
+ logFn: debug('lot-occupancy-system:session'),
+ retries: 20
+ }),
+ name: sessionCookieName,
+ secret: configFunctions.getProperty('session.secret'),
+ resave: true,
+ saveUninitialized: false,
+ rolling: true,
+ cookie: {
+ maxAge: configFunctions.getProperty('session.maxAgeMillis'),
+ sameSite: 'strict'
+ }
+ })
+)
// Clear cookie if no corresponding session
app.use((request, response, next) => {
- if (request.cookies[sessionCookieName] && !request.session.user) {
- response.clearCookie(sessionCookieName);
- }
+ if (request.cookies[sessionCookieName] && !request.session.user) {
+ response.clearCookie(sessionCookieName)
+ }
- next();
-});
+ next()
+})
// Redirect logged in users
-const sessionChecker = (
- request: express.Request,
- response: express.Response,
- next: express.NextFunction
-) => {
- if (request.session.user && request.cookies[sessionCookieName]) {
- return next();
- }
+const sessionChecker = (request: express.Request, response: express.Response, next: express.NextFunction) => {
+ if (request.session.user && request.cookies[sessionCookieName]) {
+ return next()
+ }
- const redirectUrl = getSafeRedirectURL(request.originalUrl);
+ const redirectUrl = getSafeRedirectURL(request.originalUrl)
- return response.redirect(`${urlPrefix}/login?redirect=${encodeURIComponent(redirectUrl)}`);
-};
+ return response.redirect(`${urlPrefix}/login?redirect=${encodeURIComponent(redirectUrl)}`)
+}
/*
* ROUTES
@@ -192,60 +185,60 @@ const sessionChecker = (
// Make the user and config objects available to the templates
app.use((request, response, next) => {
- response.locals.buildNumber = version;
+ response.locals.buildNumber = version
- response.locals.user = request.session.user;
- response.locals.csrfToken = request.csrfToken();
+ response.locals.user = request.session.user
+ response.locals.csrfToken = request.csrfToken()
- response.locals.configFunctions = configFunctions;
- response.locals.printFunctions = printFunctions;
- response.locals.dateTimeFunctions = dateTimeFns;
- response.locals.stringFunctions = stringFns;
- response.locals.htmlFunctions = htmlFns;
+ response.locals.configFunctions = configFunctions
+ response.locals.printFunctions = printFunctions
+ response.locals.dateTimeFunctions = dateTimeFns
+ response.locals.stringFunctions = stringFns
+ response.locals.htmlFunctions = htmlFns
- response.locals.urlPrefix = configFunctions.getProperty("reverseProxy.urlPrefix");
+ response.locals.urlPrefix = configFunctions.getProperty('reverseProxy.urlPrefix')
- next();
-});
+ next()
+})
-app.get(urlPrefix + "/", sessionChecker, (_request, response) => {
- response.redirect(urlPrefix + "/dashboard");
-});
+app.get(urlPrefix + '/', sessionChecker, (_request, response) => {
+ response.redirect(urlPrefix + '/dashboard')
+})
-app.use(urlPrefix + "/dashboard", sessionChecker, routerDashboard);
+app.use(urlPrefix + '/dashboard', sessionChecker, routerDashboard)
-app.use(urlPrefix + "/api/:apiKey", apiGetHandler, routerApi);
+app.use(urlPrefix + '/api/:apiKey', apiGetHandler, routerApi)
-app.use(urlPrefix + "/print", sessionChecker, routerPrint);
-app.use(urlPrefix + "/maps", sessionChecker, routerMaps);
-app.use(urlPrefix + "/lots", sessionChecker, routerLots);
-app.use(urlPrefix + "/lotOccupancies", sessionChecker, routerLotOccupancies);
-app.use(urlPrefix + "/workOrders", sessionChecker, routerWorkOrders);
+app.use(urlPrefix + '/print', sessionChecker, routerPrint)
+app.use(urlPrefix + '/maps', sessionChecker, routerMaps)
+app.use(urlPrefix + '/lots', sessionChecker, routerLots)
+app.use(urlPrefix + '/lotOccupancies', sessionChecker, routerLotOccupancies)
+app.use(urlPrefix + '/workOrders', sessionChecker, routerWorkOrders)
-app.use(urlPrefix + "/reports", sessionChecker, routerReports);
-app.use(urlPrefix + "/admin", sessionChecker, permissionHandlers.adminGetHandler, routerAdmin);
+app.use(urlPrefix + '/reports', sessionChecker, routerReports)
+app.use(urlPrefix + '/admin', sessionChecker, permissionHandlers.adminGetHandler, routerAdmin)
-app.all(urlPrefix + "/keepAlive", (_request, response) => {
- response.json(true);
-});
+app.all(urlPrefix + '/keepAlive', (_request, response) => {
+ response.json(true)
+})
-app.use(urlPrefix + "/login", routerLogin);
+app.use(urlPrefix + '/login', routerLogin)
-app.get(urlPrefix + "/logout", (request, response) => {
- if (request.session.user && request.cookies[sessionCookieName]) {
- request.session.destroy(() => {
- response.clearCookie(sessionCookieName);
- response.redirect(urlPrefix + "/");
- });
- } else {
- response.redirect(urlPrefix + "/login");
- }
-});
+app.get(urlPrefix + '/logout', (request, response) => {
+ if (request.session.user && request.cookies[sessionCookieName]) {
+ request.session.destroy(() => {
+ response.clearCookie(sessionCookieName)
+ response.redirect(urlPrefix + '/')
+ })
+ } else {
+ response.redirect(urlPrefix + '/login')
+ }
+})
// Catch 404 and forward to error handler
app.use((request, _response, next) => {
- debugApp(request.url);
- next(createError(404, "File not found."));
-});
+ debugApp(request.url)
+ next(createError(404, 'File not found.'))
+})
-export default app;
+export default app
diff --git a/cypress.config.js b/cypress.config.js
index bc81052e..5d860a51 100644
--- a/cypress.config.js
+++ b/cypress.config.js
@@ -1,9 +1,9 @@
-import { defineConfig } from "cypress";
+import { defineConfig } from 'cypress';
export default defineConfig({
e2e: {
- baseUrl: "http://localhost:7000",
- specPattern: "cypress/e2e/**/*.cy.ts",
+ baseUrl: 'http://localhost:7000',
+ specPattern: 'cypress/e2e/**/*.cy.ts',
supportFile: false,
- projectId: "xya1fn"
+ projectId: 'xya1fn'
}
});
diff --git a/cypress.config.ts b/cypress.config.ts
index ae084c4d..0de4dcee 100644
--- a/cypress.config.ts
+++ b/cypress.config.ts
@@ -1,10 +1,10 @@
-import { defineConfig } from "cypress";
+import { defineConfig } from 'cypress'
export default defineConfig({
- e2e: {
- baseUrl: "http://localhost:7000",
- specPattern: "cypress/e2e/**/*.cy.ts",
- supportFile: false,
- projectId: "xya1fn"
- }
-});
+ e2e: {
+ baseUrl: 'http://localhost:7000',
+ specPattern: 'cypress/e2e/**/*.cy.ts',
+ supportFile: false,
+ projectId: 'xya1fn'
+ }
+})
diff --git a/cypress/fixtures/fee.json b/cypress/fixtures/fee.json
index 3c4da779..7d60b85c 100644
--- a/cypress/fixtures/fee.json
+++ b/cypress/fixtures/fee.json
@@ -2,6 +2,6 @@
"feeCategory": "Cypress Test - Fee Category",
"feeName": "Cypress Test - Fee Name",
"feeDescription": "Test Description",
- "feeAmount": 10.50,
+ "feeAmount": 10.5,
"quantityUnit": "units"
-}
\ No newline at end of file
+}
diff --git a/cypress/fixtures/map.json b/cypress/fixtures/map.json
index d72e1b50..e14b5e8a 100644
--- a/cypress/fixtures/map.json
+++ b/cypress/fixtures/map.json
@@ -1,10 +1,10 @@
{
- "mapName": "Cypress Test - Holy Sepulchre",
- "mapDescription": "Operated by the City of Sault Ste. Marie" ,
- "mapAddress1": "Fourth Line and Peoples Road",
- "mapAddress2": "27 Fourth Line East",
- "mapPostalCode": "P6A 5K8",
- "mapPhoneNumber": "705-759-5336",
- "mapLatitude": 46.56874795,
- "mapLongitude": -84.34842824
-}
\ No newline at end of file
+ "mapName": "Cypress Test - Holy Sepulchre",
+ "mapDescription": "Operated by the City of Sault Ste. Marie",
+ "mapAddress1": "Fourth Line and Peoples Road",
+ "mapAddress2": "27 Fourth Line East",
+ "mapPostalCode": "P6A 5K8",
+ "mapPhoneNumber": "705-759-5336",
+ "mapLatitude": 46.56874795,
+ "mapLongitude": -84.34842824
+}
diff --git a/gulpfile.js b/gulpfile.js
index fa708571..80e065fb 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -1,59 +1,59 @@
-import gulp from "gulp";
-import changed from "gulp-changed";
-import minify from "gulp-minify";
-import include from "gulp-include";
-import dartSass from "sass";
-import gulpSass from "gulp-sass";
+import gulp from 'gulp';
+import changed from 'gulp-changed';
+import minify from 'gulp-minify';
+import include from 'gulp-include';
+import dartSass from 'sass';
+import gulpSass from 'gulp-sass';
const sass = gulpSass(dartSass);
-const publicSCSSDestination = "public/stylesheets";
+const publicSCSSDestination = 'public/stylesheets';
const publicSCSSFunction = () => {
return gulp
- .src("public-scss/*.scss")
- .pipe(sass({ outputStyle: "compressed", includePaths: ["node_modules"] }).on("error", sass.logError))
+ .src('public-scss/*.scss')
+ .pipe(sass({ outputStyle: 'compressed', includePaths: ['node_modules'] }).on('error', sass.logError))
.pipe(gulp.dest(publicSCSSDestination));
};
-gulp.task("public-scss", publicSCSSFunction);
-const publicJavascriptsDestination = "public/javascripts";
+gulp.task('public-scss', publicSCSSFunction);
+const publicJavascriptsDestination = 'public/javascripts';
const publicJavascriptsMinFunction = () => {
return gulp
- .src("public-typescript/*.js", { allowEmpty: true })
+ .src('public-typescript/*.js', { allowEmpty: true })
.pipe(changed(publicJavascriptsDestination, {
- extension: ".min.js"
+ extension: '.min.js'
}))
- .pipe(minify({ noSource: true, ext: { min: ".min.js" } }))
+ .pipe(minify({ noSource: true, ext: { min: '.min.js' } }))
.pipe(gulp.dest(publicJavascriptsDestination));
};
const publicJavascriptsAdminTablesFunction = () => {
return gulp
- .src("public-typescript/adminTables/adminTables.js")
+ .src('public-typescript/adminTables/adminTables.js')
.pipe(include())
- .pipe(gulp.dest("public-typescript"));
+ .pipe(gulp.dest('public-typescript'));
};
const publicJavascriptsLotOccupancyEditFunction = () => {
return gulp
- .src("public-typescript/lotOccupancyEdit/lotOccupancyEdit.js")
+ .src('public-typescript/lotOccupancyEdit/lotOccupancyEdit.js')
.pipe(include())
- .pipe(gulp.dest("public-typescript"));
+ .pipe(gulp.dest('public-typescript'));
};
const publicJavascriptsWorkOrderEditFunction = () => {
return gulp
- .src("public-typescript/workOrderEdit/workOrderEdit.js")
+ .src('public-typescript/workOrderEdit/workOrderEdit.js')
.pipe(include())
- .pipe(gulp.dest("public-typescript"));
+ .pipe(gulp.dest('public-typescript'));
};
-gulp.task("public-javascript-adminTables", publicJavascriptsAdminTablesFunction);
-gulp.task("public-javascript-lotOccupancyEdit", publicJavascriptsLotOccupancyEditFunction);
-gulp.task("public-javascript-workOrderEdit", publicJavascriptsWorkOrderEditFunction);
-gulp.task("public-javascript-min", publicJavascriptsMinFunction);
+gulp.task('public-javascript-adminTables', publicJavascriptsAdminTablesFunction);
+gulp.task('public-javascript-lotOccupancyEdit', publicJavascriptsLotOccupancyEditFunction);
+gulp.task('public-javascript-workOrderEdit', publicJavascriptsWorkOrderEditFunction);
+gulp.task('public-javascript-min', publicJavascriptsMinFunction);
const watchFunction = () => {
- gulp.watch("public-scss/*.scss", publicSCSSFunction);
- gulp.watch("public-typescript/adminTables/*.js", publicJavascriptsAdminTablesFunction);
- gulp.watch("public-typescript/lotOccupancyEdit/*.js", publicJavascriptsLotOccupancyEditFunction);
- gulp.watch("public-typescript/workOrderEdit/*.js", publicJavascriptsWorkOrderEditFunction);
- gulp.watch("public-typescript/*.js", publicJavascriptsMinFunction);
+ gulp.watch('public-scss/*.scss', publicSCSSFunction);
+ gulp.watch('public-typescript/adminTables/*.js', publicJavascriptsAdminTablesFunction);
+ gulp.watch('public-typescript/lotOccupancyEdit/*.js', publicJavascriptsLotOccupancyEditFunction);
+ gulp.watch('public-typescript/workOrderEdit/*.js', publicJavascriptsWorkOrderEditFunction);
+ gulp.watch('public-typescript/*.js', publicJavascriptsMinFunction);
};
-gulp.task("watch", watchFunction);
-gulp.task("default", () => {
+gulp.task('watch', watchFunction);
+gulp.task('default', () => {
publicJavascriptsAdminTablesFunction();
publicJavascriptsLotOccupancyEditFunction();
publicJavascriptsWorkOrderEditFunction();
diff --git a/gulpfile.ts b/gulpfile.ts
index a4ef706b..e9fe5cfc 100644
--- a/gulpfile.ts
+++ b/gulpfile.ts
@@ -1,110 +1,102 @@
/* eslint-disable node/no-unpublished-import */
-import gulp from "gulp";
-import changed from "gulp-changed";
-import minify from "gulp-minify";
-import include from "gulp-include";
+import gulp from 'gulp'
+import changed from 'gulp-changed'
+import minify from 'gulp-minify'
+import include from 'gulp-include'
-import dartSass from "sass";
-import gulpSass from "gulp-sass";
-const sass = gulpSass(dartSass);
+import dartSass from 'sass'
+import gulpSass from 'gulp-sass'
+const sass = gulpSass(dartSass)
/*
* Compile SASS
*/
-const publicSCSSDestination = "public/stylesheets";
+const publicSCSSDestination = 'public/stylesheets'
const publicSCSSFunction = () => {
- return gulp
- .src("public-scss/*.scss")
- .pipe(
- sass({ outputStyle: "compressed", includePaths: ["node_modules"] }).on(
- "error",
- sass.logError
- )
- )
- .pipe(gulp.dest(publicSCSSDestination));
-};
+ return gulp
+ .src('public-scss/*.scss')
+ .pipe(sass({ outputStyle: 'compressed', includePaths: ['node_modules'] }).on('error', sass.logError))
+ .pipe(gulp.dest(publicSCSSDestination))
+}
-gulp.task("public-scss", publicSCSSFunction);
+gulp.task('public-scss', publicSCSSFunction)
/*
* Minify public/javascripts
*/
-const publicJavascriptsDestination = "public/javascripts";
+const publicJavascriptsDestination = 'public/javascripts'
const publicJavascriptsMinFunction = () => {
- return gulp
- .src("public-typescript/*.js", { allowEmpty: true })
- .pipe(
- changed(publicJavascriptsDestination, {
- extension: ".min.js"
- })
- )
- .pipe(minify({ noSource: true, ext: { min: ".min.js" } }))
- .pipe(gulp.dest(publicJavascriptsDestination));
-};
+ return gulp
+ .src('public-typescript/*.js', { allowEmpty: true })
+ .pipe(
+ changed(publicJavascriptsDestination, {
+ extension: '.min.js'
+ })
+ )
+ .pipe(minify({ noSource: true, ext: { min: '.min.js' } }))
+ .pipe(gulp.dest(publicJavascriptsDestination))
+}
const publicJavascriptsAdminTablesFunction = () => {
- return gulp
- .src("public-typescript/adminTables/adminTables.js")
- .pipe(include())
- .pipe(gulp.dest("public-typescript"));
-};
+ return gulp
+ .src('public-typescript/adminTables/adminTables.js')
+ .pipe(include())
+ .pipe(gulp.dest('public-typescript'))
+}
const publicJavascriptsLotOccupancyEditFunction = () => {
- return gulp
- .src("public-typescript/lotOccupancyEdit/lotOccupancyEdit.js")
- .pipe(include())
- .pipe(gulp.dest("public-typescript"));
-};
+ return gulp
+ .src('public-typescript/lotOccupancyEdit/lotOccupancyEdit.js')
+ .pipe(include())
+ .pipe(gulp.dest('public-typescript'))
+}
const publicJavascriptsWorkOrderEditFunction = () => {
- return gulp
- .src("public-typescript/workOrderEdit/workOrderEdit.js")
- .pipe(include())
- .pipe(gulp.dest("public-typescript"));
-};
+ return gulp
+ .src('public-typescript/workOrderEdit/workOrderEdit.js')
+ .pipe(include())
+ .pipe(gulp.dest('public-typescript'))
+}
-gulp.task("public-javascript-adminTables", publicJavascriptsAdminTablesFunction);
-gulp.task("public-javascript-lotOccupancyEdit", publicJavascriptsLotOccupancyEditFunction);
-gulp.task("public-javascript-workOrderEdit", publicJavascriptsWorkOrderEditFunction);
-gulp.task("public-javascript-min", publicJavascriptsMinFunction);
+gulp.task('public-javascript-adminTables', publicJavascriptsAdminTablesFunction)
+gulp.task('public-javascript-lotOccupancyEdit', publicJavascriptsLotOccupancyEditFunction)
+gulp.task('public-javascript-workOrderEdit', publicJavascriptsWorkOrderEditFunction)
+gulp.task('public-javascript-min', publicJavascriptsMinFunction)
/*
* Watch
*/
const watchFunction = () => {
- gulp.watch("public-scss/*.scss", publicSCSSFunction);
+ gulp.watch('public-scss/*.scss', publicSCSSFunction)
- gulp.watch("public-typescript/adminTables/*.js", publicJavascriptsAdminTablesFunction);
+ gulp.watch('public-typescript/adminTables/*.js', publicJavascriptsAdminTablesFunction)
- gulp.watch(
- "public-typescript/lotOccupancyEdit/*.js",
- publicJavascriptsLotOccupancyEditFunction
- );
+ gulp.watch('public-typescript/lotOccupancyEdit/*.js', publicJavascriptsLotOccupancyEditFunction)
- gulp.watch("public-typescript/workOrderEdit/*.js", publicJavascriptsWorkOrderEditFunction);
+ gulp.watch('public-typescript/workOrderEdit/*.js', publicJavascriptsWorkOrderEditFunction)
- gulp.watch("public-typescript/*.js", publicJavascriptsMinFunction);
-};
+ gulp.watch('public-typescript/*.js', publicJavascriptsMinFunction)
+}
-gulp.task("watch", watchFunction);
+gulp.task('watch', watchFunction)
/*
* Initialize default
*/
-gulp.task("default", () => {
- publicJavascriptsAdminTablesFunction();
- publicJavascriptsLotOccupancyEditFunction();
- publicJavascriptsWorkOrderEditFunction();
- publicJavascriptsMinFunction();
+gulp.task('default', () => {
+ publicJavascriptsAdminTablesFunction()
+ publicJavascriptsLotOccupancyEditFunction()
+ publicJavascriptsWorkOrderEditFunction()
+ publicJavascriptsMinFunction()
- publicSCSSFunction();
+ publicSCSSFunction()
- watchFunction();
-});
+ watchFunction()
+})
diff --git a/handlers/lots-post/doSearchLots.d.ts b/handlers/lots-post/doSearchLots.d.ts
index 9621c611..7151ed90 100644
--- a/handlers/lots-post/doSearchLots.d.ts
+++ b/handlers/lots-post/doSearchLots.d.ts
@@ -1,3 +1,3 @@
-import type { RequestHandler } from "express";
+import type { RequestHandler } from 'express';
export declare const handler: RequestHandler;
export default handler;
diff --git a/handlers/lots-post/doSearchLots.js b/handlers/lots-post/doSearchLots.js
index 1520a12a..bc629e84 100644
--- a/handlers/lots-post/doSearchLots.js
+++ b/handlers/lots-post/doSearchLots.js
@@ -1,4 +1,4 @@
-import { getLots } from "../../helpers/lotOccupancyDB/getLots.js";
+import { getLots } from '../../helpers/lotOccupancyDB/getLots.js';
export const handler = async (request, response) => {
const result = getLots(request.body, {
limit: request.body.limit,
diff --git a/handlers/lots-post/doSearchLots.ts b/handlers/lots-post/doSearchLots.ts
index f491653d..a56328c9 100644
--- a/handlers/lots-post/doSearchLots.ts
+++ b/handlers/lots-post/doSearchLots.ts
@@ -1,18 +1,18 @@
-import type { RequestHandler } from "express";
+import type { RequestHandler } from 'express';
-import { getLots } from "../../helpers/lotOccupancyDB/getLots.js";
+import { getLots } from '../../helpers/lotOccupancyDB/getLots.js';
export const handler: RequestHandler = async (request, response) => {
- const result = getLots(request.body, {
- limit: request.body.limit,
- offset: request.body.offset
- });
+ const result = getLots(request.body, {
+ limit: request.body.limit,
+ offset: request.body.offset
+ });
- response.json({
- count: result.count,
- offset: Number.parseInt(request.body.offset, 10),
- lots: result.lots
- });
+ response.json({
+ count: result.count,
+ offset: Number.parseInt(request.body.offset, 10),
+ lots: result.lots
+ });
};
export default handler;
diff --git a/handlers/workOrders-post/doCompleteWorkOrderMilestone.js b/handlers/workOrders-post/doCompleteWorkOrderMilestone.js
index bacc1961..fc91eb08 100644
--- a/handlers/workOrders-post/doCompleteWorkOrderMilestone.js
+++ b/handlers/workOrders-post/doCompleteWorkOrderMilestone.js
@@ -1,4 +1,4 @@
-import { completeWorkOrderMilestone } from "../../helpers/lotOccupancyDB/completeWorkOrderMiletstone.js";
+import { completeWorkOrderMilestone } from "../../helpers/lotOccupancyDB/completeWorkOrderMilestone.js";
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
export const handler = async (request, response) => {
const success = completeWorkOrderMilestone({
diff --git a/handlers/workOrders-post/doCompleteWorkOrderMilestone.ts b/handlers/workOrders-post/doCompleteWorkOrderMilestone.ts
index 5318521e..a02d1050 100644
--- a/handlers/workOrders-post/doCompleteWorkOrderMilestone.ts
+++ b/handlers/workOrders-post/doCompleteWorkOrderMilestone.ts
@@ -1,6 +1,6 @@
import type { RequestHandler } from "express";
-import { completeWorkOrderMilestone } from "../../helpers/lotOccupancyDB/completeWorkOrderMiletstone.js";
+import { completeWorkOrderMilestone } from "../../helpers/lotOccupancyDB/completeWorkOrderMilestone.js";
import { getWorkOrderMilestones } from "../../helpers/lotOccupancyDB/getWorkOrderMilestones.js";
diff --git a/helpers/lotOccupancyDB/completeWorkOrderMiletstone.d.ts b/helpers/lotOccupancyDB/completeWorkOrderMilestone.d.ts
similarity index 100%
rename from helpers/lotOccupancyDB/completeWorkOrderMiletstone.d.ts
rename to helpers/lotOccupancyDB/completeWorkOrderMilestone.d.ts
diff --git a/helpers/lotOccupancyDB/completeWorkOrderMiletstone.js b/helpers/lotOccupancyDB/completeWorkOrderMilestone.js
similarity index 100%
rename from helpers/lotOccupancyDB/completeWorkOrderMiletstone.js
rename to helpers/lotOccupancyDB/completeWorkOrderMilestone.js
diff --git a/helpers/lotOccupancyDB/completeWorkOrderMiletstone.ts b/helpers/lotOccupancyDB/completeWorkOrderMilestone.ts
similarity index 100%
rename from helpers/lotOccupancyDB/completeWorkOrderMiletstone.ts
rename to helpers/lotOccupancyDB/completeWorkOrderMilestone.ts
diff --git a/helpers/lotOccupancyDB/getLots.js b/helpers/lotOccupancyDB/getLots.js
index 6036b513..5047c485 100644
--- a/helpers/lotOccupancyDB/getLots.js
+++ b/helpers/lotOccupancyDB/getLots.js
@@ -68,6 +68,7 @@ export function getLots(filters, options, connectedDatabase) {
let lots = [];
if (options.limit === -1 || count > 0) {
database.function("userFn_lotNameSortName", configFunctions.getProperty("settings.lot.lotNameSortNameFunction"));
+ sqlParameters.unshift(currentDate, currentDate);
lots = database
.prepare("select l.lotId, l.lotName," +
" t.lotType," +
@@ -82,16 +83,13 @@ export function getLots(filters, options, connectedDatabase) {
"select lotId, count(lotOccupancyId) as lotOccupancyCount" +
" from LotOccupancies" +
" where recordDelete_timeMillis is null" +
- " and occupancyStartDate <= " +
- currentDate +
- " and (occupancyEndDate is null or occupancyEndDate >= " +
- currentDate +
- ")" +
+ " and occupancyStartDate <= ?" +
+ " and (occupancyEndDate is null or occupancyEndDate >= ?)" +
" group by lotId" +
") o on l.lotId = o.lotId") +
sqlWhereClause +
" order by userFn_lotNameSortName(l.lotName), l.lotId" +
- (options ? " limit " + options.limit + " offset " + options.offset : ""))
+ (options ? ` limit ${options.limit} offset ${options.offset}` : ""))
.all(sqlParameters);
if (options.limit === -1) {
count = lots.length;
diff --git a/helpers/lotOccupancyDB/getLots.ts b/helpers/lotOccupancyDB/getLots.ts
index ccea050b..63d06f14 100644
--- a/helpers/lotOccupancyDB/getLots.ts
+++ b/helpers/lotOccupancyDB/getLots.ts
@@ -119,6 +119,8 @@ export function getLots(
configFunctions.getProperty("settings.lot.lotNameSortNameFunction")
);
+ sqlParameters.unshift(currentDate, currentDate);
+
lots = database
.prepare(
"select l.lotId, l.lotName," +
@@ -134,16 +136,13 @@ export function getLots(
"select lotId, count(lotOccupancyId) as lotOccupancyCount" +
" from LotOccupancies" +
" where recordDelete_timeMillis is null" +
- " and occupancyStartDate <= " +
- currentDate +
- " and (occupancyEndDate is null or occupancyEndDate >= " +
- currentDate +
- ")" +
+ " and occupancyStartDate <= ?" +
+ " and (occupancyEndDate is null or occupancyEndDate >= ?)" +
" group by lotId" +
") o on l.lotId = o.lotId") +
sqlWhereClause +
" order by userFn_lotNameSortName(l.lotName), l.lotId" +
- (options ? " limit " + options.limit + " offset " + options.offset : "")
+ (options ? ` limit ${options.limit} offset ${options.offset}` : "")
)
.all(sqlParameters);
diff --git a/helpers/lotOccupancyDB/getWorkOrders.js b/helpers/lotOccupancyDB/getWorkOrders.js
index f075691f..2dfe4780 100644
--- a/helpers/lotOccupancyDB/getWorkOrders.js
+++ b/helpers/lotOccupancyDB/getWorkOrders.js
@@ -90,9 +90,7 @@ export function getWorkOrders(filters, options, connectedDatabase) {
.all(sqlParameters);
}
if (options &&
- (options.includeComments ||
- options.includeLotsAndLotOccupancies ||
- options.includeMilestones)) {
+ (options.includeComments || options.includeLotsAndLotOccupancies || options.includeMilestones)) {
for (const workOrder of workOrders) {
if (options.includeComments) {
workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId, database);
diff --git a/helpers/lotOccupancyDB/getWorkOrders.ts b/helpers/lotOccupancyDB/getWorkOrders.ts
index 0ee0f23c..43464179 100644
--- a/helpers/lotOccupancyDB/getWorkOrders.ts
+++ b/helpers/lotOccupancyDB/getWorkOrders.ts
@@ -2,10 +2,7 @@ import sqlite from "better-sqlite3";
import { lotOccupancyDB as databasePath } from "../../data/databasePaths.js";
-import {
- dateIntegerToString,
- dateStringToInteger
-} from "@cityssm/expressjs-server-js/dateTimeFns.js";
+import { dateIntegerToString, dateStringToInteger } from "@cityssm/expressjs-server-js/dateTimeFns.js";
import { getWorkOrderComments } from "./getWorkOrderComments.js";
import { getLots } from "./getLots.js";
@@ -16,192 +13,187 @@ import type * as recordTypes from "../../types/recordTypes";
import { getLotNameWhereClause, getOccupantNameWhereClause } from "../functions.sqlFilters.js";
interface GetWorkOrdersFilters {
- workOrderTypeId?: number | string;
- workOrderOpenStatus?: "" | "open" | "closed";
- workOrderOpenDateString?: string;
- occupantName?: string;
- lotName?: string;
- lotOccupancyId?: number | string;
+ workOrderTypeId?: number | string;
+ workOrderOpenStatus?: "" | "open" | "closed";
+ workOrderOpenDateString?: string;
+ occupantName?: string;
+ lotName?: string;
+ lotOccupancyId?: number | string;
}
interface GetWorkOrdersOptions {
- limit: number;
- offset: number;
- includeLotsAndLotOccupancies?: boolean;
- includeComments?: boolean;
- includeMilestones?: boolean;
+ limit: number;
+ offset: number;
+ includeLotsAndLotOccupancies?: boolean;
+ includeComments?: boolean;
+ includeMilestones?: boolean;
}
function buildWhereClause(filters: GetWorkOrdersFilters): {
- sqlWhereClause: string;
- sqlParameters: unknown[];
+ sqlWhereClause: string;
+ sqlParameters: unknown[];
} {
- let sqlWhereClause = " where w.recordDelete_timeMillis is null";
- const sqlParameters: unknown[] = [];
+ let sqlWhereClause = " where w.recordDelete_timeMillis is null";
+ const sqlParameters: unknown[] = [];
- if (filters.workOrderTypeId) {
- sqlWhereClause += " and w.workOrderTypeId = ?";
- sqlParameters.push(filters.workOrderTypeId);
+ if (filters.workOrderTypeId) {
+ sqlWhereClause += " and w.workOrderTypeId = ?";
+ sqlParameters.push(filters.workOrderTypeId);
+ }
+
+ if (filters.workOrderOpenStatus) {
+ if (filters.workOrderOpenStatus === "open") {
+ sqlWhereClause += " and w.workOrderCloseDate is null";
+ } else if (filters.workOrderOpenStatus === "closed") {
+ sqlWhereClause += " and w.workOrderCloseDate is not null";
}
+ }
- if (filters.workOrderOpenStatus) {
- if (filters.workOrderOpenStatus === "open") {
- sqlWhereClause += " and w.workOrderCloseDate is null";
- } else if (filters.workOrderOpenStatus === "closed") {
- sqlWhereClause += " and w.workOrderCloseDate is not null";
- }
- }
+ if (filters.workOrderOpenDateString) {
+ sqlWhereClause += " and w.workOrderOpenDate = ?";
+ sqlParameters.push(dateStringToInteger(filters.workOrderOpenDateString));
+ }
- if (filters.workOrderOpenDateString) {
- sqlWhereClause += " and w.workOrderOpenDate = ?";
- sqlParameters.push(dateStringToInteger(filters.workOrderOpenDateString));
- }
+ const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, "o");
+ if (occupantNameFilters.sqlParameters.length > 0) {
+ sqlWhereClause +=
+ " and w.workOrderId in (" +
+ "select workOrderId from WorkOrderLotOccupancies o" +
+ " where recordDelete_timeMillis is null" +
+ " and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null" +
+ occupantNameFilters.sqlWhereClause +
+ ")" +
+ ")";
+ sqlParameters.push(...occupantNameFilters.sqlParameters);
+ }
- const occupantNameFilters = getOccupantNameWhereClause(filters.occupantName, "o");
- if (occupantNameFilters.sqlParameters.length > 0) {
- sqlWhereClause +=
- " and w.workOrderId in (" +
- "select workOrderId from WorkOrderLotOccupancies o" +
- " where recordDelete_timeMillis is null" +
- " and o.lotOccupancyId in (select lotOccupancyId from LotOccupancyOccupants o where recordDelete_timeMillis is null" +
- occupantNameFilters.sqlWhereClause +
- ")" +
- ")";
- sqlParameters.push(...occupantNameFilters.sqlParameters);
- }
+ const lotNameFilters = getLotNameWhereClause(filters.lotName, "", "l");
+ if (lotNameFilters.sqlParameters.length > 0) {
+ sqlWhereClause +=
+ " and w.workOrderId in (" +
+ "select workOrderId from WorkOrderLots where recordDelete_timeMillis is null and lotId in (select lotId from Lots l where recordDelete_timeMillis is null" +
+ lotNameFilters.sqlWhereClause +
+ "))";
+ sqlParameters.push(...lotNameFilters.sqlParameters);
+ }
- const lotNameFilters = getLotNameWhereClause(filters.lotName, "", "l");
- if (lotNameFilters.sqlParameters.length > 0) {
- sqlWhereClause +=
- " and w.workOrderId in (" +
- "select workOrderId from WorkOrderLots where recordDelete_timeMillis is null and lotId in (select lotId from Lots l where recordDelete_timeMillis is null" +
- lotNameFilters.sqlWhereClause +
- "))";
- sqlParameters.push(...lotNameFilters.sqlParameters);
- }
+ if (filters.lotOccupancyId) {
+ sqlWhereClause +=
+ " and w.workOrderId in (select workOrderId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and lotOccupancyId = ?)";
+ sqlParameters.push(filters.lotOccupancyId);
+ }
- if (filters.lotOccupancyId) {
- sqlWhereClause +=
- " and w.workOrderId in (select workOrderId from WorkOrderLotOccupancies where recordDelete_timeMillis is null and lotOccupancyId = ?)";
- sqlParameters.push(filters.lotOccupancyId);
- }
-
- return {
- sqlWhereClause,
- sqlParameters
- };
+ return {
+ sqlWhereClause,
+ sqlParameters
+ };
}
export function getWorkOrders(
- filters: GetWorkOrdersFilters,
- options?: GetWorkOrdersOptions,
- connectedDatabase?: sqlite.Database
+ filters: GetWorkOrdersFilters,
+ options?: GetWorkOrdersOptions,
+ connectedDatabase?: sqlite.Database
): {
- count: number;
- workOrders: recordTypes.WorkOrder[];
+ count: number;
+ workOrders: recordTypes.WorkOrder[];
} {
- const database =
- connectedDatabase ||
- sqlite(databasePath, {
- readonly: true
- });
+ const database =
+ connectedDatabase ||
+ sqlite(databasePath, {
+ readonly: true
+ });
- database.function("userFn_dateIntegerToString", dateIntegerToString);
+ database.function("userFn_dateIntegerToString", dateIntegerToString);
- const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
+ const { sqlWhereClause, sqlParameters } = buildWhereClause(filters);
- const count: number = database
- .prepare("select count(*) as recordCount from WorkOrders w" + sqlWhereClause)
- .get(sqlParameters).recordCount;
+ const count: number = database
+ .prepare("select count(*) as recordCount from WorkOrders w" + sqlWhereClause)
+ .get(sqlParameters).recordCount;
- let workOrders: recordTypes.WorkOrder[] = [];
+ let workOrders: recordTypes.WorkOrder[] = [];
- if (count > 0) {
- workOrders = database
- .prepare(
- "select w.workOrderId," +
- " w.workOrderTypeId, t.workOrderType," +
- " w.workOrderNumber, w.workOrderDescription," +
- " w.workOrderOpenDate, userFn_dateIntegerToString(w.workOrderOpenDate) as workOrderOpenDateString," +
- " w.workOrderCloseDate, userFn_dateIntegerToString(w.workOrderCloseDate) as workOrderCloseDateString," +
- " ifnull(m.workOrderMilestoneCount, 0) as workOrderMilestoneCount," +
- " ifnull(m.workOrderMilestoneCompletionCount, 0) as workOrderMilestoneCompletionCount" +
- " from WorkOrders w" +
- " left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" +
- (" left join (select workOrderId," +
- " count(workOrderMilestoneId) as workOrderMilestoneCount," +
- " sum(case when workOrderMilestoneCompletionDate is null then 0 else 1 end) as workOrderMilestoneCompletionCount" +
- " from WorkOrderMilestones" +
- " where recordDelete_timeMillis is null" +
- " group by workOrderId) m on w.workOrderId = m.workOrderId") +
- sqlWhereClause +
- " order by w.workOrderOpenDate desc, w.workOrderNumber desc" +
- (options ? " limit " + options.limit + " offset " + options.offset : "")
- )
- .all(sqlParameters);
+ if (count > 0) {
+ workOrders = database
+ .prepare(
+ "select w.workOrderId," +
+ " w.workOrderTypeId, t.workOrderType," +
+ " w.workOrderNumber, w.workOrderDescription," +
+ " w.workOrderOpenDate, userFn_dateIntegerToString(w.workOrderOpenDate) as workOrderOpenDateString," +
+ " w.workOrderCloseDate, userFn_dateIntegerToString(w.workOrderCloseDate) as workOrderCloseDateString," +
+ " ifnull(m.workOrderMilestoneCount, 0) as workOrderMilestoneCount," +
+ " ifnull(m.workOrderMilestoneCompletionCount, 0) as workOrderMilestoneCompletionCount" +
+ " from WorkOrders w" +
+ " left join WorkOrderTypes t on w.workOrderTypeId = t.workOrderTypeId" +
+ (" left join (select workOrderId," +
+ " count(workOrderMilestoneId) as workOrderMilestoneCount," +
+ " sum(case when workOrderMilestoneCompletionDate is null then 0 else 1 end) as workOrderMilestoneCompletionCount" +
+ " from WorkOrderMilestones" +
+ " where recordDelete_timeMillis is null" +
+ " group by workOrderId) m on w.workOrderId = m.workOrderId") +
+ sqlWhereClause +
+ " order by w.workOrderOpenDate desc, w.workOrderNumber desc" +
+ (options ? " limit " + options.limit + " offset " + options.offset : "")
+ )
+ .all(sqlParameters);
+ }
+
+ if (
+ options &&
+ (options.includeComments || options.includeLotsAndLotOccupancies || options.includeMilestones)
+ ) {
+ for (const workOrder of workOrders) {
+ if (options.includeComments) {
+ workOrder.workOrderComments = getWorkOrderComments(workOrder.workOrderId as number, database);
+ }
+
+ if (options.includeLotsAndLotOccupancies) {
+ workOrder.workOrderLots = getLots(
+ {
+ workOrderId: workOrder.workOrderId
+ },
+ {
+ limit: -1,
+ offset: 0
+ },
+ database
+ ).lots;
+
+ workOrder.workOrderLotOccupancies = getLotOccupancies(
+ {
+ workOrderId: workOrder.workOrderId
+ },
+ {
+ limit: -1,
+ offset: 0,
+ includeOccupants: true
+ },
+ database
+ ).lotOccupancies;
+ }
+
+ if (options.includeMilestones) {
+ workOrder.workOrderMilestones = getWorkOrderMilestones(
+ {
+ workOrderId: workOrder.workOrderId
+ },
+ {
+ orderBy: "date"
+ },
+ database
+ );
+ }
}
+ }
- if (
- options &&
- (options.includeComments ||
- options.includeLotsAndLotOccupancies ||
- options.includeMilestones)
- ) {
- for (const workOrder of workOrders) {
- if (options.includeComments) {
- workOrder.workOrderComments = getWorkOrderComments(
- workOrder.workOrderId as number,
- database
- );
- }
+ if (!connectedDatabase) {
+ database.close();
+ }
- if (options.includeLotsAndLotOccupancies) {
- workOrder.workOrderLots = getLots(
- {
- workOrderId: workOrder.workOrderId
- },
- {
- limit: -1,
- offset: 0
- },
- database
- ).lots;
-
- workOrder.workOrderLotOccupancies = getLotOccupancies(
- {
- workOrderId: workOrder.workOrderId
- },
- {
- limit: -1,
- offset: 0,
- includeOccupants: true
- },
- database
- ).lotOccupancies;
- }
-
- if (options.includeMilestones) {
- workOrder.workOrderMilestones = getWorkOrderMilestones(
- {
- workOrderId: workOrder.workOrderId
- },
- {
- orderBy: "date"
- },
- database
- );
- }
- }
- }
-
- if (!connectedDatabase) {
- database.close();
- }
-
- return {
- count,
- workOrders
- };
+ return {
+ count,
+ workOrders
+ };
}
export default getWorkOrders;
diff --git a/package-lock.json b/package-lock.json
index 313a991e..aa44d446 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -67,8 +67,8 @@
"@types/randomcolor": "^0.5.7",
"@types/session-file-store": "^1.2.2",
"@types/uuid": "^9.0.0",
- "@typescript-eslint/eslint-plugin": "^5.48.0",
- "@typescript-eslint/parser": "^5.48.0",
+ "@typescript-eslint/eslint-plugin": "^5.48.1",
+ "@typescript-eslint/parser": "^5.48.1",
"bulma": "^0.9.4",
"bulma-divider": "^0.2.0",
"bulma-helpers": "^0.4.3",
@@ -1376,14 +1376,14 @@
}
},
"node_modules/@typescript-eslint/eslint-plugin": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz",
- "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz",
+ "integrity": "sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.48.0",
- "@typescript-eslint/type-utils": "5.48.0",
- "@typescript-eslint/utils": "5.48.0",
+ "@typescript-eslint/scope-manager": "5.48.1",
+ "@typescript-eslint/type-utils": "5.48.1",
+ "@typescript-eslint/utils": "5.48.1",
"debug": "^4.3.4",
"ignore": "^5.2.0",
"natural-compare-lite": "^1.4.0",
@@ -1409,14 +1409,14 @@
}
},
"node_modules/@typescript-eslint/parser": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz",
- "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.1.tgz",
+ "integrity": "sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/scope-manager": "5.48.0",
- "@typescript-eslint/types": "5.48.0",
- "@typescript-eslint/typescript-estree": "5.48.0",
+ "@typescript-eslint/scope-manager": "5.48.1",
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/typescript-estree": "5.48.1",
"debug": "^4.3.4"
},
"engines": {
@@ -1436,13 +1436,13 @@
}
},
"node_modules/@typescript-eslint/scope-manager": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz",
- "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz",
+ "integrity": "sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.48.0",
- "@typescript-eslint/visitor-keys": "5.48.0"
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/visitor-keys": "5.48.1"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1453,13 +1453,13 @@
}
},
"node_modules/@typescript-eslint/type-utils": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz",
- "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz",
+ "integrity": "sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==",
"dev": true,
"dependencies": {
- "@typescript-eslint/typescript-estree": "5.48.0",
- "@typescript-eslint/utils": "5.48.0",
+ "@typescript-eslint/typescript-estree": "5.48.1",
+ "@typescript-eslint/utils": "5.48.1",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
},
@@ -1480,9 +1480,9 @@
}
},
"node_modules/@typescript-eslint/types": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz",
- "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz",
+ "integrity": "sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -1493,13 +1493,13 @@
}
},
"node_modules/@typescript-eslint/typescript-estree": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz",
- "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz",
+ "integrity": "sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.48.0",
- "@typescript-eslint/visitor-keys": "5.48.0",
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/visitor-keys": "5.48.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -1520,16 +1520,16 @@
}
},
"node_modules/@typescript-eslint/utils": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz",
- "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz",
+ "integrity": "sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==",
"dev": true,
"dependencies": {
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.48.0",
- "@typescript-eslint/types": "5.48.0",
- "@typescript-eslint/typescript-estree": "5.48.0",
+ "@typescript-eslint/scope-manager": "5.48.1",
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/typescript-estree": "5.48.1",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0",
"semver": "^7.3.7"
@@ -1546,12 +1546,12 @@
}
},
"node_modules/@typescript-eslint/visitor-keys": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz",
- "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz",
+ "integrity": "sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==",
"dev": true,
"dependencies": {
- "@typescript-eslint/types": "5.48.0",
+ "@typescript-eslint/types": "5.48.1",
"eslint-visitor-keys": "^3.3.0"
},
"engines": {
@@ -13709,14 +13709,14 @@
}
},
"@typescript-eslint/eslint-plugin": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.0.tgz",
- "integrity": "sha512-SVLafp0NXpoJY7ut6VFVUU9I+YeFsDzeQwtK0WZ+xbRN3mtxJ08je+6Oi2N89qDn087COdO0u3blKZNv9VetRQ==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.48.1.tgz",
+ "integrity": "sha512-9nY5K1Rp2ppmpb9s9S2aBiF3xo5uExCehMDmYmmFqqyxgenbHJ3qbarcLt4ITgaD6r/2ypdlcFRdcuVPnks+fQ==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.48.0",
- "@typescript-eslint/type-utils": "5.48.0",
- "@typescript-eslint/utils": "5.48.0",
+ "@typescript-eslint/scope-manager": "5.48.1",
+ "@typescript-eslint/type-utils": "5.48.1",
+ "@typescript-eslint/utils": "5.48.1",
"debug": "^4.3.4",
"ignore": "^5.2.0",
"natural-compare-lite": "^1.4.0",
@@ -13726,53 +13726,53 @@
}
},
"@typescript-eslint/parser": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.0.tgz",
- "integrity": "sha512-1mxNA8qfgxX8kBvRDIHEzrRGrKHQfQlbW6iHyfHYS0Q4X1af+S6mkLNtgCOsGVl8+/LUPrqdHMssAemkrQ01qg==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.48.1.tgz",
+ "integrity": "sha512-4yg+FJR/V1M9Xoq56SF9Iygqm+r5LMXvheo6DQ7/yUWynQ4YfCRnsKuRgqH4EQ5Ya76rVwlEpw4Xu+TgWQUcdA==",
"dev": true,
"requires": {
- "@typescript-eslint/scope-manager": "5.48.0",
- "@typescript-eslint/types": "5.48.0",
- "@typescript-eslint/typescript-estree": "5.48.0",
+ "@typescript-eslint/scope-manager": "5.48.1",
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/typescript-estree": "5.48.1",
"debug": "^4.3.4"
}
},
"@typescript-eslint/scope-manager": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.0.tgz",
- "integrity": "sha512-0AA4LviDtVtZqlyUQnZMVHydDATpD9SAX/RC5qh6cBd3xmyWvmXYF+WT1oOmxkeMnWDlUVTwdODeucUnjz3gow==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.48.1.tgz",
+ "integrity": "sha512-S035ueRrbxRMKvSTv9vJKIWgr86BD8s3RqoRZmsSh/s8HhIs90g6UlK8ZabUSjUZQkhVxt7nmZ63VJ9dcZhtDQ==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.48.0",
- "@typescript-eslint/visitor-keys": "5.48.0"
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/visitor-keys": "5.48.1"
}
},
"@typescript-eslint/type-utils": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.0.tgz",
- "integrity": "sha512-vbtPO5sJyFjtHkGlGK4Sthmta0Bbls4Onv0bEqOGm7hP9h8UpRsHJwsrCiWtCUndTRNQO/qe6Ijz9rnT/DB+7g==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.48.1.tgz",
+ "integrity": "sha512-Hyr8HU8Alcuva1ppmqSYtM/Gp0q4JOp1F+/JH5D1IZm/bUBrV0edoewQZiEc1r6I8L4JL21broddxK8HAcZiqQ==",
"dev": true,
"requires": {
- "@typescript-eslint/typescript-estree": "5.48.0",
- "@typescript-eslint/utils": "5.48.0",
+ "@typescript-eslint/typescript-estree": "5.48.1",
+ "@typescript-eslint/utils": "5.48.1",
"debug": "^4.3.4",
"tsutils": "^3.21.0"
}
},
"@typescript-eslint/types": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.0.tgz",
- "integrity": "sha512-UTe67B0Ypius0fnEE518NB2N8gGutIlTojeTg4nt0GQvikReVkurqxd2LvYa9q9M5MQ6rtpNyWTBxdscw40Xhw==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.48.1.tgz",
+ "integrity": "sha512-xHyDLU6MSuEEdIlzrrAerCGS3T7AA/L8Hggd0RCYBi0w3JMvGYxlLlXHeg50JI9Tfg5MrtsfuNxbS/3zF1/ATg==",
"dev": true
},
"@typescript-eslint/typescript-estree": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.0.tgz",
- "integrity": "sha512-7pjd94vvIjI1zTz6aq/5wwE/YrfIyEPLtGJmRfyNR9NYIW+rOvzzUv3Cmq2hRKpvt6e9vpvPUQ7puzX7VSmsEw==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.48.1.tgz",
+ "integrity": "sha512-Hut+Osk5FYr+sgFh8J/FHjqX6HFcDzTlWLrFqGoK5kVUN3VBHF/QzZmAsIXCQ8T/W9nQNBTqalxi1P3LSqWnRA==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.48.0",
- "@typescript-eslint/visitor-keys": "5.48.0",
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/visitor-keys": "5.48.1",
"debug": "^4.3.4",
"globby": "^11.1.0",
"is-glob": "^4.0.3",
@@ -13781,28 +13781,28 @@
}
},
"@typescript-eslint/utils": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.0.tgz",
- "integrity": "sha512-x2jrMcPaMfsHRRIkL+x96++xdzvrdBCnYRd5QiW5Wgo1OB4kDYPbC1XjWP/TNqlfK93K/lUL92erq5zPLgFScQ==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.48.1.tgz",
+ "integrity": "sha512-SmQuSrCGUOdmGMwivW14Z0Lj8dxG1mOFZ7soeJ0TQZEJcs3n5Ndgkg0A4bcMFzBELqLJ6GTHnEU+iIoaD6hFGA==",
"dev": true,
"requires": {
"@types/json-schema": "^7.0.9",
"@types/semver": "^7.3.12",
- "@typescript-eslint/scope-manager": "5.48.0",
- "@typescript-eslint/types": "5.48.0",
- "@typescript-eslint/typescript-estree": "5.48.0",
+ "@typescript-eslint/scope-manager": "5.48.1",
+ "@typescript-eslint/types": "5.48.1",
+ "@typescript-eslint/typescript-estree": "5.48.1",
"eslint-scope": "^5.1.1",
"eslint-utils": "^3.0.0",
"semver": "^7.3.7"
}
},
"@typescript-eslint/visitor-keys": {
- "version": "5.48.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.0.tgz",
- "integrity": "sha512-5motVPz5EgxQ0bHjut3chzBkJ3Z3sheYVcSwS5BpHZpLqSptSmELNtGixmgj65+rIfhvtQTz5i9OP2vtzdDH7Q==",
+ "version": "5.48.1",
+ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.48.1.tgz",
+ "integrity": "sha512-Ns0XBwmfuX7ZknznfXozgnydyR8F6ev/KEGePP4i74uL3ArsKbEhJ7raeKr1JSa997DBDwol/4a0Y+At82c9dA==",
"dev": true,
"requires": {
- "@typescript-eslint/types": "5.48.0",
+ "@typescript-eslint/types": "5.48.1",
"eslint-visitor-keys": "^3.3.0"
}
},
diff --git a/package.json b/package.json
index 10b40db5..03373262 100644
--- a/package.json
+++ b/package.json
@@ -91,8 +91,8 @@
"@types/randomcolor": "^0.5.7",
"@types/session-file-store": "^1.2.2",
"@types/uuid": "^9.0.0",
- "@typescript-eslint/eslint-plugin": "^5.48.0",
- "@typescript-eslint/parser": "^5.48.0",
+ "@typescript-eslint/eslint-plugin": "^5.48.1",
+ "@typescript-eslint/parser": "^5.48.1",
"bulma": "^0.9.4",
"bulma-divider": "^0.2.0",
"bulma-helpers": "^0.4.3",
diff --git a/public-scss/style.scss b/public-scss/style.scss
index 1db294e7..d5d1548e 100644
--- a/public-scss/style.scss
+++ b/public-scss/style.scss
@@ -7,15 +7,19 @@ $white: #fff;
$black: #000;
.is-linethrough {
- text-decoration: line-through;
+ text-decoration: line-through;
}
.has-width-10 {
- width: 10px;
+ width: 10px;
+}
+
+.has-width-900 {
+ width: 900px;
}
.has-min-page-height {
- min-height: 100vh;
+ min-height: 100vh;
}
/*
@@ -26,21 +30,21 @@ $black: #000;
.has-status-loading .is-hidden-status-loading,
.has-status-view .is-hidden-status-view,
fieldset:enabled .is-hidden-enabled {
- display: none;
+ display: none;
}
.has-status-view .is-noninteractive-status-view {
- pointer-events: none;
+ pointer-events: none;
}
/* to fix page titles inside level components, set on .level-left */
.has-flex-shrink-1 {
- flex-shrink: 1;
+ flex-shrink: 1;
}
.has-border-radius-3 {
- border-radius: 3px;
+ border-radius: 3px;
}
/*
@@ -48,28 +52,28 @@ fieldset:enabled .is-hidden-enabled {
*/
.tab-content {
- display: none;
+ display: none;
- &.is-active {
- display: block;
- }
+ &.is-active {
+ display: block;
+ }
}
#is-login-page {
- overflow: auto;
- background-position: top center;
- background-size: cover;
+ overflow: auto;
+ background-position: top center;
+ background-size: cover;
- body > .columns {
- min-height: 100vh;
- }
+ body > .columns {
+ min-height: 100vh;
+ }
}
.button.is-xsmall {
- height: 2em;
- padding-top: 0;
- padding-bottom: 0;
- font-size: 0.75rem;
+ height: 2em;
+ padding-top: 0;
+ padding-bottom: 0;
+ font-size: 0.75rem;
}
/*
@@ -77,17 +81,17 @@ fieldset:enabled .is-hidden-enabled {
*/
.container.is-page {
- width: 8.5in;
- padding: 10px 20px 20px;
- margin: 20px auto;
- background-color: $white;
- border: 1px solid $black;
+ width: 8.5in;
+ padding: 10px 20px 20px;
+ margin: 20px auto;
+ background-color: $white;
+ border: 1px solid $black;
- @media print {
- width: 100%;
- padding: 0;
- border: 0;
- }
+ @media print {
+ width: 100%;
+ padding: 0;
+ border: 0;
+ }
}
/*
@@ -95,26 +99,26 @@ fieldset:enabled .is-hidden-enabled {
*/
.image svg {
- display: block;
- height: auto;
- width: 100%;
+ display: block;
+ height: auto;
+ width: 100%;
- .highlight,
- .highlight path {
- &.is-danger {
- stroke: $danger-dark !important;
- fill: rgba($danger-light, 0.6);
- }
-
- &.is-success {
- stroke: $success-dark !important;
- fill: rgba($success, 0.6);
- }
+ .highlight,
+ .highlight path {
+ &.is-danger {
+ stroke: $danger-dark !important;
+ fill: rgba($danger-light, 0.6);
}
- text {
- user-select: none;
+ &.is-success {
+ stroke: $success-dark !important;
+ fill: rgba($success, 0.6);
}
+ }
+
+ text {
+ user-select: none;
+ }
}
/*
@@ -122,7 +126,7 @@ fieldset:enabled .is-hidden-enabled {
*/
.select option:disabled {
- display: none;
+ display: none;
}
/*
@@ -130,7 +134,7 @@ fieldset:enabled .is-hidden-enabled {
*/
.modal-card {
- max-width: 100%;
+ max-width: 100%;
}
/*
@@ -141,7 +145,7 @@ $black-ter: hsl(0, 0%, 14%);
.control .button.is-static,
.menu .menu-label {
- color: $black-ter;
+ color: $black-ter;
}
/*
@@ -149,11 +153,11 @@ $black-ter: hsl(0, 0%, 14%);
*/
.navbar.is-fixed-top {
- z-index: 1100;
+ z-index: 1100;
}
.modal {
- z-index: 1200;
+ z-index: 1200;
}
/*
@@ -161,8 +165,8 @@ $black-ter: hsl(0, 0%, 14%);
*/
span.button.is-static {
- pointer-events: all;
- cursor: default;
+ pointer-events: all;
+ cursor: default;
}
/*
@@ -170,25 +174,25 @@ span.button.is-static {
*/
.datetimepicker-dummy {
- .datetimepicker-dummy-wrapper::before {
- mask: unset;
- -webkit-mask: unset;
- background-color: transparent !important;
- }
+ .datetimepicker-dummy-wrapper::before {
+ mask: unset;
+ -webkit-mask: unset;
+ background-color: transparent !important;
+ }
- /* fix left icon */
- .datetimepicker-dummy-wrapper .datetimepicker-dummy-input:first-child {
- text-indent: 2rem;
- }
+ /* fix left icon */
+ .datetimepicker-dummy-wrapper .datetimepicker-dummy-input:first-child {
+ text-indent: 2rem;
+ }
- /* center the button */
- .datetimepicker-clear-button {
- transform: none;
- margin-right: 0.25rem;
- margin-top: 0.15rem;
- }
+ /* center the button */
+ .datetimepicker-clear-button {
+ transform: none;
+ margin-right: 0.25rem;
+ margin-top: 0.15rem;
+ }
}
.datetimepicker.is-active {
- z-index: 10;
+ z-index: 10;
}
diff --git a/public-typescript/adminCleanup.js b/public-typescript/adminCleanup.js
index 3369b4ef..fb2e51fa 100644
--- a/public-typescript/adminCleanup.js
+++ b/public-typescript/adminCleanup.js
@@ -4,30 +4,32 @@ Object.defineProperty(exports, "__esModule", { value: true });
(() => {
const los = exports.los;
const doCleanup = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doCleanupDatabase", {}, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doCleanupDatabase', {}, (responseJSON) => {
if (responseJSON.success) {
bulmaJS.alert({
- title: "Database Cleaned Up Successfully",
+ title: 'Database Cleaned Up Successfully',
message: `${responseJSON.inactivedRecordCount} records inactivated,
${responseJSON.purgedRecordCount} permanently deleted.`,
- contextualColorName: "success"
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Cleaning Database",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Cleaning Database',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- document.querySelector("#button--cleanupDatabase").addEventListener("click", () => {
+ document
+ .querySelector('#button--cleanupDatabase')
+ .addEventListener('click', () => {
bulmaJS.confirm({
- title: "Cleanup Database",
- message: "Are you sure you want to cleanup up the database?",
+ title: 'Cleanup Database',
+ message: 'Are you sure you want to cleanup up the database?',
okButton: {
- text: "Yes, Cleanup Database",
+ text: 'Yes, Cleanup Database',
callbackFunction: doCleanup
}
});
diff --git a/public-typescript/adminCleanup.ts b/public-typescript/adminCleanup.ts
index 6a991b63..46f85b6d 100644
--- a/public-typescript/adminCleanup.ts
+++ b/public-typescript/adminCleanup.ts
@@ -1,53 +1,55 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../types/globalTypes";
+import type * as globalTypes from '../types/globalTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-(() => {
- const los = exports.los as globalTypes.LOS;
+;(() => {
+ const los = exports.los as globalTypes.LOS
- const doCleanup = () => {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doCleanupDatabase",
- {},
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- inactivedRecordCount: number;
- purgedRecordCount: number;
- }) => {
- if (responseJSON.success) {
- bulmaJS.alert({
- title: "Database Cleaned Up Successfully",
- message: `${responseJSON.inactivedRecordCount} records inactivated,
+ const doCleanup = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doCleanupDatabase',
+ {},
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ inactivedRecordCount: number
+ purgedRecordCount: number
+ }) => {
+ if (responseJSON.success) {
+ bulmaJS.alert({
+ title: 'Database Cleaned Up Successfully',
+ message: `${responseJSON.inactivedRecordCount} records inactivated,
${responseJSON.purgedRecordCount} permanently deleted.`,
- contextualColorName: "success"
- });
- } else {
- bulmaJS.alert({
- title: "Error Cleaning Database",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
+ contextualColorName: 'success'
+ })
+ } else {
+ bulmaJS.alert({
+ title: 'Error Cleaning Database',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
- document.querySelector("#button--cleanupDatabase")!.addEventListener("click", () => {
- bulmaJS.confirm({
- title: "Cleanup Database",
- message: "Are you sure you want to cleanup up the database?",
- okButton: {
- text: "Yes, Cleanup Database",
- callbackFunction: doCleanup
- }
- });
- });
-})();
+ document
+ .querySelector('#button--cleanupDatabase')!
+ .addEventListener('click', () => {
+ bulmaJS.confirm({
+ title: 'Cleanup Database',
+ message: 'Are you sure you want to cleanup up the database?',
+ okButton: {
+ text: 'Yes, Cleanup Database',
+ callbackFunction: doCleanup
+ }
+ })
+ })
+})()
diff --git a/public-typescript/adminFees.js b/public-typescript/adminFees.js
index 2204ad69..cbbd0498 100644
--- a/public-typescript/adminFees.js
+++ b/public-typescript/adminFees.js
@@ -3,7 +3,7 @@
Object.defineProperty(exports, "__esModule", { value: true });
(() => {
const los = exports.los;
- const feeCategoriesContainerElement = document.querySelector("#container--feeCategories");
+ const feeCategoriesContainerElement = document.querySelector('#container--feeCategories');
let feeCategories = exports.feeCategories;
delete exports.feeCategories;
function renderFeeCategories() {
@@ -13,152 +13,164 @@ Object.defineProperty(exports, "__esModule", { value: true });
`;
return;
}
- feeCategoriesContainerElement.innerHTML = "";
+ feeCategoriesContainerElement.innerHTML = '';
for (const feeCategory of feeCategories) {
- const feeCategoryContainerElement = document.createElement("section");
- feeCategoryContainerElement.className = "panel container--feeCategory";
- feeCategoryContainerElement.dataset.feeCategoryId = feeCategory.feeCategoryId.toString();
+ const feeCategoryContainerElement = document.createElement('section');
+ feeCategoryContainerElement.className = 'panel container--feeCategory';
+ feeCategoryContainerElement.dataset.feeCategoryId =
+ feeCategory.feeCategoryId.toString();
feeCategoryContainerElement.innerHTML =
'' +
'
' +
('
' +
'
' +
- cityssm.escapeHTML(feeCategory.feeCategory || "") +
- " " +
- "") +
+ cityssm.escapeHTML(feeCategory.feeCategory || '') +
+ '' +
+ '
') +
('
' +
'
' +
(feeCategory.fees.length === 0
? '
' +
'' +
' ' +
- "Delete Category " +
- " " +
- "
"
- : "") +
+ '
Delete Category ' +
+ '' +
+ '
'
+ : '') +
('
' +
'' +
' ' +
- "Edit Category " +
- " " +
- "
") +
+ '
Edit Category ' +
+ '' +
+ '
') +
('
' +
'' +
' ' +
- "Add Fee " +
- " " +
- "
") +
+ '
Add Fee ' +
+ '' +
+ '
') +
('' +
- los.getMoveUpDownButtonFieldHTML("button--moveFeeCategoryUp", "button--moveFeeCategoryDown") +
- "
") +
- "") +
- "" +
- "";
+ los.getMoveUpDownButtonFieldHTML('button--moveFeeCategoryUp', 'button--moveFeeCategoryDown') +
+ '') +
+ '') +
+ '' +
+ '';
if (feeCategory.fees.length === 0) {
- feeCategoryContainerElement.insertAdjacentHTML("beforeend", `
+ feeCategoryContainerElement.insertAdjacentHTML('beforeend', `
There are no fees in the
- "${cityssm.escapeHTML(feeCategory.feeCategory || "")}"
+ "${cityssm.escapeHTML(feeCategory.feeCategory || '')}"
category.
`);
feeCategoryContainerElement
- .querySelector(".button--deleteFeeCategory")
- .addEventListener("click", confirmDeleteFeeCategory);
+ .querySelector('.button--deleteFeeCategory')
+ .addEventListener('click', confirmDeleteFeeCategory);
}
else {
for (const fee of feeCategory.fees) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--fee";
+ const panelBlockElement = document.createElement('div');
+ panelBlockElement.className = 'panel-block is-block container--fee';
panelBlockElement.dataset.feeId = fee.feeId.toString();
const hasTagsBlock = fee.isRequired || fee.occupancyTypeId || fee.lotTypeId;
panelBlockElement.innerHTML =
'
' +
('
' +
- "
" +
+ '
' +
'' +
- cityssm.escapeHTML(fee.feeName || "") +
- " " +
- "" +
- cityssm.escapeHTML(fee.feeDescription || "").replace(/\n/g, " ") +
- " " +
- "
" +
+ cityssm.escapeHTML(fee.feeName || '') +
+ '
' +
+ '
' +
+ cityssm
+ .escapeHTML(fee.feeDescription || '')
+ .replace(/\n/g, ' ') +
+ ' ' +
+ '' +
(hasTagsBlock
? '
' +
- (fee.isRequired ? 'Required ' : "") +
+ (fee.isRequired
+ ? 'Required '
+ : '') +
(fee.occupancyTypeId
? ' ' +
- cityssm.escapeHTML(fee.occupancyType || "") +
- " "
- : "") +
+ cityssm.escapeHTML(fee.occupancyType || '') +
+ ''
+ : '') +
(fee.lotTypeId
? ' ' +
- cityssm.escapeHTML(fee.lotType || "") +
- " "
- : "") +
- "
"
- : "") +
- "
") +
+ cityssm.escapeHTML(fee.lotType || '') +
+ ''
+ : '') +
+ ''
+ : '') +
+ '
') +
('
' +
'
' +
('
' +
(fee.feeFunction
? cityssm.escapeHTML(fee.feeFunction) +
- " " +
- "Fee Function "
- : "$" + fee.feeAmount.toFixed(2) + " " + "Fee ") +
- "
") +
+ '
' +
+ '
Fee Function '
+ : '$' +
+ fee.feeAmount.toFixed(2) +
+ '
' +
+ '
Fee ') +
+ '
') +
('
' +
(fee.taxPercentage
- ? fee.taxPercentage + "%"
- : "$" + fee.taxAmount.toFixed(2)) +
- "Tax " +
- "
") +
+ ? fee.taxPercentage + '%'
+ : '$' + fee.taxAmount.toFixed(2)) +
+ '
Tax ' +
+ '
') +
('
' +
(fee.includeQuantity
- ? cityssm.escapeHTML(fee.quantityUnit || "") +
- " " +
- "Quantity "
- : "") +
- "
") +
- "
" +
- "") +
+ ? cityssm.escapeHTML(fee.quantityUnit || '') +
+ ' ' +
+ 'Quantity '
+ : '') +
+ '') +
+ '' +
+ '') +
('' +
- los.getMoveUpDownButtonFieldHTML("button--moveFeeUp", "button--moveFeeDown") +
- "
" +
- "") +
- "";
- panelBlockElement.querySelector("a").addEventListener("click", openEditFee);
- panelBlockElement.querySelector(".button--moveFeeUp").addEventListener("click", moveFee);
- panelBlockElement.querySelector(".button--moveFeeDown").addEventListener("click", moveFee);
+ los.getMoveUpDownButtonFieldHTML('button--moveFeeUp', 'button--moveFeeDown') +
+ '' +
+ '') +
+ '';
+ panelBlockElement
+ .querySelector('a')
+ .addEventListener('click', openEditFee);
+ panelBlockElement.querySelector('.button--moveFeeUp').addEventListener('click', moveFee);
+ panelBlockElement.querySelector('.button--moveFeeDown').addEventListener('click', moveFee);
feeCategoryContainerElement.append(panelBlockElement);
}
}
feeCategoryContainerElement
- .querySelector(".button--editFeeCategory")
- .addEventListener("click", openEditFeeCategory);
+ .querySelector('.button--editFeeCategory')
+ .addEventListener('click', openEditFeeCategory);
feeCategoryContainerElement
- .querySelector(".button--addFee")
- .addEventListener("click", openAddFee);
- feeCategoryContainerElement.querySelector(".button--moveFeeCategoryUp").addEventListener("click", moveFeeCategory);
- feeCategoryContainerElement.querySelector(".button--moveFeeCategoryDown").addEventListener("click", moveFeeCategory);
+ .querySelector('.button--addFee')
+ .addEventListener('click', openAddFee);
+ feeCategoryContainerElement.querySelector('.button--moveFeeCategoryUp').addEventListener('click', moveFeeCategory);
+ feeCategoryContainerElement.querySelector('.button--moveFeeCategoryDown').addEventListener('click', moveFeeCategory);
feeCategoriesContainerElement.append(feeCategoryContainerElement);
}
}
/*
* Fee Categories
*/
- document.querySelector("#button--addFeeCategory").addEventListener("click", () => {
+ document
+ .querySelector('#button--addFeeCategory')
+ .addEventListener('click', () => {
let addCloseModalFunction;
const doAddFeeCategory = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doAddFeeCategory", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddFeeCategory', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
feeCategories = responseJSON.feeCategories;
addCloseModalFunction();
@@ -166,36 +178,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Creating Fee Category",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Creating Fee Category',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("adminFees-addFeeCategory", {
+ cityssm.openHtmlModal('adminFees-addFeeCategory', {
onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped();
- modalElement.querySelector("#feeCategoryAdd--feeCategory").focus();
+ modalElement.querySelector('#feeCategoryAdd--feeCategory').focus();
addCloseModalFunction = closeModalFunction;
- modalElement.querySelector("form").addEventListener("submit", doAddFeeCategory);
+ modalElement
+ .querySelector('form')
+ .addEventListener('submit', doAddFeeCategory);
},
onremoved() {
bulmaJS.toggleHtmlClipped();
- document.querySelector("#button--addFeeCategory").focus();
+ document.querySelector('#button--addFeeCategory').focus();
}
});
});
function openEditFeeCategory(clickEvent) {
- const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory")
- .dataset.feeCategoryId, 10);
+ const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest('.container--feeCategory').dataset.feeCategoryId, 10);
const feeCategory = feeCategories.find((currentFeeCategory) => {
return currentFeeCategory.feeCategoryId === feeCategoryId;
});
let editCloseModalFunction;
function doUpdateFeeCategory(submitEvent) {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateFeeCategory", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateFeeCategory', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
feeCategories = responseJSON.feeCategories;
editCloseModalFunction();
@@ -203,25 +216,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Updating Fee Category",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Fee Category',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
}
- cityssm.openHtmlModal("adminFees-editFeeCategory", {
+ cityssm.openHtmlModal('adminFees-editFeeCategory', {
onshow(modalElement) {
- modalElement.querySelector("#feeCategoryEdit--feeCategoryId").value =
- feeCategory.feeCategoryId.toString();
- modalElement.querySelector("#feeCategoryEdit--feeCategory").value =
- feeCategory.feeCategory;
+ ;
+ modalElement.querySelector('#feeCategoryEdit--feeCategoryId').value = feeCategory.feeCategoryId.toString();
+ modalElement.querySelector('#feeCategoryEdit--feeCategory').value = feeCategory.feeCategory;
},
onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped();
editCloseModalFunction = closeModalFunction;
- modalElement.querySelector("form").addEventListener("submit", doUpdateFeeCategory);
- modalElement.querySelector("#feeCategoryEdit--feeCategory").focus();
+ modalElement
+ .querySelector('form')
+ .addEventListener('submit', doUpdateFeeCategory);
+ modalElement.querySelector('#feeCategoryEdit--feeCategory').focus();
},
onremoved: () => {
bulmaJS.toggleHtmlClipped();
@@ -229,10 +243,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
function confirmDeleteFeeCategory(clickEvent) {
- const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory")
- .dataset.feeCategoryId, 10);
+ const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest('.container--feeCategory').dataset.feeCategoryId, 10);
function doDelete() {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteFeeCategory", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteFeeCategory', {
feeCategoryId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -241,32 +254,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Updating Fee Category",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Fee Category',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
}
bulmaJS.confirm({
- title: "Delete Fee Category?",
- message: "Are you sure you want to delete this fee category?",
- contextualColorName: "warning",
+ title: 'Delete Fee Category?',
+ message: 'Are you sure you want to delete this fee category?',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete the Fee Category",
+ text: 'Yes, Delete the Fee Category',
callbackFunction: doDelete
}
});
}
function moveFeeCategory(clickEvent) {
const buttonElement = clickEvent.currentTarget;
- const feeCategoryId = buttonElement.closest(".container--feeCategory").dataset
- .feeCategoryId;
+ const feeCategoryId = buttonElement.closest('.container--feeCategory').dataset.feeCategoryId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveFeeCategoryUp" : "doMoveFeeCategoryDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveFeeCategoryUp'
+ : 'doMoveFeeCategoryDown'), {
feeCategoryId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
feeCategories = responseJSON.feeCategories;
@@ -274,9 +288,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Moving Fee Category",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Moving Fee Category',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -285,12 +299,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
* Fees
*/
function openAddFee(clickEvent) {
- const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory")
- .dataset.feeCategoryId, 10);
+ const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest('.container--feeCategory').dataset.feeCategoryId, 10);
let addCloseModalFunction;
function doAddFee(submitEvent) {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doAddFee", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddFee', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
feeCategories = responseJSON.feeCategories;
addCloseModalFunction();
@@ -298,18 +311,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Adding Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
}
- cityssm.openHtmlModal("adminFees-addFee", {
+ cityssm.openHtmlModal('adminFees-addFee', {
onshow(modalElement) {
- const feeCategoryElement = modalElement.querySelector("#feeAdd--feeCategoryId");
+ const feeCategoryElement = modalElement.querySelector('#feeAdd--feeCategoryId');
for (const feeCategory of feeCategories) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = feeCategory.feeCategoryId.toString();
optionElement.textContent = feeCategory.feeCategory;
if (feeCategory.feeCategoryId === feeCategoryId) {
@@ -317,60 +330,67 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
feeCategoryElement.append(optionElement);
}
- const occupancyTypeElement = modalElement.querySelector("#feeAdd--occupancyTypeId");
+ const occupancyTypeElement = modalElement.querySelector('#feeAdd--occupancyTypeId');
for (const occupancyType of exports.occupancyTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = occupancyType.occupancyTypeId.toString();
optionElement.textContent = occupancyType.occupancyType;
occupancyTypeElement.append(optionElement);
}
- const lotTypeElement = modalElement.querySelector("#feeAdd--lotTypeId");
+ const lotTypeElement = modalElement.querySelector('#feeAdd--lotTypeId');
for (const lotType of exports.lotTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotType.lotTypeId.toString();
optionElement.textContent = lotType.lotType;
lotTypeElement.append(optionElement);
}
- modalElement.querySelector("#feeAdd--taxPercentage").value = exports.taxPercentageDefault.toString();
+ ;
+ modalElement.querySelector('#feeAdd--taxPercentage').value = exports.taxPercentageDefault.toString();
los.populateAliases(modalElement);
},
onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped();
addCloseModalFunction = closeModalFunction;
- modalElement.querySelector("form").addEventListener("submit", doAddFee);
- modalElement.querySelector("#feeAdd--feeName").focus();
- modalElement.querySelector("#feeAdd--feeFunction").addEventListener("change", () => {
- const feeAmountElement = modalElement.querySelector("#feeAdd--feeAmount");
- const feeFunctionElement = modalElement.querySelector("#feeAdd--feeFunction");
- if (feeFunctionElement.value === "") {
- feeFunctionElement.closest(".select").classList.remove("is-success");
- feeAmountElement.classList.add("is-success");
+ modalElement.querySelector('form').addEventListener('submit', doAddFee);
+ modalElement.querySelector('#feeAdd--feeName').focus();
+ modalElement.querySelector('#feeAdd--feeFunction').addEventListener('change', () => {
+ const feeAmountElement = modalElement.querySelector('#feeAdd--feeAmount');
+ const feeFunctionElement = modalElement.querySelector('#feeAdd--feeFunction');
+ if (feeFunctionElement.value === '') {
+ feeFunctionElement
+ .closest('.select')
+ .classList.remove('is-success');
+ feeAmountElement.classList.add('is-success');
feeAmountElement.disabled = false;
}
else {
- feeFunctionElement.closest(".select").classList.add("is-success");
- feeAmountElement.classList.remove("is-success");
+ feeFunctionElement.closest('.select').classList.add('is-success');
+ feeAmountElement.classList.remove('is-success');
feeAmountElement.disabled = true;
}
});
- modalElement.querySelector("#feeAdd--taxPercentage").addEventListener("keyup", () => {
- const taxAmountElement = modalElement.querySelector("#feeAdd--taxAmount");
- const taxPercentageElement = modalElement.querySelector("#feeAdd--taxPercentage");
- if (taxPercentageElement.value === "") {
- taxPercentageElement.classList.remove("is-success");
- taxAmountElement.classList.add("is-success");
+ modalElement
+ .querySelector('#feeAdd--taxPercentage')
+ .addEventListener('keyup', () => {
+ const taxAmountElement = modalElement.querySelector('#feeAdd--taxAmount');
+ const taxPercentageElement = modalElement.querySelector('#feeAdd--taxPercentage');
+ if (taxPercentageElement.value === '') {
+ taxPercentageElement.classList.remove('is-success');
+ taxAmountElement.classList.add('is-success');
taxAmountElement.disabled = false;
}
else {
- taxPercentageElement.classList.add("is-success");
- taxAmountElement.classList.remove("is-success");
+ taxPercentageElement.classList.add('is-success');
+ taxAmountElement.classList.remove('is-success');
taxAmountElement.disabled = true;
}
});
- modalElement.querySelector("#feeAdd--includeQuantity").addEventListener("change", () => {
- modalElement.querySelector("#feeAdd--quantityUnit").disabled =
- modalElement.querySelector("#feeAdd--includeQuantity")
- .value === "";
+ modalElement
+ .querySelector('#feeAdd--includeQuantity')
+ .addEventListener('change', () => {
+ ;
+ modalElement.querySelector('#feeAdd--quantityUnit').disabled =
+ modalElement.querySelector('#feeAdd--includeQuantity').value === '';
});
},
onremoved() {
@@ -380,9 +400,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function openEditFee(clickEvent) {
clickEvent.preventDefault();
- const feeContainerElement = clickEvent.currentTarget.closest(".container--fee");
+ const feeContainerElement = clickEvent.currentTarget.closest('.container--fee');
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10);
- const feeCategoryId = Number.parseInt(feeContainerElement.closest(".container--feeCategory").dataset.feeCategoryId);
+ const feeCategoryId = Number.parseInt(feeContainerElement.closest('.container--feeCategory')
+ .dataset.feeCategoryId);
const feeCategory = feeCategories.find((currentFeeCategory) => {
return currentFeeCategory.feeCategoryId === feeCategoryId;
});
@@ -393,7 +414,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editModalElement;
function doUpdateFee(submitEvent) {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateFee", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateFee', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
feeCategories = responseJSON.feeCategories;
editCloseModalFunction();
@@ -401,9 +422,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Updating Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -411,7 +432,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
function confirmDeleteFee(clickEvent) {
clickEvent.preventDefault();
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteFee", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteFee', {
feeId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -421,64 +442,62 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Deleting Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete Fee?",
- message: "Are you sure you want to delete this fee?",
- contextualColorName: "warning",
+ title: 'Delete Fee?',
+ message: 'Are you sure you want to delete this fee?',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete the Fee",
+ text: 'Yes, Delete the Fee',
callbackFunction: doDelete
}
});
}
function toggleFeeFields() {
- const feeAmountElement = editModalElement.querySelector("#feeEdit--feeAmount");
- const feeFunctionElement = editModalElement.querySelector("#feeEdit--feeFunction");
- if (feeFunctionElement.value === "") {
- feeFunctionElement.closest(".select").classList.remove("is-success");
- feeAmountElement.classList.add("is-success");
+ const feeAmountElement = editModalElement.querySelector('#feeEdit--feeAmount');
+ const feeFunctionElement = editModalElement.querySelector('#feeEdit--feeFunction');
+ if (feeFunctionElement.value === '') {
+ feeFunctionElement.closest('.select').classList.remove('is-success');
+ feeAmountElement.classList.add('is-success');
feeAmountElement.disabled = false;
}
else {
- feeFunctionElement.closest(".select").classList.add("is-success");
- feeAmountElement.classList.remove("is-success");
+ feeFunctionElement.closest('.select').classList.add('is-success');
+ feeAmountElement.classList.remove('is-success');
feeAmountElement.disabled = true;
}
}
function toggleTaxFields() {
- const taxAmountElement = editModalElement.querySelector("#feeEdit--taxAmount");
- const taxPercentageElement = editModalElement.querySelector("#feeEdit--taxPercentage");
- if (taxPercentageElement.value === "") {
- taxPercentageElement.classList.remove("is-success");
- taxAmountElement.classList.add("is-success");
+ const taxAmountElement = editModalElement.querySelector('#feeEdit--taxAmount');
+ const taxPercentageElement = editModalElement.querySelector('#feeEdit--taxPercentage');
+ if (taxPercentageElement.value === '') {
+ taxPercentageElement.classList.remove('is-success');
+ taxAmountElement.classList.add('is-success');
taxAmountElement.disabled = false;
}
else {
- taxPercentageElement.classList.add("is-success");
- taxAmountElement.classList.remove("is-success");
+ taxPercentageElement.classList.add('is-success');
+ taxAmountElement.classList.remove('is-success');
taxAmountElement.disabled = true;
}
}
function toggleQuantityFields() {
- const includeQuanitityValue = editModalElement.querySelector("#feeEdit--includeQuantity").value;
- editModalElement.querySelector("#feeEdit--quantityUnit").disabled =
- includeQuanitityValue === "";
+ const includeQuanitityValue = editModalElement.querySelector('#feeEdit--includeQuantity').value;
+ editModalElement.querySelector('#feeEdit--quantityUnit').disabled = includeQuanitityValue === '';
}
- cityssm.openHtmlModal("adminFees-editFee", {
+ cityssm.openHtmlModal('adminFees-editFee', {
onshow(modalElement) {
editModalElement = modalElement;
- modalElement.querySelector("#feeEdit--feeId").value =
- fee.feeId.toString();
- const feeCategoryElement = modalElement.querySelector("#feeEdit--feeCategoryId");
+ modalElement.querySelector('#feeEdit--feeId').value = fee.feeId.toString();
+ const feeCategoryElement = modalElement.querySelector('#feeEdit--feeCategoryId');
for (const feeCategory of feeCategories) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = feeCategory.feeCategoryId.toString();
optionElement.textContent = feeCategory.feeCategory;
if (feeCategory.feeCategoryId === feeCategoryId) {
@@ -486,12 +505,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
feeCategoryElement.append(optionElement);
}
- modalElement.querySelector("#feeEdit--feeName").value = fee.feeName;
- modalElement.querySelector("#feeEdit--feeDescription").value =
- fee.feeDescription;
- const occupancyTypeElement = modalElement.querySelector("#feeEdit--occupancyTypeId");
+ ;
+ modalElement.querySelector('#feeEdit--feeName').value = fee.feeName;
+ modalElement.querySelector('#feeEdit--feeDescription').value = fee.feeDescription;
+ const occupancyTypeElement = modalElement.querySelector('#feeEdit--occupancyTypeId');
for (const occupancyType of exports.occupancyTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = occupancyType.occupancyTypeId.toString();
optionElement.textContent = occupancyType.occupancyType;
if (occupancyType.occupancyTypeId === fee.occupancyTypeId) {
@@ -499,9 +518,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
occupancyTypeElement.append(optionElement);
}
- const lotTypeElement = modalElement.querySelector("#feeEdit--lotTypeId");
+ const lotTypeElement = modalElement.querySelector('#feeEdit--lotTypeId');
for (const lotType of exports.lotTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotType.lotTypeId.toString();
optionElement.textContent = lotType.lotType;
if (lotType.lotTypeId === fee.lotTypeId) {
@@ -509,39 +528,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
lotTypeElement.append(optionElement);
}
- modalElement.querySelector("#feeEdit--feeAmount").value = fee.feeAmount
- ? fee.feeAmount.toFixed(2)
- : "";
+ ;
+ modalElement.querySelector('#feeEdit--feeAmount').value = fee.feeAmount ? fee.feeAmount.toFixed(2) : '';
modalElement
- .querySelector("#feeEdit--feeFunction")
- .addEventListener("change", toggleFeeFields);
+ .querySelector('#feeEdit--feeFunction')
+ .addEventListener('change', toggleFeeFields);
toggleFeeFields();
- modalElement.querySelector("#feeEdit--taxAmount").value = fee.taxAmount
- ? fee.taxAmount.toFixed(2)
- : "";
- const taxPercentageElement = modalElement.querySelector("#feeEdit--taxPercentage");
- taxPercentageElement.value = fee.taxPercentage ? fee.taxPercentage.toString() : "";
- taxPercentageElement.addEventListener("keyup", toggleTaxFields);
+ modalElement.querySelector('#feeEdit--taxAmount').value = fee.taxAmount ? fee.taxAmount.toFixed(2) : '';
+ const taxPercentageElement = modalElement.querySelector('#feeEdit--taxPercentage');
+ taxPercentageElement.value = fee.taxPercentage
+ ? fee.taxPercentage.toString()
+ : '';
+ taxPercentageElement.addEventListener('keyup', toggleTaxFields);
toggleTaxFields();
- const includeQuantityElement = modalElement.querySelector("#feeEdit--includeQuantity");
+ const includeQuantityElement = modalElement.querySelector('#feeEdit--includeQuantity');
if (fee.includeQuantity) {
- includeQuantityElement.value = "1";
+ includeQuantityElement.value = '1';
}
- includeQuantityElement.addEventListener("change", toggleQuantityFields);
- modalElement.querySelector("#feeEdit--quantityUnit").value =
- fee.quantityUnit || "";
+ includeQuantityElement.addEventListener('change', toggleQuantityFields);
+ modalElement.querySelector('#feeEdit--quantityUnit').value = fee.quantityUnit || '';
toggleQuantityFields();
if (fee.isRequired) {
- modalElement.querySelector("#feeEdit--isRequired").value = "1";
+ ;
+ modalElement.querySelector('#feeEdit--isRequired').value = '1';
}
los.populateAliases(modalElement);
},
onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped();
editCloseModalFunction = closeModalFunction;
- modalElement.querySelector("form").addEventListener("submit", doUpdateFee);
+ modalElement
+ .querySelector('form')
+ .addEventListener('submit', doUpdateFee);
bulmaJS.init(modalElement);
- modalElement.querySelector(".button--deleteFee").addEventListener("click", confirmDeleteFee);
+ modalElement
+ .querySelector('.button--deleteFee')
+ .addEventListener('click', confirmDeleteFee);
},
onremoved: () => {
bulmaJS.toggleHtmlClipped();
@@ -550,13 +572,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function moveFee(clickEvent) {
const buttonElement = clickEvent.currentTarget;
- const feeContainerElement = buttonElement.closest(".container--fee");
+ const feeContainerElement = buttonElement.closest('.container--fee');
const feeId = feeContainerElement.dataset.feeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveFeeUp" : "doMoveFeeDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveFeeUp'
+ : 'doMoveFeeDown'), {
feeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
feeCategories = responseJSON.feeCategories;
@@ -564,9 +588,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Moving Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Moving Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
diff --git a/public-typescript/adminFees.ts b/public-typescript/adminFees.ts
index 1b854d15..03a275ce 100644
--- a/public-typescript/adminFees.ts
+++ b/public-typescript/adminFees.ts
@@ -1,834 +1,945 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../types/globalTypes";
-import type * as recordTypes from "../types/recordTypes";
+import type * as globalTypes from '../types/globalTypes'
+import type * as recordTypes from '../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-(() => {
- const los = exports.los as globalTypes.LOS;
+;(() => {
+ const los = exports.los as globalTypes.LOS
- const feeCategoriesContainerElement = document.querySelector("#container--feeCategories") as HTMLElement;
+ const feeCategoriesContainerElement = document.querySelector(
+ '#container--feeCategories'
+ ) as HTMLElement
- let feeCategories: recordTypes.FeeCategory[] = exports.feeCategories;
- delete exports.feeCategories;
+ let feeCategories: recordTypes.FeeCategory[] = exports.feeCategories
+ delete exports.feeCategories
- function renderFeeCategories(): void {
- if (feeCategories.length === 0) {
- feeCategoriesContainerElement.innerHTML = `
+ function renderFeeCategories(): void {
+ if (feeCategories.length === 0) {
+ feeCategoriesContainerElement.innerHTML = `
There are no available fees.
-
`;
+
`
- return;
- }
+ return
+ }
- feeCategoriesContainerElement.innerHTML = "";
+ feeCategoriesContainerElement.innerHTML = ''
- for (const feeCategory of feeCategories) {
- const feeCategoryContainerElement = document.createElement("section");
+ for (const feeCategory of feeCategories) {
+ const feeCategoryContainerElement = document.createElement('section')
- feeCategoryContainerElement.className = "panel container--feeCategory";
+ feeCategoryContainerElement.className = 'panel container--feeCategory'
- feeCategoryContainerElement.dataset.feeCategoryId = feeCategory.feeCategoryId!.toString();
+ feeCategoryContainerElement.dataset.feeCategoryId =
+ feeCategory.feeCategoryId!.toString()
- feeCategoryContainerElement.innerHTML =
- '' +
- '
' +
- ('
' +
- '
' +
- cityssm.escapeHTML(feeCategory.feeCategory || "") +
- " " +
- "") +
- ('
' +
- '
' +
- (feeCategory.fees!.length === 0
- ? '
' +
- '' +
- ' ' +
- "Delete Category " +
- " " +
- "
"
- : "") +
- ('
' +
- '' +
- ' ' +
- "Edit Category " +
- " " +
- "
") +
- ('
' +
- '' +
- ' ' +
- "Add Fee " +
- " " +
- "
") +
- ('
' +
- los.getMoveUpDownButtonFieldHTML(
- "button--moveFeeCategoryUp",
- "button--moveFeeCategoryDown"
- ) +
- "
") +
- "
") +
- "
" +
- "
";
+ feeCategoryContainerElement.innerHTML =
+ '
' +
+ '
' +
+ ('
' +
+ '
' +
+ cityssm.escapeHTML(feeCategory.feeCategory || '') +
+ ' ' +
+ '') +
+ ('
' +
+ '
' +
+ (feeCategory.fees!.length === 0
+ ? '
' +
+ '' +
+ ' ' +
+ 'Delete Category ' +
+ ' ' +
+ '
'
+ : '') +
+ ('
' +
+ '' +
+ ' ' +
+ 'Edit Category ' +
+ ' ' +
+ '
') +
+ ('
' +
+ '' +
+ ' ' +
+ 'Add Fee ' +
+ ' ' +
+ '
') +
+ ('
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveFeeCategoryUp',
+ 'button--moveFeeCategoryDown'
+ ) +
+ '
') +
+ '
') +
+ '
' +
+ '
'
- if (feeCategory.fees.length === 0) {
- feeCategoryContainerElement.insertAdjacentHTML(
- "beforeend",
- `
+ if (feeCategory.fees.length === 0) {
+ feeCategoryContainerElement.insertAdjacentHTML(
+ 'beforeend',
+ `
There are no fees in the
- "${cityssm.escapeHTML(feeCategory.feeCategory || "")}"
+ "${cityssm.escapeHTML(
+ feeCategory.feeCategory || ''
+ )}"
category.
`
- );
+ )
- feeCategoryContainerElement
- .querySelector(".button--deleteFeeCategory")!
- .addEventListener("click", confirmDeleteFeeCategory);
- } else {
- for (const fee of feeCategory.fees) {
- const panelBlockElement = document.createElement("div");
+ feeCategoryContainerElement
+ .querySelector('.button--deleteFeeCategory')!
+ .addEventListener('click', confirmDeleteFeeCategory)
+ } else {
+ for (const fee of feeCategory.fees) {
+ const panelBlockElement = document.createElement('div')
- panelBlockElement.className = "panel-block is-block container--fee";
- panelBlockElement.dataset.feeId = fee.feeId!.toString();
+ panelBlockElement.className = 'panel-block is-block container--fee'
+ panelBlockElement.dataset.feeId = fee.feeId!.toString()
- const hasTagsBlock = fee.isRequired || fee.occupancyTypeId || fee.lotTypeId;
+ const hasTagsBlock =
+ fee.isRequired || fee.occupancyTypeId || fee.lotTypeId
- panelBlockElement.innerHTML =
- '
' +
- ('
' +
- "
" +
- '' +
- cityssm.escapeHTML(fee.feeName || "") +
- " " +
- "" +
- cityssm.escapeHTML(fee.feeDescription || "").replace(/\n/g, " ") +
- " " +
- "
" +
- (hasTagsBlock
- ? '
' +
- (fee.isRequired ? 'Required ' : "") +
- (fee.occupancyTypeId
- ? ' ' +
- cityssm.escapeHTML(fee.occupancyType || "") +
- " "
- : "") +
- (fee.lotTypeId
- ? ' ' +
- cityssm.escapeHTML(fee.lotType || "") +
- " "
- : "") +
- "
"
- : "") +
- "
") +
- ('
' +
- '
' +
- ('
' +
- (fee.feeFunction
- ? cityssm.escapeHTML(fee.feeFunction) +
- " " +
- "Fee Function "
- : "$" + fee.feeAmount!.toFixed(2) + " " + "Fee ") +
- "
") +
- ('
' +
- (fee.taxPercentage
- ? fee.taxPercentage + "%"
- : "$" + fee.taxAmount!.toFixed(2)) +
- "Tax " +
- "
") +
- ('
' +
- (fee.includeQuantity
- ? cityssm.escapeHTML(fee.quantityUnit || "") +
- " " +
- "Quantity "
- : "") +
- "
") +
- "
" +
- "
") +
- ('
' +
- los.getMoveUpDownButtonFieldHTML("button--moveFeeUp", "button--moveFeeDown") +
- "
" +
- "
") +
- "
";
+ panelBlockElement.innerHTML =
+ '
' +
+ ('
' +
+ '
' +
+ '' +
+ cityssm.escapeHTML(fee.feeName || '') +
+ ' ' +
+ '' +
+ cityssm
+ .escapeHTML(fee.feeDescription || '')
+ .replace(/\n/g, ' ') +
+ ' ' +
+ '
' +
+ (hasTagsBlock
+ ? '
' +
+ (fee.isRequired
+ ? 'Required '
+ : '') +
+ (fee.occupancyTypeId
+ ? ' ' +
+ cityssm.escapeHTML(fee.occupancyType || '') +
+ ' '
+ : '') +
+ (fee.lotTypeId
+ ? ' ' +
+ cityssm.escapeHTML(fee.lotType || '') +
+ ' '
+ : '') +
+ '
'
+ : '') +
+ '
') +
+ ('
' +
+ '
' +
+ ('
' +
+ (fee.feeFunction
+ ? cityssm.escapeHTML(fee.feeFunction) +
+ ' ' +
+ 'Fee Function '
+ : '$' +
+ fee.feeAmount!.toFixed(2) +
+ ' ' +
+ 'Fee ') +
+ '
') +
+ ('
' +
+ (fee.taxPercentage
+ ? fee.taxPercentage + '%'
+ : '$' + fee.taxAmount!.toFixed(2)) +
+ 'Tax ' +
+ '
') +
+ ('
' +
+ (fee.includeQuantity
+ ? cityssm.escapeHTML(fee.quantityUnit || '') +
+ ' ' +
+ 'Quantity '
+ : '') +
+ '
') +
+ '
' +
+ '
') +
+ ('
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveFeeUp',
+ 'button--moveFeeDown'
+ ) +
+ '
' +
+ '
') +
+ '
'
- panelBlockElement.querySelector("a")!.addEventListener("click", openEditFee);
+ panelBlockElement
+ .querySelector('a')!
+ .addEventListener('click', openEditFee)
- (
- panelBlockElement.querySelector(".button--moveFeeUp") as HTMLButtonElement
- ).addEventListener("click", moveFee);
+ ;(
+ panelBlockElement.querySelector(
+ '.button--moveFeeUp'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveFee)
- (
- panelBlockElement.querySelector(".button--moveFeeDown") as HTMLButtonElement
- ).addEventListener("click", moveFee);
+ ;(
+ panelBlockElement.querySelector(
+ '.button--moveFeeDown'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveFee)
- feeCategoryContainerElement.append(panelBlockElement);
- }
- }
-
- feeCategoryContainerElement
- .querySelector(".button--editFeeCategory")!
- .addEventListener("click", openEditFeeCategory);
-
- feeCategoryContainerElement
- .querySelector(".button--addFee")!
- .addEventListener("click", openAddFee);
-
- (
- feeCategoryContainerElement.querySelector(".button--moveFeeCategoryUp") as HTMLButtonElement
- ).addEventListener("click", moveFeeCategory);
-
- (
- feeCategoryContainerElement.querySelector(".button--moveFeeCategoryDown") as HTMLButtonElement
- ).addEventListener("click", moveFeeCategory);
-
- feeCategoriesContainerElement.append(feeCategoryContainerElement);
+ feeCategoryContainerElement.append(panelBlockElement)
}
+ }
+
+ feeCategoryContainerElement
+ .querySelector('.button--editFeeCategory')!
+ .addEventListener('click', openEditFeeCategory)
+
+ feeCategoryContainerElement
+ .querySelector('.button--addFee')!
+ .addEventListener('click', openAddFee)
+
+ ;(
+ feeCategoryContainerElement.querySelector(
+ '.button--moveFeeCategoryUp'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveFeeCategory)
+
+ ;(
+ feeCategoryContainerElement.querySelector(
+ '.button--moveFeeCategoryDown'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveFeeCategory)
+
+ feeCategoriesContainerElement.append(feeCategoryContainerElement)
}
+ }
- /*
- * Fee Categories
- */
+ /*
+ * Fee Categories
+ */
- document.querySelector("#button--addFeeCategory")!.addEventListener("click", () => {
- let addCloseModalFunction: () => void;
+ document
+ .querySelector('#button--addFeeCategory')!
+ .addEventListener('click', () => {
+ let addCloseModalFunction: () => void
- const doAddFeeCategory = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddFeeCategory",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- feeCategories: recordTypes.FeeCategory[];
- }) => {
- if (responseJSON.success) {
- feeCategories = responseJSON.feeCategories;
- addCloseModalFunction();
- renderFeeCategories();
- } else {
- bulmaJS.alert({
- title: "Error Creating Fee Category",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- cityssm.openHtmlModal("adminFees-addFeeCategory", {
- onshown(modalElement, closeModalFunction) {
- bulmaJS.toggleHtmlClipped();
- (modalElement.querySelector("#feeCategoryAdd--feeCategory") as HTMLInputElement).focus();
-
- addCloseModalFunction = closeModalFunction;
- modalElement.querySelector("form")!.addEventListener("submit", doAddFeeCategory);
- },
- onremoved() {
- bulmaJS.toggleHtmlClipped();
- (document.querySelector("#button--addFeeCategory") as HTMLButtonElement).focus();
- }
- });
- });
-
- function openEditFeeCategory(clickEvent: Event): void {
- const feeCategoryId = Number.parseInt(
- ((clickEvent.currentTarget as HTMLElement).closest(".container--feeCategory") as HTMLElement)
- .dataset.feeCategoryId!,
- 10
- );
-
- const feeCategory = feeCategories.find((currentFeeCategory) => {
- return currentFeeCategory.feeCategoryId === feeCategoryId;
- })!;
-
- let editCloseModalFunction: () => void;
-
- function doUpdateFeeCategory(submitEvent: SubmitEvent) {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateFeeCategory",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- feeCategories: recordTypes.FeeCategory[];
- }) => {
- if (responseJSON.success) {
- feeCategories = responseJSON.feeCategories;
- editCloseModalFunction();
- renderFeeCategories();
- } else {
- bulmaJS.alert({
- title: "Error Updating Fee Category",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-
- cityssm.openHtmlModal("adminFees-editFeeCategory", {
- onshow(modalElement) {
- (modalElement.querySelector("#feeCategoryEdit--feeCategoryId") as HTMLInputElement).value =
- feeCategory.feeCategoryId!.toString();
- (modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement).value =
- feeCategory.feeCategory!;
- },
- onshown(modalElement, closeModalFunction) {
- bulmaJS.toggleHtmlClipped();
-
- editCloseModalFunction = closeModalFunction;
-
- modalElement.querySelector("form")!.addEventListener("submit", doUpdateFeeCategory);
-
- (modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement).focus();
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
- }
- });
- }
-
- function confirmDeleteFeeCategory(clickEvent: Event): void {
- const feeCategoryId = Number.parseInt(
- ((clickEvent.currentTarget as HTMLElement).closest(".container--feeCategory") as HTMLElement)
- .dataset.feeCategoryId!,
- 10
- );
-
- function doDelete() {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteFeeCategory",
- {
- feeCategoryId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- feeCategories?: recordTypes.FeeCategory[];
- }) => {
- if (responseJSON.success) {
- feeCategories = responseJSON.feeCategories!;
- renderFeeCategories();
- } else {
- bulmaJS.alert({
- title: "Error Updating Fee Category",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-
- bulmaJS.confirm({
- title: "Delete Fee Category?",
- message: "Are you sure you want to delete this fee category?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete the Fee Category",
- callbackFunction: doDelete
- }
- });
- }
-
- function moveFeeCategory(clickEvent: MouseEvent): void {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
-
- const feeCategoryId = (buttonElement.closest(".container--feeCategory") as HTMLElement).dataset
- .feeCategoryId!;
+ const doAddFeeCategory = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveFeeCategoryUp" : "doMoveFeeCategoryDown"),
- {
- feeCategoryId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- feeCategories?: recordTypes.FeeCategory[];
- }) => {
- if (responseJSON.success) {
- feeCategories = responseJSON.feeCategories!;
- renderFeeCategories();
- } else {
- bulmaJS.alert({
- title: "Error Moving Fee Category",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-
- /*
- * Fees
- */
-
- function openAddFee(clickEvent: Event): void {
- const feeCategoryId = Number.parseInt(
- ((clickEvent.currentTarget as HTMLElement).closest(".container--feeCategory") as HTMLElement)
- .dataset.feeCategoryId!,
- 10
- );
-
- let addCloseModalFunction: () => void;
-
- function doAddFee(submitEvent: SubmitEvent) {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddFee",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- feeCategories: recordTypes.FeeCategory[];
- }) => {
- if (responseJSON.success) {
- feeCategories = responseJSON.feeCategories;
- addCloseModalFunction();
- renderFeeCategories();
- } else {
- bulmaJS.alert({
- title: "Error Adding Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-
- cityssm.openHtmlModal("adminFees-addFee", {
- onshow(modalElement) {
- const feeCategoryElement = modalElement.querySelector(
- "#feeAdd--feeCategoryId"
- ) as HTMLSelectElement;
-
- for (const feeCategory of feeCategories) {
- const optionElement = document.createElement("option");
- optionElement.value = feeCategory.feeCategoryId.toString();
- optionElement.textContent = feeCategory.feeCategory!;
-
- if (feeCategory.feeCategoryId === feeCategoryId) {
- optionElement.selected = true;
- }
-
- feeCategoryElement.append(optionElement);
- }
-
- const occupancyTypeElement = modalElement.querySelector(
- "#feeAdd--occupancyTypeId"
- ) as HTMLSelectElement;
-
- for (const occupancyType of exports.occupancyTypes as recordTypes.OccupancyType[]) {
- const optionElement = document.createElement("option");
- optionElement.value = occupancyType.occupancyTypeId.toString();
- optionElement.textContent = occupancyType.occupancyType;
- occupancyTypeElement.append(optionElement);
- }
-
- const lotTypeElement = modalElement.querySelector("#feeAdd--lotTypeId") as HTMLSelectElement;
-
- for (const lotType of exports.lotTypes as recordTypes.LotType[]) {
- const optionElement = document.createElement("option");
- optionElement.value = lotType.lotTypeId.toString();
- optionElement.textContent = lotType.lotType;
- lotTypeElement.append(optionElement);
- }
-
- (modalElement.querySelector("#feeAdd--taxPercentage") as HTMLInputElement).value = (
- exports.taxPercentageDefault as number
- ).toString();
-
- los.populateAliases(modalElement);
- },
- onshown(modalElement, closeModalFunction) {
- bulmaJS.toggleHtmlClipped();
-
- addCloseModalFunction = closeModalFunction;
-
- modalElement.querySelector("form")!.addEventListener("submit", doAddFee);
-
- (modalElement.querySelector("#feeAdd--feeName") as HTMLInputElement).focus();
-
- (modalElement.querySelector("#feeAdd--feeFunction") as HTMLInputElement).addEventListener(
- "change",
- () => {
- const feeAmountElement = modalElement.querySelector(
- "#feeAdd--feeAmount"
- ) as HTMLInputElement;
-
- const feeFunctionElement = modalElement.querySelector(
- "#feeAdd--feeFunction"
- ) as HTMLSelectElement;
-
- if (feeFunctionElement.value === "") {
- feeFunctionElement.closest(".select")!.classList.remove("is-success");
-
- feeAmountElement.classList.add("is-success");
- feeAmountElement.disabled = false;
- } else {
- feeFunctionElement.closest(".select")!.classList.add("is-success");
-
- feeAmountElement.classList.remove("is-success");
- feeAmountElement.disabled = true;
- }
- }
- );
-
- modalElement.querySelector("#feeAdd--taxPercentage")!.addEventListener("keyup", () => {
- const taxAmountElement = modalElement.querySelector(
- "#feeAdd--taxAmount"
- ) as HTMLInputElement;
-
- const taxPercentageElement = modalElement.querySelector(
- "#feeAdd--taxPercentage"
- ) as HTMLInputElement;
-
- if (taxPercentageElement.value === "") {
- taxPercentageElement.classList.remove("is-success");
-
- taxAmountElement.classList.add("is-success");
- taxAmountElement.disabled = false;
- } else {
- taxPercentageElement.classList.add("is-success");
-
- taxAmountElement.classList.remove("is-success");
- taxAmountElement.disabled = true;
- }
- });
-
- modalElement.querySelector("#feeAdd--includeQuantity")!.addEventListener("change", () => {
- (modalElement.querySelector("#feeAdd--quantityUnit") as HTMLInputElement).disabled =
- (modalElement.querySelector("#feeAdd--includeQuantity") as HTMLSelectElement)
- .value === "";
- });
- },
- onremoved() {
- bulmaJS.toggleHtmlClipped();
- }
- });
- }
-
- function openEditFee(clickEvent: Event): void {
- clickEvent.preventDefault();
-
- const feeContainerElement = (clickEvent.currentTarget as HTMLElement).closest(
- ".container--fee"
- ) as HTMLElement;
-
- const feeId = Number.parseInt(feeContainerElement.dataset.feeId!, 10);
- const feeCategoryId = Number.parseInt(
- (feeContainerElement.closest(".container--feeCategory") as HTMLElement).dataset.feeCategoryId!
- );
-
- const feeCategory = feeCategories.find((currentFeeCategory) => {
- return currentFeeCategory.feeCategoryId === feeCategoryId;
- })!;
-
- const fee = feeCategory.fees.find((currentFee) => {
- return currentFee.feeId === feeId;
- })!;
-
- let editCloseModalFunction: () => void;
- let editModalElement: HTMLElement;
-
- function doUpdateFee(submitEvent: SubmitEvent) {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateFee",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- feeCategories?: recordTypes.FeeCategory[];
- }) => {
- if (responseJSON.success) {
- feeCategories = responseJSON.feeCategories!;
- editCloseModalFunction();
- renderFeeCategories();
- } else {
- bulmaJS.alert({
- title: "Error Updating Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-
- function confirmDeleteFee(clickEvent: Event) {
- clickEvent.preventDefault();
-
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteFee",
- {
- feeId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- feeCategories?: recordTypes.FeeCategory[];
- }) => {
- if (responseJSON.success) {
- feeCategories = responseJSON.feeCategories!;
- editCloseModalFunction();
- renderFeeCategories();
- } else {
- bulmaJS.alert({
- title: "Error Deleting Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- bulmaJS.confirm({
- title: "Delete Fee?",
- message: "Are you sure you want to delete this fee?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete the Fee",
- callbackFunction: doDelete
- }
- });
- }
-
- function toggleFeeFields() {
- const feeAmountElement = editModalElement.querySelector(
- "#feeEdit--feeAmount"
- ) as HTMLInputElement;
-
- const feeFunctionElement = editModalElement.querySelector(
- "#feeEdit--feeFunction"
- ) as HTMLSelectElement;
-
- if (feeFunctionElement.value === "") {
- feeFunctionElement.closest(".select")!.classList.remove("is-success");
-
- feeAmountElement.classList.add("is-success");
- feeAmountElement.disabled = false;
+ los.urlPrefix + '/admin/doAddFeeCategory',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ feeCategories: recordTypes.FeeCategory[]
+ }) => {
+ if (responseJSON.success) {
+ feeCategories = responseJSON.feeCategories
+ addCloseModalFunction()
+ renderFeeCategories()
} else {
- feeFunctionElement.closest(".select")!.classList.add("is-success");
-
- feeAmountElement.classList.remove("is-success");
- feeAmountElement.disabled = true;
+ bulmaJS.alert({
+ title: 'Error Creating Fee Category',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
+ }
+ )
+ }
+
+ cityssm.openHtmlModal('adminFees-addFeeCategory', {
+ onshown(modalElement, closeModalFunction) {
+ bulmaJS.toggleHtmlClipped()
+ ;(
+ modalElement.querySelector(
+ '#feeCategoryAdd--feeCategory'
+ ) as HTMLInputElement
+ ).focus()
+
+ addCloseModalFunction = closeModalFunction
+ modalElement
+ .querySelector('form')!
+ .addEventListener('submit', doAddFeeCategory)
+ },
+ onremoved() {
+ bulmaJS.toggleHtmlClipped()
+ ;(
+ document.querySelector(
+ '#button--addFeeCategory'
+ ) as HTMLButtonElement
+ ).focus()
}
+ })
+ })
- function toggleTaxFields() {
- const taxAmountElement = editModalElement.querySelector(
- "#feeEdit--taxAmount"
- ) as HTMLInputElement;
+ function openEditFeeCategory(clickEvent: Event): void {
+ const feeCategoryId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--feeCategory'
+ ) as HTMLElement
+ ).dataset.feeCategoryId!,
+ 10
+ )
- const taxPercentageElement = editModalElement.querySelector(
- "#feeEdit--taxPercentage"
- ) as HTMLInputElement;
+ const feeCategory = feeCategories.find((currentFeeCategory) => {
+ return currentFeeCategory.feeCategoryId === feeCategoryId
+ })!
- if (taxPercentageElement.value === "") {
- taxPercentageElement.classList.remove("is-success");
+ let editCloseModalFunction: () => void
- taxAmountElement.classList.add("is-success");
- taxAmountElement.disabled = false;
- } else {
- taxPercentageElement.classList.add("is-success");
+ function doUpdateFeeCategory(submitEvent: SubmitEvent) {
+ submitEvent.preventDefault()
- taxAmountElement.classList.remove("is-success");
- taxAmountElement.disabled = true;
- }
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateFeeCategory',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ feeCategories: recordTypes.FeeCategory[]
+ }) => {
+ if (responseJSON.success) {
+ feeCategories = responseJSON.feeCategories
+ editCloseModalFunction()
+ renderFeeCategories()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating Fee Category',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
}
-
- function toggleQuantityFields() {
- const includeQuanitityValue = (
- editModalElement.querySelector("#feeEdit--includeQuantity") as HTMLSelectElement
- ).value;
-
- (editModalElement.querySelector("#feeEdit--quantityUnit") as HTMLInputElement).disabled =
- includeQuanitityValue === "";
- }
-
- cityssm.openHtmlModal("adminFees-editFee", {
- onshow(modalElement) {
- editModalElement = modalElement;
-
- (modalElement.querySelector("#feeEdit--feeId") as HTMLInputElement).value =
- fee.feeId.toString();
-
- const feeCategoryElement = modalElement.querySelector(
- "#feeEdit--feeCategoryId"
- ) as HTMLSelectElement;
-
- for (const feeCategory of feeCategories) {
- const optionElement = document.createElement("option");
- optionElement.value = feeCategory.feeCategoryId.toString();
- optionElement.textContent = feeCategory.feeCategory!;
-
- if (feeCategory.feeCategoryId === feeCategoryId) {
- optionElement.selected = true;
- }
-
- feeCategoryElement.append(optionElement);
- }
-
- (modalElement.querySelector("#feeEdit--feeName") as HTMLInputElement).value = fee.feeName!;
- (modalElement.querySelector("#feeEdit--feeDescription") as HTMLTextAreaElement).value =
- fee.feeDescription!;
-
- const occupancyTypeElement = modalElement.querySelector(
- "#feeEdit--occupancyTypeId"
- ) as HTMLSelectElement;
-
- for (const occupancyType of exports.occupancyTypes as recordTypes.OccupancyType[]) {
- const optionElement = document.createElement("option");
- optionElement.value = occupancyType.occupancyTypeId.toString();
- optionElement.textContent = occupancyType.occupancyType;
-
- if (occupancyType.occupancyTypeId === fee.occupancyTypeId) {
- optionElement.selected = true;
- }
-
- occupancyTypeElement.append(optionElement);
- }
-
- const lotTypeElement = modalElement.querySelector("#feeEdit--lotTypeId") as HTMLSelectElement;
-
- for (const lotType of exports.lotTypes as recordTypes.LotType[]) {
- const optionElement = document.createElement("option");
- optionElement.value = lotType.lotTypeId.toString();
- optionElement.textContent = lotType.lotType;
-
- if (lotType.lotTypeId === fee.lotTypeId) {
- optionElement.selected = true;
- }
-
- lotTypeElement.append(optionElement);
- }
-
- (modalElement.querySelector("#feeEdit--feeAmount") as HTMLInputElement).value = fee.feeAmount
- ? fee.feeAmount.toFixed(2)
- : "";
-
- modalElement
- .querySelector("#feeEdit--feeFunction")!
- .addEventListener("change", toggleFeeFields);
-
- toggleFeeFields();
-
- (modalElement.querySelector("#feeEdit--taxAmount") as HTMLInputElement).value = fee.taxAmount
- ? fee.taxAmount.toFixed(2)
- : "";
-
- const taxPercentageElement = modalElement.querySelector(
- "#feeEdit--taxPercentage"
- ) as HTMLInputElement;
- taxPercentageElement.value = fee.taxPercentage ? fee.taxPercentage.toString() : "";
- taxPercentageElement.addEventListener("keyup", toggleTaxFields);
-
- toggleTaxFields();
-
- const includeQuantityElement = modalElement.querySelector(
- "#feeEdit--includeQuantity"
- ) as HTMLSelectElement;
-
- if (fee.includeQuantity) {
- includeQuantityElement.value = "1";
- }
-
- includeQuantityElement.addEventListener("change", toggleQuantityFields);
-
- (modalElement.querySelector("#feeEdit--quantityUnit") as HTMLInputElement).value =
- fee.quantityUnit || "";
-
- toggleQuantityFields();
-
- if (fee.isRequired) {
- (modalElement.querySelector("#feeEdit--isRequired") as HTMLSelectElement).value = "1";
- }
-
- los.populateAliases(modalElement);
- },
- onshown(modalElement, closeModalFunction) {
- bulmaJS.toggleHtmlClipped();
-
- editCloseModalFunction = closeModalFunction;
-
- modalElement.querySelector("form")!.addEventListener("submit", doUpdateFee);
-
- bulmaJS.init(modalElement);
-
- modalElement.querySelector(".button--deleteFee")!.addEventListener("click", confirmDeleteFee);
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
- }
- });
+ )
}
- function moveFee(clickEvent: MouseEvent): void {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
+ cityssm.openHtmlModal('adminFees-editFeeCategory', {
+ onshow(modalElement) {
+ ;(
+ modalElement.querySelector(
+ '#feeCategoryEdit--feeCategoryId'
+ ) as HTMLInputElement
+ ).value = feeCategory.feeCategoryId!.toString()
+ ;(
+ modalElement.querySelector(
+ '#feeCategoryEdit--feeCategory'
+ ) as HTMLInputElement
+ ).value = feeCategory.feeCategory!
+ },
+ onshown(modalElement, closeModalFunction) {
+ bulmaJS.toggleHtmlClipped()
- const feeContainerElement = buttonElement.closest(".container--fee") as HTMLElement;
+ editCloseModalFunction = closeModalFunction
- const feeId = feeContainerElement.dataset.feeId!;
+ modalElement
+ .querySelector('form')!
+ .addEventListener('submit', doUpdateFeeCategory)
+ ;(
+ modalElement.querySelector(
+ '#feeCategoryEdit--feeCategory'
+ ) as HTMLInputElement
+ ).focus()
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ }
+
+ function confirmDeleteFeeCategory(clickEvent: Event): void {
+ const feeCategoryId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--feeCategory'
+ ) as HTMLElement
+ ).dataset.feeCategoryId!,
+ 10
+ )
+
+ function doDelete() {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteFeeCategory',
+ {
+ feeCategoryId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ feeCategories?: recordTypes.FeeCategory[]
+ }) => {
+ if (responseJSON.success) {
+ feeCategories = responseJSON.feeCategories!
+ renderFeeCategories()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating Fee Category',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: 'Delete Fee Category?',
+ message: 'Are you sure you want to delete this fee category?',
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete the Fee Category',
+ callbackFunction: doDelete
+ }
+ })
+ }
+
+ function moveFeeCategory(clickEvent: MouseEvent): void {
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
+
+ const feeCategoryId = (
+ buttonElement.closest('.container--feeCategory') as HTMLElement
+ ).dataset.feeCategoryId!
+
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveFeeCategoryUp'
+ : 'doMoveFeeCategoryDown'),
+ {
+ feeCategoryId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ feeCategories?: recordTypes.FeeCategory[]
+ }) => {
+ if (responseJSON.success) {
+ feeCategories = responseJSON.feeCategories!
+ renderFeeCategories()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Moving Fee Category',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ /*
+ * Fees
+ */
+
+ function openAddFee(clickEvent: Event): void {
+ const feeCategoryId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--feeCategory'
+ ) as HTMLElement
+ ).dataset.feeCategoryId!,
+ 10
+ )
+
+ let addCloseModalFunction: () => void
+
+ function doAddFee(submitEvent: SubmitEvent) {
+ submitEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddFee',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ feeCategories: recordTypes.FeeCategory[]
+ }) => {
+ if (responseJSON.success) {
+ feeCategories = responseJSON.feeCategories
+ addCloseModalFunction()
+ renderFeeCategories()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Adding Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ cityssm.openHtmlModal('adminFees-addFee', {
+ onshow(modalElement) {
+ const feeCategoryElement = modalElement.querySelector(
+ '#feeAdd--feeCategoryId'
+ ) as HTMLSelectElement
+
+ for (const feeCategory of feeCategories) {
+ const optionElement = document.createElement('option')
+ optionElement.value = feeCategory.feeCategoryId.toString()
+ optionElement.textContent = feeCategory.feeCategory!
+
+ if (feeCategory.feeCategoryId === feeCategoryId) {
+ optionElement.selected = true
+ }
+
+ feeCategoryElement.append(optionElement)
+ }
+
+ const occupancyTypeElement = modalElement.querySelector(
+ '#feeAdd--occupancyTypeId'
+ ) as HTMLSelectElement
+
+ for (const occupancyType of exports.occupancyTypes as recordTypes.OccupancyType[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = occupancyType.occupancyTypeId.toString()
+ optionElement.textContent = occupancyType.occupancyType
+ occupancyTypeElement.append(optionElement)
+ }
+
+ const lotTypeElement = modalElement.querySelector(
+ '#feeAdd--lotTypeId'
+ ) as HTMLSelectElement
+
+ for (const lotType of exports.lotTypes as recordTypes.LotType[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = lotType.lotTypeId.toString()
+ optionElement.textContent = lotType.lotType
+ lotTypeElement.append(optionElement)
+ }
+
+ ;(
+ modalElement.querySelector(
+ '#feeAdd--taxPercentage'
+ ) as HTMLInputElement
+ ).value = (exports.taxPercentageDefault as number).toString()
+
+ los.populateAliases(modalElement)
+ },
+ onshown(modalElement, closeModalFunction) {
+ bulmaJS.toggleHtmlClipped()
+
+ addCloseModalFunction = closeModalFunction
+
+ modalElement.querySelector('form')!.addEventListener('submit', doAddFee)
+
+ ;(
+ modalElement.querySelector('#feeAdd--feeName') as HTMLInputElement
+ ).focus()
+
+ ;(
+ modalElement.querySelector('#feeAdd--feeFunction') as HTMLInputElement
+ ).addEventListener('change', () => {
+ const feeAmountElement = modalElement.querySelector(
+ '#feeAdd--feeAmount'
+ ) as HTMLInputElement
+
+ const feeFunctionElement = modalElement.querySelector(
+ '#feeAdd--feeFunction'
+ ) as HTMLSelectElement
+
+ if (feeFunctionElement.value === '') {
+ feeFunctionElement
+ .closest('.select')!
+ .classList.remove('is-success')
+
+ feeAmountElement.classList.add('is-success')
+ feeAmountElement.disabled = false
+ } else {
+ feeFunctionElement.closest('.select')!.classList.add('is-success')
+
+ feeAmountElement.classList.remove('is-success')
+ feeAmountElement.disabled = true
+ }
+ })
+
+ modalElement
+ .querySelector('#feeAdd--taxPercentage')!
+ .addEventListener('keyup', () => {
+ const taxAmountElement = modalElement.querySelector(
+ '#feeAdd--taxAmount'
+ ) as HTMLInputElement
+
+ const taxPercentageElement = modalElement.querySelector(
+ '#feeAdd--taxPercentage'
+ ) as HTMLInputElement
+
+ if (taxPercentageElement.value === '') {
+ taxPercentageElement.classList.remove('is-success')
+
+ taxAmountElement.classList.add('is-success')
+ taxAmountElement.disabled = false
+ } else {
+ taxPercentageElement.classList.add('is-success')
+
+ taxAmountElement.classList.remove('is-success')
+ taxAmountElement.disabled = true
+ }
+ })
+
+ modalElement
+ .querySelector('#feeAdd--includeQuantity')!
+ .addEventListener('change', () => {
+ ;(
+ modalElement.querySelector(
+ '#feeAdd--quantityUnit'
+ ) as HTMLInputElement
+ ).disabled =
+ (
+ modalElement.querySelector(
+ '#feeAdd--includeQuantity'
+ ) as HTMLSelectElement
+ ).value === ''
+ })
+ },
+ onremoved() {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ }
+
+ function openEditFee(clickEvent: Event): void {
+ clickEvent.preventDefault()
+
+ const feeContainerElement = (
+ clickEvent.currentTarget as HTMLElement
+ ).closest('.container--fee') as HTMLElement
+
+ const feeId = Number.parseInt(feeContainerElement.dataset.feeId!, 10)
+ const feeCategoryId = Number.parseInt(
+ (feeContainerElement.closest('.container--feeCategory') as HTMLElement)
+ .dataset.feeCategoryId!
+ )
+
+ const feeCategory = feeCategories.find((currentFeeCategory) => {
+ return currentFeeCategory.feeCategoryId === feeCategoryId
+ })!
+
+ const fee = feeCategory.fees.find((currentFee) => {
+ return currentFee.feeId === feeId
+ })!
+
+ let editCloseModalFunction: () => void
+ let editModalElement: HTMLElement
+
+ function doUpdateFee(submitEvent: SubmitEvent) {
+ submitEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateFee',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ feeCategories?: recordTypes.FeeCategory[]
+ }) => {
+ if (responseJSON.success) {
+ feeCategories = responseJSON.feeCategories!
+ editCloseModalFunction()
+ renderFeeCategories()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ function confirmDeleteFee(clickEvent: Event) {
+ clickEvent.preventDefault()
+
+ const doDelete = () => {
cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveFeeUp" : "doMoveFeeDown"),
- {
- feeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- feeCategories?: recordTypes.FeeCategory[];
- }) => {
- if (responseJSON.success) {
- feeCategories = responseJSON.feeCategories!;
- renderFeeCategories();
- } else {
- bulmaJS.alert({
- title: "Error Moving Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
+ los.urlPrefix + '/admin/doDeleteFee',
+ {
+ feeId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ feeCategories?: recordTypes.FeeCategory[]
+ }) => {
+ if (responseJSON.success) {
+ feeCategories = responseJSON.feeCategories!
+ editCloseModalFunction()
+ renderFeeCategories()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Deleting Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- );
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: 'Delete Fee?',
+ message: 'Are you sure you want to delete this fee?',
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete the Fee',
+ callbackFunction: doDelete
+ }
+ })
}
- /*
- * Initialize
- */
+ function toggleFeeFields() {
+ const feeAmountElement = editModalElement.querySelector(
+ '#feeEdit--feeAmount'
+ ) as HTMLInputElement
- renderFeeCategories();
-})();
+ const feeFunctionElement = editModalElement.querySelector(
+ '#feeEdit--feeFunction'
+ ) as HTMLSelectElement
+
+ if (feeFunctionElement.value === '') {
+ feeFunctionElement.closest('.select')!.classList.remove('is-success')
+
+ feeAmountElement.classList.add('is-success')
+ feeAmountElement.disabled = false
+ } else {
+ feeFunctionElement.closest('.select')!.classList.add('is-success')
+
+ feeAmountElement.classList.remove('is-success')
+ feeAmountElement.disabled = true
+ }
+ }
+
+ function toggleTaxFields() {
+ const taxAmountElement = editModalElement.querySelector(
+ '#feeEdit--taxAmount'
+ ) as HTMLInputElement
+
+ const taxPercentageElement = editModalElement.querySelector(
+ '#feeEdit--taxPercentage'
+ ) as HTMLInputElement
+
+ if (taxPercentageElement.value === '') {
+ taxPercentageElement.classList.remove('is-success')
+
+ taxAmountElement.classList.add('is-success')
+ taxAmountElement.disabled = false
+ } else {
+ taxPercentageElement.classList.add('is-success')
+
+ taxAmountElement.classList.remove('is-success')
+ taxAmountElement.disabled = true
+ }
+ }
+
+ function toggleQuantityFields() {
+ const includeQuanitityValue = (
+ editModalElement.querySelector(
+ '#feeEdit--includeQuantity'
+ ) as HTMLSelectElement
+ ).value
+
+ ;(
+ editModalElement.querySelector(
+ '#feeEdit--quantityUnit'
+ ) as HTMLInputElement
+ ).disabled = includeQuanitityValue === ''
+ }
+
+ cityssm.openHtmlModal('adminFees-editFee', {
+ onshow(modalElement) {
+ editModalElement = modalElement
+
+ ;(
+ modalElement.querySelector('#feeEdit--feeId') as HTMLInputElement
+ ).value = fee.feeId.toString()
+
+ const feeCategoryElement = modalElement.querySelector(
+ '#feeEdit--feeCategoryId'
+ ) as HTMLSelectElement
+
+ for (const feeCategory of feeCategories) {
+ const optionElement = document.createElement('option')
+ optionElement.value = feeCategory.feeCategoryId.toString()
+ optionElement.textContent = feeCategory.feeCategory!
+
+ if (feeCategory.feeCategoryId === feeCategoryId) {
+ optionElement.selected = true
+ }
+
+ feeCategoryElement.append(optionElement)
+ }
+
+ ;(
+ modalElement.querySelector('#feeEdit--feeName') as HTMLInputElement
+ ).value = fee.feeName!
+ ;(
+ modalElement.querySelector(
+ '#feeEdit--feeDescription'
+ ) as HTMLTextAreaElement
+ ).value = fee.feeDescription!
+
+ const occupancyTypeElement = modalElement.querySelector(
+ '#feeEdit--occupancyTypeId'
+ ) as HTMLSelectElement
+
+ for (const occupancyType of exports.occupancyTypes as recordTypes.OccupancyType[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = occupancyType.occupancyTypeId.toString()
+ optionElement.textContent = occupancyType.occupancyType
+
+ if (occupancyType.occupancyTypeId === fee.occupancyTypeId) {
+ optionElement.selected = true
+ }
+
+ occupancyTypeElement.append(optionElement)
+ }
+
+ const lotTypeElement = modalElement.querySelector(
+ '#feeEdit--lotTypeId'
+ ) as HTMLSelectElement
+
+ for (const lotType of exports.lotTypes as recordTypes.LotType[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = lotType.lotTypeId.toString()
+ optionElement.textContent = lotType.lotType
+
+ if (lotType.lotTypeId === fee.lotTypeId) {
+ optionElement.selected = true
+ }
+
+ lotTypeElement.append(optionElement)
+ }
+
+ ;(
+ modalElement.querySelector('#feeEdit--feeAmount') as HTMLInputElement
+ ).value = fee.feeAmount ? fee.feeAmount.toFixed(2) : ''
+
+ modalElement
+ .querySelector('#feeEdit--feeFunction')!
+ .addEventListener('change', toggleFeeFields)
+
+ toggleFeeFields()
+
+ ;(
+ modalElement.querySelector('#feeEdit--taxAmount') as HTMLInputElement
+ ).value = fee.taxAmount ? fee.taxAmount.toFixed(2) : ''
+
+ const taxPercentageElement = modalElement.querySelector(
+ '#feeEdit--taxPercentage'
+ ) as HTMLInputElement
+ taxPercentageElement.value = fee.taxPercentage
+ ? fee.taxPercentage.toString()
+ : ''
+ taxPercentageElement.addEventListener('keyup', toggleTaxFields)
+
+ toggleTaxFields()
+
+ const includeQuantityElement = modalElement.querySelector(
+ '#feeEdit--includeQuantity'
+ ) as HTMLSelectElement
+
+ if (fee.includeQuantity) {
+ includeQuantityElement.value = '1'
+ }
+
+ includeQuantityElement.addEventListener('change', toggleQuantityFields)
+
+ ;(
+ modalElement.querySelector(
+ '#feeEdit--quantityUnit'
+ ) as HTMLInputElement
+ ).value = fee.quantityUnit || ''
+
+ toggleQuantityFields()
+
+ if (fee.isRequired) {
+ ;(
+ modalElement.querySelector(
+ '#feeEdit--isRequired'
+ ) as HTMLSelectElement
+ ).value = '1'
+ }
+
+ los.populateAliases(modalElement)
+ },
+ onshown(modalElement, closeModalFunction) {
+ bulmaJS.toggleHtmlClipped()
+
+ editCloseModalFunction = closeModalFunction
+
+ modalElement
+ .querySelector('form')!
+ .addEventListener('submit', doUpdateFee)
+
+ bulmaJS.init(modalElement)
+
+ modalElement
+ .querySelector('.button--deleteFee')!
+ .addEventListener('click', confirmDeleteFee)
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ }
+
+ function moveFee(clickEvent: MouseEvent): void {
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
+
+ const feeContainerElement = buttonElement.closest(
+ '.container--fee'
+ ) as HTMLElement
+
+ const feeId = feeContainerElement.dataset.feeId!
+
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveFeeUp'
+ : 'doMoveFeeDown'),
+ {
+ feeId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ feeCategories?: recordTypes.FeeCategory[]
+ }) => {
+ if (responseJSON.success) {
+ feeCategories = responseJSON.feeCategories!
+ renderFeeCategories()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Moving Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ /*
+ * Initialize
+ */
+
+ renderFeeCategories()
+})()
diff --git a/public-typescript/adminLotTypes.js b/public-typescript/adminLotTypes.js
index 07758065..1761c6bb 100644
--- a/public-typescript/adminLotTypes.js
+++ b/public-typescript/adminLotTypes.js
@@ -3,13 +3,13 @@
Object.defineProperty(exports, "__esModule", { value: true });
(() => {
const los = exports.los;
- const containerElement = document.querySelector("#container--lotTypes");
+ const containerElement = document.querySelector('#container--lotTypes');
let lotTypes = exports.lotTypes;
delete exports.lotTypes;
const expandedLotTypes = new Set();
function toggleLotTypeFields(clickEvent) {
const toggleButtonElement = clickEvent.currentTarget;
- const lotTypeElement = toggleButtonElement.closest(".container--lotType");
+ const lotTypeElement = toggleButtonElement.closest('.container--lotType');
const lotTypeId = Number.parseInt(lotTypeElement.dataset.lotTypeId, 10);
if (expandedLotTypes.has(lotTypeId)) {
expandedLotTypes.delete(lotTypeId);
@@ -20,9 +20,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
toggleButtonElement.innerHTML = expandedLotTypes.has(lotTypeId)
? '
'
: '
';
- const panelBlockElements = lotTypeElement.querySelectorAll(".panel-block");
+ const panelBlockElements = lotTypeElement.querySelectorAll('.panel-block');
for (const panelBlockElement of panelBlockElements) {
- panelBlockElement.classList.toggle("is-hidden");
+ panelBlockElement.classList.toggle('is-hidden');
}
}
function lotTypeResponseHandler(responseJSON) {
@@ -33,23 +33,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
else {
bulmaJS.alert({
title: `Error Updating ${exports.aliases.lot} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
}
function deleteLotType(clickEvent) {
- const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--lotType").dataset
- .lotTypeId, 10);
+ const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId, 10);
function doDelete() {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotType", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteLotType', {
lotTypeId
}, lotTypeResponseHandler);
}
bulmaJS.confirm({
title: `Delete ${exports.aliases.lot} Type`,
message: `Are you sure you want to delete this ${exports.aliases.lot.toLowerCase()} type?`,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
text: `Yes, Delete ${exports.aliases.lot} Type`,
callbackFunction: doDelete
@@ -57,33 +56,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
function openEditLotType(clickEvent) {
- const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--lotType").dataset
- .lotTypeId, 10);
+ const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId, 10);
const lotType = lotTypes.find((currentLotType) => {
return lotTypeId === currentLotType.lotTypeId;
});
let editCloseModalFunction;
const doEdit = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateLotType', submitEvent.currentTarget, (responseJSON) => {
lotTypeResponseHandler(responseJSON);
if (responseJSON.success) {
editCloseModalFunction();
}
});
};
- cityssm.openHtmlModal("adminLotTypes-editLotType", {
+ cityssm.openHtmlModal('adminLotTypes-editLotType', {
onshow(modalElement) {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotTypeEdit--lotTypeId").value =
- lotTypeId.toString();
- modalElement.querySelector("#lotTypeEdit--lotType").value =
- lotType.lotType;
+ modalElement.querySelector('#lotTypeEdit--lotTypeId').value = lotTypeId.toString();
+ modalElement.querySelector('#lotTypeEdit--lotType').value = lotType.lotType;
},
onshown(modalElement, closeModalFunction) {
editCloseModalFunction = closeModalFunction;
- modalElement.querySelector("#lotTypeEdit--lotType").focus();
- modalElement.querySelector("form").addEventListener("submit", doEdit);
+ modalElement.querySelector('#lotTypeEdit--lotType').focus();
+ modalElement.querySelector('form').addEventListener('submit', doEdit);
bulmaJS.toggleHtmlClipped();
},
onremoved() {
@@ -92,12 +88,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
function openAddLotTypeField(clickEvent) {
- const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--lotType").dataset
- .lotTypeId, 10);
+ const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId, 10);
let addCloseModalFunction;
const doAdd = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doAddLotTypeField", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddLotTypeField', submitEvent.currentTarget, (responseJSON) => {
expandedLotTypes.add(lotTypeId);
lotTypeResponseHandler(responseJSON);
if (responseJSON.success) {
@@ -106,18 +101,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
});
};
- cityssm.openHtmlModal("adminLotTypes-addLotTypeField", {
+ cityssm.openHtmlModal('adminLotTypes-addLotTypeField', {
onshow(modalElement) {
los.populateAliases(modalElement);
if (lotTypeId) {
- modalElement.querySelector("#lotTypeFieldAdd--lotTypeId").value =
- lotTypeId.toString();
+ ;
+ modalElement.querySelector('#lotTypeFieldAdd--lotTypeId').value = lotTypeId.toString();
}
},
onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction;
- modalElement.querySelector("#lotTypeFieldAdd--lotTypeField").focus();
- modalElement.querySelector("form").addEventListener("submit", doAdd);
+ modalElement.querySelector('#lotTypeFieldAdd--lotTypeField').focus();
+ modalElement.querySelector('form').addEventListener('submit', doAdd);
bulmaJS.toggleHtmlClipped();
},
onremoved() {
@@ -127,12 +122,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function moveLotType(clickEvent) {
const buttonElement = clickEvent.currentTarget;
- const lotTypeId = buttonElement.closest(".container--lotType").dataset.lotTypeId;
+ const lotTypeId = buttonElement.closest('.container--lotType').dataset.lotTypeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveLotTypeUp" : "doMoveLotTypeDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveLotTypeUp'
+ : 'doMoveLotTypeDown'), {
lotTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, lotTypeResponseHandler);
}
function openEditLotTypeField(lotTypeId, lotTypeFieldId) {
@@ -151,7 +148,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
maximumLengthElement.min = minimumLengthElement.value;
}
function toggleInputFields() {
- if (lotTypeFieldValuesElement.value === "") {
+ if (lotTypeFieldValuesElement.value === '') {
minimumLengthElement.disabled = false;
maximumLengthElement.disabled = false;
patternElement.disabled = false;
@@ -164,7 +161,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function doUpdate(submitEvent) {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotTypeField", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateLotTypeField', submitEvent.currentTarget, (responseJSON) => {
lotTypeResponseHandler(responseJSON);
if (responseJSON.success) {
editCloseModalFunction();
@@ -172,7 +169,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
function doDelete() {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotTypeField", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteLotTypeField', {
lotTypeFieldId
}, (responseJSON) => {
lotTypeResponseHandler(responseJSON);
@@ -183,31 +180,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function confirmDoDelete() {
bulmaJS.confirm({
- title: "Delete Field",
- message: "Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",
- contextualColorName: "warning",
+ title: 'Delete Field',
+ message: 'Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Field",
+ text: 'Yes, Delete Field',
callbackFunction: doDelete
}
});
}
- cityssm.openHtmlModal("adminLotTypes-editLotTypeField", {
+ cityssm.openHtmlModal('adminLotTypes-editLotTypeField', {
onshow(modalElement) {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotTypeFieldEdit--lotTypeFieldId").value =
- lotTypeField.lotTypeFieldId.toString();
- modalElement.querySelector("#lotTypeFieldEdit--lotTypeField").value =
- lotTypeField.lotTypeField;
- modalElement.querySelector("#lotTypeFieldEdit--isRequired").value =
- lotTypeField.isRequired ? "1" : "0";
- minimumLengthElement = modalElement.querySelector("#lotTypeFieldEdit--minimumLength");
+ modalElement.querySelector('#lotTypeFieldEdit--lotTypeFieldId').value = lotTypeField.lotTypeFieldId.toString();
+ modalElement.querySelector('#lotTypeFieldEdit--lotTypeField').value = lotTypeField.lotTypeField;
+ modalElement.querySelector('#lotTypeFieldEdit--isRequired').value = lotTypeField.isRequired ? '1' : '0';
+ minimumLengthElement = modalElement.querySelector('#lotTypeFieldEdit--minimumLength');
minimumLengthElement.value = lotTypeField.minimumLength.toString();
- maximumLengthElement = modalElement.querySelector("#lotTypeFieldEdit--maximumLength");
+ maximumLengthElement = modalElement.querySelector('#lotTypeFieldEdit--maximumLength');
maximumLengthElement.value = lotTypeField.maximumLength.toString();
- patternElement = modalElement.querySelector("#lotTypeFieldEdit--pattern");
+ patternElement = modalElement.querySelector('#lotTypeFieldEdit--pattern');
patternElement.value = lotTypeField.pattern;
- lotTypeFieldValuesElement = modalElement.querySelector("#lotTypeFieldEdit--lotTypeFieldValues");
+ lotTypeFieldValuesElement = modalElement.querySelector('#lotTypeFieldEdit--lotTypeFieldValues');
lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues;
toggleInputFields();
},
@@ -216,13 +210,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
bulmaJS.init(modalElement);
bulmaJS.toggleHtmlClipped();
cityssm.enableNavBlocker();
- modalElement.querySelector("form").addEventListener("submit", doUpdate);
- minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin);
+ modalElement.querySelector('form').addEventListener('submit', doUpdate);
+ minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin);
updateMaximumLengthMin();
- lotTypeFieldValuesElement.addEventListener("keyup", toggleInputFields);
+ lotTypeFieldValuesElement.addEventListener('keyup', toggleInputFields);
modalElement
- .querySelector("#button--deleteLotTypeField")
- .addEventListener("click", confirmDoDelete);
+ .querySelector('#button--deleteLotTypeField')
+ .addEventListener('click', confirmDoDelete);
},
onremoved() {
bulmaJS.toggleHtmlClipped();
@@ -232,78 +226,77 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function openEditLotTypeFieldByClick(clickEvent) {
clickEvent.preventDefault();
- const lotTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest(".container--lotTypeField")
- .dataset.lotTypeFieldId, 10);
- const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--lotType").dataset
- .lotTypeId, 10);
+ const lotTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotTypeField').dataset.lotTypeFieldId, 10);
+ const lotTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--lotType').dataset.lotTypeId, 10);
openEditLotTypeField(lotTypeId, lotTypeFieldId);
}
function moveLotTypeField(clickEvent) {
const buttonElement = clickEvent.currentTarget;
- const lotTypeFieldId = buttonElement.closest(".container--lotTypeField").dataset
- .lotTypeFieldId;
+ const lotTypeFieldId = buttonElement.closest('.container--lotTypeField').dataset.lotTypeFieldId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveLotTypeFieldUp"
- : "doMoveLotTypeFieldDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveLotTypeFieldUp'
+ : 'doMoveLotTypeFieldDown'), {
lotTypeFieldId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, lotTypeResponseHandler);
}
function renderLotTypeFields(panelElement, lotTypeId, lotTypeFields) {
if (lotTypeFields.length === 0) {
- panelElement.insertAdjacentHTML("beforeend", '
' +
'
' +
'
There are no additional fields.
' +
- "
" +
- "
");
+ '
' +
+ '');
}
else {
for (const lotTypeField of lotTypeFields) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--lotTypeField";
+ const panelBlockElement = document.createElement('div');
+ panelBlockElement.className =
+ 'panel-block is-block container--lotTypeField';
if (!expandedLotTypes.has(lotTypeId)) {
- panelBlockElement.classList.add("is-hidden");
+ panelBlockElement.classList.add('is-hidden');
}
- panelBlockElement.dataset.lotTypeFieldId = lotTypeField.lotTypeFieldId.toString();
+ panelBlockElement.dataset.lotTypeFieldId =
+ lotTypeField.lotTypeFieldId.toString();
panelBlockElement.innerHTML =
'' +
'
" +
+ cityssm.escapeHTML(lotTypeField.lotTypeField || '') +
+ '' +
+ '
') +
+ '' +
'' +
('
' +
- los.getMoveUpDownButtonFieldHTML("button--moveLotTypeFieldUp", "button--moveLotTypeFieldDown") +
- "
") +
- "
" +
- "";
+ los.getMoveUpDownButtonFieldHTML('button--moveLotTypeFieldUp', 'button--moveLotTypeFieldDown') +
+ '') +
+ '' +
+ '';
panelBlockElement
- .querySelector(".button--editLotTypeField")
- .addEventListener("click", openEditLotTypeFieldByClick);
- panelBlockElement.querySelector(".button--moveLotTypeFieldUp").addEventListener("click", moveLotTypeField);
- panelBlockElement.querySelector(".button--moveLotTypeFieldDown").addEventListener("click", moveLotTypeField);
+ .querySelector('.button--editLotTypeField')
+ .addEventListener('click', openEditLotTypeFieldByClick);
+ panelBlockElement.querySelector('.button--moveLotTypeFieldUp').addEventListener('click', moveLotTypeField);
+ panelBlockElement.querySelector('.button--moveLotTypeFieldDown').addEventListener('click', moveLotTypeField);
panelElement.append(panelBlockElement);
}
}
}
function renderLotTypes() {
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
if (lotTypes.length === 0) {
- containerElement.insertAdjacentHTML("afterbegin", `
There are no active ${los.escapedAliases.lot} types.
`);
return;
}
for (const lotType of lotTypes) {
- const lotTypeContainer = document.createElement("div");
- lotTypeContainer.className = "panel container--lotType";
+ const lotTypeContainer = document.createElement('div');
+ lotTypeContainer.className = 'panel container--lotType';
lotTypeContainer.dataset.lotTypeId = lotType.lotTypeId.toString();
lotTypeContainer.innerHTML =
'' +
@@ -314,64 +307,66 @@ Object.defineProperty(exports, "__esModule", { value: true });
(expandedLotTypes.has(lotType.lotTypeId)
? ' '
: ' ') +
- "" +
- "
" +
+ '' +
+ '' +
'' +
'
' +
cityssm.escapeHTML(lotType.lotType) +
- " " +
- "
" +
- "") +
+ '' +
+ '' +
+ '') +
('' +
('
' +
'' +
' ' +
- "Delete " +
- " " +
- "
") +
+ '
Delete ' +
+ '' +
+ '
') +
('' +
'' +
' ' +
- "Edit " +
+ 'Edit ' +
exports.aliases.lot +
- " Type " +
- " " +
- "
") +
+ ' Type' +
+ '' +
+ '') +
('' +
'' +
' ' +
- "Add Field " +
- " " +
- "
") +
+ 'Add Field ' +
+ '' +
+ '') +
('' +
- los.getMoveUpDownButtonFieldHTML("button--moveLotTypeUp", "button--moveLotTypeDown") +
- "
") +
- "") +
- "" +
- "";
+ los.getMoveUpDownButtonFieldHTML('button--moveLotTypeUp', 'button--moveLotTypeDown') +
+ '') +
+ '') +
+ '' +
+ '';
renderLotTypeFields(lotTypeContainer, lotType.lotTypeId, lotType.lotTypeFields);
lotTypeContainer
- .querySelector(".button--toggleLotTypeFields")
- .addEventListener("click", toggleLotTypeFields);
+ .querySelector('.button--toggleLotTypeFields')
+ .addEventListener('click', toggleLotTypeFields);
lotTypeContainer
- .querySelector(".button--deleteLotType")
- .addEventListener("click", deleteLotType);
+ .querySelector('.button--deleteLotType')
+ .addEventListener('click', deleteLotType);
lotTypeContainer
- .querySelector(".button--editLotType")
- .addEventListener("click", openEditLotType);
+ .querySelector('.button--editLotType')
+ .addEventListener('click', openEditLotType);
lotTypeContainer
- .querySelector(".button--addLotTypeField")
- .addEventListener("click", openAddLotTypeField);
- lotTypeContainer.querySelector(".button--moveLotTypeUp").addEventListener("click", moveLotType);
- lotTypeContainer.querySelector(".button--moveLotTypeDown").addEventListener("click", moveLotType);
+ .querySelector('.button--addLotTypeField')
+ .addEventListener('click', openAddLotTypeField);
+ lotTypeContainer.querySelector('.button--moveLotTypeUp').addEventListener('click', moveLotType);
+ lotTypeContainer.querySelector('.button--moveLotTypeDown').addEventListener('click', moveLotType);
containerElement.append(lotTypeContainer);
}
}
- document.querySelector("#button--addLotType").addEventListener("click", () => {
+ document
+ .querySelector('#button--addLotType')
+ .addEventListener('click', () => {
let addCloseModalFunction;
function doAdd(submitEvent) {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doAddLotType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddLotType', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
addCloseModalFunction();
lotTypes = responseJSON.lotTypes;
@@ -380,20 +375,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
else {
bulmaJS.alert({
title: `Error Adding ${los.escapedAliases.Lot} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
}
- cityssm.openHtmlModal("adminLotTypes-addLotType", {
+ cityssm.openHtmlModal('adminLotTypes-addLotType', {
onshow(modalElement) {
los.populateAliases(modalElement);
},
onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction;
- modalElement.querySelector("#lotTypeAdd--lotType").focus();
- modalElement.querySelector("form").addEventListener("submit", doAdd);
+ modalElement.querySelector('#lotTypeAdd--lotType').focus();
+ modalElement.querySelector('form').addEventListener('submit', doAdd);
bulmaJS.toggleHtmlClipped();
},
onremoved() {
diff --git a/public-typescript/adminLotTypes.ts b/public-typescript/adminLotTypes.ts
index 38b062b9..0a77af57 100644
--- a/public-typescript/adminLotTypes.ts
+++ b/public-typescript/adminLotTypes.ts
@@ -1,614 +1,688 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../types/globalTypes";
-import type * as recordTypes from "../types/recordTypes";
+import type * as globalTypes from '../types/globalTypes'
+import type * as recordTypes from '../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-(() => {
- const los = exports.los as globalTypes.LOS;
+;(() => {
+ const los = exports.los as globalTypes.LOS
- const containerElement = document.querySelector("#container--lotTypes") as HTMLElement;
+ const containerElement = document.querySelector(
+ '#container--lotTypes'
+ ) as HTMLElement
- let lotTypes: recordTypes.LotType[] = exports.lotTypes;
- delete exports.lotTypes;
+ let lotTypes: recordTypes.LotType[] = exports.lotTypes
+ delete exports.lotTypes
- const expandedLotTypes = new Set();
+ const expandedLotTypes = new Set()
- function toggleLotTypeFields(clickEvent: Event) {
- const toggleButtonElement = clickEvent.currentTarget as HTMLButtonElement;
+ function toggleLotTypeFields(clickEvent: Event) {
+ const toggleButtonElement = clickEvent.currentTarget as HTMLButtonElement
- const lotTypeElement = toggleButtonElement.closest(".container--lotType") as HTMLElement;
+ const lotTypeElement = toggleButtonElement.closest(
+ '.container--lotType'
+ ) as HTMLElement
- const lotTypeId = Number.parseInt(lotTypeElement.dataset.lotTypeId!, 10);
+ const lotTypeId = Number.parseInt(lotTypeElement.dataset.lotTypeId!, 10)
- if (expandedLotTypes.has(lotTypeId)) {
- expandedLotTypes.delete(lotTypeId);
- } else {
- expandedLotTypes.add(lotTypeId);
- }
-
- toggleButtonElement.innerHTML = expandedLotTypes.has(lotTypeId)
- ? ' '
- : ' ';
-
- const panelBlockElements = lotTypeElement.querySelectorAll(".panel-block");
-
- for (const panelBlockElement of panelBlockElements) {
- panelBlockElement.classList.toggle("is-hidden");
- }
+ if (expandedLotTypes.has(lotTypeId)) {
+ expandedLotTypes.delete(lotTypeId)
+ } else {
+ expandedLotTypes.add(lotTypeId)
}
- function lotTypeResponseHandler(responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotTypes?: recordTypes.LotType[];
- }) {
- if (responseJSON.success) {
- lotTypes = responseJSON.lotTypes!;
- renderLotTypes();
- } else {
- bulmaJS.alert({
- title: `Error Updating ${exports.aliases.lot} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
+ toggleButtonElement.innerHTML = expandedLotTypes.has(lotTypeId)
+ ? ' '
+ : ' '
+
+ const panelBlockElements = lotTypeElement.querySelectorAll('.panel-block')
+
+ for (const panelBlockElement of panelBlockElements) {
+ panelBlockElement.classList.toggle('is-hidden')
+ }
+ }
+
+ function lotTypeResponseHandler(responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotTypes?: recordTypes.LotType[]
+ }) {
+ if (responseJSON.success) {
+ lotTypes = responseJSON.lotTypes!
+ renderLotTypes()
+ } else {
+ bulmaJS.alert({
+ title: `Error Updating ${exports.aliases.lot} Type`,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+
+ function deleteLotType(clickEvent: Event) {
+ const lotTypeId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--lotType'
+ ) as HTMLElement
+ ).dataset.lotTypeId!,
+ 10
+ )
+
+ function doDelete() {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteLotType',
+ {
+ lotTypeId
+ },
+ lotTypeResponseHandler
+ )
}
- function deleteLotType(clickEvent: Event) {
- const lotTypeId = Number.parseInt(
- ((clickEvent.currentTarget as HTMLElement).closest(".container--lotType") as HTMLElement).dataset
- .lotTypeId!,
- 10
- );
+ bulmaJS.confirm({
+ title: `Delete ${exports.aliases.lot} Type`,
+ message: `Are you sure you want to delete this ${exports.aliases.lot.toLowerCase()} type?`,
+ contextualColorName: 'warning',
+ okButton: {
+ text: `Yes, Delete ${exports.aliases.lot} Type`,
+ callbackFunction: doDelete
+ }
+ })
+ }
- function doDelete() {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteLotType",
- {
- lotTypeId
- },
- lotTypeResponseHandler
- );
+ function openEditLotType(clickEvent: Event) {
+ const lotTypeId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--lotType'
+ ) as HTMLElement
+ ).dataset.lotTypeId!,
+ 10
+ )
+
+ const lotType = lotTypes.find((currentLotType) => {
+ return lotTypeId === currentLotType.lotTypeId
+ })!
+
+ let editCloseModalFunction: () => void
+
+ const doEdit = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateLotType',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ occupancyTypes?: recordTypes.OccupancyType[]
+ }) => {
+ lotTypeResponseHandler(responseJSON)
+ if (responseJSON.success) {
+ editCloseModalFunction()
+ }
+ }
+ )
+ }
+
+ cityssm.openHtmlModal('adminLotTypes-editLotType', {
+ onshow(modalElement) {
+ los.populateAliases(modalElement)
+
+ ;(
+ modalElement.querySelector(
+ '#lotTypeEdit--lotTypeId'
+ ) as HTMLInputElement
+ ).value = lotTypeId.toString()
+
+ ;(
+ modalElement.querySelector(
+ '#lotTypeEdit--lotType'
+ ) as HTMLInputElement
+ ).value = lotType.lotType
+ },
+ onshown(modalElement, closeModalFunction) {
+ editCloseModalFunction = closeModalFunction
+
+ ;(
+ modalElement.querySelector(
+ '#lotTypeEdit--lotType'
+ ) as HTMLInputElement
+ ).focus()
+
+ modalElement.querySelector('form')!.addEventListener('submit', doEdit)
+
+ bulmaJS.toggleHtmlClipped()
+ },
+ onremoved() {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ }
+
+ function openAddLotTypeField(clickEvent: Event) {
+ const lotTypeId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--lotType'
+ ) as HTMLElement
+ ).dataset.lotTypeId!,
+ 10
+ )
+
+ let addCloseModalFunction: () => void
+
+ const doAdd = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddLotTypeField',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotTypes?: recordTypes.LotType[]
+ lotTypeFieldId?: number
+ }) => {
+ expandedLotTypes.add(lotTypeId)
+ lotTypeResponseHandler(responseJSON)
+
+ if (responseJSON.success) {
+ addCloseModalFunction()
+ openEditLotTypeField(lotTypeId, responseJSON.lotTypeFieldId!)
+ }
+ }
+ )
+ }
+
+ cityssm.openHtmlModal('adminLotTypes-addLotTypeField', {
+ onshow(modalElement) {
+ los.populateAliases(modalElement)
+
+ if (lotTypeId) {
+ ;(
+ modalElement.querySelector(
+ '#lotTypeFieldAdd--lotTypeId'
+ ) as HTMLInputElement
+ ).value = lotTypeId.toString()
+ }
+ },
+ onshown(modalElement, closeModalFunction) {
+ addCloseModalFunction = closeModalFunction
+
+ ;(
+ modalElement.querySelector(
+ '#lotTypeFieldAdd--lotTypeField'
+ ) as HTMLInputElement
+ ).focus()
+
+ modalElement.querySelector('form')!.addEventListener('submit', doAdd)
+
+ bulmaJS.toggleHtmlClipped()
+ },
+ onremoved() {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ }
+
+ function moveLotType(clickEvent: MouseEvent) {
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
+
+ const lotTypeId = (
+ buttonElement.closest('.container--lotType') as HTMLElement
+ ).dataset.lotTypeId
+
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveLotTypeUp'
+ : 'doMoveLotTypeDown'),
+ {
+ lotTypeId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ lotTypeResponseHandler
+ )
+ }
+
+ function openEditLotTypeField(lotTypeId: number, lotTypeFieldId: number) {
+ const lotType = lotTypes.find((currentLotType) => {
+ return currentLotType.lotTypeId === lotTypeId
+ })!
+
+ const lotTypeField = lotType.lotTypeFields!.find((currentLotTypeField) => {
+ return currentLotTypeField.lotTypeFieldId === lotTypeFieldId
+ })!
+
+ let minimumLengthElement: HTMLInputElement
+ let maximumLengthElement: HTMLInputElement
+ let patternElement: HTMLInputElement
+ let lotTypeFieldValuesElement: HTMLTextAreaElement
+
+ let editCloseModalFunction: () => void
+
+ function updateMaximumLengthMin() {
+ maximumLengthElement.min = minimumLengthElement.value
+ }
+
+ function toggleInputFields() {
+ if (lotTypeFieldValuesElement.value === '') {
+ minimumLengthElement.disabled = false
+ maximumLengthElement.disabled = false
+ patternElement.disabled = false
+ } else {
+ minimumLengthElement.disabled = true
+ maximumLengthElement.disabled = true
+ patternElement.disabled = true
+ }
+ }
+
+ function doUpdate(submitEvent: SubmitEvent) {
+ submitEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateLotTypeField',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ occupancyTypes?: recordTypes.OccupancyType[]
+ }) => {
+ lotTypeResponseHandler(responseJSON)
+ if (responseJSON.success) {
+ editCloseModalFunction()
+ }
+ }
+ )
+ }
+
+ function doDelete() {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteLotTypeField',
+ {
+ lotTypeFieldId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotTypes?: recordTypes.LotType[]
+ }) => {
+ lotTypeResponseHandler(responseJSON)
+ if (responseJSON.success) {
+ editCloseModalFunction()
+ }
+ }
+ )
+ }
+
+ function confirmDoDelete() {
+ bulmaJS.confirm({
+ title: 'Delete Field',
+ message:
+ 'Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.',
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete Field',
+ callbackFunction: doDelete
+ }
+ })
+ }
+
+ cityssm.openHtmlModal('adminLotTypes-editLotTypeField', {
+ onshow(modalElement) {
+ los.populateAliases(modalElement)
+
+ ;(
+ modalElement.querySelector(
+ '#lotTypeFieldEdit--lotTypeFieldId'
+ ) as HTMLInputElement
+ ).value = lotTypeField.lotTypeFieldId.toString()
+
+ ;(
+ modalElement.querySelector(
+ '#lotTypeFieldEdit--lotTypeField'
+ ) as HTMLInputElement
+ ).value = lotTypeField.lotTypeField!
+
+ ;(
+ modalElement.querySelector(
+ '#lotTypeFieldEdit--isRequired'
+ ) as HTMLSelectElement
+ ).value = lotTypeField.isRequired ? '1' : '0'
+
+ minimumLengthElement = modalElement.querySelector(
+ '#lotTypeFieldEdit--minimumLength'
+ ) as HTMLInputElement
+
+ minimumLengthElement.value = lotTypeField.minimumLength!.toString()
+
+ maximumLengthElement = modalElement.querySelector(
+ '#lotTypeFieldEdit--maximumLength'
+ ) as HTMLInputElement
+
+ maximumLengthElement.value = lotTypeField.maximumLength!.toString()
+
+ patternElement = modalElement.querySelector(
+ '#lotTypeFieldEdit--pattern'
+ ) as HTMLInputElement
+
+ patternElement.value = lotTypeField.pattern!
+
+ lotTypeFieldValuesElement = modalElement.querySelector(
+ '#lotTypeFieldEdit--lotTypeFieldValues'
+ ) as HTMLTextAreaElement
+
+ lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues!
+
+ toggleInputFields()
+ },
+ onshown(modalElement, closeModalFunction) {
+ editCloseModalFunction = closeModalFunction
+
+ bulmaJS.init(modalElement)
+ bulmaJS.toggleHtmlClipped()
+ cityssm.enableNavBlocker()
+
+ modalElement.querySelector('form')!.addEventListener('submit', doUpdate)
+
+ minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin)
+ updateMaximumLengthMin()
+
+ lotTypeFieldValuesElement.addEventListener('keyup', toggleInputFields)
+
+ modalElement
+ .querySelector('#button--deleteLotTypeField')!
+ .addEventListener('click', confirmDoDelete)
+ },
+ onremoved() {
+ bulmaJS.toggleHtmlClipped()
+ cityssm.disableNavBlocker()
+ }
+ })
+ }
+
+ function openEditLotTypeFieldByClick(clickEvent: Event) {
+ clickEvent.preventDefault()
+
+ const lotTypeFieldId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--lotTypeField'
+ ) as HTMLElement
+ ).dataset.lotTypeFieldId!,
+ 10
+ )
+
+ const lotTypeId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--lotType'
+ ) as HTMLElement
+ ).dataset.lotTypeId!,
+ 10
+ )
+
+ openEditLotTypeField(lotTypeId, lotTypeFieldId)
+ }
+
+ function moveLotTypeField(clickEvent: MouseEvent) {
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
+
+ const lotTypeFieldId = (
+ buttonElement.closest('.container--lotTypeField') as HTMLElement
+ ).dataset.lotTypeFieldId
+
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveLotTypeFieldUp'
+ : 'doMoveLotTypeFieldDown'),
+ {
+ lotTypeFieldId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ lotTypeResponseHandler
+ )
+ }
+
+ function renderLotTypeFields(
+ panelElement: HTMLElement,
+ lotTypeId: number,
+ lotTypeFields: recordTypes.LotTypeField[]
+ ) {
+ if (lotTypeFields.length === 0) {
+ panelElement.insertAdjacentHTML(
+ 'beforeend',
+ '' +
+ '
' +
+ '
There are no additional fields.
' +
+ '
' +
+ '
'
+ )
+ } else {
+ for (const lotTypeField of lotTypeFields) {
+ const panelBlockElement = document.createElement('div')
+ panelBlockElement.className =
+ 'panel-block is-block container--lotTypeField'
+
+ if (!expandedLotTypes.has(lotTypeId)) {
+ panelBlockElement.classList.add('is-hidden')
}
- bulmaJS.confirm({
- title: `Delete ${exports.aliases.lot} Type`,
- message: `Are you sure you want to delete this ${exports.aliases.lot.toLowerCase()} type?`,
- contextualColorName: "warning",
- okButton: {
- text: `Yes, Delete ${exports.aliases.lot} Type`,
- callbackFunction: doDelete
- }
- });
+ panelBlockElement.dataset.lotTypeFieldId =
+ lotTypeField.lotTypeFieldId.toString()
+
+ panelBlockElement.innerHTML =
+ '' +
+ '
' +
+ '
' +
+ ('
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveLotTypeFieldUp',
+ 'button--moveLotTypeFieldDown'
+ ) +
+ '
') +
+ '
' +
+ '
'
+
+ panelBlockElement
+ .querySelector('.button--editLotTypeField')!
+ .addEventListener('click', openEditLotTypeFieldByClick)
+
+ ;(
+ panelBlockElement.querySelector(
+ '.button--moveLotTypeFieldUp'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveLotTypeField)
+
+ ;(
+ panelBlockElement.querySelector(
+ '.button--moveLotTypeFieldDown'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveLotTypeField)
+
+ panelElement.append(panelBlockElement)
+ }
}
+ }
- function openEditLotType(clickEvent: Event) {
- const lotTypeId = Number.parseInt(
- ((clickEvent.currentTarget as HTMLElement).closest(".container--lotType") as HTMLElement).dataset
- .lotTypeId!,
- 10
- );
+ function renderLotTypes() {
+ containerElement.innerHTML = ''
- const lotType = lotTypes.find((currentLotType) => {
- return lotTypeId === currentLotType.lotTypeId;
- })!;
-
- let editCloseModalFunction: () => void;
-
- const doEdit = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateLotType",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- occupancyTypes?: recordTypes.OccupancyType[];
- }) => {
- lotTypeResponseHandler(responseJSON);
- if (responseJSON.success) {
- editCloseModalFunction();
- }
- }
- );
- };
-
- cityssm.openHtmlModal("adminLotTypes-editLotType", {
- onshow(modalElement) {
- los.populateAliases(modalElement);
-
- (modalElement.querySelector("#lotTypeEdit--lotTypeId") as HTMLInputElement).value =
- lotTypeId.toString();
-
- (modalElement.querySelector("#lotTypeEdit--lotType") as HTMLInputElement).value =
- lotType.lotType;
- },
- onshown(modalElement, closeModalFunction) {
- editCloseModalFunction = closeModalFunction;
-
- (modalElement.querySelector("#lotTypeEdit--lotType") as HTMLInputElement).focus();
-
- modalElement.querySelector("form")!.addEventListener("submit", doEdit);
-
- bulmaJS.toggleHtmlClipped();
- },
- onremoved() {
- bulmaJS.toggleHtmlClipped();
- }
- });
- }
-
- function openAddLotTypeField(clickEvent: Event) {
- const lotTypeId = Number.parseInt(
- ((clickEvent.currentTarget as HTMLElement).closest(".container--lotType") as HTMLElement).dataset
- .lotTypeId!,
- 10
- );
-
- let addCloseModalFunction: () => void;
-
- const doAdd = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddLotTypeField",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotTypes?: recordTypes.LotType[];
- lotTypeFieldId?: number;
- }) => {
- expandedLotTypes.add(lotTypeId);
- lotTypeResponseHandler(responseJSON);
-
- if (responseJSON.success) {
- addCloseModalFunction();
- openEditLotTypeField(lotTypeId, responseJSON.lotTypeFieldId!);
- }
- }
- );
- };
-
- cityssm.openHtmlModal("adminLotTypes-addLotTypeField", {
- onshow(modalElement) {
- los.populateAliases(modalElement);
-
- if (lotTypeId) {
- (modalElement.querySelector("#lotTypeFieldAdd--lotTypeId") as HTMLInputElement).value =
- lotTypeId.toString();
- }
- },
- onshown(modalElement, closeModalFunction) {
- addCloseModalFunction = closeModalFunction;
-
- (modalElement.querySelector("#lotTypeFieldAdd--lotTypeField") as HTMLInputElement).focus();
-
- modalElement.querySelector("form")!.addEventListener("submit", doAdd);
-
- bulmaJS.toggleHtmlClipped();
- },
- onremoved() {
- bulmaJS.toggleHtmlClipped();
- }
- });
- }
-
- function moveLotType(clickEvent: MouseEvent) {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
-
- const lotTypeId = (buttonElement.closest(".container--lotType") as HTMLElement).dataset.lotTypeId;
-
- cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveLotTypeUp" : "doMoveLotTypeDown"),
- {
- lotTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- lotTypeResponseHandler
- );
- }
-
- function openEditLotTypeField(lotTypeId: number, lotTypeFieldId: number) {
- const lotType = lotTypes.find((currentLotType) => {
- return currentLotType.lotTypeId === lotTypeId;
- })!;
-
- const lotTypeField = lotType.lotTypeFields!.find((currentLotTypeField) => {
- return currentLotTypeField.lotTypeFieldId === lotTypeFieldId;
- })!;
-
- let minimumLengthElement: HTMLInputElement;
- let maximumLengthElement: HTMLInputElement;
- let patternElement: HTMLInputElement;
- let lotTypeFieldValuesElement: HTMLTextAreaElement;
-
- let editCloseModalFunction: () => void;
-
- function updateMaximumLengthMin() {
- maximumLengthElement.min = minimumLengthElement.value;
- }
-
- function toggleInputFields() {
- if (lotTypeFieldValuesElement.value === "") {
- minimumLengthElement.disabled = false;
- maximumLengthElement.disabled = false;
- patternElement.disabled = false;
- } else {
- minimumLengthElement.disabled = true;
- maximumLengthElement.disabled = true;
- patternElement.disabled = true;
- }
- }
-
- function doUpdate(submitEvent: SubmitEvent) {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateLotTypeField",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- occupancyTypes?: recordTypes.OccupancyType[];
- }) => {
- lotTypeResponseHandler(responseJSON);
- if (responseJSON.success) {
- editCloseModalFunction();
- }
- }
- );
- }
-
- function doDelete() {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteLotTypeField",
- {
- lotTypeFieldId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotTypes?: recordTypes.LotType[];
- }) => {
- lotTypeResponseHandler(responseJSON);
- if (responseJSON.success) {
- editCloseModalFunction();
- }
- }
- );
- }
-
- function confirmDoDelete() {
- bulmaJS.confirm({
- title: "Delete Field",
- message:
- "Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Field",
- callbackFunction: doDelete
- }
- });
- }
-
- cityssm.openHtmlModal("adminLotTypes-editLotTypeField", {
- onshow(modalElement) {
- los.populateAliases(modalElement);
-
- (modalElement.querySelector("#lotTypeFieldEdit--lotTypeFieldId") as HTMLInputElement).value =
- lotTypeField.lotTypeFieldId.toString();
-
- (modalElement.querySelector("#lotTypeFieldEdit--lotTypeField") as HTMLInputElement).value =
- lotTypeField.lotTypeField!;
-
- (modalElement.querySelector("#lotTypeFieldEdit--isRequired") as HTMLSelectElement).value =
- lotTypeField.isRequired ? "1" : "0";
-
- minimumLengthElement = modalElement.querySelector(
- "#lotTypeFieldEdit--minimumLength"
- ) as HTMLInputElement;
-
- minimumLengthElement.value = lotTypeField.minimumLength!.toString();
-
- maximumLengthElement = modalElement.querySelector(
- "#lotTypeFieldEdit--maximumLength"
- ) as HTMLInputElement;
-
- maximumLengthElement.value = lotTypeField.maximumLength!.toString();
-
- patternElement = modalElement.querySelector("#lotTypeFieldEdit--pattern") as HTMLInputElement;
-
- patternElement.value = lotTypeField.pattern!;
-
- lotTypeFieldValuesElement = modalElement.querySelector(
- "#lotTypeFieldEdit--lotTypeFieldValues"
- ) as HTMLTextAreaElement;
-
- lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues!;
-
- toggleInputFields();
- },
- onshown(modalElement, closeModalFunction) {
- editCloseModalFunction = closeModalFunction;
-
- bulmaJS.init(modalElement);
- bulmaJS.toggleHtmlClipped();
- cityssm.enableNavBlocker();
-
- modalElement.querySelector("form")!.addEventListener("submit", doUpdate);
-
- minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin);
- updateMaximumLengthMin();
-
- lotTypeFieldValuesElement.addEventListener("keyup", toggleInputFields);
-
- modalElement
- .querySelector("#button--deleteLotTypeField")!
- .addEventListener("click", confirmDoDelete);
- },
- onremoved() {
- bulmaJS.toggleHtmlClipped();
- cityssm.disableNavBlocker();
- }
- });
- }
-
- function openEditLotTypeFieldByClick(clickEvent: Event) {
- clickEvent.preventDefault();
-
- const lotTypeFieldId = Number.parseInt(
- ((clickEvent.currentTarget as HTMLElement).closest(".container--lotTypeField") as HTMLElement)
- .dataset.lotTypeFieldId!,
- 10
- );
-
- const lotTypeId = Number.parseInt(
- ((clickEvent.currentTarget as HTMLElement).closest(".container--lotType") as HTMLElement).dataset
- .lotTypeId!,
- 10
- );
-
- openEditLotTypeField(lotTypeId, lotTypeFieldId);
- }
-
- function moveLotTypeField(clickEvent: MouseEvent) {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
-
- const lotTypeFieldId = (buttonElement.closest(".container--lotTypeField") as HTMLElement).dataset
- .lotTypeFieldId;
-
- cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveLotTypeFieldUp"
- : "doMoveLotTypeFieldDown"),
- {
- lotTypeFieldId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- lotTypeResponseHandler
- );
- }
-
- function renderLotTypeFields(
- panelElement: HTMLElement,
- lotTypeId: number,
- lotTypeFields: recordTypes.LotTypeField[]
- ) {
- if (lotTypeFields.length === 0) {
- panelElement.insertAdjacentHTML(
- "beforeend",
- '' +
- '
' +
- '
There are no additional fields.
' +
- "
" +
- "
"
- );
- } else {
- for (const lotTypeField of lotTypeFields) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--lotTypeField";
-
- if (!expandedLotTypes.has(lotTypeId)) {
- panelBlockElement.classList.add("is-hidden");
- }
-
- panelBlockElement.dataset.lotTypeFieldId = lotTypeField.lotTypeFieldId.toString();
-
- panelBlockElement.innerHTML =
- '' +
- '
" +
- '
' +
- ('
' +
- los.getMoveUpDownButtonFieldHTML(
- "button--moveLotTypeFieldUp",
- "button--moveLotTypeFieldDown"
- ) +
- "
") +
- "
" +
- "
";
-
- panelBlockElement
- .querySelector(".button--editLotTypeField")!
- .addEventListener("click", openEditLotTypeFieldByClick);
-
- (
- panelBlockElement.querySelector(".button--moveLotTypeFieldUp") as HTMLButtonElement
- ).addEventListener("click", moveLotTypeField);
-
- (
- panelBlockElement.querySelector(".button--moveLotTypeFieldDown") as HTMLButtonElement
- ).addEventListener("click", moveLotTypeField);
-
- panelElement.append(panelBlockElement);
- }
- }
- }
-
- function renderLotTypes() {
- containerElement.innerHTML = "";
-
- if (lotTypes.length === 0) {
- containerElement.insertAdjacentHTML(
- "afterbegin",
- `
There are no active ${los.escapedAliases.lot} types.
`
- );
+ )
- return;
- }
-
- for (const lotType of lotTypes) {
- const lotTypeContainer = document.createElement("div");
-
- lotTypeContainer.className = "panel container--lotType";
-
- lotTypeContainer.dataset.lotTypeId = lotType.lotTypeId.toString();
-
- lotTypeContainer.innerHTML =
- '' +
- '
' +
- ('
' +
- '
' +
- '' +
- (expandedLotTypes.has(lotType.lotTypeId)
- ? ' '
- : ' ') +
- " " +
- "
" +
- '
' +
- '
' +
- cityssm.escapeHTML(lotType.lotType) +
- " " +
- "" +
- "
") +
- ('
' +
- ('
' +
- '' +
- ' ' +
- "Delete " +
- " " +
- "
") +
- ('
' +
- '' +
- ' ' +
- "Edit " +
- exports.aliases.lot +
- " Type " +
- " " +
- "
") +
- ('
' +
- '' +
- ' ' +
- "Add Field " +
- " " +
- "
") +
- ('
' +
- los.getMoveUpDownButtonFieldHTML("button--moveLotTypeUp", "button--moveLotTypeDown") +
- "
") +
- "
") +
- "
" +
- "
";
-
- renderLotTypeFields(lotTypeContainer, lotType.lotTypeId, lotType.lotTypeFields!);
-
- lotTypeContainer
- .querySelector(".button--toggleLotTypeFields")!
- .addEventListener("click", toggleLotTypeFields);
-
- lotTypeContainer
- .querySelector(".button--deleteLotType")!
- .addEventListener("click", deleteLotType);
-
- lotTypeContainer
- .querySelector(".button--editLotType")!
- .addEventListener("click", openEditLotType);
-
- lotTypeContainer
- .querySelector(".button--addLotTypeField")!
- .addEventListener("click", openAddLotTypeField);
-
- (lotTypeContainer.querySelector(".button--moveLotTypeUp") as HTMLButtonElement).addEventListener(
- "click",
- moveLotType
- );
-
- (
- lotTypeContainer.querySelector(".button--moveLotTypeDown") as HTMLButtonElement
- ).addEventListener("click", moveLotType);
-
- containerElement.append(lotTypeContainer);
- }
+ return
}
- document.querySelector("#button--addLotType")!.addEventListener("click", () => {
- let addCloseModalFunction: () => void;
+ for (const lotType of lotTypes) {
+ const lotTypeContainer = document.createElement('div')
- function doAdd(submitEvent: SubmitEvent): void {
- submitEvent.preventDefault();
+ lotTypeContainer.className = 'panel container--lotType'
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddLotType",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotTypes?: recordTypes.LotType[];
- }) => {
- if (responseJSON.success) {
- addCloseModalFunction();
- lotTypes = responseJSON.lotTypes!;
- renderLotTypes();
- } else {
- bulmaJS.alert({
- title: `Error Adding ${los.escapedAliases.Lot} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
+ lotTypeContainer.dataset.lotTypeId = lotType.lotTypeId.toString()
- cityssm.openHtmlModal("adminLotTypes-addLotType", {
- onshow(modalElement) {
- los.populateAliases(modalElement);
- },
- onshown(modalElement, closeModalFunction) {
- addCloseModalFunction = closeModalFunction;
+ lotTypeContainer.innerHTML =
+ '' +
+ '
' +
+ ('
' +
+ '
' +
+ '' +
+ (expandedLotTypes.has(lotType.lotTypeId)
+ ? ' '
+ : ' ') +
+ ' ' +
+ '
' +
+ '
' +
+ '
' +
+ cityssm.escapeHTML(lotType.lotType) +
+ ' ' +
+ '' +
+ '
') +
+ ('
' +
+ ('
' +
+ '' +
+ ' ' +
+ 'Delete ' +
+ ' ' +
+ '
') +
+ ('
' +
+ '' +
+ ' ' +
+ 'Edit ' +
+ exports.aliases.lot +
+ ' Type ' +
+ ' ' +
+ '
') +
+ ('
' +
+ '' +
+ ' ' +
+ 'Add Field ' +
+ ' ' +
+ '
') +
+ ('
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveLotTypeUp',
+ 'button--moveLotTypeDown'
+ ) +
+ '
') +
+ '
') +
+ '
' +
+ '
'
- (modalElement.querySelector("#lotTypeAdd--lotType") as HTMLInputElement).focus();
+ renderLotTypeFields(
+ lotTypeContainer,
+ lotType.lotTypeId,
+ lotType.lotTypeFields!
+ )
- modalElement.querySelector("form")!.addEventListener("submit", doAdd);
+ lotTypeContainer
+ .querySelector('.button--toggleLotTypeFields')!
+ .addEventListener('click', toggleLotTypeFields)
- bulmaJS.toggleHtmlClipped();
- },
- onremoved() {
- bulmaJS.toggleHtmlClipped();
+ lotTypeContainer
+ .querySelector('.button--deleteLotType')!
+ .addEventListener('click', deleteLotType)
+
+ lotTypeContainer
+ .querySelector('.button--editLotType')!
+ .addEventListener('click', openEditLotType)
+
+ lotTypeContainer
+ .querySelector('.button--addLotTypeField')!
+ .addEventListener('click', openAddLotTypeField)
+
+ ;(
+ lotTypeContainer.querySelector(
+ '.button--moveLotTypeUp'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveLotType)
+
+ ;(
+ lotTypeContainer.querySelector(
+ '.button--moveLotTypeDown'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveLotType)
+
+ containerElement.append(lotTypeContainer)
+ }
+ }
+
+ document
+ .querySelector('#button--addLotType')!
+ .addEventListener('click', () => {
+ let addCloseModalFunction: () => void
+
+ function doAdd(submitEvent: SubmitEvent): void {
+ submitEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddLotType',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotTypes?: recordTypes.LotType[]
+ }) => {
+ if (responseJSON.success) {
+ addCloseModalFunction()
+ lotTypes = responseJSON.lotTypes!
+ renderLotTypes()
+ } else {
+ bulmaJS.alert({
+ title: `Error Adding ${los.escapedAliases.Lot} Type`,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
- });
+ }
+ )
+ }
- renderLotTypes();
-})();
+ cityssm.openHtmlModal('adminLotTypes-addLotType', {
+ onshow(modalElement) {
+ los.populateAliases(modalElement)
+ },
+ onshown(modalElement, closeModalFunction) {
+ addCloseModalFunction = closeModalFunction
+
+ ;(
+ modalElement.querySelector(
+ '#lotTypeAdd--lotType'
+ ) as HTMLInputElement
+ ).focus()
+
+ modalElement.querySelector('form')!.addEventListener('submit', doAdd)
+
+ bulmaJS.toggleHtmlClipped()
+ },
+ onremoved() {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ })
+
+ renderLotTypes()
+})()
diff --git a/public-typescript/adminOccupancyTypes.js b/public-typescript/adminOccupancyTypes.js
index bc0aaf36..866d041d 100644
--- a/public-typescript/adminOccupancyTypes.js
+++ b/public-typescript/adminOccupancyTypes.js
@@ -3,8 +3,8 @@
Object.defineProperty(exports, "__esModule", { value: true });
(() => {
const los = exports.los;
- const occupancyTypesContainerElement = document.querySelector("#container--occupancyTypes");
- const occupancyTypePrintsContainerElement = document.querySelector("#container--occupancyTypePrints");
+ const occupancyTypesContainerElement = document.querySelector('#container--occupancyTypes');
+ const occupancyTypePrintsContainerElement = document.querySelector('#container--occupancyTypePrints');
let occupancyTypes = exports.occupancyTypes;
delete exports.occupancyTypes;
let allOccupancyTypeFields = exports.allOccupancyTypeFields;
@@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const expandedOccupancyTypes = new Set();
function toggleOccupancyTypeFields(clickEvent) {
const toggleButtonElement = clickEvent.currentTarget;
- const occupancyTypeElement = toggleButtonElement.closest(".container--occupancyType");
+ const occupancyTypeElement = toggleButtonElement.closest('.container--occupancyType');
const occupancyTypeId = Number.parseInt(occupancyTypeElement.dataset.occupancyTypeId, 10);
if (expandedOccupancyTypes.has(occupancyTypeId)) {
expandedOccupancyTypes.delete(occupancyTypeId);
@@ -23,9 +23,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
toggleButtonElement.innerHTML = expandedOccupancyTypes.has(occupancyTypeId)
? ' '
: ' ';
- const panelBlockElements = occupancyTypeElement.querySelectorAll(".panel-block");
+ const panelBlockElements = occupancyTypeElement.querySelectorAll('.panel-block');
for (const panelBlockElement of panelBlockElements) {
- panelBlockElement.classList.toggle("is-hidden");
+ panelBlockElement.classList.toggle('is-hidden');
}
}
function occupancyTypeResponseHandler(responseJSON) {
@@ -36,23 +36,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Updating " + exports.aliases.occupancy + " Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating ' + exports.aliases.occupancy + ' Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
}
function deleteOccupancyType(clickEvent) {
- const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId, 10);
+ const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId, 10);
function doDelete() {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteOccupancyType", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteOccupancyType', {
occupancyTypeId
}, occupancyTypeResponseHandler);
}
bulmaJS.confirm({
title: `Delete ${exports.aliases.occupancy} Type`,
message: `Are you sure you want to delete this ${exports.aliases.occupancy.toLowerCase()} type?`,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
text: `Yes, Delete ${exports.aliases.occupancy} Type`,
callbackFunction: doDelete
@@ -60,30 +60,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
function openEditOccupancyType(clickEvent) {
- const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId, 10);
+ const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId, 10);
const occupancyType = occupancyTypes.find((currentOccupancyType) => {
return occupancyTypeId === currentOccupancyType.occupancyTypeId;
});
let editCloseModalFunction;
function doEdit(submitEvent) {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateOccupancyType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateOccupancyType', submitEvent.currentTarget, (responseJSON) => {
occupancyTypeResponseHandler(responseJSON);
if (responseJSON.success) {
editCloseModalFunction();
}
});
}
- cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyType", {
+ cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyType', {
onshow(modalElement) {
los.populateAliases(modalElement);
- modalElement.querySelector("#occupancyTypeEdit--occupancyTypeId").value = occupancyTypeId.toString();
- modalElement.querySelector("#occupancyTypeEdit--occupancyType").value = occupancyType.occupancyType;
+ modalElement.querySelector('#occupancyTypeEdit--occupancyTypeId').value = occupancyTypeId.toString();
+ modalElement.querySelector('#occupancyTypeEdit--occupancyType').value = occupancyType.occupancyType;
},
onshown(modalElement, closeModalFunction) {
editCloseModalFunction = closeModalFunction;
- modalElement.querySelector("#occupancyTypeEdit--occupancyType").focus();
- modalElement.querySelector("form").addEventListener("submit", doEdit);
+ modalElement.querySelector('#occupancyTypeEdit--occupancyType').focus();
+ modalElement.querySelector('form').addEventListener('submit', doEdit);
bulmaJS.toggleHtmlClipped();
},
onremoved() {
@@ -92,11 +92,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
function openAddOccupancyTypeField(clickEvent) {
- const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId, 10);
+ const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId, 10);
let addCloseModalFunction;
function doAdd(submitEvent) {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doAddOccupancyTypeField", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddOccupancyTypeField', submitEvent.currentTarget, (responseJSON) => {
expandedOccupancyTypes.add(occupancyTypeId);
occupancyTypeResponseHandler(responseJSON);
if (responseJSON.success) {
@@ -105,17 +105,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
});
}
- cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypeField", {
+ cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyTypeField', {
onshow(modalElement) {
los.populateAliases(modalElement);
if (occupancyTypeId) {
- modalElement.querySelector("#occupancyTypeFieldAdd--occupancyTypeId").value = occupancyTypeId.toString();
+ ;
+ modalElement.querySelector('#occupancyTypeFieldAdd--occupancyTypeId').value = occupancyTypeId.toString();
}
},
onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction;
- modalElement.querySelector("#occupancyTypeFieldAdd--occupancyTypeField").focus();
- modalElement.querySelector("form").addEventListener("submit", doAdd);
+ modalElement.querySelector('#occupancyTypeFieldAdd--occupancyTypeField').focus();
+ modalElement.querySelector('form').addEventListener('submit', doAdd);
bulmaJS.toggleHtmlClipped();
},
onremoved() {
@@ -125,14 +126,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function moveOccupancyType(clickEvent) {
const buttonElement = clickEvent.currentTarget;
- const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;
+ const occupancyTypeId = clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveOccupancyTypeUp"
- : "doMoveOccupancyTypeDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveOccupancyTypeUp'
+ : 'doMoveOccupancyTypeDown'), {
occupancyTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, occupancyTypeResponseHandler);
}
function openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId) {
@@ -142,8 +143,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
return currentOccupancyType.occupancyTypeId === occupancyTypeId;
});
}
- const occupancyTypeField = (occupancyType ? occupancyType.occupancyTypeFields : allOccupancyTypeFields).find((currentOccupancyTypeField) => {
- return currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId;
+ const occupancyTypeField = (occupancyType
+ ? occupancyType.occupancyTypeFields
+ : allOccupancyTypeFields).find((currentOccupancyTypeField) => {
+ return (currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId);
});
let minimumLengthElement;
let maximumLengthElement;
@@ -154,7 +157,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
maximumLengthElement.min = minimumLengthElement.value;
}
function toggleInputFields() {
- if (occupancyTypeFieldValuesElement.value === "") {
+ if (occupancyTypeFieldValuesElement.value === '') {
minimumLengthElement.disabled = false;
maximumLengthElement.disabled = false;
patternElement.disabled = false;
@@ -167,7 +170,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function doUpdate(submitEvent) {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateOccupancyTypeField", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateOccupancyTypeField', submitEvent.currentTarget, (responseJSON) => {
occupancyTypeResponseHandler(responseJSON);
if (responseJSON.success) {
editCloseModalFunction();
@@ -175,7 +178,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
function doDelete() {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteOccupancyTypeField", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteOccupancyTypeField', {
occupancyTypeFieldId
}, (responseJSON) => {
occupancyTypeResponseHandler(responseJSON);
@@ -186,28 +189,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function confirmDoDelete() {
bulmaJS.confirm({
- title: "Delete Field",
- message: "Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",
- contextualColorName: "warning",
+ title: 'Delete Field',
+ message: 'Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Field",
+ text: 'Yes, Delete Field',
callbackFunction: doDelete
}
});
}
- cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyTypeField", {
+ cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyTypeField', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#occupancyTypeFieldEdit--occupancyTypeFieldId").value = occupancyTypeField.occupancyTypeFieldId.toString();
- modalElement.querySelector("#occupancyTypeFieldEdit--occupancyTypeField").value = occupancyTypeField.occupancyTypeField;
- modalElement.querySelector("#occupancyTypeFieldEdit--isRequired").value = occupancyTypeField.isRequired ? "1" : "0";
- minimumLengthElement = modalElement.querySelector("#occupancyTypeFieldEdit--minimumLength");
- minimumLengthElement.value = occupancyTypeField.minimumLength.toString();
- maximumLengthElement = modalElement.querySelector("#occupancyTypeFieldEdit--maximumLength");
- maximumLengthElement.value = occupancyTypeField.maximumLength.toString();
- patternElement = modalElement.querySelector("#occupancyTypeFieldEdit--pattern");
+ modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldId').value = occupancyTypeField.occupancyTypeFieldId.toString();
+ modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeField').value = occupancyTypeField.occupancyTypeField;
+ modalElement.querySelector('#occupancyTypeFieldEdit--isRequired').value = occupancyTypeField.isRequired ? '1' : '0';
+ minimumLengthElement = modalElement.querySelector('#occupancyTypeFieldEdit--minimumLength');
+ minimumLengthElement.value =
+ occupancyTypeField.minimumLength.toString();
+ maximumLengthElement = modalElement.querySelector('#occupancyTypeFieldEdit--maximumLength');
+ maximumLengthElement.value =
+ occupancyTypeField.maximumLength.toString();
+ patternElement = modalElement.querySelector('#occupancyTypeFieldEdit--pattern');
patternElement.value = occupancyTypeField.pattern;
- occupancyTypeFieldValuesElement = modalElement.querySelector("#occupancyTypeFieldEdit--occupancyTypeFieldValues");
+ occupancyTypeFieldValuesElement = modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldValues');
occupancyTypeFieldValuesElement.value =
occupancyTypeField.occupancyTypeFieldValues;
toggleInputFields();
@@ -217,13 +222,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
bulmaJS.init(modalElement);
bulmaJS.toggleHtmlClipped();
cityssm.enableNavBlocker();
- modalElement.querySelector("form").addEventListener("submit", doUpdate);
- minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin);
+ modalElement.querySelector('form').addEventListener('submit', doUpdate);
+ minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin);
updateMaximumLengthMin();
- occupancyTypeFieldValuesElement.addEventListener("keyup", toggleInputFields);
+ occupancyTypeFieldValuesElement.addEventListener('keyup', toggleInputFields);
modalElement
- .querySelector("#button--deleteOccupancyTypeField")
- .addEventListener("click", confirmDoDelete);
+ .querySelector('#button--deleteOccupancyTypeField')
+ .addEventListener('click', confirmDoDelete);
},
onremoved: () => {
bulmaJS.toggleHtmlClipped();
@@ -233,40 +238,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
function openEditOccupancyTypeFieldByClick(clickEvent) {
clickEvent.preventDefault();
- const occupancyTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId, 10);
- const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId, 10);
+ const occupancyTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.occupancyTypeFieldId, 10);
+ const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId, 10);
openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId);
}
function moveOccupancyTypeField(clickEvent) {
const buttonElement = clickEvent.currentTarget;
- const occupancyTypeFieldId = clickEvent.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId;
+ const occupancyTypeFieldId = clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.occupancyTypeFieldId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveOccupancyTypeFieldUp"
- : "doMoveOccupancyTypeFieldDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveOccupancyTypeFieldUp'
+ : 'doMoveOccupancyTypeFieldDown'), {
occupancyTypeFieldId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, occupancyTypeResponseHandler);
}
function renderOccupancyTypeFields(panelElement, occupancyTypeId, occupancyTypeFields) {
if (occupancyTypeFields.length === 0) {
- panelElement.insertAdjacentHTML("beforeend", '' +
'
' +
'
There are no additional fields.
' +
- "
" +
- "
");
+ '' +
+ '');
}
else {
for (const occupancyTypeField of occupancyTypeFields) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--occupancyTypeField";
+ const panelBlockElement = document.createElement('div');
+ panelBlockElement.className =
+ 'panel-block is-block container--occupancyTypeField';
if (occupancyTypeId && !expandedOccupancyTypes.has(occupancyTypeId)) {
- panelBlockElement.classList.add("is-hidden");
+ panelBlockElement.classList.add('is-hidden');
}
panelBlockElement.dataset.occupancyTypeFieldId =
occupancyTypeField.occupancyTypeFieldId.toString();
@@ -275,44 +281,44 @@ Object.defineProperty(exports, "__esModule", { value: true });
'" +
+ cityssm.escapeHTML(occupancyTypeField.occupancyTypeField || '') +
+ '' +
+ '') +
+ '' +
'' +
('
' +
- los.getMoveUpDownButtonFieldHTML("button--moveOccupancyTypeFieldUp", "button--moveOccupancyTypeFieldDown") +
- "
") +
- "
" +
- "";
+ los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeFieldUp', 'button--moveOccupancyTypeFieldDown') +
+ '') +
+ '' +
+ '';
panelBlockElement
- .querySelector(".button--editOccupancyTypeField")
- .addEventListener("click", openEditOccupancyTypeFieldByClick);
- panelBlockElement.querySelector(".button--moveOccupancyTypeFieldUp").addEventListener("click", moveOccupancyTypeField);
- panelBlockElement.querySelector(".button--moveOccupancyTypeFieldDown").addEventListener("click", moveOccupancyTypeField);
+ .querySelector('.button--editOccupancyTypeField')
+ .addEventListener('click', openEditOccupancyTypeFieldByClick);
+ panelBlockElement.querySelector('.button--moveOccupancyTypeFieldUp').addEventListener('click', moveOccupancyTypeField);
+ panelBlockElement.querySelector('.button--moveOccupancyTypeFieldDown').addEventListener('click', moveOccupancyTypeField);
panelElement.append(panelBlockElement);
}
}
}
function openAddOccupancyTypePrint(clickEvent) {
- const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyTypePrintList").dataset.occupancyTypeId;
+ const occupancyTypeId = clickEvent.currentTarget.closest('.container--occupancyTypePrintList').dataset.occupancyTypeId;
let closeAddModalFunction;
function doAdd(formEvent) {
formEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doAddOccupancyTypePrint", formEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddOccupancyTypePrint', formEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
closeAddModalFunction();
}
occupancyTypeResponseHandler(responseJSON);
});
}
- cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypePrint", {
+ cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyTypePrint', {
onshow(modalElement) {
los.populateAliases(modalElement);
- modalElement.querySelector("#occupancyTypePrintAdd--occupancyTypeId").value = occupancyTypeId;
- const printSelectElement = modalElement.querySelector("#occupancyTypePrintAdd--printEJS");
+ modalElement.querySelector('#occupancyTypePrintAdd--occupancyTypeId').value = occupancyTypeId;
+ const printSelectElement = modalElement.querySelector('#occupancyTypePrintAdd--printEJS');
for (const [printEJS, printTitle] of Object.entries(exports.occupancyTypePrintTitles)) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = printEJS;
optionElement.textContent = printTitle;
printSelectElement.append(optionElement);
@@ -321,48 +327,47 @@ Object.defineProperty(exports, "__esModule", { value: true });
onshown(modalElement, closeModalFunction) {
var _a;
closeAddModalFunction = closeModalFunction;
- (_a = modalElement.querySelector("form")) === null || _a === void 0 ? void 0 : _a.addEventListener("submit", doAdd);
+ (_a = modalElement.querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doAdd);
}
});
}
function moveOccupancyTypePrint(clickEvent) {
const buttonElement = clickEvent.currentTarget;
- const printEJS = buttonElement.closest(".container--occupancyTypePrint")
- .dataset.printEJS;
- const occupancyTypeId = buttonElement.closest(".container--occupancyTypePrintList").dataset.occupancyTypeId;
+ const printEJS = buttonElement.closest('.container--occupancyTypePrint').dataset.printEJS;
+ const occupancyTypeId = buttonElement.closest('.container--occupancyTypePrintList').dataset.occupancyTypeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveOccupancyTypePrintUp"
- : "doMoveOccupancyTypePrintDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveOccupancyTypePrintUp'
+ : 'doMoveOccupancyTypePrintDown'), {
occupancyTypeId,
printEJS,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, occupancyTypeResponseHandler);
}
function deleteOccupancyTypePrint(clickEvent) {
clickEvent.preventDefault();
- const printEJS = clickEvent.currentTarget.closest(".container--occupancyTypePrint").dataset.printEJS;
- const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyTypePrintList").dataset.occupancyTypeId;
+ const printEJS = clickEvent.currentTarget.closest('.container--occupancyTypePrint').dataset.printEJS;
+ const occupancyTypeId = clickEvent.currentTarget.closest('.container--occupancyTypePrintList').dataset.occupancyTypeId;
function doDelete() {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteOccupancyTypePrint", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteOccupancyTypePrint', {
occupancyTypeId,
printEJS
}, occupancyTypeResponseHandler);
}
bulmaJS.confirm({
- title: "Delete Print",
- message: "Are you sure you want to remove this print option?",
- contextualColorName: "warning",
+ title: 'Delete Print',
+ message: 'Are you sure you want to remove this print option?',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Remove Print",
+ text: 'Yes, Remove Print',
callbackFunction: doDelete
}
});
}
function renderOccupancyTypePrints(panelElement, occupancyTypeId, occupancyTypePrints) {
if (occupancyTypePrints.length === 0) {
- panelElement.insertAdjacentHTML("beforeend", `
+ panelElement.insertAdjacentHTML('beforeend', `
There are no prints associated with this record.
@@ -370,18 +375,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
for (const printEJS of occupancyTypePrints) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--occupancyTypePrint";
+ const panelBlockElement = document.createElement('div');
+ panelBlockElement.className =
+ 'panel-block is-block container--occupancyTypePrint';
panelBlockElement.dataset.printEJS = printEJS;
- const printTitle = printEJS === "*"
- ? "(All Available Prints)"
+ const printTitle = printEJS === '*'
+ ? '(All Available Prints)'
: exports.occupancyTypePrintTitles[printEJS];
- let printIconClass = "fa-star";
- if (printEJS.startsWith("pdf/")) {
- printIconClass = "fa-file-pdf";
+ let printIconClass = 'fa-star';
+ if (printEJS.startsWith('pdf/')) {
+ printIconClass = 'fa-file-pdf';
}
- else if (printEJS.startsWith("screen/")) {
- printIconClass = "fa-file";
+ else if (printEJS.startsWith('screen/')) {
+ printIconClass = 'fa-file';
}
panelBlockElement.innerHTML =
'
' +
@@ -390,28 +396,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
' ' +
- "
") +
+ '
') +
('
' +
cityssm.escapeHTML(printTitle || printEJS) +
- "
") +
- "
" +
+ '') +
+ '' +
'' +
('
' +
- los.getMoveUpDownButtonFieldHTML("button--moveOccupancyTypePrintUp", "button--moveOccupancyTypePrintDown") +
- "
") +
+ los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypePrintUp', 'button--moveOccupancyTypePrintDown') +
+ '
') +
('' +
'' +
' ' +
- " " +
- "
" +
- "") +
- "" +
- "";
- panelBlockElement.querySelector(".button--moveOccupancyTypePrintUp").addEventListener("click", moveOccupancyTypePrint);
- panelBlockElement.querySelector(".button--moveOccupancyTypePrintDown").addEventListener("click", moveOccupancyTypePrint);
+ '' +
+ '' +
+ '') +
+ '' +
+ '';
+ panelBlockElement.querySelector('.button--moveOccupancyTypePrintUp').addEventListener('click', moveOccupancyTypePrint);
+ panelBlockElement.querySelector('.button--moveOccupancyTypePrintDown').addEventListener('click', moveOccupancyTypePrint);
panelBlockElement
- .querySelector(".button--deleteOccupancyTypePrint")
- .addEventListener("click", deleteOccupancyTypePrint);
+ .querySelector('.button--deleteOccupancyTypePrint')
+ .addEventListener('click', deleteOccupancyTypePrint);
panelElement.append(panelBlockElement);
}
}
@@ -425,30 +431,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
'' +
('
(All ' +
cityssm.escapeHTML(exports.aliases.occupancy) +
- " Types) ") +
- "" +
- "") +
+ ' Types)') +
+ '' +
+ '') +
('' +
('
' +
'' +
' ' +
- "Add Field " +
- " " +
- "
") +
- "
") +
- "") +
- "" +
- "";
- occupancyTypePrintsContainerElement.innerHTML = "";
- renderOccupancyTypeFields(occupancyTypesContainerElement.querySelector("#container--allOccupancyTypeFields"), undefined, allOccupancyTypeFields);
+ 'Add Field ' +
+ '' +
+ '') +
+ '') +
+ '') +
+ '' +
+ '';
+ occupancyTypePrintsContainerElement.innerHTML = '';
+ renderOccupancyTypeFields(occupancyTypesContainerElement.querySelector('#container--allOccupancyTypeFields'), undefined, allOccupancyTypeFields);
occupancyTypesContainerElement
- .querySelector(".button--addOccupancyTypeField")
- .addEventListener("click", openAddOccupancyTypeField);
+ .querySelector('.button--addOccupancyTypeField')
+ .addEventListener('click', openAddOccupancyTypeField);
if (occupancyTypes.length === 0) {
- occupancyTypesContainerElement.insertAdjacentHTML("afterbegin", `
There are no active ${los.escapedAliases.occupancy} types.
`);
- occupancyTypePrintsContainerElement.insertAdjacentHTML("afterbegin", `
There are no active ${los.escapedAliases.occupancy} types.
`);
return;
@@ -456,8 +462,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
for (const occupancyType of occupancyTypes) {
// Types and Fields
{
- const occupancyTypeContainer = document.createElement("div");
- occupancyTypeContainer.className = "panel container--occupancyType";
+ const occupancyTypeContainer = document.createElement('div');
+ occupancyTypeContainer.className = 'panel container--occupancyType';
occupancyTypeContainer.dataset.occupancyTypeId =
occupancyType.occupancyTypeId.toString();
occupancyTypeContainer.innerHTML =
@@ -469,62 +475,63 @@ Object.defineProperty(exports, "__esModule", { value: true });
(expandedOccupancyTypes.has(occupancyType.occupancyTypeId)
? ' '
: ' ') +
- "" +
- "" +
+ '' +
+ '' +
'' +
'
' +
cityssm.escapeHTML(occupancyType.occupancyType) +
- " " +
- "" +
- "") +
+ '' +
+ '' +
+ '') +
('' +
('
' +
'' +
' ' +
- "Delete " +
- " " +
- "
") +
+ '
Delete ' +
+ '' +
+ '
') +
('' +
'' +
' ' +
- "Edit " +
+ 'Edit ' +
exports.aliases.occupancy +
- " Type " +
- " " +
- "
") +
+ ' Type' +
+ '' +
+ '') +
('' +
'' +
' ' +
- "Add Field " +
- " " +
- "
") +
+ 'Add Field ' +
+ '' +
+ '') +
('' +
- los.getMoveUpDownButtonFieldHTML("button--moveOccupancyTypeUp", "button--moveOccupancyTypeDown") +
- "
") +
- "") +
- "" +
- "";
+ los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeUp', 'button--moveOccupancyTypeDown') +
+ '') +
+ '') +
+ '' +
+ '';
renderOccupancyTypeFields(occupancyTypeContainer, occupancyType.occupancyTypeId, occupancyType.occupancyTypeFields);
occupancyTypeContainer
- .querySelector(".button--toggleOccupancyTypeFields")
- .addEventListener("click", toggleOccupancyTypeFields);
+ .querySelector('.button--toggleOccupancyTypeFields')
+ .addEventListener('click', toggleOccupancyTypeFields);
occupancyTypeContainer
- .querySelector(".button--deleteOccupancyType")
- .addEventListener("click", deleteOccupancyType);
+ .querySelector('.button--deleteOccupancyType')
+ .addEventListener('click', deleteOccupancyType);
occupancyTypeContainer
- .querySelector(".button--editOccupancyType")
- .addEventListener("click", openEditOccupancyType);
+ .querySelector('.button--editOccupancyType')
+ .addEventListener('click', openEditOccupancyType);
occupancyTypeContainer
- .querySelector(".button--addOccupancyTypeField")
- .addEventListener("click", openAddOccupancyTypeField);
- occupancyTypeContainer.querySelector(".button--moveOccupancyTypeUp").addEventListener("click", moveOccupancyType);
- occupancyTypeContainer.querySelector(".button--moveOccupancyTypeDown").addEventListener("click", moveOccupancyType);
+ .querySelector('.button--addOccupancyTypeField')
+ .addEventListener('click', openAddOccupancyTypeField);
+ occupancyTypeContainer.querySelector('.button--moveOccupancyTypeUp').addEventListener('click', moveOccupancyType);
+ occupancyTypeContainer.querySelector('.button--moveOccupancyTypeDown').addEventListener('click', moveOccupancyType);
occupancyTypesContainerElement.append(occupancyTypeContainer);
}
// Prints
{
- const occupancyTypePrintContainer = document.createElement("div");
- occupancyTypePrintContainer.className = "panel container--occupancyTypePrintList";
+ const occupancyTypePrintContainer = document.createElement('div');
+ occupancyTypePrintContainer.className =
+ 'panel container--occupancyTypePrintList';
occupancyTypePrintContainer.dataset.occupancyTypeId =
occupancyType.occupancyTypeId.toString();
occupancyTypePrintContainer.innerHTML =
@@ -534,32 +541,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
'' +
'
' +
cityssm.escapeHTML(occupancyType.occupancyType) +
- " " +
- "" +
- "") +
+ '' +
+ '' +
+ '') +
('' +
('
' +
'' +
' ' +
- "Add Print " +
- " " +
- "
") +
- "
") +
- "" +
- "";
+ 'Add Print ' +
+ '' +
+ '') +
+ '') +
+ '' +
+ '';
renderOccupancyTypePrints(occupancyTypePrintContainer, occupancyType.occupancyTypeId, occupancyType.occupancyTypePrints);
occupancyTypePrintContainer
- .querySelector(".button--addOccupancyTypePrint")
- .addEventListener("click", openAddOccupancyTypePrint);
+ .querySelector('.button--addOccupancyTypePrint')
+ .addEventListener('click', openAddOccupancyTypePrint);
occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer);
}
}
}
- document.querySelector("#button--addOccupancyType").addEventListener("click", () => {
+ document
+ .querySelector('#button--addOccupancyType')
+ .addEventListener('click', () => {
let addCloseModalFunction;
const doAdd = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doAddOccupancyType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddOccupancyType', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
addCloseModalFunction();
occupancyTypes = responseJSON.occupancyTypes;
@@ -567,21 +576,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Adding " + exports.aliases.occupancy + " Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding ' + exports.aliases.occupancy + ' Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyType", {
+ cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyType', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
},
onshown: (modalElement, closeModalFunction) => {
addCloseModalFunction = closeModalFunction;
- modalElement.querySelector("#occupancyTypeAdd--occupancyType").focus();
- modalElement.querySelector("form").addEventListener("submit", doAdd);
+ modalElement.querySelector('#occupancyTypeAdd--occupancyType').focus();
+ modalElement.querySelector('form').addEventListener('submit', doAdd);
bulmaJS.toggleHtmlClipped();
},
onremoved: () => {
diff --git a/public-typescript/adminOccupancyTypes.ts b/public-typescript/adminOccupancyTypes.ts
index 975be2a9..523f1096 100644
--- a/public-typescript/adminOccupancyTypes.ts
+++ b/public-typescript/adminOccupancyTypes.ts
@@ -1,1007 +1,1030 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../types/globalTypes";
-import type * as recordTypes from "../types/recordTypes";
+import type * as globalTypes from '../types/globalTypes'
+import type * as recordTypes from '../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-(() => {
- const los = exports.los as globalTypes.LOS;
+;(() => {
+ const los = exports.los as globalTypes.LOS
- const occupancyTypesContainerElement = document.querySelector(
- "#container--occupancyTypes"
- ) as HTMLElement;
+ const occupancyTypesContainerElement = document.querySelector(
+ '#container--occupancyTypes'
+ ) as HTMLElement
- const occupancyTypePrintsContainerElement = document.querySelector(
- "#container--occupancyTypePrints"
- ) as HTMLElement;
+ const occupancyTypePrintsContainerElement = document.querySelector(
+ '#container--occupancyTypePrints'
+ ) as HTMLElement
- let occupancyTypes: recordTypes.OccupancyType[] = exports.occupancyTypes;
- delete exports.occupancyTypes;
+ let occupancyTypes: recordTypes.OccupancyType[] = exports.occupancyTypes
+ delete exports.occupancyTypes
- let allOccupancyTypeFields: recordTypes.OccupancyTypeField[] = exports.allOccupancyTypeFields;
- delete exports.allOccupancyTypeFields;
+ let allOccupancyTypeFields: recordTypes.OccupancyTypeField[] =
+ exports.allOccupancyTypeFields
+ delete exports.allOccupancyTypeFields
- const expandedOccupancyTypes = new Set();
+ const expandedOccupancyTypes = new Set()
- function toggleOccupancyTypeFields(clickEvent: Event): void {
- const toggleButtonElement = clickEvent.currentTarget as HTMLButtonElement;
+ function toggleOccupancyTypeFields(clickEvent: Event): void {
+ const toggleButtonElement = clickEvent.currentTarget as HTMLButtonElement
- const occupancyTypeElement = toggleButtonElement.closest(
- ".container--occupancyType"
- ) as HTMLElement;
+ const occupancyTypeElement = toggleButtonElement.closest(
+ '.container--occupancyType'
+ ) as HTMLElement
- const occupancyTypeId = Number.parseInt(occupancyTypeElement.dataset.occupancyTypeId!, 10);
+ const occupancyTypeId = Number.parseInt(
+ occupancyTypeElement.dataset.occupancyTypeId!,
+ 10
+ )
- if (expandedOccupancyTypes.has(occupancyTypeId)) {
- expandedOccupancyTypes.delete(occupancyTypeId);
- } else {
- expandedOccupancyTypes.add(occupancyTypeId);
- }
-
- toggleButtonElement.innerHTML = expandedOccupancyTypes.has(occupancyTypeId)
- ? ' '
- : ' ';
-
- const panelBlockElements = occupancyTypeElement.querySelectorAll(".panel-block");
-
- for (const panelBlockElement of panelBlockElements) {
- panelBlockElement.classList.toggle("is-hidden");
- }
+ if (expandedOccupancyTypes.has(occupancyTypeId)) {
+ expandedOccupancyTypes.delete(occupancyTypeId)
+ } else {
+ expandedOccupancyTypes.add(occupancyTypeId)
}
- function occupancyTypeResponseHandler(responseJSON: {
- success: boolean;
- errorMessage?: string;
- occupancyTypes?: recordTypes.OccupancyType[];
- allOccupancyTypeFields?: recordTypes.OccupancyTypeField[];
- }) {
- if (responseJSON.success) {
- occupancyTypes = responseJSON.occupancyTypes!;
- allOccupancyTypeFields = responseJSON.allOccupancyTypeFields!;
- renderOccupancyTypes();
- } else {
- bulmaJS.alert({
- title: "Error Updating " + exports.aliases.occupancy + " Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
+ toggleButtonElement.innerHTML = expandedOccupancyTypes.has(occupancyTypeId)
+ ? ' '
+ : ' '
+
+ const panelBlockElements =
+ occupancyTypeElement.querySelectorAll('.panel-block')
+
+ for (const panelBlockElement of panelBlockElements) {
+ panelBlockElement.classList.toggle('is-hidden')
+ }
+ }
+
+ function occupancyTypeResponseHandler(responseJSON: {
+ success: boolean
+ errorMessage?: string
+ occupancyTypes?: recordTypes.OccupancyType[]
+ allOccupancyTypeFields?: recordTypes.OccupancyTypeField[]
+ }) {
+ if (responseJSON.success) {
+ occupancyTypes = responseJSON.occupancyTypes!
+ allOccupancyTypeFields = responseJSON.allOccupancyTypeFields!
+ renderOccupancyTypes()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating ' + exports.aliases.occupancy + ' Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+
+ function deleteOccupancyType(clickEvent: Event) {
+ const occupancyTypeId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyType'
+ ) as HTMLElement
+ ).dataset.occupancyTypeId!,
+ 10
+ )
+
+ function doDelete(): void {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteOccupancyType',
+ {
+ occupancyTypeId
+ },
+ occupancyTypeResponseHandler
+ )
+ }
+
+ bulmaJS.confirm({
+ title: `Delete ${exports.aliases.occupancy} Type`,
+ message: `Are you sure you want to delete this ${exports.aliases.occupancy.toLowerCase()} type?`,
+ contextualColorName: 'warning',
+ okButton: {
+ text: `Yes, Delete ${exports.aliases.occupancy} Type`,
+ callbackFunction: doDelete
+ }
+ })
+ }
+
+ function openEditOccupancyType(clickEvent: Event): void {
+ const occupancyTypeId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyType'
+ ) as HTMLElement
+ ).dataset.occupancyTypeId!,
+ 10
+ )
+
+ const occupancyType = occupancyTypes.find((currentOccupancyType) => {
+ return occupancyTypeId === currentOccupancyType.occupancyTypeId
+ })!
+
+ let editCloseModalFunction: () => void
+
+ function doEdit(submitEvent: SubmitEvent): void {
+ submitEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateOccupancyType',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ occupancyTypes?: recordTypes.OccupancyType[]
+ allOccupancyTypeFields?: recordTypes.OccupancyTypeField[]
+ }) => {
+ occupancyTypeResponseHandler(responseJSON)
+ if (responseJSON.success) {
+ editCloseModalFunction()
+ }
}
+ )
}
- function deleteOccupancyType(clickEvent: Event) {
- const occupancyTypeId = Number.parseInt(
- (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyType"
- ) as HTMLElement
- ).dataset.occupancyTypeId!,
- 10
- );
+ cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyType', {
+ onshow(modalElement): void {
+ los.populateAliases(modalElement)
- function doDelete(): void {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteOccupancyType",
- {
- occupancyTypeId
- },
- occupancyTypeResponseHandler
- );
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypeEdit--occupancyTypeId'
+ ) as HTMLInputElement
+ ).value = occupancyTypeId.toString()
+
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypeEdit--occupancyType'
+ ) as HTMLInputElement
+ ).value = occupancyType.occupancyType
+ },
+ onshown(modalElement, closeModalFunction) {
+ editCloseModalFunction = closeModalFunction
+
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypeEdit--occupancyType'
+ ) as HTMLInputElement
+ ).focus()
+
+ modalElement.querySelector('form')!.addEventListener('submit', doEdit)
+
+ bulmaJS.toggleHtmlClipped()
+ },
+ onremoved() {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ }
+
+ function openAddOccupancyTypeField(clickEvent: Event) {
+ const occupancyTypeId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyType'
+ ) as HTMLElement
+ ).dataset.occupancyTypeId!,
+ 10
+ )
+
+ let addCloseModalFunction: () => void
+
+ function doAdd(submitEvent: SubmitEvent) {
+ submitEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddOccupancyTypeField',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ occupancyTypes?: recordTypes.OccupancyType[]
+ allOccupancyTypeFields?: recordTypes.OccupancyTypeField[]
+ occupancyTypeFieldId?: number
+ }) => {
+ expandedOccupancyTypes.add(occupancyTypeId)
+ occupancyTypeResponseHandler(responseJSON)
+
+ if (responseJSON.success) {
+ addCloseModalFunction()
+ openEditOccupancyTypeField(
+ occupancyTypeId,
+ responseJSON.occupancyTypeFieldId!
+ )
+ }
}
-
- bulmaJS.confirm({
- title: `Delete ${exports.aliases.occupancy} Type`,
- message: `Are you sure you want to delete this ${exports.aliases.occupancy.toLowerCase()} type?`,
- contextualColorName: "warning",
- okButton: {
- text: `Yes, Delete ${exports.aliases.occupancy} Type`,
- callbackFunction: doDelete
- }
- });
+ )
}
- function openEditOccupancyType(clickEvent: Event): void {
- const occupancyTypeId = Number.parseInt(
- (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyType"
- ) as HTMLElement
- ).dataset.occupancyTypeId!,
- 10
- );
-
- const occupancyType = occupancyTypes.find((currentOccupancyType) => {
- return occupancyTypeId === currentOccupancyType.occupancyTypeId;
- })!;
-
- let editCloseModalFunction: () => void;
-
- function doEdit(submitEvent: SubmitEvent): void {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateOccupancyType",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- occupancyTypes?: recordTypes.OccupancyType[];
- allOccupancyTypeFields?: recordTypes.OccupancyTypeField[];
- }) => {
- occupancyTypeResponseHandler(responseJSON);
- if (responseJSON.success) {
- editCloseModalFunction();
- }
- }
- );
- }
-
- cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyType", {
- onshow(modalElement): void {
- los.populateAliases(modalElement);
-
- (
- modalElement.querySelector(
- "#occupancyTypeEdit--occupancyTypeId"
- ) as HTMLInputElement
- ).value = occupancyTypeId.toString();
-
- (
- modalElement.querySelector(
- "#occupancyTypeEdit--occupancyType"
- ) as HTMLInputElement
- ).value = occupancyType.occupancyType;
- },
- onshown(modalElement, closeModalFunction) {
- editCloseModalFunction = closeModalFunction;
-
- (
- modalElement.querySelector(
- "#occupancyTypeEdit--occupancyType"
- ) as HTMLInputElement
- ).focus();
-
- modalElement.querySelector("form")!.addEventListener("submit", doEdit);
-
- bulmaJS.toggleHtmlClipped();
- },
- onremoved() {
- bulmaJS.toggleHtmlClipped();
- }
- });
- }
-
- function openAddOccupancyTypeField(clickEvent: Event) {
- const occupancyTypeId = Number.parseInt(
- (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyType"
- ) as HTMLElement
- ).dataset.occupancyTypeId!,
- 10
- );
-
- let addCloseModalFunction: () => void;
-
- function doAdd(submitEvent: SubmitEvent) {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddOccupancyTypeField",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- occupancyTypes?: recordTypes.OccupancyType[];
- allOccupancyTypeFields?: recordTypes.OccupancyTypeField[];
- occupancyTypeFieldId?: number;
- }) => {
- expandedOccupancyTypes.add(occupancyTypeId);
- occupancyTypeResponseHandler(responseJSON);
-
- if (responseJSON.success) {
- addCloseModalFunction();
- openEditOccupancyTypeField(
- occupancyTypeId,
- responseJSON.occupancyTypeFieldId!
- );
- }
- }
- );
- }
-
- cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypeField", {
- onshow(modalElement) {
- los.populateAliases(modalElement);
-
- if (occupancyTypeId) {
- (
- modalElement.querySelector(
- "#occupancyTypeFieldAdd--occupancyTypeId"
- ) as HTMLInputElement
- ).value = occupancyTypeId.toString();
- }
- },
- onshown(modalElement, closeModalFunction) {
- addCloseModalFunction = closeModalFunction;
-
- (
- modalElement.querySelector(
- "#occupancyTypeFieldAdd--occupancyTypeField"
- ) as HTMLInputElement
- ).focus();
-
- modalElement.querySelector("form")!.addEventListener("submit", doAdd);
-
- bulmaJS.toggleHtmlClipped();
- },
- onremoved() {
- bulmaJS.toggleHtmlClipped();
- }
- });
- }
-
- function moveOccupancyType(clickEvent: MouseEvent) {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
-
- const occupancyTypeId = (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyType"
- ) as HTMLElement
- ).dataset.occupancyTypeId;
-
- cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveOccupancyTypeUp"
- : "doMoveOccupancyTypeDown"),
- {
- occupancyTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- occupancyTypeResponseHandler
- );
- }
-
- function openEditOccupancyTypeField(occupancyTypeId: number, occupancyTypeFieldId: number) {
- let occupancyType: recordTypes.OccupancyType | undefined;
+ cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyTypeField', {
+ onshow(modalElement) {
+ los.populateAliases(modalElement)
if (occupancyTypeId) {
- occupancyType = occupancyTypes.find((currentOccupancyType) => {
- return currentOccupancyType.occupancyTypeId === occupancyTypeId;
- });
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypeFieldAdd--occupancyTypeId'
+ ) as HTMLInputElement
+ ).value = occupancyTypeId.toString()
}
+ },
+ onshown(modalElement, closeModalFunction) {
+ addCloseModalFunction = closeModalFunction
- const occupancyTypeField = (
- occupancyType ? occupancyType.occupancyTypeFields! : allOccupancyTypeFields
- ).find((currentOccupancyTypeField) => {
- return currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId;
- })!;
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypeFieldAdd--occupancyTypeField'
+ ) as HTMLInputElement
+ ).focus()
- let minimumLengthElement: HTMLInputElement;
- let maximumLengthElement: HTMLInputElement;
- let patternElement: HTMLInputElement;
- let occupancyTypeFieldValuesElement: HTMLTextAreaElement;
+ modalElement.querySelector('form')!.addEventListener('submit', doAdd)
- let editCloseModalFunction: () => void;
+ bulmaJS.toggleHtmlClipped()
+ },
+ onremoved() {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ }
- function updateMaximumLengthMin(): void {
- maximumLengthElement.min = minimumLengthElement.value;
- }
+ function moveOccupancyType(clickEvent: MouseEvent) {
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
- function toggleInputFields(): void {
- if (occupancyTypeFieldValuesElement.value === "") {
- minimumLengthElement.disabled = false;
- maximumLengthElement.disabled = false;
- patternElement.disabled = false;
- } else {
- minimumLengthElement.disabled = true;
- maximumLengthElement.disabled = true;
- patternElement.disabled = true;
- }
- }
+ const occupancyTypeId = (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyType'
+ ) as HTMLElement
+ ).dataset.occupancyTypeId
- function doUpdate(submitEvent: SubmitEvent): void {
- submitEvent.preventDefault();
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveOccupancyTypeUp'
+ : 'doMoveOccupancyTypeDown'),
+ {
+ occupancyTypeId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ occupancyTypeResponseHandler
+ )
+ }
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateOccupancyTypeField",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- occupancyTypes?: recordTypes.OccupancyType[];
- }) => {
- occupancyTypeResponseHandler(responseJSON);
- if (responseJSON.success) {
- editCloseModalFunction();
- }
- }
- );
- }
+ function openEditOccupancyTypeField(
+ occupancyTypeId: number,
+ occupancyTypeFieldId: number
+ ) {
+ let occupancyType: recordTypes.OccupancyType | undefined
- function doDelete() {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteOccupancyTypeField",
- {
- occupancyTypeFieldId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- occupancyTypes?: recordTypes.OccupancyType[];
- }) => {
- occupancyTypeResponseHandler(responseJSON);
- if (responseJSON.success) {
- editCloseModalFunction();
- }
- }
- );
- }
-
- function confirmDoDelete() {
- bulmaJS.confirm({
- title: "Delete Field",
- message:
- "Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Field",
- callbackFunction: doDelete
- }
- });
- }
-
- cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyTypeField", {
- onshow: (modalElement) => {
- los.populateAliases(modalElement);
-
- (
- modalElement.querySelector(
- "#occupancyTypeFieldEdit--occupancyTypeFieldId"
- ) as HTMLInputElement
- ).value = occupancyTypeField.occupancyTypeFieldId!.toString();
-
- (
- modalElement.querySelector(
- "#occupancyTypeFieldEdit--occupancyTypeField"
- ) as HTMLInputElement
- ).value = occupancyTypeField.occupancyTypeField!;
-
- (
- modalElement.querySelector(
- "#occupancyTypeFieldEdit--isRequired"
- ) as HTMLSelectElement
- ).value = occupancyTypeField.isRequired ? "1" : "0";
-
- minimumLengthElement = modalElement.querySelector(
- "#occupancyTypeFieldEdit--minimumLength"
- ) as HTMLInputElement;
-
- minimumLengthElement.value = occupancyTypeField.minimumLength!.toString();
-
- maximumLengthElement = modalElement.querySelector(
- "#occupancyTypeFieldEdit--maximumLength"
- ) as HTMLInputElement;
-
- maximumLengthElement.value = occupancyTypeField.maximumLength!.toString();
-
- patternElement = modalElement.querySelector(
- "#occupancyTypeFieldEdit--pattern"
- ) as HTMLInputElement;
-
- patternElement.value = occupancyTypeField.pattern!;
-
- occupancyTypeFieldValuesElement = modalElement.querySelector(
- "#occupancyTypeFieldEdit--occupancyTypeFieldValues"
- ) as HTMLTextAreaElement;
-
- occupancyTypeFieldValuesElement.value =
- occupancyTypeField.occupancyTypeFieldValues!;
-
- toggleInputFields();
- },
- onshown: (modalElement, closeModalFunction) => {
- editCloseModalFunction = closeModalFunction;
-
- bulmaJS.init(modalElement);
- bulmaJS.toggleHtmlClipped();
- cityssm.enableNavBlocker();
-
- modalElement.querySelector("form")!.addEventListener("submit", doUpdate);
-
- minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin);
- updateMaximumLengthMin();
-
- occupancyTypeFieldValuesElement.addEventListener("keyup", toggleInputFields);
-
- modalElement
- .querySelector("#button--deleteOccupancyTypeField")!
- .addEventListener("click", confirmDoDelete);
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
- cityssm.disableNavBlocker();
- }
- });
+ if (occupancyTypeId) {
+ occupancyType = occupancyTypes.find((currentOccupancyType) => {
+ return currentOccupancyType.occupancyTypeId === occupancyTypeId
+ })
}
- function openEditOccupancyTypeFieldByClick(clickEvent: Event) {
- clickEvent.preventDefault();
+ const occupancyTypeField = (
+ occupancyType
+ ? occupancyType.occupancyTypeFields!
+ : allOccupancyTypeFields
+ ).find((currentOccupancyTypeField) => {
+ return (
+ currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId
+ )
+ })!
- const occupancyTypeFieldId = Number.parseInt(
- (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyTypeField"
- ) as HTMLElement
- ).dataset.occupancyTypeFieldId!,
- 10
- );
+ let minimumLengthElement: HTMLInputElement
+ let maximumLengthElement: HTMLInputElement
+ let patternElement: HTMLInputElement
+ let occupancyTypeFieldValuesElement: HTMLTextAreaElement
- const occupancyTypeId = Number.parseInt(
- (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyType"
- ) as HTMLElement
- ).dataset.occupancyTypeId!,
- 10
- );
+ let editCloseModalFunction: () => void
- openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId);
+ function updateMaximumLengthMin(): void {
+ maximumLengthElement.min = minimumLengthElement.value
}
- function moveOccupancyTypeField(clickEvent: MouseEvent) {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
-
- const occupancyTypeFieldId = (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyTypeField"
- ) as HTMLElement
- ).dataset.occupancyTypeFieldId;
-
- cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveOccupancyTypeFieldUp"
- : "doMoveOccupancyTypeFieldDown"),
- {
- occupancyTypeFieldId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- occupancyTypeResponseHandler
- );
+ function toggleInputFields(): void {
+ if (occupancyTypeFieldValuesElement.value === '') {
+ minimumLengthElement.disabled = false
+ maximumLengthElement.disabled = false
+ patternElement.disabled = false
+ } else {
+ minimumLengthElement.disabled = true
+ maximumLengthElement.disabled = true
+ patternElement.disabled = true
+ }
}
- function renderOccupancyTypeFields(
- panelElement: HTMLElement,
- occupancyTypeId: number | undefined,
- occupancyTypeFields: recordTypes.OccupancyTypeField[]
- ) {
- if (occupancyTypeFields.length === 0) {
- panelElement.insertAdjacentHTML(
- "beforeend",
- '' +
- '
' +
- '
There are no additional fields.
' +
- "
" +
- "
"
- );
- } else {
- for (const occupancyTypeField of occupancyTypeFields) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--occupancyTypeField";
+ function doUpdate(submitEvent: SubmitEvent): void {
+ submitEvent.preventDefault()
- if (occupancyTypeId && !expandedOccupancyTypes.has(occupancyTypeId)) {
- panelBlockElement.classList.add("is-hidden");
- }
-
- panelBlockElement.dataset.occupancyTypeFieldId =
- occupancyTypeField.occupancyTypeFieldId!.toString();
-
- panelBlockElement.innerHTML =
- '' +
- '
" +
- '
' +
- ('
' +
- los.getMoveUpDownButtonFieldHTML(
- "button--moveOccupancyTypeFieldUp",
- "button--moveOccupancyTypeFieldDown"
- ) +
- "
") +
- "
" +
- "
";
-
- panelBlockElement
- .querySelector(".button--editOccupancyTypeField")!
- .addEventListener("click", openEditOccupancyTypeFieldByClick);
-
- (
- panelBlockElement.querySelector(
- ".button--moveOccupancyTypeFieldUp"
- ) as HTMLButtonElement
- ).addEventListener("click", moveOccupancyTypeField);
-
- (
- panelBlockElement.querySelector(
- ".button--moveOccupancyTypeFieldDown"
- ) as HTMLButtonElement
- ).addEventListener("click", moveOccupancyTypeField);
-
- panelElement.append(panelBlockElement);
- }
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateOccupancyTypeField',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ occupancyTypes?: recordTypes.OccupancyType[]
+ }) => {
+ occupancyTypeResponseHandler(responseJSON)
+ if (responseJSON.success) {
+ editCloseModalFunction()
+ }
}
+ )
}
- function openAddOccupancyTypePrint(clickEvent: Event): void {
- const occupancyTypeId = (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyTypePrintList"
- ) as HTMLElement
- ).dataset.occupancyTypeId!;
+ function doDelete() {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteOccupancyTypeField',
+ {
+ occupancyTypeFieldId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ occupancyTypes?: recordTypes.OccupancyType[]
+ }) => {
+ occupancyTypeResponseHandler(responseJSON)
+ if (responseJSON.success) {
+ editCloseModalFunction()
+ }
+ }
+ )
+ }
- let closeAddModalFunction: () => void;
+ function confirmDoDelete() {
+ bulmaJS.confirm({
+ title: 'Delete Field',
+ message:
+ 'Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.',
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete Field',
+ callbackFunction: doDelete
+ }
+ })
+ }
- function doAdd(formEvent: SubmitEvent) {
- formEvent.preventDefault();
+ cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyTypeField', {
+ onshow: (modalElement) => {
+ los.populateAliases(modalElement)
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddOccupancyTypePrint",
- formEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- occupancyTypes?: recordTypes.OccupancyType[];
- allOccupancyTypeFields?: recordTypes.OccupancyTypeField[];
- }) => {
- if (responseJSON.success) {
- closeAddModalFunction();
- }
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypeFieldEdit--occupancyTypeFieldId'
+ ) as HTMLInputElement
+ ).value = occupancyTypeField.occupancyTypeFieldId!.toString()
- occupancyTypeResponseHandler(responseJSON);
- }
- );
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypeFieldEdit--occupancyTypeField'
+ ) as HTMLInputElement
+ ).value = occupancyTypeField.occupancyTypeField!
+
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypeFieldEdit--isRequired'
+ ) as HTMLSelectElement
+ ).value = occupancyTypeField.isRequired ? '1' : '0'
+
+ minimumLengthElement = modalElement.querySelector(
+ '#occupancyTypeFieldEdit--minimumLength'
+ ) as HTMLInputElement
+
+ minimumLengthElement.value =
+ occupancyTypeField.minimumLength!.toString()
+
+ maximumLengthElement = modalElement.querySelector(
+ '#occupancyTypeFieldEdit--maximumLength'
+ ) as HTMLInputElement
+
+ maximumLengthElement.value =
+ occupancyTypeField.maximumLength!.toString()
+
+ patternElement = modalElement.querySelector(
+ '#occupancyTypeFieldEdit--pattern'
+ ) as HTMLInputElement
+
+ patternElement.value = occupancyTypeField.pattern!
+
+ occupancyTypeFieldValuesElement = modalElement.querySelector(
+ '#occupancyTypeFieldEdit--occupancyTypeFieldValues'
+ ) as HTMLTextAreaElement
+
+ occupancyTypeFieldValuesElement.value =
+ occupancyTypeField.occupancyTypeFieldValues!
+
+ toggleInputFields()
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ editCloseModalFunction = closeModalFunction
+
+ bulmaJS.init(modalElement)
+ bulmaJS.toggleHtmlClipped()
+ cityssm.enableNavBlocker()
+
+ modalElement.querySelector('form')!.addEventListener('submit', doUpdate)
+
+ minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin)
+ updateMaximumLengthMin()
+
+ occupancyTypeFieldValuesElement.addEventListener(
+ 'keyup',
+ toggleInputFields
+ )
+
+ modalElement
+ .querySelector('#button--deleteOccupancyTypeField')!
+ .addEventListener('click', confirmDoDelete)
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ cityssm.disableNavBlocker()
+ }
+ })
+ }
+
+ function openEditOccupancyTypeFieldByClick(clickEvent: Event) {
+ clickEvent.preventDefault()
+
+ const occupancyTypeFieldId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyTypeField'
+ ) as HTMLElement
+ ).dataset.occupancyTypeFieldId!,
+ 10
+ )
+
+ const occupancyTypeId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyType'
+ ) as HTMLElement
+ ).dataset.occupancyTypeId!,
+ 10
+ )
+
+ openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId)
+ }
+
+ function moveOccupancyTypeField(clickEvent: MouseEvent) {
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
+
+ const occupancyTypeFieldId = (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyTypeField'
+ ) as HTMLElement
+ ).dataset.occupancyTypeFieldId
+
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveOccupancyTypeFieldUp'
+ : 'doMoveOccupancyTypeFieldDown'),
+ {
+ occupancyTypeFieldId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ occupancyTypeResponseHandler
+ )
+ }
+
+ function renderOccupancyTypeFields(
+ panelElement: HTMLElement,
+ occupancyTypeId: number | undefined,
+ occupancyTypeFields: recordTypes.OccupancyTypeField[]
+ ) {
+ if (occupancyTypeFields.length === 0) {
+ panelElement.insertAdjacentHTML(
+ 'beforeend',
+ '' +
+ '
' +
+ '
There are no additional fields.
' +
+ '
' +
+ '
'
+ )
+ } else {
+ for (const occupancyTypeField of occupancyTypeFields) {
+ const panelBlockElement = document.createElement('div')
+ panelBlockElement.className =
+ 'panel-block is-block container--occupancyTypeField'
+
+ if (occupancyTypeId && !expandedOccupancyTypes.has(occupancyTypeId)) {
+ panelBlockElement.classList.add('is-hidden')
}
- cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypePrint", {
- onshow(modalElement) {
- los.populateAliases(modalElement);
+ panelBlockElement.dataset.occupancyTypeFieldId =
+ occupancyTypeField.occupancyTypeFieldId!.toString()
- (
- modalElement.querySelector(
- "#occupancyTypePrintAdd--occupancyTypeId"
- ) as HTMLInputElement
- ).value = occupancyTypeId;
+ panelBlockElement.innerHTML =
+ '' +
+ '
' +
+ '
' +
+ ('
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveOccupancyTypeFieldUp',
+ 'button--moveOccupancyTypeFieldDown'
+ ) +
+ '
') +
+ '
' +
+ '
'
- const printSelectElement = modalElement.querySelector(
- "#occupancyTypePrintAdd--printEJS"
- ) as HTMLSelectElement;
+ panelBlockElement
+ .querySelector('.button--editOccupancyTypeField')!
+ .addEventListener('click', openEditOccupancyTypeFieldByClick)
- for (const [printEJS, printTitle] of Object.entries(
- exports.occupancyTypePrintTitles
- )) {
- const optionElement = document.createElement("option");
- optionElement.value = printEJS;
- optionElement.textContent = printTitle as string;
- printSelectElement.append(optionElement);
- }
- },
- onshown(modalElement, closeModalFunction) {
- closeAddModalFunction = closeModalFunction;
+ ;(
+ panelBlockElement.querySelector(
+ '.button--moveOccupancyTypeFieldUp'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveOccupancyTypeField)
- modalElement.querySelector("form")?.addEventListener("submit", doAdd);
- }
- });
+ ;(
+ panelBlockElement.querySelector(
+ '.button--moveOccupancyTypeFieldDown'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveOccupancyTypeField)
+
+ panelElement.append(panelBlockElement)
+ }
}
+ }
- function moveOccupancyTypePrint(clickEvent: MouseEvent): void {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
+ function openAddOccupancyTypePrint(clickEvent: Event): void {
+ const occupancyTypeId = (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyTypePrintList'
+ ) as HTMLElement
+ ).dataset.occupancyTypeId!
- const printEJS = (buttonElement.closest(".container--occupancyTypePrint") as HTMLElement)
- .dataset.printEJS;
+ let closeAddModalFunction: () => void
- const occupancyTypeId = (
- buttonElement.closest(".container--occupancyTypePrintList") as HTMLElement
- ).dataset.occupancyTypeId;
+ function doAdd(formEvent: SubmitEvent) {
+ formEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveOccupancyTypePrintUp"
- : "doMoveOccupancyTypePrintDown"),
- {
- occupancyTypeId,
- printEJS,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- occupancyTypeResponseHandler
- );
- }
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddOccupancyTypePrint',
+ formEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ occupancyTypes?: recordTypes.OccupancyType[]
+ allOccupancyTypeFields?: recordTypes.OccupancyTypeField[]
+ }) => {
+ if (responseJSON.success) {
+ closeAddModalFunction()
+ }
- function deleteOccupancyTypePrint(clickEvent: Event): void {
- clickEvent.preventDefault();
-
- const printEJS = (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyTypePrint"
- ) as HTMLElement
- ).dataset.printEJS;
-
- const occupancyTypeId = (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--occupancyTypePrintList"
- ) as HTMLElement
- ).dataset.occupancyTypeId;
-
- function doDelete() {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteOccupancyTypePrint",
- {
- occupancyTypeId,
- printEJS
- },
- occupancyTypeResponseHandler
- );
+ occupancyTypeResponseHandler(responseJSON)
}
-
- bulmaJS.confirm({
- title: "Delete Print",
- message: "Are you sure you want to remove this print option?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Remove Print",
- callbackFunction: doDelete
- }
- });
+ )
}
- function renderOccupancyTypePrints(
- panelElement: HTMLElement,
- occupancyTypeId: number,
- occupancyTypePrints: string[]
- ): void {
- if (occupancyTypePrints.length === 0) {
- panelElement.insertAdjacentHTML(
- "beforeend",
- `
+ cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyTypePrint', {
+ onshow(modalElement) {
+ los.populateAliases(modalElement)
+
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypePrintAdd--occupancyTypeId'
+ ) as HTMLInputElement
+ ).value = occupancyTypeId
+
+ const printSelectElement = modalElement.querySelector(
+ '#occupancyTypePrintAdd--printEJS'
+ ) as HTMLSelectElement
+
+ for (const [printEJS, printTitle] of Object.entries(
+ exports.occupancyTypePrintTitles
+ )) {
+ const optionElement = document.createElement('option')
+ optionElement.value = printEJS
+ optionElement.textContent = printTitle as string
+ printSelectElement.append(optionElement)
+ }
+ },
+ onshown(modalElement, closeModalFunction) {
+ closeAddModalFunction = closeModalFunction
+
+ modalElement.querySelector('form')?.addEventListener('submit', doAdd)
+ }
+ })
+ }
+
+ function moveOccupancyTypePrint(clickEvent: MouseEvent): void {
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
+
+ const printEJS = (
+ buttonElement.closest('.container--occupancyTypePrint') as HTMLElement
+ ).dataset.printEJS
+
+ const occupancyTypeId = (
+ buttonElement.closest('.container--occupancyTypePrintList') as HTMLElement
+ ).dataset.occupancyTypeId
+
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveOccupancyTypePrintUp'
+ : 'doMoveOccupancyTypePrintDown'),
+ {
+ occupancyTypeId,
+ printEJS,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ occupancyTypeResponseHandler
+ )
+ }
+
+ function deleteOccupancyTypePrint(clickEvent: Event): void {
+ clickEvent.preventDefault()
+
+ const printEJS = (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyTypePrint'
+ ) as HTMLElement
+ ).dataset.printEJS
+
+ const occupancyTypeId = (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--occupancyTypePrintList'
+ ) as HTMLElement
+ ).dataset.occupancyTypeId
+
+ function doDelete() {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteOccupancyTypePrint',
+ {
+ occupancyTypeId,
+ printEJS
+ },
+ occupancyTypeResponseHandler
+ )
+ }
+
+ bulmaJS.confirm({
+ title: 'Delete Print',
+ message: 'Are you sure you want to remove this print option?',
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Remove Print',
+ callbackFunction: doDelete
+ }
+ })
+ }
+
+ function renderOccupancyTypePrints(
+ panelElement: HTMLElement,
+ occupancyTypeId: number,
+ occupancyTypePrints: string[]
+ ): void {
+ if (occupancyTypePrints.length === 0) {
+ panelElement.insertAdjacentHTML(
+ 'beforeend',
+ `
There are no prints associated with this record.
`
- );
- } else {
- for (const printEJS of occupancyTypePrints) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--occupancyTypePrint";
+ )
+ } else {
+ for (const printEJS of occupancyTypePrints) {
+ const panelBlockElement = document.createElement('div')
+ panelBlockElement.className =
+ 'panel-block is-block container--occupancyTypePrint'
- panelBlockElement.dataset.printEJS = printEJS;
+ panelBlockElement.dataset.printEJS = printEJS
- const printTitle =
- printEJS === "*"
- ? "(All Available Prints)"
- : (exports.occupancyTypePrintTitles[printEJS] as string);
+ const printTitle =
+ printEJS === '*'
+ ? '(All Available Prints)'
+ : (exports.occupancyTypePrintTitles[printEJS] as string)
- let printIconClass = "fa-star";
+ let printIconClass = 'fa-star'
- if (printEJS.startsWith("pdf/")) {
- printIconClass = "fa-file-pdf";
- } else if (printEJS.startsWith("screen/")) {
- printIconClass = "fa-file";
- }
-
- panelBlockElement.innerHTML =
- '
' +
- '
' +
- ('
' +
- ' ' +
- "
") +
- ('
' +
- cityssm.escapeHTML(printTitle || printEJS) +
- "
") +
- "
" +
- '
' +
- ('
' +
- los.getMoveUpDownButtonFieldHTML(
- "button--moveOccupancyTypePrintUp",
- "button--moveOccupancyTypePrintDown"
- ) +
- "
") +
- ('
' +
- '' +
- ' ' +
- " " +
- "
" +
- "
") +
- "
" +
- "
";
-
- (
- panelBlockElement.querySelector(
- ".button--moveOccupancyTypePrintUp"
- ) as HTMLButtonElement
- ).addEventListener("click", moveOccupancyTypePrint);
-
- (
- panelBlockElement.querySelector(
- ".button--moveOccupancyTypePrintDown"
- ) as HTMLButtonElement
- ).addEventListener("click", moveOccupancyTypePrint);
-
- panelBlockElement
- .querySelector(".button--deleteOccupancyTypePrint")!
- .addEventListener("click", deleteOccupancyTypePrint);
-
- panelElement.append(panelBlockElement);
- }
+ if (printEJS.startsWith('pdf/')) {
+ printIconClass = 'fa-file-pdf'
+ } else if (printEJS.startsWith('screen/')) {
+ printIconClass = 'fa-file'
}
+
+ panelBlockElement.innerHTML =
+ '' +
+ '
' +
+ ('
' +
+ ' ' +
+ '
') +
+ ('
' +
+ cityssm.escapeHTML(printTitle || printEJS) +
+ '
') +
+ '
' +
+ '
' +
+ ('
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveOccupancyTypePrintUp',
+ 'button--moveOccupancyTypePrintDown'
+ ) +
+ '
') +
+ ('
' +
+ '' +
+ ' ' +
+ ' ' +
+ '
' +
+ '
') +
+ '
' +
+ ''
+
+ ;(
+ panelBlockElement.querySelector(
+ '.button--moveOccupancyTypePrintUp'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveOccupancyTypePrint)
+
+ ;(
+ panelBlockElement.querySelector(
+ '.button--moveOccupancyTypePrintDown'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveOccupancyTypePrint)
+
+ panelBlockElement
+ .querySelector('.button--deleteOccupancyTypePrint')!
+ .addEventListener('click', deleteOccupancyTypePrint)
+
+ panelElement.append(panelBlockElement)
+ }
+ }
+ }
+
+ function renderOccupancyTypes(): void {
+ occupancyTypesContainerElement.innerHTML =
+ '' +
+ '
' +
+ ('
' +
+ ('
' +
+ '
' +
+ ('
(All ' +
+ cityssm.escapeHTML(exports.aliases.occupancy) +
+ ' Types) ') +
+ '' +
+ '
') +
+ ('
' +
+ ('
' +
+ '' +
+ ' ' +
+ 'Add Field ' +
+ ' ' +
+ '
') +
+ '
') +
+ '
') +
+ '
' +
+ '
'
+
+ occupancyTypePrintsContainerElement.innerHTML = ''
+
+ renderOccupancyTypeFields(
+ occupancyTypesContainerElement.querySelector(
+ '#container--allOccupancyTypeFields'
+ ) as HTMLElement,
+ undefined,
+ allOccupancyTypeFields
+ )
+
+ occupancyTypesContainerElement
+ .querySelector('.button--addOccupancyTypeField')!
+ .addEventListener('click', openAddOccupancyTypeField)
+
+ if (occupancyTypes.length === 0) {
+ occupancyTypesContainerElement.insertAdjacentHTML(
+ 'afterbegin',
+ `There are no active ${los.escapedAliases.occupancy} types.
+
`
+ )
+
+ occupancyTypePrintsContainerElement.insertAdjacentHTML(
+ 'afterbegin',
+ `There are no active ${los.escapedAliases.occupancy} types.
+
`
+ )
+
+ return
}
- function renderOccupancyTypes(): void {
- occupancyTypesContainerElement.innerHTML =
- '' +
- '
' +
- ('
' +
- ('
' +
- '
' +
- ('
(All ' +
- cityssm.escapeHTML(exports.aliases.occupancy) +
- " Types) ") +
- "" +
- "
") +
- ('
' +
- ('
' +
- '' +
- ' ' +
- "Add Field " +
- " " +
- "
") +
- "
") +
- "
") +
- "
" +
- "
";
+ for (const occupancyType of occupancyTypes) {
+ // Types and Fields
+ {
+ const occupancyTypeContainer = document.createElement('div')
- occupancyTypePrintsContainerElement.innerHTML = "";
+ occupancyTypeContainer.className = 'panel container--occupancyType'
+
+ occupancyTypeContainer.dataset.occupancyTypeId =
+ occupancyType.occupancyTypeId.toString()
+
+ occupancyTypeContainer.innerHTML =
+ '' +
+ '
' +
+ ('
' +
+ '
' +
+ '' +
+ (expandedOccupancyTypes.has(occupancyType.occupancyTypeId)
+ ? ' '
+ : ' ') +
+ ' ' +
+ '
' +
+ '
' +
+ '
' +
+ cityssm.escapeHTML(occupancyType.occupancyType) +
+ ' ' +
+ '' +
+ '
') +
+ ('
' +
+ ('
' +
+ '' +
+ ' ' +
+ 'Delete ' +
+ ' ' +
+ '
') +
+ ('
' +
+ '' +
+ ' ' +
+ 'Edit ' +
+ exports.aliases.occupancy +
+ ' Type ' +
+ ' ' +
+ '
') +
+ ('
' +
+ '' +
+ ' ' +
+ 'Add Field ' +
+ ' ' +
+ '
') +
+ ('
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveOccupancyTypeUp',
+ 'button--moveOccupancyTypeDown'
+ ) +
+ '
') +
+ '
') +
+ '
' +
+ '
'
renderOccupancyTypeFields(
- occupancyTypesContainerElement.querySelector(
- "#container--allOccupancyTypeFields"
- ) as HTMLElement,
- undefined,
- allOccupancyTypeFields
- );
+ occupancyTypeContainer,
+ occupancyType.occupancyTypeId,
+ occupancyType.occupancyTypeFields!
+ )
- occupancyTypesContainerElement
- .querySelector(".button--addOccupancyTypeField")!
- .addEventListener("click", openAddOccupancyTypeField);
+ occupancyTypeContainer
+ .querySelector('.button--toggleOccupancyTypeFields')!
+ .addEventListener('click', toggleOccupancyTypeFields)
- if (occupancyTypes.length === 0) {
- occupancyTypesContainerElement.insertAdjacentHTML(
- "afterbegin",
- `There are no active ${los.escapedAliases.occupancy} types.
-
`
- );
+ occupancyTypeContainer
+ .querySelector('.button--deleteOccupancyType')!
+ .addEventListener('click', deleteOccupancyType)
- occupancyTypePrintsContainerElement.insertAdjacentHTML(
- "afterbegin",
- `There are no active ${los.escapedAliases.occupancy} types.
-
`
- );
+ occupancyTypeContainer
+ .querySelector('.button--editOccupancyType')!
+ .addEventListener('click', openEditOccupancyType)
- return;
- }
+ occupancyTypeContainer
+ .querySelector('.button--addOccupancyTypeField')!
+ .addEventListener('click', openAddOccupancyTypeField)
- for (const occupancyType of occupancyTypes) {
- // Types and Fields
- {
- const occupancyTypeContainer = document.createElement("div");
+ ;(
+ occupancyTypeContainer.querySelector(
+ '.button--moveOccupancyTypeUp'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveOccupancyType)
- occupancyTypeContainer.className = "panel container--occupancyType";
+ ;(
+ occupancyTypeContainer.querySelector(
+ '.button--moveOccupancyTypeDown'
+ ) as HTMLButtonElement
+ ).addEventListener('click', moveOccupancyType)
- occupancyTypeContainer.dataset.occupancyTypeId =
- occupancyType.occupancyTypeId.toString();
+ occupancyTypesContainerElement.append(occupancyTypeContainer)
+ }
- occupancyTypeContainer.innerHTML =
- '' +
- '
' +
- ('
' +
- '
' +
- '' +
- (expandedOccupancyTypes.has(occupancyType.occupancyTypeId)
- ? ' '
- : ' ') +
- " " +
- "
" +
- '
' +
- '
' +
- cityssm.escapeHTML(occupancyType.occupancyType) +
- " " +
- "" +
- "
") +
- ('
' +
- ('
' +
- '' +
- ' ' +
- "Delete " +
- " " +
- "
") +
- ('
' +
- '' +
- ' ' +
- "Edit " +
- exports.aliases.occupancy +
- " Type " +
- " " +
- "
") +
- ('
' +
- '' +
- ' ' +
- "Add Field " +
- " " +
- "
") +
- ('
' +
- los.getMoveUpDownButtonFieldHTML(
- "button--moveOccupancyTypeUp",
- "button--moveOccupancyTypeDown"
- ) +
- "
") +
- "
") +
- "
" +
- "
";
+ // Prints
+ {
+ const occupancyTypePrintContainer = document.createElement('div')
- renderOccupancyTypeFields(
- occupancyTypeContainer,
- occupancyType.occupancyTypeId,
- occupancyType.occupancyTypeFields!
- );
+ occupancyTypePrintContainer.className =
+ 'panel container--occupancyTypePrintList'
- occupancyTypeContainer
- .querySelector(".button--toggleOccupancyTypeFields")!
- .addEventListener("click", toggleOccupancyTypeFields);
+ occupancyTypePrintContainer.dataset.occupancyTypeId =
+ occupancyType.occupancyTypeId.toString()
- occupancyTypeContainer
- .querySelector(".button--deleteOccupancyType")!
- .addEventListener("click", deleteOccupancyType);
+ occupancyTypePrintContainer.innerHTML =
+ '' +
+ '
' +
+ ('
' +
+ '
' +
+ '
' +
+ cityssm.escapeHTML(occupancyType.occupancyType) +
+ ' ' +
+ '' +
+ '
') +
+ ('
' +
+ ('
' +
+ '' +
+ ' ' +
+ 'Add Print ' +
+ ' ' +
+ '
') +
+ '
') +
+ '
' +
+ '
'
- occupancyTypeContainer
- .querySelector(".button--editOccupancyType")!
- .addEventListener("click", openEditOccupancyType);
+ renderOccupancyTypePrints(
+ occupancyTypePrintContainer,
+ occupancyType.occupancyTypeId,
+ occupancyType.occupancyTypePrints!
+ )
- occupancyTypeContainer
- .querySelector(".button--addOccupancyTypeField")!
- .addEventListener("click", openAddOccupancyTypeField);
+ occupancyTypePrintContainer
+ .querySelector('.button--addOccupancyTypePrint')!
+ .addEventListener('click', openAddOccupancyTypePrint)
- (
- occupancyTypeContainer.querySelector(
- ".button--moveOccupancyTypeUp"
- ) as HTMLButtonElement
- ).addEventListener("click", moveOccupancyType);
-
- (
- occupancyTypeContainer.querySelector(
- ".button--moveOccupancyTypeDown"
- ) as HTMLButtonElement
- ).addEventListener("click", moveOccupancyType);
-
- occupancyTypesContainerElement.append(occupancyTypeContainer);
- }
-
- // Prints
- {
- const occupancyTypePrintContainer = document.createElement("div");
-
- occupancyTypePrintContainer.className = "panel container--occupancyTypePrintList";
-
- occupancyTypePrintContainer.dataset.occupancyTypeId =
- occupancyType.occupancyTypeId.toString();
-
- occupancyTypePrintContainer.innerHTML =
- '' +
- '
' +
- ('
' +
- '
' +
- '
' +
- cityssm.escapeHTML(occupancyType.occupancyType) +
- " " +
- "" +
- "
") +
- ('
' +
- ('
' +
- '' +
- ' ' +
- "Add Print " +
- " " +
- "
") +
- "
") +
- "
" +
- "
";
-
- renderOccupancyTypePrints(
- occupancyTypePrintContainer,
- occupancyType.occupancyTypeId,
- occupancyType.occupancyTypePrints!
- );
-
- occupancyTypePrintContainer
- .querySelector(".button--addOccupancyTypePrint")!
- .addEventListener("click", openAddOccupancyTypePrint);
-
- occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer);
- }
- }
+ occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer)
+ }
}
+ }
- document.querySelector("#button--addOccupancyType")!.addEventListener("click", () => {
- let addCloseModalFunction: () => void;
+ document
+ .querySelector('#button--addOccupancyType')!
+ .addEventListener('click', () => {
+ let addCloseModalFunction: () => void
- const doAdd = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+ const doAdd = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddOccupancyType",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- occupancyTypes?: recordTypes.OccupancyType[];
- }) => {
- if (responseJSON.success) {
- addCloseModalFunction();
- occupancyTypes = responseJSON.occupancyTypes!;
- renderOccupancyTypes();
- } else {
- bulmaJS.alert({
- title: "Error Adding " + exports.aliases.occupancy + " Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyType", {
- onshow: (modalElement) => {
- los.populateAliases(modalElement);
- },
- onshown: (modalElement, closeModalFunction) => {
- addCloseModalFunction = closeModalFunction;
-
- (
- modalElement.querySelector(
- "#occupancyTypeAdd--occupancyType"
- ) as HTMLInputElement
- ).focus();
-
- modalElement.querySelector("form")!.addEventListener("submit", doAdd);
-
- bulmaJS.toggleHtmlClipped();
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddOccupancyType',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ occupancyTypes?: recordTypes.OccupancyType[]
+ }) => {
+ if (responseJSON.success) {
+ addCloseModalFunction()
+ occupancyTypes = responseJSON.occupancyTypes!
+ renderOccupancyTypes()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Adding ' + exports.aliases.occupancy + ' Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
- });
+ }
+ )
+ }
- renderOccupancyTypes();
-})();
+ cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyType', {
+ onshow: (modalElement) => {
+ los.populateAliases(modalElement)
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ addCloseModalFunction = closeModalFunction
+
+ ;(
+ modalElement.querySelector(
+ '#occupancyTypeAdd--occupancyType'
+ ) as HTMLInputElement
+ ).focus()
+
+ modalElement.querySelector('form')!.addEventListener('submit', doAdd)
+
+ bulmaJS.toggleHtmlClipped()
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ })
+
+ renderOccupancyTypes()
+})()
diff --git a/public-typescript/adminTables.js b/public-typescript/adminTables.js
index c6ac93d8..9237b862 100644
--- a/public-typescript/adminTables.js
+++ b/public-typescript/adminTables.js
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
const inputElement = changeEvent.currentTarget;
const fontAwesomeIconClass = inputElement.value;
inputElement
- .closest(".field")
- .querySelectorAll(".button.is-static")[1].innerHTML = ` `;
+ .closest('.field')
+ .querySelectorAll('.button.is-static')[1].innerHTML = ` `;
}
"use strict";
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
@@ -19,28 +19,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
delete exports.workOrderTypes;
const updateWorkOrderType = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateWorkOrderType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateWorkOrderType', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes;
bulmaJS.alert({
- message: "Work Order Type Updated Successfully",
- contextualColorName: "success"
+ message: 'Work Order Type Updated Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Updating Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const deleteWorkOrderType = (clickEvent) => {
- const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const tableRowElement = clickEvent.currentTarget.closest('tr');
const workOrderTypeId = tableRowElement.dataset.workOrderTypeId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteWorkOrderType", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteWorkOrderType', {
workOrderTypeId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -52,40 +52,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
tableRowElement.remove();
}
bulmaJS.alert({
- message: "Work Order Type Deleted Successfully",
- contextualColorName: "success"
+ message: 'Work Order Type Deleted Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Deleting Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete Work Order Type",
+ title: 'Delete Work Order Type',
message: `Are you sure you want to delete this work order type?
Note that no work orders will be removed.`,
messageIsHtml: true,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Work Order Type",
+ text: 'Yes, Delete Work Order Type',
callbackFunction: doDelete
}
});
};
const moveWorkOrderType = (clickEvent) => {
const buttonElement = clickEvent.currentTarget;
- const tableRowElement = buttonElement.closest("tr");
+ const tableRowElement = buttonElement.closest('tr');
const workOrderTypeId = tableRowElement.dataset.workOrderTypeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveWorkOrderTypeUp" : "doMoveWorkOrderTypeDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up' ? 'doMoveWorkOrderTypeUp' : 'doMoveWorkOrderTypeDown'), {
workOrderTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes;
@@ -93,79 +93,79 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Moving Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Moving Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const renderWorkOrderTypes = () => {
- const containerElement = document.querySelector("#container--workOrderTypes");
+ const containerElement = document.querySelector('#container--workOrderTypes');
if (workOrderTypes.length === 0) {
containerElement.innerHTML = `
There are no active work order types.
`;
return;
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
for (const workOrderType of workOrderTypes) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.workOrderTypeId = workOrderType.workOrderTypeId.toString();
tableRowElement.innerHTML =
- "" +
- "' +
+ ' ' +
'' +
'' +
'
' +
- los.getMoveUpDownButtonFieldHTML("button--moveWorkOrderTypeUp", "button--moveWorkOrderTypeDown", false) +
- "
" +
+ los.getMoveUpDownButtonFieldHTML('button--moveWorkOrderTypeUp', 'button--moveWorkOrderTypeDown', false) +
+ '
' +
'' +
'' +
' ' +
- " " +
- "
" +
- "" +
- " ";
- tableRowElement.querySelector("form").addEventListener("submit", updateWorkOrderType);
- tableRowElement.querySelector(".button--moveWorkOrderTypeUp").addEventListener("click", moveWorkOrderType);
- tableRowElement.querySelector(".button--moveWorkOrderTypeDown").addEventListener("click", moveWorkOrderType);
+ '' +
+ '' +
+ '' +
+ '';
+ tableRowElement.querySelector('form').addEventListener('submit', updateWorkOrderType);
+ tableRowElement.querySelector('.button--moveWorkOrderTypeUp').addEventListener('click', moveWorkOrderType);
+ tableRowElement.querySelector('.button--moveWorkOrderTypeDown').addEventListener('click', moveWorkOrderType);
tableRowElement
- .querySelector(".button--deleteWorkOrderType")
- .addEventListener("click", deleteWorkOrderType);
+ .querySelector('.button--deleteWorkOrderType')
+ .addEventListener('click', deleteWorkOrderType);
containerElement.append(tableRowElement);
}
};
- document.querySelector("#form--addWorkOrderType").addEventListener("submit", (submitEvent) => {
+ document.querySelector('#form--addWorkOrderType').addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
const formElement = submitEvent.currentTarget;
- cityssm.postJSON(los.urlPrefix + "/admin/doAddWorkOrderType", formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddWorkOrderType', formElement, (responseJSON) => {
if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes;
renderWorkOrderTypes();
formElement.reset();
- formElement.querySelector("input").focus();
+ formElement.querySelector('input').focus();
}
else {
bulmaJS.alert({
- title: "Error Adding Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -179,28 +179,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
delete exports.workOrderMilestoneTypes;
const updateWorkOrderMilestoneType = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateWorkOrderMilestoneType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateWorkOrderMilestoneType', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes;
bulmaJS.alert({
- message: "Work Order Milestone Type Updated Successfully",
- contextualColorName: "success"
+ message: 'Work Order Milestone Type Updated Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Updating Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const deleteWorkOrderMilestoneType = (clickEvent) => {
- const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const tableRowElement = clickEvent.currentTarget.closest('tr');
const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteWorkOrderMilestoneType", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteWorkOrderMilestoneType', {
workOrderMilestoneTypeId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -212,42 +212,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
tableRowElement.remove();
}
bulmaJS.alert({
- message: "Work Order Milestone Type Deleted Successfully",
- contextualColorName: "success"
+ message: 'Work Order Milestone Type Deleted Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Deleting Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete Work Order Milestone Type",
+ title: 'Delete Work Order Milestone Type',
message: `Are you sure you want to delete this work order milestone type?
Note that no work orders will be removed.`,
messageIsHtml: true,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Work Order Milestone Type",
+ text: 'Yes, Delete Work Order Milestone Type',
callbackFunction: doDelete
}
});
};
const moveWorkOrderMilestoneType = (clickEvent) => {
const buttonElement = clickEvent.currentTarget;
- const tableRowElement = buttonElement.closest("tr");
+ const tableRowElement = buttonElement.closest('tr');
const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveWorkOrderMilestoneTypeUp"
- : "doMoveWorkOrderMilestoneTypeDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveWorkOrderMilestoneTypeUp'
+ : 'doMoveWorkOrderMilestoneTypeDown'), {
workOrderMilestoneTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes;
@@ -255,29 +255,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Moving Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Moving Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const renderWorkOrderMilestoneTypes = () => {
- const containerElement = document.querySelector("#container--workOrderMilestoneTypes");
+ const containerElement = document.querySelector('#container--workOrderMilestoneTypes');
if (workOrderMilestoneTypes.length === 0) {
containerElement.innerHTML = `
There are no active work order milestone types.
`;
return;
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
for (const workOrderMilestoneType of workOrderMilestoneTypes) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.workOrderMilestoneTypeId =
workOrderMilestoneType.workOrderMilestoneTypeId.toString();
tableRowElement.innerHTML =
- "" +
- "" +
+ '' +
+ '' +
' ' +
@@ -286,49 +286,49 @@ Object.defineProperty(exports, "__esModule", { value: true });
' ' +
- "" +
+ '' +
'' +
' ' +
- "
" +
- "") +
- " " +
- " " +
+ '' +
+ '') +
+ ' ' +
+ ' ' +
'' +
'' +
'
' +
- los.getMoveUpDownButtonFieldHTML("button--moveWorkOrderMilestoneTypeUp", "button--moveWorkOrderMilestoneTypeDown", false) +
- "
" +
+ los.getMoveUpDownButtonFieldHTML('button--moveWorkOrderMilestoneTypeUp', 'button--moveWorkOrderMilestoneTypeDown', false) +
+ '
' +
'' +
'' +
' ' +
- " " +
- "
" +
- "" +
- " ";
- tableRowElement.querySelector("form").addEventListener("submit", updateWorkOrderMilestoneType);
- tableRowElement.querySelector(".button--moveWorkOrderMilestoneTypeUp").addEventListener("click", moveWorkOrderMilestoneType);
- tableRowElement.querySelector(".button--moveWorkOrderMilestoneTypeDown").addEventListener("click", moveWorkOrderMilestoneType);
+ '' +
+ '' +
+ '' +
+ '';
+ tableRowElement.querySelector('form').addEventListener('submit', updateWorkOrderMilestoneType);
+ tableRowElement.querySelector('.button--moveWorkOrderMilestoneTypeUp').addEventListener('click', moveWorkOrderMilestoneType);
+ tableRowElement.querySelector('.button--moveWorkOrderMilestoneTypeDown').addEventListener('click', moveWorkOrderMilestoneType);
tableRowElement
- .querySelector(".button--deleteWorkOrderMilestoneType")
- .addEventListener("click", deleteWorkOrderMilestoneType);
+ .querySelector('.button--deleteWorkOrderMilestoneType')
+ .addEventListener('click', deleteWorkOrderMilestoneType);
containerElement.append(tableRowElement);
}
};
- document.querySelector("#form--addWorkOrderMilestoneType").addEventListener("submit", (submitEvent) => {
+ document.querySelector('#form--addWorkOrderMilestoneType').addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
const formElement = submitEvent.currentTarget;
- cityssm.postJSON(los.urlPrefix + "/admin/doAddWorkOrderMilestoneType", formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddWorkOrderMilestoneType', formElement, (responseJSON) => {
if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes;
renderWorkOrderMilestoneTypes();
formElement.reset();
- formElement.querySelector("input").focus();
+ formElement.querySelector('input').focus();
}
else {
bulmaJS.alert({
- title: "Error Adding Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -342,28 +342,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
delete exports.lotStatuses;
const updateLotStatus = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotStatus", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateLotStatus', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses;
bulmaJS.alert({
- message: los.escapedAliases.Lot + " Status Updated Successfully",
- contextualColorName: "success"
+ message: los.escapedAliases.Lot + ' Status Updated Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Updating " + los.escapedAliases.Lot + " Status",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating ' + los.escapedAliases.Lot + ' Status',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const deleteLotStatus = (clickEvent) => {
- const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const tableRowElement = clickEvent.currentTarget.closest('tr');
const lotStatusId = tableRowElement.dataset.lotStatusId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotStatus", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteLotStatus', {
lotStatusId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -375,15 +375,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
tableRowElement.remove();
}
bulmaJS.alert({
- message: los.escapedAliases.Lot + " Status Deleted Successfully",
- contextualColorName: "success"
+ message: los.escapedAliases.Lot + ' Status Deleted Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Deleting " + los.escapedAliases.Lot + " Status",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting ' + los.escapedAliases.Lot + ' Status',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -393,22 +393,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
message: `Are you sure you want to delete this status?
Note that no ${los.escapedAliases.lot} will be removed.`,
messageIsHtml: true,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Status",
+ text: 'Yes, Delete Status',
callbackFunction: doDelete
}
});
};
const moveLotStatus = (clickEvent) => {
const buttonElement = clickEvent.currentTarget;
- const tableRowElement = buttonElement.closest("tr");
+ const tableRowElement = buttonElement.closest('tr');
const lotStatusId = tableRowElement.dataset.lotStatusId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveLotStatusUp" : "doMoveLotStatusDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up' ? 'doMoveLotStatusUp' : 'doMoveLotStatusDown'), {
lotStatusId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses;
@@ -416,28 +416,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Moving " + exports.aliases.lot + " Status",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Moving ' + exports.aliases.lot + ' Status',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const renderLotStatuses = () => {
- const containerElement = document.querySelector("#container--lotStatuses");
+ const containerElement = document.querySelector('#container--lotStatuses');
if (lotStatuses.length === 0) {
containerElement.innerHTML = `
There are no active ${los.escapedAliases.lot} statuses.
`;
return;
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
for (const lotStatus of lotStatuses) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotStatusId = lotStatus.lotStatusId.toString();
tableRowElement.innerHTML =
- "" +
- "" +
+ '' +
+ '' +
' ' +
@@ -447,47 +447,47 @@ Object.defineProperty(exports, "__esModule", { value: true });
(' value="' + cityssm.escapeHTML(lotStatus.lotStatus) + '"') +
(' aria-label="' + cityssm.escapeHTML(exports.aliases.lot) + ' Status"') +
' maxlength="100" required />' +
- "" +
+ '' +
'' +
' ' +
- "
" +
- "") +
- " " +
- " " +
+ '' +
+ '') +
+ ' ' +
+ ' ' +
'' +
'' +
'
' +
- los.getMoveUpDownButtonFieldHTML("button--moveLotStatusUp", "button--moveLotStatusDown", false) +
- "
" +
+ los.getMoveUpDownButtonFieldHTML('button--moveLotStatusUp', 'button--moveLotStatusDown', false) +
+ '
' +
'' +
'' +
' ' +
- " " +
- "
" +
- "" +
- " ";
- tableRowElement.querySelector("form").addEventListener("submit", updateLotStatus);
- tableRowElement.querySelector(".button--moveLotStatusUp").addEventListener("click", moveLotStatus);
- tableRowElement.querySelector(".button--moveLotStatusDown").addEventListener("click", moveLotStatus);
- tableRowElement.querySelector(".button--deleteLotStatus").addEventListener("click", deleteLotStatus);
+ '' +
+ '' +
+ '' +
+ '';
+ tableRowElement.querySelector('form').addEventListener('submit', updateLotStatus);
+ tableRowElement.querySelector('.button--moveLotStatusUp').addEventListener('click', moveLotStatus);
+ tableRowElement.querySelector('.button--moveLotStatusDown').addEventListener('click', moveLotStatus);
+ tableRowElement.querySelector('.button--deleteLotStatus').addEventListener('click', deleteLotStatus);
containerElement.append(tableRowElement);
}
};
- document.querySelector("#form--addLotStatus").addEventListener("submit", (submitEvent) => {
+ document.querySelector('#form--addLotStatus').addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
const formElement = submitEvent.currentTarget;
- cityssm.postJSON(los.urlPrefix + "/admin/doAddLotStatus", formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddLotStatus', formElement, (responseJSON) => {
if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses;
renderLotStatuses();
formElement.reset();
- formElement.querySelector("input").focus();
+ formElement.querySelector('input').focus();
}
else {
bulmaJS.alert({
title: `Error Adding ${los.escapedAliases.Lot} Status`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -501,28 +501,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
delete exports.lotOccupantTypes;
const updateLotOccupantType = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotOccupantType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateLotOccupantType', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes;
bulmaJS.alert({
message: `${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type Updated Successfully`,
- contextualColorName: "success"
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
title: `Error Updating ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const deleteLotOccupantType = (clickEvent) => {
- const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const tableRowElement = clickEvent.currentTarget.closest('tr');
const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotOccupantType", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteLotOccupantType', {
lotOccupantTypeId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -535,14 +535,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
bulmaJS.alert({
message: `${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type Deleted Successfully`,
- contextualColorName: "success"
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
title: `Error Deleting ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -552,7 +552,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
message: `Are you sure you want to delete this ${los.escapedAliases.lot} ${los.escapedAliases.occupant} type?
Note that no ${los.escapedAliases.lot} ${los.escapedAliases.occupants} will be removed.`,
messageIsHtml: true,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
text: `Yes, Delete ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
callbackFunction: doDelete
@@ -561,15 +561,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
};
const moveLotOccupantType = (clickEvent) => {
const buttonElement = clickEvent.currentTarget;
- const tableRowElement = buttonElement.closest("tr");
+ const tableRowElement = buttonElement.closest('tr');
const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveLotOccupantTypeUp"
- : "doMoveLotOccupantTypeDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up' ? 'doMoveLotOccupantTypeUp' : 'doMoveLotOccupantTypeDown'), {
lotOccupantTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes;
@@ -578,40 +576,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
else {
bulmaJS.alert({
title: `Error Moving ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const renderLotOccupantTypes = () => {
- const containerElement = document.querySelector("#container--lotOccupantTypes");
+ const containerElement = document.querySelector('#container--lotOccupantTypes');
if (lotOccupantTypes.length === 0) {
containerElement.innerHTML = `
There are no active ${los.escapedAliases.lot} ${los.escapedAliases.occupant} types.
`;
return;
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
for (const lotOccupantType of lotOccupantTypes) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotOccupantTypeId = lotOccupantType.lotOccupantTypeId.toString();
- const formId = "form--lotOccupantType-" + lotOccupantType.lotOccupantTypeId;
+ const formId = 'form--lotOccupantType-' + lotOccupantType.lotOccupantTypeId;
tableRowElement.innerHTML =
- "" +
+ ' ' +
('") +
- " " +
- "" +
+ '' +
+ '') +
+ ' ' +
+ '' +
('' +
'
fa-
' +
'
' +
@@ -621,70 +619,70 @@ Object.defineProperty(exports, "__esModule", { value: true });
' list="datalist--fontAwesomeIconClass"' +
' aria-label="Icon Name"' +
' maxlength="50" />' +
- "
" +
+ '
' +
'' +
'
' +
- "") +
- " " +
- ("" +
+ '') +
+ ' ' +
+ ('' +
('') +
' " +
+ ' />' +
' ' +
- " " +
- " ") +
+ '' +
+ '') +
'' +
'' +
'
' +
- los.getMoveUpDownButtonFieldHTML("button--moveLotOccupantTypeUp", "button--moveLotOccupantTypeDown", false) +
- "
" +
+ los.getMoveUpDownButtonFieldHTML('button--moveLotOccupantTypeUp', 'button--moveLotOccupantTypeDown', false) +
+ '
' +
'' +
'' +
' ' +
- " " +
- "
" +
- "" +
- " ";
+ '' +
+ '' +
+ '' +
+ '';
const fontAwesomeInputElement = tableRowElement.querySelector("input[name='fontAwesomeIconClass']");
- fontAwesomeInputElement.addEventListener("keyup", refreshFontAwesomeIcon);
- fontAwesomeInputElement.addEventListener("change", refreshFontAwesomeIcon);
- tableRowElement.querySelector("form").addEventListener("submit", updateLotOccupantType);
- tableRowElement.querySelector(".button--moveLotOccupantTypeUp").addEventListener("click", moveLotOccupantType);
- tableRowElement.querySelector(".button--moveLotOccupantTypeDown").addEventListener("click", moveLotOccupantType);
+ fontAwesomeInputElement.addEventListener('keyup', refreshFontAwesomeIcon);
+ fontAwesomeInputElement.addEventListener('change', refreshFontAwesomeIcon);
+ tableRowElement.querySelector('form').addEventListener('submit', updateLotOccupantType);
+ tableRowElement.querySelector('.button--moveLotOccupantTypeUp').addEventListener('click', moveLotOccupantType);
+ tableRowElement.querySelector('.button--moveLotOccupantTypeDown').addEventListener('click', moveLotOccupantType);
tableRowElement
- .querySelector(".button--deleteLotOccupantType")
- .addEventListener("click", deleteLotOccupantType);
+ .querySelector('.button--deleteLotOccupantType')
+ .addEventListener('click', deleteLotOccupantType);
containerElement.append(tableRowElement);
}
};
- document.querySelector("#form--addLotOccupantType").addEventListener("submit", (submitEvent) => {
+ document.querySelector('#form--addLotOccupantType').addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
const formElement = submitEvent.currentTarget;
- cityssm.postJSON(los.urlPrefix + "/admin/doAddLotOccupantType", formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddLotOccupantType', formElement, (responseJSON) => {
if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes;
renderLotOccupantTypes();
formElement.reset();
- formElement.querySelector("input").focus();
+ formElement.querySelector('input').focus();
}
else {
bulmaJS.alert({
title: `Error Adding ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
diff --git a/public-typescript/adminTables/adminTables.js b/public-typescript/adminTables/adminTables.js
index c3ca4c3f..44288e47 100644
--- a/public-typescript/adminTables/adminTables.js
+++ b/public-typescript/adminTables/adminTables.js
@@ -9,8 +9,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
const inputElement = changeEvent.currentTarget;
const fontAwesomeIconClass = inputElement.value;
inputElement
- .closest(".field")
- .querySelectorAll(".button.is-static")[1].innerHTML = ` `;
+ .closest('.field')
+ .querySelectorAll('.button.is-static')[1].innerHTML = ` `;
}
//=include adminTablesWorkOrderTypes.js
//=include adminTablesWorkOrderMilestoneTypes.js
diff --git a/public-typescript/adminTables/adminTables.ts b/public-typescript/adminTables/adminTables.ts
index 08f939d2..526b09b6 100644
--- a/public-typescript/adminTables/adminTables.ts
+++ b/public-typescript/adminTables/adminTables.ts
@@ -1,26 +1,26 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../../types/globalTypes";
+import type * as globalTypes from '../../types/globalTypes'
-(() => {
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- const los = exports.los as globalTypes.LOS;
+;(() => {
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ const los = exports.los as globalTypes.LOS
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- function refreshFontAwesomeIcon(changeEvent: Event) {
- const inputElement = changeEvent.currentTarget as HTMLInputElement;
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
+ function refreshFontAwesomeIcon(changeEvent: Event) {
+ const inputElement = changeEvent.currentTarget as HTMLInputElement
- const fontAwesomeIconClass = inputElement.value;
+ const fontAwesomeIconClass = inputElement.value
- inputElement
- .closest(".field")!
- .querySelectorAll(
- ".button.is-static"
- )[1].innerHTML = ` `;
- }
+ inputElement
+ .closest('.field')!
+ .querySelectorAll(
+ '.button.is-static'
+ )[1].innerHTML = ` `
+ }
- //=include adminTablesWorkOrderTypes.js
- //=include adminTablesWorkOrderMilestoneTypes.js
- //=include adminTablesLotStatuses.js
- //=include adminTablesLotOccupantTypes.js
-})();
+ //=include adminTablesWorkOrderTypes.js
+ //=include adminTablesWorkOrderMilestoneTypes.js
+ //=include adminTablesLotStatuses.js
+ //=include adminTablesLotOccupantTypes.js
+})()
diff --git a/public-typescript/adminTables/adminTablesLotOccupantTypes.js b/public-typescript/adminTables/adminTablesLotOccupantTypes.js
index 41afaa16..ef682082 100644
--- a/public-typescript/adminTables/adminTablesLotOccupantTypes.js
+++ b/public-typescript/adminTables/adminTablesLotOccupantTypes.js
@@ -5,28 +5,28 @@ let lotOccupantTypes = exports.lotOccupantTypes;
delete exports.lotOccupantTypes;
const updateLotOccupantType = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotOccupantType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateLotOccupantType', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes;
bulmaJS.alert({
message: `${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type Updated Successfully`,
- contextualColorName: "success"
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
title: `Error Updating ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const deleteLotOccupantType = (clickEvent) => {
- const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const tableRowElement = clickEvent.currentTarget.closest('tr');
const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotOccupantType", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteLotOccupantType', {
lotOccupantTypeId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -39,14 +39,14 @@ const deleteLotOccupantType = (clickEvent) => {
}
bulmaJS.alert({
message: `${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type Deleted Successfully`,
- contextualColorName: "success"
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
title: `Error Deleting ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -56,7 +56,7 @@ const deleteLotOccupantType = (clickEvent) => {
message: `Are you sure you want to delete this ${los.escapedAliases.lot} ${los.escapedAliases.occupant} type?
Note that no ${los.escapedAliases.lot} ${los.escapedAliases.occupants} will be removed.`,
messageIsHtml: true,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
text: `Yes, Delete ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
callbackFunction: doDelete
@@ -65,15 +65,13 @@ const deleteLotOccupantType = (clickEvent) => {
};
const moveLotOccupantType = (clickEvent) => {
const buttonElement = clickEvent.currentTarget;
- const tableRowElement = buttonElement.closest("tr");
+ const tableRowElement = buttonElement.closest('tr');
const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveLotOccupantTypeUp"
- : "doMoveLotOccupantTypeDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up' ? 'doMoveLotOccupantTypeUp' : 'doMoveLotOccupantTypeDown'), {
lotOccupantTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes;
@@ -82,40 +80,40 @@ const moveLotOccupantType = (clickEvent) => {
else {
bulmaJS.alert({
title: `Error Moving ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const renderLotOccupantTypes = () => {
- const containerElement = document.querySelector("#container--lotOccupantTypes");
+ const containerElement = document.querySelector('#container--lotOccupantTypes');
if (lotOccupantTypes.length === 0) {
containerElement.innerHTML = `
There are no active ${los.escapedAliases.lot} ${los.escapedAliases.occupant} types.
`;
return;
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
for (const lotOccupantType of lotOccupantTypes) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotOccupantTypeId = lotOccupantType.lotOccupantTypeId.toString();
- const formId = "form--lotOccupantType-" + lotOccupantType.lotOccupantTypeId;
+ const formId = 'form--lotOccupantType-' + lotOccupantType.lotOccupantTypeId;
tableRowElement.innerHTML =
- "" +
+ ' ' +
('") +
- " " +
- "" +
+ '' +
+ '') +
+ ' ' +
+ '' +
('' +
'
fa-
' +
'
' +
@@ -125,70 +123,70 @@ const renderLotOccupantTypes = () => {
' list="datalist--fontAwesomeIconClass"' +
' aria-label="Icon Name"' +
' maxlength="50" />' +
- "
" +
+ '
' +
'' +
'
' +
- "") +
- " " +
- ("" +
+ '') +
+ ' ' +
+ ('' +
('') +
' " +
+ ' />' +
' ' +
- " " +
- " ") +
+ '' +
+ '') +
'' +
'' +
'
' +
- los.getMoveUpDownButtonFieldHTML("button--moveLotOccupantTypeUp", "button--moveLotOccupantTypeDown", false) +
- "
" +
+ los.getMoveUpDownButtonFieldHTML('button--moveLotOccupantTypeUp', 'button--moveLotOccupantTypeDown', false) +
+ '
' +
'' +
'' +
' ' +
- " " +
- "
" +
- "" +
- " ";
+ '' +
+ '' +
+ '' +
+ '';
const fontAwesomeInputElement = tableRowElement.querySelector("input[name='fontAwesomeIconClass']");
- fontAwesomeInputElement.addEventListener("keyup", refreshFontAwesomeIcon);
- fontAwesomeInputElement.addEventListener("change", refreshFontAwesomeIcon);
- tableRowElement.querySelector("form").addEventListener("submit", updateLotOccupantType);
- tableRowElement.querySelector(".button--moveLotOccupantTypeUp").addEventListener("click", moveLotOccupantType);
- tableRowElement.querySelector(".button--moveLotOccupantTypeDown").addEventListener("click", moveLotOccupantType);
+ fontAwesomeInputElement.addEventListener('keyup', refreshFontAwesomeIcon);
+ fontAwesomeInputElement.addEventListener('change', refreshFontAwesomeIcon);
+ tableRowElement.querySelector('form').addEventListener('submit', updateLotOccupantType);
+ tableRowElement.querySelector('.button--moveLotOccupantTypeUp').addEventListener('click', moveLotOccupantType);
+ tableRowElement.querySelector('.button--moveLotOccupantTypeDown').addEventListener('click', moveLotOccupantType);
tableRowElement
- .querySelector(".button--deleteLotOccupantType")
- .addEventListener("click", deleteLotOccupantType);
+ .querySelector('.button--deleteLotOccupantType')
+ .addEventListener('click', deleteLotOccupantType);
containerElement.append(tableRowElement);
}
};
-document.querySelector("#form--addLotOccupantType").addEventListener("submit", (submitEvent) => {
+document.querySelector('#form--addLotOccupantType').addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
const formElement = submitEvent.currentTarget;
- cityssm.postJSON(los.urlPrefix + "/admin/doAddLotOccupantType", formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddLotOccupantType', formElement, (responseJSON) => {
if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes;
renderLotOccupantTypes();
formElement.reset();
- formElement.querySelector("input").focus();
+ formElement.querySelector('input').focus();
}
else {
bulmaJS.alert({
title: `Error Adding ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
diff --git a/public-typescript/adminTables/adminTablesLotOccupantTypes.ts b/public-typescript/adminTables/adminTablesLotOccupantTypes.ts
index 7bc633ad..9afec509 100644
--- a/public-typescript/adminTables/adminTablesLotOccupantTypes.ts
+++ b/public-typescript/adminTables/adminTablesLotOccupantTypes.ts
@@ -1,280 +1,277 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../../types/globalTypes";
-import type * as recordTypes from "../../types/recordTypes";
+import type * as globalTypes from '../../types/globalTypes'
+import type * as recordTypes from '../../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-declare const los: globalTypes.LOS;
-declare const refreshFontAwesomeIcon: (changeEvent: Event) => void;
+declare const los: globalTypes.LOS
+declare const refreshFontAwesomeIcon: (changeEvent: Event) => void
-let lotOccupantTypes: recordTypes.LotOccupantType[] = exports.lotOccupantTypes;
-delete exports.lotOccupantTypes;
+let lotOccupantTypes: recordTypes.LotOccupantType[] = exports.lotOccupantTypes
+delete exports.lotOccupantTypes
const updateLotOccupantType = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+ submitEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateLotOccupantType",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupantTypes?: recordTypes.LotOccupantType[];
- }) => {
- if (responseJSON.success) {
- lotOccupantTypes = responseJSON.lotOccupantTypes!;
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateLotOccupantType',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupantTypes?: recordTypes.LotOccupantType[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupantTypes = responseJSON.lotOccupantTypes!
- bulmaJS.alert({
- message: `${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type Updated Successfully`,
- contextualColorName: "success"
- });
- } else {
- bulmaJS.alert({
- title: `Error Updating ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
-};
+ bulmaJS.alert({
+ message: `${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type Updated Successfully`,
+ contextualColorName: 'success'
+ })
+ } else {
+ bulmaJS.alert({
+ title: `Error Updating ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+}
const deleteLotOccupantType = (clickEvent: Event) => {
- const tableRowElement = (clickEvent.currentTarget as HTMLElement).closest("tr")!;
+ const tableRowElement = (clickEvent.currentTarget as HTMLElement).closest('tr')!
- const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId;
+ const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteLotOccupantType",
- {
- lotOccupantTypeId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupantTypes?: recordTypes.LotOccupantType[];
- }) => {
- if (responseJSON.success) {
- lotOccupantTypes = responseJSON.lotOccupantTypes!;
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteLotOccupantType',
+ {
+ lotOccupantTypeId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupantTypes?: recordTypes.LotOccupantType[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupantTypes = responseJSON.lotOccupantTypes!
- if (lotOccupantTypes.length === 0) {
- renderLotOccupantTypes();
- } else {
- tableRowElement.remove();
- }
+ if (lotOccupantTypes.length === 0) {
+ renderLotOccupantTypes()
+ } else {
+ tableRowElement.remove()
+ }
- bulmaJS.alert({
- message: `${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type Deleted Successfully`,
- contextualColorName: "success"
- });
- } else {
- bulmaJS.alert({
- title: `Error Deleting ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- bulmaJS.confirm({
- title: `Delete ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: `Are you sure you want to delete this ${los.escapedAliases.lot} ${los.escapedAliases.occupant} type?
- Note that no ${los.escapedAliases.lot} ${los.escapedAliases.occupants} will be removed.`,
- messageIsHtml: true,
- contextualColorName: "warning",
- okButton: {
- text: `Yes, Delete ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- callbackFunction: doDelete
+ bulmaJS.alert({
+ message: `${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type Deleted Successfully`,
+ contextualColorName: 'success'
+ })
+ } else {
+ bulmaJS.alert({
+ title: `Error Deleting ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
-};
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: `Delete ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
+ message: `Are you sure you want to delete this ${los.escapedAliases.lot} ${los.escapedAliases.occupant} type?
+ Note that no ${los.escapedAliases.lot} ${los.escapedAliases.occupants} will be removed.`,
+ messageIsHtml: true,
+ contextualColorName: 'warning',
+ okButton: {
+ text: `Yes, Delete ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
+ callbackFunction: doDelete
+ }
+ })
+}
const moveLotOccupantType = (clickEvent: MouseEvent) => {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
- const tableRowElement = buttonElement.closest("tr")!;
+ const tableRowElement = buttonElement.closest('tr')!
- const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId;
+ const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId
- cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveLotOccupantTypeUp"
- : "doMoveLotOccupantTypeDown"),
- {
- lotOccupantTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupantTypes?: recordTypes.LotOccupantType[];
- }) => {
- if (responseJSON.success) {
- lotOccupantTypes = responseJSON.lotOccupantTypes!;
- renderLotOccupantTypes();
- } else {
- bulmaJS.alert({
- title: `Error Moving ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
-};
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up' ? 'doMoveLotOccupantTypeUp' : 'doMoveLotOccupantTypeDown'),
+ {
+ lotOccupantTypeId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupantTypes?: recordTypes.LotOccupantType[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupantTypes = responseJSON.lotOccupantTypes!
+ renderLotOccupantTypes()
+ } else {
+ bulmaJS.alert({
+ title: `Error Moving ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+}
const renderLotOccupantTypes = () => {
- const containerElement = document.querySelector(
- "#container--lotOccupantTypes"
- ) as HTMLTableSectionElement;
+ const containerElement = document.querySelector('#container--lotOccupantTypes') as HTMLTableSectionElement
- if (lotOccupantTypes.length === 0) {
- containerElement.innerHTML = `
+ if (lotOccupantTypes.length === 0) {
+ containerElement.innerHTML = `
There are no active ${los.escapedAliases.lot} ${los.escapedAliases.occupant} types.
- `;
+ `
- return;
- }
+ return
+ }
- containerElement.innerHTML = "";
+ containerElement.innerHTML = ''
- for (const lotOccupantType of lotOccupantTypes) {
- const tableRowElement = document.createElement("tr");
+ for (const lotOccupantType of lotOccupantTypes) {
+ const tableRowElement = document.createElement('tr')
- tableRowElement.dataset.lotOccupantTypeId = lotOccupantType.lotOccupantTypeId.toString();
+ tableRowElement.dataset.lotOccupantTypeId = lotOccupantType.lotOccupantTypeId.toString()
- const formId = "form--lotOccupantType-" + lotOccupantType.lotOccupantTypeId;
+ const formId = 'form--lotOccupantType-' + lotOccupantType.lotOccupantTypeId
- tableRowElement.innerHTML =
- "" +
- ('' +
- '
' +
- ' ' +
- "
" +
- "
") +
- " " +
- "" +
- ('' +
- '
fa-
' +
- '
' +
- ' ' +
- "
" +
- '
' +
- '
' +
- "
") +
- " " +
- ("" +
- ('') +
- ' " +
- ' ' +
- " " +
- " ") +
- '' +
- '' +
- '
' +
- los.getMoveUpDownButtonFieldHTML(
- "button--moveLotOccupantTypeUp",
- "button--moveLotOccupantTypeDown",
- false
- ) +
- "
" +
- '
' +
- '' +
- ' ' +
- " " +
- "
" +
- "
" +
- " ";
+ tableRowElement.innerHTML =
+ '' +
+ ('' +
+ '
' +
+ ' ' +
+ '
' +
+ '
') +
+ ' ' +
+ '' +
+ ('' +
+ '
fa-
' +
+ '
' +
+ ' ' +
+ '
' +
+ '
' +
+ '
' +
+ '
') +
+ ' ' +
+ ('' +
+ ('') +
+ ' ' +
+ ' ' +
+ ' ' +
+ ' ') +
+ '' +
+ '' +
+ '
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveLotOccupantTypeUp',
+ 'button--moveLotOccupantTypeDown',
+ false
+ ) +
+ '
' +
+ '
' +
+ '' +
+ ' ' +
+ ' ' +
+ '
' +
+ '
' +
+ ' '
- const fontAwesomeInputElement = tableRowElement.querySelector("input[name='fontAwesomeIconClass']")!;
+ const fontAwesomeInputElement = tableRowElement.querySelector("input[name='fontAwesomeIconClass']")!
- fontAwesomeInputElement.addEventListener("keyup", refreshFontAwesomeIcon);
- fontAwesomeInputElement.addEventListener("change", refreshFontAwesomeIcon);
+ fontAwesomeInputElement.addEventListener('keyup', refreshFontAwesomeIcon)
+ fontAwesomeInputElement.addEventListener('change', refreshFontAwesomeIcon)
- tableRowElement.querySelector("form")!.addEventListener("submit", updateLotOccupantType);
+ tableRowElement.querySelector('form')!.addEventListener('submit', updateLotOccupantType)
- (
- tableRowElement.querySelector(".button--moveLotOccupantTypeUp") as HTMLButtonElement
- ).addEventListener("click", moveLotOccupantType);
+ ;(tableRowElement.querySelector('.button--moveLotOccupantTypeUp') as HTMLButtonElement).addEventListener(
+ 'click',
+ moveLotOccupantType
+ )
- (
- tableRowElement.querySelector(".button--moveLotOccupantTypeDown") as HTMLButtonElement
- ).addEventListener("click", moveLotOccupantType);
+ ;(
+ tableRowElement.querySelector('.button--moveLotOccupantTypeDown') as HTMLButtonElement
+ ).addEventListener('click', moveLotOccupantType)
- tableRowElement
- .querySelector(".button--deleteLotOccupantType")!
- .addEventListener("click", deleteLotOccupantType);
+ tableRowElement
+ .querySelector('.button--deleteLotOccupantType')!
+ .addEventListener('click', deleteLotOccupantType)
- containerElement.append(tableRowElement);
- }
-};
+ containerElement.append(tableRowElement)
+ }
+}
-(document.querySelector("#form--addLotOccupantType") as HTMLFormElement).addEventListener(
- "submit",
- (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+;(document.querySelector('#form--addLotOccupantType') as HTMLFormElement).addEventListener(
+ 'submit',
+ (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
- const formElement = submitEvent.currentTarget as HTMLFormElement;
+ const formElement = submitEvent.currentTarget as HTMLFormElement
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddLotOccupantType",
- formElement,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupantTypes?: recordTypes.LotOccupantType[];
- }) => {
- if (responseJSON.success) {
- lotOccupantTypes = responseJSON.lotOccupantTypes!;
- renderLotOccupantTypes();
- formElement.reset();
- formElement.querySelector("input")!.focus();
- } else {
- bulmaJS.alert({
- title: `Error Adding ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-);
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddLotOccupantType',
+ formElement,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupantTypes?: recordTypes.LotOccupantType[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupantTypes = responseJSON.lotOccupantTypes!
+ renderLotOccupantTypes()
+ formElement.reset()
+ formElement.querySelector('input')!.focus()
+ } else {
+ bulmaJS.alert({
+ title: `Error Adding ${los.escapedAliases.Lot} ${los.escapedAliases.Occupant} Type`,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+)
-renderLotOccupantTypes();
+renderLotOccupantTypes()
diff --git a/public-typescript/adminTables/adminTablesLotStatuses.js b/public-typescript/adminTables/adminTablesLotStatuses.js
index c0c9b61a..eb0f9b4d 100644
--- a/public-typescript/adminTables/adminTablesLotStatuses.js
+++ b/public-typescript/adminTables/adminTablesLotStatuses.js
@@ -5,28 +5,28 @@ let lotStatuses = exports.lotStatuses;
delete exports.lotStatuses;
const updateLotStatus = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotStatus", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateLotStatus', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses;
bulmaJS.alert({
- message: los.escapedAliases.Lot + " Status Updated Successfully",
- contextualColorName: "success"
+ message: los.escapedAliases.Lot + ' Status Updated Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Updating " + los.escapedAliases.Lot + " Status",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating ' + los.escapedAliases.Lot + ' Status',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const deleteLotStatus = (clickEvent) => {
- const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const tableRowElement = clickEvent.currentTarget.closest('tr');
const lotStatusId = tableRowElement.dataset.lotStatusId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotStatus", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteLotStatus', {
lotStatusId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -38,15 +38,15 @@ const deleteLotStatus = (clickEvent) => {
tableRowElement.remove();
}
bulmaJS.alert({
- message: los.escapedAliases.Lot + " Status Deleted Successfully",
- contextualColorName: "success"
+ message: los.escapedAliases.Lot + ' Status Deleted Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Deleting " + los.escapedAliases.Lot + " Status",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting ' + los.escapedAliases.Lot + ' Status',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -56,22 +56,22 @@ const deleteLotStatus = (clickEvent) => {
message: `Are you sure you want to delete this status?
Note that no ${los.escapedAliases.lot} will be removed.`,
messageIsHtml: true,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Status",
+ text: 'Yes, Delete Status',
callbackFunction: doDelete
}
});
};
const moveLotStatus = (clickEvent) => {
const buttonElement = clickEvent.currentTarget;
- const tableRowElement = buttonElement.closest("tr");
+ const tableRowElement = buttonElement.closest('tr');
const lotStatusId = tableRowElement.dataset.lotStatusId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveLotStatusUp" : "doMoveLotStatusDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up' ? 'doMoveLotStatusUp' : 'doMoveLotStatusDown'), {
lotStatusId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses;
@@ -79,28 +79,28 @@ const moveLotStatus = (clickEvent) => {
}
else {
bulmaJS.alert({
- title: "Error Moving " + exports.aliases.lot + " Status",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Moving ' + exports.aliases.lot + ' Status',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const renderLotStatuses = () => {
- const containerElement = document.querySelector("#container--lotStatuses");
+ const containerElement = document.querySelector('#container--lotStatuses');
if (lotStatuses.length === 0) {
containerElement.innerHTML = `
There are no active ${los.escapedAliases.lot} statuses.
`;
return;
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
for (const lotStatus of lotStatuses) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotStatusId = lotStatus.lotStatusId.toString();
tableRowElement.innerHTML =
- "" +
- "" +
+ '' +
+ '' +
' ' +
@@ -110,47 +110,47 @@ const renderLotStatuses = () => {
(' value="' + cityssm.escapeHTML(lotStatus.lotStatus) + '"') +
(' aria-label="' + cityssm.escapeHTML(exports.aliases.lot) + ' Status"') +
' maxlength="100" required />' +
- "" +
+ '' +
'' +
' ' +
- "
" +
- "") +
- " " +
- " " +
+ '' +
+ '') +
+ ' ' +
+ ' ' +
'' +
'' +
'
' +
- los.getMoveUpDownButtonFieldHTML("button--moveLotStatusUp", "button--moveLotStatusDown", false) +
- "
" +
+ los.getMoveUpDownButtonFieldHTML('button--moveLotStatusUp', 'button--moveLotStatusDown', false) +
+ '
' +
'' +
'' +
' ' +
- " " +
- "
" +
- "" +
- " ";
- tableRowElement.querySelector("form").addEventListener("submit", updateLotStatus);
- tableRowElement.querySelector(".button--moveLotStatusUp").addEventListener("click", moveLotStatus);
- tableRowElement.querySelector(".button--moveLotStatusDown").addEventListener("click", moveLotStatus);
- tableRowElement.querySelector(".button--deleteLotStatus").addEventListener("click", deleteLotStatus);
+ '' +
+ '' +
+ '' +
+ '';
+ tableRowElement.querySelector('form').addEventListener('submit', updateLotStatus);
+ tableRowElement.querySelector('.button--moveLotStatusUp').addEventListener('click', moveLotStatus);
+ tableRowElement.querySelector('.button--moveLotStatusDown').addEventListener('click', moveLotStatus);
+ tableRowElement.querySelector('.button--deleteLotStatus').addEventListener('click', deleteLotStatus);
containerElement.append(tableRowElement);
}
};
-document.querySelector("#form--addLotStatus").addEventListener("submit", (submitEvent) => {
+document.querySelector('#form--addLotStatus').addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
const formElement = submitEvent.currentTarget;
- cityssm.postJSON(los.urlPrefix + "/admin/doAddLotStatus", formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddLotStatus', formElement, (responseJSON) => {
if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses;
renderLotStatuses();
formElement.reset();
- formElement.querySelector("input").focus();
+ formElement.querySelector('input').focus();
}
else {
bulmaJS.alert({
title: `Error Adding ${los.escapedAliases.Lot} Status`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
diff --git a/public-typescript/adminTables/adminTablesLotStatuses.ts b/public-typescript/adminTables/adminTablesLotStatuses.ts
index 9f9d0232..d6f3d87c 100644
--- a/public-typescript/adminTables/adminTablesLotStatuses.ts
+++ b/public-typescript/adminTables/adminTablesLotStatuses.ts
@@ -1,234 +1,218 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../../types/globalTypes";
-import type * as recordTypes from "../../types/recordTypes";
+import type * as globalTypes from '../../types/globalTypes'
+import type * as recordTypes from '../../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-declare const los: globalTypes.LOS;
+declare const los: globalTypes.LOS
-let lotStatuses: recordTypes.LotStatus[] = exports.lotStatuses;
-delete exports.lotStatuses;
+let lotStatuses: recordTypes.LotStatus[] = exports.lotStatuses
+delete exports.lotStatuses
const updateLotStatus = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+ submitEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateLotStatus",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotStatuses?: recordTypes.LotStatus[];
- }) => {
- if (responseJSON.success) {
- lotStatuses = responseJSON.lotStatuses!;
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateLotStatus',
+ submitEvent.currentTarget,
+ (responseJSON: { success: boolean; errorMessage?: string; lotStatuses?: recordTypes.LotStatus[] }) => {
+ if (responseJSON.success) {
+ lotStatuses = responseJSON.lotStatuses!
- bulmaJS.alert({
- message: los.escapedAliases.Lot + " Status Updated Successfully",
- contextualColorName: "success"
- });
- } else {
- bulmaJS.alert({
- title: "Error Updating " + los.escapedAliases.Lot + " Status",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
-};
+ bulmaJS.alert({
+ message: los.escapedAliases.Lot + ' Status Updated Successfully',
+ contextualColorName: 'success'
+ })
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating ' + los.escapedAliases.Lot + ' Status',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+}
const deleteLotStatus = (clickEvent: Event) => {
- const tableRowElement = (clickEvent.currentTarget as HTMLElement).closest("tr")!;
+ const tableRowElement = (clickEvent.currentTarget as HTMLElement).closest('tr')!
- const lotStatusId = tableRowElement.dataset.lotStatusId;
+ const lotStatusId = tableRowElement.dataset.lotStatusId
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteLotStatus",
- {
- lotStatusId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotStatuses?: recordTypes.LotStatus[];
- }) => {
- if (responseJSON.success) {
- lotStatuses = responseJSON.lotStatuses!;
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteLotStatus',
+ {
+ lotStatusId
+ },
+ (responseJSON: { success: boolean; errorMessage?: string; lotStatuses?: recordTypes.LotStatus[] }) => {
+ if (responseJSON.success) {
+ lotStatuses = responseJSON.lotStatuses!
- if (lotStatuses.length === 0) {
- renderLotStatuses();
- } else {
- tableRowElement.remove();
- }
+ if (lotStatuses.length === 0) {
+ renderLotStatuses()
+ } else {
+ tableRowElement.remove()
+ }
- bulmaJS.alert({
- message: los.escapedAliases.Lot + " Status Deleted Successfully",
- contextualColorName: "success"
- });
- } else {
- bulmaJS.alert({
- title: "Error Deleting " + los.escapedAliases.Lot + " Status",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- bulmaJS.confirm({
- title: `Delete ${los.escapedAliases.Lot} Status`,
- message: `Are you sure you want to delete this status?
- Note that no ${los.escapedAliases.lot} will be removed.`,
- messageIsHtml: true,
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Status",
- callbackFunction: doDelete
+ bulmaJS.alert({
+ message: los.escapedAliases.Lot + ' Status Deleted Successfully',
+ contextualColorName: 'success'
+ })
+ } else {
+ bulmaJS.alert({
+ title: 'Error Deleting ' + los.escapedAliases.Lot + ' Status',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
-};
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: `Delete ${los.escapedAliases.Lot} Status`,
+ message: `Are you sure you want to delete this status?
+ Note that no ${los.escapedAliases.lot} will be removed.`,
+ messageIsHtml: true,
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete Status',
+ callbackFunction: doDelete
+ }
+ })
+}
const moveLotStatus = (clickEvent: MouseEvent) => {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
- const tableRowElement = buttonElement.closest("tr")!;
+ const tableRowElement = buttonElement.closest('tr')!
- const lotStatusId = tableRowElement.dataset.lotStatusId;
+ const lotStatusId = tableRowElement.dataset.lotStatusId
- cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveLotStatusUp" : "doMoveLotStatusDown"),
- {
- lotStatusId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotStatuses?: recordTypes.LotStatus[];
- }) => {
- if (responseJSON.success) {
- lotStatuses = responseJSON.lotStatuses!;
- renderLotStatuses();
- } else {
- bulmaJS.alert({
- title: "Error Moving " + exports.aliases.lot + " Status",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
-};
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up' ? 'doMoveLotStatusUp' : 'doMoveLotStatusDown'),
+ {
+ lotStatusId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ (responseJSON: { success: boolean; errorMessage?: string; lotStatuses?: recordTypes.LotStatus[] }) => {
+ if (responseJSON.success) {
+ lotStatuses = responseJSON.lotStatuses!
+ renderLotStatuses()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Moving ' + exports.aliases.lot + ' Status',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+}
const renderLotStatuses = () => {
- const containerElement = document.querySelector("#container--lotStatuses") as HTMLTableSectionElement;
+ const containerElement = document.querySelector('#container--lotStatuses') as HTMLTableSectionElement
- if (lotStatuses.length === 0) {
- containerElement.innerHTML = `
+ if (lotStatuses.length === 0) {
+ containerElement.innerHTML = `
There are no active ${los.escapedAliases.lot} statuses.
- `;
+ `
- return;
- }
+ return
+ }
- containerElement.innerHTML = "";
+ containerElement.innerHTML = ''
- for (const lotStatus of lotStatuses) {
- const tableRowElement = document.createElement("tr");
+ for (const lotStatus of lotStatuses) {
+ const tableRowElement = document.createElement('tr')
- tableRowElement.dataset.lotStatusId = lotStatus.lotStatusId.toString();
+ tableRowElement.dataset.lotStatusId = lotStatus.lotStatusId.toString()
- tableRowElement.innerHTML =
- "" +
- "" +
- ' ' +
- ('' +
- '
' +
- ' ' +
- "
" +
- '
' +
- ' ' +
- "
" +
- "
") +
- " " +
- " " +
- '' +
- '' +
- '
' +
- los.getMoveUpDownButtonFieldHTML("button--moveLotStatusUp", "button--moveLotStatusDown", false) +
- "
" +
- '
' +
- '' +
- ' ' +
- " " +
- "
" +
- "
" +
- " ";
+ tableRowElement.innerHTML =
+ '' +
+ '' +
+ ' ' +
+ ('' +
+ '
' +
+ ' ' +
+ '
' +
+ '
' +
+ ' ' +
+ '
' +
+ '
') +
+ ' ' +
+ ' ' +
+ '' +
+ '' +
+ '
' +
+ los.getMoveUpDownButtonFieldHTML('button--moveLotStatusUp', 'button--moveLotStatusDown', false) +
+ '
' +
+ '
' +
+ '' +
+ ' ' +
+ ' ' +
+ '
' +
+ '
' +
+ ' '
- tableRowElement.querySelector("form")!.addEventListener("submit", updateLotStatus);
+ tableRowElement.querySelector('form')!.addEventListener('submit', updateLotStatus)
- (tableRowElement.querySelector(".button--moveLotStatusUp") as HTMLButtonElement).addEventListener(
- "click",
- moveLotStatus
- );
+ ;(tableRowElement.querySelector('.button--moveLotStatusUp') as HTMLButtonElement).addEventListener(
+ 'click',
+ moveLotStatus
+ )
- (tableRowElement.querySelector(".button--moveLotStatusDown") as HTMLButtonElement).addEventListener(
- "click",
- moveLotStatus
- );
+ ;(tableRowElement.querySelector('.button--moveLotStatusDown') as HTMLButtonElement).addEventListener(
+ 'click',
+ moveLotStatus
+ )
- tableRowElement.querySelector(".button--deleteLotStatus")!.addEventListener("click", deleteLotStatus);
+ tableRowElement.querySelector('.button--deleteLotStatus')!.addEventListener('click', deleteLotStatus)
- containerElement.append(tableRowElement);
- }
-};
+ containerElement.append(tableRowElement)
+ }
+}
-(document.querySelector("#form--addLotStatus") as HTMLFormElement).addEventListener(
- "submit",
- (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+;(document.querySelector('#form--addLotStatus') as HTMLFormElement).addEventListener(
+ 'submit',
+ (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
- const formElement = submitEvent.currentTarget as HTMLFormElement;
+ const formElement = submitEvent.currentTarget as HTMLFormElement
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddLotStatus",
- formElement,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotStatuses?: recordTypes.LotStatus[];
- }) => {
- if (responseJSON.success) {
- lotStatuses = responseJSON.lotStatuses!;
- renderLotStatuses();
- formElement.reset();
- formElement.querySelector("input")!.focus();
- } else {
- bulmaJS.alert({
- title: `Error Adding ${los.escapedAliases.Lot} Status`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-);
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddLotStatus',
+ formElement,
+ (responseJSON: { success: boolean; errorMessage?: string; lotStatuses?: recordTypes.LotStatus[] }) => {
+ if (responseJSON.success) {
+ lotStatuses = responseJSON.lotStatuses!
+ renderLotStatuses()
+ formElement.reset()
+ formElement.querySelector('input')!.focus()
+ } else {
+ bulmaJS.alert({
+ title: `Error Adding ${los.escapedAliases.Lot} Status`,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+)
-renderLotStatuses();
+renderLotStatuses()
diff --git a/public-typescript/adminTables/adminTablesWorkOrderMilestoneTypes.js b/public-typescript/adminTables/adminTablesWorkOrderMilestoneTypes.js
index b7dcafbf..f73ec4da 100644
--- a/public-typescript/adminTables/adminTablesWorkOrderMilestoneTypes.js
+++ b/public-typescript/adminTables/adminTablesWorkOrderMilestoneTypes.js
@@ -5,28 +5,28 @@ let workOrderMilestoneTypes = exports.workOrderMilestoneTypes;
delete exports.workOrderMilestoneTypes;
const updateWorkOrderMilestoneType = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateWorkOrderMilestoneType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateWorkOrderMilestoneType', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes;
bulmaJS.alert({
- message: "Work Order Milestone Type Updated Successfully",
- contextualColorName: "success"
+ message: 'Work Order Milestone Type Updated Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Updating Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const deleteWorkOrderMilestoneType = (clickEvent) => {
- const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const tableRowElement = clickEvent.currentTarget.closest('tr');
const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteWorkOrderMilestoneType", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteWorkOrderMilestoneType', {
workOrderMilestoneTypeId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -38,42 +38,42 @@ const deleteWorkOrderMilestoneType = (clickEvent) => {
tableRowElement.remove();
}
bulmaJS.alert({
- message: "Work Order Milestone Type Deleted Successfully",
- contextualColorName: "success"
+ message: 'Work Order Milestone Type Deleted Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Deleting Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete Work Order Milestone Type",
+ title: 'Delete Work Order Milestone Type',
message: `Are you sure you want to delete this work order milestone type?
Note that no work orders will be removed.`,
messageIsHtml: true,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Work Order Milestone Type",
+ text: 'Yes, Delete Work Order Milestone Type',
callbackFunction: doDelete
}
});
};
const moveWorkOrderMilestoneType = (clickEvent) => {
const buttonElement = clickEvent.currentTarget;
- const tableRowElement = buttonElement.closest("tr");
+ const tableRowElement = buttonElement.closest('tr');
const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveWorkOrderMilestoneTypeUp"
- : "doMoveWorkOrderMilestoneTypeDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveWorkOrderMilestoneTypeUp'
+ : 'doMoveWorkOrderMilestoneTypeDown'), {
workOrderMilestoneTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes;
@@ -81,29 +81,29 @@ const moveWorkOrderMilestoneType = (clickEvent) => {
}
else {
bulmaJS.alert({
- title: "Error Moving Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Moving Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const renderWorkOrderMilestoneTypes = () => {
- const containerElement = document.querySelector("#container--workOrderMilestoneTypes");
+ const containerElement = document.querySelector('#container--workOrderMilestoneTypes');
if (workOrderMilestoneTypes.length === 0) {
containerElement.innerHTML = `
There are no active work order milestone types.
`;
return;
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
for (const workOrderMilestoneType of workOrderMilestoneTypes) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.workOrderMilestoneTypeId =
workOrderMilestoneType.workOrderMilestoneTypeId.toString();
tableRowElement.innerHTML =
- "" +
- "" +
+ '' +
+ '' +
' ' +
@@ -112,49 +112,49 @@ const renderWorkOrderMilestoneTypes = () => {
' ' +
- "" +
+ '' +
'' +
' ' +
- "
" +
- "") +
- " " +
- " " +
+ '' +
+ '') +
+ ' ' +
+ ' ' +
'' +
'' +
'
' +
- los.getMoveUpDownButtonFieldHTML("button--moveWorkOrderMilestoneTypeUp", "button--moveWorkOrderMilestoneTypeDown", false) +
- "
" +
+ los.getMoveUpDownButtonFieldHTML('button--moveWorkOrderMilestoneTypeUp', 'button--moveWorkOrderMilestoneTypeDown', false) +
+ '
' +
'' +
'' +
' ' +
- " " +
- "
" +
- "" +
- " ";
- tableRowElement.querySelector("form").addEventListener("submit", updateWorkOrderMilestoneType);
- tableRowElement.querySelector(".button--moveWorkOrderMilestoneTypeUp").addEventListener("click", moveWorkOrderMilestoneType);
- tableRowElement.querySelector(".button--moveWorkOrderMilestoneTypeDown").addEventListener("click", moveWorkOrderMilestoneType);
+ '' +
+ '' +
+ '' +
+ '';
+ tableRowElement.querySelector('form').addEventListener('submit', updateWorkOrderMilestoneType);
+ tableRowElement.querySelector('.button--moveWorkOrderMilestoneTypeUp').addEventListener('click', moveWorkOrderMilestoneType);
+ tableRowElement.querySelector('.button--moveWorkOrderMilestoneTypeDown').addEventListener('click', moveWorkOrderMilestoneType);
tableRowElement
- .querySelector(".button--deleteWorkOrderMilestoneType")
- .addEventListener("click", deleteWorkOrderMilestoneType);
+ .querySelector('.button--deleteWorkOrderMilestoneType')
+ .addEventListener('click', deleteWorkOrderMilestoneType);
containerElement.append(tableRowElement);
}
};
-document.querySelector("#form--addWorkOrderMilestoneType").addEventListener("submit", (submitEvent) => {
+document.querySelector('#form--addWorkOrderMilestoneType').addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
const formElement = submitEvent.currentTarget;
- cityssm.postJSON(los.urlPrefix + "/admin/doAddWorkOrderMilestoneType", formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddWorkOrderMilestoneType', formElement, (responseJSON) => {
if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes;
renderWorkOrderMilestoneTypes();
formElement.reset();
- formElement.querySelector("input").focus();
+ formElement.querySelector('input').focus();
}
else {
bulmaJS.alert({
- title: "Error Adding Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
diff --git a/public-typescript/adminTables/adminTablesWorkOrderMilestoneTypes.ts b/public-typescript/adminTables/adminTablesWorkOrderMilestoneTypes.ts
index ec342972..3cd02c39 100644
--- a/public-typescript/adminTables/adminTablesWorkOrderMilestoneTypes.ts
+++ b/public-typescript/adminTables/adminTablesWorkOrderMilestoneTypes.ts
@@ -1,242 +1,242 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../../types/globalTypes";
-import type * as recordTypes from "../../types/recordTypes";
+import type * as globalTypes from '../../types/globalTypes'
+import type * as recordTypes from '../../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-declare const los: globalTypes.LOS;
+declare const los: globalTypes.LOS
-let workOrderMilestoneTypes: recordTypes.WorkOrderMilestoneType[] = exports.workOrderMilestoneTypes;
-delete exports.workOrderMilestoneTypes;
+let workOrderMilestoneTypes: recordTypes.WorkOrderMilestoneType[] = exports.workOrderMilestoneTypes
+delete exports.workOrderMilestoneTypes
const updateWorkOrderMilestoneType = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+ submitEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateWorkOrderMilestoneType",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[];
- }) => {
- if (responseJSON.success) {
- workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!;
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateWorkOrderMilestoneType',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[]
+ }) => {
+ if (responseJSON.success) {
+ workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!
- bulmaJS.alert({
- message: "Work Order Milestone Type Updated Successfully",
- contextualColorName: "success"
- });
- } else {
- bulmaJS.alert({
- title: "Error Updating Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
-};
+ bulmaJS.alert({
+ message: 'Work Order Milestone Type Updated Successfully',
+ contextualColorName: 'success'
+ })
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+}
const deleteWorkOrderMilestoneType = (clickEvent: Event) => {
- const tableRowElement = (clickEvent.currentTarget as HTMLElement).closest("tr")!;
+ const tableRowElement = (clickEvent.currentTarget as HTMLElement).closest('tr')!
- const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId;
+ const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteWorkOrderMilestoneType",
- {
- workOrderMilestoneTypeId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[];
- }) => {
- if (responseJSON.success) {
- workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!;
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteWorkOrderMilestoneType',
+ {
+ workOrderMilestoneTypeId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[]
+ }) => {
+ if (responseJSON.success) {
+ workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!
- if (workOrderMilestoneTypes.length === 0) {
- renderWorkOrderMilestoneTypes();
- } else {
- tableRowElement.remove();
- }
+ if (workOrderMilestoneTypes.length === 0) {
+ renderWorkOrderMilestoneTypes()
+ } else {
+ tableRowElement.remove()
+ }
- bulmaJS.alert({
- message: "Work Order Milestone Type Deleted Successfully",
- contextualColorName: "success"
- });
- } else {
- bulmaJS.alert({
- title: "Error Deleting Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- bulmaJS.confirm({
- title: "Delete Work Order Milestone Type",
- message: `Are you sure you want to delete this work order milestone type?
- Note that no work orders will be removed.`,
- messageIsHtml: true,
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Work Order Milestone Type",
- callbackFunction: doDelete
+ bulmaJS.alert({
+ message: 'Work Order Milestone Type Deleted Successfully',
+ contextualColorName: 'success'
+ })
+ } else {
+ bulmaJS.alert({
+ title: 'Error Deleting Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
-};
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: 'Delete Work Order Milestone Type',
+ message: `Are you sure you want to delete this work order milestone type?
+ Note that no work orders will be removed.`,
+ messageIsHtml: true,
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete Work Order Milestone Type',
+ callbackFunction: doDelete
+ }
+ })
+}
const moveWorkOrderMilestoneType = (clickEvent: MouseEvent) => {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
- const tableRowElement = buttonElement.closest("tr")!;
+ const tableRowElement = buttonElement.closest('tr')!
- const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId;
+ const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId
- cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up"
- ? "doMoveWorkOrderMilestoneTypeUp"
- : "doMoveWorkOrderMilestoneTypeDown"),
- {
- workOrderMilestoneTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[];
- }) => {
- if (responseJSON.success) {
- workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!;
- renderWorkOrderMilestoneTypes();
- } else {
- bulmaJS.alert({
- title: "Error Moving Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
-};
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up'
+ ? 'doMoveWorkOrderMilestoneTypeUp'
+ : 'doMoveWorkOrderMilestoneTypeDown'),
+ {
+ workOrderMilestoneTypeId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[]
+ }) => {
+ if (responseJSON.success) {
+ workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!
+ renderWorkOrderMilestoneTypes()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Moving Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+}
const renderWorkOrderMilestoneTypes = () => {
- const containerElement = document.querySelector(
- "#container--workOrderMilestoneTypes"
- ) as HTMLTableSectionElement;
+ const containerElement = document.querySelector(
+ '#container--workOrderMilestoneTypes'
+ ) as HTMLTableSectionElement
- if (workOrderMilestoneTypes.length === 0) {
- containerElement.innerHTML = `
+ if (workOrderMilestoneTypes.length === 0) {
+ containerElement.innerHTML = `
There are no active work order milestone types.
- `;
+ `
- return;
- }
+ return
+ }
- containerElement.innerHTML = "";
+ containerElement.innerHTML = ''
- for (const workOrderMilestoneType of workOrderMilestoneTypes) {
- const tableRowElement = document.createElement("tr");
+ for (const workOrderMilestoneType of workOrderMilestoneTypes) {
+ const tableRowElement = document.createElement('tr')
- tableRowElement.dataset.workOrderMilestoneTypeId =
- workOrderMilestoneType.workOrderMilestoneTypeId.toString();
+ tableRowElement.dataset.workOrderMilestoneTypeId =
+ workOrderMilestoneType.workOrderMilestoneTypeId.toString()
- tableRowElement.innerHTML =
- "" +
- "" +
- ' ' +
- ('' +
- '
' +
- ' ' +
- "
" +
- '
' +
- ' ' +
- "
" +
- "
") +
- " " +
- " " +
- '' +
- '' +
- '
' +
- los.getMoveUpDownButtonFieldHTML(
- "button--moveWorkOrderMilestoneTypeUp",
- "button--moveWorkOrderMilestoneTypeDown",
- false
- ) +
- "
" +
- '
' +
- '' +
- ' ' +
- " " +
- "
" +
- "
" +
- " ";
+ tableRowElement.innerHTML =
+ '' +
+ '' +
+ ' ' +
+ ('' +
+ '
' +
+ ' ' +
+ '
' +
+ '
' +
+ ' ' +
+ '
' +
+ '
') +
+ ' ' +
+ ' ' +
+ '' +
+ '' +
+ '
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveWorkOrderMilestoneTypeUp',
+ 'button--moveWorkOrderMilestoneTypeDown',
+ false
+ ) +
+ '
' +
+ '
' +
+ '' +
+ ' ' +
+ ' ' +
+ '
' +
+ '
' +
+ ' '
- tableRowElement.querySelector("form")!.addEventListener("submit", updateWorkOrderMilestoneType);
+ tableRowElement.querySelector('form')!.addEventListener('submit', updateWorkOrderMilestoneType)
- (
- tableRowElement.querySelector(".button--moveWorkOrderMilestoneTypeUp") as HTMLButtonElement
- ).addEventListener("click", moveWorkOrderMilestoneType);
+ ;(
+ tableRowElement.querySelector('.button--moveWorkOrderMilestoneTypeUp') as HTMLButtonElement
+ ).addEventListener('click', moveWorkOrderMilestoneType)
- (
- tableRowElement.querySelector(".button--moveWorkOrderMilestoneTypeDown") as HTMLButtonElement
- ).addEventListener("click", moveWorkOrderMilestoneType);
+ ;(
+ tableRowElement.querySelector('.button--moveWorkOrderMilestoneTypeDown') as HTMLButtonElement
+ ).addEventListener('click', moveWorkOrderMilestoneType)
- tableRowElement
- .querySelector(".button--deleteWorkOrderMilestoneType")!
- .addEventListener("click", deleteWorkOrderMilestoneType);
+ tableRowElement
+ .querySelector('.button--deleteWorkOrderMilestoneType')!
+ .addEventListener('click', deleteWorkOrderMilestoneType)
- containerElement.append(tableRowElement);
- }
-};
+ containerElement.append(tableRowElement)
+ }
+}
-(document.querySelector("#form--addWorkOrderMilestoneType") as HTMLFormElement).addEventListener(
- "submit",
- (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+;(document.querySelector('#form--addWorkOrderMilestoneType') as HTMLFormElement).addEventListener(
+ 'submit',
+ (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
- const formElement = submitEvent.currentTarget as HTMLFormElement;
+ const formElement = submitEvent.currentTarget as HTMLFormElement
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddWorkOrderMilestoneType",
- formElement,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[];
- }) => {
- if (responseJSON.success) {
- workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!;
- renderWorkOrderMilestoneTypes();
- formElement.reset();
- formElement.querySelector("input")!.focus();
- } else {
- bulmaJS.alert({
- title: "Error Adding Work Order Milestone Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-);
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddWorkOrderMilestoneType',
+ formElement,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[]
+ }) => {
+ if (responseJSON.success) {
+ workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!
+ renderWorkOrderMilestoneTypes()
+ formElement.reset()
+ formElement.querySelector('input')!.focus()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Adding Work Order Milestone Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+)
-renderWorkOrderMilestoneTypes();
+renderWorkOrderMilestoneTypes()
diff --git a/public-typescript/adminTables/adminTablesWorkOrderTypes.js b/public-typescript/adminTables/adminTablesWorkOrderTypes.js
index 53b9d854..0c9e8cba 100644
--- a/public-typescript/adminTables/adminTablesWorkOrderTypes.js
+++ b/public-typescript/adminTables/adminTablesWorkOrderTypes.js
@@ -5,28 +5,28 @@ let workOrderTypes = exports.workOrderTypes;
delete exports.workOrderTypes;
const updateWorkOrderType = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/admin/doUpdateWorkOrderType", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doUpdateWorkOrderType', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes;
bulmaJS.alert({
- message: "Work Order Type Updated Successfully",
- contextualColorName: "success"
+ message: 'Work Order Type Updated Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Updating Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const deleteWorkOrderType = (clickEvent) => {
- const tableRowElement = clickEvent.currentTarget.closest("tr");
+ const tableRowElement = clickEvent.currentTarget.closest('tr');
const workOrderTypeId = tableRowElement.dataset.workOrderTypeId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/admin/doDeleteWorkOrderType", {
+ cityssm.postJSON(los.urlPrefix + '/admin/doDeleteWorkOrderType', {
workOrderTypeId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -38,40 +38,40 @@ const deleteWorkOrderType = (clickEvent) => {
tableRowElement.remove();
}
bulmaJS.alert({
- message: "Work Order Type Deleted Successfully",
- contextualColorName: "success"
+ message: 'Work Order Type Deleted Successfully',
+ contextualColorName: 'success'
});
}
else {
bulmaJS.alert({
- title: "Error Deleting Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete Work Order Type",
+ title: 'Delete Work Order Type',
message: `Are you sure you want to delete this work order type?
Note that no work orders will be removed.`,
messageIsHtml: true,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Work Order Type",
+ text: 'Yes, Delete Work Order Type',
callbackFunction: doDelete
}
});
};
const moveWorkOrderType = (clickEvent) => {
const buttonElement = clickEvent.currentTarget;
- const tableRowElement = buttonElement.closest("tr");
+ const tableRowElement = buttonElement.closest('tr');
const workOrderTypeId = tableRowElement.dataset.workOrderTypeId;
cityssm.postJSON(los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveWorkOrderTypeUp" : "doMoveWorkOrderTypeDown"), {
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up' ? 'doMoveWorkOrderTypeUp' : 'doMoveWorkOrderTypeDown'), {
workOrderTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
}, (responseJSON) => {
if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes;
@@ -79,79 +79,79 @@ const moveWorkOrderType = (clickEvent) => {
}
else {
bulmaJS.alert({
- title: "Error Moving Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Moving Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
const renderWorkOrderTypes = () => {
- const containerElement = document.querySelector("#container--workOrderTypes");
+ const containerElement = document.querySelector('#container--workOrderTypes');
if (workOrderTypes.length === 0) {
containerElement.innerHTML = `
There are no active work order types.
`;
return;
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
for (const workOrderType of workOrderTypes) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.workOrderTypeId = workOrderType.workOrderTypeId.toString();
tableRowElement.innerHTML =
- "" +
- "" +
+ '' +
+ '' +
' ' +
('' +
'' +
' ' +
- "
" +
- "") +
- " " +
- " " +
+ '' +
+ '') +
+ ' ' +
+ ' ' +
'' +
'' +
'
' +
- los.getMoveUpDownButtonFieldHTML("button--moveWorkOrderTypeUp", "button--moveWorkOrderTypeDown", false) +
- "
" +
+ los.getMoveUpDownButtonFieldHTML('button--moveWorkOrderTypeUp', 'button--moveWorkOrderTypeDown', false) +
+ '
' +
'' +
'' +
' ' +
- " " +
- "
" +
- "" +
- " ";
- tableRowElement.querySelector("form").addEventListener("submit", updateWorkOrderType);
- tableRowElement.querySelector(".button--moveWorkOrderTypeUp").addEventListener("click", moveWorkOrderType);
- tableRowElement.querySelector(".button--moveWorkOrderTypeDown").addEventListener("click", moveWorkOrderType);
+ '' +
+ '' +
+ '' +
+ '';
+ tableRowElement.querySelector('form').addEventListener('submit', updateWorkOrderType);
+ tableRowElement.querySelector('.button--moveWorkOrderTypeUp').addEventListener('click', moveWorkOrderType);
+ tableRowElement.querySelector('.button--moveWorkOrderTypeDown').addEventListener('click', moveWorkOrderType);
tableRowElement
- .querySelector(".button--deleteWorkOrderType")
- .addEventListener("click", deleteWorkOrderType);
+ .querySelector('.button--deleteWorkOrderType')
+ .addEventListener('click', deleteWorkOrderType);
containerElement.append(tableRowElement);
}
};
-document.querySelector("#form--addWorkOrderType").addEventListener("submit", (submitEvent) => {
+document.querySelector('#form--addWorkOrderType').addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
const formElement = submitEvent.currentTarget;
- cityssm.postJSON(los.urlPrefix + "/admin/doAddWorkOrderType", formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/admin/doAddWorkOrderType', formElement, (responseJSON) => {
if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes;
renderWorkOrderTypes();
formElement.reset();
- formElement.querySelector("input").focus();
+ formElement.querySelector('input').focus();
}
else {
bulmaJS.alert({
- title: "Error Adding Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
diff --git a/public-typescript/adminTables/adminTablesWorkOrderTypes.ts b/public-typescript/adminTables/adminTablesWorkOrderTypes.ts
index 68f7ba57..ce21b1ba 100644
--- a/public-typescript/adminTables/adminTablesWorkOrderTypes.ts
+++ b/public-typescript/adminTables/adminTablesWorkOrderTypes.ts
@@ -1,238 +1,239 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../../types/globalTypes";
-import type * as recordTypes from "../../types/recordTypes";
+import type * as globalTypes from '../../types/globalTypes'
+import type * as recordTypes from '../../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-declare const los: globalTypes.LOS;
+declare const los: globalTypes.LOS
-let workOrderTypes: recordTypes.WorkOrderType[] = exports.workOrderTypes;
-delete exports.workOrderTypes;
+let workOrderTypes: recordTypes.WorkOrderType[] = exports.workOrderTypes
+delete exports.workOrderTypes
const updateWorkOrderType = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+ submitEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix + "/admin/doUpdateWorkOrderType",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderTypes?: recordTypes.WorkOrderType[];
- }) => {
- if (responseJSON.success) {
- workOrderTypes = responseJSON.workOrderTypes!;
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doUpdateWorkOrderType',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ workOrderTypes?: recordTypes.WorkOrderType[]
+ }) => {
+ if (responseJSON.success) {
+ workOrderTypes = responseJSON.workOrderTypes!
- bulmaJS.alert({
- message: "Work Order Type Updated Successfully",
- contextualColorName: "success"
- });
- } else {
- bulmaJS.alert({
- title: "Error Updating Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
-};
+ bulmaJS.alert({
+ message: 'Work Order Type Updated Successfully',
+ contextualColorName: 'success'
+ })
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+}
const deleteWorkOrderType = (clickEvent: Event) => {
- const tableRowElement = (clickEvent.currentTarget as HTMLElement).closest("tr")!;
+ const tableRowElement = (clickEvent.currentTarget as HTMLElement).closest('tr')!
- const workOrderTypeId = tableRowElement.dataset.workOrderTypeId;
+ const workOrderTypeId = tableRowElement.dataset.workOrderTypeId
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/admin/doDeleteWorkOrderType",
- {
- workOrderTypeId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderTypes?: recordTypes.WorkOrderType[];
- }) => {
- if (responseJSON.success) {
- workOrderTypes = responseJSON.workOrderTypes!;
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doDeleteWorkOrderType',
+ {
+ workOrderTypeId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ workOrderTypes?: recordTypes.WorkOrderType[]
+ }) => {
+ if (responseJSON.success) {
+ workOrderTypes = responseJSON.workOrderTypes!
- if (workOrderTypes.length === 0) {
- renderWorkOrderTypes();
- } else {
- tableRowElement.remove();
- }
+ if (workOrderTypes.length === 0) {
+ renderWorkOrderTypes()
+ } else {
+ tableRowElement.remove()
+ }
- bulmaJS.alert({
- message: "Work Order Type Deleted Successfully",
- contextualColorName: "success"
- });
- } else {
- bulmaJS.alert({
- title: "Error Deleting Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- bulmaJS.confirm({
- title: "Delete Work Order Type",
- message: `Are you sure you want to delete this work order type?
- Note that no work orders will be removed.`,
- messageIsHtml: true,
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Work Order Type",
- callbackFunction: doDelete
+ bulmaJS.alert({
+ message: 'Work Order Type Deleted Successfully',
+ contextualColorName: 'success'
+ })
+ } else {
+ bulmaJS.alert({
+ title: 'Error Deleting Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
-};
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: 'Delete Work Order Type',
+ message: `Are you sure you want to delete this work order type?
+ Note that no work orders will be removed.`,
+ messageIsHtml: true,
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete Work Order Type',
+ callbackFunction: doDelete
+ }
+ })
+}
const moveWorkOrderType = (clickEvent: MouseEvent) => {
- const buttonElement = clickEvent.currentTarget as HTMLButtonElement;
+ const buttonElement = clickEvent.currentTarget as HTMLButtonElement
- const tableRowElement = buttonElement.closest("tr")!;
+ const tableRowElement = buttonElement.closest('tr')!
- const workOrderTypeId = tableRowElement.dataset.workOrderTypeId;
+ const workOrderTypeId = tableRowElement.dataset.workOrderTypeId
- cityssm.postJSON(
- los.urlPrefix +
- "/admin/" +
- (buttonElement.dataset.direction === "up" ? "doMoveWorkOrderTypeUp" : "doMoveWorkOrderTypeDown"),
- {
- workOrderTypeId,
- moveToEnd: clickEvent.shiftKey ? "1" : "0"
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderTypes?: recordTypes.WorkOrderType[];
- }) => {
- if (responseJSON.success) {
- workOrderTypes = responseJSON.workOrderTypes!;
- renderWorkOrderTypes();
- } else {
- bulmaJS.alert({
- title: "Error Moving Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
-};
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/admin/' +
+ (buttonElement.dataset.direction === 'up' ? 'doMoveWorkOrderTypeUp' : 'doMoveWorkOrderTypeDown'),
+ {
+ workOrderTypeId,
+ moveToEnd: clickEvent.shiftKey ? '1' : '0'
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ workOrderTypes?: recordTypes.WorkOrderType[]
+ }) => {
+ if (responseJSON.success) {
+ workOrderTypes = responseJSON.workOrderTypes!
+ renderWorkOrderTypes()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Moving Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+}
const renderWorkOrderTypes = () => {
- const containerElement = document.querySelector("#container--workOrderTypes") as HTMLTableSectionElement;
+ const containerElement = document.querySelector('#container--workOrderTypes') as HTMLTableSectionElement
- if (workOrderTypes.length === 0) {
- containerElement.innerHTML = `
+ if (workOrderTypes.length === 0) {
+ containerElement.innerHTML = `
There are no active work order types.
- `;
+ `
- return;
- }
+ return
+ }
- containerElement.innerHTML = "";
+ containerElement.innerHTML = ''
- for (const workOrderType of workOrderTypes) {
- const tableRowElement = document.createElement("tr");
+ for (const workOrderType of workOrderTypes) {
+ const tableRowElement = document.createElement('tr')
- tableRowElement.dataset.workOrderTypeId = workOrderType.workOrderTypeId!.toString();
+ tableRowElement.dataset.workOrderTypeId = workOrderType.workOrderTypeId!.toString()
- tableRowElement.innerHTML =
- "" +
- "" +
- ' ' +
- ('' +
- '
' +
- ' ' +
- "
" +
- '
' +
- ' ' +
- "
" +
- "
") +
- " " +
- " " +
- '' +
- '' +
- '
' +
- los.getMoveUpDownButtonFieldHTML(
- "button--moveWorkOrderTypeUp",
- "button--moveWorkOrderTypeDown",
- false
- ) +
- "
" +
- '
' +
- '' +
- ' ' +
- " " +
- "
" +
- "
" +
- " ";
+ tableRowElement.innerHTML =
+ '' +
+ '' +
+ ' ' +
+ ('' +
+ '
' +
+ ' ' +
+ '
' +
+ '
' +
+ ' ' +
+ '
' +
+ '
') +
+ ' ' +
+ ' ' +
+ '' +
+ '' +
+ '
' +
+ los.getMoveUpDownButtonFieldHTML(
+ 'button--moveWorkOrderTypeUp',
+ 'button--moveWorkOrderTypeDown',
+ false
+ ) +
+ '
' +
+ '
' +
+ '' +
+ ' ' +
+ ' ' +
+ '
' +
+ '
' +
+ ' '
- tableRowElement.querySelector("form")!.addEventListener("submit", updateWorkOrderType);
+ tableRowElement.querySelector('form')!.addEventListener('submit', updateWorkOrderType)
- (tableRowElement.querySelector(".button--moveWorkOrderTypeUp") as HTMLButtonElement).addEventListener(
- "click",
- moveWorkOrderType
- );
+ ;(tableRowElement.querySelector('.button--moveWorkOrderTypeUp') as HTMLButtonElement).addEventListener(
+ 'click',
+ moveWorkOrderType
+ )
- (
- tableRowElement.querySelector(".button--moveWorkOrderTypeDown") as HTMLButtonElement
- ).addEventListener("click", moveWorkOrderType);
+ ;(tableRowElement.querySelector('.button--moveWorkOrderTypeDown') as HTMLButtonElement).addEventListener(
+ 'click',
+ moveWorkOrderType
+ )
- tableRowElement
- .querySelector(".button--deleteWorkOrderType")!
- .addEventListener("click", deleteWorkOrderType);
+ tableRowElement
+ .querySelector('.button--deleteWorkOrderType')!
+ .addEventListener('click', deleteWorkOrderType)
- containerElement.append(tableRowElement);
- }
-};
+ containerElement.append(tableRowElement)
+ }
+}
-(document.querySelector("#form--addWorkOrderType") as HTMLFormElement).addEventListener(
- "submit",
- (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+;(document.querySelector('#form--addWorkOrderType') as HTMLFormElement).addEventListener(
+ 'submit',
+ (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
- const formElement = submitEvent.currentTarget as HTMLFormElement;
+ const formElement = submitEvent.currentTarget as HTMLFormElement
- cityssm.postJSON(
- los.urlPrefix + "/admin/doAddWorkOrderType",
- formElement,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderTypes?: recordTypes.WorkOrderType[];
- }) => {
- if (responseJSON.success) {
- workOrderTypes = responseJSON.workOrderTypes!;
- renderWorkOrderTypes();
- formElement.reset();
- formElement.querySelector("input")!.focus();
- } else {
- bulmaJS.alert({
- title: "Error Adding Work Order Type",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-);
+ cityssm.postJSON(
+ los.urlPrefix + '/admin/doAddWorkOrderType',
+ formElement,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ workOrderTypes?: recordTypes.WorkOrderType[]
+ }) => {
+ if (responseJSON.success) {
+ workOrderTypes = responseJSON.workOrderTypes!
+ renderWorkOrderTypes()
+ formElement.reset()
+ formElement.querySelector('input')!.focus()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Adding Work Order Type',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+)
-renderWorkOrderTypes();
+renderWorkOrderTypes()
diff --git a/public-typescript/dashboard.js b/public-typescript/dashboard.js
index 396af7f2..3612a1e0 100644
--- a/public-typescript/dashboard.js
+++ b/public-typescript/dashboard.js
@@ -3,8 +3,8 @@
Object.defineProperty(exports, "__esModule", { value: true });
(() => {
const los = exports.los;
- const workOrderNumberCircleElements = document.querySelectorAll(".fa-circle[data-work-order-number");
+ const workOrderNumberCircleElements = document.querySelectorAll('.fa-circle[data-work-order-number');
for (const workOrderNumberCircleElement of workOrderNumberCircleElements) {
- workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber || "");
+ workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber || '');
}
})();
diff --git a/public-typescript/dashboard.ts b/public-typescript/dashboard.ts
index f0d34acd..76333a68 100644
--- a/public-typescript/dashboard.ts
+++ b/public-typescript/dashboard.ts
@@ -1,17 +1,17 @@
/* eslint-disable unicorn/prefer-module */
-import type * as globalTypes from "../types/globalTypes";
+import type * as globalTypes from '../types/globalTypes'
-(() => {
- const los = exports.los as globalTypes.LOS;
+;(() => {
+ const los = exports.los as globalTypes.LOS
- const workOrderNumberCircleElements = document.querySelectorAll(
- ".fa-circle[data-work-order-number"
- ) as NodeListOf;
+ const workOrderNumberCircleElements = document.querySelectorAll(
+ '.fa-circle[data-work-order-number'
+ ) as NodeListOf
- for (const workOrderNumberCircleElement of workOrderNumberCircleElements) {
- workOrderNumberCircleElement.style.color = los.getRandomColor(
- workOrderNumberCircleElement.dataset.workOrderNumber || ""
- );
- }
-})();
+ for (const workOrderNumberCircleElement of workOrderNumberCircleElements) {
+ workOrderNumberCircleElement.style.color = los.getRandomColor(
+ workOrderNumberCircleElement.dataset.workOrderNumber || ''
+ )
+ }
+})()
diff --git a/public-typescript/lotEdit.js b/public-typescript/lotEdit.js
index a9975ad2..f9cc92c4 100644
--- a/public-typescript/lotEdit.js
+++ b/public-typescript/lotEdit.js
@@ -4,14 +4,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
(() => {
var _a;
const los = exports.los;
- const lotId = document.querySelector("#lot--lotId").value;
- const isCreate = lotId === "";
+ const lotId = document.querySelector('#lot--lotId')
+ .value;
+ const isCreate = lotId === '';
// Main form
let refreshAfterSave = isCreate;
- const formElement = document.querySelector("#form--lot");
+ const formElement = document.querySelector('#form--lot');
function updateLot(formEvent) {
formEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lots/" + (isCreate ? "doCreateLot" : "doUpdateLot"), formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lots/' + (isCreate ? 'doCreateLot' : 'doUpdateLot'), formElement, (responseJSON) => {
if (responseJSON.success) {
los.clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
@@ -19,30 +20,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- message: exports.aliases.lot + " Updated Successfully",
- contextualColorName: "success"
+ message: exports.aliases.lot + ' Updated Successfully',
+ contextualColorName: 'success'
});
}
}
else {
bulmaJS.alert({
- title: "Error Updating " + exports.aliases.lot,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating ' + exports.aliases.lot,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
}
- formElement.addEventListener("submit", updateLot);
- const formInputElements = formElement.querySelectorAll("input, select");
+ formElement.addEventListener('submit', updateLot);
+ const formInputElements = formElement.querySelectorAll('input, select');
for (const formInputElement of formInputElements) {
- formInputElement.addEventListener("change", los.setUnsavedChanges);
+ formInputElement.addEventListener('change', los.setUnsavedChanges);
}
los.initializeUnlockFieldButtons(formElement);
- (_a = document.querySelector("#button--deleteLot")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", (clickEvent) => {
+ (_a = document
+ .querySelector('#button--deleteLot')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault();
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lots/doDeleteLot", {
+ cityssm.postJSON(los.urlPrefix + '/lots/doDeleteLot', {
lotId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -52,16 +54,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
else {
bulmaJS.alert({
title: `Error Deleting ${los.escapedAliases.Lot}`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete " + exports.aliases.lot,
+ title: 'Delete ' + exports.aliases.lot,
message: `Are you sure you want to delete this ${los.escapedAliases.lot}?`,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
text: `Yes, Delete ${los.escapedAliases.Lot}`,
callbackFunction: doDelete
@@ -69,17 +71,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
});
// Lot Type
- const lotTypeIdElement = document.querySelector("#lot--lotTypeId");
+ const lotTypeIdElement = document.querySelector('#lot--lotTypeId');
if (isCreate) {
- const lotFieldsContainerElement = document.querySelector("#container--lotFields");
- lotTypeIdElement.addEventListener("change", () => {
- if (lotTypeIdElement.value === "") {
+ const lotFieldsContainerElement = document.querySelector('#container--lotFields');
+ lotTypeIdElement.addEventListener('change', () => {
+ if (lotTypeIdElement.value === '') {
lotFieldsContainerElement.innerHTML = `
Select the ${los.escapedAliases.lot} type to load the available fields.
`;
return;
}
- cityssm.postJSON(los.urlPrefix + "/lots/doGetLotTypeFields", {
+ cityssm.postJSON(los.urlPrefix + '/lots/doGetLotTypeFields', {
lotTypeId: lotTypeIdElement.value
}, (responseJSON) => {
if (responseJSON.lotTypeFields.length === 0) {
@@ -88,41 +90,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
`;
return;
}
- lotFieldsContainerElement.innerHTML = "";
- let lotTypeFieldIds = "";
+ lotFieldsContainerElement.innerHTML = '';
+ let lotTypeFieldIds = '';
for (const lotTypeField of responseJSON.lotTypeFields) {
- lotTypeFieldIds += "," + lotTypeField.lotTypeFieldId;
- const fieldName = "lotFieldValue_" + lotTypeField.lotTypeFieldId;
- const fieldId = "lot--" + fieldName;
- const fieldElement = document.createElement("div");
- fieldElement.className = "field";
+ lotTypeFieldIds += ',' + lotTypeField.lotTypeFieldId;
+ const fieldName = 'lotFieldValue_' + lotTypeField.lotTypeFieldId;
+ const fieldId = 'lot--' + fieldName;
+ const fieldElement = document.createElement('div');
+ fieldElement.className = 'field';
fieldElement.innerHTML = `
`;
- fieldElement.querySelector("label").textContent =
- lotTypeField.lotTypeField;
- if (lotTypeField.lotTypeFieldValues === "") {
- const inputElement = document.createElement("input");
- inputElement.className = "input";
+ fieldElement.querySelector('label').textContent = lotTypeField.lotTypeField;
+ if (lotTypeField.lotTypeFieldValues === '') {
+ const inputElement = document.createElement('input');
+ inputElement.className = 'input';
inputElement.id = fieldId;
inputElement.name = fieldName;
- inputElement.type = "text";
+ inputElement.type = 'text';
inputElement.required = lotTypeField.isRequired;
inputElement.minLength = lotTypeField.minimumLength;
inputElement.maxLength = lotTypeField.maximumLength;
- if (lotTypeField.pattern && lotTypeField.pattern !== "") {
+ if (lotTypeField.pattern && lotTypeField.pattern !== '') {
inputElement.pattern = lotTypeField.pattern;
}
- fieldElement.querySelector(".control").append(inputElement);
+ fieldElement.querySelector('.control').append(inputElement);
}
else {
- fieldElement.querySelector(".control").innerHTML = `
+ fieldElement.querySelector('.control').innerHTML = `
(Not Set)
`;
- const selectElement = fieldElement.querySelector("select");
+ const selectElement = fieldElement.querySelector('select');
selectElement.required = lotTypeField.isRequired;
- const optionValues = lotTypeField.lotTypeFieldValues.split("\n");
+ const optionValues = lotTypeField.lotTypeFieldValues.split('\n');
for (const optionValue of optionValues) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = optionValue;
optionElement.textContent = optionValue;
selectElement.append(optionElement);
@@ -130,28 +131,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
lotFieldsContainerElement.append(fieldElement);
}
- lotFieldsContainerElement.insertAdjacentHTML("beforeend", `
`);
});
});
}
else {
const originalLotTypeId = lotTypeIdElement.value;
- lotTypeIdElement.addEventListener("change", () => {
+ lotTypeIdElement.addEventListener('change', () => {
if (lotTypeIdElement.value !== originalLotTypeId) {
bulmaJS.confirm({
- title: "Confirm Change",
+ title: 'Confirm Change',
message: `Are you sure you want to change the ${los.escapedAliases.lot} type?\n
This change affects the additional fields associated with this record.`,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Keep the Change",
+ text: 'Yes, Keep the Change',
callbackFunction: () => {
refreshAfterSave = true;
}
},
cancelButton: {
- text: "Revert the Change",
+ text: 'Revert the Change',
callbackFunction: () => {
lotTypeIdElement.value = originalLotTypeId;
}
@@ -164,7 +165,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
let lotComments = exports.lotComments;
delete exports.lotComments;
function openEditLotComment(clickEvent) {
- const lotCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotCommentId, 10);
+ const lotCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset
+ .lotCommentId, 10);
const lotComment = lotComments.find((currentLotComment) => {
return currentLotComment.lotCommentId === lotCommentId;
});
@@ -172,7 +174,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction;
const editComment = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lots/doUpdateLotComment", editFormElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lots/doUpdateLotComment', editFormElement, (responseJSON) => {
if (responseJSON.success) {
lotComments = responseJSON.lotComments;
editCloseModalFunction();
@@ -180,37 +182,34 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Updating Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lot-editComment", {
+ cityssm.openHtmlModal('lot-editComment', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotCommentEdit--lotId").value = lotId;
- modalElement.querySelector("#lotCommentEdit--lotCommentId").value =
- lotCommentId.toString();
- modalElement.querySelector("#lotCommentEdit--lotComment").value =
- lotComment.lotComment;
- const lotCommentDateStringElement = modalElement.querySelector("#lotCommentEdit--lotCommentDateString");
+ modalElement.querySelector('#lotCommentEdit--lotId').value = lotId;
+ modalElement.querySelector('#lotCommentEdit--lotCommentId').value = lotCommentId.toString();
+ modalElement.querySelector('#lotCommentEdit--lotComment').value = lotComment.lotComment;
+ const lotCommentDateStringElement = modalElement.querySelector('#lotCommentEdit--lotCommentDateString');
lotCommentDateStringElement.value = lotComment.lotCommentDateString;
const currentDateString = cityssm.dateToString(new Date());
lotCommentDateStringElement.max =
lotComment.lotCommentDateString <= currentDateString
? currentDateString
: lotComment.lotCommentDateString;
- modalElement.querySelector("#lotCommentEdit--lotCommentTimeString").value = lotComment.lotCommentTimeString;
+ modalElement.querySelector('#lotCommentEdit--lotCommentTimeString').value = lotComment.lotCommentTimeString;
},
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
los.initializeDatePickers(modalElement);
- // los.initializeTimePickers(modalElement);
- modalElement.querySelector("#lotCommentEdit--lotComment").focus();
- editFormElement = modalElement.querySelector("form");
- editFormElement.addEventListener("submit", editComment);
+ modalElement.querySelector('#lotCommentEdit--lotComment').focus();
+ editFormElement = modalElement.querySelector('form');
+ editFormElement.addEventListener('submit', editComment);
editCloseModalFunction = closeModalFunction;
},
onremoved: () => {
@@ -219,9 +218,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
function deleteLotComment(clickEvent) {
- const lotCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotCommentId, 10);
+ const lotCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset
+ .lotCommentId, 10);
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lots/doDeleteLotComment", {
+ cityssm.postJSON(los.urlPrefix + '/lots/doDeleteLotComment', {
lotId,
lotCommentId
}, (responseJSON) => {
@@ -231,33 +231,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Removing Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Removing Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Remove Comment?",
- message: "Are you sure you want to remove this comment?",
+ title: 'Remove Comment?',
+ message: 'Are you sure you want to remove this comment?',
okButton: {
- text: "Yes, Remove Comment",
+ text: 'Yes, Remove Comment',
callbackFunction: doDelete
},
- contextualColorName: "warning"
+ contextualColorName: 'warning'
});
}
function renderLotComments() {
- const containerElement = document.querySelector("#container--lotComments");
+ const containerElement = document.querySelector('#container--lotComments');
if (lotComments.length === 0) {
containerElement.innerHTML = `
There are no comments to display.
`;
return;
}
- const tableElement = document.createElement("table");
- tableElement.className = "table is-fullwidth is-striped is-hoverable";
+ const tableElement = document.createElement('table');
+ tableElement.className = 'table is-fullwidth is-striped is-hoverable';
tableElement.innerHTML = `
Commentor
Comment Date
@@ -266,42 +266,48 @@ Object.defineProperty(exports, "__esModule", { value: true });
`;
for (const lotComment of lotComments) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotCommentId = lotComment.lotCommentId.toString();
tableRowElement.innerHTML =
- "
" +
- cityssm.escapeHTML(lotComment.recordCreate_userName || "") +
- " " +
- "
" +
+ ' ' +
+ cityssm.escapeHTML(lotComment.recordCreate_userName || '') +
+ ' ' +
+ '
' +
lotComment.lotCommentDateString +
- (lotComment.lotCommentTime === 0 ? "" : " " + lotComment.lotCommentTimeString) +
- " " +
- "
" +
- cityssm.escapeHTML(lotComment.lotComment || "") +
- " " +
+ (lotComment.lotCommentTime === 0
+ ? ''
+ : ' ' + lotComment.lotCommentTimeString) +
+ '' +
+ '
' +
+ cityssm.escapeHTML(lotComment.lotComment || '') +
+ ' ' +
('
' +
'' +
('' +
' ' +
- " Edit " +
- " ") +
+ ' Edit ' +
+ '') +
('' +
' ' +
- " ") +
- "
" +
- " ");
- tableRowElement.querySelector(".button--edit").addEventListener("click", openEditLotComment);
- tableRowElement.querySelector(".button--delete").addEventListener("click", deleteLotComment);
- tableElement.querySelector("tbody").append(tableRowElement);
+ '') +
+ '
' +
+ '');
+ tableRowElement
+ .querySelector('.button--edit')
+ .addEventListener('click', openEditLotComment);
+ tableRowElement
+ .querySelector('.button--delete')
+ .addEventListener('click', deleteLotComment);
+ tableElement.querySelector('tbody').append(tableRowElement);
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
containerElement.append(tableElement);
}
function openAddCommentModal() {
let addCommentCloseModalFunction;
const doAddComment = (formEvent) => {
formEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lots/doAddLotComment", formEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lots/doAddLotComment', formEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
lotComments = responseJSON.lotComments;
renderLotComments();
@@ -309,25 +315,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
});
};
- cityssm.openHtmlModal("lot-addComment", {
+ cityssm.openHtmlModal('lot-addComment', {
onshow(modalElement) {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotCommentAdd--lotId").value = lotId;
- modalElement.querySelector("form").addEventListener("submit", doAddComment);
+ modalElement.querySelector('#lotCommentAdd--lotId').value = lotId;
+ modalElement
+ .querySelector('form')
+ .addEventListener('submit', doAddComment);
},
onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped();
addCommentCloseModalFunction = closeModalFunction;
- modalElement.querySelector("#lotCommentAdd--lotComment").focus();
+ modalElement.querySelector('#lotCommentAdd--lotComment').focus();
},
onremoved() {
bulmaJS.toggleHtmlClipped();
- document.querySelector("#lotComments--add").focus();
+ document.querySelector('#lotComments--add').focus();
}
});
}
if (!isCreate) {
- document.querySelector("#lotComments--add").addEventListener("click", openAddCommentModal);
+ document
+ .querySelector('#lotComments--add')
+ .addEventListener('click', openAddCommentModal);
renderLotComments();
}
})();
diff --git a/public-typescript/lotEdit.ts b/public-typescript/lotEdit.ts
index 57fc3caf..15c0cde6 100644
--- a/public-typescript/lotEdit.ts
+++ b/public-typescript/lotEdit.ts
@@ -1,461 +1,520 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../types/globalTypes";
-import type * as recordTypes from "../types/recordTypes";
-
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
-
-import type { BulmaJS } from "@cityssm/bulma-js/types";
-
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
-
-(() => {
- const los = exports.los as globalTypes.LOS;
-
- const lotId = (document.querySelector("#lot--lotId") as HTMLInputElement).value;
- const isCreate = lotId === "";
-
- // Main form
-
- let refreshAfterSave = isCreate;
-
- const formElement = document.querySelector("#form--lot") as HTMLFormElement;
-
- function updateLot(formEvent: SubmitEvent) {
- formEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/lots/" + (isCreate ? "doCreateLot" : "doUpdateLot"),
- formElement,
- (responseJSON: { success: boolean; lotId?: number; errorMessage?: string }) => {
- if (responseJSON.success) {
- los.clearUnsavedChanges();
-
- if (isCreate || refreshAfterSave) {
- window.location.href = los.getLotURL(responseJSON.lotId, true, true);
- } else {
- bulmaJS.alert({
- message: exports.aliases.lot + " Updated Successfully",
- contextualColorName: "success"
- });
- }
- } else {
- bulmaJS.alert({
- title: "Error Updating " + exports.aliases.lot,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- }
-
- formElement.addEventListener("submit", updateLot);
-
- const formInputElements = formElement.querySelectorAll("input, select");
-
- for (const formInputElement of formInputElements) {
- formInputElement.addEventListener("change", los.setUnsavedChanges);
- }
-
- los.initializeUnlockFieldButtons(formElement);
-
- document.querySelector("#button--deleteLot")?.addEventListener("click", (clickEvent) => {
- clickEvent.preventDefault();
-
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/lots/doDeleteLot",
- {
- lotId
- },
- (responseJSON: { success: boolean; errorMessage?: string }) => {
- if (responseJSON.success) {
- cityssm.disableNavBlocker();
- window.location.href = los.getLotURL();
- } else {
- bulmaJS.alert({
- title: `Error Deleting ${los.escapedAliases.Lot}`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- bulmaJS.confirm({
- title: "Delete " + exports.aliases.lot,
- message: `Are you sure you want to delete this ${los.escapedAliases.lot}?`,
- contextualColorName: "warning",
- okButton: {
- text: `Yes, Delete ${los.escapedAliases.Lot}`,
- callbackFunction: doDelete
- }
- });
- });
-
- // Lot Type
-
- const lotTypeIdElement = document.querySelector("#lot--lotTypeId") as HTMLSelectElement;
-
- if (isCreate) {
- const lotFieldsContainerElement = document.querySelector("#container--lotFields") as HTMLElement;
-
- lotTypeIdElement.addEventListener("change", () => {
- if (lotTypeIdElement.value === "") {
- lotFieldsContainerElement.innerHTML = `
-
Select the ${los.escapedAliases.lot} type to load the available fields.
-
`;
-
- return;
- }
-
- cityssm.postJSON(
- los.urlPrefix + "/lots/doGetLotTypeFields",
- {
- lotTypeId: lotTypeIdElement.value
- },
- (responseJSON: { lotTypeFields: recordTypes.LotTypeField[] }) => {
- if (responseJSON.lotTypeFields.length === 0) {
- lotFieldsContainerElement.innerHTML = `
-
There are no additional fields for this ${los.escapedAliases.lot} type.
-
`;
-
- return;
- }
-
- lotFieldsContainerElement.innerHTML = "";
-
- let lotTypeFieldIds = "";
-
- for (const lotTypeField of responseJSON.lotTypeFields) {
- lotTypeFieldIds += "," + lotTypeField.lotTypeFieldId;
-
- const fieldName = "lotFieldValue_" + lotTypeField.lotTypeFieldId;
-
- const fieldId = "lot--" + fieldName;
-
- const fieldElement = document.createElement("div");
- fieldElement.className = "field";
- fieldElement.innerHTML = `
-
`;
-
- (fieldElement.querySelector("label") as HTMLLabelElement).textContent =
- lotTypeField.lotTypeField as string;
-
- if (lotTypeField.lotTypeFieldValues === "") {
- const inputElement = document.createElement("input");
-
- inputElement.className = "input";
-
- inputElement.id = fieldId;
-
- inputElement.name = fieldName;
-
- inputElement.type = "text";
-
- inputElement.required = lotTypeField.isRequired as boolean;
- inputElement.minLength = lotTypeField.minimumLength as number;
- inputElement.maxLength = lotTypeField.maximumLength as number;
-
- if (lotTypeField.pattern && lotTypeField.pattern !== "") {
- inputElement.pattern = lotTypeField.pattern;
- }
-
- fieldElement.querySelector(".control")!.append(inputElement);
- } else {
- fieldElement.querySelector(
- ".control"
- )!.innerHTML = `
- (Not Set)
-
`;
-
- const selectElement = fieldElement.querySelector("select") as HTMLSelectElement;
-
- selectElement.required = lotTypeField.isRequired as boolean;
-
- const optionValues = (lotTypeField.lotTypeFieldValues as string).split("\n");
-
- for (const optionValue of optionValues) {
- const optionElement = document.createElement("option");
- optionElement.value = optionValue;
- optionElement.textContent = optionValue;
- selectElement.append(optionElement);
- }
- }
-
- lotFieldsContainerElement.append(fieldElement);
- }
-
- lotFieldsContainerElement.insertAdjacentHTML(
- "beforeend",
- ` `
- );
- }
- );
- });
- } else {
- const originalLotTypeId = lotTypeIdElement.value;
-
- lotTypeIdElement.addEventListener("change", () => {
- if (lotTypeIdElement.value !== originalLotTypeId) {
- bulmaJS.confirm({
- title: "Confirm Change",
- message: `Are you sure you want to change the ${los.escapedAliases.lot} type?\n
- This change affects the additional fields associated with this record.`,
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Keep the Change",
- callbackFunction: () => {
- refreshAfterSave = true;
- }
- },
- cancelButton: {
- text: "Revert the Change",
- callbackFunction: () => {
- lotTypeIdElement.value = originalLotTypeId;
- }
- }
- });
- }
- });
- }
-
- // Comments
-
- let lotComments: recordTypes.LotComment[] = exports.lotComments;
- delete exports.lotComments;
-
- function openEditLotComment(clickEvent: Event) {
- const lotCommentId = Number.parseInt(
- (clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.lotCommentId!,
- 10
- );
-
- const lotComment = lotComments.find((currentLotComment) => {
- return currentLotComment.lotCommentId === lotCommentId;
- })!;
-
- let editFormElement: HTMLFormElement;
- let editCloseModalFunction: () => void;
-
- const editComment = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/lots/doUpdateLotComment",
- editFormElement,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotComments?: recordTypes.LotComment[];
- }) => {
- if (responseJSON.success) {
- lotComments = responseJSON.lotComments!;
- editCloseModalFunction();
- renderLotComments();
- } else {
- bulmaJS.alert({
- title: "Error Updating Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- cityssm.openHtmlModal("lot-editComment", {
- onshow: (modalElement) => {
- los.populateAliases(modalElement);
-
- (modalElement.querySelector("#lotCommentEdit--lotId") as HTMLInputElement).value = lotId;
-
- (modalElement.querySelector("#lotCommentEdit--lotCommentId") as HTMLInputElement).value =
- lotCommentId.toString();
-
- (modalElement.querySelector("#lotCommentEdit--lotComment") as HTMLInputElement).value =
- lotComment.lotComment!;
-
- const lotCommentDateStringElement = modalElement.querySelector(
- "#lotCommentEdit--lotCommentDateString"
- ) as HTMLInputElement;
-
- lotCommentDateStringElement.value = lotComment.lotCommentDateString!;
-
- const currentDateString = cityssm.dateToString(new Date());
-
- lotCommentDateStringElement.max =
- lotComment.lotCommentDateString! <= currentDateString
- ? currentDateString
- : lotComment.lotCommentDateString!;
-
- (
- modalElement.querySelector("#lotCommentEdit--lotCommentTimeString") as HTMLInputElement
- ).value = lotComment.lotCommentTimeString!;
- },
- onshown: (modalElement, closeModalFunction) => {
- bulmaJS.toggleHtmlClipped();
-
- los.initializeDatePickers(modalElement);
- // los.initializeTimePickers(modalElement);
-
- (modalElement.querySelector("#lotCommentEdit--lotComment") as HTMLTextAreaElement).focus();
-
- editFormElement = modalElement.querySelector("form")!;
- editFormElement.addEventListener("submit", editComment);
-
- editCloseModalFunction = closeModalFunction;
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
- }
- });
- }
-
- function deleteLotComment(clickEvent: Event) {
- const lotCommentId = Number.parseInt(
- (clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.lotCommentId!,
- 10
- );
-
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/lots/doDeleteLotComment",
- {
- lotId,
- lotCommentId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotComments: recordTypes.LotComment[];
- }) => {
- if (responseJSON.success) {
- lotComments = responseJSON.lotComments;
- renderLotComments();
- } else {
- bulmaJS.alert({
- title: "Error Removing Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- bulmaJS.confirm({
- title: "Remove Comment?",
- message: "Are you sure you want to remove this comment?",
- okButton: {
- text: "Yes, Remove Comment",
- callbackFunction: doDelete
- },
- contextualColorName: "warning"
- });
- }
-
- function renderLotComments() {
- const containerElement = document.querySelector("#container--lotComments") as HTMLElement;
-
- if (lotComments.length === 0) {
- containerElement.innerHTML = `
-
There are no comments to display.
-
`;
- return;
+import type * as globalTypes from '../types/globalTypes'
+import type * as recordTypes from '../types/recordTypes'
+
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
+
+import type { BulmaJS } from '@cityssm/bulma-js/types'
+
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
+
+;(() => {
+ const los = exports.los as globalTypes.LOS
+
+ const lotId = (document.querySelector('#lot--lotId') as HTMLInputElement)
+ .value
+ const isCreate = lotId === ''
+
+ // Main form
+
+ let refreshAfterSave = isCreate
+
+ const formElement = document.querySelector('#form--lot') as HTMLFormElement
+
+ function updateLot(formEvent: SubmitEvent) {
+ formEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/lots/' + (isCreate ? 'doCreateLot' : 'doUpdateLot'),
+ formElement,
+ (responseJSON: {
+ success: boolean
+ lotId?: number
+ errorMessage?: string
+ }) => {
+ if (responseJSON.success) {
+ los.clearUnsavedChanges()
+
+ if (isCreate || refreshAfterSave) {
+ window.location.href = los.getLotURL(responseJSON.lotId, true, true)
+ } else {
+ bulmaJS.alert({
+ message: exports.aliases.lot + ' Updated Successfully',
+ contextualColorName: 'success'
+ })
+ }
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating ' + exports.aliases.lot,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
+ }
+ )
+ }
- const tableElement = document.createElement("table");
- tableElement.className = "table is-fullwidth is-striped is-hoverable";
- tableElement.innerHTML = `
+ formElement.addEventListener('submit', updateLot)
+
+ const formInputElements = formElement.querySelectorAll('input, select')
+
+ for (const formInputElement of formInputElements) {
+ formInputElement.addEventListener('change', los.setUnsavedChanges)
+ }
+
+ los.initializeUnlockFieldButtons(formElement)
+
+ document
+ .querySelector('#button--deleteLot')
+ ?.addEventListener('click', (clickEvent) => {
+ clickEvent.preventDefault()
+
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lots/doDeleteLot',
+ {
+ lotId
+ },
+ (responseJSON: { success: boolean; errorMessage?: string }) => {
+ if (responseJSON.success) {
+ cityssm.disableNavBlocker()
+ window.location.href = los.getLotURL()
+ } else {
+ bulmaJS.alert({
+ title: `Error Deleting ${los.escapedAliases.Lot}`,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: 'Delete ' + exports.aliases.lot,
+ message: `Are you sure you want to delete this ${los.escapedAliases.lot}?`,
+ contextualColorName: 'warning',
+ okButton: {
+ text: `Yes, Delete ${los.escapedAliases.Lot}`,
+ callbackFunction: doDelete
+ }
+ })
+ })
+
+ // Lot Type
+
+ const lotTypeIdElement = document.querySelector(
+ '#lot--lotTypeId'
+ ) as HTMLSelectElement
+
+ if (isCreate) {
+ const lotFieldsContainerElement = document.querySelector(
+ '#container--lotFields'
+ ) as HTMLElement
+
+ lotTypeIdElement.addEventListener('change', () => {
+ if (lotTypeIdElement.value === '') {
+ lotFieldsContainerElement.innerHTML = `
+
Select the ${los.escapedAliases.lot} type to load the available fields.
+
`
+
+ return
+ }
+
+ cityssm.postJSON(
+ los.urlPrefix + '/lots/doGetLotTypeFields',
+ {
+ lotTypeId: lotTypeIdElement.value
+ },
+ (responseJSON: { lotTypeFields: recordTypes.LotTypeField[] }) => {
+ if (responseJSON.lotTypeFields.length === 0) {
+ lotFieldsContainerElement.innerHTML = `
+
There are no additional fields for this ${los.escapedAliases.lot} type.
+
`
+
+ return
+ }
+
+ lotFieldsContainerElement.innerHTML = ''
+
+ let lotTypeFieldIds = ''
+
+ for (const lotTypeField of responseJSON.lotTypeFields) {
+ lotTypeFieldIds += ',' + lotTypeField.lotTypeFieldId
+
+ const fieldName = 'lotFieldValue_' + lotTypeField.lotTypeFieldId
+
+ const fieldId = 'lot--' + fieldName
+
+ const fieldElement = document.createElement('div')
+ fieldElement.className = 'field'
+ fieldElement.innerHTML = `
+
`
+
+ ;(
+ fieldElement.querySelector('label') as HTMLLabelElement
+ ).textContent = lotTypeField.lotTypeField as string
+
+ if (lotTypeField.lotTypeFieldValues === '') {
+ const inputElement = document.createElement('input')
+
+ inputElement.className = 'input'
+
+ inputElement.id = fieldId
+
+ inputElement.name = fieldName
+
+ inputElement.type = 'text'
+
+ inputElement.required = lotTypeField.isRequired as boolean
+ inputElement.minLength = lotTypeField.minimumLength as number
+ inputElement.maxLength = lotTypeField.maximumLength as number
+
+ if (lotTypeField.pattern && lotTypeField.pattern !== '') {
+ inputElement.pattern = lotTypeField.pattern
+ }
+
+ fieldElement.querySelector('.control')!.append(inputElement)
+ } else {
+ fieldElement.querySelector(
+ '.control'
+ )!.innerHTML = `
+ (Not Set)
+
`
+
+ const selectElement = fieldElement.querySelector(
+ 'select'
+ ) as HTMLSelectElement
+
+ selectElement.required = lotTypeField.isRequired as boolean
+
+ const optionValues = (
+ lotTypeField.lotTypeFieldValues as string
+ ).split('\n')
+
+ for (const optionValue of optionValues) {
+ const optionElement = document.createElement('option')
+ optionElement.value = optionValue
+ optionElement.textContent = optionValue
+ selectElement.append(optionElement)
+ }
+ }
+
+ lotFieldsContainerElement.append(fieldElement)
+ }
+
+ lotFieldsContainerElement.insertAdjacentHTML(
+ 'beforeend',
+ ` `
+ )
+ }
+ )
+ })
+ } else {
+ const originalLotTypeId = lotTypeIdElement.value
+
+ lotTypeIdElement.addEventListener('change', () => {
+ if (lotTypeIdElement.value !== originalLotTypeId) {
+ bulmaJS.confirm({
+ title: 'Confirm Change',
+ message: `Are you sure you want to change the ${los.escapedAliases.lot} type?\n
+ This change affects the additional fields associated with this record.`,
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Keep the Change',
+ callbackFunction: () => {
+ refreshAfterSave = true
+ }
+ },
+ cancelButton: {
+ text: 'Revert the Change',
+ callbackFunction: () => {
+ lotTypeIdElement.value = originalLotTypeId
+ }
+ }
+ })
+ }
+ })
+ }
+
+ // Comments
+
+ let lotComments: recordTypes.LotComment[] = exports.lotComments
+ delete exports.lotComments
+
+ function openEditLotComment(clickEvent: Event) {
+ const lotCommentId = Number.parseInt(
+ (clickEvent.currentTarget as HTMLElement).closest('tr')!.dataset
+ .lotCommentId!,
+ 10
+ )
+
+ const lotComment = lotComments.find((currentLotComment) => {
+ return currentLotComment.lotCommentId === lotCommentId
+ })!
+
+ let editFormElement: HTMLFormElement
+ let editCloseModalFunction: () => void
+
+ const editComment = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/lots/doUpdateLotComment',
+ editFormElement,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotComments?: recordTypes.LotComment[]
+ }) => {
+ if (responseJSON.success) {
+ lotComments = responseJSON.lotComments!
+ editCloseModalFunction()
+ renderLotComments()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ cityssm.openHtmlModal('lot-editComment', {
+ onshow: (modalElement) => {
+ los.populateAliases(modalElement)
+
+ ;(
+ modalElement.querySelector(
+ '#lotCommentEdit--lotId'
+ ) as HTMLInputElement
+ ).value = lotId
+
+ ;(
+ modalElement.querySelector(
+ '#lotCommentEdit--lotCommentId'
+ ) as HTMLInputElement
+ ).value = lotCommentId.toString()
+
+ ;(
+ modalElement.querySelector(
+ '#lotCommentEdit--lotComment'
+ ) as HTMLInputElement
+ ).value = lotComment.lotComment!
+
+ const lotCommentDateStringElement = modalElement.querySelector(
+ '#lotCommentEdit--lotCommentDateString'
+ ) as HTMLInputElement
+
+ lotCommentDateStringElement.value = lotComment.lotCommentDateString!
+
+ const currentDateString = cityssm.dateToString(new Date())
+
+ lotCommentDateStringElement.max =
+ lotComment.lotCommentDateString! <= currentDateString
+ ? currentDateString
+ : lotComment.lotCommentDateString!
+
+ ;(
+ modalElement.querySelector(
+ '#lotCommentEdit--lotCommentTimeString'
+ ) as HTMLInputElement
+ ).value = lotComment.lotCommentTimeString!
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ bulmaJS.toggleHtmlClipped()
+
+ los.initializeDatePickers(modalElement)
+ // los.initializeTimePickers(modalElement);
+
+ ;(
+ modalElement.querySelector(
+ '#lotCommentEdit--lotComment'
+ ) as HTMLTextAreaElement
+ ).focus()
+
+ editFormElement = modalElement.querySelector('form')!
+ editFormElement.addEventListener('submit', editComment)
+
+ editCloseModalFunction = closeModalFunction
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ }
+
+ function deleteLotComment(clickEvent: Event) {
+ const lotCommentId = Number.parseInt(
+ (clickEvent.currentTarget as HTMLElement).closest('tr')!.dataset
+ .lotCommentId!,
+ 10
+ )
+
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lots/doDeleteLotComment',
+ {
+ lotId,
+ lotCommentId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotComments: recordTypes.LotComment[]
+ }) => {
+ if (responseJSON.success) {
+ lotComments = responseJSON.lotComments
+ renderLotComments()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Removing Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: 'Remove Comment?',
+ message: 'Are you sure you want to remove this comment?',
+ okButton: {
+ text: 'Yes, Remove Comment',
+ callbackFunction: doDelete
+ },
+ contextualColorName: 'warning'
+ })
+ }
+
+ function renderLotComments() {
+ const containerElement = document.querySelector(
+ '#container--lotComments'
+ ) as HTMLElement
+
+ if (lotComments.length === 0) {
+ containerElement.innerHTML = `
+
There are no comments to display.
+
`
+ return
+ }
+
+ const tableElement = document.createElement('table')
+ tableElement.className = 'table is-fullwidth is-striped is-hoverable'
+ tableElement.innerHTML = `
Commentor
Comment Date
Comment
Options
- `;
+ `
- for (const lotComment of lotComments) {
- const tableRowElement = document.createElement("tr");
- tableRowElement.dataset.lotCommentId = lotComment.lotCommentId!.toString();
+ for (const lotComment of lotComments) {
+ const tableRowElement = document.createElement('tr')
+ tableRowElement.dataset.lotCommentId = lotComment.lotCommentId!.toString()
- tableRowElement.innerHTML =
- "" +
- cityssm.escapeHTML(lotComment.recordCreate_userName || "") +
- " " +
- "" +
- lotComment.lotCommentDateString +
- (lotComment.lotCommentTime === 0 ? "" : " " + lotComment.lotCommentTimeString) +
- " " +
- "" +
- cityssm.escapeHTML(lotComment.lotComment || "") +
- " " +
- ('' +
- '' +
- ('' +
- ' ' +
- " Edit " +
- " ") +
- ('' +
- ' ' +
- " ") +
- "
" +
- " ");
+ tableRowElement.innerHTML =
+ '' +
+ cityssm.escapeHTML(lotComment.recordCreate_userName || '') +
+ ' ' +
+ '' +
+ lotComment.lotCommentDateString +
+ (lotComment.lotCommentTime === 0
+ ? ''
+ : ' ' + lotComment.lotCommentTimeString) +
+ ' ' +
+ '' +
+ cityssm.escapeHTML(lotComment.lotComment || '') +
+ ' ' +
+ ('' +
+ '' +
+ ('' +
+ ' ' +
+ ' Edit ' +
+ ' ') +
+ ('' +
+ ' ' +
+ ' ') +
+ '
' +
+ ' ')
- tableRowElement.querySelector(".button--edit")!.addEventListener("click", openEditLotComment);
+ tableRowElement
+ .querySelector('.button--edit')!
+ .addEventListener('click', openEditLotComment)
- tableRowElement.querySelector(".button--delete")!.addEventListener("click", deleteLotComment);
+ tableRowElement
+ .querySelector('.button--delete')!
+ .addEventListener('click', deleteLotComment)
- tableElement.querySelector("tbody")!.append(tableRowElement);
+ tableElement.querySelector('tbody')!.append(tableRowElement)
+ }
+
+ containerElement.innerHTML = ''
+ containerElement.append(tableElement)
+ }
+
+ function openAddCommentModal() {
+ let addCommentCloseModalFunction: () => void
+
+ const doAddComment = (formEvent: SubmitEvent) => {
+ formEvent.preventDefault()
+
+ cityssm.postJSON(
+ los.urlPrefix + '/lots/doAddLotComment',
+ formEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ lotComments?: recordTypes.LotComment[]
+ }) => {
+ if (responseJSON.success) {
+ lotComments = responseJSON.lotComments!
+ renderLotComments()
+ addCommentCloseModalFunction()
+ }
}
-
- containerElement.innerHTML = "";
- containerElement.append(tableElement);
+ )
}
- function openAddCommentModal() {
- let addCommentCloseModalFunction: () => void;
+ cityssm.openHtmlModal('lot-addComment', {
+ onshow(modalElement) {
+ los.populateAliases(modalElement)
+ ;(
+ modalElement.querySelector(
+ '#lotCommentAdd--lotId'
+ ) as HTMLInputElement
+ ).value = lotId
+ modalElement
+ .querySelector('form')!
+ .addEventListener('submit', doAddComment)
+ },
+ onshown(modalElement, closeModalFunction) {
+ bulmaJS.toggleHtmlClipped()
+ addCommentCloseModalFunction = closeModalFunction
+ ;(
+ modalElement.querySelector(
+ '#lotCommentAdd--lotComment'
+ ) as HTMLTextAreaElement
+ ).focus()
+ },
+ onremoved() {
+ bulmaJS.toggleHtmlClipped()
+ ;(
+ document.querySelector('#lotComments--add') as HTMLButtonElement
+ ).focus()
+ }
+ })
+ }
- const doAddComment = (formEvent: SubmitEvent) => {
- formEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/lots/doAddLotComment",
- formEvent.currentTarget,
- (responseJSON: { success: boolean; lotComments?: recordTypes.LotComment[] }) => {
- if (responseJSON.success) {
- lotComments = responseJSON.lotComments!;
- renderLotComments();
- addCommentCloseModalFunction();
- }
- }
- );
- };
-
- cityssm.openHtmlModal("lot-addComment", {
- onshow(modalElement) {
- los.populateAliases(modalElement);
- (modalElement.querySelector("#lotCommentAdd--lotId") as HTMLInputElement).value = lotId;
- modalElement.querySelector("form")!.addEventListener("submit", doAddComment);
- },
- onshown(modalElement, closeModalFunction) {
- bulmaJS.toggleHtmlClipped();
- addCommentCloseModalFunction = closeModalFunction;
- (modalElement.querySelector("#lotCommentAdd--lotComment") as HTMLTextAreaElement).focus();
- },
- onremoved() {
- bulmaJS.toggleHtmlClipped();
- (document.querySelector("#lotComments--add") as HTMLButtonElement).focus();
- }
- });
- }
-
- if (!isCreate) {
- document.querySelector("#lotComments--add")!.addEventListener("click", openAddCommentModal);
- renderLotComments();
- }
-})();
+ if (!isCreate) {
+ document
+ .querySelector('#lotComments--add')!
+ .addEventListener('click', openAddCommentModal)
+ renderLotComments()
+ }
+})()
diff --git a/public-typescript/lotOccupancyEdit.js b/public-typescript/lotOccupancyEdit.js
index 93bf4595..4346b923 100644
--- a/public-typescript/lotOccupancyEdit.js
+++ b/public-typescript/lotOccupancyEdit.js
@@ -4,17 +4,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
(() => {
var _a, _b, _c;
const los = exports.los;
- const lotOccupancyId = document.querySelector("#lotOccupancy--lotOccupancyId")
- .value;
- const isCreate = lotOccupancyId === "";
+ const lotOccupancyId = document.querySelector('#lotOccupancy--lotOccupancyId').value;
+ const isCreate = lotOccupancyId === '';
/*
* Main form
*/
let refreshAfterSave = isCreate;
- const formElement = document.querySelector("#form--lotOccupancy");
- formElement.addEventListener("submit", (formEvent) => {
+ const formElement = document.querySelector('#form--lotOccupancy');
+ formElement.addEventListener('submit', (formEvent) => {
formEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/" + (isCreate ? "doCreateLotOccupancy" : "doUpdateLotOccupancy"), formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix +
+ '/lotOccupancies/' +
+ (isCreate ? 'doCreateLotOccupancy' : 'doUpdateLotOccupancy'), formElement, (responseJSON) => {
if (responseJSON.success) {
los.clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
@@ -23,25 +24,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
else {
bulmaJS.alert({
message: `${los.escapedAliases.Occupancy} Updated Successfully`,
- contextualColorName: "success"
+ contextualColorName: 'success'
});
}
}
else {
bulmaJS.alert({
- title: "Error Saving " + exports.aliases.occupancy,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Saving ' + exports.aliases.occupancy,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
});
- const formInputElements = formElement.querySelectorAll("input, select");
+ const formInputElements = formElement.querySelectorAll('input, select');
for (const formInputElement of formInputElements) {
- formInputElement.addEventListener("change", los.setUnsavedChanges);
+ formInputElement.addEventListener('change', los.setUnsavedChanges);
}
const doCopy = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doCopyLotOccupancy", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doCopyLotOccupancy', {
lotOccupancyId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -50,38 +51,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Copying Record",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Copying Record',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- (_a = document.querySelector("#button--copyLotOccupancy")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", (clickEvent) => {
+ (_a = document
+ .querySelector('#button--copyLotOccupancy')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault();
if (los.hasUnsavedChanges()) {
bulmaJS.alert({
- title: "Unsaved Changes",
- message: "Please save all unsaved changes before continuing.",
- contextualColorName: "warning"
+ title: 'Unsaved Changes',
+ message: 'Please save all unsaved changes before continuing.',
+ contextualColorName: 'warning'
});
}
else {
bulmaJS.confirm({
title: `Copy ${los.escapedAliases.Occupancy} Record as New`,
- message: "Are you sure you want to copy this record to a new record?",
- contextualColorName: "info",
+ message: 'Are you sure you want to copy this record to a new record?',
+ contextualColorName: 'info',
okButton: {
- text: "Yes, Copy",
+ text: 'Yes, Copy',
callbackFunction: doCopy
}
});
}
});
- (_b = document.querySelector("#button--deleteLotOccupancy")) === null || _b === void 0 ? void 0 : _b.addEventListener("click", (clickEvent) => {
+ (_b = document
+ .querySelector('#button--deleteLotOccupancy')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault();
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancy", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancy', {
lotOccupancyId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -90,65 +93,69 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Deleting Record",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Record',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete " + exports.aliases.occupancy + " Record",
- message: "Are you sure you want to delete this record?",
- contextualColorName: "warning",
+ title: 'Delete ' + exports.aliases.occupancy + ' Record',
+ message: 'Are you sure you want to delete this record?',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete",
+ text: 'Yes, Delete',
callbackFunction: doDelete
}
});
});
- (_c = document.querySelector("#button--createWorkOrder")) === null || _c === void 0 ? void 0 : _c.addEventListener("click", (clickEvent) => {
+ (_c = document
+ .querySelector('#button--createWorkOrder')) === null || _c === void 0 ? void 0 : _c.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault();
let createCloseModalFunction;
const doCreate = (formEvent) => {
formEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/workOrders/doCreateWorkOrder", formEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/workOrders/doCreateWorkOrder', formEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
createCloseModalFunction();
bulmaJS.confirm({
- title: "Work Order Created Successfully",
- message: "Would you like to open the work order now?",
- contextualColorName: "success",
+ title: 'Work Order Created Successfully',
+ message: 'Would you like to open the work order now?',
+ contextualColorName: 'success',
okButton: {
- text: "Yes, Open the Work Order",
+ text: 'Yes, Open the Work Order',
callbackFunction: () => {
window.location.href =
- los.urlPrefix + "/workOrders/" + responseJSON.workOrderId + "/edit";
+ los.urlPrefix +
+ '/workOrders/' +
+ responseJSON.workOrderId +
+ '/edit';
}
}
});
}
else {
bulmaJS.alert({
- title: "Error Creating Work Order",
+ title: 'Error Creating Work Order',
message: responseJSON.errorMessage,
- contextualColorName: "danger"
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-createWorkOrder", {
+ cityssm.openHtmlModal('lotOccupancy-createWorkOrder', {
onshow(modalElement) {
- modalElement.querySelector("#workOrderCreate--lotOccupancyId").value =
- lotOccupancyId;
- modalElement.querySelector("#workOrderCreate--workOrderOpenDateString").value = cityssm.dateToString(new Date());
- const workOrderTypeSelectElement = modalElement.querySelector("#workOrderCreate--workOrderTypeId");
+ ;
+ modalElement.querySelector('#workOrderCreate--lotOccupancyId').value = lotOccupancyId;
+ modalElement.querySelector('#workOrderCreate--workOrderOpenDateString').value = cityssm.dateToString(new Date());
+ const workOrderTypeSelectElement = modalElement.querySelector('#workOrderCreate--workOrderTypeId');
const workOrderTypes = exports.workOrderTypes;
if (workOrderTypes.length === 1) {
- workOrderTypeSelectElement.innerHTML = "";
+ workOrderTypeSelectElement.innerHTML = '';
}
for (const workOrderType of workOrderTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = workOrderType.workOrderTypeId.toString();
optionElement.textContent = workOrderType.workOrderType;
workOrderTypeSelectElement.append(optionElement);
@@ -157,22 +164,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
onshown(modalElement, closeModalFunction) {
var _a;
createCloseModalFunction = closeModalFunction;
- (_a = modalElement.querySelector("form")) === null || _a === void 0 ? void 0 : _a.addEventListener("submit", doCreate);
+ (_a = modalElement
+ .querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doCreate);
}
});
});
// Occupancy Type
- const occupancyTypeIdElement = document.querySelector("#lotOccupancy--occupancyTypeId");
+ const occupancyTypeIdElement = document.querySelector('#lotOccupancy--occupancyTypeId');
if (isCreate) {
- const lotOccupancyFieldsContainerElement = document.querySelector("#container--lotOccupancyFields");
- occupancyTypeIdElement.addEventListener("change", () => {
- if (occupancyTypeIdElement.value === "") {
+ const lotOccupancyFieldsContainerElement = document.querySelector('#container--lotOccupancyFields');
+ occupancyTypeIdElement.addEventListener('change', () => {
+ if (occupancyTypeIdElement.value === '') {
lotOccupancyFieldsContainerElement.innerHTML = `
Select the ${los.escapedAliases.occupancy} type to load the available fields.
`;
return;
}
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doGetOccupancyTypeFields", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doGetOccupancyTypeFields', {
occupancyTypeId: occupancyTypeIdElement.value
}, (responseJSON) => {
if (responseJSON.occupancyTypeFields.length === 0) {
@@ -181,45 +189,51 @@ Object.defineProperty(exports, "__esModule", { value: true });
`;
return;
}
- lotOccupancyFieldsContainerElement.innerHTML = "";
- let occupancyTypeFieldIds = "";
+ lotOccupancyFieldsContainerElement.innerHTML = '';
+ let occupancyTypeFieldIds = '';
for (const occupancyTypeField of responseJSON.occupancyTypeFields) {
- occupancyTypeFieldIds += "," + occupancyTypeField.occupancyTypeFieldId;
- const fieldName = "lotOccupancyFieldValue_" + occupancyTypeField.occupancyTypeFieldId;
- const fieldId = "lotOccupancy--" + fieldName;
- const fieldElement = document.createElement("div");
- fieldElement.className = "field";
+ occupancyTypeFieldIds +=
+ ',' + occupancyTypeField.occupancyTypeFieldId;
+ const fieldName = 'lotOccupancyFieldValue_' +
+ occupancyTypeField.occupancyTypeFieldId;
+ const fieldId = 'lotOccupancy--' + fieldName;
+ const fieldElement = document.createElement('div');
+ fieldElement.className = 'field';
fieldElement.innerHTML = `
`;
- fieldElement.querySelector("label").textContent =
- occupancyTypeField.occupancyTypeField;
- if (occupancyTypeField.occupancyTypeFieldValues === "") {
- const inputElement = document.createElement("input");
- inputElement.className = "input";
+ fieldElement.querySelector('label').textContent = occupancyTypeField.occupancyTypeField;
+ if (occupancyTypeField.occupancyTypeFieldValues === '') {
+ const inputElement = document.createElement('input');
+ inputElement.className = 'input';
inputElement.id = fieldId;
inputElement.name = fieldName;
- inputElement.type = "text";
+ inputElement.type = 'text';
inputElement.required = occupancyTypeField.isRequired;
- inputElement.minLength = occupancyTypeField.minimumLength;
- inputElement.maxLength = occupancyTypeField.maximumLength;
- if (occupancyTypeField.pattern && occupancyTypeField.pattern !== "") {
+ inputElement.minLength =
+ occupancyTypeField.minimumLength;
+ inputElement.maxLength =
+ occupancyTypeField.maximumLength;
+ if (occupancyTypeField.pattern &&
+ occupancyTypeField.pattern !== '') {
inputElement.pattern = occupancyTypeField.pattern;
}
- fieldElement.querySelector(".control").append(inputElement);
+ ;
+ fieldElement.querySelector('.control').append(inputElement);
}
else {
- fieldElement.querySelector(".control").innerHTML =
+ ;
+ fieldElement.querySelector('.control').innerHTML =
'' +
'(Not Set) ' +
- "
";
- const selectElement = fieldElement.querySelector("select");
+ '';
+ const selectElement = fieldElement.querySelector('select');
selectElement.required = occupancyTypeField.isRequired;
- const optionValues = occupancyTypeField.occupancyTypeFieldValues.split("\n");
+ const optionValues = occupancyTypeField.occupancyTypeFieldValues.split('\n');
for (const optionValue of optionValues) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = optionValue;
optionElement.textContent = optionValue;
selectElement.append(optionElement);
@@ -227,27 +241,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
lotOccupancyFieldsContainerElement.append(fieldElement);
}
- lotOccupancyFieldsContainerElement.insertAdjacentHTML("beforeend", ` `);
+ lotOccupancyFieldsContainerElement.insertAdjacentHTML('beforeend', ` `);
});
});
}
else {
const originalOccupancyTypeId = occupancyTypeIdElement.value;
- occupancyTypeIdElement.addEventListener("change", () => {
+ occupancyTypeIdElement.addEventListener('change', () => {
if (occupancyTypeIdElement.value !== originalOccupancyTypeId) {
bulmaJS.confirm({
- title: "Confirm Change",
+ title: 'Confirm Change',
message: `Are you sure you want to change the ${los.escapedAliases.occupancy} type?\n
This change affects the additional fields associated with this record, and may also affect the available fees.`,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Keep the Change",
+ text: 'Yes, Keep the Change',
callbackFunction: () => {
refreshAfterSave = true;
}
},
cancelButton: {
- text: "Revert the Change",
+ text: 'Revert the Change',
callbackFunction: () => {
occupancyTypeIdElement.value = originalOccupancyTypeId;
}
@@ -257,16 +271,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
// Lot Selector
- const lotNameElement = document.querySelector("#lotOccupancy--lotName");
- lotNameElement.addEventListener("click", (clickEvent) => {
+ const lotNameElement = document.querySelector('#lotOccupancy--lotName');
+ lotNameElement.addEventListener('click', (clickEvent) => {
const currentLotName = clickEvent.currentTarget.value;
let lotSelectCloseModalFunction;
let lotSelectModalElement;
let lotSelectFormElement;
let lotSelectResultsElement;
const renderSelectedLotAndClose = (lotId, lotName) => {
- document.querySelector("#lotOccupancy--lotId").value = lotId.toString();
- document.querySelector("#lotOccupancy--lotName").value = lotName;
+ ;
+ document.querySelector('#lotOccupancy--lotId').value = lotId.toString();
+ document.querySelector('#lotOccupancy--lotName').value = lotName;
los.setUnsavedChanges();
lotSelectCloseModalFunction();
};
@@ -276,64 +291,64 @@ Object.defineProperty(exports, "__esModule", { value: true });
renderSelectedLotAndClose(selectedLotElement.dataset.lotId, selectedLotElement.dataset.lotName);
};
const searchLots = () => {
- lotSelectResultsElement.innerHTML = los.getLoadingParagraphHTML("Searching...");
- cityssm.postJSON(los.urlPrefix + "/lots/doSearchLots", lotSelectFormElement, (responseJSON) => {
+ lotSelectResultsElement.innerHTML =
+ los.getLoadingParagraphHTML('Searching...');
+ cityssm.postJSON(los.urlPrefix + '/lots/doSearchLots', lotSelectFormElement, (responseJSON) => {
if (responseJSON.count === 0) {
lotSelectResultsElement.innerHTML = ``;
return;
}
- const panelElement = document.createElement("div");
- panelElement.className = "panel";
+ const panelElement = document.createElement('div');
+ panelElement.className = 'panel';
for (const lot of responseJSON.lots) {
- const panelBlockElement = document.createElement("a");
- panelBlockElement.className = "panel-block is-block";
- panelBlockElement.href = "#";
+ const panelBlockElement = document.createElement('a');
+ panelBlockElement.className = 'panel-block is-block';
+ panelBlockElement.href = '#';
panelBlockElement.dataset.lotId = lot.lotId.toString();
panelBlockElement.dataset.lotName = lot.lotName;
panelBlockElement.innerHTML =
'' +
('
' +
- cityssm.escapeHTML(lot.lotName || "") +
- " " +
+ cityssm.escapeHTML(lot.lotName || '') +
+ ' ' +
'' +
- cityssm.escapeHTML(lot.mapName || "") +
- " " +
- "
") +
+ cityssm.escapeHTML(lot.mapName || '') +
+ '' +
+ '
') +
('' +
cityssm.escapeHTML(lot.lotStatus) +
- " " +
+ ' ' +
'' +
- (lot.lotOccupancyCount > 0 ? "Currently Occupied" : "") +
- " " +
- "
") +
- "";
- panelBlockElement.addEventListener("click", selectExistingLot);
+ (lot.lotOccupancyCount > 0 ? 'Currently Occupied' : '') +
+ '' +
+ '') +
+ '';
+ panelBlockElement.addEventListener('click', selectExistingLot);
panelElement.append(panelBlockElement);
}
- lotSelectResultsElement.innerHTML = "";
+ lotSelectResultsElement.innerHTML = '';
lotSelectResultsElement.append(panelElement);
});
};
const createLotAndSelect = (submitEvent) => {
submitEvent.preventDefault();
- const lotName = lotSelectModalElement.querySelector("#lotCreate--lotName")
- .value;
- cityssm.postJSON(los.urlPrefix + "/lots/doCreateLot", submitEvent.currentTarget, (responseJSON) => {
+ const lotName = lotSelectModalElement.querySelector('#lotCreate--lotName').value;
+ cityssm.postJSON(los.urlPrefix + '/lots/doCreateLot', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
renderSelectedLotAndClose(responseJSON.lotId, lotName);
}
else {
bulmaJS.alert({
title: `Error Creating ${los.escapedAliases.Lot}`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-selectLot", {
+ cityssm.openHtmlModal('lotOccupancy-selectLot', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
},
@@ -343,87 +358,94 @@ Object.defineProperty(exports, "__esModule", { value: true });
lotSelectCloseModalFunction = closeModalFunction;
bulmaJS.init(modalElement);
// search Tab
- const lotNameFilterElement = modalElement.querySelector("#lotSelect--lotName");
- if (document.querySelector("#lotOccupancy--lotId").value !== "") {
+ const lotNameFilterElement = modalElement.querySelector('#lotSelect--lotName');
+ if (document.querySelector('#lotOccupancy--lotId')
+ .value !== '') {
lotNameFilterElement.value = currentLotName;
}
lotNameFilterElement.focus();
- lotNameFilterElement.addEventListener("change", searchLots);
- const occupancyStatusFilterElement = modalElement.querySelector("#lotSelect--occupancyStatus");
- occupancyStatusFilterElement.addEventListener("change", searchLots);
- if (currentLotName !== "") {
- occupancyStatusFilterElement.value = "";
+ lotNameFilterElement.addEventListener('change', searchLots);
+ const occupancyStatusFilterElement = modalElement.querySelector('#lotSelect--occupancyStatus');
+ occupancyStatusFilterElement.addEventListener('change', searchLots);
+ if (currentLotName !== '') {
+ occupancyStatusFilterElement.value = '';
}
- lotSelectFormElement = modalElement.querySelector("#form--lotSelect");
- lotSelectResultsElement = modalElement.querySelector("#resultsContainer--lotSelect");
- lotSelectFormElement.addEventListener("submit", (submitEvent) => {
+ lotSelectFormElement = modalElement.querySelector('#form--lotSelect');
+ lotSelectResultsElement = modalElement.querySelector('#resultsContainer--lotSelect');
+ lotSelectFormElement.addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
});
searchLots();
// Create Tab
if (exports.lotNamePattern) {
const regex = exports.lotNamePattern;
- modalElement.querySelector("#lotCreate--lotName").pattern =
- regex.source;
+ modalElement.querySelector('#lotCreate--lotName').pattern = regex.source;
}
- const lotTypeElement = modalElement.querySelector("#lotCreate--lotTypeId");
+ const lotTypeElement = modalElement.querySelector('#lotCreate--lotTypeId');
for (const lotType of exports.lotTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotType.lotTypeId.toString();
optionElement.textContent = lotType.lotType;
lotTypeElement.append(optionElement);
}
- const lotStatusElement = modalElement.querySelector("#lotCreate--lotStatusId");
+ const lotStatusElement = modalElement.querySelector('#lotCreate--lotStatusId');
for (const lotStatus of exports.lotStatuses) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotStatus.lotStatusId.toString();
optionElement.textContent = lotStatus.lotStatus;
lotStatusElement.append(optionElement);
}
- const mapElement = modalElement.querySelector("#lotCreate--mapId");
+ const mapElement = modalElement.querySelector('#lotCreate--mapId');
for (const map of exports.maps) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = map.mapId.toString();
- optionElement.textContent = map.mapName || "(No Name)";
+ optionElement.textContent = map.mapName || '(No Name)';
mapElement.append(optionElement);
}
- modalElement.querySelector("#form--lotCreate").addEventListener("submit", createLotAndSelect);
+ ;
+ modalElement.querySelector('#form--lotCreate').addEventListener('submit', createLotAndSelect);
},
onremoved: () => {
bulmaJS.toggleHtmlClipped();
}
});
});
- document.querySelector(".is-lot-view-button").addEventListener("click", () => {
- const lotId = document.querySelector("#lotOccupancy--lotId").value;
+ document
+ .querySelector('.is-lot-view-button')
+ .addEventListener('click', () => {
+ const lotId = document.querySelector('#lotOccupancy--lotId').value;
if (lotId) {
- window.open(los.urlPrefix + "/lots/" + lotId);
+ window.open(los.urlPrefix + '/lots/' + lotId);
}
else {
bulmaJS.alert({
message: `No ${los.escapedAliases.lot} selected.`,
- contextualColorName: "info"
+ contextualColorName: 'info'
});
}
});
- document.querySelector(".is-clear-lot-button").addEventListener("click", () => {
+ document
+ .querySelector('.is-clear-lot-button')
+ .addEventListener('click', () => {
if (lotNameElement.disabled) {
bulmaJS.alert({
- message: "You need to unlock the field before clearing it.",
- contextualColorName: "info"
+ message: 'You need to unlock the field before clearing it.',
+ contextualColorName: 'info'
});
}
else {
lotNameElement.value = `(No ${los.escapedAliases.Lot})`;
- document.querySelector("#lotOccupancy--lotId").value = "";
+ document.querySelector('#lotOccupancy--lotId').value = '';
los.setUnsavedChanges();
}
});
// Start Date
los.initializeDatePickers(formElement);
- document.querySelector("#lotOccupancy--occupancyStartDateString").addEventListener("change", () => {
- const endDatePicker = document.querySelector("#lotOccupancy--occupancyEndDateString").bulmaCalendar.datePicker;
- endDatePicker.min = document.querySelector("#lotOccupancy--occupancyStartDateString").value;
+ document
+ .querySelector('#lotOccupancy--occupancyStartDateString')
+ .addEventListener('change', () => {
+ const endDatePicker = document.querySelector('#lotOccupancy--occupancyEndDateString').bulmaCalendar.datePicker;
+ endDatePicker.min = document.querySelector('#lotOccupancy--occupancyStartDateString').value;
endDatePicker.refresh();
});
los.initializeUnlockFieldButtons(formElement);
@@ -435,7 +457,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
Object.defineProperty(exports, "__esModule", { value: true });
let lotOccupancyOccupants;
const openEditLotOccupancyOccupant = (clickEvent) => {
- const lotOccupantIndex = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotOccupantIndex, 10);
+ const lotOccupantIndex = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset
+ .lotOccupantIndex, 10);
const lotOccupancyOccupant = lotOccupancyOccupants.find((currentLotOccupancyOccupant) => {
return currentLotOccupancyOccupant.lotOccupantIndex === lotOccupantIndex;
});
@@ -443,7 +466,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction;
const editOccupant = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doUpdateLotOccupancyOccupant", editFormElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doUpdateLotOccupancyOccupant', editFormElement, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
editCloseModalFunction();
@@ -451,52 +474,55 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Updating " + exports.aliases.occupant,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating ' + exports.aliases.occupant,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-editOccupant", {
+ cityssm.openHtmlModal('lotOccupancy-editOccupant', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupancyId").value = lotOccupancyId;
- modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupantIndex").value = lotOccupantIndex.toString();
- const lotOccupantTypeSelectElement = modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupantTypeId");
+ modalElement.querySelector('#lotOccupancyOccupantEdit--lotOccupancyId').value = lotOccupancyId;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--lotOccupantIndex').value = lotOccupantIndex.toString();
+ const lotOccupantTypeSelectElement = modalElement.querySelector('#lotOccupancyOccupantEdit--lotOccupantTypeId');
let lotOccupantTypeSelected = false;
for (const lotOccupantType of exports.lotOccupantTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
optionElement.textContent = lotOccupantType.lotOccupantType;
- if (lotOccupantType.lotOccupantTypeId === lotOccupancyOccupant.lotOccupantTypeId) {
+ if (lotOccupantType.lotOccupantTypeId ===
+ lotOccupancyOccupant.lotOccupantTypeId) {
optionElement.selected = true;
lotOccupantTypeSelected = true;
}
lotOccupantTypeSelectElement.append(optionElement);
}
if (!lotOccupantTypeSelected) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotOccupancyOccupant.lotOccupantTypeId.toString();
- optionElement.textContent = lotOccupancyOccupant.lotOccupantType;
+ optionElement.textContent =
+ lotOccupancyOccupant.lotOccupantType;
optionElement.selected = true;
lotOccupantTypeSelectElement.append(optionElement);
}
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantName").value = lotOccupancyOccupant.occupantName;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantAddress1").value = lotOccupancyOccupant.occupantAddress1;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantAddress2").value = lotOccupancyOccupant.occupantAddress2;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantCity").value = lotOccupancyOccupant.occupantCity;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantProvince").value = lotOccupancyOccupant.occupantProvince;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantPostalCode").value = lotOccupancyOccupant.occupantPostalCode;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantPhoneNumber").value = lotOccupancyOccupant.occupantPhoneNumber;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantEmailAddress").value = lotOccupancyOccupant.occupantEmailAddress;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantComment").value = lotOccupancyOccupant.occupantComment;
+ ;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantName').value = lotOccupancyOccupant.occupantName;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantAddress1').value = lotOccupancyOccupant.occupantAddress1;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantAddress2').value = lotOccupancyOccupant.occupantAddress2;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantCity').value = lotOccupancyOccupant.occupantCity;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantProvince').value = lotOccupancyOccupant.occupantProvince;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantPostalCode').value = lotOccupancyOccupant.occupantPostalCode;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantPhoneNumber').value = lotOccupancyOccupant.occupantPhoneNumber;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantEmailAddress').value = lotOccupancyOccupant.occupantEmailAddress;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantComment').value = lotOccupancyOccupant.occupantComment;
},
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
- modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupantTypeId").focus();
- editFormElement = modalElement.querySelector("form");
- editFormElement.addEventListener("submit", editOccupant);
+ modalElement.querySelector('#lotOccupancyOccupantEdit--lotOccupantTypeId').focus();
+ editFormElement = modalElement.querySelector('form');
+ editFormElement.addEventListener('submit', editOccupant);
editCloseModalFunction = closeModalFunction;
},
onremoved: () => {
@@ -505,10 +531,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
};
const deleteLotOccupancyOccupant = (clickEvent) => {
- const lotOccupantIndex = clickEvent.currentTarget.closest("tr").dataset
- .lotOccupantIndex;
+ const lotOccupantIndex = clickEvent.currentTarget.closest('tr').dataset.lotOccupantIndex;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyOccupant", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyOccupant', {
lotOccupancyId,
lotOccupantIndex
}, (responseJSON) => {
@@ -518,128 +543,135 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Removing " + exports.aliases.occupant,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Removing ' + exports.aliases.occupant,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Remove " + exports.aliases.occupant + "?",
- message: "Are you sure you want to remove this " + exports.aliases.occupant.toLowerCase() + "?",
+ title: 'Remove ' + exports.aliases.occupant + '?',
+ message: 'Are you sure you want to remove this ' +
+ exports.aliases.occupant.toLowerCase() +
+ '?',
okButton: {
- text: "Yes, Remove " + exports.aliases.occupant,
+ text: 'Yes, Remove ' + exports.aliases.occupant,
callbackFunction: doDelete
},
- contextualColorName: "warning"
+ contextualColorName: 'warning'
});
};
const renderLotOccupancyOccupants = () => {
- const occupantsContainer = document.querySelector("#container--lotOccupancyOccupants");
+ const occupantsContainer = document.querySelector('#container--lotOccupancyOccupants');
cityssm.clearElement(occupantsContainer);
if (lotOccupancyOccupants.length === 0) {
occupantsContainer.innerHTML =
'' +
'
There are no ' +
exports.aliases.occupants.toLowerCase() +
- " associated with this record.
" +
- "
";
+ ' associated with this record. ' +
+ '';
return;
}
- const tableElement = document.createElement("table");
- tableElement.className = "table is-fullwidth is-striped is-hoverable";
+ const tableElement = document.createElement('table');
+ tableElement.className = 'table is-fullwidth is-striped is-hoverable';
tableElement.innerHTML =
- "" +
- ("" + exports.aliases.occupant + " ") +
- "Address " +
- "Other Contact " +
- "Comment " +
+ '' +
+ ('' + exports.aliases.occupant + ' ') +
+ 'Address ' +
+ 'Other Contact ' +
+ 'Comment ' +
'Options ' +
- " " +
- " ";
+ '' +
+ ' ';
for (const lotOccupancyOccupant of lotOccupancyOccupants) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotOccupantIndex =
lotOccupancyOccupant.lotOccupantIndex.toString();
tableRowElement.innerHTML =
- "" +
- cityssm.escapeHTML(lotOccupancyOccupant.occupantName || "(No Name)") +
- " " +
+ ' ' +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantName || '(No Name)') +
+ ' ' +
('' +
' ' +
' ' +
cityssm.escapeHTML(lotOccupancyOccupant.lotOccupantType) +
- " " +
- " ") +
- " " +
- ("" +
+ '' +
+ '') +
+ ' ' +
+ ('' +
(lotOccupancyOccupant.occupantAddress1
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) + " "
- : "") +
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) + ' '
+ : '') +
(lotOccupancyOccupant.occupantAddress2
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress2) + " "
- : "") +
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress2) + ' '
+ : '') +
(lotOccupancyOccupant.occupantCity
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ", "
- : "") +
- cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince || "") +
- " " +
- cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode || "") +
- " ") +
- ("" +
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ', '
+ : '') +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince || '') +
+ ' ' +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode || '') +
+ ' ') +
+ ('' +
(lotOccupancyOccupant.occupantPhoneNumber
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantPhoneNumber) + " "
- : "") +
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantPhoneNumber) +
+ ' '
+ : '') +
(lotOccupancyOccupant.occupantEmailAddress
? cityssm.escapeHTML(lotOccupancyOccupant.occupantEmailAddress)
- : "") +
- " ") +
- ("" + cityssm.escapeHTML(lotOccupancyOccupant.occupantComment) + " ") +
+ : '') +
+ '') +
+ ('' +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantComment) +
+ ' ') +
('' +
'' +
('' +
' ' +
- " Edit " +
- " ") +
+ ' Edit ' +
+ '') +
('' +
' ' +
- " ") +
- "
" +
- " ");
+ '') +
+ '' +
+ '');
tableRowElement
- .querySelector(".button--edit")
- .addEventListener("click", openEditLotOccupancyOccupant);
+ .querySelector('.button--edit')
+ .addEventListener('click', openEditLotOccupancyOccupant);
tableRowElement
- .querySelector(".button--delete")
- .addEventListener("click", deleteLotOccupancyOccupant);
- tableElement.querySelector("tbody").append(tableRowElement);
+ .querySelector('.button--delete')
+ .addEventListener('click', deleteLotOccupancyOccupant);
+ tableElement.querySelector('tbody').append(tableRowElement);
}
occupantsContainer.append(tableElement);
};
if (isCreate) {
- const lotOccupantTypeIdElement = document.querySelector("#lotOccupancy--lotOccupantTypeId");
- lotOccupantTypeIdElement.addEventListener("change", () => {
+ const lotOccupantTypeIdElement = document.querySelector('#lotOccupancy--lotOccupantTypeId');
+ lotOccupantTypeIdElement.addEventListener('change', () => {
const occupantFields = formElement.querySelectorAll("[data-table='LotOccupancyOccupant']");
for (const occupantField of occupantFields) {
- occupantField.disabled = lotOccupantTypeIdElement.value === "";
+ occupantField.disabled = lotOccupantTypeIdElement.value === '';
}
});
}
else {
lotOccupancyOccupants = exports.lotOccupancyOccupants;
delete exports.lotOccupancyOccupants;
- document.querySelector("#button--addOccupant").addEventListener("click", () => {
+ document
+ .querySelector('#button--addOccupant')
+ .addEventListener('click', () => {
let addCloseModalFunction;
let addFormElement;
let searchFormElement;
let searchResultsElement;
const addOccupant = (formOrObject) => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyOccupant", formOrObject, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyOccupant', formOrObject, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
addCloseModalFunction();
@@ -647,9 +679,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Adding " + exports.aliases.occupant,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding ' + exports.aliases.occupant,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -664,15 +696,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
const panelBlockElement = clickEvent.currentTarget;
const occupant = pastOccupantSearchResults[Number.parseInt(panelBlockElement.dataset.index, 10)];
const lotOccupantTypeId = panelBlockElement
- .closest(".modal")
- .querySelector("#lotOccupancyOccupantCopy--lotOccupantTypeId").value;
- if (lotOccupantTypeId === "") {
+ .closest('.modal')
+ .querySelector('#lotOccupancyOccupantCopy--lotOccupantTypeId').value;
+ if (lotOccupantTypeId === '') {
bulmaJS.alert({
- title: "No " + exports.aliases.occupant + " Type Selected",
- message: "Select a type to apply to the newly added " +
+ title: 'No ' + exports.aliases.occupant + ' Type Selected',
+ message: 'Select a type to apply to the newly added ' +
exports.aliases.occupant.toLowerCase() +
- ".",
- contextualColorName: "warning"
+ '.',
+ contextualColorName: 'warning'
});
}
else {
@@ -683,83 +715,86 @@ Object.defineProperty(exports, "__esModule", { value: true });
};
const searchOccupants = (event) => {
event.preventDefault();
- if (searchFormElement.querySelector("#lotOccupancyOccupantCopy--searchFilter").value === "") {
+ if (searchFormElement.querySelector('#lotOccupancyOccupantCopy--searchFilter').value === '') {
searchResultsElement.innerHTML =
'' +
'
Enter a partial name or address in the search field above.
' +
- "
";
+ '';
return;
}
- searchResultsElement.innerHTML = los.getLoadingParagraphHTML("Searching...");
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doSearchPastOccupants", searchFormElement, (responseJSON) => {
+ searchResultsElement.innerHTML =
+ los.getLoadingParagraphHTML('Searching...');
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doSearchPastOccupants', searchFormElement, (responseJSON) => {
pastOccupantSearchResults = responseJSON.occupants;
- const panelElement = document.createElement("div");
- panelElement.className = "panel";
+ const panelElement = document.createElement('div');
+ panelElement.className = 'panel';
for (const [index, occupant] of pastOccupantSearchResults.entries()) {
- const panelBlockElement = document.createElement("a");
- panelBlockElement.className = "panel-block is-block";
+ const panelBlockElement = document.createElement('a');
+ panelBlockElement.className = 'panel-block is-block';
panelBlockElement.dataset.index = index.toString();
panelBlockElement.innerHTML =
- "" +
- cityssm.escapeHTML(occupant.occupantName || "") +
- " " +
- " " +
+ '' +
+ cityssm.escapeHTML(occupant.occupantName || '') +
+ ' ' +
+ ' ' +
'' +
('
' +
- cityssm.escapeHTML(occupant.occupantAddress1 || "") +
- " " +
+ cityssm.escapeHTML(occupant.occupantAddress1 || '') +
+ ' ' +
(occupant.occupantAddress2
- ? cityssm.escapeHTML(occupant.occupantAddress2) + " "
- : "") +
- cityssm.escapeHTML(occupant.occupantCity || "") +
- ", " +
- cityssm.escapeHTML(occupant.occupantProvince || "") +
- " " +
- cityssm.escapeHTML(occupant.occupantPostalCode || "") +
- "
") +
+ ? cityssm.escapeHTML(occupant.occupantAddress2) + '
'
+ : '') +
+ cityssm.escapeHTML(occupant.occupantCity || '') +
+ ', ' +
+ cityssm.escapeHTML(occupant.occupantProvince || '') +
+ '
' +
+ cityssm.escapeHTML(occupant.occupantPostalCode || '') +
+ '
') +
('' +
(occupant.occupantPhoneNumber
- ? cityssm.escapeHTML(occupant.occupantPhoneNumber) + " "
- : "") +
- cityssm.escapeHTML(occupant.occupantEmailAddress || "") +
- " " +
- "
") +
- "";
- panelBlockElement.addEventListener("click", addOccupantFromCopy);
+ ? cityssm.escapeHTML(occupant.occupantPhoneNumber) +
+ ' '
+ : '') +
+ cityssm.escapeHTML(occupant.occupantEmailAddress || '') +
+ ' ' +
+ '') +
+ '';
+ panelBlockElement.addEventListener('click', addOccupantFromCopy);
panelElement.append(panelBlockElement);
}
- searchResultsElement.innerHTML = "";
+ searchResultsElement.innerHTML = '';
searchResultsElement.append(panelElement);
});
};
- cityssm.openHtmlModal("lotOccupancy-addOccupant", {
+ cityssm.openHtmlModal('lotOccupancy-addOccupant', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupancyId").value = lotOccupancyId;
- const lotOccupantTypeSelectElement = modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupantTypeId");
- const lotOccupantTypeCopySelectElement = modalElement.querySelector("#lotOccupancyOccupantCopy--lotOccupantTypeId");
+ modalElement.querySelector('#lotOccupancyOccupantAdd--lotOccupancyId').value = lotOccupancyId;
+ const lotOccupantTypeSelectElement = modalElement.querySelector('#lotOccupancyOccupantAdd--lotOccupantTypeId');
+ const lotOccupantTypeCopySelectElement = modalElement.querySelector('#lotOccupancyOccupantCopy--lotOccupantTypeId');
for (const lotOccupantType of exports.lotOccupantTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
optionElement.textContent = lotOccupantType.lotOccupantType;
lotOccupantTypeSelectElement.append(optionElement);
lotOccupantTypeCopySelectElement.append(optionElement.cloneNode(true));
}
- modalElement.querySelector("#lotOccupancyOccupantAdd--occupantCity").value = exports.occupantCityDefault;
- modalElement.querySelector("#lotOccupancyOccupantAdd--occupantProvince").value = exports.occupantProvinceDefault;
+ ;
+ modalElement.querySelector('#lotOccupancyOccupantAdd--occupantCity').value = exports.occupantCityDefault;
+ modalElement.querySelector('#lotOccupancyOccupantAdd--occupantProvince').value = exports.occupantProvinceDefault;
},
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
bulmaJS.init(modalElement);
- modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupantTypeId").focus();
- addFormElement = modalElement.querySelector("#form--lotOccupancyOccupantAdd");
- addFormElement.addEventListener("submit", addOccupantFromForm);
- searchResultsElement = modalElement.querySelector("#lotOccupancyOccupantCopy--searchResults");
- searchFormElement = modalElement.querySelector("#form--lotOccupancyOccupantCopy");
- searchFormElement.addEventListener("submit", (formEvent) => {
+ modalElement.querySelector('#lotOccupancyOccupantAdd--lotOccupantTypeId').focus();
+ addFormElement = modalElement.querySelector('#form--lotOccupancyOccupantAdd');
+ addFormElement.addEventListener('submit', addOccupantFromForm);
+ searchResultsElement = modalElement.querySelector('#lotOccupancyOccupantCopy--searchResults');
+ searchFormElement = modalElement.querySelector('#form--lotOccupancyOccupantCopy');
+ searchFormElement.addEventListener('submit', (formEvent) => {
formEvent.preventDefault();
});
- modalElement.querySelector("#lotOccupancyOccupantCopy--searchFilter").addEventListener("change", searchOccupants);
+ modalElement.querySelector('#lotOccupancyOccupantCopy--searchFilter').addEventListener('change', searchOccupants);
addCloseModalFunction = closeModalFunction;
},
onremoved: () => {
@@ -777,15 +812,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
let lotOccupancyComments = exports.lotOccupancyComments;
delete exports.lotOccupancyComments;
const openEditLotOccupancyComment = (clickEvent) => {
- const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotOccupancyCommentId, 10);
+ const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset
+ .lotOccupancyCommentId, 10);
const lotOccupancyComment = lotOccupancyComments.find((currentLotOccupancyComment) => {
- return currentLotOccupancyComment.lotOccupancyCommentId === lotOccupancyCommentId;
+ return (currentLotOccupancyComment.lotOccupancyCommentId ===
+ lotOccupancyCommentId);
});
let editFormElement;
let editCloseModalFunction;
const editComment = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doUpdateLotOccupancyComment", editFormElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doUpdateLotOccupancyComment', editFormElement, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyComments = responseJSON.lotOccupancyComments;
editCloseModalFunction();
@@ -793,20 +830,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Updating Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-editComment", {
+ cityssm.openHtmlModal('lotOccupancy-editComment', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyId").value = lotOccupancyId;
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyCommentId").value = lotOccupancyCommentId.toString();
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyComment").value = lotOccupancyComment.lotOccupancyComment;
- const lotOccupancyCommentDateStringElement = modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyCommentDateString");
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyId').value = lotOccupancyId;
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyCommentId').value = lotOccupancyCommentId.toString();
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyComment').value = lotOccupancyComment.lotOccupancyComment;
+ const lotOccupancyCommentDateStringElement = modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyCommentDateString');
lotOccupancyCommentDateStringElement.value =
lotOccupancyComment.lotOccupancyCommentDateString;
const currentDateString = cityssm.dateToString(new Date());
@@ -814,15 +851,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
lotOccupancyComment.lotOccupancyCommentDateString <= currentDateString
? currentDateString
: lotOccupancyComment.lotOccupancyCommentDateString;
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyCommentTimeString").value = lotOccupancyComment.lotOccupancyCommentTimeString;
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyCommentTimeString').value = lotOccupancyComment.lotOccupancyCommentTimeString;
},
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
los.initializeDatePickers(modalElement);
- // los.initializeTimePickers(modalElement);
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyComment").focus();
- editFormElement = modalElement.querySelector("form");
- editFormElement.addEventListener("submit", editComment);
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyComment').focus();
+ editFormElement = modalElement.querySelector('form');
+ editFormElement.addEventListener('submit', editComment);
editCloseModalFunction = closeModalFunction;
},
onremoved: () => {
@@ -831,9 +867,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
};
const deleteLotOccupancyComment = (clickEvent) => {
- const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotOccupancyCommentId, 10);
+ const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset
+ .lotOccupancyCommentId, 10);
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyComment", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyComment', {
lotOccupancyId,
lotOccupancyCommentId
}, (responseJSON) => {
@@ -843,87 +880,87 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Removing Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Removing Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Remove Comment?",
- message: "Are you sure you want to remove this comment?",
+ title: 'Remove Comment?',
+ message: 'Are you sure you want to remove this comment?',
okButton: {
- text: "Yes, Remove Comment",
+ text: 'Yes, Remove Comment',
callbackFunction: doDelete
},
- contextualColorName: "warning"
+ contextualColorName: 'warning'
});
};
const renderLotOccupancyComments = () => {
- const containerElement = document.querySelector("#container--lotOccupancyComments");
+ const containerElement = document.querySelector('#container--lotOccupancyComments');
if (lotOccupancyComments.length === 0) {
containerElement.innerHTML =
'' +
'
There are no comments associated with this record.
' +
- "
";
+ '';
return;
}
- const tableElement = document.createElement("table");
- tableElement.className = "table is-fullwidth is-striped is-hoverable";
+ const tableElement = document.createElement('table');
+ tableElement.className = 'table is-fullwidth is-striped is-hoverable';
tableElement.innerHTML =
- "" +
- "Commentor " +
- "Comment Date " +
- "Comment " +
+ '' +
+ 'Commentor ' +
+ 'Comment Date ' +
+ 'Comment ' +
'Options ' +
- " " +
- " ";
+ '' +
+ ' ';
for (const lotOccupancyComment of lotOccupancyComments) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotOccupancyCommentId =
lotOccupancyComment.lotOccupancyCommentId.toString();
tableRowElement.innerHTML =
- "" +
- cityssm.escapeHTML(lotOccupancyComment.recordCreate_userName || "") +
- " " +
- "" +
+ ' ' +
+ cityssm.escapeHTML(lotOccupancyComment.recordCreate_userName || '') +
+ ' ' +
+ '' +
lotOccupancyComment.lotOccupancyCommentDateString +
(lotOccupancyComment.lotOccupancyCommentTime === 0
- ? ""
- : " " + lotOccupancyComment.lotOccupancyCommentTimeString) +
- " " +
- "" +
- cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment || "") +
- " " +
+ ? ''
+ : ' ' + lotOccupancyComment.lotOccupancyCommentTimeString) +
+ '' +
+ '' +
+ cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment || '') +
+ ' ' +
('' +
'' +
('' +
' ' +
- " Edit " +
- " ") +
+ ' Edit ' +
+ '') +
('' +
' ' +
- " ") +
- "
" +
- " ");
+ '') +
+ '' +
+ '');
tableRowElement
- .querySelector(".button--edit")
- .addEventListener("click", openEditLotOccupancyComment);
+ .querySelector('.button--edit')
+ .addEventListener('click', openEditLotOccupancyComment);
tableRowElement
- .querySelector(".button--delete")
- .addEventListener("click", deleteLotOccupancyComment);
- tableElement.querySelector("tbody").append(tableRowElement);
+ .querySelector('.button--delete')
+ .addEventListener('click', deleteLotOccupancyComment);
+ tableElement.querySelector('tbody').append(tableRowElement);
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
containerElement.append(tableElement);
};
- document.querySelector("#button--addComment").addEventListener("click", () => {
+ document.querySelector('#button--addComment').addEventListener('click', () => {
let addFormElement;
let addCloseModalFunction;
const addComment = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyComment", addFormElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyComment', addFormElement, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyComments = responseJSON.lotOccupancyComments;
addCloseModalFunction();
@@ -931,23 +968,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Adding Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-addComment", {
+ cityssm.openHtmlModal('lotOccupancy-addComment', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyCommentAdd--lotOccupancyId").value = lotOccupancyId;
+ modalElement.querySelector('#lotOccupancyCommentAdd--lotOccupancyId').value = lotOccupancyId;
},
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
- modalElement.querySelector("#lotOccupancyCommentAdd--lotOccupancyComment").focus();
- addFormElement = modalElement.querySelector("form");
- addFormElement.addEventListener("submit", addComment);
+ modalElement.querySelector('#lotOccupancyCommentAdd--lotOccupancyComment').focus();
+ addFormElement = modalElement.querySelector('form');
+ addFormElement.addEventListener('submit', addComment);
addCloseModalFunction = closeModalFunction;
},
onremoved: () => {
@@ -962,19 +999,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
Object.defineProperty(exports, "__esModule", { value: true });
let lotOccupancyFees = exports.lotOccupancyFees;
delete exports.lotOccupancyFees;
- const lotOccupancyFeesContainerElement = document.querySelector("#container--lotOccupancyFees");
+ const lotOccupancyFeesContainerElement = document.querySelector('#container--lotOccupancyFees');
const getFeeGrandTotal = () => {
let feeGrandTotal = 0;
for (const lotOccupancyFee of lotOccupancyFees) {
feeGrandTotal +=
- (lotOccupancyFee.feeAmount + lotOccupancyFee.taxAmount) * lotOccupancyFee.quantity;
+ (lotOccupancyFee.feeAmount + lotOccupancyFee.taxAmount) *
+ lotOccupancyFee.quantity;
}
return feeGrandTotal;
};
const deleteLotOccupancyFee = (clickEvent) => {
- const feeId = clickEvent.currentTarget.closest(".container--lotOccupancyFee").dataset.feeId;
+ const feeId = clickEvent.currentTarget.closest('.container--lotOccupancyFee').dataset.feeId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyFee", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyFee', {
lotOccupancyId,
feeId
}, (responseJSON) => {
@@ -984,19 +1022,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Deleting Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete Fee",
- message: "Are you sure you want to delete this fee?",
- contextualColorName: "warning",
+ title: 'Delete Fee',
+ message: 'Are you sure you want to delete this fee?',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Fee",
+ text: 'Yes, Delete Fee',
callbackFunction: doDelete
}
});
@@ -1006,74 +1044,81 @@ Object.defineProperty(exports, "__esModule", { value: true });
lotOccupancyFeesContainerElement.innerHTML =
'' +
'
There are no fees associated with this record.
' +
- "
";
+ '';
renderLotOccupancyTransactions();
return;
}
lotOccupancyFeesContainerElement.innerHTML =
'' +
- ("" +
- "Fee " +
+ ('' +
+ 'Fee ' +
'Unit Cost ' +
'× ' +
'Quantity ' +
'equals ' +
'Total ' +
'Options ' +
- " ") +
- " " +
- ("" +
+ '') +
+ ' ' +
+ ('' +
'Subtotal ' +
'Tax ' +
'Grand Total ' +
- " ") +
- "
";
+ '') +
+ '';
let feeAmountTotal = 0;
let taxAmountTotal = 0;
for (const lotOccupancyFee of lotOccupancyFees) {
- const tableRowElement = document.createElement("tr");
- tableRowElement.className = "container--lotOccupancyFee";
+ const tableRowElement = document.createElement('tr');
+ tableRowElement.className = 'container--lotOccupancyFee';
tableRowElement.dataset.feeId = lotOccupancyFee.feeId.toString();
- tableRowElement.dataset.includeQuantity = lotOccupancyFee.includeQuantity ? "1" : "0";
+ tableRowElement.dataset.includeQuantity = lotOccupancyFee.includeQuantity
+ ? '1'
+ : '0';
tableRowElement.innerHTML =
'' +
- cityssm.escapeHTML(lotOccupancyFee.feeName || "") +
- " " +
+ cityssm.escapeHTML(lotOccupancyFee.feeName || '') +
+ '' +
(lotOccupancyFee.quantity === 1
- ? ""
+ ? ''
: '$' +
lotOccupancyFee.feeAmount.toFixed(2) +
- " " +
- "× " +
+ '' +
+ '× ' +
'' +
lotOccupancyFee.quantity +
- " " +
- "= ") +
+ '' +
+ '= ') +
'$' +
(lotOccupancyFee.feeAmount * lotOccupancyFee.quantity).toFixed(2) +
- " " +
+ '' +
('' +
'' +
' ' +
- " " +
- " ");
- tableRowElement.querySelector("button").addEventListener("click", deleteLotOccupancyFee);
- lotOccupancyFeesContainerElement.querySelector("tbody").append(tableRowElement);
+ '' +
+ '');
+ tableRowElement
+ .querySelector('button')
+ .addEventListener('click', deleteLotOccupancyFee);
+ lotOccupancyFeesContainerElement
+ .querySelector('tbody')
+ .append(tableRowElement);
feeAmountTotal += lotOccupancyFee.feeAmount * lotOccupancyFee.quantity;
taxAmountTotal += lotOccupancyFee.taxAmount * lotOccupancyFee.quantity;
}
- lotOccupancyFeesContainerElement.querySelector("#lotOccupancyFees--feeAmountTotal").textContent = "$" + feeAmountTotal.toFixed(2);
- lotOccupancyFeesContainerElement.querySelector("#lotOccupancyFees--taxAmountTotal").textContent = "$" + taxAmountTotal.toFixed(2);
- lotOccupancyFeesContainerElement.querySelector("#lotOccupancyFees--grandTotal").textContent = "$" + (feeAmountTotal + taxAmountTotal).toFixed(2);
+ ;
+ lotOccupancyFeesContainerElement.querySelector('#lotOccupancyFees--feeAmountTotal').textContent = '$' + feeAmountTotal.toFixed(2);
+ lotOccupancyFeesContainerElement.querySelector('#lotOccupancyFees--taxAmountTotal').textContent = '$' + taxAmountTotal.toFixed(2);
+ lotOccupancyFeesContainerElement.querySelector('#lotOccupancyFees--grandTotal').textContent = '$' + (feeAmountTotal + taxAmountTotal).toFixed(2);
renderLotOccupancyTransactions();
};
- document.querySelector("#button--addFee").addEventListener("click", () => {
+ document.querySelector('#button--addFee').addEventListener('click', () => {
if (hasUnsavedChanges) {
bulmaJS.alert({
- message: "Please save all unsaved changes before adding fees.",
- contextualColorName: "warning"
+ message: 'Please save all unsaved changes before adding fees.',
+ contextualColorName: 'warning'
});
return;
}
@@ -1081,7 +1126,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let feeFilterElement;
let feeFilterResultsElement;
const doAddFee = (feeId, quantity = 1) => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyFee", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyFee', {
lotOccupancyId,
feeId,
quantity
@@ -1093,9 +1138,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Adding Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -1108,21 +1153,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
doAddFee(fee.feeId, quantityElement.value);
quantityCloseModalFunction();
};
- cityssm.openHtmlModal("lotOccupancy-setFeeQuantity", {
+ cityssm.openHtmlModal('lotOccupancy-setFeeQuantity', {
onshow: (modalElement) => {
- modalElement.querySelector("#lotOccupancyFeeQuantity--quantityUnit").textContent = fee.quantityUnit;
+ ;
+ modalElement.querySelector('#lotOccupancyFeeQuantity--quantityUnit').textContent = fee.quantityUnit;
},
onshown: (modalElement, closeModalFunction) => {
quantityCloseModalFunction = closeModalFunction;
- quantityElement = modalElement.querySelector("#lotOccupancyFeeQuantity--quantity");
- modalElement.querySelector("form").addEventListener("submit", doSetQuantity);
+ quantityElement = modalElement.querySelector('#lotOccupancyFeeQuantity--quantity');
+ modalElement
+ .querySelector('form')
+ .addEventListener('submit', doSetQuantity);
}
});
};
const tryAddFee = (clickEvent) => {
clickEvent.preventDefault();
const feeId = Number.parseInt(clickEvent.currentTarget.dataset.feeId, 10);
- const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10);
+ const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest('.container--feeCategory').dataset.feeCategoryId, 10);
const feeCategory = feeCategories.find((currentFeeCategory) => {
return currentFeeCategory.feeCategoryId === feeCategoryId;
});
@@ -1137,16 +1185,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
};
const filterFees = () => {
- const filterStringPieces = feeFilterElement.value.trim().toLowerCase().split(" ");
- feeFilterResultsElement.innerHTML = "";
+ const filterStringPieces = feeFilterElement.value
+ .trim()
+ .toLowerCase()
+ .split(' ');
+ feeFilterResultsElement.innerHTML = '';
for (const feeCategory of feeCategories) {
- const categoryContainerElement = document.createElement("div");
- categoryContainerElement.className = "container--feeCategory";
- categoryContainerElement.dataset.feeCategoryId = feeCategory.feeCategoryId.toString();
+ const categoryContainerElement = document.createElement('div');
+ categoryContainerElement.className = 'container--feeCategory';
+ categoryContainerElement.dataset.feeCategoryId =
+ feeCategory.feeCategoryId.toString();
categoryContainerElement.innerHTML =
'' +
- cityssm.escapeHTML(feeCategory.feeCategory || "") +
- " " +
+ cityssm.escapeHTML(feeCategory.feeCategory || '') +
+ '' +
'
';
let hasFees = false;
for (const fee of feeCategory.fees) {
@@ -1166,35 +1218,37 @@ Object.defineProperty(exports, "__esModule", { value: true });
continue;
}
hasFees = true;
- const panelBlockElement = document.createElement("a");
- panelBlockElement.className = "panel-block is-block container--fee";
+ const panelBlockElement = document.createElement('a');
+ panelBlockElement.className = 'panel-block is-block container--fee';
panelBlockElement.dataset.feeId = fee.feeId.toString();
- panelBlockElement.href = "#";
+ panelBlockElement.href = '#';
panelBlockElement.innerHTML =
- "" +
- cityssm.escapeHTML(fee.feeName || "") +
- " " +
- "" +
- cityssm.escapeHTML(fee.feeDescription || "").replace(/\n/g, " ") +
- " ";
- panelBlockElement.addEventListener("click", tryAddFee);
- categoryContainerElement.querySelector(".panel").append(panelBlockElement);
+ '' +
+ cityssm.escapeHTML(fee.feeName || '') +
+ ' ' +
+ '' +
+ cityssm
+ .escapeHTML(fee.feeDescription || '')
+ .replace(/\n/g, ' ') +
+ ' ';
+ panelBlockElement.addEventListener('click', tryAddFee);
+ categoryContainerElement.querySelector('.panel').append(panelBlockElement);
}
if (hasFees) {
feeFilterResultsElement.append(categoryContainerElement);
}
}
};
- cityssm.openHtmlModal("lotOccupancy-addFee", {
+ cityssm.openHtmlModal('lotOccupancy-addFee', {
onshow: (modalElement) => {
- feeFilterElement = modalElement.querySelector("#feeSelect--feeName");
- feeFilterResultsElement = modalElement.querySelector("#resultsContainer--feeSelect");
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doGetFees", {
+ feeFilterElement = modalElement.querySelector('#feeSelect--feeName');
+ feeFilterResultsElement = modalElement.querySelector('#resultsContainer--feeSelect');
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doGetFees', {
lotOccupancyId
}, (responseJSON) => {
feeCategories = responseJSON.feeCategories;
feeFilterElement.disabled = false;
- feeFilterElement.addEventListener("keyup", filterFees);
+ feeFilterElement.addEventListener('keyup', filterFees);
feeFilterElement.focus();
filterFees();
});
@@ -1212,7 +1266,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
let lotOccupancyTransactions = exports.lotOccupancyTransactions;
delete exports.lotOccupancyTransactions;
- const lotOccupancyTransactionsContainerElement = document.querySelector("#container--lotOccupancyTransactions");
+ const lotOccupancyTransactionsContainerElement = document.querySelector('#container--lotOccupancyTransactions');
const getTransactionGrandTotal = () => {
let transactionGrandTotal = 0;
for (const lotOccupancyTransaction of lotOccupancyTransactions) {
@@ -1221,9 +1275,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
return transactionGrandTotal;
};
const deleteLotOccupancyTransaction = (clickEvent) => {
- const transactionIndex = clickEvent.currentTarget.closest(".container--lotOccupancyTransaction").dataset.transactionIndex;
+ const transactionIndex = clickEvent.currentTarget.closest('.container--lotOccupancyTransaction').dataset.transactionIndex;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyTransaction", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyTransaction', {
lotOccupancyId,
transactionIndex
}, (responseJSON) => {
@@ -1233,19 +1287,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Deleting Transaction",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Transaction',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete Trasnaction",
- message: "Are you sure you want to delete this transaction?",
- contextualColorName: "warning",
+ title: 'Delete Trasnaction',
+ message: 'Are you sure you want to delete this transaction?',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Transaction",
+ text: 'Yes, Delete Transaction',
callbackFunction: doDelete
}
});
@@ -1254,80 +1308,85 @@ Object.defineProperty(exports, "__esModule", { value: true });
if (lotOccupancyTransactions.length === 0) {
lotOccupancyTransactionsContainerElement.innerHTML =
'' +
'
There are no transactions associated with this record.
' +
- "
";
+ '';
return;
}
lotOccupancyTransactionsContainerElement.innerHTML =
'' +
- "" +
+ '' +
'Date ' +
- "" +
+ ' ' +
cityssm.escapeHTML(exports.aliases.externalReceiptNumber) +
- " " +
+ '' +
'Amount ' +
'Options ' +
- " " +
- " " +
- ("" +
+ ' ' +
+ ' ' +
+ ('' +
'Transaction Total ' +
' ' +
' ' +
- " ") +
- "
";
+ '') +
+ '';
let transactionGrandTotal = 0;
for (const lotOccupancyTransaction of lotOccupancyTransactions) {
transactionGrandTotal += lotOccupancyTransaction.transactionAmount;
- const tableRowElement = document.createElement("tr");
- tableRowElement.className = "container--lotOccupancyTransaction";
+ const tableRowElement = document.createElement('tr');
+ tableRowElement.className = 'container--lotOccupancyTransaction';
tableRowElement.dataset.transactionIndex =
lotOccupancyTransaction.transactionIndex.toString();
tableRowElement.innerHTML =
- "" +
+ ' ' +
lotOccupancyTransaction.transactionDateString +
- " " +
- ("" +
- cityssm.escapeHTML(lotOccupancyTransaction.externalReceiptNumber || "") +
- " " +
- "" +
- cityssm.escapeHTML(lotOccupancyTransaction.transactionNote || "") +
- " " +
- " ") +
+ '' +
+ ('' +
+ cityssm.escapeHTML(lotOccupancyTransaction.externalReceiptNumber || '') +
+ ' ' +
+ '' +
+ cityssm.escapeHTML(lotOccupancyTransaction.transactionNote || '') +
+ ' ' +
+ ' ') +
('$' +
lotOccupancyTransaction.transactionAmount.toFixed(2) +
- " ") +
+ '') +
('' +
'' +
' ' +
- " " +
- " ");
+ '' +
+ '');
tableRowElement
- .querySelector("button")
- .addEventListener("click", deleteLotOccupancyTransaction);
- lotOccupancyTransactionsContainerElement.querySelector("tbody").append(tableRowElement);
+ .querySelector('button')
+ .addEventListener('click', deleteLotOccupancyTransaction);
+ lotOccupancyTransactionsContainerElement
+ .querySelector('tbody')
+ .append(tableRowElement);
}
- lotOccupancyTransactionsContainerElement.querySelector("#lotOccupancyTransactions--grandTotal").textContent = "$" + transactionGrandTotal.toFixed(2);
+ ;
+ lotOccupancyTransactionsContainerElement.querySelector('#lotOccupancyTransactions--grandTotal').textContent = '$' + transactionGrandTotal.toFixed(2);
const feeGrandTotal = getFeeGrandTotal();
if (feeGrandTotal > transactionGrandTotal) {
- lotOccupancyTransactionsContainerElement.insertAdjacentHTML("afterbegin", '' +
+ lotOccupancyTransactionsContainerElement.insertAdjacentHTML('afterbegin', '
' +
'
' +
'
' +
'
' +
'
$' +
(feeGrandTotal - transactionGrandTotal).toFixed(2) +
- "
" +
- "
" +
- "
" +
- "
");
+ '
' +
+ '' +
+ '' +
+ '');
}
};
- document.querySelector("#button--addTransaction").addEventListener("click", () => {
+ document
+ .querySelector('#button--addTransaction')
+ .addEventListener('click', () => {
let addCloseModalFunction;
const doAddTransaction = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyTransaction", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyTransaction', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyTransactions = responseJSON.lotOccupancyTransactions;
addCloseModalFunction();
@@ -1335,20 +1394,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.confirm({
- title: "Error Adding Transaction",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Transaction',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-addTransaction", {
+ cityssm.openHtmlModal('lotOccupancy-addTransaction', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyTransactionAdd--lotOccupancyId").value = lotOccupancyId.toString();
+ modalElement.querySelector('#lotOccupancyTransactionAdd--lotOccupancyId').value = lotOccupancyId.toString();
const feeGrandTotal = getFeeGrandTotal();
const transactionGrandTotal = getTransactionGrandTotal();
- const transactionAmountElement = modalElement.querySelector("#lotOccupancyTransactionAdd--transactionAmount");
+ const transactionAmountElement = modalElement.querySelector('#lotOccupancyTransactionAdd--transactionAmount');
transactionAmountElement.min = (-1 * transactionGrandTotal).toFixed(2);
transactionAmountElement.max = Math.max(feeGrandTotal - transactionGrandTotal, 0).toFixed(2);
transactionAmountElement.value = Math.max(feeGrandTotal - transactionGrandTotal, 0).toFixed(2);
@@ -1356,7 +1415,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
addCloseModalFunction = closeModalFunction;
- modalElement.querySelector("form").addEventListener("submit", doAddTransaction);
+ modalElement
+ .querySelector('form')
+ .addEventListener('submit', doAddTransaction);
},
onremoved: () => {
bulmaJS.toggleHtmlClipped();
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEdit.js b/public-typescript/lotOccupancyEdit/lotOccupancyEdit.js
index e75d3b68..60252ae4 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEdit.js
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEdit.js
@@ -4,17 +4,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
(() => {
var _a, _b, _c;
const los = exports.los;
- const lotOccupancyId = document.querySelector("#lotOccupancy--lotOccupancyId")
- .value;
- const isCreate = lotOccupancyId === "";
+ const lotOccupancyId = document.querySelector('#lotOccupancy--lotOccupancyId').value;
+ const isCreate = lotOccupancyId === '';
/*
* Main form
*/
let refreshAfterSave = isCreate;
- const formElement = document.querySelector("#form--lotOccupancy");
- formElement.addEventListener("submit", (formEvent) => {
+ const formElement = document.querySelector('#form--lotOccupancy');
+ formElement.addEventListener('submit', (formEvent) => {
formEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/" + (isCreate ? "doCreateLotOccupancy" : "doUpdateLotOccupancy"), formElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix +
+ '/lotOccupancies/' +
+ (isCreate ? 'doCreateLotOccupancy' : 'doUpdateLotOccupancy'), formElement, (responseJSON) => {
if (responseJSON.success) {
los.clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
@@ -23,25 +24,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
else {
bulmaJS.alert({
message: `${los.escapedAliases.Occupancy} Updated Successfully`,
- contextualColorName: "success"
+ contextualColorName: 'success'
});
}
}
else {
bulmaJS.alert({
- title: "Error Saving " + exports.aliases.occupancy,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Saving ' + exports.aliases.occupancy,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
});
- const formInputElements = formElement.querySelectorAll("input, select");
+ const formInputElements = formElement.querySelectorAll('input, select');
for (const formInputElement of formInputElements) {
- formInputElement.addEventListener("change", los.setUnsavedChanges);
+ formInputElement.addEventListener('change', los.setUnsavedChanges);
}
const doCopy = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doCopyLotOccupancy", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doCopyLotOccupancy', {
lotOccupancyId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -50,38 +51,40 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Copying Record",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Copying Record',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- (_a = document.querySelector("#button--copyLotOccupancy")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", (clickEvent) => {
+ (_a = document
+ .querySelector('#button--copyLotOccupancy')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault();
if (los.hasUnsavedChanges()) {
bulmaJS.alert({
- title: "Unsaved Changes",
- message: "Please save all unsaved changes before continuing.",
- contextualColorName: "warning"
+ title: 'Unsaved Changes',
+ message: 'Please save all unsaved changes before continuing.',
+ contextualColorName: 'warning'
});
}
else {
bulmaJS.confirm({
title: `Copy ${los.escapedAliases.Occupancy} Record as New`,
- message: "Are you sure you want to copy this record to a new record?",
- contextualColorName: "info",
+ message: 'Are you sure you want to copy this record to a new record?',
+ contextualColorName: 'info',
okButton: {
- text: "Yes, Copy",
+ text: 'Yes, Copy',
callbackFunction: doCopy
}
});
}
});
- (_b = document.querySelector("#button--deleteLotOccupancy")) === null || _b === void 0 ? void 0 : _b.addEventListener("click", (clickEvent) => {
+ (_b = document
+ .querySelector('#button--deleteLotOccupancy')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault();
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancy", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancy', {
lotOccupancyId
}, (responseJSON) => {
if (responseJSON.success) {
@@ -90,65 +93,69 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
else {
bulmaJS.alert({
- title: "Error Deleting Record",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Record',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete " + exports.aliases.occupancy + " Record",
- message: "Are you sure you want to delete this record?",
- contextualColorName: "warning",
+ title: 'Delete ' + exports.aliases.occupancy + ' Record',
+ message: 'Are you sure you want to delete this record?',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete",
+ text: 'Yes, Delete',
callbackFunction: doDelete
}
});
});
- (_c = document.querySelector("#button--createWorkOrder")) === null || _c === void 0 ? void 0 : _c.addEventListener("click", (clickEvent) => {
+ (_c = document
+ .querySelector('#button--createWorkOrder')) === null || _c === void 0 ? void 0 : _c.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault();
let createCloseModalFunction;
const doCreate = (formEvent) => {
formEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/workOrders/doCreateWorkOrder", formEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/workOrders/doCreateWorkOrder', formEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
createCloseModalFunction();
bulmaJS.confirm({
- title: "Work Order Created Successfully",
- message: "Would you like to open the work order now?",
- contextualColorName: "success",
+ title: 'Work Order Created Successfully',
+ message: 'Would you like to open the work order now?',
+ contextualColorName: 'success',
okButton: {
- text: "Yes, Open the Work Order",
+ text: 'Yes, Open the Work Order',
callbackFunction: () => {
window.location.href =
- los.urlPrefix + "/workOrders/" + responseJSON.workOrderId + "/edit";
+ los.urlPrefix +
+ '/workOrders/' +
+ responseJSON.workOrderId +
+ '/edit';
}
}
});
}
else {
bulmaJS.alert({
- title: "Error Creating Work Order",
+ title: 'Error Creating Work Order',
message: responseJSON.errorMessage,
- contextualColorName: "danger"
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-createWorkOrder", {
+ cityssm.openHtmlModal('lotOccupancy-createWorkOrder', {
onshow(modalElement) {
- modalElement.querySelector("#workOrderCreate--lotOccupancyId").value =
- lotOccupancyId;
- modalElement.querySelector("#workOrderCreate--workOrderOpenDateString").value = cityssm.dateToString(new Date());
- const workOrderTypeSelectElement = modalElement.querySelector("#workOrderCreate--workOrderTypeId");
+ ;
+ modalElement.querySelector('#workOrderCreate--lotOccupancyId').value = lotOccupancyId;
+ modalElement.querySelector('#workOrderCreate--workOrderOpenDateString').value = cityssm.dateToString(new Date());
+ const workOrderTypeSelectElement = modalElement.querySelector('#workOrderCreate--workOrderTypeId');
const workOrderTypes = exports.workOrderTypes;
if (workOrderTypes.length === 1) {
- workOrderTypeSelectElement.innerHTML = "";
+ workOrderTypeSelectElement.innerHTML = '';
}
for (const workOrderType of workOrderTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = workOrderType.workOrderTypeId.toString();
optionElement.textContent = workOrderType.workOrderType;
workOrderTypeSelectElement.append(optionElement);
@@ -157,22 +164,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
onshown(modalElement, closeModalFunction) {
var _a;
createCloseModalFunction = closeModalFunction;
- (_a = modalElement.querySelector("form")) === null || _a === void 0 ? void 0 : _a.addEventListener("submit", doCreate);
+ (_a = modalElement
+ .querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doCreate);
}
});
});
// Occupancy Type
- const occupancyTypeIdElement = document.querySelector("#lotOccupancy--occupancyTypeId");
+ const occupancyTypeIdElement = document.querySelector('#lotOccupancy--occupancyTypeId');
if (isCreate) {
- const lotOccupancyFieldsContainerElement = document.querySelector("#container--lotOccupancyFields");
- occupancyTypeIdElement.addEventListener("change", () => {
- if (occupancyTypeIdElement.value === "") {
+ const lotOccupancyFieldsContainerElement = document.querySelector('#container--lotOccupancyFields');
+ occupancyTypeIdElement.addEventListener('change', () => {
+ if (occupancyTypeIdElement.value === '') {
lotOccupancyFieldsContainerElement.innerHTML = `
Select the ${los.escapedAliases.occupancy} type to load the available fields.
`;
return;
}
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doGetOccupancyTypeFields", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doGetOccupancyTypeFields', {
occupancyTypeId: occupancyTypeIdElement.value
}, (responseJSON) => {
if (responseJSON.occupancyTypeFields.length === 0) {
@@ -181,45 +189,51 @@ Object.defineProperty(exports, "__esModule", { value: true });
`;
return;
}
- lotOccupancyFieldsContainerElement.innerHTML = "";
- let occupancyTypeFieldIds = "";
+ lotOccupancyFieldsContainerElement.innerHTML = '';
+ let occupancyTypeFieldIds = '';
for (const occupancyTypeField of responseJSON.occupancyTypeFields) {
- occupancyTypeFieldIds += "," + occupancyTypeField.occupancyTypeFieldId;
- const fieldName = "lotOccupancyFieldValue_" + occupancyTypeField.occupancyTypeFieldId;
- const fieldId = "lotOccupancy--" + fieldName;
- const fieldElement = document.createElement("div");
- fieldElement.className = "field";
+ occupancyTypeFieldIds +=
+ ',' + occupancyTypeField.occupancyTypeFieldId;
+ const fieldName = 'lotOccupancyFieldValue_' +
+ occupancyTypeField.occupancyTypeFieldId;
+ const fieldId = 'lotOccupancy--' + fieldName;
+ const fieldElement = document.createElement('div');
+ fieldElement.className = 'field';
fieldElement.innerHTML = `
`;
- fieldElement.querySelector("label").textContent =
- occupancyTypeField.occupancyTypeField;
- if (occupancyTypeField.occupancyTypeFieldValues === "") {
- const inputElement = document.createElement("input");
- inputElement.className = "input";
+ fieldElement.querySelector('label').textContent = occupancyTypeField.occupancyTypeField;
+ if (occupancyTypeField.occupancyTypeFieldValues === '') {
+ const inputElement = document.createElement('input');
+ inputElement.className = 'input';
inputElement.id = fieldId;
inputElement.name = fieldName;
- inputElement.type = "text";
+ inputElement.type = 'text';
inputElement.required = occupancyTypeField.isRequired;
- inputElement.minLength = occupancyTypeField.minimumLength;
- inputElement.maxLength = occupancyTypeField.maximumLength;
- if (occupancyTypeField.pattern && occupancyTypeField.pattern !== "") {
+ inputElement.minLength =
+ occupancyTypeField.minimumLength;
+ inputElement.maxLength =
+ occupancyTypeField.maximumLength;
+ if (occupancyTypeField.pattern &&
+ occupancyTypeField.pattern !== '') {
inputElement.pattern = occupancyTypeField.pattern;
}
- fieldElement.querySelector(".control").append(inputElement);
+ ;
+ fieldElement.querySelector('.control').append(inputElement);
}
else {
- fieldElement.querySelector(".control").innerHTML =
+ ;
+ fieldElement.querySelector('.control').innerHTML =
'' +
'(Not Set) ' +
- "
";
- const selectElement = fieldElement.querySelector("select");
+ '';
+ const selectElement = fieldElement.querySelector('select');
selectElement.required = occupancyTypeField.isRequired;
- const optionValues = occupancyTypeField.occupancyTypeFieldValues.split("\n");
+ const optionValues = occupancyTypeField.occupancyTypeFieldValues.split('\n');
for (const optionValue of optionValues) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = optionValue;
optionElement.textContent = optionValue;
selectElement.append(optionElement);
@@ -227,27 +241,27 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
lotOccupancyFieldsContainerElement.append(fieldElement);
}
- lotOccupancyFieldsContainerElement.insertAdjacentHTML("beforeend", ` `);
+ lotOccupancyFieldsContainerElement.insertAdjacentHTML('beforeend', ` `);
});
});
}
else {
const originalOccupancyTypeId = occupancyTypeIdElement.value;
- occupancyTypeIdElement.addEventListener("change", () => {
+ occupancyTypeIdElement.addEventListener('change', () => {
if (occupancyTypeIdElement.value !== originalOccupancyTypeId) {
bulmaJS.confirm({
- title: "Confirm Change",
+ title: 'Confirm Change',
message: `Are you sure you want to change the ${los.escapedAliases.occupancy} type?\n
This change affects the additional fields associated with this record, and may also affect the available fees.`,
- contextualColorName: "warning",
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Keep the Change",
+ text: 'Yes, Keep the Change',
callbackFunction: () => {
refreshAfterSave = true;
}
},
cancelButton: {
- text: "Revert the Change",
+ text: 'Revert the Change',
callbackFunction: () => {
occupancyTypeIdElement.value = originalOccupancyTypeId;
}
@@ -257,16 +271,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
// Lot Selector
- const lotNameElement = document.querySelector("#lotOccupancy--lotName");
- lotNameElement.addEventListener("click", (clickEvent) => {
+ const lotNameElement = document.querySelector('#lotOccupancy--lotName');
+ lotNameElement.addEventListener('click', (clickEvent) => {
const currentLotName = clickEvent.currentTarget.value;
let lotSelectCloseModalFunction;
let lotSelectModalElement;
let lotSelectFormElement;
let lotSelectResultsElement;
const renderSelectedLotAndClose = (lotId, lotName) => {
- document.querySelector("#lotOccupancy--lotId").value = lotId.toString();
- document.querySelector("#lotOccupancy--lotName").value = lotName;
+ ;
+ document.querySelector('#lotOccupancy--lotId').value = lotId.toString();
+ document.querySelector('#lotOccupancy--lotName').value = lotName;
los.setUnsavedChanges();
lotSelectCloseModalFunction();
};
@@ -276,64 +291,64 @@ Object.defineProperty(exports, "__esModule", { value: true });
renderSelectedLotAndClose(selectedLotElement.dataset.lotId, selectedLotElement.dataset.lotName);
};
const searchLots = () => {
- lotSelectResultsElement.innerHTML = los.getLoadingParagraphHTML("Searching...");
- cityssm.postJSON(los.urlPrefix + "/lots/doSearchLots", lotSelectFormElement, (responseJSON) => {
+ lotSelectResultsElement.innerHTML =
+ los.getLoadingParagraphHTML('Searching...');
+ cityssm.postJSON(los.urlPrefix + '/lots/doSearchLots', lotSelectFormElement, (responseJSON) => {
if (responseJSON.count === 0) {
lotSelectResultsElement.innerHTML = ``;
return;
}
- const panelElement = document.createElement("div");
- panelElement.className = "panel";
+ const panelElement = document.createElement('div');
+ panelElement.className = 'panel';
for (const lot of responseJSON.lots) {
- const panelBlockElement = document.createElement("a");
- panelBlockElement.className = "panel-block is-block";
- panelBlockElement.href = "#";
+ const panelBlockElement = document.createElement('a');
+ panelBlockElement.className = 'panel-block is-block';
+ panelBlockElement.href = '#';
panelBlockElement.dataset.lotId = lot.lotId.toString();
panelBlockElement.dataset.lotName = lot.lotName;
panelBlockElement.innerHTML =
'' +
('
' +
- cityssm.escapeHTML(lot.lotName || "") +
- " " +
+ cityssm.escapeHTML(lot.lotName || '') +
+ ' ' +
'' +
- cityssm.escapeHTML(lot.mapName || "") +
- " " +
- "
") +
+ cityssm.escapeHTML(lot.mapName || '') +
+ '' +
+ '
') +
('' +
cityssm.escapeHTML(lot.lotStatus) +
- " " +
+ ' ' +
'' +
- (lot.lotOccupancyCount > 0 ? "Currently Occupied" : "") +
- " " +
- "
") +
- "";
- panelBlockElement.addEventListener("click", selectExistingLot);
+ (lot.lotOccupancyCount > 0 ? 'Currently Occupied' : '') +
+ '' +
+ '') +
+ '';
+ panelBlockElement.addEventListener('click', selectExistingLot);
panelElement.append(panelBlockElement);
}
- lotSelectResultsElement.innerHTML = "";
+ lotSelectResultsElement.innerHTML = '';
lotSelectResultsElement.append(panelElement);
});
};
const createLotAndSelect = (submitEvent) => {
submitEvent.preventDefault();
- const lotName = lotSelectModalElement.querySelector("#lotCreate--lotName")
- .value;
- cityssm.postJSON(los.urlPrefix + "/lots/doCreateLot", submitEvent.currentTarget, (responseJSON) => {
+ const lotName = lotSelectModalElement.querySelector('#lotCreate--lotName').value;
+ cityssm.postJSON(los.urlPrefix + '/lots/doCreateLot', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
renderSelectedLotAndClose(responseJSON.lotId, lotName);
}
else {
bulmaJS.alert({
title: `Error Creating ${los.escapedAliases.Lot}`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-selectLot", {
+ cityssm.openHtmlModal('lotOccupancy-selectLot', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
},
@@ -343,87 +358,94 @@ Object.defineProperty(exports, "__esModule", { value: true });
lotSelectCloseModalFunction = closeModalFunction;
bulmaJS.init(modalElement);
// search Tab
- const lotNameFilterElement = modalElement.querySelector("#lotSelect--lotName");
- if (document.querySelector("#lotOccupancy--lotId").value !== "") {
+ const lotNameFilterElement = modalElement.querySelector('#lotSelect--lotName');
+ if (document.querySelector('#lotOccupancy--lotId')
+ .value !== '') {
lotNameFilterElement.value = currentLotName;
}
lotNameFilterElement.focus();
- lotNameFilterElement.addEventListener("change", searchLots);
- const occupancyStatusFilterElement = modalElement.querySelector("#lotSelect--occupancyStatus");
- occupancyStatusFilterElement.addEventListener("change", searchLots);
- if (currentLotName !== "") {
- occupancyStatusFilterElement.value = "";
+ lotNameFilterElement.addEventListener('change', searchLots);
+ const occupancyStatusFilterElement = modalElement.querySelector('#lotSelect--occupancyStatus');
+ occupancyStatusFilterElement.addEventListener('change', searchLots);
+ if (currentLotName !== '') {
+ occupancyStatusFilterElement.value = '';
}
- lotSelectFormElement = modalElement.querySelector("#form--lotSelect");
- lotSelectResultsElement = modalElement.querySelector("#resultsContainer--lotSelect");
- lotSelectFormElement.addEventListener("submit", (submitEvent) => {
+ lotSelectFormElement = modalElement.querySelector('#form--lotSelect');
+ lotSelectResultsElement = modalElement.querySelector('#resultsContainer--lotSelect');
+ lotSelectFormElement.addEventListener('submit', (submitEvent) => {
submitEvent.preventDefault();
});
searchLots();
// Create Tab
if (exports.lotNamePattern) {
const regex = exports.lotNamePattern;
- modalElement.querySelector("#lotCreate--lotName").pattern =
- regex.source;
+ modalElement.querySelector('#lotCreate--lotName').pattern = regex.source;
}
- const lotTypeElement = modalElement.querySelector("#lotCreate--lotTypeId");
+ const lotTypeElement = modalElement.querySelector('#lotCreate--lotTypeId');
for (const lotType of exports.lotTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotType.lotTypeId.toString();
optionElement.textContent = lotType.lotType;
lotTypeElement.append(optionElement);
}
- const lotStatusElement = modalElement.querySelector("#lotCreate--lotStatusId");
+ const lotStatusElement = modalElement.querySelector('#lotCreate--lotStatusId');
for (const lotStatus of exports.lotStatuses) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotStatus.lotStatusId.toString();
optionElement.textContent = lotStatus.lotStatus;
lotStatusElement.append(optionElement);
}
- const mapElement = modalElement.querySelector("#lotCreate--mapId");
+ const mapElement = modalElement.querySelector('#lotCreate--mapId');
for (const map of exports.maps) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = map.mapId.toString();
- optionElement.textContent = map.mapName || "(No Name)";
+ optionElement.textContent = map.mapName || '(No Name)';
mapElement.append(optionElement);
}
- modalElement.querySelector("#form--lotCreate").addEventListener("submit", createLotAndSelect);
+ ;
+ modalElement.querySelector('#form--lotCreate').addEventListener('submit', createLotAndSelect);
},
onremoved: () => {
bulmaJS.toggleHtmlClipped();
}
});
});
- document.querySelector(".is-lot-view-button").addEventListener("click", () => {
- const lotId = document.querySelector("#lotOccupancy--lotId").value;
+ document
+ .querySelector('.is-lot-view-button')
+ .addEventListener('click', () => {
+ const lotId = document.querySelector('#lotOccupancy--lotId').value;
if (lotId) {
- window.open(los.urlPrefix + "/lots/" + lotId);
+ window.open(los.urlPrefix + '/lots/' + lotId);
}
else {
bulmaJS.alert({
message: `No ${los.escapedAliases.lot} selected.`,
- contextualColorName: "info"
+ contextualColorName: 'info'
});
}
});
- document.querySelector(".is-clear-lot-button").addEventListener("click", () => {
+ document
+ .querySelector('.is-clear-lot-button')
+ .addEventListener('click', () => {
if (lotNameElement.disabled) {
bulmaJS.alert({
- message: "You need to unlock the field before clearing it.",
- contextualColorName: "info"
+ message: 'You need to unlock the field before clearing it.',
+ contextualColorName: 'info'
});
}
else {
lotNameElement.value = `(No ${los.escapedAliases.Lot})`;
- document.querySelector("#lotOccupancy--lotId").value = "";
+ document.querySelector('#lotOccupancy--lotId').value = '';
los.setUnsavedChanges();
}
});
// Start Date
los.initializeDatePickers(formElement);
- document.querySelector("#lotOccupancy--occupancyStartDateString").addEventListener("change", () => {
- const endDatePicker = document.querySelector("#lotOccupancy--occupancyEndDateString").bulmaCalendar.datePicker;
- endDatePicker.min = document.querySelector("#lotOccupancy--occupancyStartDateString").value;
+ document
+ .querySelector('#lotOccupancy--occupancyStartDateString')
+ .addEventListener('change', () => {
+ const endDatePicker = document.querySelector('#lotOccupancy--occupancyEndDateString').bulmaCalendar.datePicker;
+ endDatePicker.min = document.querySelector('#lotOccupancy--occupancyStartDateString').value;
endDatePicker.refresh();
});
los.initializeUnlockFieldButtons(formElement);
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEdit.ts b/public-typescript/lotOccupancyEdit/lotOccupancyEdit.ts
index a3872139..728c6ae9 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEdit.ts
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEdit.ts
@@ -1,613 +1,707 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../../types/globalTypes";
-import type * as recordTypes from "../../types/recordTypes";
+import type * as globalTypes from '../../types/globalTypes'
+import type * as recordTypes from '../../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
+;(() => {
+ const los = exports.los as globalTypes.LOS
-(() => {
- const los = exports.los as globalTypes.LOS;
+ const lotOccupancyId = (
+ document.querySelector('#lotOccupancy--lotOccupancyId') as HTMLInputElement
+ ).value
+ const isCreate = lotOccupancyId === ''
- const lotOccupancyId = (document.querySelector("#lotOccupancy--lotOccupancyId") as HTMLInputElement)
- .value;
- const isCreate = lotOccupancyId === "";
+ /*
+ * Main form
+ */
- /*
- * Main form
- */
+ let refreshAfterSave = isCreate
- let refreshAfterSave = isCreate;
+ const formElement = document.querySelector(
+ '#form--lotOccupancy'
+ ) as HTMLFormElement
- const formElement = document.querySelector("#form--lotOccupancy") as HTMLFormElement;
+ formElement.addEventListener('submit', (formEvent) => {
+ formEvent.preventDefault()
- formElement.addEventListener("submit", (formEvent) => {
- formEvent.preventDefault();
+ cityssm.postJSON(
+ los.urlPrefix +
+ '/lotOccupancies/' +
+ (isCreate ? 'doCreateLotOccupancy' : 'doUpdateLotOccupancy'),
+ formElement,
+ (responseJSON: {
+ success: boolean
+ lotOccupancyId?: number
+ errorMessage?: string
+ }) => {
+ if (responseJSON.success) {
+ los.clearUnsavedChanges()
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/" + (isCreate ? "doCreateLotOccupancy" : "doUpdateLotOccupancy"),
- formElement,
- (responseJSON: { success: boolean; lotOccupancyId?: number; errorMessage?: string }) => {
- if (responseJSON.success) {
- los.clearUnsavedChanges();
-
- if (isCreate || refreshAfterSave) {
- window.location.href = los.getLotOccupancyURL(
- responseJSON.lotOccupancyId,
- true,
- true
- );
- } else {
- bulmaJS.alert({
- message: `${los.escapedAliases.Occupancy} Updated Successfully`,
- contextualColorName: "success"
- });
- }
- } else {
- bulmaJS.alert({
- title: "Error Saving " + exports.aliases.occupancy,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- });
-
- const formInputElements = formElement.querySelectorAll("input, select");
-
- for (const formInputElement of formInputElements) {
- formInputElement.addEventListener("change", los.setUnsavedChanges);
- }
-
- const doCopy = () => {
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doCopyLotOccupancy",
- {
- lotOccupancyId
- },
- (responseJSON: { success: boolean; errorMessage?: string; lotOccupancyId?: number }) => {
- if (responseJSON.success) {
- cityssm.disableNavBlocker();
- window.location.href = los.getLotOccupancyURL(responseJSON.lotOccupancyId, true);
- } else {
- bulmaJS.alert({
- title: "Error Copying Record",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- document.querySelector("#button--copyLotOccupancy")?.addEventListener("click", (clickEvent) => {
- clickEvent.preventDefault();
-
- if (los.hasUnsavedChanges()) {
+ if (isCreate || refreshAfterSave) {
+ window.location.href = los.getLotOccupancyURL(
+ responseJSON.lotOccupancyId,
+ true,
+ true
+ )
+ } else {
bulmaJS.alert({
- title: "Unsaved Changes",
- message: "Please save all unsaved changes before continuing.",
- contextualColorName: "warning"
- });
+ message: `${los.escapedAliases.Occupancy} Updated Successfully`,
+ contextualColorName: 'success'
+ })
+ }
} else {
- bulmaJS.confirm({
- title: `Copy ${los.escapedAliases.Occupancy} Record as New`,
- message: "Are you sure you want to copy this record to a new record?",
- contextualColorName: "info",
- okButton: {
- text: "Yes, Copy",
- callbackFunction: doCopy
- }
- });
+ bulmaJS.alert({
+ title: 'Error Saving ' + exports.aliases.occupancy,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
+ }
+ )
+ })
- document.querySelector("#button--deleteLotOccupancy")?.addEventListener("click", (clickEvent) => {
- clickEvent.preventDefault();
+ const formInputElements = formElement.querySelectorAll('input, select')
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancy",
- {
- lotOccupancyId
- },
- (responseJSON: { success: boolean; errorMessage?: string }) => {
- if (responseJSON.success) {
- cityssm.disableNavBlocker();
- window.location.href = los.getLotOccupancyURL();
- } else {
- bulmaJS.alert({
- title: "Error Deleting Record",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
+ for (const formInputElement of formInputElements) {
+ formInputElement.addEventListener('change', los.setUnsavedChanges)
+ }
+ const doCopy = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doCopyLotOccupancy',
+ {
+ lotOccupancyId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyId?: number
+ }) => {
+ if (responseJSON.success) {
+ cityssm.disableNavBlocker()
+ window.location.href = los.getLotOccupancyURL(
+ responseJSON.lotOccupancyId,
+ true
+ )
+ } else {
+ bulmaJS.alert({
+ title: 'Error Copying Record',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ document
+ .querySelector('#button--copyLotOccupancy')
+ ?.addEventListener('click', (clickEvent) => {
+ clickEvent.preventDefault()
+
+ if (los.hasUnsavedChanges()) {
+ bulmaJS.alert({
+ title: 'Unsaved Changes',
+ message: 'Please save all unsaved changes before continuing.',
+ contextualColorName: 'warning'
+ })
+ } else {
bulmaJS.confirm({
- title: "Delete " + exports.aliases.occupancy + " Record",
- message: "Are you sure you want to delete this record?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete",
- callbackFunction: doDelete
+ title: `Copy ${los.escapedAliases.Occupancy} Record as New`,
+ message: 'Are you sure you want to copy this record to a new record?',
+ contextualColorName: 'info',
+ okButton: {
+ text: 'Yes, Copy',
+ callbackFunction: doCopy
+ }
+ })
+ }
+ })
+
+ document
+ .querySelector('#button--deleteLotOccupancy')
+ ?.addEventListener('click', (clickEvent) => {
+ clickEvent.preventDefault()
+
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancy',
+ {
+ lotOccupancyId
+ },
+ (responseJSON: { success: boolean; errorMessage?: string }) => {
+ if (responseJSON.success) {
+ cityssm.disableNavBlocker()
+ window.location.href = los.getLotOccupancyURL()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Deleting Record',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
- });
+ }
+ )
+ }
- document.querySelector("#button--createWorkOrder")?.addEventListener("click", (clickEvent) => {
- clickEvent.preventDefault();
+ bulmaJS.confirm({
+ title: 'Delete ' + exports.aliases.occupancy + ' Record',
+ message: 'Are you sure you want to delete this record?',
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete',
+ callbackFunction: doDelete
+ }
+ })
+ })
- let createCloseModalFunction: () => void;
+ document
+ .querySelector('#button--createWorkOrder')
+ ?.addEventListener('click', (clickEvent) => {
+ clickEvent.preventDefault()
- const doCreate = (formEvent: SubmitEvent) => {
- formEvent.preventDefault();
+ let createCloseModalFunction: () => void
- cityssm.postJSON(
- los.urlPrefix + "/workOrders/doCreateWorkOrder",
- formEvent.currentTarget,
- (responseJSON: { success: boolean; errorMessage?: string; workOrderId?: number }) => {
- if (responseJSON.success) {
- createCloseModalFunction();
+ const doCreate = (formEvent: SubmitEvent) => {
+ formEvent.preventDefault()
- bulmaJS.confirm({
- title: "Work Order Created Successfully",
- message: "Would you like to open the work order now?",
- contextualColorName: "success",
- okButton: {
- text: "Yes, Open the Work Order",
- callbackFunction: () => {
- window.location.href =
- los.urlPrefix + "/workOrders/" + responseJSON.workOrderId + "/edit";
- }
- }
- });
- } else {
- bulmaJS.alert({
- title: "Error Creating Work Order",
- message: responseJSON.errorMessage as string,
- contextualColorName: "danger"
- });
- }
+ cityssm.postJSON(
+ los.urlPrefix + '/workOrders/doCreateWorkOrder',
+ formEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ workOrderId?: number
+ }) => {
+ if (responseJSON.success) {
+ createCloseModalFunction()
+
+ bulmaJS.confirm({
+ title: 'Work Order Created Successfully',
+ message: 'Would you like to open the work order now?',
+ contextualColorName: 'success',
+ okButton: {
+ text: 'Yes, Open the Work Order',
+ callbackFunction: () => {
+ window.location.href =
+ los.urlPrefix +
+ '/workOrders/' +
+ responseJSON.workOrderId +
+ '/edit'
+ }
}
- );
- };
-
- cityssm.openHtmlModal("lotOccupancy-createWorkOrder", {
- onshow(modalElement) {
- (modalElement.querySelector("#workOrderCreate--lotOccupancyId") as HTMLInputElement).value =
- lotOccupancyId;
-
- (
- modalElement.querySelector(
- "#workOrderCreate--workOrderOpenDateString"
- ) as HTMLInputElement
- ).value = cityssm.dateToString(new Date());
-
- const workOrderTypeSelectElement = modalElement.querySelector(
- "#workOrderCreate--workOrderTypeId"
- ) as HTMLSelectElement;
-
- const workOrderTypes = exports.workOrderTypes as recordTypes.WorkOrderType[];
-
- if (workOrderTypes.length === 1) {
- workOrderTypeSelectElement.innerHTML = "";
- }
-
- for (const workOrderType of workOrderTypes) {
- const optionElement = document.createElement("option");
- optionElement.value = (workOrderType.workOrderTypeId as number).toString();
- optionElement.textContent = workOrderType.workOrderType as string;
- workOrderTypeSelectElement.append(optionElement);
- }
- },
- onshown(modalElement, closeModalFunction) {
- createCloseModalFunction = closeModalFunction;
-
- modalElement.querySelector("form")?.addEventListener("submit", doCreate);
+ })
+ } else {
+ bulmaJS.alert({
+ title: 'Error Creating Work Order',
+ message: responseJSON.errorMessage as string,
+ contextualColorName: 'danger'
+ })
}
- });
- });
+ }
+ )
+ }
- // Occupancy Type
+ cityssm.openHtmlModal('lotOccupancy-createWorkOrder', {
+ onshow(modalElement) {
+ ;(
+ modalElement.querySelector(
+ '#workOrderCreate--lotOccupancyId'
+ ) as HTMLInputElement
+ ).value = lotOccupancyId
+ ;(
+ modalElement.querySelector(
+ '#workOrderCreate--workOrderOpenDateString'
+ ) as HTMLInputElement
+ ).value = cityssm.dateToString(new Date())
- const occupancyTypeIdElement = document.querySelector(
- "#lotOccupancy--occupancyTypeId"
- ) as HTMLSelectElement;
+ const workOrderTypeSelectElement = modalElement.querySelector(
+ '#workOrderCreate--workOrderTypeId'
+ ) as HTMLSelectElement
- if (isCreate) {
- const lotOccupancyFieldsContainerElement = document.querySelector(
- "#container--lotOccupancyFields"
- ) as HTMLElement;
+ const workOrderTypes =
+ exports.workOrderTypes as recordTypes.WorkOrderType[]
- occupancyTypeIdElement.addEventListener("change", () => {
- if (occupancyTypeIdElement.value === "") {
- lotOccupancyFieldsContainerElement.innerHTML = `
+ if (workOrderTypes.length === 1) {
+ workOrderTypeSelectElement.innerHTML = ''
+ }
+
+ for (const workOrderType of workOrderTypes) {
+ const optionElement = document.createElement('option')
+ optionElement.value = (
+ workOrderType.workOrderTypeId as number
+ ).toString()
+ optionElement.textContent = workOrderType.workOrderType as string
+ workOrderTypeSelectElement.append(optionElement)
+ }
+ },
+ onshown(modalElement, closeModalFunction) {
+ createCloseModalFunction = closeModalFunction
+
+ modalElement
+ .querySelector('form')
+ ?.addEventListener('submit', doCreate)
+ }
+ })
+ })
+
+ // Occupancy Type
+
+ const occupancyTypeIdElement = document.querySelector(
+ '#lotOccupancy--occupancyTypeId'
+ ) as HTMLSelectElement
+
+ if (isCreate) {
+ const lotOccupancyFieldsContainerElement = document.querySelector(
+ '#container--lotOccupancyFields'
+ ) as HTMLElement
+
+ occupancyTypeIdElement.addEventListener('change', () => {
+ if (occupancyTypeIdElement.value === '') {
+ lotOccupancyFieldsContainerElement.innerHTML = `
Select the ${los.escapedAliases.occupancy} type to load the available fields.
-
`;
+
`
- return;
- }
+ return
+ }
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doGetOccupancyTypeFields",
- {
- occupancyTypeId: occupancyTypeIdElement.value
- },
- (responseJSON: { occupancyTypeFields: recordTypes.OccupancyTypeField[] }) => {
- if (responseJSON.occupancyTypeFields.length === 0) {
- lotOccupancyFieldsContainerElement.innerHTML = `
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doGetOccupancyTypeFields',
+ {
+ occupancyTypeId: occupancyTypeIdElement.value
+ },
+ (responseJSON: {
+ occupancyTypeFields: recordTypes.OccupancyTypeField[]
+ }) => {
+ if (responseJSON.occupancyTypeFields.length === 0) {
+ lotOccupancyFieldsContainerElement.innerHTML = `
There are no additional fields for this ${los.escapedAliases.occupancy} type.
-
`;
+
`
- return;
- }
+ return
+ }
- lotOccupancyFieldsContainerElement.innerHTML = "";
+ lotOccupancyFieldsContainerElement.innerHTML = ''
- let occupancyTypeFieldIds = "";
+ let occupancyTypeFieldIds = ''
- for (const occupancyTypeField of responseJSON.occupancyTypeFields) {
- occupancyTypeFieldIds += "," + occupancyTypeField.occupancyTypeFieldId;
+ for (const occupancyTypeField of responseJSON.occupancyTypeFields) {
+ occupancyTypeFieldIds +=
+ ',' + occupancyTypeField.occupancyTypeFieldId
- const fieldName = "lotOccupancyFieldValue_" + occupancyTypeField.occupancyTypeFieldId;
+ const fieldName =
+ 'lotOccupancyFieldValue_' +
+ occupancyTypeField.occupancyTypeFieldId
- const fieldId = "lotOccupancy--" + fieldName;
+ const fieldId = 'lotOccupancy--' + fieldName
- const fieldElement = document.createElement("div");
- fieldElement.className = "field";
- fieldElement.innerHTML = `
`;
+ const fieldElement = document.createElement('div')
+ fieldElement.className = 'field'
+ fieldElement.innerHTML = `
`
+ ;(
+ fieldElement.querySelector('label') as HTMLLabelElement
+ ).textContent = occupancyTypeField.occupancyTypeField as string
- (fieldElement.querySelector("label") as HTMLLabelElement).textContent =
- occupancyTypeField.occupancyTypeField as string;
+ if (occupancyTypeField.occupancyTypeFieldValues === '') {
+ const inputElement = document.createElement('input')
- if (occupancyTypeField.occupancyTypeFieldValues === "") {
- const inputElement = document.createElement("input");
+ inputElement.className = 'input'
- inputElement.className = "input";
+ inputElement.id = fieldId
- inputElement.id = fieldId;
+ inputElement.name = fieldName
- inputElement.name = fieldName;
+ inputElement.type = 'text'
- inputElement.type = "text";
+ inputElement.required = occupancyTypeField.isRequired as boolean
+ inputElement.minLength =
+ occupancyTypeField.minimumLength as number
+ inputElement.maxLength =
+ occupancyTypeField.maximumLength as number
- inputElement.required = occupancyTypeField.isRequired as boolean;
- inputElement.minLength = occupancyTypeField.minimumLength as number;
- inputElement.maxLength = occupancyTypeField.maximumLength as number;
+ if (
+ occupancyTypeField.pattern &&
+ occupancyTypeField.pattern !== ''
+ ) {
+ inputElement.pattern = occupancyTypeField.pattern
+ }
- if (occupancyTypeField.pattern && occupancyTypeField.pattern !== "") {
- inputElement.pattern = occupancyTypeField.pattern;
- }
+ ;(fieldElement.querySelector('.control') as HTMLElement).append(
+ inputElement
+ )
+ } else {
+ ;(
+ fieldElement.querySelector('.control') as HTMLElement
+ ).innerHTML =
+ '' +
+ '(Not Set) ' +
+ '
'
- (fieldElement.querySelector(".control") as HTMLElement).append(inputElement);
- } else {
- (fieldElement.querySelector(".control") as HTMLElement).innerHTML =
- '' +
- '(Not Set) ' +
- "
";
+ const selectElement = fieldElement.querySelector(
+ 'select'
+ ) as HTMLSelectElement
- const selectElement = fieldElement.querySelector("select") as HTMLSelectElement;
+ selectElement.required = occupancyTypeField.isRequired as boolean
- selectElement.required = occupancyTypeField.isRequired as boolean;
+ const optionValues = (
+ occupancyTypeField.occupancyTypeFieldValues as string
+ ).split('\n')
- const optionValues = (
- occupancyTypeField.occupancyTypeFieldValues as string
- ).split("\n");
+ for (const optionValue of optionValues) {
+ const optionElement = document.createElement('option')
+ optionElement.value = optionValue
+ optionElement.textContent = optionValue
+ selectElement.append(optionElement)
+ }
+ }
- for (const optionValue of optionValues) {
- const optionElement = document.createElement("option");
- optionElement.value = optionValue;
- optionElement.textContent = optionValue;
- selectElement.append(optionElement);
- }
- }
+ lotOccupancyFieldsContainerElement.append(fieldElement)
+ }
- lotOccupancyFieldsContainerElement.append(fieldElement);
- }
+ lotOccupancyFieldsContainerElement.insertAdjacentHTML(
+ 'beforeend',
+ ` `
+ )
+ }
+ )
+ })
+ } else {
+ const originalOccupancyTypeId = occupancyTypeIdElement.value
- lotOccupancyFieldsContainerElement.insertAdjacentHTML(
- "beforeend",
- ` `
- );
- }
- );
- });
- } else {
- const originalOccupancyTypeId = occupancyTypeIdElement.value;
-
- occupancyTypeIdElement.addEventListener("change", () => {
- if (occupancyTypeIdElement.value !== originalOccupancyTypeId) {
- bulmaJS.confirm({
- title: "Confirm Change",
- message: `Are you sure you want to change the ${los.escapedAliases.occupancy} type?\n
+ occupancyTypeIdElement.addEventListener('change', () => {
+ if (occupancyTypeIdElement.value !== originalOccupancyTypeId) {
+ bulmaJS.confirm({
+ title: 'Confirm Change',
+ message: `Are you sure you want to change the ${los.escapedAliases.occupancy} type?\n
This change affects the additional fields associated with this record, and may also affect the available fees.`,
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Keep the Change",
- callbackFunction: () => {
- refreshAfterSave = true;
- }
- },
- cancelButton: {
- text: "Revert the Change",
- callbackFunction: () => {
- occupancyTypeIdElement.value = originalOccupancyTypeId;
- }
- }
- });
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Keep the Change',
+ callbackFunction: () => {
+ refreshAfterSave = true
}
- });
+ },
+ cancelButton: {
+ text: 'Revert the Change',
+ callbackFunction: () => {
+ occupancyTypeIdElement.value = originalOccupancyTypeId
+ }
+ }
+ })
+ }
+ })
+ }
+
+ // Lot Selector
+
+ const lotNameElement = document.querySelector(
+ '#lotOccupancy--lotName'
+ ) as HTMLInputElement
+
+ lotNameElement.addEventListener('click', (clickEvent) => {
+ const currentLotName = (clickEvent.currentTarget as HTMLInputElement).value
+
+ let lotSelectCloseModalFunction: () => void
+ let lotSelectModalElement: HTMLElement
+
+ let lotSelectFormElement: HTMLFormElement
+ let lotSelectResultsElement: HTMLElement
+
+ const renderSelectedLotAndClose = (
+ lotId: number | string,
+ lotName: string
+ ) => {
+ ;(
+ document.querySelector('#lotOccupancy--lotId') as HTMLInputElement
+ ).value = lotId.toString()
+ ;(
+ document.querySelector('#lotOccupancy--lotName') as HTMLInputElement
+ ).value = lotName
+
+ los.setUnsavedChanges()
+ lotSelectCloseModalFunction()
}
- // Lot Selector
+ const selectExistingLot = (clickEvent: Event) => {
+ clickEvent.preventDefault()
- const lotNameElement = document.querySelector("#lotOccupancy--lotName") as HTMLInputElement;
+ const selectedLotElement = clickEvent.currentTarget as HTMLElement
- lotNameElement.addEventListener("click", (clickEvent) => {
- const currentLotName = (clickEvent.currentTarget as HTMLInputElement).value;
+ renderSelectedLotAndClose(
+ selectedLotElement.dataset.lotId!,
+ selectedLotElement.dataset.lotName!
+ )
+ }
- let lotSelectCloseModalFunction: () => void;
- let lotSelectModalElement: HTMLElement;
+ const searchLots = () => {
+ lotSelectResultsElement.innerHTML =
+ los.getLoadingParagraphHTML('Searching...')
- let lotSelectFormElement: HTMLFormElement;
- let lotSelectResultsElement: HTMLElement;
-
- const renderSelectedLotAndClose = (lotId: number | string, lotName: string) => {
- (document.querySelector("#lotOccupancy--lotId") as HTMLInputElement).value = lotId.toString();
- (document.querySelector("#lotOccupancy--lotName") as HTMLInputElement).value = lotName;
-
- los.setUnsavedChanges();
- lotSelectCloseModalFunction();
- };
-
- const selectExistingLot = (clickEvent: Event) => {
- clickEvent.preventDefault();
-
- const selectedLotElement = clickEvent.currentTarget as HTMLElement;
-
- renderSelectedLotAndClose(selectedLotElement.dataset.lotId!, selectedLotElement.dataset.lotName!);
- };
-
- const searchLots = () => {
- lotSelectResultsElement.innerHTML = los.getLoadingParagraphHTML("Searching...");
-
- cityssm.postJSON(
- los.urlPrefix + "/lots/doSearchLots",
- lotSelectFormElement,
- (responseJSON: { count: number; lots: recordTypes.Lot[] }) => {
- if (responseJSON.count === 0) {
- lotSelectResultsElement.innerHTML = `
+ cityssm.postJSON(
+ los.urlPrefix + '/lots/doSearchLots',
+ lotSelectFormElement,
+ (responseJSON: { count: number; lots: recordTypes.Lot[] }) => {
+ if (responseJSON.count === 0) {
+ lotSelectResultsElement.innerHTML = `
`;
+
`
- return;
- }
+ return
+ }
- const panelElement = document.createElement("div");
- panelElement.className = "panel";
+ const panelElement = document.createElement('div')
+ panelElement.className = 'panel'
- for (const lot of responseJSON.lots) {
- const panelBlockElement = document.createElement("a");
- panelBlockElement.className = "panel-block is-block";
- panelBlockElement.href = "#";
+ for (const lot of responseJSON.lots) {
+ const panelBlockElement = document.createElement('a')
+ panelBlockElement.className = 'panel-block is-block'
+ panelBlockElement.href = '#'
- panelBlockElement.dataset.lotId = lot.lotId.toString();
- panelBlockElement.dataset.lotName = lot.lotName;
+ panelBlockElement.dataset.lotId = lot.lotId.toString()
+ panelBlockElement.dataset.lotName = lot.lotName
- panelBlockElement.innerHTML =
- '' +
- ('
' +
- cityssm.escapeHTML(lot.lotName || "") +
- " " +
- '' +
- cityssm.escapeHTML(lot.mapName || "") +
- " " +
- "
") +
- ('
' +
- cityssm.escapeHTML(lot.lotStatus as string) +
- " " +
- '' +
- (lot.lotOccupancyCount! > 0 ? "Currently Occupied" : "") +
- " " +
- "
") +
- "
";
+ panelBlockElement.innerHTML =
+ '' +
+ ('
' +
+ cityssm.escapeHTML(lot.lotName || '') +
+ ' ' +
+ '' +
+ cityssm.escapeHTML(lot.mapName || '') +
+ ' ' +
+ '
') +
+ ('
' +
+ cityssm.escapeHTML(lot.lotStatus as string) +
+ ' ' +
+ '' +
+ (lot.lotOccupancyCount! > 0 ? 'Currently Occupied' : '') +
+ ' ' +
+ '
') +
+ '
'
- panelBlockElement.addEventListener("click", selectExistingLot);
+ panelBlockElement.addEventListener('click', selectExistingLot)
- panelElement.append(panelBlockElement);
- }
+ panelElement.append(panelBlockElement)
+ }
- lotSelectResultsElement.innerHTML = "";
- lotSelectResultsElement.append(panelElement);
- }
- );
- };
-
- const createLotAndSelect = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
-
- const lotName = (lotSelectModalElement.querySelector("#lotCreate--lotName") as HTMLInputElement)
- .value;
-
- cityssm.postJSON(
- los.urlPrefix + "/lots/doCreateLot",
- submitEvent.currentTarget,
- (responseJSON: { success: boolean; errorMessage?: string; lotId?: number }) => {
- if (responseJSON.success) {
- renderSelectedLotAndClose(responseJSON.lotId!, lotName);
- } else {
- bulmaJS.alert({
- title: `Error Creating ${los.escapedAliases.Lot}`,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- cityssm.openHtmlModal("lotOccupancy-selectLot", {
- onshow: (modalElement) => {
- los.populateAliases(modalElement);
- },
- onshown: (modalElement, closeModalFunction) => {
- bulmaJS.toggleHtmlClipped();
-
- lotSelectModalElement = modalElement;
- lotSelectCloseModalFunction = closeModalFunction;
-
- bulmaJS.init(modalElement);
-
- // search Tab
-
- const lotNameFilterElement = modalElement.querySelector(
- "#lotSelect--lotName"
- ) as HTMLInputElement;
-
- if ((document.querySelector("#lotOccupancy--lotId") as HTMLInputElement).value !== "") {
- lotNameFilterElement.value = currentLotName;
- }
-
- lotNameFilterElement.focus();
- lotNameFilterElement.addEventListener("change", searchLots);
-
- const occupancyStatusFilterElement = modalElement.querySelector(
- "#lotSelect--occupancyStatus"
- ) as HTMLSelectElement;
- occupancyStatusFilterElement.addEventListener("change", searchLots);
-
- if (currentLotName !== "") {
- occupancyStatusFilterElement.value = "";
- }
-
- lotSelectFormElement = modalElement.querySelector("#form--lotSelect") as HTMLFormElement;
- lotSelectResultsElement = modalElement.querySelector(
- "#resultsContainer--lotSelect"
- ) as HTMLElement;
-
- lotSelectFormElement.addEventListener("submit", (submitEvent) => {
- submitEvent.preventDefault();
- });
-
- searchLots();
-
- // Create Tab
-
- if (exports.lotNamePattern) {
- const regex = exports.lotNamePattern as RegExp;
-
- (modalElement.querySelector("#lotCreate--lotName") as HTMLInputElement).pattern =
- regex.source;
- }
-
- const lotTypeElement = modalElement.querySelector(
- "#lotCreate--lotTypeId"
- ) as HTMLSelectElement;
-
- for (const lotType of exports.lotTypes as recordTypes.LotType[]) {
- const optionElement = document.createElement("option");
- optionElement.value = lotType.lotTypeId.toString();
- optionElement.textContent = lotType.lotType;
- lotTypeElement.append(optionElement);
- }
-
- const lotStatusElement = modalElement.querySelector(
- "#lotCreate--lotStatusId"
- ) as HTMLSelectElement;
-
- for (const lotStatus of exports.lotStatuses as recordTypes.LotStatus[]) {
- const optionElement = document.createElement("option");
- optionElement.value = lotStatus.lotStatusId.toString();
- optionElement.textContent = lotStatus.lotStatus;
- lotStatusElement.append(optionElement);
- }
-
- const mapElement = modalElement.querySelector("#lotCreate--mapId") as HTMLSelectElement;
-
- for (const map of exports.maps as recordTypes.Map[]) {
- const optionElement = document.createElement("option");
- optionElement.value = map.mapId!.toString();
- optionElement.textContent = map.mapName || "(No Name)";
- mapElement.append(optionElement);
- }
-
- (modalElement.querySelector("#form--lotCreate") as HTMLFormElement).addEventListener(
- "submit",
- createLotAndSelect
- );
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
- }
- });
- });
-
- document.querySelector(".is-lot-view-button")!.addEventListener("click", () => {
- const lotId = (document.querySelector("#lotOccupancy--lotId") as HTMLInputElement).value;
-
- if (lotId) {
- window.open(los.urlPrefix + "/lots/" + lotId);
- } else {
- bulmaJS.alert({
- message: `No ${los.escapedAliases.lot} selected.`,
- contextualColorName: "info"
- });
+ lotSelectResultsElement.innerHTML = ''
+ lotSelectResultsElement.append(panelElement)
}
- });
-
- document.querySelector(".is-clear-lot-button")!.addEventListener("click", () => {
- if (lotNameElement.disabled) {
- bulmaJS.alert({
- message: "You need to unlock the field before clearing it.",
- contextualColorName: "info"
- });
- } else {
- lotNameElement.value = `(No ${los.escapedAliases.Lot})`;
- (document.querySelector("#lotOccupancy--lotId") as HTMLInputElement).value = "";
- los.setUnsavedChanges();
- }
- });
-
- // Start Date
-
- los.initializeDatePickers(formElement);
-
- document.querySelector("#lotOccupancy--occupancyStartDateString")!.addEventListener("change", () => {
- const endDatePicker = (
- document.querySelector("#lotOccupancy--occupancyEndDateString") as HTMLInputElement
- ).bulmaCalendar.datePicker;
-
- endDatePicker.min = (
- document.querySelector("#lotOccupancy--occupancyStartDateString") as HTMLInputElement
- ).value;
-
- endDatePicker.refresh();
- });
-
- los.initializeUnlockFieldButtons(formElement);
-
- /*
- * Occupants
- */
-
- //=include lotOccupancyEditOccupants.js
-
- if (!isCreate) {
- //=include lotOccupancyEditComments.js
- //=include lotOccupancyEditFees.js
+ )
}
-})();
+
+ const createLotAndSelect = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
+
+ const lotName = (
+ lotSelectModalElement.querySelector(
+ '#lotCreate--lotName'
+ ) as HTMLInputElement
+ ).value
+
+ cityssm.postJSON(
+ los.urlPrefix + '/lots/doCreateLot',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotId?: number
+ }) => {
+ if (responseJSON.success) {
+ renderSelectedLotAndClose(responseJSON.lotId!, lotName)
+ } else {
+ bulmaJS.alert({
+ title: `Error Creating ${los.escapedAliases.Lot}`,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ cityssm.openHtmlModal('lotOccupancy-selectLot', {
+ onshow: (modalElement) => {
+ los.populateAliases(modalElement)
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ bulmaJS.toggleHtmlClipped()
+
+ lotSelectModalElement = modalElement
+ lotSelectCloseModalFunction = closeModalFunction
+
+ bulmaJS.init(modalElement)
+
+ // search Tab
+
+ const lotNameFilterElement = modalElement.querySelector(
+ '#lotSelect--lotName'
+ ) as HTMLInputElement
+
+ if (
+ (document.querySelector('#lotOccupancy--lotId') as HTMLInputElement)
+ .value !== ''
+ ) {
+ lotNameFilterElement.value = currentLotName
+ }
+
+ lotNameFilterElement.focus()
+ lotNameFilterElement.addEventListener('change', searchLots)
+
+ const occupancyStatusFilterElement = modalElement.querySelector(
+ '#lotSelect--occupancyStatus'
+ ) as HTMLSelectElement
+ occupancyStatusFilterElement.addEventListener('change', searchLots)
+
+ if (currentLotName !== '') {
+ occupancyStatusFilterElement.value = ''
+ }
+
+ lotSelectFormElement = modalElement.querySelector(
+ '#form--lotSelect'
+ ) as HTMLFormElement
+ lotSelectResultsElement = modalElement.querySelector(
+ '#resultsContainer--lotSelect'
+ ) as HTMLElement
+
+ lotSelectFormElement.addEventListener('submit', (submitEvent) => {
+ submitEvent.preventDefault()
+ })
+
+ searchLots()
+
+ // Create Tab
+
+ if (exports.lotNamePattern) {
+ const regex = exports.lotNamePattern as RegExp
+
+ ;(
+ modalElement.querySelector(
+ '#lotCreate--lotName'
+ ) as HTMLInputElement
+ ).pattern = regex.source
+ }
+
+ const lotTypeElement = modalElement.querySelector(
+ '#lotCreate--lotTypeId'
+ ) as HTMLSelectElement
+
+ for (const lotType of exports.lotTypes as recordTypes.LotType[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = lotType.lotTypeId.toString()
+ optionElement.textContent = lotType.lotType
+ lotTypeElement.append(optionElement)
+ }
+
+ const lotStatusElement = modalElement.querySelector(
+ '#lotCreate--lotStatusId'
+ ) as HTMLSelectElement
+
+ for (const lotStatus of exports.lotStatuses as recordTypes.LotStatus[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = lotStatus.lotStatusId.toString()
+ optionElement.textContent = lotStatus.lotStatus
+ lotStatusElement.append(optionElement)
+ }
+
+ const mapElement = modalElement.querySelector(
+ '#lotCreate--mapId'
+ ) as HTMLSelectElement
+
+ for (const map of exports.maps as recordTypes.Map[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = map.mapId!.toString()
+ optionElement.textContent = map.mapName || '(No Name)'
+ mapElement.append(optionElement)
+ }
+
+ ;(
+ modalElement.querySelector('#form--lotCreate') as HTMLFormElement
+ ).addEventListener('submit', createLotAndSelect)
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ })
+
+ document
+ .querySelector('.is-lot-view-button')!
+ .addEventListener('click', () => {
+ const lotId = (
+ document.querySelector('#lotOccupancy--lotId') as HTMLInputElement
+ ).value
+
+ if (lotId) {
+ window.open(los.urlPrefix + '/lots/' + lotId)
+ } else {
+ bulmaJS.alert({
+ message: `No ${los.escapedAliases.lot} selected.`,
+ contextualColorName: 'info'
+ })
+ }
+ })
+
+ document
+ .querySelector('.is-clear-lot-button')!
+ .addEventListener('click', () => {
+ if (lotNameElement.disabled) {
+ bulmaJS.alert({
+ message: 'You need to unlock the field before clearing it.',
+ contextualColorName: 'info'
+ })
+ } else {
+ lotNameElement.value = `(No ${los.escapedAliases.Lot})`
+ ;(
+ document.querySelector('#lotOccupancy--lotId') as HTMLInputElement
+ ).value = ''
+ los.setUnsavedChanges()
+ }
+ })
+
+ // Start Date
+
+ los.initializeDatePickers(formElement)
+
+ document
+ .querySelector('#lotOccupancy--occupancyStartDateString')!
+ .addEventListener('change', () => {
+ const endDatePicker = (
+ document.querySelector(
+ '#lotOccupancy--occupancyEndDateString'
+ ) as HTMLInputElement
+ ).bulmaCalendar.datePicker
+
+ endDatePicker.min = (
+ document.querySelector(
+ '#lotOccupancy--occupancyStartDateString'
+ ) as HTMLInputElement
+ ).value
+
+ endDatePicker.refresh()
+ })
+
+ los.initializeUnlockFieldButtons(formElement)
+
+ /*
+ * Occupants
+ */
+
+ //=include lotOccupancyEditOccupants.js
+
+ if (!isCreate) {
+ //=include lotOccupancyEditComments.js
+ //=include lotOccupancyEditFees.js
+ }
+})()
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEditComments.js b/public-typescript/lotOccupancyEdit/lotOccupancyEditComments.js
index b4940d61..20741725 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEditComments.js
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEditComments.js
@@ -4,15 +4,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
let lotOccupancyComments = exports.lotOccupancyComments;
delete exports.lotOccupancyComments;
const openEditLotOccupancyComment = (clickEvent) => {
- const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotOccupancyCommentId, 10);
+ const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset
+ .lotOccupancyCommentId, 10);
const lotOccupancyComment = lotOccupancyComments.find((currentLotOccupancyComment) => {
- return currentLotOccupancyComment.lotOccupancyCommentId === lotOccupancyCommentId;
+ return (currentLotOccupancyComment.lotOccupancyCommentId ===
+ lotOccupancyCommentId);
});
let editFormElement;
let editCloseModalFunction;
const editComment = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doUpdateLotOccupancyComment", editFormElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doUpdateLotOccupancyComment', editFormElement, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyComments = responseJSON.lotOccupancyComments;
editCloseModalFunction();
@@ -20,20 +22,20 @@ const openEditLotOccupancyComment = (clickEvent) => {
}
else {
bulmaJS.alert({
- title: "Error Updating Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-editComment", {
+ cityssm.openHtmlModal('lotOccupancy-editComment', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyId").value = lotOccupancyId;
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyCommentId").value = lotOccupancyCommentId.toString();
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyComment").value = lotOccupancyComment.lotOccupancyComment;
- const lotOccupancyCommentDateStringElement = modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyCommentDateString");
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyId').value = lotOccupancyId;
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyCommentId').value = lotOccupancyCommentId.toString();
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyComment').value = lotOccupancyComment.lotOccupancyComment;
+ const lotOccupancyCommentDateStringElement = modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyCommentDateString');
lotOccupancyCommentDateStringElement.value =
lotOccupancyComment.lotOccupancyCommentDateString;
const currentDateString = cityssm.dateToString(new Date());
@@ -41,15 +43,14 @@ const openEditLotOccupancyComment = (clickEvent) => {
lotOccupancyComment.lotOccupancyCommentDateString <= currentDateString
? currentDateString
: lotOccupancyComment.lotOccupancyCommentDateString;
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyCommentTimeString").value = lotOccupancyComment.lotOccupancyCommentTimeString;
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyCommentTimeString').value = lotOccupancyComment.lotOccupancyCommentTimeString;
},
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
los.initializeDatePickers(modalElement);
- // los.initializeTimePickers(modalElement);
- modalElement.querySelector("#lotOccupancyCommentEdit--lotOccupancyComment").focus();
- editFormElement = modalElement.querySelector("form");
- editFormElement.addEventListener("submit", editComment);
+ modalElement.querySelector('#lotOccupancyCommentEdit--lotOccupancyComment').focus();
+ editFormElement = modalElement.querySelector('form');
+ editFormElement.addEventListener('submit', editComment);
editCloseModalFunction = closeModalFunction;
},
onremoved: () => {
@@ -58,9 +59,10 @@ const openEditLotOccupancyComment = (clickEvent) => {
});
};
const deleteLotOccupancyComment = (clickEvent) => {
- const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotOccupancyCommentId, 10);
+ const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset
+ .lotOccupancyCommentId, 10);
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyComment", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyComment', {
lotOccupancyId,
lotOccupancyCommentId
}, (responseJSON) => {
@@ -70,87 +72,87 @@ const deleteLotOccupancyComment = (clickEvent) => {
}
else {
bulmaJS.alert({
- title: "Error Removing Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Removing Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Remove Comment?",
- message: "Are you sure you want to remove this comment?",
+ title: 'Remove Comment?',
+ message: 'Are you sure you want to remove this comment?',
okButton: {
- text: "Yes, Remove Comment",
+ text: 'Yes, Remove Comment',
callbackFunction: doDelete
},
- contextualColorName: "warning"
+ contextualColorName: 'warning'
});
};
const renderLotOccupancyComments = () => {
- const containerElement = document.querySelector("#container--lotOccupancyComments");
+ const containerElement = document.querySelector('#container--lotOccupancyComments');
if (lotOccupancyComments.length === 0) {
containerElement.innerHTML =
'' +
'
There are no comments associated with this record.
' +
- "
";
+ '';
return;
}
- const tableElement = document.createElement("table");
- tableElement.className = "table is-fullwidth is-striped is-hoverable";
+ const tableElement = document.createElement('table');
+ tableElement.className = 'table is-fullwidth is-striped is-hoverable';
tableElement.innerHTML =
- "" +
- "Commentor " +
- "Comment Date " +
- "Comment " +
+ '' +
+ 'Commentor ' +
+ 'Comment Date ' +
+ 'Comment ' +
'Options ' +
- " " +
- " ";
+ '' +
+ ' ';
for (const lotOccupancyComment of lotOccupancyComments) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotOccupancyCommentId =
lotOccupancyComment.lotOccupancyCommentId.toString();
tableRowElement.innerHTML =
- "" +
- cityssm.escapeHTML(lotOccupancyComment.recordCreate_userName || "") +
- " " +
- "" +
+ ' ' +
+ cityssm.escapeHTML(lotOccupancyComment.recordCreate_userName || '') +
+ ' ' +
+ '' +
lotOccupancyComment.lotOccupancyCommentDateString +
(lotOccupancyComment.lotOccupancyCommentTime === 0
- ? ""
- : " " + lotOccupancyComment.lotOccupancyCommentTimeString) +
- " " +
- "" +
- cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment || "") +
- " " +
+ ? ''
+ : ' ' + lotOccupancyComment.lotOccupancyCommentTimeString) +
+ '' +
+ '' +
+ cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment || '') +
+ ' ' +
('' +
'' +
('' +
' ' +
- " Edit " +
- " ") +
+ ' Edit ' +
+ '') +
('' +
' ' +
- " ") +
- "
" +
- " ");
+ '') +
+ '' +
+ '');
tableRowElement
- .querySelector(".button--edit")
- .addEventListener("click", openEditLotOccupancyComment);
+ .querySelector('.button--edit')
+ .addEventListener('click', openEditLotOccupancyComment);
tableRowElement
- .querySelector(".button--delete")
- .addEventListener("click", deleteLotOccupancyComment);
- tableElement.querySelector("tbody").append(tableRowElement);
+ .querySelector('.button--delete')
+ .addEventListener('click', deleteLotOccupancyComment);
+ tableElement.querySelector('tbody').append(tableRowElement);
}
- containerElement.innerHTML = "";
+ containerElement.innerHTML = '';
containerElement.append(tableElement);
};
-document.querySelector("#button--addComment").addEventListener("click", () => {
+document.querySelector('#button--addComment').addEventListener('click', () => {
let addFormElement;
let addCloseModalFunction;
const addComment = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyComment", addFormElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyComment', addFormElement, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyComments = responseJSON.lotOccupancyComments;
addCloseModalFunction();
@@ -158,23 +160,23 @@ document.querySelector("#button--addComment").addEventListener("click", () => {
}
else {
bulmaJS.alert({
- title: "Error Adding Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-addComment", {
+ cityssm.openHtmlModal('lotOccupancy-addComment', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyCommentAdd--lotOccupancyId").value = lotOccupancyId;
+ modalElement.querySelector('#lotOccupancyCommentAdd--lotOccupancyId').value = lotOccupancyId;
},
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
- modalElement.querySelector("#lotOccupancyCommentAdd--lotOccupancyComment").focus();
- addFormElement = modalElement.querySelector("form");
- addFormElement.addEventListener("submit", addComment);
+ modalElement.querySelector('#lotOccupancyCommentAdd--lotOccupancyComment').focus();
+ addFormElement = modalElement.querySelector('form');
+ addFormElement.addEventListener('submit', addComment);
addCloseModalFunction = closeModalFunction;
},
onremoved: () => {
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEditComments.ts b/public-typescript/lotOccupancyEdit/lotOccupancyEditComments.ts
index f8b5b798..d7066567 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEditComments.ts
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEditComments.ts
@@ -1,295 +1,303 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../../types/globalTypes";
-import type * as recordTypes from "../../types/recordTypes";
+import type * as globalTypes from '../../types/globalTypes'
+import type * as recordTypes from '../../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-declare const los: globalTypes.LOS;
+declare const los: globalTypes.LOS
-declare const lotOccupancyId: string;
+declare const lotOccupancyId: string
-let lotOccupancyComments: recordTypes.LotOccupancyComment[] = exports.lotOccupancyComments;
-delete exports.lotOccupancyComments;
+let lotOccupancyComments: recordTypes.LotOccupancyComment[] =
+ exports.lotOccupancyComments
+delete exports.lotOccupancyComments
const openEditLotOccupancyComment = (clickEvent: Event) => {
- const lotOccupancyCommentId = Number.parseInt(
- (clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.lotOccupancyCommentId!,
- 10
- );
+ const lotOccupancyCommentId = Number.parseInt(
+ (clickEvent.currentTarget as HTMLElement).closest('tr')!.dataset
+ .lotOccupancyCommentId!,
+ 10
+ )
- const lotOccupancyComment = lotOccupancyComments.find((currentLotOccupancyComment) => {
- return currentLotOccupancyComment.lotOccupancyCommentId === lotOccupancyCommentId;
- })!;
+ const lotOccupancyComment = lotOccupancyComments.find(
+ (currentLotOccupancyComment) => {
+ return (
+ currentLotOccupancyComment.lotOccupancyCommentId ===
+ lotOccupancyCommentId
+ )
+ }
+ )!
- let editFormElement: HTMLFormElement;
- let editCloseModalFunction: () => void;
+ let editFormElement: HTMLFormElement
+ let editCloseModalFunction: () => void
- const editComment = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+ const editComment = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doUpdateLotOccupancyComment",
- editFormElement,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyComments?: recordTypes.LotOccupancyComment[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyComments = responseJSON.lotOccupancyComments!;
- editCloseModalFunction();
- renderLotOccupancyComments();
- } else {
- bulmaJS.alert({
- title: "Error Updating Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- cityssm.openHtmlModal("lotOccupancy-editComment", {
- onshow: (modalElement) => {
- los.populateAliases(modalElement);
-
- (
- modalElement.querySelector(
- "#lotOccupancyCommentEdit--lotOccupancyId"
- ) as HTMLInputElement
- ).value = lotOccupancyId;
- (
- modalElement.querySelector(
- "#lotOccupancyCommentEdit--lotOccupancyCommentId"
- ) as HTMLInputElement
- ).value = lotOccupancyCommentId.toString();
-
- (
- modalElement.querySelector(
- "#lotOccupancyCommentEdit--lotOccupancyComment"
- ) as HTMLInputElement
- ).value = lotOccupancyComment.lotOccupancyComment!;
-
- const lotOccupancyCommentDateStringElement = modalElement.querySelector(
- "#lotOccupancyCommentEdit--lotOccupancyCommentDateString"
- ) as HTMLInputElement;
-
- lotOccupancyCommentDateStringElement.value =
- lotOccupancyComment.lotOccupancyCommentDateString!;
-
- const currentDateString = cityssm.dateToString(new Date());
-
- lotOccupancyCommentDateStringElement.max =
- lotOccupancyComment.lotOccupancyCommentDateString! <= currentDateString
- ? currentDateString
- : lotOccupancyComment.lotOccupancyCommentDateString!;
-
- (
- modalElement.querySelector(
- "#lotOccupancyCommentEdit--lotOccupancyCommentTimeString"
- ) as HTMLInputElement
- ).value = lotOccupancyComment.lotOccupancyCommentTimeString!;
- },
- onshown: (modalElement, closeModalFunction) => {
- bulmaJS.toggleHtmlClipped();
-
- los.initializeDatePickers(modalElement);
- // los.initializeTimePickers(modalElement);
-
- (
- modalElement.querySelector(
- "#lotOccupancyCommentEdit--lotOccupancyComment"
- ) as HTMLTextAreaElement
- ).focus();
-
- editFormElement = modalElement.querySelector("form")!;
- editFormElement.addEventListener("submit", editComment);
-
- editCloseModalFunction = closeModalFunction;
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doUpdateLotOccupancyComment',
+ editFormElement,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyComments?: recordTypes.LotOccupancyComment[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyComments = responseJSON.lotOccupancyComments!
+ editCloseModalFunction()
+ renderLotOccupancyComments()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
-};
+ }
+ )
+ }
+
+ cityssm.openHtmlModal('lotOccupancy-editComment', {
+ onshow: (modalElement) => {
+ los.populateAliases(modalElement)
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyCommentEdit--lotOccupancyId'
+ ) as HTMLInputElement
+ ).value = lotOccupancyId
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyCommentEdit--lotOccupancyCommentId'
+ ) as HTMLInputElement
+ ).value = lotOccupancyCommentId.toString()
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyCommentEdit--lotOccupancyComment'
+ ) as HTMLInputElement
+ ).value = lotOccupancyComment.lotOccupancyComment!
+
+ const lotOccupancyCommentDateStringElement = modalElement.querySelector(
+ '#lotOccupancyCommentEdit--lotOccupancyCommentDateString'
+ ) as HTMLInputElement
+
+ lotOccupancyCommentDateStringElement.value =
+ lotOccupancyComment.lotOccupancyCommentDateString!
+
+ const currentDateString = cityssm.dateToString(new Date())
+
+ lotOccupancyCommentDateStringElement.max =
+ lotOccupancyComment.lotOccupancyCommentDateString! <= currentDateString
+ ? currentDateString
+ : lotOccupancyComment.lotOccupancyCommentDateString!
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyCommentEdit--lotOccupancyCommentTimeString'
+ ) as HTMLInputElement
+ ).value = lotOccupancyComment.lotOccupancyCommentTimeString!
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ bulmaJS.toggleHtmlClipped()
+
+ los.initializeDatePickers(modalElement)
+ // los.initializeTimePickers(modalElement);
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyCommentEdit--lotOccupancyComment'
+ ) as HTMLTextAreaElement
+ ).focus()
+
+ editFormElement = modalElement.querySelector('form')!
+ editFormElement.addEventListener('submit', editComment)
+
+ editCloseModalFunction = closeModalFunction
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+}
const deleteLotOccupancyComment = (clickEvent: Event) => {
- const lotOccupancyCommentId = Number.parseInt(
- (clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.lotOccupancyCommentId!,
- 10
- );
+ const lotOccupancyCommentId = Number.parseInt(
+ (clickEvent.currentTarget as HTMLElement).closest('tr')!.dataset
+ .lotOccupancyCommentId!,
+ 10
+ )
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyComment",
- {
- lotOccupancyId,
- lotOccupancyCommentId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyComments: recordTypes.LotOccupancyComment[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyComments = responseJSON.lotOccupancyComments;
- renderLotOccupancyComments();
- } else {
- bulmaJS.alert({
- title: "Error Removing Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyComment',
+ {
+ lotOccupancyId,
+ lotOccupancyCommentId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyComments: recordTypes.LotOccupancyComment[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyComments = responseJSON.lotOccupancyComments
+ renderLotOccupancyComments()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Removing Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
- bulmaJS.confirm({
- title: "Remove Comment?",
- message: "Are you sure you want to remove this comment?",
- okButton: {
- text: "Yes, Remove Comment",
- callbackFunction: doDelete
- },
- contextualColorName: "warning"
- });
-};
+ bulmaJS.confirm({
+ title: 'Remove Comment?',
+ message: 'Are you sure you want to remove this comment?',
+ okButton: {
+ text: 'Yes, Remove Comment',
+ callbackFunction: doDelete
+ },
+ contextualColorName: 'warning'
+ })
+}
const renderLotOccupancyComments = () => {
- const containerElement = document.querySelector(
- "#container--lotOccupancyComments"
- ) as HTMLElement;
+ const containerElement = document.querySelector(
+ '#container--lotOccupancyComments'
+ ) as HTMLElement
- if (lotOccupancyComments.length === 0) {
- containerElement.innerHTML =
- '' +
- '
There are no comments associated with this record.
' +
- "
";
- return;
- }
+ if (lotOccupancyComments.length === 0) {
+ containerElement.innerHTML =
+ '' +
+ '
There are no comments associated with this record.
' +
+ '
'
+ return
+ }
- const tableElement = document.createElement("table");
- tableElement.className = "table is-fullwidth is-striped is-hoverable";
- tableElement.innerHTML =
- "" +
- "Commentor " +
- "Comment Date " +
- "Comment " +
- 'Options ' +
- " " +
- " ";
+ const tableElement = document.createElement('table')
+ tableElement.className = 'table is-fullwidth is-striped is-hoverable'
+ tableElement.innerHTML =
+ '' +
+ 'Commentor ' +
+ 'Comment Date ' +
+ 'Comment ' +
+ 'Options ' +
+ ' ' +
+ ' '
- for (const lotOccupancyComment of lotOccupancyComments) {
- const tableRowElement = document.createElement("tr");
- tableRowElement.dataset.lotOccupancyCommentId =
- lotOccupancyComment.lotOccupancyCommentId!.toString();
+ for (const lotOccupancyComment of lotOccupancyComments) {
+ const tableRowElement = document.createElement('tr')
+ tableRowElement.dataset.lotOccupancyCommentId =
+ lotOccupancyComment.lotOccupancyCommentId!.toString()
- tableRowElement.innerHTML =
- "" +
- cityssm.escapeHTML(lotOccupancyComment.recordCreate_userName || "") +
- " " +
- "" +
- lotOccupancyComment.lotOccupancyCommentDateString +
- (lotOccupancyComment.lotOccupancyCommentTime === 0
- ? ""
- : " " + lotOccupancyComment.lotOccupancyCommentTimeString) +
- " " +
- "" +
- cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment || "") +
- " " +
- ('' +
- '' +
- ('' +
- ' ' +
- " Edit " +
- " ") +
- ('' +
- ' ' +
- " ") +
- "
" +
- " ");
+ tableRowElement.innerHTML =
+ '' +
+ cityssm.escapeHTML(lotOccupancyComment.recordCreate_userName || '') +
+ ' ' +
+ '' +
+ lotOccupancyComment.lotOccupancyCommentDateString +
+ (lotOccupancyComment.lotOccupancyCommentTime === 0
+ ? ''
+ : ' ' + lotOccupancyComment.lotOccupancyCommentTimeString) +
+ ' ' +
+ '' +
+ cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment || '') +
+ ' ' +
+ ('' +
+ '' +
+ ('' +
+ ' ' +
+ ' Edit ' +
+ ' ') +
+ ('' +
+ ' ' +
+ ' ') +
+ '
' +
+ ' ')
- tableRowElement
- .querySelector(".button--edit")!
- .addEventListener("click", openEditLotOccupancyComment);
+ tableRowElement
+ .querySelector('.button--edit')!
+ .addEventListener('click', openEditLotOccupancyComment)
- tableRowElement
- .querySelector(".button--delete")!
- .addEventListener("click", deleteLotOccupancyComment);
+ tableRowElement
+ .querySelector('.button--delete')!
+ .addEventListener('click', deleteLotOccupancyComment)
- tableElement.querySelector("tbody")!.append(tableRowElement);
- }
+ tableElement.querySelector('tbody')!.append(tableRowElement)
+ }
- containerElement.innerHTML = "";
- containerElement.append(tableElement);
-};
+ containerElement.innerHTML = ''
+ containerElement.append(tableElement)
+}
-document.querySelector("#button--addComment")!.addEventListener("click", () => {
- let addFormElement: HTMLFormElement;
- let addCloseModalFunction: () => void;
+document.querySelector('#button--addComment')!.addEventListener('click', () => {
+ let addFormElement: HTMLFormElement
+ let addCloseModalFunction: () => void
- const addComment = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+ const addComment = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doAddLotOccupancyComment",
- addFormElement,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyComments?: recordTypes.LotOccupancyComment[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyComments = responseJSON.lotOccupancyComments!;
- addCloseModalFunction();
- renderLotOccupancyComments();
- } else {
- bulmaJS.alert({
- title: "Error Adding Comment",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- cityssm.openHtmlModal("lotOccupancy-addComment", {
- onshow: (modalElement) => {
- los.populateAliases(modalElement);
-
- (
- modalElement.querySelector(
- "#lotOccupancyCommentAdd--lotOccupancyId"
- ) as HTMLInputElement
- ).value = lotOccupancyId;
- },
- onshown: (modalElement, closeModalFunction) => {
- bulmaJS.toggleHtmlClipped();
-
- (
- modalElement.querySelector(
- "#lotOccupancyCommentAdd--lotOccupancyComment"
- ) as HTMLTextAreaElement
- ).focus();
-
- addFormElement = modalElement.querySelector("form")!;
- addFormElement.addEventListener("submit", addComment);
-
- addCloseModalFunction = closeModalFunction;
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doAddLotOccupancyComment',
+ addFormElement,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyComments?: recordTypes.LotOccupancyComment[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyComments = responseJSON.lotOccupancyComments!
+ addCloseModalFunction()
+ renderLotOccupancyComments()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Adding Comment',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
-});
+ }
+ )
+ }
-renderLotOccupancyComments();
+ cityssm.openHtmlModal('lotOccupancy-addComment', {
+ onshow: (modalElement) => {
+ los.populateAliases(modalElement)
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyCommentAdd--lotOccupancyId'
+ ) as HTMLInputElement
+ ).value = lotOccupancyId
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ bulmaJS.toggleHtmlClipped()
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyCommentAdd--lotOccupancyComment'
+ ) as HTMLTextAreaElement
+ ).focus()
+
+ addFormElement = modalElement.querySelector('form')!
+ addFormElement.addEventListener('submit', addComment)
+
+ addCloseModalFunction = closeModalFunction
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+})
+
+renderLotOccupancyComments()
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEditFees.js b/public-typescript/lotOccupancyEdit/lotOccupancyEditFees.js
index d659351d..684610a0 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEditFees.js
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEditFees.js
@@ -3,19 +3,20 @@
Object.defineProperty(exports, "__esModule", { value: true });
let lotOccupancyFees = exports.lotOccupancyFees;
delete exports.lotOccupancyFees;
-const lotOccupancyFeesContainerElement = document.querySelector("#container--lotOccupancyFees");
+const lotOccupancyFeesContainerElement = document.querySelector('#container--lotOccupancyFees');
const getFeeGrandTotal = () => {
let feeGrandTotal = 0;
for (const lotOccupancyFee of lotOccupancyFees) {
feeGrandTotal +=
- (lotOccupancyFee.feeAmount + lotOccupancyFee.taxAmount) * lotOccupancyFee.quantity;
+ (lotOccupancyFee.feeAmount + lotOccupancyFee.taxAmount) *
+ lotOccupancyFee.quantity;
}
return feeGrandTotal;
};
const deleteLotOccupancyFee = (clickEvent) => {
- const feeId = clickEvent.currentTarget.closest(".container--lotOccupancyFee").dataset.feeId;
+ const feeId = clickEvent.currentTarget.closest('.container--lotOccupancyFee').dataset.feeId;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyFee", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyFee', {
lotOccupancyId,
feeId
}, (responseJSON) => {
@@ -25,19 +26,19 @@ const deleteLotOccupancyFee = (clickEvent) => {
}
else {
bulmaJS.alert({
- title: "Error Deleting Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete Fee",
- message: "Are you sure you want to delete this fee?",
- contextualColorName: "warning",
+ title: 'Delete Fee',
+ message: 'Are you sure you want to delete this fee?',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Fee",
+ text: 'Yes, Delete Fee',
callbackFunction: doDelete
}
});
@@ -47,74 +48,81 @@ const renderLotOccupancyFees = () => {
lotOccupancyFeesContainerElement.innerHTML =
'' +
'
There are no fees associated with this record.
' +
- "
";
+ '';
renderLotOccupancyTransactions();
return;
}
lotOccupancyFeesContainerElement.innerHTML =
'' +
- ("" +
- "Fee " +
+ ('' +
+ 'Fee ' +
'Unit Cost ' +
'× ' +
'Quantity ' +
'equals ' +
'Total ' +
'Options ' +
- " ") +
- " " +
- ("" +
+ '') +
+ ' ' +
+ ('' +
'Subtotal ' +
'Tax ' +
'Grand Total ' +
- " ") +
- "
";
+ '') +
+ '';
let feeAmountTotal = 0;
let taxAmountTotal = 0;
for (const lotOccupancyFee of lotOccupancyFees) {
- const tableRowElement = document.createElement("tr");
- tableRowElement.className = "container--lotOccupancyFee";
+ const tableRowElement = document.createElement('tr');
+ tableRowElement.className = 'container--lotOccupancyFee';
tableRowElement.dataset.feeId = lotOccupancyFee.feeId.toString();
- tableRowElement.dataset.includeQuantity = lotOccupancyFee.includeQuantity ? "1" : "0";
+ tableRowElement.dataset.includeQuantity = lotOccupancyFee.includeQuantity
+ ? '1'
+ : '0';
tableRowElement.innerHTML =
'' +
- cityssm.escapeHTML(lotOccupancyFee.feeName || "") +
- " " +
+ cityssm.escapeHTML(lotOccupancyFee.feeName || '') +
+ '' +
(lotOccupancyFee.quantity === 1
- ? ""
+ ? ''
: '$' +
lotOccupancyFee.feeAmount.toFixed(2) +
- " " +
- "× " +
+ '' +
+ '× ' +
'' +
lotOccupancyFee.quantity +
- " " +
- "= ") +
+ '' +
+ '= ') +
'$' +
(lotOccupancyFee.feeAmount * lotOccupancyFee.quantity).toFixed(2) +
- " " +
+ '' +
('' +
'' +
' ' +
- " " +
- " ");
- tableRowElement.querySelector("button").addEventListener("click", deleteLotOccupancyFee);
- lotOccupancyFeesContainerElement.querySelector("tbody").append(tableRowElement);
+ '' +
+ '');
+ tableRowElement
+ .querySelector('button')
+ .addEventListener('click', deleteLotOccupancyFee);
+ lotOccupancyFeesContainerElement
+ .querySelector('tbody')
+ .append(tableRowElement);
feeAmountTotal += lotOccupancyFee.feeAmount * lotOccupancyFee.quantity;
taxAmountTotal += lotOccupancyFee.taxAmount * lotOccupancyFee.quantity;
}
- lotOccupancyFeesContainerElement.querySelector("#lotOccupancyFees--feeAmountTotal").textContent = "$" + feeAmountTotal.toFixed(2);
- lotOccupancyFeesContainerElement.querySelector("#lotOccupancyFees--taxAmountTotal").textContent = "$" + taxAmountTotal.toFixed(2);
- lotOccupancyFeesContainerElement.querySelector("#lotOccupancyFees--grandTotal").textContent = "$" + (feeAmountTotal + taxAmountTotal).toFixed(2);
+ ;
+ lotOccupancyFeesContainerElement.querySelector('#lotOccupancyFees--feeAmountTotal').textContent = '$' + feeAmountTotal.toFixed(2);
+ lotOccupancyFeesContainerElement.querySelector('#lotOccupancyFees--taxAmountTotal').textContent = '$' + taxAmountTotal.toFixed(2);
+ lotOccupancyFeesContainerElement.querySelector('#lotOccupancyFees--grandTotal').textContent = '$' + (feeAmountTotal + taxAmountTotal).toFixed(2);
renderLotOccupancyTransactions();
};
-document.querySelector("#button--addFee").addEventListener("click", () => {
+document.querySelector('#button--addFee').addEventListener('click', () => {
if (hasUnsavedChanges) {
bulmaJS.alert({
- message: "Please save all unsaved changes before adding fees.",
- contextualColorName: "warning"
+ message: 'Please save all unsaved changes before adding fees.',
+ contextualColorName: 'warning'
});
return;
}
@@ -122,7 +130,7 @@ document.querySelector("#button--addFee").addEventListener("click", () => {
let feeFilterElement;
let feeFilterResultsElement;
const doAddFee = (feeId, quantity = 1) => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyFee", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyFee', {
lotOccupancyId,
feeId,
quantity
@@ -134,9 +142,9 @@ document.querySelector("#button--addFee").addEventListener("click", () => {
}
else {
bulmaJS.alert({
- title: "Error Adding Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -149,21 +157,24 @@ document.querySelector("#button--addFee").addEventListener("click", () => {
doAddFee(fee.feeId, quantityElement.value);
quantityCloseModalFunction();
};
- cityssm.openHtmlModal("lotOccupancy-setFeeQuantity", {
+ cityssm.openHtmlModal('lotOccupancy-setFeeQuantity', {
onshow: (modalElement) => {
- modalElement.querySelector("#lotOccupancyFeeQuantity--quantityUnit").textContent = fee.quantityUnit;
+ ;
+ modalElement.querySelector('#lotOccupancyFeeQuantity--quantityUnit').textContent = fee.quantityUnit;
},
onshown: (modalElement, closeModalFunction) => {
quantityCloseModalFunction = closeModalFunction;
- quantityElement = modalElement.querySelector("#lotOccupancyFeeQuantity--quantity");
- modalElement.querySelector("form").addEventListener("submit", doSetQuantity);
+ quantityElement = modalElement.querySelector('#lotOccupancyFeeQuantity--quantity');
+ modalElement
+ .querySelector('form')
+ .addEventListener('submit', doSetQuantity);
}
});
};
const tryAddFee = (clickEvent) => {
clickEvent.preventDefault();
const feeId = Number.parseInt(clickEvent.currentTarget.dataset.feeId, 10);
- const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10);
+ const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest('.container--feeCategory').dataset.feeCategoryId, 10);
const feeCategory = feeCategories.find((currentFeeCategory) => {
return currentFeeCategory.feeCategoryId === feeCategoryId;
});
@@ -178,16 +189,20 @@ document.querySelector("#button--addFee").addEventListener("click", () => {
}
};
const filterFees = () => {
- const filterStringPieces = feeFilterElement.value.trim().toLowerCase().split(" ");
- feeFilterResultsElement.innerHTML = "";
+ const filterStringPieces = feeFilterElement.value
+ .trim()
+ .toLowerCase()
+ .split(' ');
+ feeFilterResultsElement.innerHTML = '';
for (const feeCategory of feeCategories) {
- const categoryContainerElement = document.createElement("div");
- categoryContainerElement.className = "container--feeCategory";
- categoryContainerElement.dataset.feeCategoryId = feeCategory.feeCategoryId.toString();
+ const categoryContainerElement = document.createElement('div');
+ categoryContainerElement.className = 'container--feeCategory';
+ categoryContainerElement.dataset.feeCategoryId =
+ feeCategory.feeCategoryId.toString();
categoryContainerElement.innerHTML =
'' +
- cityssm.escapeHTML(feeCategory.feeCategory || "") +
- " " +
+ cityssm.escapeHTML(feeCategory.feeCategory || '') +
+ '' +
'
';
let hasFees = false;
for (const fee of feeCategory.fees) {
@@ -207,35 +222,37 @@ document.querySelector("#button--addFee").addEventListener("click", () => {
continue;
}
hasFees = true;
- const panelBlockElement = document.createElement("a");
- panelBlockElement.className = "panel-block is-block container--fee";
+ const panelBlockElement = document.createElement('a');
+ panelBlockElement.className = 'panel-block is-block container--fee';
panelBlockElement.dataset.feeId = fee.feeId.toString();
- panelBlockElement.href = "#";
+ panelBlockElement.href = '#';
panelBlockElement.innerHTML =
- "" +
- cityssm.escapeHTML(fee.feeName || "") +
- " " +
- "" +
- cityssm.escapeHTML(fee.feeDescription || "").replace(/\n/g, " ") +
- " ";
- panelBlockElement.addEventListener("click", tryAddFee);
- categoryContainerElement.querySelector(".panel").append(panelBlockElement);
+ '' +
+ cityssm.escapeHTML(fee.feeName || '') +
+ ' ' +
+ '' +
+ cityssm
+ .escapeHTML(fee.feeDescription || '')
+ .replace(/\n/g, ' ') +
+ ' ';
+ panelBlockElement.addEventListener('click', tryAddFee);
+ categoryContainerElement.querySelector('.panel').append(panelBlockElement);
}
if (hasFees) {
feeFilterResultsElement.append(categoryContainerElement);
}
}
};
- cityssm.openHtmlModal("lotOccupancy-addFee", {
+ cityssm.openHtmlModal('lotOccupancy-addFee', {
onshow: (modalElement) => {
- feeFilterElement = modalElement.querySelector("#feeSelect--feeName");
- feeFilterResultsElement = modalElement.querySelector("#resultsContainer--feeSelect");
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doGetFees", {
+ feeFilterElement = modalElement.querySelector('#feeSelect--feeName');
+ feeFilterResultsElement = modalElement.querySelector('#resultsContainer--feeSelect');
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doGetFees', {
lotOccupancyId
}, (responseJSON) => {
feeCategories = responseJSON.feeCategories;
feeFilterElement.disabled = false;
- feeFilterElement.addEventListener("keyup", filterFees);
+ feeFilterElement.addEventListener('keyup', filterFees);
feeFilterElement.focus();
filterFees();
});
@@ -253,7 +270,7 @@ document.querySelector("#button--addFee").addEventListener("click", () => {
});
let lotOccupancyTransactions = exports.lotOccupancyTransactions;
delete exports.lotOccupancyTransactions;
-const lotOccupancyTransactionsContainerElement = document.querySelector("#container--lotOccupancyTransactions");
+const lotOccupancyTransactionsContainerElement = document.querySelector('#container--lotOccupancyTransactions');
const getTransactionGrandTotal = () => {
let transactionGrandTotal = 0;
for (const lotOccupancyTransaction of lotOccupancyTransactions) {
@@ -262,9 +279,9 @@ const getTransactionGrandTotal = () => {
return transactionGrandTotal;
};
const deleteLotOccupancyTransaction = (clickEvent) => {
- const transactionIndex = clickEvent.currentTarget.closest(".container--lotOccupancyTransaction").dataset.transactionIndex;
+ const transactionIndex = clickEvent.currentTarget.closest('.container--lotOccupancyTransaction').dataset.transactionIndex;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyTransaction", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyTransaction', {
lotOccupancyId,
transactionIndex
}, (responseJSON) => {
@@ -274,19 +291,19 @@ const deleteLotOccupancyTransaction = (clickEvent) => {
}
else {
bulmaJS.alert({
- title: "Error Deleting Transaction",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Deleting Transaction',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Delete Trasnaction",
- message: "Are you sure you want to delete this transaction?",
- contextualColorName: "warning",
+ title: 'Delete Trasnaction',
+ message: 'Are you sure you want to delete this transaction?',
+ contextualColorName: 'warning',
okButton: {
- text: "Yes, Delete Transaction",
+ text: 'Yes, Delete Transaction',
callbackFunction: doDelete
}
});
@@ -295,80 +312,85 @@ const renderLotOccupancyTransactions = () => {
if (lotOccupancyTransactions.length === 0) {
lotOccupancyTransactionsContainerElement.innerHTML =
'' +
'
There are no transactions associated with this record.
' +
- "
";
+ '';
return;
}
lotOccupancyTransactionsContainerElement.innerHTML =
'' +
- "" +
+ '' +
'Date ' +
- "" +
+ ' ' +
cityssm.escapeHTML(exports.aliases.externalReceiptNumber) +
- " " +
+ '' +
'Amount ' +
'Options ' +
- " " +
- " " +
- ("" +
+ ' ' +
+ ' ' +
+ ('' +
'Transaction Total ' +
' ' +
' ' +
- " ") +
- "
";
+ '') +
+ '';
let transactionGrandTotal = 0;
for (const lotOccupancyTransaction of lotOccupancyTransactions) {
transactionGrandTotal += lotOccupancyTransaction.transactionAmount;
- const tableRowElement = document.createElement("tr");
- tableRowElement.className = "container--lotOccupancyTransaction";
+ const tableRowElement = document.createElement('tr');
+ tableRowElement.className = 'container--lotOccupancyTransaction';
tableRowElement.dataset.transactionIndex =
lotOccupancyTransaction.transactionIndex.toString();
tableRowElement.innerHTML =
- "" +
+ ' ' +
lotOccupancyTransaction.transactionDateString +
- " " +
- ("" +
- cityssm.escapeHTML(lotOccupancyTransaction.externalReceiptNumber || "") +
- " " +
- "" +
- cityssm.escapeHTML(lotOccupancyTransaction.transactionNote || "") +
- " " +
- " ") +
+ '' +
+ ('' +
+ cityssm.escapeHTML(lotOccupancyTransaction.externalReceiptNumber || '') +
+ ' ' +
+ '' +
+ cityssm.escapeHTML(lotOccupancyTransaction.transactionNote || '') +
+ ' ' +
+ ' ') +
('$' +
lotOccupancyTransaction.transactionAmount.toFixed(2) +
- " ") +
+ '') +
('' +
'' +
' ' +
- " " +
- " ");
+ '' +
+ '');
tableRowElement
- .querySelector("button")
- .addEventListener("click", deleteLotOccupancyTransaction);
- lotOccupancyTransactionsContainerElement.querySelector("tbody").append(tableRowElement);
+ .querySelector('button')
+ .addEventListener('click', deleteLotOccupancyTransaction);
+ lotOccupancyTransactionsContainerElement
+ .querySelector('tbody')
+ .append(tableRowElement);
}
- lotOccupancyTransactionsContainerElement.querySelector("#lotOccupancyTransactions--grandTotal").textContent = "$" + transactionGrandTotal.toFixed(2);
+ ;
+ lotOccupancyTransactionsContainerElement.querySelector('#lotOccupancyTransactions--grandTotal').textContent = '$' + transactionGrandTotal.toFixed(2);
const feeGrandTotal = getFeeGrandTotal();
if (feeGrandTotal > transactionGrandTotal) {
- lotOccupancyTransactionsContainerElement.insertAdjacentHTML("afterbegin", '' +
+ lotOccupancyTransactionsContainerElement.insertAdjacentHTML('afterbegin', '
' +
'
' +
'
' +
'
' +
'
$' +
(feeGrandTotal - transactionGrandTotal).toFixed(2) +
- "
" +
- "
" +
- "
" +
- "
");
+ '
' +
+ '' +
+ '' +
+ '');
}
};
-document.querySelector("#button--addTransaction").addEventListener("click", () => {
+document
+ .querySelector('#button--addTransaction')
+ .addEventListener('click', () => {
let addCloseModalFunction;
const doAddTransaction = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyTransaction", submitEvent.currentTarget, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyTransaction', submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyTransactions = responseJSON.lotOccupancyTransactions;
addCloseModalFunction();
@@ -376,20 +398,20 @@ document.querySelector("#button--addTransaction").addEventListener("click", () =
}
else {
bulmaJS.confirm({
- title: "Error Adding Transaction",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding Transaction',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-addTransaction", {
+ cityssm.openHtmlModal('lotOccupancy-addTransaction', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyTransactionAdd--lotOccupancyId").value = lotOccupancyId.toString();
+ modalElement.querySelector('#lotOccupancyTransactionAdd--lotOccupancyId').value = lotOccupancyId.toString();
const feeGrandTotal = getFeeGrandTotal();
const transactionGrandTotal = getTransactionGrandTotal();
- const transactionAmountElement = modalElement.querySelector("#lotOccupancyTransactionAdd--transactionAmount");
+ const transactionAmountElement = modalElement.querySelector('#lotOccupancyTransactionAdd--transactionAmount');
transactionAmountElement.min = (-1 * transactionGrandTotal).toFixed(2);
transactionAmountElement.max = Math.max(feeGrandTotal - transactionGrandTotal, 0).toFixed(2);
transactionAmountElement.value = Math.max(feeGrandTotal - transactionGrandTotal, 0).toFixed(2);
@@ -397,7 +419,9 @@ document.querySelector("#button--addTransaction").addEventListener("click", () =
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
addCloseModalFunction = closeModalFunction;
- modalElement.querySelector("form").addEventListener("submit", doAddTransaction);
+ modalElement
+ .querySelector('form')
+ .addEventListener('submit', doAddTransaction);
},
onremoved: () => {
bulmaJS.toggleHtmlClipped();
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEditFees.ts b/public-typescript/lotOccupancyEdit/lotOccupancyEditFees.ts
index e8e745f8..97dc0142 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEditFees.ts
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEditFees.ts
@@ -1,602 +1,628 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../../types/globalTypes";
-import type * as recordTypes from "../../types/recordTypes";
+import type * as globalTypes from '../../types/globalTypes'
+import type * as recordTypes from '../../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-declare const los: globalTypes.LOS;
+declare const los: globalTypes.LOS
-declare const lotOccupancyId: string;
-declare const hasUnsavedChanges: boolean;
+declare const lotOccupancyId: string
+declare const hasUnsavedChanges: boolean
-let lotOccupancyFees: recordTypes.LotOccupancyFee[] = exports.lotOccupancyFees;
-delete exports.lotOccupancyFees;
+let lotOccupancyFees: recordTypes.LotOccupancyFee[] = exports.lotOccupancyFees
+delete exports.lotOccupancyFees
const lotOccupancyFeesContainerElement = document.querySelector(
- "#container--lotOccupancyFees"
-) as HTMLElement;
+ '#container--lotOccupancyFees'
+) as HTMLElement
const getFeeGrandTotal = (): number => {
- let feeGrandTotal = 0;
+ let feeGrandTotal = 0
- for (const lotOccupancyFee of lotOccupancyFees) {
- feeGrandTotal +=
- (lotOccupancyFee.feeAmount! + lotOccupancyFee.taxAmount!) * lotOccupancyFee.quantity!;
- }
+ for (const lotOccupancyFee of lotOccupancyFees) {
+ feeGrandTotal +=
+ (lotOccupancyFee.feeAmount! + lotOccupancyFee.taxAmount!) *
+ lotOccupancyFee.quantity!
+ }
- return feeGrandTotal;
-};
+ return feeGrandTotal
+}
const deleteLotOccupancyFee = (clickEvent: Event) => {
- const feeId = (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--lotOccupancyFee"
- ) as HTMLElement
- ).dataset.feeId;
+ const feeId = (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--lotOccupancyFee'
+ ) as HTMLElement
+ ).dataset.feeId
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyFee",
- {
- lotOccupancyId,
- feeId
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyFees?: recordTypes.LotOccupancyFee[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyFees = responseJSON.lotOccupancyFees!;
- renderLotOccupancyFees();
- } else {
- bulmaJS.alert({
- title: "Error Deleting Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- bulmaJS.confirm({
- title: "Delete Fee",
- message: "Are you sure you want to delete this fee?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Fee",
- callbackFunction: doDelete
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyFee',
+ {
+ lotOccupancyId,
+ feeId
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyFees?: recordTypes.LotOccupancyFee[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyFees = responseJSON.lotOccupancyFees!
+ renderLotOccupancyFees()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Deleting Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
-};
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: 'Delete Fee',
+ message: 'Are you sure you want to delete this fee?',
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete Fee',
+ callbackFunction: doDelete
+ }
+ })
+}
const renderLotOccupancyFees = () => {
- if (lotOccupancyFees.length === 0) {
- lotOccupancyFeesContainerElement.innerHTML =
- '' +
- '
There are no fees associated with this record.
' +
- "
";
-
- renderLotOccupancyTransactions();
-
- return;
- }
-
+ if (lotOccupancyFees.length === 0) {
lotOccupancyFeesContainerElement.innerHTML =
- '' +
- ("" +
- "Fee " +
- 'Unit Cost ' +
- '× ' +
- 'Quantity ' +
- 'equals ' +
- 'Total ' +
- 'Options ' +
- " ") +
- " " +
- ("" +
- 'Subtotal ' +
- 'Tax ' +
- 'Grand Total ' +
- " ") +
- "
";
+ '' +
+ '
There are no fees associated with this record.
' +
+ '
'
- let feeAmountTotal = 0;
- let taxAmountTotal = 0;
+ renderLotOccupancyTransactions()
- for (const lotOccupancyFee of lotOccupancyFees) {
- const tableRowElement = document.createElement("tr");
- tableRowElement.className = "container--lotOccupancyFee";
- tableRowElement.dataset.feeId = lotOccupancyFee.feeId!.toString();
- tableRowElement.dataset.includeQuantity = lotOccupancyFee.includeQuantity ? "1" : "0";
+ return
+ }
- tableRowElement.innerHTML =
- '' +
- cityssm.escapeHTML(lotOccupancyFee.feeName || "") +
- " " +
- (lotOccupancyFee.quantity === 1
- ? ""
- : '$' +
- lotOccupancyFee.feeAmount!.toFixed(2) +
- " " +
- "× " +
- '' +
- lotOccupancyFee.quantity +
- " " +
- "= ") +
- '$' +
- (lotOccupancyFee.feeAmount! * lotOccupancyFee.quantity!).toFixed(2) +
- " " +
- ('' +
- '' +
- ' ' +
- " " +
- " ");
+ lotOccupancyFeesContainerElement.innerHTML =
+ '' +
+ ('' +
+ 'Fee ' +
+ 'Unit Cost ' +
+ '× ' +
+ 'Quantity ' +
+ 'equals ' +
+ 'Total ' +
+ 'Options ' +
+ ' ') +
+ ' ' +
+ ('' +
+ 'Subtotal ' +
+ 'Tax ' +
+ 'Grand Total ' +
+ ' ') +
+ '
'
- tableRowElement.querySelector("button")!.addEventListener("click", deleteLotOccupancyFee);
+ let feeAmountTotal = 0
+ let taxAmountTotal = 0
- lotOccupancyFeesContainerElement.querySelector("tbody")!.append(tableRowElement);
+ for (const lotOccupancyFee of lotOccupancyFees) {
+ const tableRowElement = document.createElement('tr')
+ tableRowElement.className = 'container--lotOccupancyFee'
+ tableRowElement.dataset.feeId = lotOccupancyFee.feeId!.toString()
+ tableRowElement.dataset.includeQuantity = lotOccupancyFee.includeQuantity
+ ? '1'
+ : '0'
- feeAmountTotal += lotOccupancyFee.feeAmount! * lotOccupancyFee.quantity!;
- taxAmountTotal += lotOccupancyFee.taxAmount! * lotOccupancyFee.quantity!;
- }
+ tableRowElement.innerHTML =
+ '' +
+ cityssm.escapeHTML(lotOccupancyFee.feeName || '') +
+ ' ' +
+ (lotOccupancyFee.quantity === 1
+ ? ''
+ : '$' +
+ lotOccupancyFee.feeAmount!.toFixed(2) +
+ ' ' +
+ '× ' +
+ '' +
+ lotOccupancyFee.quantity +
+ ' ' +
+ '= ') +
+ '$' +
+ (lotOccupancyFee.feeAmount! * lotOccupancyFee.quantity!).toFixed(2) +
+ ' ' +
+ ('' +
+ '' +
+ ' ' +
+ ' ' +
+ ' ')
- (
- lotOccupancyFeesContainerElement.querySelector(
- "#lotOccupancyFees--feeAmountTotal"
- ) as HTMLElement
- ).textContent = "$" + feeAmountTotal.toFixed(2);
- (
- lotOccupancyFeesContainerElement.querySelector(
- "#lotOccupancyFees--taxAmountTotal"
- ) as HTMLElement
- ).textContent = "$" + taxAmountTotal.toFixed(2);
- (
- lotOccupancyFeesContainerElement.querySelector(
- "#lotOccupancyFees--grandTotal"
- ) as HTMLElement
- ).textContent = "$" + (feeAmountTotal + taxAmountTotal).toFixed(2);
+ tableRowElement
+ .querySelector('button')!
+ .addEventListener('click', deleteLotOccupancyFee)
- renderLotOccupancyTransactions();
-};
+ lotOccupancyFeesContainerElement
+ .querySelector('tbody')!
+ .append(tableRowElement)
-document.querySelector("#button--addFee")!.addEventListener("click", () => {
- if (hasUnsavedChanges) {
- bulmaJS.alert({
- message: "Please save all unsaved changes before adding fees.",
- contextualColorName: "warning"
- });
- return;
- }
+ feeAmountTotal += lotOccupancyFee.feeAmount! * lotOccupancyFee.quantity!
+ taxAmountTotal += lotOccupancyFee.taxAmount! * lotOccupancyFee.quantity!
+ }
- let feeCategories: recordTypes.FeeCategory[];
+ ;(
+ lotOccupancyFeesContainerElement.querySelector(
+ '#lotOccupancyFees--feeAmountTotal'
+ ) as HTMLElement
+ ).textContent = '$' + feeAmountTotal.toFixed(2)
+ ;(
+ lotOccupancyFeesContainerElement.querySelector(
+ '#lotOccupancyFees--taxAmountTotal'
+ ) as HTMLElement
+ ).textContent = '$' + taxAmountTotal.toFixed(2)
+ ;(
+ lotOccupancyFeesContainerElement.querySelector(
+ '#lotOccupancyFees--grandTotal'
+ ) as HTMLElement
+ ).textContent = '$' + (feeAmountTotal + taxAmountTotal).toFixed(2)
- let feeFilterElement: HTMLInputElement;
- let feeFilterResultsElement: HTMLElement;
+ renderLotOccupancyTransactions()
+}
- const doAddFee = (feeId: number, quantity: number | string = 1) => {
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doAddLotOccupancyFee",
- {
- lotOccupancyId,
- feeId,
- quantity
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyFees?: recordTypes.LotOccupancyFee[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyFees = responseJSON.lotOccupancyFees!;
- renderLotOccupancyFees();
- filterFees();
- } else {
- bulmaJS.alert({
- title: "Error Adding Fee",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
+document.querySelector('#button--addFee')!.addEventListener('click', () => {
+ if (hasUnsavedChanges) {
+ bulmaJS.alert({
+ message: 'Please save all unsaved changes before adding fees.',
+ contextualColorName: 'warning'
+ })
+ return
+ }
- const doSetQuantityAndAddFee = (fee: recordTypes.Fee) => {
- let quantityElement: HTMLInputElement;
- let quantityCloseModalFunction: () => void;
+ let feeCategories: recordTypes.FeeCategory[]
- const doSetQuantity = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
- doAddFee(fee.feeId!, quantityElement.value);
- quantityCloseModalFunction();
- };
+ let feeFilterElement: HTMLInputElement
+ let feeFilterResultsElement: HTMLElement
- cityssm.openHtmlModal("lotOccupancy-setFeeQuantity", {
- onshow: (modalElement) => {
- (
- modalElement.querySelector(
- "#lotOccupancyFeeQuantity--quantityUnit"
- ) as HTMLElement
- ).textContent = fee.quantityUnit!;
- },
- onshown: (modalElement, closeModalFunction) => {
- quantityCloseModalFunction = closeModalFunction;
-
- quantityElement = modalElement.querySelector(
- "#lotOccupancyFeeQuantity--quantity"
- ) as HTMLInputElement;
-
- modalElement.querySelector("form")!.addEventListener("submit", doSetQuantity);
- }
- });
- };
-
- const tryAddFee = (clickEvent: Event) => {
- clickEvent.preventDefault();
-
- const feeId = Number.parseInt((clickEvent.currentTarget as HTMLElement).dataset.feeId!, 10);
- const feeCategoryId = Number.parseInt(
- (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--feeCategory"
- ) as HTMLElement
- ).dataset.feeCategoryId!,
- 10
- );
-
- const feeCategory = feeCategories.find((currentFeeCategory) => {
- return currentFeeCategory.feeCategoryId === feeCategoryId;
- })!;
-
- const fee = feeCategory.fees!.find((currentFee) => {
- return currentFee.feeId === feeId;
- })!;
-
- if (fee.includeQuantity) {
- doSetQuantityAndAddFee(fee);
+ const doAddFee = (feeId: number, quantity: number | string = 1) => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doAddLotOccupancyFee',
+ {
+ lotOccupancyId,
+ feeId,
+ quantity
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyFees?: recordTypes.LotOccupancyFee[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyFees = responseJSON.lotOccupancyFees!
+ renderLotOccupancyFees()
+ filterFees()
} else {
- doAddFee(feeId);
+ bulmaJS.alert({
+ title: 'Error Adding Fee',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- };
+ }
+ )
+ }
- const filterFees = () => {
- const filterStringPieces = feeFilterElement.value.trim().toLowerCase().split(" ");
+ const doSetQuantityAndAddFee = (fee: recordTypes.Fee) => {
+ let quantityElement: HTMLInputElement
+ let quantityCloseModalFunction: () => void
- feeFilterResultsElement.innerHTML = "";
+ const doSetQuantity = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
+ doAddFee(fee.feeId!, quantityElement.value)
+ quantityCloseModalFunction()
+ }
- for (const feeCategory of feeCategories) {
- const categoryContainerElement = document.createElement("div");
- categoryContainerElement.className = "container--feeCategory";
- categoryContainerElement.dataset.feeCategoryId = feeCategory.feeCategoryId!.toString();
- categoryContainerElement.innerHTML =
- '' +
- cityssm.escapeHTML(feeCategory.feeCategory || "") +
- " " +
- '
';
+ cityssm.openHtmlModal('lotOccupancy-setFeeQuantity', {
+ onshow: (modalElement) => {
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyFeeQuantity--quantityUnit'
+ ) as HTMLElement
+ ).textContent = fee.quantityUnit!
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ quantityCloseModalFunction = closeModalFunction
- let hasFees = false;
+ quantityElement = modalElement.querySelector(
+ '#lotOccupancyFeeQuantity--quantity'
+ ) as HTMLInputElement
- for (const fee of feeCategory.fees!) {
- if (
- lotOccupancyFeesContainerElement.querySelector(
- ".container--lotOccupancyFee[data-fee-id='" +
- fee.feeId +
- "'][data-include-quantity='0']"
- )
- ) {
- continue;
- }
+ modalElement
+ .querySelector('form')!
+ .addEventListener('submit', doSetQuantity)
+ }
+ })
+ }
- let includeFee = true;
+ const tryAddFee = (clickEvent: Event) => {
+ clickEvent.preventDefault()
- for (const filterStringPiece of filterStringPieces) {
- if (!fee.feeName!.toLowerCase().includes(filterStringPiece)) {
- includeFee = false;
- break;
- }
- }
+ const feeId = Number.parseInt(
+ (clickEvent.currentTarget as HTMLElement).dataset.feeId!,
+ 10
+ )
+ const feeCategoryId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--feeCategory'
+ ) as HTMLElement
+ ).dataset.feeCategoryId!,
+ 10
+ )
- if (!includeFee) {
- continue;
- }
+ const feeCategory = feeCategories.find((currentFeeCategory) => {
+ return currentFeeCategory.feeCategoryId === feeCategoryId
+ })!
- hasFees = true;
+ const fee = feeCategory.fees!.find((currentFee) => {
+ return currentFee.feeId === feeId
+ })!
- const panelBlockElement = document.createElement("a");
- panelBlockElement.className = "panel-block is-block container--fee";
- panelBlockElement.dataset.feeId = fee.feeId!.toString();
- panelBlockElement.href = "#";
+ if (fee.includeQuantity) {
+ doSetQuantityAndAddFee(fee)
+ } else {
+ doAddFee(feeId)
+ }
+ }
- panelBlockElement.innerHTML =
- "" +
- cityssm.escapeHTML(fee.feeName || "") +
- " " +
- "" +
- cityssm.escapeHTML(fee.feeDescription || "").replace(/\n/g, " ") +
- " ";
+ const filterFees = () => {
+ const filterStringPieces = feeFilterElement.value
+ .trim()
+ .toLowerCase()
+ .split(' ')
- panelBlockElement.addEventListener("click", tryAddFee);
+ feeFilterResultsElement.innerHTML = ''
- (categoryContainerElement.querySelector(".panel") as HTMLElement).append(
- panelBlockElement
- );
- }
+ for (const feeCategory of feeCategories) {
+ const categoryContainerElement = document.createElement('div')
+ categoryContainerElement.className = 'container--feeCategory'
+ categoryContainerElement.dataset.feeCategoryId =
+ feeCategory.feeCategoryId!.toString()
+ categoryContainerElement.innerHTML =
+ '' +
+ cityssm.escapeHTML(feeCategory.feeCategory || '') +
+ ' ' +
+ '
'
- if (hasFees) {
- feeFilterResultsElement.append(categoryContainerElement);
- }
+ let hasFees = false
+
+ for (const fee of feeCategory.fees!) {
+ if (
+ lotOccupancyFeesContainerElement.querySelector(
+ ".container--lotOccupancyFee[data-fee-id='" +
+ fee.feeId +
+ "'][data-include-quantity='0']"
+ )
+ ) {
+ continue
}
- };
- cityssm.openHtmlModal("lotOccupancy-addFee", {
- onshow: (modalElement) => {
- feeFilterElement = modalElement.querySelector(
- "#feeSelect--feeName"
- ) as HTMLInputElement;
+ let includeFee = true
- feeFilterResultsElement = modalElement.querySelector(
- "#resultsContainer--feeSelect"
- ) as HTMLElement;
-
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doGetFees",
- {
- lotOccupancyId
- },
- (responseJSON: { feeCategories: recordTypes.FeeCategory[] }) => {
- feeCategories = responseJSON.feeCategories;
-
- feeFilterElement.disabled = false;
- feeFilterElement.addEventListener("keyup", filterFees);
- feeFilterElement.focus();
-
- filterFees();
- }
- );
- },
- onshown: () => {
- bulmaJS.toggleHtmlClipped();
- },
- onhidden: () => {
- renderLotOccupancyFees();
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
+ for (const filterStringPiece of filterStringPieces) {
+ if (!fee.feeName!.toLowerCase().includes(filterStringPiece)) {
+ includeFee = false
+ break
+ }
}
- });
-});
+
+ if (!includeFee) {
+ continue
+ }
+
+ hasFees = true
+
+ const panelBlockElement = document.createElement('a')
+ panelBlockElement.className = 'panel-block is-block container--fee'
+ panelBlockElement.dataset.feeId = fee.feeId!.toString()
+ panelBlockElement.href = '#'
+
+ panelBlockElement.innerHTML =
+ '' +
+ cityssm.escapeHTML(fee.feeName || '') +
+ ' ' +
+ '' +
+ cityssm
+ .escapeHTML(fee.feeDescription || '')
+ .replace(/\n/g, ' ') +
+ ' '
+
+ panelBlockElement.addEventListener('click', tryAddFee)
+
+ ;(
+ categoryContainerElement.querySelector('.panel') as HTMLElement
+ ).append(panelBlockElement)
+ }
+
+ if (hasFees) {
+ feeFilterResultsElement.append(categoryContainerElement)
+ }
+ }
+ }
+
+ cityssm.openHtmlModal('lotOccupancy-addFee', {
+ onshow: (modalElement) => {
+ feeFilterElement = modalElement.querySelector(
+ '#feeSelect--feeName'
+ ) as HTMLInputElement
+
+ feeFilterResultsElement = modalElement.querySelector(
+ '#resultsContainer--feeSelect'
+ ) as HTMLElement
+
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doGetFees',
+ {
+ lotOccupancyId
+ },
+ (responseJSON: { feeCategories: recordTypes.FeeCategory[] }) => {
+ feeCategories = responseJSON.feeCategories
+
+ feeFilterElement.disabled = false
+ feeFilterElement.addEventListener('keyup', filterFees)
+ feeFilterElement.focus()
+
+ filterFees()
+ }
+ )
+ },
+ onshown: () => {
+ bulmaJS.toggleHtmlClipped()
+ },
+ onhidden: () => {
+ renderLotOccupancyFees()
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+})
let lotOccupancyTransactions: recordTypes.LotOccupancyTransaction[] =
- exports.lotOccupancyTransactions;
-delete exports.lotOccupancyTransactions;
+ exports.lotOccupancyTransactions
+delete exports.lotOccupancyTransactions
const lotOccupancyTransactionsContainerElement = document.querySelector(
- "#container--lotOccupancyTransactions"
-) as HTMLElement;
+ '#container--lotOccupancyTransactions'
+) as HTMLElement
const getTransactionGrandTotal = (): number => {
- let transactionGrandTotal = 0;
+ let transactionGrandTotal = 0
- for (const lotOccupancyTransaction of lotOccupancyTransactions) {
- transactionGrandTotal += lotOccupancyTransaction.transactionAmount;
- }
+ for (const lotOccupancyTransaction of lotOccupancyTransactions) {
+ transactionGrandTotal += lotOccupancyTransaction.transactionAmount
+ }
- return transactionGrandTotal;
-};
+ return transactionGrandTotal
+}
const deleteLotOccupancyTransaction = (clickEvent: Event) => {
- const transactionIndex = (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--lotOccupancyTransaction"
- ) as HTMLElement
- ).dataset.transactionIndex;
+ const transactionIndex = (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ '.container--lotOccupancyTransaction'
+ ) as HTMLElement
+ ).dataset.transactionIndex
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyTransaction",
- {
- lotOccupancyId,
- transactionIndex
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyTransactions?: recordTypes.LotOccupancyTransaction[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyTransactions = responseJSON.lotOccupancyTransactions!;
- renderLotOccupancyTransactions();
- } else {
- bulmaJS.alert({
- title: "Error Deleting Transaction",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- bulmaJS.confirm({
- title: "Delete Trasnaction",
- message: "Are you sure you want to delete this transaction?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Transaction",
- callbackFunction: doDelete
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyTransaction',
+ {
+ lotOccupancyId,
+ transactionIndex
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyTransactions?: recordTypes.LotOccupancyTransaction[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyTransactions = responseJSON.lotOccupancyTransactions!
+ renderLotOccupancyTransactions()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Deleting Transaction',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
-};
+ }
+ )
+ }
+
+ bulmaJS.confirm({
+ title: 'Delete Trasnaction',
+ message: 'Are you sure you want to delete this transaction?',
+ contextualColorName: 'warning',
+ okButton: {
+ text: 'Yes, Delete Transaction',
+ callbackFunction: doDelete
+ }
+ })
+}
const renderLotOccupancyTransactions = () => {
- if (lotOccupancyTransactions.length === 0) {
- lotOccupancyTransactionsContainerElement.innerHTML =
- '' +
- '
There are no transactions associated with this record.
' +
- "
";
-
- return;
- }
-
+ if (lotOccupancyTransactions.length === 0) {
lotOccupancyTransactionsContainerElement.innerHTML =
- '' +
- "" +
- 'Date ' +
- "" +
- cityssm.escapeHTML(exports.aliases.externalReceiptNumber) +
- " " +
- 'Amount ' +
- 'Options ' +
- " " +
- " " +
- ("" +
- 'Transaction Total ' +
- ' ' +
- ' ' +
- " ") +
- "
";
+ '' +
+ '
There are no transactions associated with this record.
' +
+ '
'
- let transactionGrandTotal = 0;
+ return
+ }
- for (const lotOccupancyTransaction of lotOccupancyTransactions) {
- transactionGrandTotal += lotOccupancyTransaction.transactionAmount;
+ lotOccupancyTransactionsContainerElement.innerHTML =
+ '' +
+ '' +
+ 'Date ' +
+ '' +
+ cityssm.escapeHTML(exports.aliases.externalReceiptNumber) +
+ ' ' +
+ 'Amount ' +
+ 'Options ' +
+ ' ' +
+ ' ' +
+ ('' +
+ 'Transaction Total ' +
+ ' ' +
+ ' ' +
+ ' ') +
+ '
'
- const tableRowElement = document.createElement("tr");
- tableRowElement.className = "container--lotOccupancyTransaction";
- tableRowElement.dataset.transactionIndex =
- lotOccupancyTransaction.transactionIndex!.toString();
+ let transactionGrandTotal = 0
- tableRowElement.innerHTML =
- "" +
- lotOccupancyTransaction.transactionDateString +
- " " +
- ("" +
- cityssm.escapeHTML(lotOccupancyTransaction.externalReceiptNumber || "") +
- " " +
- "" +
- cityssm.escapeHTML(lotOccupancyTransaction.transactionNote || "") +
- " " +
- " ") +
- ('$' +
- lotOccupancyTransaction.transactionAmount.toFixed(2) +
- " ") +
- ('' +
- '' +
- ' ' +
- " " +
- " ");
+ for (const lotOccupancyTransaction of lotOccupancyTransactions) {
+ transactionGrandTotal += lotOccupancyTransaction.transactionAmount
- tableRowElement
- .querySelector("button")!
- .addEventListener("click", deleteLotOccupancyTransaction);
+ const tableRowElement = document.createElement('tr')
+ tableRowElement.className = 'container--lotOccupancyTransaction'
+ tableRowElement.dataset.transactionIndex =
+ lotOccupancyTransaction.transactionIndex!.toString()
- lotOccupancyTransactionsContainerElement.querySelector("tbody")!.append(tableRowElement);
- }
+ tableRowElement.innerHTML =
+ '' +
+ lotOccupancyTransaction.transactionDateString +
+ ' ' +
+ ('' +
+ cityssm.escapeHTML(
+ lotOccupancyTransaction.externalReceiptNumber || ''
+ ) +
+ ' ' +
+ '' +
+ cityssm.escapeHTML(lotOccupancyTransaction.transactionNote || '') +
+ ' ' +
+ ' ') +
+ ('$' +
+ lotOccupancyTransaction.transactionAmount.toFixed(2) +
+ ' ') +
+ ('' +
+ '' +
+ ' ' +
+ ' ' +
+ ' ')
- (
- lotOccupancyTransactionsContainerElement.querySelector(
- "#lotOccupancyTransactions--grandTotal"
- ) as HTMLElement
- ).textContent = "$" + transactionGrandTotal.toFixed(2);
+ tableRowElement
+ .querySelector('button')!
+ .addEventListener('click', deleteLotOccupancyTransaction)
- const feeGrandTotal = getFeeGrandTotal();
+ lotOccupancyTransactionsContainerElement
+ .querySelector('tbody')!
+ .append(tableRowElement)
+ }
- if (feeGrandTotal > transactionGrandTotal) {
- lotOccupancyTransactionsContainerElement.insertAdjacentHTML(
- "afterbegin",
- '' +
- '
' +
- '
' +
- '
' +
- '
$' +
- (feeGrandTotal - transactionGrandTotal).toFixed(2) +
- "
" +
- "
" +
- "
" +
- "
"
- );
- }
-};
+ ;(
+ lotOccupancyTransactionsContainerElement.querySelector(
+ '#lotOccupancyTransactions--grandTotal'
+ ) as HTMLElement
+ ).textContent = '$' + transactionGrandTotal.toFixed(2)
-document.querySelector("#button--addTransaction")!.addEventListener("click", () => {
- let addCloseModalFunction: () => void;
+ const feeGrandTotal = getFeeGrandTotal()
+
+ if (feeGrandTotal > transactionGrandTotal) {
+ lotOccupancyTransactionsContainerElement.insertAdjacentHTML(
+ 'afterbegin',
+ '' +
+ '
' +
+ '
' +
+ '
' +
+ '
$' +
+ (feeGrandTotal - transactionGrandTotal).toFixed(2) +
+ '
' +
+ '
' +
+ '
' +
+ '
'
+ )
+ }
+}
+
+document
+ .querySelector('#button--addTransaction')!
+ .addEventListener('click', () => {
+ let addCloseModalFunction: () => void
const doAddTransaction = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+ submitEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doAddLotOccupancyTransaction",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyTransactions?: recordTypes.LotOccupancyTransaction[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyTransactions = responseJSON.lotOccupancyTransactions!;
- addCloseModalFunction();
- renderLotOccupancyTransactions();
- } else {
- bulmaJS.confirm({
- title: "Error Adding Transaction",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- cityssm.openHtmlModal("lotOccupancy-addTransaction", {
- onshow: (modalElement) => {
- los.populateAliases(modalElement);
-
- (
- modalElement.querySelector(
- "#lotOccupancyTransactionAdd--lotOccupancyId"
- ) as HTMLInputElement
- ).value = lotOccupancyId.toString();
-
- const feeGrandTotal = getFeeGrandTotal();
- const transactionGrandTotal = getTransactionGrandTotal();
-
- const transactionAmountElement = modalElement.querySelector(
- "#lotOccupancyTransactionAdd--transactionAmount"
- ) as HTMLInputElement;
-
- transactionAmountElement.min = (-1 * transactionGrandTotal).toFixed(2);
- transactionAmountElement.max = Math.max(
- feeGrandTotal - transactionGrandTotal,
- 0
- ).toFixed(2);
- transactionAmountElement.value = Math.max(
- feeGrandTotal - transactionGrandTotal,
- 0
- ).toFixed(2);
- },
- onshown: (modalElement, closeModalFunction) => {
- bulmaJS.toggleHtmlClipped();
-
- addCloseModalFunction = closeModalFunction;
-
- modalElement.querySelector("form")!.addEventListener("submit", doAddTransaction);
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doAddLotOccupancyTransaction',
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyTransactions?: recordTypes.LotOccupancyTransaction[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyTransactions = responseJSON.lotOccupancyTransactions!
+ addCloseModalFunction()
+ renderLotOccupancyTransactions()
+ } else {
+ bulmaJS.confirm({
+ title: 'Error Adding Transaction',
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
}
- });
-});
+ )
+ }
-renderLotOccupancyFees();
+ cityssm.openHtmlModal('lotOccupancy-addTransaction', {
+ onshow: (modalElement) => {
+ los.populateAliases(modalElement)
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyTransactionAdd--lotOccupancyId'
+ ) as HTMLInputElement
+ ).value = lotOccupancyId.toString()
+
+ const feeGrandTotal = getFeeGrandTotal()
+ const transactionGrandTotal = getTransactionGrandTotal()
+
+ const transactionAmountElement = modalElement.querySelector(
+ '#lotOccupancyTransactionAdd--transactionAmount'
+ ) as HTMLInputElement
+
+ transactionAmountElement.min = (-1 * transactionGrandTotal).toFixed(2)
+ transactionAmountElement.max = Math.max(
+ feeGrandTotal - transactionGrandTotal,
+ 0
+ ).toFixed(2)
+ transactionAmountElement.value = Math.max(
+ feeGrandTotal - transactionGrandTotal,
+ 0
+ ).toFixed(2)
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ bulmaJS.toggleHtmlClipped()
+
+ addCloseModalFunction = closeModalFunction
+
+ modalElement
+ .querySelector('form')!
+ .addEventListener('submit', doAddTransaction)
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ })
+
+renderLotOccupancyFees()
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.js b/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.js
index ac635cda..2fa6c869 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.js
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.js
@@ -3,7 +3,8 @@
Object.defineProperty(exports, "__esModule", { value: true });
let lotOccupancyOccupants;
const openEditLotOccupancyOccupant = (clickEvent) => {
- const lotOccupantIndex = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotOccupantIndex, 10);
+ const lotOccupantIndex = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset
+ .lotOccupantIndex, 10);
const lotOccupancyOccupant = lotOccupancyOccupants.find((currentLotOccupancyOccupant) => {
return currentLotOccupancyOccupant.lotOccupantIndex === lotOccupantIndex;
});
@@ -11,7 +12,7 @@ const openEditLotOccupancyOccupant = (clickEvent) => {
let editCloseModalFunction;
const editOccupant = (submitEvent) => {
submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doUpdateLotOccupancyOccupant", editFormElement, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doUpdateLotOccupancyOccupant', editFormElement, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
editCloseModalFunction();
@@ -19,52 +20,55 @@ const openEditLotOccupancyOccupant = (clickEvent) => {
}
else {
bulmaJS.alert({
- title: "Error Updating " + exports.aliases.occupant,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Updating ' + exports.aliases.occupant,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
- cityssm.openHtmlModal("lotOccupancy-editOccupant", {
+ cityssm.openHtmlModal('lotOccupancy-editOccupant', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupancyId").value = lotOccupancyId;
- modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupantIndex").value = lotOccupantIndex.toString();
- const lotOccupantTypeSelectElement = modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupantTypeId");
+ modalElement.querySelector('#lotOccupancyOccupantEdit--lotOccupancyId').value = lotOccupancyId;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--lotOccupantIndex').value = lotOccupantIndex.toString();
+ const lotOccupantTypeSelectElement = modalElement.querySelector('#lotOccupancyOccupantEdit--lotOccupantTypeId');
let lotOccupantTypeSelected = false;
for (const lotOccupantType of exports.lotOccupantTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
optionElement.textContent = lotOccupantType.lotOccupantType;
- if (lotOccupantType.lotOccupantTypeId === lotOccupancyOccupant.lotOccupantTypeId) {
+ if (lotOccupantType.lotOccupantTypeId ===
+ lotOccupancyOccupant.lotOccupantTypeId) {
optionElement.selected = true;
lotOccupantTypeSelected = true;
}
lotOccupantTypeSelectElement.append(optionElement);
}
if (!lotOccupantTypeSelected) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotOccupancyOccupant.lotOccupantTypeId.toString();
- optionElement.textContent = lotOccupancyOccupant.lotOccupantType;
+ optionElement.textContent =
+ lotOccupancyOccupant.lotOccupantType;
optionElement.selected = true;
lotOccupantTypeSelectElement.append(optionElement);
}
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantName").value = lotOccupancyOccupant.occupantName;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantAddress1").value = lotOccupancyOccupant.occupantAddress1;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantAddress2").value = lotOccupancyOccupant.occupantAddress2;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantCity").value = lotOccupancyOccupant.occupantCity;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantProvince").value = lotOccupancyOccupant.occupantProvince;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantPostalCode").value = lotOccupancyOccupant.occupantPostalCode;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantPhoneNumber").value = lotOccupancyOccupant.occupantPhoneNumber;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantEmailAddress").value = lotOccupancyOccupant.occupantEmailAddress;
- modalElement.querySelector("#lotOccupancyOccupantEdit--occupantComment").value = lotOccupancyOccupant.occupantComment;
+ ;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantName').value = lotOccupancyOccupant.occupantName;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantAddress1').value = lotOccupancyOccupant.occupantAddress1;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantAddress2').value = lotOccupancyOccupant.occupantAddress2;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantCity').value = lotOccupancyOccupant.occupantCity;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantProvince').value = lotOccupancyOccupant.occupantProvince;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantPostalCode').value = lotOccupancyOccupant.occupantPostalCode;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantPhoneNumber').value = lotOccupancyOccupant.occupantPhoneNumber;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantEmailAddress').value = lotOccupancyOccupant.occupantEmailAddress;
+ modalElement.querySelector('#lotOccupancyOccupantEdit--occupantComment').value = lotOccupancyOccupant.occupantComment;
},
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
- modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupantTypeId").focus();
- editFormElement = modalElement.querySelector("form");
- editFormElement.addEventListener("submit", editOccupant);
+ modalElement.querySelector('#lotOccupancyOccupantEdit--lotOccupantTypeId').focus();
+ editFormElement = modalElement.querySelector('form');
+ editFormElement.addEventListener('submit', editOccupant);
editCloseModalFunction = closeModalFunction;
},
onremoved: () => {
@@ -73,10 +77,9 @@ const openEditLotOccupancyOccupant = (clickEvent) => {
});
};
const deleteLotOccupancyOccupant = (clickEvent) => {
- const lotOccupantIndex = clickEvent.currentTarget.closest("tr").dataset
- .lotOccupantIndex;
+ const lotOccupantIndex = clickEvent.currentTarget.closest('tr').dataset.lotOccupantIndex;
const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyOccupant", {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyOccupant', {
lotOccupancyId,
lotOccupantIndex
}, (responseJSON) => {
@@ -86,128 +89,135 @@ const deleteLotOccupancyOccupant = (clickEvent) => {
}
else {
bulmaJS.alert({
- title: "Error Removing " + exports.aliases.occupant,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Removing ' + exports.aliases.occupant,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
};
bulmaJS.confirm({
- title: "Remove " + exports.aliases.occupant + "?",
- message: "Are you sure you want to remove this " + exports.aliases.occupant.toLowerCase() + "?",
+ title: 'Remove ' + exports.aliases.occupant + '?',
+ message: 'Are you sure you want to remove this ' +
+ exports.aliases.occupant.toLowerCase() +
+ '?',
okButton: {
- text: "Yes, Remove " + exports.aliases.occupant,
+ text: 'Yes, Remove ' + exports.aliases.occupant,
callbackFunction: doDelete
},
- contextualColorName: "warning"
+ contextualColorName: 'warning'
});
};
const renderLotOccupancyOccupants = () => {
- const occupantsContainer = document.querySelector("#container--lotOccupancyOccupants");
+ const occupantsContainer = document.querySelector('#container--lotOccupancyOccupants');
cityssm.clearElement(occupantsContainer);
if (lotOccupancyOccupants.length === 0) {
occupantsContainer.innerHTML =
'' +
'
There are no ' +
exports.aliases.occupants.toLowerCase() +
- " associated with this record.
" +
- "
";
+ ' associated with this record.' +
+ '';
return;
}
- const tableElement = document.createElement("table");
- tableElement.className = "table is-fullwidth is-striped is-hoverable";
+ const tableElement = document.createElement('table');
+ tableElement.className = 'table is-fullwidth is-striped is-hoverable';
tableElement.innerHTML =
- "" +
- ("" + exports.aliases.occupant + " ") +
- "Address " +
- "Other Contact " +
- "Comment " +
+ '' +
+ ('' + exports.aliases.occupant + ' ') +
+ 'Address ' +
+ 'Other Contact ' +
+ 'Comment ' +
'Options ' +
- " " +
- " ";
+ '' +
+ ' ';
for (const lotOccupancyOccupant of lotOccupancyOccupants) {
- const tableRowElement = document.createElement("tr");
+ const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotOccupantIndex =
lotOccupancyOccupant.lotOccupantIndex.toString();
tableRowElement.innerHTML =
- "" +
- cityssm.escapeHTML(lotOccupancyOccupant.occupantName || "(No Name)") +
- " " +
+ ' ' +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantName || '(No Name)') +
+ ' ' +
('' +
' ' +
' ' +
cityssm.escapeHTML(lotOccupancyOccupant.lotOccupantType) +
- " " +
- " ") +
- " " +
- ("" +
+ '' +
+ '') +
+ ' ' +
+ ('' +
(lotOccupancyOccupant.occupantAddress1
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) + " "
- : "") +
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) + ' '
+ : '') +
(lotOccupancyOccupant.occupantAddress2
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress2) + " "
- : "") +
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress2) + ' '
+ : '') +
(lotOccupancyOccupant.occupantCity
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ", "
- : "") +
- cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince || "") +
- " " +
- cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode || "") +
- " ") +
- ("" +
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ', '
+ : '') +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince || '') +
+ ' ' +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode || '') +
+ ' ') +
+ ('' +
(lotOccupancyOccupant.occupantPhoneNumber
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantPhoneNumber) + " "
- : "") +
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantPhoneNumber) +
+ ' '
+ : '') +
(lotOccupancyOccupant.occupantEmailAddress
? cityssm.escapeHTML(lotOccupancyOccupant.occupantEmailAddress)
- : "") +
- " ") +
- ("" + cityssm.escapeHTML(lotOccupancyOccupant.occupantComment) + " ") +
+ : '') +
+ '') +
+ ('' +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantComment) +
+ ' ') +
('' +
'' +
('' +
' ' +
- " Edit " +
- " ") +
+ ' Edit ' +
+ '') +
('' +
' ' +
- " ") +
- "
" +
- " ");
+ '') +
+ '' +
+ '');
tableRowElement
- .querySelector(".button--edit")
- .addEventListener("click", openEditLotOccupancyOccupant);
+ .querySelector('.button--edit')
+ .addEventListener('click', openEditLotOccupancyOccupant);
tableRowElement
- .querySelector(".button--delete")
- .addEventListener("click", deleteLotOccupancyOccupant);
- tableElement.querySelector("tbody").append(tableRowElement);
+ .querySelector('.button--delete')
+ .addEventListener('click', deleteLotOccupancyOccupant);
+ tableElement.querySelector('tbody').append(tableRowElement);
}
occupantsContainer.append(tableElement);
};
if (isCreate) {
- const lotOccupantTypeIdElement = document.querySelector("#lotOccupancy--lotOccupantTypeId");
- lotOccupantTypeIdElement.addEventListener("change", () => {
+ const lotOccupantTypeIdElement = document.querySelector('#lotOccupancy--lotOccupantTypeId');
+ lotOccupantTypeIdElement.addEventListener('change', () => {
const occupantFields = formElement.querySelectorAll("[data-table='LotOccupancyOccupant']");
for (const occupantField of occupantFields) {
- occupantField.disabled = lotOccupantTypeIdElement.value === "";
+ occupantField.disabled = lotOccupantTypeIdElement.value === '';
}
});
}
else {
lotOccupancyOccupants = exports.lotOccupancyOccupants;
delete exports.lotOccupancyOccupants;
- document.querySelector("#button--addOccupant").addEventListener("click", () => {
+ document
+ .querySelector('#button--addOccupant')
+ .addEventListener('click', () => {
let addCloseModalFunction;
let addFormElement;
let searchFormElement;
let searchResultsElement;
const addOccupant = (formOrObject) => {
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyOccupant", formOrObject, (responseJSON) => {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyOccupant', formOrObject, (responseJSON) => {
if (responseJSON.success) {
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
addCloseModalFunction();
@@ -215,9 +225,9 @@ else {
}
else {
bulmaJS.alert({
- title: "Error Adding " + exports.aliases.occupant,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
+ title: 'Error Adding ' + exports.aliases.occupant,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
});
}
});
@@ -232,15 +242,15 @@ else {
const panelBlockElement = clickEvent.currentTarget;
const occupant = pastOccupantSearchResults[Number.parseInt(panelBlockElement.dataset.index, 10)];
const lotOccupantTypeId = panelBlockElement
- .closest(".modal")
- .querySelector("#lotOccupancyOccupantCopy--lotOccupantTypeId").value;
- if (lotOccupantTypeId === "") {
+ .closest('.modal')
+ .querySelector('#lotOccupancyOccupantCopy--lotOccupantTypeId').value;
+ if (lotOccupantTypeId === '') {
bulmaJS.alert({
- title: "No " + exports.aliases.occupant + " Type Selected",
- message: "Select a type to apply to the newly added " +
+ title: 'No ' + exports.aliases.occupant + ' Type Selected',
+ message: 'Select a type to apply to the newly added ' +
exports.aliases.occupant.toLowerCase() +
- ".",
- contextualColorName: "warning"
+ '.',
+ contextualColorName: 'warning'
});
}
else {
@@ -251,83 +261,86 @@ else {
};
const searchOccupants = (event) => {
event.preventDefault();
- if (searchFormElement.querySelector("#lotOccupancyOccupantCopy--searchFilter").value === "") {
+ if (searchFormElement.querySelector('#lotOccupancyOccupantCopy--searchFilter').value === '') {
searchResultsElement.innerHTML =
'' +
'
Enter a partial name or address in the search field above.
' +
- "
";
+ '';
return;
}
- searchResultsElement.innerHTML = los.getLoadingParagraphHTML("Searching...");
- cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doSearchPastOccupants", searchFormElement, (responseJSON) => {
+ searchResultsElement.innerHTML =
+ los.getLoadingParagraphHTML('Searching...');
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doSearchPastOccupants', searchFormElement, (responseJSON) => {
pastOccupantSearchResults = responseJSON.occupants;
- const panelElement = document.createElement("div");
- panelElement.className = "panel";
+ const panelElement = document.createElement('div');
+ panelElement.className = 'panel';
for (const [index, occupant] of pastOccupantSearchResults.entries()) {
- const panelBlockElement = document.createElement("a");
- panelBlockElement.className = "panel-block is-block";
+ const panelBlockElement = document.createElement('a');
+ panelBlockElement.className = 'panel-block is-block';
panelBlockElement.dataset.index = index.toString();
panelBlockElement.innerHTML =
- "" +
- cityssm.escapeHTML(occupant.occupantName || "") +
- " " +
- " " +
+ '' +
+ cityssm.escapeHTML(occupant.occupantName || '') +
+ ' ' +
+ ' ' +
'' +
('
' +
- cityssm.escapeHTML(occupant.occupantAddress1 || "") +
- " " +
+ cityssm.escapeHTML(occupant.occupantAddress1 || '') +
+ ' ' +
(occupant.occupantAddress2
- ? cityssm.escapeHTML(occupant.occupantAddress2) + " "
- : "") +
- cityssm.escapeHTML(occupant.occupantCity || "") +
- ", " +
- cityssm.escapeHTML(occupant.occupantProvince || "") +
- " " +
- cityssm.escapeHTML(occupant.occupantPostalCode || "") +
- "
") +
+ ? cityssm.escapeHTML(occupant.occupantAddress2) + '
'
+ : '') +
+ cityssm.escapeHTML(occupant.occupantCity || '') +
+ ', ' +
+ cityssm.escapeHTML(occupant.occupantProvince || '') +
+ '
' +
+ cityssm.escapeHTML(occupant.occupantPostalCode || '') +
+ '
') +
('' +
(occupant.occupantPhoneNumber
- ? cityssm.escapeHTML(occupant.occupantPhoneNumber) + " "
- : "") +
- cityssm.escapeHTML(occupant.occupantEmailAddress || "") +
- " " +
- "
") +
- "";
- panelBlockElement.addEventListener("click", addOccupantFromCopy);
+ ? cityssm.escapeHTML(occupant.occupantPhoneNumber) +
+ ' '
+ : '') +
+ cityssm.escapeHTML(occupant.occupantEmailAddress || '') +
+ ' ' +
+ '') +
+ '';
+ panelBlockElement.addEventListener('click', addOccupantFromCopy);
panelElement.append(panelBlockElement);
}
- searchResultsElement.innerHTML = "";
+ searchResultsElement.innerHTML = '';
searchResultsElement.append(panelElement);
});
};
- cityssm.openHtmlModal("lotOccupancy-addOccupant", {
+ cityssm.openHtmlModal('lotOccupancy-addOccupant', {
onshow: (modalElement) => {
los.populateAliases(modalElement);
- modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupancyId").value = lotOccupancyId;
- const lotOccupantTypeSelectElement = modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupantTypeId");
- const lotOccupantTypeCopySelectElement = modalElement.querySelector("#lotOccupancyOccupantCopy--lotOccupantTypeId");
+ modalElement.querySelector('#lotOccupancyOccupantAdd--lotOccupancyId').value = lotOccupancyId;
+ const lotOccupantTypeSelectElement = modalElement.querySelector('#lotOccupancyOccupantAdd--lotOccupantTypeId');
+ const lotOccupantTypeCopySelectElement = modalElement.querySelector('#lotOccupancyOccupantCopy--lotOccupantTypeId');
for (const lotOccupantType of exports.lotOccupantTypes) {
- const optionElement = document.createElement("option");
+ const optionElement = document.createElement('option');
optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
optionElement.textContent = lotOccupantType.lotOccupantType;
lotOccupantTypeSelectElement.append(optionElement);
lotOccupantTypeCopySelectElement.append(optionElement.cloneNode(true));
}
- modalElement.querySelector("#lotOccupancyOccupantAdd--occupantCity").value = exports.occupantCityDefault;
- modalElement.querySelector("#lotOccupancyOccupantAdd--occupantProvince").value = exports.occupantProvinceDefault;
+ ;
+ modalElement.querySelector('#lotOccupancyOccupantAdd--occupantCity').value = exports.occupantCityDefault;
+ modalElement.querySelector('#lotOccupancyOccupantAdd--occupantProvince').value = exports.occupantProvinceDefault;
},
onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped();
bulmaJS.init(modalElement);
- modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupantTypeId").focus();
- addFormElement = modalElement.querySelector("#form--lotOccupancyOccupantAdd");
- addFormElement.addEventListener("submit", addOccupantFromForm);
- searchResultsElement = modalElement.querySelector("#lotOccupancyOccupantCopy--searchResults");
- searchFormElement = modalElement.querySelector("#form--lotOccupancyOccupantCopy");
- searchFormElement.addEventListener("submit", (formEvent) => {
+ modalElement.querySelector('#lotOccupancyOccupantAdd--lotOccupantTypeId').focus();
+ addFormElement = modalElement.querySelector('#form--lotOccupancyOccupantAdd');
+ addFormElement.addEventListener('submit', addOccupantFromForm);
+ searchResultsElement = modalElement.querySelector('#lotOccupancyOccupantCopy--searchResults');
+ searchFormElement = modalElement.querySelector('#form--lotOccupancyOccupantCopy');
+ searchFormElement.addEventListener('submit', (formEvent) => {
formEvent.preventDefault();
});
- modalElement.querySelector("#lotOccupancyOccupantCopy--searchFilter").addEventListener("change", searchOccupants);
+ modalElement.querySelector('#lotOccupancyOccupantCopy--searchFilter').addEventListener('change', searchOccupants);
addCloseModalFunction = closeModalFunction;
},
onremoved: () => {
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.ts b/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.ts
index 3abd5a56..064124c2 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.ts
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.ts
@@ -1,558 +1,584 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
-import type * as globalTypes from "../../types/globalTypes";
-import type * as recordTypes from "../../types/recordTypes";
+import type * as globalTypes from '../../types/globalTypes'
+import type * as recordTypes from '../../types/recordTypes'
-import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
+import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types'
-import type { BulmaJS } from "@cityssm/bulma-js/types";
+import type { BulmaJS } from '@cityssm/bulma-js/types'
-declare const cityssm: cityssmGlobal;
-declare const bulmaJS: BulmaJS;
+declare const cityssm: cityssmGlobal
+declare const bulmaJS: BulmaJS
-declare const los: globalTypes.LOS;
+declare const los: globalTypes.LOS
-declare const lotOccupancyId: string;
-declare const isCreate: boolean;
-declare const formElement: HTMLFormElement;
+declare const lotOccupancyId: string
+declare const isCreate: boolean
+declare const formElement: HTMLFormElement
-let lotOccupancyOccupants: recordTypes.LotOccupancyOccupant[];
+let lotOccupancyOccupants: recordTypes.LotOccupancyOccupant[]
const openEditLotOccupancyOccupant = (clickEvent: Event) => {
- const lotOccupantIndex = Number.parseInt(
- (clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.lotOccupantIndex!,
- 10
- );
+ const lotOccupantIndex = Number.parseInt(
+ (clickEvent.currentTarget as HTMLElement).closest('tr')!.dataset
+ .lotOccupantIndex!,
+ 10
+ )
- const lotOccupancyOccupant = lotOccupancyOccupants.find((currentLotOccupancyOccupant) => {
- return currentLotOccupancyOccupant.lotOccupantIndex === lotOccupantIndex;
- })!;
+ const lotOccupancyOccupant = lotOccupancyOccupants.find(
+ (currentLotOccupancyOccupant) => {
+ return currentLotOccupancyOccupant.lotOccupantIndex === lotOccupantIndex
+ }
+ )!
- let editFormElement: HTMLFormElement;
- let editCloseModalFunction: () => void;
+ let editFormElement: HTMLFormElement
+ let editCloseModalFunction: () => void
- const editOccupant = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
+ const editOccupant = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doUpdateLotOccupancyOccupant",
- editFormElement,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyOccupants?: recordTypes.LotOccupancyOccupant[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyOccupants = responseJSON.lotOccupancyOccupants!;
- editCloseModalFunction();
- renderLotOccupancyOccupants();
- } else {
- bulmaJS.alert({
- title: "Error Updating " + exports.aliases.occupant,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- cityssm.openHtmlModal("lotOccupancy-editOccupant", {
- onshow: (modalElement) => {
- los.populateAliases(modalElement);
-
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--lotOccupancyId"
- ) as HTMLInputElement
- ).value = lotOccupancyId;
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--lotOccupantIndex"
- ) as HTMLInputElement
- ).value = lotOccupantIndex.toString();
-
- const lotOccupantTypeSelectElement = modalElement.querySelector(
- "#lotOccupancyOccupantEdit--lotOccupantTypeId"
- ) as HTMLSelectElement;
-
- let lotOccupantTypeSelected = false;
-
- for (const lotOccupantType of exports.lotOccupantTypes as recordTypes.LotOccupantType[]) {
- const optionElement = document.createElement("option");
- optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
- optionElement.textContent = lotOccupantType.lotOccupantType;
-
- if (lotOccupantType.lotOccupantTypeId === lotOccupancyOccupant.lotOccupantTypeId) {
- optionElement.selected = true;
- lotOccupantTypeSelected = true;
- }
-
- lotOccupantTypeSelectElement.append(optionElement);
- }
-
- if (!lotOccupantTypeSelected) {
- const optionElement = document.createElement("option");
-
- optionElement.value = lotOccupancyOccupant.lotOccupantTypeId!.toString();
- optionElement.textContent = lotOccupancyOccupant.lotOccupantType as string;
- optionElement.selected = true;
-
- lotOccupantTypeSelectElement.append(optionElement);
- }
-
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--occupantName"
- ) as HTMLInputElement
- ).value = lotOccupancyOccupant.occupantName!;
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--occupantAddress1"
- ) as HTMLInputElement
- ).value = lotOccupancyOccupant.occupantAddress1!;
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--occupantAddress2"
- ) as HTMLInputElement
- ).value = lotOccupancyOccupant.occupantAddress2!;
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--occupantCity"
- ) as HTMLInputElement
- ).value = lotOccupancyOccupant.occupantCity!;
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--occupantProvince"
- ) as HTMLInputElement
- ).value = lotOccupancyOccupant.occupantProvince!;
-
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--occupantPostalCode"
- ) as HTMLInputElement
- ).value = lotOccupancyOccupant.occupantPostalCode!;
-
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--occupantPhoneNumber"
- ) as HTMLInputElement
- ).value = lotOccupancyOccupant.occupantPhoneNumber!;
-
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--occupantEmailAddress"
- ) as HTMLInputElement
- ).value = lotOccupancyOccupant.occupantEmailAddress!;
-
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--occupantComment"
- ) as HTMLTextAreaElement
- ).value = lotOccupancyOccupant.occupantComment!;
- },
- onshown: (modalElement, closeModalFunction) => {
- bulmaJS.toggleHtmlClipped();
-
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantEdit--lotOccupantTypeId"
- ) as HTMLInputElement
- ).focus();
-
- editFormElement = modalElement.querySelector("form")!;
- editFormElement.addEventListener("submit", editOccupant);
-
- editCloseModalFunction = closeModalFunction;
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doUpdateLotOccupancyOccupant',
+ editFormElement,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyOccupants?: recordTypes.LotOccupancyOccupant[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyOccupants = responseJSON.lotOccupancyOccupants!
+ editCloseModalFunction()
+ renderLotOccupancyOccupants()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Updating ' + exports.aliases.occupant,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- });
-};
+ }
+ )
+ }
+
+ cityssm.openHtmlModal('lotOccupancy-editOccupant', {
+ onshow: (modalElement) => {
+ los.populateAliases(modalElement)
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--lotOccupancyId'
+ ) as HTMLInputElement
+ ).value = lotOccupancyId
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--lotOccupantIndex'
+ ) as HTMLInputElement
+ ).value = lotOccupantIndex.toString()
+
+ const lotOccupantTypeSelectElement = modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--lotOccupantTypeId'
+ ) as HTMLSelectElement
+
+ let lotOccupantTypeSelected = false
+
+ for (const lotOccupantType of exports.lotOccupantTypes as recordTypes.LotOccupantType[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = lotOccupantType.lotOccupantTypeId.toString()
+ optionElement.textContent = lotOccupantType.lotOccupantType
+
+ if (
+ lotOccupantType.lotOccupantTypeId ===
+ lotOccupancyOccupant.lotOccupantTypeId
+ ) {
+ optionElement.selected = true
+ lotOccupantTypeSelected = true
+ }
+
+ lotOccupantTypeSelectElement.append(optionElement)
+ }
+
+ if (!lotOccupantTypeSelected) {
+ const optionElement = document.createElement('option')
+
+ optionElement.value = lotOccupancyOccupant.lotOccupantTypeId!.toString()
+ optionElement.textContent =
+ lotOccupancyOccupant.lotOccupantType as string
+ optionElement.selected = true
+
+ lotOccupantTypeSelectElement.append(optionElement)
+ }
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--occupantName'
+ ) as HTMLInputElement
+ ).value = lotOccupancyOccupant.occupantName!
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--occupantAddress1'
+ ) as HTMLInputElement
+ ).value = lotOccupancyOccupant.occupantAddress1!
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--occupantAddress2'
+ ) as HTMLInputElement
+ ).value = lotOccupancyOccupant.occupantAddress2!
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--occupantCity'
+ ) as HTMLInputElement
+ ).value = lotOccupancyOccupant.occupantCity!
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--occupantProvince'
+ ) as HTMLInputElement
+ ).value = lotOccupancyOccupant.occupantProvince!
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--occupantPostalCode'
+ ) as HTMLInputElement
+ ).value = lotOccupancyOccupant.occupantPostalCode!
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--occupantPhoneNumber'
+ ) as HTMLInputElement
+ ).value = lotOccupancyOccupant.occupantPhoneNumber!
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--occupantEmailAddress'
+ ) as HTMLInputElement
+ ).value = lotOccupancyOccupant.occupantEmailAddress!
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--occupantComment'
+ ) as HTMLTextAreaElement
+ ).value = lotOccupancyOccupant.occupantComment!
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ bulmaJS.toggleHtmlClipped()
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantEdit--lotOccupantTypeId'
+ ) as HTMLInputElement
+ ).focus()
+
+ editFormElement = modalElement.querySelector('form')!
+ editFormElement.addEventListener('submit', editOccupant)
+
+ editCloseModalFunction = closeModalFunction
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+}
const deleteLotOccupancyOccupant = (clickEvent: Event) => {
- const lotOccupantIndex = (clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset
- .lotOccupantIndex;
+ const lotOccupantIndex = (clickEvent.currentTarget as HTMLElement).closest(
+ 'tr'
+ )!.dataset.lotOccupantIndex
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyOccupant",
- {
- lotOccupancyId,
- lotOccupantIndex
- },
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyOccupants: recordTypes.LotOccupancyOccupant[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
- renderLotOccupancyOccupants();
- } else {
- bulmaJS.alert({
- title: "Error Removing " + exports.aliases.occupant,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doDeleteLotOccupancyOccupant',
+ {
+ lotOccupancyId,
+ lotOccupantIndex
+ },
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyOccupants: recordTypes.LotOccupancyOccupant[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyOccupants = responseJSON.lotOccupancyOccupants
+ renderLotOccupancyOccupants()
+ } else {
+ bulmaJS.alert({
+ title: 'Error Removing ' + exports.aliases.occupant,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
- bulmaJS.confirm({
- title: "Remove " + exports.aliases.occupant + "?",
- message:
- "Are you sure you want to remove this " + exports.aliases.occupant.toLowerCase() + "?",
- okButton: {
- text: "Yes, Remove " + exports.aliases.occupant,
- callbackFunction: doDelete
- },
- contextualColorName: "warning"
- });
-};
+ bulmaJS.confirm({
+ title: 'Remove ' + exports.aliases.occupant + '?',
+ message:
+ 'Are you sure you want to remove this ' +
+ exports.aliases.occupant.toLowerCase() +
+ '?',
+ okButton: {
+ text: 'Yes, Remove ' + exports.aliases.occupant,
+ callbackFunction: doDelete
+ },
+ contextualColorName: 'warning'
+ })
+}
const renderLotOccupancyOccupants = () => {
- const occupantsContainer = document.querySelector(
- "#container--lotOccupancyOccupants"
- ) as HTMLElement;
+ const occupantsContainer = document.querySelector(
+ '#container--lotOccupancyOccupants'
+ ) as HTMLElement
- cityssm.clearElement(occupantsContainer);
+ cityssm.clearElement(occupantsContainer)
- if (lotOccupancyOccupants.length === 0) {
- occupantsContainer.innerHTML =
- '' +
- '
There are no ' +
- exports.aliases.occupants.toLowerCase() +
- " associated with this record.
" +
- "
";
+ if (lotOccupancyOccupants.length === 0) {
+ occupantsContainer.innerHTML =
+ '' +
+ '
There are no ' +
+ exports.aliases.occupants.toLowerCase() +
+ ' associated with this record.
' +
+ '
'
- return;
- }
+ return
+ }
- const tableElement = document.createElement("table");
- tableElement.className = "table is-fullwidth is-striped is-hoverable";
+ const tableElement = document.createElement('table')
+ tableElement.className = 'table is-fullwidth is-striped is-hoverable'
- tableElement.innerHTML =
- "" +
- ("" + exports.aliases.occupant + " ") +
- "Address " +
- "Other Contact " +
- "Comment " +
- 'Options ' +
- " " +
- " ";
+ tableElement.innerHTML =
+ '' +
+ ('' + exports.aliases.occupant + ' ') +
+ 'Address ' +
+ 'Other Contact ' +
+ 'Comment ' +
+ 'Options ' +
+ ' ' +
+ ' '
- for (const lotOccupancyOccupant of lotOccupancyOccupants) {
- const tableRowElement = document.createElement("tr");
- tableRowElement.dataset.lotOccupantIndex =
- lotOccupancyOccupant.lotOccupantIndex!.toString();
+ for (const lotOccupancyOccupant of lotOccupancyOccupants) {
+ const tableRowElement = document.createElement('tr')
+ tableRowElement.dataset.lotOccupantIndex =
+ lotOccupancyOccupant.lotOccupantIndex!.toString()
- tableRowElement.innerHTML =
- "" +
- cityssm.escapeHTML(lotOccupancyOccupant.occupantName || "(No Name)") +
- " " +
- ('' +
- ' ' +
- ' ' +
- cityssm.escapeHTML(lotOccupancyOccupant.lotOccupantType!) +
- " " +
- " ") +
- " " +
- ("" +
- (lotOccupancyOccupant.occupantAddress1
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) + " "
- : "") +
- (lotOccupancyOccupant.occupantAddress2
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress2) + " "
- : "") +
- (lotOccupancyOccupant.occupantCity
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ", "
- : "") +
- cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince || "") +
- " " +
- cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode || "") +
- " ") +
- ("" +
- (lotOccupancyOccupant.occupantPhoneNumber
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantPhoneNumber) + " "
- : "") +
- (lotOccupancyOccupant.occupantEmailAddress
- ? cityssm.escapeHTML(lotOccupancyOccupant.occupantEmailAddress)
- : "") +
- " ") +
- ("" + cityssm.escapeHTML(lotOccupancyOccupant.occupantComment!) + " ") +
- ('' +
- '' +
- ('' +
- ' ' +
- " Edit " +
- " ") +
- ('' +
- ' ' +
- " ") +
- "
" +
- " ");
+ tableRowElement.innerHTML =
+ '' +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantName || '(No Name)') +
+ ' ' +
+ ('' +
+ ' ' +
+ ' ' +
+ cityssm.escapeHTML(lotOccupancyOccupant.lotOccupantType!) +
+ ' ' +
+ ' ') +
+ ' ' +
+ ('' +
+ (lotOccupancyOccupant.occupantAddress1
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) + ' '
+ : '') +
+ (lotOccupancyOccupant.occupantAddress2
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress2) + ' '
+ : '') +
+ (lotOccupancyOccupant.occupantCity
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ', '
+ : '') +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince || '') +
+ ' ' +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode || '') +
+ ' ') +
+ ('' +
+ (lotOccupancyOccupant.occupantPhoneNumber
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantPhoneNumber) +
+ ' '
+ : '') +
+ (lotOccupancyOccupant.occupantEmailAddress
+ ? cityssm.escapeHTML(lotOccupancyOccupant.occupantEmailAddress)
+ : '') +
+ ' ') +
+ ('' +
+ cityssm.escapeHTML(lotOccupancyOccupant.occupantComment!) +
+ ' ') +
+ ('' +
+ '' +
+ ('' +
+ ' ' +
+ ' Edit ' +
+ ' ') +
+ ('' +
+ ' ' +
+ ' ') +
+ '
' +
+ ' ')
- tableRowElement
- .querySelector(".button--edit")!
- .addEventListener("click", openEditLotOccupancyOccupant);
+ tableRowElement
+ .querySelector('.button--edit')!
+ .addEventListener('click', openEditLotOccupancyOccupant)
- tableRowElement
- .querySelector(".button--delete")!
- .addEventListener("click", deleteLotOccupancyOccupant);
+ tableRowElement
+ .querySelector('.button--delete')!
+ .addEventListener('click', deleteLotOccupancyOccupant)
- tableElement.querySelector("tbody")!.append(tableRowElement);
- }
+ tableElement.querySelector('tbody')!.append(tableRowElement)
+ }
- occupantsContainer.append(tableElement);
-};
+ occupantsContainer.append(tableElement)
+}
if (isCreate) {
- const lotOccupantTypeIdElement = document.querySelector(
- "#lotOccupancy--lotOccupantTypeId"
- ) as HTMLSelectElement;
+ const lotOccupantTypeIdElement = document.querySelector(
+ '#lotOccupancy--lotOccupantTypeId'
+ ) as HTMLSelectElement
- lotOccupantTypeIdElement.addEventListener("change", () => {
- const occupantFields = formElement.querySelectorAll(
- "[data-table='LotOccupancyOccupant']"
- ) as NodeListOf;
+ lotOccupantTypeIdElement.addEventListener('change', () => {
+ const occupantFields = formElement.querySelectorAll(
+ "[data-table='LotOccupancyOccupant']"
+ ) as NodeListOf
- for (const occupantField of occupantFields) {
- occupantField.disabled = lotOccupantTypeIdElement.value === "";
- }
- });
+ for (const occupantField of occupantFields) {
+ occupantField.disabled = lotOccupantTypeIdElement.value === ''
+ }
+ })
} else {
- lotOccupancyOccupants = exports.lotOccupancyOccupants;
- delete exports.lotOccupancyOccupants;
+ lotOccupancyOccupants = exports.lotOccupancyOccupants
+ delete exports.lotOccupancyOccupants
- document.querySelector("#button--addOccupant")!.addEventListener("click", () => {
- let addCloseModalFunction: () => void;
+ document
+ .querySelector('#button--addOccupant')!
+ .addEventListener('click', () => {
+ let addCloseModalFunction: () => void
- let addFormElement: HTMLFormElement;
+ let addFormElement: HTMLFormElement
- let searchFormElement: HTMLFormElement;
- let searchResultsElement: HTMLElement;
+ let searchFormElement: HTMLFormElement
+ let searchResultsElement: HTMLElement
- const addOccupant = (formOrObject: HTMLFormElement | recordTypes.LotOccupancyOccupant) => {
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doAddLotOccupancyOccupant",
- formOrObject,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- lotOccupancyOccupants?: recordTypes.LotOccupancyOccupant[];
- }) => {
- if (responseJSON.success) {
- lotOccupancyOccupants = responseJSON.lotOccupancyOccupants!;
- addCloseModalFunction();
- renderLotOccupancyOccupants();
- } else {
- bulmaJS.alert({
- title: "Error Adding " + exports.aliases.occupant,
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
-
- const addOccupantFromForm = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
- addOccupant(addFormElement);
- };
-
- let pastOccupantSearchResults: recordTypes.LotOccupancyOccupant[] = [];
-
- const addOccupantFromCopy = (clickEvent: MouseEvent) => {
- clickEvent.preventDefault();
-
- const panelBlockElement = clickEvent.currentTarget as HTMLElement;
-
- const occupant =
- pastOccupantSearchResults[Number.parseInt(panelBlockElement.dataset.index!, 10)];
-
- const lotOccupantTypeId = (
- panelBlockElement
- .closest(".modal")!
- .querySelector(
- "#lotOccupancyOccupantCopy--lotOccupantTypeId"
- ) as HTMLSelectElement
- ).value;
-
- if (lotOccupantTypeId === "") {
- bulmaJS.alert({
- title: "No " + exports.aliases.occupant + " Type Selected",
- message:
- "Select a type to apply to the newly added " +
- exports.aliases.occupant.toLowerCase() +
- ".",
- contextualColorName: "warning"
- });
+ const addOccupant = (
+ formOrObject: HTMLFormElement | recordTypes.LotOccupancyOccupant
+ ) => {
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doAddLotOccupancyOccupant',
+ formOrObject,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyOccupants?: recordTypes.LotOccupancyOccupant[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyOccupants = responseJSON.lotOccupancyOccupants!
+ addCloseModalFunction()
+ renderLotOccupancyOccupants()
} else {
- occupant.lotOccupantTypeId = Number.parseInt(lotOccupantTypeId, 10);
- occupant.lotOccupancyId = Number.parseInt(lotOccupancyId, 10);
- addOccupant(occupant);
+ bulmaJS.alert({
+ title: 'Error Adding ' + exports.aliases.occupant,
+ message: responseJSON.errorMessage || '',
+ contextualColorName: 'danger'
+ })
}
- };
+ }
+ )
+ }
- const searchOccupants = (event: Event) => {
- event.preventDefault();
+ const addOccupantFromForm = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault()
+ addOccupant(addFormElement)
+ }
- if (
- (
- searchFormElement.querySelector(
- "#lotOccupancyOccupantCopy--searchFilter"
- ) as HTMLInputElement
- ).value === ""
- ) {
- searchResultsElement.innerHTML =
- '' +
- '
Enter a partial name or address in the search field above.
' +
- "
";
+ let pastOccupantSearchResults: recordTypes.LotOccupancyOccupant[] = []
- return;
+ const addOccupantFromCopy = (clickEvent: MouseEvent) => {
+ clickEvent.preventDefault()
+
+ const panelBlockElement = clickEvent.currentTarget as HTMLElement
+
+ const occupant =
+ pastOccupantSearchResults[
+ Number.parseInt(panelBlockElement.dataset.index!, 10)
+ ]
+
+ const lotOccupantTypeId = (
+ panelBlockElement
+ .closest('.modal')!
+ .querySelector(
+ '#lotOccupancyOccupantCopy--lotOccupantTypeId'
+ ) as HTMLSelectElement
+ ).value
+
+ if (lotOccupantTypeId === '') {
+ bulmaJS.alert({
+ title: 'No ' + exports.aliases.occupant + ' Type Selected',
+ message:
+ 'Select a type to apply to the newly added ' +
+ exports.aliases.occupant.toLowerCase() +
+ '.',
+ contextualColorName: 'warning'
+ })
+ } else {
+ occupant.lotOccupantTypeId = Number.parseInt(lotOccupantTypeId, 10)
+ occupant.lotOccupancyId = Number.parseInt(lotOccupancyId, 10)
+ addOccupant(occupant)
+ }
+ }
+
+ const searchOccupants = (event: Event) => {
+ event.preventDefault()
+
+ if (
+ (
+ searchFormElement.querySelector(
+ '#lotOccupancyOccupantCopy--searchFilter'
+ ) as HTMLInputElement
+ ).value === ''
+ ) {
+ searchResultsElement.innerHTML =
+ '' +
+ '
Enter a partial name or address in the search field above.
' +
+ '
'
+
+ return
+ }
+
+ searchResultsElement.innerHTML =
+ los.getLoadingParagraphHTML('Searching...')
+
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doSearchPastOccupants',
+ searchFormElement,
+ (responseJSON: { occupants: recordTypes.LotOccupancyOccupant[] }) => {
+ pastOccupantSearchResults = responseJSON.occupants
+
+ const panelElement = document.createElement('div')
+ panelElement.className = 'panel'
+
+ for (const [
+ index,
+ occupant
+ ] of pastOccupantSearchResults.entries()) {
+ const panelBlockElement = document.createElement('a')
+ panelBlockElement.className = 'panel-block is-block'
+ panelBlockElement.dataset.index = index.toString()
+
+ panelBlockElement.innerHTML =
+ '' +
+ cityssm.escapeHTML(occupant.occupantName || '') +
+ ' ' +
+ ' ' +
+ '' +
+ ('
' +
+ cityssm.escapeHTML(occupant.occupantAddress1 || '') +
+ ' ' +
+ (occupant.occupantAddress2
+ ? cityssm.escapeHTML(occupant.occupantAddress2) + ' '
+ : '') +
+ cityssm.escapeHTML(occupant.occupantCity || '') +
+ ', ' +
+ cityssm.escapeHTML(occupant.occupantProvince || '') +
+ ' ' +
+ cityssm.escapeHTML(occupant.occupantPostalCode || '') +
+ '
') +
+ ('
' +
+ (occupant.occupantPhoneNumber
+ ? cityssm.escapeHTML(occupant.occupantPhoneNumber) +
+ ' '
+ : '') +
+ cityssm.escapeHTML(occupant.occupantEmailAddress || '') +
+ ' ' +
+ '
') +
+ '
'
+
+ panelBlockElement.addEventListener('click', addOccupantFromCopy)
+
+ panelElement.append(panelBlockElement)
}
- searchResultsElement.innerHTML = los.getLoadingParagraphHTML("Searching...");
+ searchResultsElement.innerHTML = ''
+ searchResultsElement.append(panelElement)
+ }
+ )
+ }
- cityssm.postJSON(
- los.urlPrefix + "/lotOccupancies/doSearchPastOccupants",
- searchFormElement,
- (responseJSON: { occupants: recordTypes.LotOccupancyOccupant[] }) => {
- pastOccupantSearchResults = responseJSON.occupants;
+ cityssm.openHtmlModal('lotOccupancy-addOccupant', {
+ onshow: (modalElement) => {
+ los.populateAliases(modalElement)
- const panelElement = document.createElement("div");
- panelElement.className = "panel";
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--lotOccupancyId'
+ ) as HTMLInputElement
+ ).value = lotOccupancyId
- for (const [index, occupant] of pastOccupantSearchResults.entries()) {
- const panelBlockElement = document.createElement("a");
- panelBlockElement.className = "panel-block is-block";
- panelBlockElement.dataset.index = index.toString();
+ const lotOccupantTypeSelectElement = modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--lotOccupantTypeId'
+ ) as HTMLSelectElement
- panelBlockElement.innerHTML =
- "" +
- cityssm.escapeHTML(occupant.occupantName || "") +
- " " +
- " " +
- '' +
- ('
' +
- cityssm.escapeHTML(occupant.occupantAddress1 || "") +
- " " +
- (occupant.occupantAddress2
- ? cityssm.escapeHTML(occupant.occupantAddress2) + " "
- : "") +
- cityssm.escapeHTML(occupant.occupantCity || "") +
- ", " +
- cityssm.escapeHTML(occupant.occupantProvince || "") +
- " " +
- cityssm.escapeHTML(occupant.occupantPostalCode || "") +
- "
") +
- ('
' +
- (occupant.occupantPhoneNumber
- ? cityssm.escapeHTML(occupant.occupantPhoneNumber) + " "
- : "") +
- cityssm.escapeHTML(occupant.occupantEmailAddress || "") +
- " " +
- "
") +
- "
";
+ const lotOccupantTypeCopySelectElement = modalElement.querySelector(
+ '#lotOccupancyOccupantCopy--lotOccupantTypeId'
+ ) as HTMLSelectElement
- panelBlockElement.addEventListener("click", addOccupantFromCopy);
+ for (const lotOccupantType of exports.lotOccupantTypes as recordTypes.LotOccupantType[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = lotOccupantType.lotOccupantTypeId.toString()
+ optionElement.textContent = lotOccupantType.lotOccupantType
- panelElement.append(panelBlockElement);
- }
+ lotOccupantTypeSelectElement.append(optionElement)
- searchResultsElement.innerHTML = "";
- searchResultsElement.append(panelElement);
- }
- );
- };
+ lotOccupantTypeCopySelectElement.append(
+ optionElement.cloneNode(true)
+ )
+ }
- cityssm.openHtmlModal("lotOccupancy-addOccupant", {
- onshow: (modalElement) => {
- los.populateAliases(modalElement);
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--occupantCity'
+ ) as HTMLInputElement
+ ).value = exports.occupantCityDefault
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantAdd--lotOccupancyId"
- ) as HTMLInputElement
- ).value = lotOccupancyId;
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--occupantProvince'
+ ) as HTMLInputElement
+ ).value = exports.occupantProvinceDefault
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ bulmaJS.toggleHtmlClipped()
+ bulmaJS.init(modalElement)
- const lotOccupantTypeSelectElement = modalElement.querySelector(
- "#lotOccupancyOccupantAdd--lotOccupantTypeId"
- ) as HTMLSelectElement;
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--lotOccupantTypeId'
+ ) as HTMLInputElement
+ ).focus()
- const lotOccupantTypeCopySelectElement = modalElement.querySelector(
- "#lotOccupancyOccupantCopy--lotOccupantTypeId"
- ) as HTMLSelectElement;
+ addFormElement = modalElement.querySelector(
+ '#form--lotOccupancyOccupantAdd'
+ ) as HTMLFormElement
+ addFormElement.addEventListener('submit', addOccupantFromForm)
- for (const lotOccupantType of exports.lotOccupantTypes as recordTypes.LotOccupantType[]) {
- const optionElement = document.createElement("option");
- optionElement.value = lotOccupantType.lotOccupantTypeId.toString();
- optionElement.textContent = lotOccupantType.lotOccupantType;
+ searchResultsElement = modalElement.querySelector(
+ '#lotOccupancyOccupantCopy--searchResults'
+ ) as HTMLElement
- lotOccupantTypeSelectElement.append(optionElement);
+ searchFormElement = modalElement.querySelector(
+ '#form--lotOccupancyOccupantCopy'
+ ) as HTMLFormElement
+ searchFormElement.addEventListener('submit', (formEvent) => {
+ formEvent.preventDefault()
+ })
- lotOccupantTypeCopySelectElement.append(optionElement.cloneNode(true));
- }
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantCopy--searchFilter'
+ ) as HTMLInputElement
+ ).addEventListener('change', searchOccupants)
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantAdd--occupantCity"
- ) as HTMLInputElement
- ).value = exports.occupantCityDefault;
+ addCloseModalFunction = closeModalFunction
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ })
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantAdd--occupantProvince"
- ) as HTMLInputElement
- ).value = exports.occupantProvinceDefault;
- },
- onshown: (modalElement, closeModalFunction) => {
- bulmaJS.toggleHtmlClipped();
- bulmaJS.init(modalElement);
-
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantAdd--lotOccupantTypeId"
- ) as HTMLInputElement
- ).focus();
-
- addFormElement = modalElement.querySelector(
- "#form--lotOccupancyOccupantAdd"
- ) as HTMLFormElement;
- addFormElement.addEventListener("submit", addOccupantFromForm);
-
- searchResultsElement = modalElement.querySelector(
- "#lotOccupancyOccupantCopy--searchResults"
- ) as HTMLElement;
-
- searchFormElement = modalElement.querySelector(
- "#form--lotOccupancyOccupantCopy"
- ) as HTMLFormElement;
- searchFormElement.addEventListener("submit", (formEvent) => {
- formEvent.preventDefault();
- });
-
- (
- modalElement.querySelector(
- "#lotOccupancyOccupantCopy--searchFilter"
- ) as HTMLInputElement
- ).addEventListener("change", searchOccupants);
-
- addCloseModalFunction = closeModalFunction;
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
- }
- });
- });
-
- renderLotOccupancyOccupants();
+ renderLotOccupancyOccupants()
}
diff --git a/public-typescript/lotOccupancySearch.js b/public-typescript/lotOccupancySearch.js
index 3f8646ed..0e9da8e6 100644
--- a/public-typescript/lotOccupancySearch.js
+++ b/public-typescript/lotOccupancySearch.js
@@ -3,10 +3,10 @@
Object.defineProperty(exports, "__esModule", { value: true });
(() => {
const los = exports.los;
- const searchFilterFormElement = document.querySelector("#form--searchFilters");
- const searchResultsContainerElement = document.querySelector("#container--searchResults");
- const limit = Number.parseInt(document.querySelector("#searchFilter--limit").value, 10);
- const offsetElement = document.querySelector("#searchFilter--offset");
+ const searchFilterFormElement = document.querySelector('#form--searchFilters');
+ const searchResultsContainerElement = document.querySelector('#container--searchResults');
+ const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10);
+ const offsetElement = document.querySelector('#searchFilter--offset');
function renderLotOccupancies(responseJSON) {
var _a, _b;
if (responseJSON.lotOccupancies.length === 0) {
@@ -17,12 +17,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
`;
return;
}
- const resultsTbodyElement = document.createElement("tbody");
+ const resultsTbodyElement = document.createElement('tbody');
const nowDateString = cityssm.dateToString(new Date());
for (const lotOccupancy of responseJSON.lotOccupancies) {
- let occupancyTimeHTML = "";
+ let occupancyTimeHTML = '';
if (lotOccupancy.occupancyStartDateString <= nowDateString &&
- (lotOccupancy.occupancyEndDateString === "" ||
+ (lotOccupancy.occupancyEndDateString === '' ||
lotOccupancy.occupancyEndDateString >= nowDateString)) {
occupancyTimeHTML = `
@@ -38,63 +38,65 @@ Object.defineProperty(exports, "__esModule", { value: true });
`;
}
- let occupantsHTML = "";
+ let occupantsHTML = '';
for (const occupant of lotOccupancy.lotOccupancyOccupants) {
occupantsHTML +=
'' +
(' ') +
- cityssm.escapeHTML(occupant.occupantName || "") +
- " ";
+ cityssm.escapeHTML(occupant.occupantName || '') +
+ ' ';
}
- resultsTbodyElement.insertAdjacentHTML("beforeend", "" +
- ('' + occupancyTimeHTML + " ") +
- ("" +
+ resultsTbodyElement.insertAdjacentHTML('beforeend', ' ' +
+ ('' + occupancyTimeHTML + ' ') +
+ ('' +
'' +
cityssm.escapeHTML(lotOccupancy.occupancyType) +
- " " +
- " ") +
- ("" +
+ '' +
+ ' ') +
+ ('' +
(lotOccupancy.lotName
? '' +
cityssm.escapeHTML(lotOccupancy.lotName) +
- " "
- : '(No ' + los.escapedAliases.Lot + ") ") +
- " " +
+ ''
+ : '(No ' +
+ los.escapedAliases.Lot +
+ ') ') +
+ ' ' +
('' +
- cityssm.escapeHTML(lotOccupancy.mapName || "") +
- " ") +
- " ") +
- ("" + lotOccupancy.occupancyStartDateString + " ") +
- ("" +
+ cityssm.escapeHTML(lotOccupancy.mapName || '') +
+ '') +
+ ' ') +
+ ('' + lotOccupancy.occupancyStartDateString + ' ') +
+ ('' +
(lotOccupancy.occupancyEndDate
? lotOccupancy.occupancyEndDateString
: '(No End Date) ') +
- " ") +
- ("" + occupantsHTML + " ") +
- "" +
+ ' ') +
+ ('' + occupantsHTML + ' ') +
+ '' +
(lotOccupancy.printEJS
? '' +
' ' +
- " "
- : "") +
- " " +
- " ");
+ ''
+ : '') +
+ '' +
+ '');
}
searchResultsContainerElement.innerHTML = `