client side javascript null checks

deepsource-autofix-76c6eb20
Dan Gowans 2022-11-07 14:27:55 -05:00
parent ff78cdef12
commit b488d3a6df
60 changed files with 2653 additions and 2611 deletions

View File

@ -5,7 +5,7 @@
}, },
"parser": "@typescript-eslint/parser", "parser": "@typescript-eslint/parser",
"parserOptions": { "parserOptions": {
"project": ["./tsconfig.json", "./public-typescript/tsconfig.json"], "project": ["./tsconfig.json", "./tsconfig.client.json"],
"ecmaVersion": 2020, "ecmaVersion": 2020,
"sourceType": "module" "sourceType": "module"
}, },

View File

@ -1,20 +1,23 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los;
const doCleanup = () => { const doCleanup = () => {
cityssm.postJSON(urlPrefix + "/admin/doCleanupDatabase", {}, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doCleanupDatabase", {}, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
bulmaJS.alert({ bulmaJS.alert({
title: "Database Cleaned Up Successfully", title: "Database Cleaned Up Successfully",
message: responseJSON.inactivedRecordCount + " records inactivated, " + responseJSON.purgedRecordCount + " permanently deleted.", message: responseJSON.inactivedRecordCount +
" records inactivated, " +
responseJSON.purgedRecordCount +
" permanently deleted.",
contextualColorName: "success" contextualColorName: "success"
}); });
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Cleaning Database", title: "Error Cleaning Database",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }

View File

@ -1,4 +1,6 @@
/* eslint-disable unicorn/prefer-module */ /* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
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";
@ -8,11 +10,11 @@ declare const cityssm: cityssmGlobal;
declare const bulmaJS: BulmaJS; declare const bulmaJS: BulmaJS;
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los as globalTypes.LOS;
const doCleanup = () => { const doCleanup = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doCleanupDatabase", los.urlPrefix + "/admin/doCleanupDatabase",
{}, {},
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -23,13 +25,17 @@ declare const bulmaJS: BulmaJS;
if (responseJSON.success) { if (responseJSON.success) {
bulmaJS.alert({ bulmaJS.alert({
title: "Database Cleaned Up Successfully", title: "Database Cleaned Up Successfully",
message: responseJSON.inactivedRecordCount + " records inactivated, " + responseJSON.purgedRecordCount + " permanently deleted.", message:
responseJSON.inactivedRecordCount +
" records inactivated, " +
responseJSON.purgedRecordCount +
" permanently deleted.",
contextualColorName: "success" contextualColorName: "success"
}); });
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Cleaning Database", title: "Error Cleaning Database",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -37,14 +43,17 @@ declare const bulmaJS: BulmaJS;
); );
}; };
document.querySelector("#button--cleanupDatabase").addEventListener("click", () => { (document.querySelector("#button--cleanupDatabase") as HTMLButtonElement).addEventListener(
bulmaJS.confirm({ "click",
title: "Cleanup Database", () => {
message: "Are you sure you want to cleanup up the database?", bulmaJS.confirm({
okButton: { title: "Cleanup Database",
text: "Yes, Cleanup Database", message: "Are you sure you want to cleanup up the database?",
callbackFunction: doCleanup okButton: {
} text: "Yes, Cleanup Database",
}); callbackFunction: doCleanup
}); }
});
}
);
})(); })();

View File

@ -2,7 +2,6 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const feeCategoriesContainerElement = document.querySelector("#container--feeCategories"); const feeCategoriesContainerElement = document.querySelector("#container--feeCategories");
let feeCategories = exports.feeCategories; let feeCategories = exports.feeCategories;
delete exports.feeCategories; delete exports.feeCategories;
@ -25,7 +24,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<div class="columns">' + '<div class="columns">' +
('<div class="column">' + ('<div class="column">' +
'<h2 class="title is-4">' + '<h2 class="title is-4">' +
cityssm.escapeHTML(feeCategory.feeCategory) + cityssm.escapeHTML(feeCategory.feeCategory || "") +
"</h2>" + "</h2>" +
"</div>") + "</div>") +
('<div class="column is-narrow">' + ('<div class="column is-narrow">' +
@ -71,7 +70,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
feeCategoryContainerElement.insertAdjacentHTML("beforeend", '<div class="panel-block is-block">' + feeCategoryContainerElement.insertAdjacentHTML("beforeend", '<div class="panel-block is-block">' +
'<div class="message is-info">' + '<div class="message is-info">' +
'<p class="message-body">There are no fees in the "' + '<p class="message-body">There are no fees in the "' +
cityssm.escapeHTML(feeCategory.feeCategory) + cityssm.escapeHTML(feeCategory.feeCategory || "") +
'" category.</p>' + '" category.</p>' +
"</div>" + "</div>" +
"</div>"); "</div>");
@ -86,10 +85,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
('<div class="column is-half">' + ('<div class="column is-half">' +
"<p>" + "<p>" +
'<a class="has-text-weight-bold" href="#">' + '<a class="has-text-weight-bold" href="#">' +
cityssm.escapeHTML(fee.feeName) + cityssm.escapeHTML(fee.feeName || "") +
"</a><br />" + "</a><br />" +
"<small>" + "<small>" +
cityssm.escapeHTML(fee.feeDescription).replace(/\n/g, "<br />") + cityssm.escapeHTML(fee.feeDescription || "").replace(/\n/g, "<br />") +
"</small>" + "</small>" +
"</p>" + "</p>" +
'<p class="tags">' + '<p class="tags">' +
@ -98,14 +97,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
? ' <span class="tag has-tooltip-bottom" data-tooltip="' + ? ' <span class="tag has-tooltip-bottom" data-tooltip="' +
cityssm.escapeHTML(exports.aliases.occupancy) + cityssm.escapeHTML(exports.aliases.occupancy) +
' Type Filter">' + ' Type Filter">' +
cityssm.escapeHTML(fee.occupancyType) + cityssm.escapeHTML(fee.occupancyType || "") +
"</span>" "</span>"
: "") + : "") +
(fee.lotTypeId (fee.lotTypeId
? ' <span class="tag has-tooltip-bottom" data-tooltip="' + ? ' <span class="tag has-tooltip-bottom" data-tooltip="' +
cityssm.escapeHTML(exports.aliases.lot) + cityssm.escapeHTML(exports.aliases.lot) +
' Type Filter">' + ' Type Filter">' +
cityssm.escapeHTML(fee.lotType) + cityssm.escapeHTML(fee.lotType || "") +
"</span>" "</span>"
: "") + : "") +
"</p>" + "</p>" +
@ -130,7 +129,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>") + "</div>") +
('<div class="column has-text-centered">' + ('<div class="column has-text-centered">' +
(fee.includeQuantity (fee.includeQuantity
? cityssm.escapeHTML(fee.quantityUnit) + ? cityssm.escapeHTML(fee.quantityUnit || "") +
"<br />" + "<br />" +
"<small>Quantity</small>" "<small>Quantity</small>"
: "") + : "") +
@ -153,32 +152,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>") + "</div>") +
"</div>"; "</div>";
panelBlockElement.querySelector("a").addEventListener("click", openEditFee); panelBlockElement.querySelector("a").addEventListener("click", openEditFee);
panelBlockElement panelBlockElement.querySelector(".button--moveFeeUp").addEventListener("click", moveFeeUp);
.querySelector(".button--moveFeeUp") panelBlockElement.querySelector(".button--moveFeeDown").addEventListener("click", moveFeeDown);
.addEventListener("click", moveFeeUp);
panelBlockElement
.querySelector(".button--moveFeeDown")
.addEventListener("click", moveFeeDown);
feeCategoryContainerElement.append(panelBlockElement); feeCategoryContainerElement.append(panelBlockElement);
} }
} }
if (feeCategory.fees.length === 0) { if (feeCategory.fees.length === 0) {
feeCategoryContainerElement feeCategoryContainerElement.querySelector(".button--deleteFeeCategory").addEventListener("click", confirmDeleteFeeCategory);
.querySelector(".button--deleteFeeCategory")
.addEventListener("click", confirmDeleteFeeCategory);
} }
feeCategoryContainerElement feeCategoryContainerElement.querySelector(".button--editFeeCategory").addEventListener("click", openEditFeeCategory);
.querySelector(".button--editFeeCategory") feeCategoryContainerElement.querySelector(".button--addFee").addEventListener("click", openAddFee);
.addEventListener("click", openEditFeeCategory); feeCategoryContainerElement.querySelector(".button--moveFeeCategoryUp").addEventListener("click", moveFeeCategoryUp);
feeCategoryContainerElement feeCategoryContainerElement.querySelector(".button--moveFeeCategoryDown").addEventListener("click", moveFeeCategoryDown);
.querySelector(".button--addFee")
.addEventListener("click", openAddFee);
feeCategoryContainerElement
.querySelector(".button--moveFeeCategoryUp")
.addEventListener("click", moveFeeCategoryUp);
feeCategoryContainerElement
.querySelector(".button--moveFeeCategoryDown")
.addEventListener("click", moveFeeCategoryDown);
feeCategoriesContainerElement.append(feeCategoryContainerElement); feeCategoriesContainerElement.append(feeCategoryContainerElement);
} }
}; };
@ -186,7 +171,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCloseModalFunction; let addCloseModalFunction;
const doAddFeeCategory = (submitEvent) => { const doAddFeeCategory = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doAddFeeCategory", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddFeeCategory", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories;
addCloseModalFunction(); addCloseModalFunction();
@ -195,7 +180,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Creating Fee Category", title: "Error Creating Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -206,7 +191,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
modalElement.querySelector("#feeCategoryAdd--feeCategory").focus(); modalElement.querySelector("#feeCategoryAdd--feeCategory").focus();
addCloseModalFunction = closeModalFunction; addCloseModalFunction = closeModalFunction;
modalElement.querySelector("form").addEventListener("submit", doAddFeeCategory); modalElement
.querySelector("form")
.addEventListener("submit", doAddFeeCategory);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -221,7 +208,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
const doUpdateFeeCategory = (submitEvent) => { const doUpdateFeeCategory = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateFeeCategory", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateFeeCategory", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories;
editCloseModalFunction(); editCloseModalFunction();
@ -230,7 +217,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Fee Category", title: "Error Updating Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -255,7 +242,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const confirmDeleteFeeCategory = (clickEvent) => { const 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);
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteFeeCategory", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteFeeCategory", {
feeCategoryId feeCategoryId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
@ -265,7 +252,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Fee Category", title: "Error Updating Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -283,7 +270,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}; };
const moveFeeCategoryUp = (clickEvent) => { const moveFeeCategoryUp = (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);
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeCategoryUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveFeeCategoryUp", {
feeCategoryId, feeCategoryId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -294,7 +281,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Fee Category", title: "Error Moving Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -302,7 +289,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}; };
const moveFeeCategoryDown = (clickEvent) => { const moveFeeCategoryDown = (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);
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeCategoryDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveFeeCategoryDown", {
feeCategoryId, feeCategoryId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -313,7 +300,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Fee Category", title: "Error Moving Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -324,7 +311,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCloseModalFunction; let addCloseModalFunction;
const doAddFee = (submitEvent) => { const doAddFee = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doAddFee", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddFee", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories;
addCloseModalFunction(); addCloseModalFunction();
@ -333,7 +320,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding Fee", title: "Error Adding Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -373,9 +360,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
addCloseModalFunction = closeModalFunction; addCloseModalFunction = closeModalFunction;
modalElement.querySelector("form").addEventListener("submit", doAddFee); modalElement.querySelector("form").addEventListener("submit", doAddFee);
modalElement.querySelector("#feeAdd--feeName").focus(); modalElement.querySelector("#feeAdd--feeName").focus();
modalElement modalElement.querySelector("#feeAdd--feeFunction").addEventListener("change", () => {
.querySelector("#feeAdd--feeFunction")
.addEventListener("change", () => {
const feeAmountElement = modalElement.querySelector("#feeAdd--feeAmount"); const feeAmountElement = modalElement.querySelector("#feeAdd--feeAmount");
const feeFunctionElement = modalElement.querySelector("#feeAdd--feeFunction"); const feeFunctionElement = modalElement.querySelector("#feeAdd--feeFunction");
if (feeFunctionElement.value === "") { if (feeFunctionElement.value === "") {
@ -389,9 +374,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
feeAmountElement.disabled = true; feeAmountElement.disabled = true;
} }
}); });
modalElement modalElement.querySelector("#feeAdd--taxPercentage").addEventListener("keyup", () => {
.querySelector("#feeAdd--taxPercentage")
.addEventListener("keyup", () => {
const taxAmountElement = modalElement.querySelector("#feeAdd--taxAmount"); const taxAmountElement = modalElement.querySelector("#feeAdd--taxAmount");
const taxPercentageElement = modalElement.querySelector("#feeAdd--taxPercentage"); const taxPercentageElement = modalElement.querySelector("#feeAdd--taxPercentage");
if (taxPercentageElement.value === "") { if (taxPercentageElement.value === "") {
@ -405,9 +388,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
taxAmountElement.disabled = true; taxAmountElement.disabled = true;
} }
}); });
modalElement modalElement.querySelector("#feeAdd--includeQuantity").addEventListener("change", () => {
.querySelector("#feeAdd--includeQuantity")
.addEventListener("change", () => {
modalElement.querySelector("#feeAdd--quantityUnit").disabled = modalElement.querySelector("#feeAdd--quantityUnit").disabled =
modalElement.querySelector("#feeAdd--includeQuantity").value === ""; modalElement.querySelector("#feeAdd--includeQuantity").value === "";
}); });
@ -433,7 +414,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editModalElement; let editModalElement;
const doUpdateFee = (submitEvent) => { const doUpdateFee = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateFee", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateFee", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories;
editCloseModalFunction(); editCloseModalFunction();
@ -442,7 +423,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Fee", title: "Error Updating Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -451,7 +432,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const confirmDeleteFee = (clickEvent) => { const confirmDeleteFee = (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteFee", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteFee", {
feeId feeId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
@ -462,7 +443,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Fee", title: "Error Deleting Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -551,9 +532,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
modalElement.querySelector("#feeEdit--feeAmount").value = modalElement.querySelector("#feeEdit--feeAmount").value =
fee.feeAmount ? fee.feeAmount.toFixed(2) : ""; fee.feeAmount ? fee.feeAmount.toFixed(2) : "";
modalElement modalElement.querySelector("#feeEdit--feeFunction").addEventListener("change", toggleFeeFields);
.querySelector("#feeEdit--feeFunction")
.addEventListener("change", toggleFeeFields);
toggleFeeFields(); toggleFeeFields();
modalElement.querySelector("#feeEdit--taxAmount").value = modalElement.querySelector("#feeEdit--taxAmount").value =
fee.taxAmount ? fee.taxAmount.toFixed(2) : ""; fee.taxAmount ? fee.taxAmount.toFixed(2) : "";
@ -579,9 +558,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
modalElement.querySelector("form").addEventListener("submit", doUpdateFee); modalElement.querySelector("form").addEventListener("submit", doUpdateFee);
bulmaJS.init(modalElement); bulmaJS.init(modalElement);
modalElement modalElement.querySelector(".button--deleteFee").addEventListener("click", confirmDeleteFee);
.querySelector(".button--deleteFee")
.addEventListener("click", confirmDeleteFee);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -591,7 +568,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveFeeUp = (clickEvent) => { const moveFeeUp = (clickEvent) => {
const feeContainerElement = clickEvent.currentTarget.closest(".container--fee"); const feeContainerElement = clickEvent.currentTarget.closest(".container--fee");
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10); const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10);
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveFeeUp", {
feeId, feeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -602,7 +579,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Fee", title: "Error Moving Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -611,7 +588,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveFeeDown = (clickEvent) => { const moveFeeDown = (clickEvent) => {
const feeContainerElement = clickEvent.currentTarget.closest(".container--fee"); const feeContainerElement = clickEvent.currentTarget.closest(".container--fee");
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10); const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10);
cityssm.postJSON(urlPrefix + "/admin/doMoveFeeDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveFeeDown", {
feeId, feeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -622,7 +599,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Fee", title: "Error Moving Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }

View File

@ -1,4 +1,4 @@
/* eslint-disable unicorn/prefer-module */ /* 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 * as recordTypes from "../types/recordTypes"; import type * as recordTypes from "../types/recordTypes";
@ -13,8 +13,6 @@ declare const bulmaJS: BulmaJS;
(() => { (() => {
const los = exports.los as globalTypes.LOS; const los = exports.los as globalTypes.LOS;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const feeCategoriesContainerElement = document.querySelector( const feeCategoriesContainerElement = document.querySelector(
"#container--feeCategories" "#container--feeCategories"
) as HTMLElement; ) as HTMLElement;
@ -40,19 +38,19 @@ declare const bulmaJS: BulmaJS;
feeCategoryContainerElement.className = "panel container--feeCategory"; feeCategoryContainerElement.className = "panel container--feeCategory";
feeCategoryContainerElement.dataset.feeCategoryId = feeCategoryContainerElement.dataset.feeCategoryId =
feeCategory.feeCategoryId.toString(); feeCategory.feeCategoryId!.toString();
feeCategoryContainerElement.innerHTML = feeCategoryContainerElement.innerHTML =
'<div class="panel-heading">' + '<div class="panel-heading">' +
'<div class="columns">' + '<div class="columns">' +
('<div class="column">' + ('<div class="column">' +
'<h2 class="title is-4">' + '<h2 class="title is-4">' +
cityssm.escapeHTML(feeCategory.feeCategory) + cityssm.escapeHTML(feeCategory.feeCategory || "") +
"</h2>" + "</h2>" +
"</div>") + "</div>") +
('<div class="column is-narrow">' + ('<div class="column is-narrow">' +
'<div class="field is-grouped is-justify-content-end">' + '<div class="field is-grouped is-justify-content-end">' +
(feeCategory.fees.length === 0 (feeCategory.fees!.length === 0
? '<div class="control">' + ? '<div class="control">' +
'<button class="button is-small is-danger button--deleteFeeCategory" type="button">' + '<button class="button is-small is-danger button--deleteFeeCategory" type="button">' +
'<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>' + '<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>' +
@ -90,32 +88,32 @@ declare const bulmaJS: BulmaJS;
"</div>" + "</div>" +
"</div>"; "</div>";
if (feeCategory.fees.length === 0) { if (feeCategory.fees!.length === 0) {
feeCategoryContainerElement.insertAdjacentHTML( feeCategoryContainerElement.insertAdjacentHTML(
"beforeend", "beforeend",
'<div class="panel-block is-block">' + '<div class="panel-block is-block">' +
'<div class="message is-info">' + '<div class="message is-info">' +
'<p class="message-body">There are no fees in the "' + '<p class="message-body">There are no fees in the "' +
cityssm.escapeHTML(feeCategory.feeCategory) + cityssm.escapeHTML(feeCategory.feeCategory || "") +
'" category.</p>' + '" category.</p>' +
"</div>" + "</div>" +
"</div>" "</div>"
); );
} else { } else {
for (const fee of feeCategory.fees) { for (const fee of feeCategory.fees!) {
const panelBlockElement = document.createElement("div"); const panelBlockElement = document.createElement("div");
panelBlockElement.className = "panel-block is-block container--fee"; panelBlockElement.className = "panel-block is-block container--fee";
panelBlockElement.dataset.feeId = fee.feeId.toString(); panelBlockElement.dataset.feeId = fee.feeId!.toString();
panelBlockElement.innerHTML = panelBlockElement.innerHTML =
'<div class="columns">' + '<div class="columns">' +
('<div class="column is-half">' + ('<div class="column is-half">' +
"<p>" + "<p>" +
'<a class="has-text-weight-bold" href="#">' + '<a class="has-text-weight-bold" href="#">' +
cityssm.escapeHTML(fee.feeName) + cityssm.escapeHTML(fee.feeName || "") +
"</a><br />" + "</a><br />" +
"<small>" + "<small>" +
cityssm.escapeHTML(fee.feeDescription).replace(/\n/g, "<br />") + cityssm.escapeHTML(fee.feeDescription || "").replace(/\n/g, "<br />") +
"</small>" + "</small>" +
"</p>" + "</p>" +
'<p class="tags">' + '<p class="tags">' +
@ -124,14 +122,14 @@ declare const bulmaJS: BulmaJS;
? ' <span class="tag has-tooltip-bottom" data-tooltip="' + ? ' <span class="tag has-tooltip-bottom" data-tooltip="' +
cityssm.escapeHTML(exports.aliases.occupancy) + cityssm.escapeHTML(exports.aliases.occupancy) +
' Type Filter">' + ' Type Filter">' +
cityssm.escapeHTML(fee.occupancyType) + cityssm.escapeHTML(fee.occupancyType || "") +
"</span>" "</span>"
: "") + : "") +
(fee.lotTypeId (fee.lotTypeId
? ' <span class="tag has-tooltip-bottom" data-tooltip="' + ? ' <span class="tag has-tooltip-bottom" data-tooltip="' +
cityssm.escapeHTML(exports.aliases.lot) + cityssm.escapeHTML(exports.aliases.lot) +
' Type Filter">' + ' Type Filter">' +
cityssm.escapeHTML(fee.lotType) + cityssm.escapeHTML(fee.lotType || "") +
"</span>" "</span>"
: "") + : "") +
"</p>" + "</p>" +
@ -144,19 +142,19 @@ declare const bulmaJS: BulmaJS;
"<br />" + "<br />" +
"<small>Fee Function</small>" "<small>Fee Function</small>"
: "$" + : "$" +
fee.feeAmount.toFixed(2) + fee.feeAmount!.toFixed(2) +
"<br />" + "<br />" +
"<small>Fee</small>") + "<small>Fee</small>") +
"</div>") + "</div>") +
('<div class="column has-text-centered">' + ('<div class="column has-text-centered">' +
(fee.taxPercentage (fee.taxPercentage
? fee.taxPercentage + "%" ? fee.taxPercentage + "%"
: "$" + fee.taxAmount.toFixed(2)) + : "$" + fee.taxAmount!.toFixed(2)) +
"<br /><small>Tax</small>" + "<br /><small>Tax</small>" +
"</div>") + "</div>") +
('<div class="column has-text-centered">' + ('<div class="column has-text-centered">' +
(fee.includeQuantity (fee.includeQuantity
? cityssm.escapeHTML(fee.quantityUnit) + ? cityssm.escapeHTML(fee.quantityUnit || "") +
"<br />" + "<br />" +
"<small>Quantity</small>" "<small>Quantity</small>"
: "") + : "") +
@ -179,40 +177,49 @@ declare const bulmaJS: BulmaJS;
"</div>") + "</div>") +
"</div>"; "</div>";
panelBlockElement.querySelector("a").addEventListener("click", openEditFee); panelBlockElement.querySelector("a")!.addEventListener("click", openEditFee);
panelBlockElement (
.querySelector(".button--moveFeeUp") panelBlockElement.querySelector(".button--moveFeeUp") as HTMLButtonElement
.addEventListener("click", moveFeeUp); ).addEventListener("click", moveFeeUp);
panelBlockElement
.querySelector(".button--moveFeeDown") (
.addEventListener("click", moveFeeDown); panelBlockElement.querySelector(".button--moveFeeDown") as HTMLButtonElement
).addEventListener("click", moveFeeDown);
feeCategoryContainerElement.append(panelBlockElement); feeCategoryContainerElement.append(panelBlockElement);
} }
} }
if (feeCategory.fees.length === 0) { if (feeCategory.fees!.length === 0) {
feeCategoryContainerElement (
.querySelector(".button--deleteFeeCategory") feeCategoryContainerElement.querySelector(
.addEventListener("click", confirmDeleteFeeCategory); ".button--deleteFeeCategory"
) as HTMLButtonElement
).addEventListener("click", confirmDeleteFeeCategory);
} }
feeCategoryContainerElement (
.querySelector(".button--editFeeCategory") feeCategoryContainerElement.querySelector(
.addEventListener("click", openEditFeeCategory); ".button--editFeeCategory"
) as HTMLButtonElement
).addEventListener("click", openEditFeeCategory);
feeCategoryContainerElement (
.querySelector(".button--addFee") feeCategoryContainerElement.querySelector(".button--addFee") as HTMLButtonElement
.addEventListener("click", openAddFee); ).addEventListener("click", openAddFee);
feeCategoryContainerElement (
.querySelector(".button--moveFeeCategoryUp") feeCategoryContainerElement.querySelector(
.addEventListener("click", moveFeeCategoryUp); ".button--moveFeeCategoryUp"
) as HTMLButtonElement
).addEventListener("click", moveFeeCategoryUp);
feeCategoryContainerElement (
.querySelector(".button--moveFeeCategoryDown") feeCategoryContainerElement.querySelector(
.addEventListener("click", moveFeeCategoryDown); ".button--moveFeeCategoryDown"
) as HTMLButtonElement
).addEventListener("click", moveFeeCategoryDown);
feeCategoriesContainerElement.append(feeCategoryContainerElement); feeCategoriesContainerElement.append(feeCategoryContainerElement);
} }
@ -222,50 +229,57 @@ declare const bulmaJS: BulmaJS;
* Fee Categories * Fee Categories
*/ */
document.querySelector("#button--addFeeCategory").addEventListener("click", () => { (document.querySelector("#button--addFeeCategory") as HTMLButtonElement).addEventListener(
let addCloseModalFunction: () => void; "click",
() => {
let addCloseModalFunction: () => void;
const doAddFeeCategory = (submitEvent: SubmitEvent) => { const doAddFeeCategory = (submitEvent: SubmitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddFeeCategory", los.urlPrefix + "/admin/doAddFeeCategory",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
errorMessage?: string; errorMessage?: string;
feeCategories: recordTypes.FeeCategory[]; feeCategories: recordTypes.FeeCategory[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories;
addCloseModalFunction(); addCloseModalFunction();
renderFeeCategories(); renderFeeCategories();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Creating Fee Category", title: "Error Creating Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" 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();
} }
); });
}; }
);
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();
}
});
});
const openEditFeeCategory = (clickEvent: Event) => { const openEditFeeCategory = (clickEvent: Event) => {
const feeCategoryId = Number.parseInt( const feeCategoryId = Number.parseInt(
@ -273,13 +287,13 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--feeCategory" ".container--feeCategory"
) as HTMLElement ) as HTMLElement
).dataset.feeCategoryId, ).dataset.feeCategoryId!,
10 10
); );
const feeCategory = feeCategories.find((currentFeeCategory) => { const feeCategory = feeCategories.find((currentFeeCategory) => {
return currentFeeCategory.feeCategoryId === feeCategoryId; return currentFeeCategory.feeCategoryId === feeCategoryId;
}); })!;
let editCloseModalFunction: () => void; let editCloseModalFunction: () => void;
@ -287,7 +301,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateFeeCategory", los.urlPrefix + "/admin/doUpdateFeeCategory",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -301,7 +315,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Fee Category", title: "Error Updating Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -315,17 +329,17 @@ declare const bulmaJS: BulmaJS;
modalElement.querySelector( modalElement.querySelector(
"#feeCategoryEdit--feeCategoryId" "#feeCategoryEdit--feeCategoryId"
) as HTMLInputElement ) as HTMLInputElement
).value = feeCategory.feeCategoryId.toString(); ).value = feeCategory.feeCategoryId!.toString();
( (
modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement
).value = feeCategory.feeCategory; ).value = feeCategory.feeCategory!;
}, },
onshown: (modalElement, closeModalFunction) => { onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
modalElement.querySelector("form").addEventListener("submit", doUpdateFeeCategory); modalElement.querySelector("form")!.addEventListener("submit", doUpdateFeeCategory);
( (
modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement
@ -343,13 +357,13 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--feeCategory" ".container--feeCategory"
) as HTMLElement ) as HTMLElement
).dataset.feeCategoryId, ).dataset.feeCategoryId!,
10 10
); );
const doDelete = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteFeeCategory", los.urlPrefix + "/admin/doDeleteFeeCategory",
{ {
feeCategoryId feeCategoryId
}, },
@ -359,12 +373,12 @@ declare const bulmaJS: BulmaJS;
feeCategories?: recordTypes.FeeCategory[]; feeCategories?: recordTypes.FeeCategory[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories!;
renderFeeCategories(); renderFeeCategories();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Fee Category", title: "Error Updating Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -389,12 +403,12 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--feeCategory" ".container--feeCategory"
) as HTMLElement ) as HTMLElement
).dataset.feeCategoryId, ).dataset.feeCategoryId!,
10 10
); );
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveFeeCategoryUp", los.urlPrefix + "/admin/doMoveFeeCategoryUp",
{ {
feeCategoryId, feeCategoryId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -405,12 +419,12 @@ declare const bulmaJS: BulmaJS;
feeCategories?: recordTypes.FeeCategory[]; feeCategories?: recordTypes.FeeCategory[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories!;
renderFeeCategories(); renderFeeCategories();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Fee Category", title: "Error Moving Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -424,12 +438,12 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--feeCategory" ".container--feeCategory"
) as HTMLElement ) as HTMLElement
).dataset.feeCategoryId, ).dataset.feeCategoryId!,
10 10
); );
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveFeeCategoryDown", los.urlPrefix + "/admin/doMoveFeeCategoryDown",
{ {
feeCategoryId, feeCategoryId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -440,12 +454,12 @@ declare const bulmaJS: BulmaJS;
feeCategories?: recordTypes.FeeCategory[]; feeCategories?: recordTypes.FeeCategory[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories!;
renderFeeCategories(); renderFeeCategories();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Fee Category", title: "Error Moving Fee Category",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -463,7 +477,7 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--feeCategory" ".container--feeCategory"
) as HTMLElement ) as HTMLElement
).dataset.feeCategoryId, ).dataset.feeCategoryId!,
10 10
); );
@ -473,7 +487,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddFee", los.urlPrefix + "/admin/doAddFee",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -487,7 +501,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding Fee", title: "Error Adding Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -503,8 +517,8 @@ declare const bulmaJS: BulmaJS;
for (const feeCategory of feeCategories) { for (const feeCategory of feeCategories) {
const optionElement = document.createElement("option"); const optionElement = document.createElement("option");
optionElement.value = feeCategory.feeCategoryId.toString(); optionElement.value = feeCategory.feeCategoryId!.toString();
optionElement.textContent = feeCategory.feeCategory; optionElement.textContent = feeCategory.feeCategory!;
if (feeCategory.feeCategoryId === feeCategoryId) { if (feeCategory.feeCategoryId === feeCategoryId) {
optionElement.selected = true; optionElement.selected = true;
@ -546,68 +560,68 @@ declare const bulmaJS: BulmaJS;
addCloseModalFunction = closeModalFunction; addCloseModalFunction = closeModalFunction;
modalElement.querySelector("form").addEventListener("submit", doAddFee); modalElement.querySelector("form")!.addEventListener("submit", doAddFee);
(modalElement.querySelector("#feeAdd--feeName") as HTMLInputElement).focus(); (modalElement.querySelector("#feeAdd--feeName") as HTMLInputElement).focus();
modalElement (
.querySelector("#feeAdd--feeFunction") modalElement.querySelector("#feeAdd--feeFunction") as HTMLInputElement
.addEventListener("change", () => { ).addEventListener("change", () => {
const feeAmountElement = modalElement.querySelector( const feeAmountElement = modalElement.querySelector(
"#feeAdd--feeAmount" "#feeAdd--feeAmount"
) as HTMLInputElement; ) as HTMLInputElement;
const feeFunctionElement = modalElement.querySelector( const feeFunctionElement = modalElement.querySelector(
"#feeAdd--feeFunction" "#feeAdd--feeFunction"
) as HTMLSelectElement; ) as HTMLSelectElement;
if (feeFunctionElement.value === "") { if (feeFunctionElement.value === "") {
feeFunctionElement.closest(".select").classList.remove("is-success"); feeFunctionElement.closest(".select")!.classList.remove("is-success");
feeAmountElement.classList.add("is-success"); feeAmountElement.classList.add("is-success");
feeAmountElement.disabled = false; feeAmountElement.disabled = false;
} else { } else {
feeFunctionElement.closest(".select").classList.add("is-success"); feeFunctionElement.closest(".select")!.classList.add("is-success");
feeAmountElement.classList.remove("is-success"); feeAmountElement.classList.remove("is-success");
feeAmountElement.disabled = true; feeAmountElement.disabled = true;
} }
}); });
modalElement (
.querySelector("#feeAdd--taxPercentage") modalElement.querySelector("#feeAdd--taxPercentage") as HTMLInputElement
.addEventListener("keyup", () => { ).addEventListener("keyup", () => {
const taxAmountElement = modalElement.querySelector( const taxAmountElement = modalElement.querySelector(
"#feeAdd--taxAmount" "#feeAdd--taxAmount"
) as HTMLInputElement; ) as HTMLInputElement;
const taxPercentageElement = modalElement.querySelector( const taxPercentageElement = modalElement.querySelector(
"#feeAdd--taxPercentage" "#feeAdd--taxPercentage"
) as HTMLInputElement; ) as HTMLInputElement;
if (taxPercentageElement.value === "") { if (taxPercentageElement.value === "") {
taxPercentageElement.classList.remove("is-success"); taxPercentageElement.classList.remove("is-success");
taxAmountElement.classList.add("is-success"); taxAmountElement.classList.add("is-success");
taxAmountElement.disabled = false; taxAmountElement.disabled = false;
} else { } else {
taxPercentageElement.classList.add("is-success"); taxPercentageElement.classList.add("is-success");
taxAmountElement.classList.remove("is-success"); taxAmountElement.classList.remove("is-success");
taxAmountElement.disabled = true; taxAmountElement.disabled = true;
} }
}); });
modalElement (
.querySelector("#feeAdd--includeQuantity") modalElement.querySelector("#feeAdd--includeQuantity") as HTMLSelectElement
.addEventListener("change", () => { ).addEventListener("change", () => {
(
modalElement.querySelector("#feeAdd--quantityUnit") as HTMLInputElement
).disabled =
( (
modalElement.querySelector("#feeAdd--quantityUnit") as HTMLInputElement modalElement.querySelector(
).disabled = "#feeAdd--includeQuantity"
( ) as HTMLSelectElement
modalElement.querySelector( ).value === "";
"#feeAdd--includeQuantity" });
) as HTMLSelectElement
).value === "";
});
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -622,19 +636,19 @@ declare const bulmaJS: BulmaJS;
".container--fee" ".container--fee"
) as HTMLElement; ) as HTMLElement;
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10); const feeId = Number.parseInt(feeContainerElement.dataset.feeId!, 10);
const feeCategoryId = Number.parseInt( const feeCategoryId = Number.parseInt(
(feeContainerElement.closest(".container--feeCategory") as HTMLElement).dataset (feeContainerElement.closest(".container--feeCategory") as HTMLElement).dataset
.feeCategoryId .feeCategoryId!
); );
const feeCategory = feeCategories.find((currentFeeCategory) => { const feeCategory = feeCategories.find((currentFeeCategory) => {
return currentFeeCategory.feeCategoryId === feeCategoryId; return currentFeeCategory.feeCategoryId === feeCategoryId;
}); })!;
const fee = feeCategory.fees.find((currentFee) => { const fee = feeCategory.fees!.find((currentFee) => {
return currentFee.feeId === feeId; return currentFee.feeId === feeId;
}); })!;
let editCloseModalFunction: () => void; let editCloseModalFunction: () => void;
let editModalElement: HTMLElement; let editModalElement: HTMLElement;
@ -643,7 +657,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateFee", los.urlPrefix + "/admin/doUpdateFee",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -651,13 +665,13 @@ declare const bulmaJS: BulmaJS;
feeCategories?: recordTypes.FeeCategory[]; feeCategories?: recordTypes.FeeCategory[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories!;
editCloseModalFunction(); editCloseModalFunction();
renderFeeCategories(); renderFeeCategories();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Fee", title: "Error Updating Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -670,7 +684,7 @@ declare const bulmaJS: BulmaJS;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteFee", los.urlPrefix + "/admin/doDeleteFee",
{ {
feeId feeId
}, },
@ -680,13 +694,13 @@ declare const bulmaJS: BulmaJS;
feeCategories?: recordTypes.FeeCategory[]; feeCategories?: recordTypes.FeeCategory[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories!;
editCloseModalFunction(); editCloseModalFunction();
renderFeeCategories(); renderFeeCategories();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Fee", title: "Error Deleting Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -714,12 +728,12 @@ declare const bulmaJS: BulmaJS;
) as HTMLSelectElement; ) as HTMLSelectElement;
if (feeFunctionElement.value === "") { if (feeFunctionElement.value === "") {
feeFunctionElement.closest(".select").classList.remove("is-success"); feeFunctionElement.closest(".select")!.classList.remove("is-success");
feeAmountElement.classList.add("is-success"); feeAmountElement.classList.add("is-success");
feeAmountElement.disabled = false; feeAmountElement.disabled = false;
} else { } else {
feeFunctionElement.closest(".select").classList.add("is-success"); feeFunctionElement.closest(".select")!.classList.add("is-success");
feeAmountElement.classList.remove("is-success"); feeAmountElement.classList.remove("is-success");
feeAmountElement.disabled = true; feeAmountElement.disabled = true;
@ -760,7 +774,7 @@ declare const bulmaJS: BulmaJS;
editModalElement = modalElement; editModalElement = modalElement;
(modalElement.querySelector("#feeEdit--feeId") as HTMLInputElement).value = (modalElement.querySelector("#feeEdit--feeId") as HTMLInputElement).value =
fee.feeId.toString(); fee.feeId!.toString();
const feeCategoryElement = modalElement.querySelector( const feeCategoryElement = modalElement.querySelector(
"#feeEdit--feeCategoryId" "#feeEdit--feeCategoryId"
@ -768,8 +782,8 @@ declare const bulmaJS: BulmaJS;
for (const feeCategory of feeCategories) { for (const feeCategory of feeCategories) {
const optionElement = document.createElement("option"); const optionElement = document.createElement("option");
optionElement.value = feeCategory.feeCategoryId.toString(); optionElement.value = feeCategory.feeCategoryId!.toString();
optionElement.textContent = feeCategory.feeCategory; optionElement.textContent = feeCategory.feeCategory!;
if (feeCategory.feeCategoryId === feeCategoryId) { if (feeCategory.feeCategoryId === feeCategoryId) {
optionElement.selected = true; optionElement.selected = true;
@ -779,10 +793,10 @@ declare const bulmaJS: BulmaJS;
} }
(modalElement.querySelector("#feeEdit--feeName") as HTMLInputElement).value = (modalElement.querySelector("#feeEdit--feeName") as HTMLInputElement).value =
fee.feeName; fee.feeName!;
( (
modalElement.querySelector("#feeEdit--feeDescription") as HTMLTextAreaElement modalElement.querySelector("#feeEdit--feeDescription") as HTMLTextAreaElement
).value = fee.feeDescription; ).value = fee.feeDescription!;
const occupancyTypeElement = modalElement.querySelector( const occupancyTypeElement = modalElement.querySelector(
"#feeEdit--occupancyTypeId" "#feeEdit--occupancyTypeId"
@ -818,9 +832,9 @@ declare const bulmaJS: BulmaJS;
(modalElement.querySelector("#feeEdit--feeAmount") as HTMLInputElement).value = (modalElement.querySelector("#feeEdit--feeAmount") as HTMLInputElement).value =
fee.feeAmount ? fee.feeAmount.toFixed(2) : ""; fee.feeAmount ? fee.feeAmount.toFixed(2) : "";
modalElement (
.querySelector("#feeEdit--feeFunction") modalElement.querySelector("#feeEdit--feeFunction") as HTMLSelectElement
.addEventListener("change", toggleFeeFields); ).addEventListener("change", toggleFeeFields);
toggleFeeFields(); toggleFeeFields();
@ -863,13 +877,13 @@ declare const bulmaJS: BulmaJS;
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
modalElement.querySelector("form").addEventListener("submit", doUpdateFee); modalElement.querySelector("form")!.addEventListener("submit", doUpdateFee);
bulmaJS.init(modalElement); bulmaJS.init(modalElement);
modalElement (
.querySelector(".button--deleteFee") modalElement.querySelector(".button--deleteFee") as HTMLButtonElement
.addEventListener("click", confirmDeleteFee); ).addEventListener("click", confirmDeleteFee);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -882,10 +896,10 @@ declare const bulmaJS: BulmaJS;
".container--fee" ".container--fee"
) as HTMLElement; ) as HTMLElement;
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10); const feeId = Number.parseInt(feeContainerElement.dataset.feeId!, 10);
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveFeeUp", los.urlPrefix + "/admin/doMoveFeeUp",
{ {
feeId, feeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -896,12 +910,12 @@ declare const bulmaJS: BulmaJS;
feeCategories?: recordTypes.FeeCategory[]; feeCategories?: recordTypes.FeeCategory[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories!;
renderFeeCategories(); renderFeeCategories();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Fee", title: "Error Moving Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -914,10 +928,10 @@ declare const bulmaJS: BulmaJS;
".container--fee" ".container--fee"
) as HTMLElement; ) as HTMLElement;
const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10); const feeId = Number.parseInt(feeContainerElement.dataset.feeId!, 10);
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveFeeDown", los.urlPrefix + "/admin/doMoveFeeDown",
{ {
feeId, feeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -928,12 +942,12 @@ declare const bulmaJS: BulmaJS;
feeCategories?: recordTypes.FeeCategory[]; feeCategories?: recordTypes.FeeCategory[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories!;
renderFeeCategories(); renderFeeCategories();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Fee", title: "Error Moving Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }

View File

@ -2,7 +2,6 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const containerElement = document.querySelector("#container--lotTypes"); const containerElement = document.querySelector("#container--lotTypes");
let lotTypes = exports.lotTypes; let lotTypes = exports.lotTypes;
delete exports.lotTypes; delete exports.lotTypes;
@ -33,7 +32,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.lot + " Type", title: "Error Updating " + exports.aliases.lot + " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -41,7 +40,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const deleteLotType = (clickEvent) => { const 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);
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteLotType", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotType", {
lotTypeId lotTypeId
}, lotTypeResponseHandler); }, lotTypeResponseHandler);
}; };
@ -65,7 +64,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
const doEdit = (submitEvent) => { const doEdit = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateLotType", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotType", submitEvent.currentTarget, (responseJSON) => {
lotTypeResponseHandler(responseJSON); lotTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
editCloseModalFunction(); editCloseModalFunction();
@ -96,7 +95,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCloseModalFunction; let addCloseModalFunction;
const doAdd = (submitEvent) => { const doAdd = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doAddLotTypeField", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddLotTypeField", submitEvent.currentTarget, (responseJSON) => {
expandedLotTypes.add(lotTypeId); expandedLotTypes.add(lotTypeId);
lotTypeResponseHandler(responseJSON); lotTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
@ -126,7 +125,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveLotTypeUp = (clickEvent) => { const moveLotTypeUp = (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const lotTypeId = clickEvent.currentTarget.closest(".container--lotType").dataset.lotTypeId; const lotTypeId = clickEvent.currentTarget.closest(".container--lotType").dataset.lotTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveLotTypeUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotTypeUp", {
lotTypeId, lotTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, lotTypeResponseHandler); }, lotTypeResponseHandler);
@ -134,7 +133,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveLotTypeDown = (clickEvent) => { const moveLotTypeDown = (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const lotTypeId = clickEvent.currentTarget.closest(".container--lotType").dataset.lotTypeId; const lotTypeId = clickEvent.currentTarget.closest(".container--lotType").dataset.lotTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveLotTypeDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotTypeDown", {
lotTypeId, lotTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, lotTypeResponseHandler); }, lotTypeResponseHandler);
@ -168,7 +167,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}; };
const doUpdate = (submitEvent) => { const doUpdate = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateLotTypeField", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotTypeField", submitEvent.currentTarget, (responseJSON) => {
lotTypeResponseHandler(responseJSON); lotTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
editCloseModalFunction(); editCloseModalFunction();
@ -177,7 +176,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}; };
const doDelete = () => { const doDelete = () => {
const _doDelete = () => { const _doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteLotTypeField", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotTypeField", {
lotTypeFieldId lotTypeFieldId
}, (responseJSON) => { }, (responseJSON) => {
lotTypeResponseHandler(responseJSON); lotTypeResponseHandler(responseJSON);
@ -221,9 +220,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin); minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin);
updateMaximumLengthMin(); updateMaximumLengthMin();
lotTypeFieldValuesElement.addEventListener("keyup", toggleInputFields); lotTypeFieldValuesElement.addEventListener("keyup", toggleInputFields);
modalElement modalElement.querySelector("#button--deleteLotTypeField").addEventListener("click", doDelete);
.querySelector("#button--deleteLotTypeField")
.addEventListener("click", doDelete);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -240,7 +237,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveLotTypeFieldUp = (clickEvent) => { const moveLotTypeFieldUp = (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const lotTypeFieldId = clickEvent.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId; const lotTypeFieldId = clickEvent.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId;
cityssm.postJSON(urlPrefix + "/admin/doMoveLotTypeFieldUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotTypeFieldUp", {
lotTypeFieldId, lotTypeFieldId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, lotTypeResponseHandler); }, lotTypeResponseHandler);
@ -248,7 +245,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveLotTypeFieldDown = (clickEvent) => { const moveLotTypeFieldDown = (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const lotTypeFieldId = clickEvent.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId; const lotTypeFieldId = clickEvent.currentTarget.closest(".container--lotTypeField").dataset.lotTypeFieldId;
cityssm.postJSON(urlPrefix + "/admin/doMoveLotTypeFieldDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotTypeFieldDown", {
lotTypeFieldId, lotTypeFieldId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, lotTypeResponseHandler); }, lotTypeResponseHandler);
@ -276,7 +273,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<div class="level-left">' + '<div class="level-left">' +
('<div class="level-item">' + ('<div class="level-item">' +
'<a class="has-text-weight-bold button--editLotTypeField" href="#">' + '<a class="has-text-weight-bold button--editLotTypeField" href="#">' +
cityssm.escapeHTML(lotTypeField.lotTypeField) + cityssm.escapeHTML(lotTypeField.lotTypeField || "") +
"</a>" + "</a>" +
"</div>") + "</div>") +
"</div>" + "</div>" +
@ -297,15 +294,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>") + "</div>") +
"</div>" + "</div>" +
"</div>"; "</div>";
panelBlockElement panelBlockElement.querySelector(".button--editLotTypeField").addEventListener("click", openEditLotTypeFieldByClick);
.querySelector(".button--editLotTypeField") panelBlockElement.querySelector(".button--moveLotTypeFieldUp").addEventListener("click", moveLotTypeFieldUp);
.addEventListener("click", openEditLotTypeFieldByClick); panelBlockElement.querySelector(".button--moveLotTypeFieldDown").addEventListener("click", moveLotTypeFieldDown);
panelBlockElement
.querySelector(".button--moveLotTypeFieldUp")
.addEventListener("click", moveLotTypeFieldUp);
panelBlockElement
.querySelector(".button--moveLotTypeFieldDown")
.addEventListener("click", moveLotTypeFieldDown);
panelElement.append(panelBlockElement); panelElement.append(panelBlockElement);
} }
} }
@ -380,24 +371,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>" + "</div>" +
"</div>"; "</div>";
renderLotTypeFields(lotTypeContainer, lotType.lotTypeId, lotType.lotTypeFields); renderLotTypeFields(lotTypeContainer, lotType.lotTypeId, lotType.lotTypeFields);
lotTypeContainer lotTypeContainer.querySelector(".button--toggleLotTypeFields").addEventListener("click", toggleLotTypeFields);
.querySelector(".button--toggleLotTypeFields") lotTypeContainer.querySelector(".button--deleteLotType").addEventListener("click", deleteLotType);
.addEventListener("click", toggleLotTypeFields); lotTypeContainer.querySelector(".button--editLotType").addEventListener("click", openEditLotType);
lotTypeContainer lotTypeContainer.querySelector(".button--addLotTypeField").addEventListener("click", openAddLotTypeField);
.querySelector(".button--deleteLotType") lotTypeContainer.querySelector(".button--moveLotTypeUp").addEventListener("click", moveLotTypeUp);
.addEventListener("click", deleteLotType); lotTypeContainer.querySelector(".button--moveLotTypeDown").addEventListener("click", moveLotTypeDown);
lotTypeContainer
.querySelector(".button--editLotType")
.addEventListener("click", openEditLotType);
lotTypeContainer
.querySelector(".button--addLotTypeField")
.addEventListener("click", openAddLotTypeField);
lotTypeContainer
.querySelector(".button--moveLotTypeUp")
.addEventListener("click", moveLotTypeUp);
lotTypeContainer
.querySelector(".button--moveLotTypeDown")
.addEventListener("click", moveLotTypeDown);
containerElement.append(lotTypeContainer); containerElement.append(lotTypeContainer);
} }
}; };
@ -405,7 +384,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCloseModalFunction; let addCloseModalFunction;
const doAdd = (submitEvent) => { const doAdd = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doAddLotType", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddLotType", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
addCloseModalFunction(); addCloseModalFunction();
lotTypes = responseJSON.lotTypes; lotTypes = responseJSON.lotTypes;
@ -414,7 +393,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding " + exports.aliases.lot + " Type", title: "Error Adding " + exports.aliases.lot + " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }

View File

@ -1,4 +1,4 @@
/* eslint-disable unicorn/prefer-module */ /* 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 * as recordTypes from "../types/recordTypes"; import type * as recordTypes from "../types/recordTypes";
@ -13,8 +13,6 @@ declare const bulmaJS: BulmaJS;
(() => { (() => {
const los = exports.los as globalTypes.LOS; const los = exports.los as globalTypes.LOS;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const containerElement = document.querySelector("#container--lotTypes") as HTMLElement; const containerElement = document.querySelector("#container--lotTypes") as HTMLElement;
let lotTypes: recordTypes.LotType[] = exports.lotTypes; let lotTypes: recordTypes.LotType[] = exports.lotTypes;
@ -27,7 +25,7 @@ declare const bulmaJS: BulmaJS;
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)) { if (expandedLotTypes.has(lotTypeId)) {
expandedLotTypes.delete(lotTypeId); expandedLotTypes.delete(lotTypeId);
@ -52,12 +50,12 @@ declare const bulmaJS: BulmaJS;
lotTypes?: recordTypes.LotType[]; lotTypes?: recordTypes.LotType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotTypes = responseJSON.lotTypes; lotTypes = responseJSON.lotTypes!;
renderLotTypes(); renderLotTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.lot + " Type", title: "Error Updating " + exports.aliases.lot + " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -69,13 +67,13 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--lotType" ".container--lotType"
) as HTMLElement ) as HTMLElement
).dataset.lotTypeId, ).dataset.lotTypeId!,
10 10
); );
const doDelete = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteLotType", los.urlPrefix + "/admin/doDeleteLotType",
{ {
lotTypeId lotTypeId
}, },
@ -103,13 +101,13 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--lotType" ".container--lotType"
) as HTMLElement ) as HTMLElement
).dataset.lotTypeId, ).dataset.lotTypeId!,
10 10
); );
const lotType = lotTypes.find((currentLotType) => { const lotType = lotTypes.find((currentLotType) => {
return lotTypeId === currentLotType.lotTypeId; return lotTypeId === currentLotType.lotTypeId;
}); })!;
let editCloseModalFunction: () => void; let editCloseModalFunction: () => void;
@ -117,7 +115,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateLotType", los.urlPrefix + "/admin/doUpdateLotType",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -147,7 +145,7 @@ declare const bulmaJS: BulmaJS;
(modalElement.querySelector("#lotTypeEdit--lotType") as HTMLInputElement).focus(); (modalElement.querySelector("#lotTypeEdit--lotType") as HTMLInputElement).focus();
modalElement.querySelector("form").addEventListener("submit", doEdit); modalElement.querySelector("form")!.addEventListener("submit", doEdit);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
}, },
@ -163,7 +161,7 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--lotType" ".container--lotType"
) as HTMLElement ) as HTMLElement
).dataset.lotTypeId, ).dataset.lotTypeId!,
10 10
); );
@ -173,7 +171,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddLotTypeField", los.urlPrefix + "/admin/doAddLotTypeField",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -186,7 +184,7 @@ declare const bulmaJS: BulmaJS;
if (responseJSON.success) { if (responseJSON.success) {
addCloseModalFunction(); addCloseModalFunction();
openEditLotTypeField(lotTypeId, responseJSON.lotTypeFieldId); openEditLotTypeField(lotTypeId, responseJSON.lotTypeFieldId!);
} }
} }
); );
@ -211,7 +209,7 @@ declare const bulmaJS: BulmaJS;
modalElement.querySelector("#lotTypeFieldAdd--lotTypeField") as HTMLInputElement modalElement.querySelector("#lotTypeFieldAdd--lotTypeField") as HTMLInputElement
).focus(); ).focus();
modalElement.querySelector("form").addEventListener("submit", doAdd); modalElement.querySelector("form")!.addEventListener("submit", doAdd);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
}, },
@ -229,7 +227,7 @@ declare const bulmaJS: BulmaJS;
).dataset.lotTypeId; ).dataset.lotTypeId;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveLotTypeUp", los.urlPrefix + "/admin/doMoveLotTypeUp",
{ {
lotTypeId, lotTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -246,7 +244,7 @@ declare const bulmaJS: BulmaJS;
).dataset.lotTypeId; ).dataset.lotTypeId;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveLotTypeDown", los.urlPrefix + "/admin/doMoveLotTypeDown",
{ {
lotTypeId, lotTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -258,11 +256,11 @@ declare const bulmaJS: BulmaJS;
const openEditLotTypeField = (lotTypeId: number, lotTypeFieldId: number) => { const openEditLotTypeField = (lotTypeId: number, lotTypeFieldId: number) => {
const lotType = lotTypes.find((currentLotType) => { const lotType = lotTypes.find((currentLotType) => {
return currentLotType.lotTypeId === lotTypeId; return currentLotType.lotTypeId === lotTypeId;
}); })!;
const lotTypeField = lotType.lotTypeFields.find((currentLotTypeField) => { const lotTypeField = lotType.lotTypeFields!.find((currentLotTypeField) => {
return currentLotTypeField.lotTypeFieldId === lotTypeFieldId; return currentLotTypeField.lotTypeFieldId === lotTypeFieldId;
}); })!;
let minimumLengthElement: HTMLInputElement; let minimumLengthElement: HTMLInputElement;
let maximumLengthElement: HTMLInputElement; let maximumLengthElement: HTMLInputElement;
@ -291,7 +289,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateLotTypeField", los.urlPrefix + "/admin/doUpdateLotTypeField",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -309,7 +307,7 @@ declare const bulmaJS: BulmaJS;
const doDelete = () => { const doDelete = () => {
const _doDelete = () => { const _doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteLotTypeField", los.urlPrefix + "/admin/doDeleteLotTypeField",
{ {
lotTypeFieldId lotTypeFieldId
}, },
@ -346,13 +344,13 @@ declare const bulmaJS: BulmaJS;
modalElement.querySelector( modalElement.querySelector(
"#lotTypeFieldEdit--lotTypeFieldId" "#lotTypeFieldEdit--lotTypeFieldId"
) as HTMLInputElement ) as HTMLInputElement
).value = lotTypeField.lotTypeFieldId.toString(); ).value = lotTypeField.lotTypeFieldId!.toString();
( (
modalElement.querySelector( modalElement.querySelector(
"#lotTypeFieldEdit--lotTypeField" "#lotTypeFieldEdit--lotTypeField"
) as HTMLInputElement ) as HTMLInputElement
).value = lotTypeField.lotTypeField; ).value = lotTypeField.lotTypeField!;
( (
modalElement.querySelector("#lotTypeFieldEdit--isRequired") as HTMLSelectElement modalElement.querySelector("#lotTypeFieldEdit--isRequired") as HTMLSelectElement
@ -360,25 +358,27 @@ declare const bulmaJS: BulmaJS;
minimumLengthElement = modalElement.querySelector( minimumLengthElement = modalElement.querySelector(
"#lotTypeFieldEdit--minimumLength" "#lotTypeFieldEdit--minimumLength"
); ) as HTMLInputElement;
minimumLengthElement.value = lotTypeField.minimumLength.toString(); minimumLengthElement.value = lotTypeField.minimumLength!.toString();
maximumLengthElement = modalElement.querySelector( maximumLengthElement = modalElement.querySelector(
"#lotTypeFieldEdit--maximumLength" "#lotTypeFieldEdit--maximumLength"
); ) as HTMLInputElement;
maximumLengthElement.value = lotTypeField.maximumLength.toString(); maximumLengthElement.value = lotTypeField.maximumLength!.toString();
patternElement = modalElement.querySelector("#lotTypeFieldEdit--pattern"); patternElement = modalElement.querySelector(
"#lotTypeFieldEdit--pattern"
) as HTMLInputElement;
patternElement.value = lotTypeField.pattern; patternElement.value = lotTypeField.pattern!;
lotTypeFieldValuesElement = modalElement.querySelector( lotTypeFieldValuesElement = modalElement.querySelector(
"#lotTypeFieldEdit--lotTypeFieldValues" "#lotTypeFieldEdit--lotTypeFieldValues"
); ) as HTMLTextAreaElement;
lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues; lotTypeFieldValuesElement.value = lotTypeField.lotTypeFieldValues!;
toggleInputFields(); toggleInputFields();
}, },
@ -389,16 +389,16 @@ declare const bulmaJS: BulmaJS;
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
cityssm.enableNavBlocker(); cityssm.enableNavBlocker();
modalElement.querySelector("form").addEventListener("submit", doUpdate); modalElement.querySelector("form")!.addEventListener("submit", doUpdate);
minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin); minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin);
updateMaximumLengthMin(); updateMaximumLengthMin();
lotTypeFieldValuesElement.addEventListener("keyup", toggleInputFields); lotTypeFieldValuesElement.addEventListener("keyup", toggleInputFields);
modalElement (
.querySelector("#button--deleteLotTypeField") modalElement.querySelector("#button--deleteLotTypeField") as HTMLButtonElement
.addEventListener("click", doDelete); ).addEventListener("click", doDelete);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -415,7 +415,7 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--lotTypeField" ".container--lotTypeField"
) as HTMLElement ) as HTMLElement
).dataset.lotTypeFieldId, ).dataset.lotTypeFieldId!,
10 10
); );
@ -424,7 +424,7 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--lotType" ".container--lotType"
) as HTMLElement ) as HTMLElement
).dataset.lotTypeId, ).dataset.lotTypeId!,
10 10
); );
@ -441,7 +441,7 @@ declare const bulmaJS: BulmaJS;
).dataset.lotTypeFieldId; ).dataset.lotTypeFieldId;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveLotTypeFieldUp", los.urlPrefix + "/admin/doMoveLotTypeFieldUp",
{ {
lotTypeFieldId, lotTypeFieldId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -460,7 +460,7 @@ declare const bulmaJS: BulmaJS;
).dataset.lotTypeFieldId; ).dataset.lotTypeFieldId;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveLotTypeFieldDown", los.urlPrefix + "/admin/doMoveLotTypeFieldDown",
{ {
lotTypeFieldId, lotTypeFieldId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -494,14 +494,14 @@ declare const bulmaJS: BulmaJS;
panelBlockElement.classList.add("is-hidden"); panelBlockElement.classList.add("is-hidden");
} }
panelBlockElement.dataset.lotTypeFieldId = lotTypeField.lotTypeFieldId.toString(); panelBlockElement.dataset.lotTypeFieldId = lotTypeField.lotTypeFieldId!.toString();
panelBlockElement.innerHTML = panelBlockElement.innerHTML =
'<div class="level is-mobile">' + '<div class="level is-mobile">' +
'<div class="level-left">' + '<div class="level-left">' +
('<div class="level-item">' + ('<div class="level-item">' +
'<a class="has-text-weight-bold button--editLotTypeField" href="#">' + '<a class="has-text-weight-bold button--editLotTypeField" href="#">' +
cityssm.escapeHTML(lotTypeField.lotTypeField) + cityssm.escapeHTML(lotTypeField.lotTypeField || "") +
"</a>" + "</a>" +
"</div>") + "</div>") +
"</div>" + "</div>" +
@ -523,17 +523,23 @@ declare const bulmaJS: BulmaJS;
"</div>" + "</div>" +
"</div>"; "</div>";
panelBlockElement (
.querySelector(".button--editLotTypeField") panelBlockElement.querySelector(
.addEventListener("click", openEditLotTypeFieldByClick); ".button--editLotTypeField"
) as HTMLButtonElement
).addEventListener("click", openEditLotTypeFieldByClick);
panelBlockElement (
.querySelector(".button--moveLotTypeFieldUp") panelBlockElement.querySelector(
.addEventListener("click", moveLotTypeFieldUp); ".button--moveLotTypeFieldUp"
) as HTMLButtonElement
).addEventListener("click", moveLotTypeFieldUp);
panelBlockElement (
.querySelector(".button--moveLotTypeFieldDown") panelBlockElement.querySelector(
.addEventListener("click", moveLotTypeFieldDown); ".button--moveLotTypeFieldDown"
) as HTMLButtonElement
).addEventListener("click", moveLotTypeFieldDown);
panelElement.append(panelBlockElement); panelElement.append(panelBlockElement);
} }
@ -619,83 +625,88 @@ declare const bulmaJS: BulmaJS;
"</div>" + "</div>" +
"</div>"; "</div>";
renderLotTypeFields(lotTypeContainer, lotType.lotTypeId, lotType.lotTypeFields); renderLotTypeFields(lotTypeContainer, lotType.lotTypeId, lotType.lotTypeFields!);
lotTypeContainer (
.querySelector(".button--toggleLotTypeFields") lotTypeContainer.querySelector(".button--toggleLotTypeFields") as HTMLButtonElement
.addEventListener("click", toggleLotTypeFields); ).addEventListener("click", toggleLotTypeFields);
lotTypeContainer (
.querySelector(".button--deleteLotType") lotTypeContainer.querySelector(".button--deleteLotType") as HTMLButtonElement
.addEventListener("click", deleteLotType); ).addEventListener("click", deleteLotType);
lotTypeContainer (
.querySelector(".button--editLotType") lotTypeContainer.querySelector(".button--editLotType") as HTMLButtonElement
.addEventListener("click", openEditLotType); ).addEventListener("click", openEditLotType);
lotTypeContainer (
.querySelector(".button--addLotTypeField") lotTypeContainer.querySelector(".button--addLotTypeField") as HTMLButtonElement
.addEventListener("click", openAddLotTypeField); ).addEventListener("click", openAddLotTypeField);
lotTypeContainer (
.querySelector(".button--moveLotTypeUp") lotTypeContainer.querySelector(".button--moveLotTypeUp") as HTMLButtonElement
.addEventListener("click", moveLotTypeUp); ).addEventListener("click", moveLotTypeUp);
lotTypeContainer (
.querySelector(".button--moveLotTypeDown") lotTypeContainer.querySelector(".button--moveLotTypeDown") as HTMLButtonElement
.addEventListener("click", moveLotTypeDown); ).addEventListener("click", moveLotTypeDown);
containerElement.append(lotTypeContainer); containerElement.append(lotTypeContainer);
} }
}; };
document.querySelector("#button--addLotType").addEventListener("click", () => { (document.querySelector("#button--addLotType") as HTMLButtonElement).addEventListener(
let addCloseModalFunction: () => void; "click",
() => {
let addCloseModalFunction: () => void;
const doAdd = (submitEvent: SubmitEvent) => { const doAdd = (submitEvent: SubmitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddLotType", los.urlPrefix + "/admin/doAddLotType",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
errorMessage?: string; errorMessage?: string;
lotTypes?: recordTypes.LotType[]; lotTypes?: recordTypes.LotType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
addCloseModalFunction(); addCloseModalFunction();
lotTypes = responseJSON.lotTypes; lotTypes = responseJSON.lotTypes!;
renderLotTypes(); renderLotTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding " + exports.aliases.lot + " Type", title: "Error Adding " + exports.aliases.lot + " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
}
} }
);
};
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();
} }
); });
}; }
);
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(); renderLotTypes();
})(); })();

View File

@ -2,7 +2,6 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const containerElement = document.querySelector("#container--occupancyTypes"); const containerElement = document.querySelector("#container--occupancyTypes");
let occupancyTypes = exports.occupancyTypes; let occupancyTypes = exports.occupancyTypes;
delete exports.occupancyTypes; delete exports.occupancyTypes;
@ -36,7 +35,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.occupancy + " Type", title: "Error Updating " + exports.aliases.occupancy + " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -44,7 +43,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const deleteOccupancyType = (clickEvent) => { const 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);
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteOccupancyType", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteOccupancyType", {
occupancyTypeId occupancyTypeId
}, occupancyTypeResponseHandler); }, occupancyTypeResponseHandler);
}; };
@ -68,7 +67,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
const doEdit = (submitEvent) => { const doEdit = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateOccupancyType", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateOccupancyType", submitEvent.currentTarget, (responseJSON) => {
occupancyTypeResponseHandler(responseJSON); occupancyTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
editCloseModalFunction(); editCloseModalFunction();
@ -97,7 +96,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCloseModalFunction; let addCloseModalFunction;
const doAdd = (submitEvent) => { const doAdd = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doAddOccupancyTypeField", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddOccupancyTypeField", submitEvent.currentTarget, (responseJSON) => {
expandedOccupancyTypes.add(occupancyTypeId); expandedOccupancyTypes.add(occupancyTypeId);
occupancyTypeResponseHandler(responseJSON); occupancyTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
@ -127,7 +126,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveOccupancyTypeUp = (clickEvent) => { const moveOccupancyTypeUp = (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId; const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveOccupancyTypeUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveOccupancyTypeUp", {
occupancyTypeId, occupancyTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, occupancyTypeResponseHandler); }, occupancyTypeResponseHandler);
@ -135,7 +134,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveOccupancyTypeDown = (clickEvent) => { const moveOccupancyTypeDown = (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId; const occupancyTypeId = clickEvent.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveOccupancyTypeDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveOccupancyTypeDown", {
occupancyTypeId, occupancyTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, occupancyTypeResponseHandler); }, occupancyTypeResponseHandler);
@ -172,7 +171,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}; };
const doUpdate = (submitEvent) => { const doUpdate = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateOccupancyTypeField", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateOccupancyTypeField", submitEvent.currentTarget, (responseJSON) => {
occupancyTypeResponseHandler(responseJSON); occupancyTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
editCloseModalFunction(); editCloseModalFunction();
@ -181,7 +180,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}; };
const doDelete = () => { const doDelete = () => {
const _doDelete = () => { const _doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteOccupancyTypeField", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteOccupancyTypeField", {
occupancyTypeFieldId occupancyTypeFieldId
}, (responseJSON) => { }, (responseJSON) => {
occupancyTypeResponseHandler(responseJSON); occupancyTypeResponseHandler(responseJSON);
@ -213,7 +212,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
patternElement = modalElement.querySelector("#occupancyTypeFieldEdit--pattern"); patternElement = modalElement.querySelector("#occupancyTypeFieldEdit--pattern");
patternElement.value = occupancyTypeField.pattern; patternElement.value = occupancyTypeField.pattern;
occupancyTypeFieldValuesElement = modalElement.querySelector("#occupancyTypeFieldEdit--occupancyTypeFieldValues"); occupancyTypeFieldValuesElement = modalElement.querySelector("#occupancyTypeFieldEdit--occupancyTypeFieldValues");
occupancyTypeFieldValuesElement.value = occupancyTypeField.occupancyTypeFieldValues; occupancyTypeFieldValuesElement.value =
occupancyTypeField.occupancyTypeFieldValues;
toggleInputFields(); toggleInputFields();
}, },
onshown: (modalElement, closeModalFunction) => { onshown: (modalElement, closeModalFunction) => {
@ -225,9 +225,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin); minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin);
updateMaximumLengthMin(); updateMaximumLengthMin();
occupancyTypeFieldValuesElement.addEventListener("keyup", toggleInputFields); occupancyTypeFieldValuesElement.addEventListener("keyup", toggleInputFields);
modalElement modalElement.querySelector("#button--deleteOccupancyTypeField").addEventListener("click", doDelete);
.querySelector("#button--deleteOccupancyTypeField")
.addEventListener("click", doDelete);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -244,7 +242,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveOccupancyTypeFieldUp = (clickEvent) => { const moveOccupancyTypeFieldUp = (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const occupancyTypeFieldId = clickEvent.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId; const occupancyTypeFieldId = clickEvent.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId;
cityssm.postJSON(urlPrefix + "/admin/doMoveOccupancyTypeFieldUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveOccupancyTypeFieldUp", {
occupancyTypeFieldId, occupancyTypeFieldId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, occupancyTypeResponseHandler); }, occupancyTypeResponseHandler);
@ -252,7 +250,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveOccupancyTypeFieldDown = (clickEvent) => { const moveOccupancyTypeFieldDown = (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const occupancyTypeFieldId = clickEvent.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId; const occupancyTypeFieldId = clickEvent.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId;
cityssm.postJSON(urlPrefix + "/admin/doMoveOccupancyTypeFieldDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveOccupancyTypeFieldDown", {
occupancyTypeFieldId, occupancyTypeFieldId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, occupancyTypeResponseHandler); }, occupancyTypeResponseHandler);
@ -283,7 +281,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<div class="level-left">' + '<div class="level-left">' +
('<div class="level-item">' + ('<div class="level-item">' +
'<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">' + '<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">' +
cityssm.escapeHTML(occupancyTypeField.occupancyTypeField) + cityssm.escapeHTML(occupancyTypeField.occupancyTypeField || "") +
"</a>" + "</a>" +
"</div>") + "</div>") +
"</div>" + "</div>" +
@ -304,15 +302,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>") + "</div>") +
"</div>" + "</div>" +
"</div>"; "</div>";
panelBlockElement panelBlockElement.querySelector(".button--editOccupancyTypeField").addEventListener("click", openEditOccupancyTypeFieldByClick);
.querySelector(".button--editOccupancyTypeField") panelBlockElement.querySelector(".button--moveOccupancyTypeFieldUp").addEventListener("click", moveOccupancyTypeFieldUp);
.addEventListener("click", openEditOccupancyTypeFieldByClick); panelBlockElement.querySelector(".button--moveOccupancyTypeFieldDown").addEventListener("click", moveOccupancyTypeFieldDown);
panelBlockElement
.querySelector(".button--moveOccupancyTypeFieldUp")
.addEventListener("click", moveOccupancyTypeFieldUp);
panelBlockElement
.querySelector(".button--moveOccupancyTypeFieldDown")
.addEventListener("click", moveOccupancyTypeFieldDown);
panelElement.append(panelBlockElement); panelElement.append(panelBlockElement);
} }
} }
@ -337,9 +329,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>" + "</div>" +
"</div>"; "</div>";
renderOccupancyTypeFields(containerElement.querySelector("#container--allOccupancyTypeFields"), undefined, allOccupancyTypeFields); renderOccupancyTypeFields(containerElement.querySelector("#container--allOccupancyTypeFields"), undefined, allOccupancyTypeFields);
containerElement containerElement.querySelector(".button--addOccupancyTypeField").addEventListener("click", openAddOccupancyTypeField);
.querySelector(".button--addOccupancyTypeField")
.addEventListener("click", openAddOccupancyTypeField);
if (occupancyTypes.length === 0) { if (occupancyTypes.length === 0) {
containerElement.insertAdjacentHTML("afterbegin", '<div class="message is-warning>' + containerElement.insertAdjacentHTML("afterbegin", '<div class="message is-warning>' +
'<p class="message-body">There are no active ' + '<p class="message-body">There are no active ' +
@ -409,24 +399,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>" + "</div>" +
"</div>"; "</div>";
renderOccupancyTypeFields(occupancyTypeContainer, occupancyType.occupancyTypeId, occupancyType.occupancyTypeFields); renderOccupancyTypeFields(occupancyTypeContainer, occupancyType.occupancyTypeId, occupancyType.occupancyTypeFields);
occupancyTypeContainer occupancyTypeContainer.querySelector(".button--toggleOccupancyTypeFields").addEventListener("click", toggleOccupancyTypeFields);
.querySelector(".button--toggleOccupancyTypeFields") occupancyTypeContainer.querySelector(".button--deleteOccupancyType").addEventListener("click", deleteOccupancyType);
.addEventListener("click", toggleOccupancyTypeFields); occupancyTypeContainer.querySelector(".button--editOccupancyType").addEventListener("click", openEditOccupancyType);
occupancyTypeContainer occupancyTypeContainer.querySelector(".button--addOccupancyTypeField").addEventListener("click", openAddOccupancyTypeField);
.querySelector(".button--deleteOccupancyType") occupancyTypeContainer.querySelector(".button--moveOccupancyTypeUp").addEventListener("click", moveOccupancyTypeUp);
.addEventListener("click", deleteOccupancyType); occupancyTypeContainer.querySelector(".button--moveOccupancyTypeDown").addEventListener("click", moveOccupancyTypeDown);
occupancyTypeContainer
.querySelector(".button--editOccupancyType")
.addEventListener("click", openEditOccupancyType);
occupancyTypeContainer
.querySelector(".button--addOccupancyTypeField")
.addEventListener("click", openAddOccupancyTypeField);
occupancyTypeContainer
.querySelector(".button--moveOccupancyTypeUp")
.addEventListener("click", moveOccupancyTypeUp);
occupancyTypeContainer
.querySelector(".button--moveOccupancyTypeDown")
.addEventListener("click", moveOccupancyTypeDown);
containerElement.append(occupancyTypeContainer); containerElement.append(occupancyTypeContainer);
} }
}; };
@ -434,7 +412,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCloseModalFunction; let addCloseModalFunction;
const doAdd = (submitEvent) => { const doAdd = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doAddOccupancyType", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddOccupancyType", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
addCloseModalFunction(); addCloseModalFunction();
occupancyTypes = responseJSON.occupancyTypes; occupancyTypes = responseJSON.occupancyTypes;
@ -443,7 +421,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding " + exports.aliases.occupancy + " Type", title: "Error Adding " + exports.aliases.occupancy + " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }

View File

@ -1,4 +1,4 @@
/* eslint-disable unicorn/prefer-module */ /* 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 * as recordTypes from "../types/recordTypes"; import type * as recordTypes from "../types/recordTypes";
@ -13,8 +13,6 @@ declare const bulmaJS: BulmaJS;
(() => { (() => {
const los = exports.los as globalTypes.LOS; const los = exports.los as globalTypes.LOS;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const containerElement = document.querySelector("#container--occupancyTypes") as HTMLElement; const containerElement = document.querySelector("#container--occupancyTypes") as HTMLElement;
let occupancyTypes: recordTypes.OccupancyType[] = exports.occupancyTypes; let occupancyTypes: recordTypes.OccupancyType[] = exports.occupancyTypes;
@ -32,7 +30,7 @@ declare const bulmaJS: BulmaJS;
".container--occupancyType" ".container--occupancyType"
) as HTMLElement; ) as HTMLElement;
const occupancyTypeId = Number.parseInt(occupancyTypeElement.dataset.occupancyTypeId, 10); const occupancyTypeId = Number.parseInt(occupancyTypeElement.dataset.occupancyTypeId!, 10);
if (expandedOccupancyTypes.has(occupancyTypeId)) { if (expandedOccupancyTypes.has(occupancyTypeId)) {
expandedOccupancyTypes.delete(occupancyTypeId); expandedOccupancyTypes.delete(occupancyTypeId);
@ -58,13 +56,13 @@ declare const bulmaJS: BulmaJS;
allOccupancyTypeFields?: recordTypes.OccupancyTypeField[]; allOccupancyTypeFields?: recordTypes.OccupancyTypeField[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes; occupancyTypes = responseJSON.occupancyTypes!;
allOccupancyTypeFields = responseJSON.allOccupancyTypeFields; allOccupancyTypeFields = responseJSON.allOccupancyTypeFields!;
renderOccupancyTypes(); renderOccupancyTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.occupancy + " Type", title: "Error Updating " + exports.aliases.occupancy + " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -76,13 +74,13 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--occupancyType" ".container--occupancyType"
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeId, ).dataset.occupancyTypeId!,
10 10
); );
const doDelete = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteOccupancyType", los.urlPrefix + "/admin/doDeleteOccupancyType",
{ {
occupancyTypeId occupancyTypeId
}, },
@ -110,13 +108,13 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--occupancyType" ".container--occupancyType"
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeId, ).dataset.occupancyTypeId!,
10 10
); );
const occupancyType = occupancyTypes.find((currentOccupancyType) => { const occupancyType = occupancyTypes.find((currentOccupancyType) => {
return occupancyTypeId === currentOccupancyType.occupancyTypeId; return occupancyTypeId === currentOccupancyType.occupancyTypeId;
}); })!;
let editCloseModalFunction: () => void; let editCloseModalFunction: () => void;
@ -124,7 +122,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateOccupancyType", los.urlPrefix + "/admin/doUpdateOccupancyType",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -165,7 +163,7 @@ declare const bulmaJS: BulmaJS;
) as HTMLInputElement ) as HTMLInputElement
).focus(); ).focus();
modalElement.querySelector("form").addEventListener("submit", doEdit); modalElement.querySelector("form")!.addEventListener("submit", doEdit);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
}, },
@ -181,7 +179,7 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--occupancyType" ".container--occupancyType"
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeId, ).dataset.occupancyTypeId!,
10 10
); );
@ -191,7 +189,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddOccupancyTypeField", los.urlPrefix + "/admin/doAddOccupancyTypeField",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -207,7 +205,7 @@ declare const bulmaJS: BulmaJS;
addCloseModalFunction(); addCloseModalFunction();
openEditOccupancyTypeField( openEditOccupancyTypeField(
occupancyTypeId, occupancyTypeId,
responseJSON.occupancyTypeFieldId responseJSON.occupancyTypeFieldId!
); );
} }
} }
@ -235,7 +233,7 @@ declare const bulmaJS: BulmaJS;
) as HTMLInputElement ) as HTMLInputElement
).focus(); ).focus();
modalElement.querySelector("form").addEventListener("submit", doAdd); modalElement.querySelector("form")!.addEventListener("submit", doAdd);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
}, },
@ -255,7 +253,7 @@ declare const bulmaJS: BulmaJS;
).dataset.occupancyTypeId; ).dataset.occupancyTypeId;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveOccupancyTypeUp", los.urlPrefix + "/admin/doMoveOccupancyTypeUp",
{ {
occupancyTypeId, occupancyTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -274,7 +272,7 @@ declare const bulmaJS: BulmaJS;
).dataset.occupancyTypeId; ).dataset.occupancyTypeId;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveOccupancyTypeDown", los.urlPrefix + "/admin/doMoveOccupancyTypeDown",
{ {
occupancyTypeId, occupancyTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -284,7 +282,7 @@ declare const bulmaJS: BulmaJS;
}; };
const openEditOccupancyTypeField = (occupancyTypeId: number, occupancyTypeFieldId: number) => { const openEditOccupancyTypeField = (occupancyTypeId: number, occupancyTypeFieldId: number) => {
let occupancyType: recordTypes.OccupancyType; let occupancyType: recordTypes.OccupancyType | undefined;
if (occupancyTypeId) { if (occupancyTypeId) {
occupancyType = occupancyTypes.find((currentOccupancyType) => { occupancyType = occupancyTypes.find((currentOccupancyType) => {
@ -293,10 +291,10 @@ declare const bulmaJS: BulmaJS;
} }
const occupancyTypeField = ( const occupancyTypeField = (
occupancyType ? occupancyType.occupancyTypeFields : allOccupancyTypeFields occupancyType ? occupancyType.occupancyTypeFields! : allOccupancyTypeFields
).find((currentOccupancyTypeField) => { ).find((currentOccupancyTypeField) => {
return currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId; return currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId;
}); })!;
let minimumLengthElement: HTMLInputElement; let minimumLengthElement: HTMLInputElement;
let maximumLengthElement: HTMLInputElement; let maximumLengthElement: HTMLInputElement;
@ -325,7 +323,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateOccupancyTypeField", los.urlPrefix + "/admin/doUpdateOccupancyTypeField",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -343,7 +341,7 @@ declare const bulmaJS: BulmaJS;
const doDelete = () => { const doDelete = () => {
const _doDelete = () => { const _doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteOccupancyTypeField", los.urlPrefix + "/admin/doDeleteOccupancyTypeField",
{ {
occupancyTypeFieldId occupancyTypeFieldId
}, },
@ -380,13 +378,13 @@ declare const bulmaJS: BulmaJS;
modalElement.querySelector( modalElement.querySelector(
"#occupancyTypeFieldEdit--occupancyTypeFieldId" "#occupancyTypeFieldEdit--occupancyTypeFieldId"
) as HTMLInputElement ) as HTMLInputElement
).value = occupancyTypeField.occupancyTypeFieldId.toString(); ).value = occupancyTypeField.occupancyTypeFieldId!.toString();
( (
modalElement.querySelector( modalElement.querySelector(
"#occupancyTypeFieldEdit--occupancyTypeField" "#occupancyTypeFieldEdit--occupancyTypeField"
) as HTMLInputElement ) as HTMLInputElement
).value = occupancyTypeField.occupancyTypeField; ).value = occupancyTypeField.occupancyTypeField!;
( (
modalElement.querySelector( modalElement.querySelector(
@ -396,25 +394,28 @@ declare const bulmaJS: BulmaJS;
minimumLengthElement = modalElement.querySelector( minimumLengthElement = modalElement.querySelector(
"#occupancyTypeFieldEdit--minimumLength" "#occupancyTypeFieldEdit--minimumLength"
); ) as HTMLInputElement;
minimumLengthElement.value = occupancyTypeField.minimumLength.toString(); minimumLengthElement.value = occupancyTypeField.minimumLength!.toString();
maximumLengthElement = modalElement.querySelector( maximumLengthElement = modalElement.querySelector(
"#occupancyTypeFieldEdit--maximumLength" "#occupancyTypeFieldEdit--maximumLength"
); ) as HTMLInputElement;
maximumLengthElement.value = occupancyTypeField.maximumLength.toString(); maximumLengthElement.value = occupancyTypeField.maximumLength!.toString();
patternElement = modalElement.querySelector("#occupancyTypeFieldEdit--pattern"); patternElement = modalElement.querySelector(
"#occupancyTypeFieldEdit--pattern"
) as HTMLInputElement;
patternElement.value = occupancyTypeField.pattern; patternElement.value = occupancyTypeField.pattern!;
occupancyTypeFieldValuesElement = modalElement.querySelector( occupancyTypeFieldValuesElement = modalElement.querySelector(
"#occupancyTypeFieldEdit--occupancyTypeFieldValues" "#occupancyTypeFieldEdit--occupancyTypeFieldValues"
); ) as HTMLTextAreaElement;
occupancyTypeFieldValuesElement.value = occupancyTypeField.occupancyTypeFieldValues; occupancyTypeFieldValuesElement.value =
occupancyTypeField.occupancyTypeFieldValues!;
toggleInputFields(); toggleInputFields();
}, },
@ -425,16 +426,18 @@ declare const bulmaJS: BulmaJS;
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
cityssm.enableNavBlocker(); cityssm.enableNavBlocker();
modalElement.querySelector("form").addEventListener("submit", doUpdate); modalElement.querySelector("form")!.addEventListener("submit", doUpdate);
minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin); minimumLengthElement.addEventListener("keyup", updateMaximumLengthMin);
updateMaximumLengthMin(); updateMaximumLengthMin();
occupancyTypeFieldValuesElement.addEventListener("keyup", toggleInputFields); occupancyTypeFieldValuesElement.addEventListener("keyup", toggleInputFields);
modalElement (
.querySelector("#button--deleteOccupancyTypeField") modalElement.querySelector(
.addEventListener("click", doDelete); "#button--deleteOccupancyTypeField"
) as HTMLButtonElement
).addEventListener("click", doDelete);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -451,7 +454,7 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--occupancyTypeField" ".container--occupancyTypeField"
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeFieldId, ).dataset.occupancyTypeFieldId!,
10 10
); );
@ -460,7 +463,7 @@ declare const bulmaJS: BulmaJS;
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
".container--occupancyType" ".container--occupancyType"
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeId, ).dataset.occupancyTypeId!,
10 10
); );
@ -477,7 +480,7 @@ declare const bulmaJS: BulmaJS;
).dataset.occupancyTypeFieldId; ).dataset.occupancyTypeFieldId;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveOccupancyTypeFieldUp", los.urlPrefix + "/admin/doMoveOccupancyTypeFieldUp",
{ {
occupancyTypeFieldId, occupancyTypeFieldId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -496,7 +499,7 @@ declare const bulmaJS: BulmaJS;
).dataset.occupancyTypeFieldId; ).dataset.occupancyTypeFieldId;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveOccupancyTypeFieldDown", los.urlPrefix + "/admin/doMoveOccupancyTypeFieldDown",
{ {
occupancyTypeFieldId, occupancyTypeFieldId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -533,14 +536,14 @@ declare const bulmaJS: BulmaJS;
} }
panelBlockElement.dataset.occupancyTypeFieldId = panelBlockElement.dataset.occupancyTypeFieldId =
occupancyTypeField.occupancyTypeFieldId.toString(); occupancyTypeField.occupancyTypeFieldId!.toString();
panelBlockElement.innerHTML = panelBlockElement.innerHTML =
'<div class="level is-mobile">' + '<div class="level is-mobile">' +
'<div class="level-left">' + '<div class="level-left">' +
('<div class="level-item">' + ('<div class="level-item">' +
'<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">' + '<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">' +
cityssm.escapeHTML(occupancyTypeField.occupancyTypeField) + cityssm.escapeHTML(occupancyTypeField.occupancyTypeField || "") +
"</a>" + "</a>" +
"</div>") + "</div>") +
"</div>" + "</div>" +
@ -562,17 +565,23 @@ declare const bulmaJS: BulmaJS;
"</div>" + "</div>" +
"</div>"; "</div>";
panelBlockElement (
.querySelector(".button--editOccupancyTypeField") panelBlockElement.querySelector(
.addEventListener("click", openEditOccupancyTypeFieldByClick); ".button--editOccupancyTypeField"
) as HTMLButtonElement
).addEventListener("click", openEditOccupancyTypeFieldByClick);
panelBlockElement (
.querySelector(".button--moveOccupancyTypeFieldUp") panelBlockElement.querySelector(
.addEventListener("click", moveOccupancyTypeFieldUp); ".button--moveOccupancyTypeFieldUp"
) as HTMLButtonElement
).addEventListener("click", moveOccupancyTypeFieldUp);
panelBlockElement (
.querySelector(".button--moveOccupancyTypeFieldDown") panelBlockElement.querySelector(
.addEventListener("click", moveOccupancyTypeFieldDown); ".button--moveOccupancyTypeFieldDown"
) as HTMLButtonElement
).addEventListener("click", moveOccupancyTypeFieldDown);
panelElement.append(panelBlockElement); panelElement.append(panelBlockElement);
} }
@ -600,14 +609,14 @@ declare const bulmaJS: BulmaJS;
"</div>"; "</div>";
renderOccupancyTypeFields( renderOccupancyTypeFields(
containerElement.querySelector("#container--allOccupancyTypeFields"), containerElement.querySelector("#container--allOccupancyTypeFields") as HTMLElement,
undefined, undefined,
allOccupancyTypeFields allOccupancyTypeFields
); );
containerElement (
.querySelector(".button--addOccupancyTypeField") containerElement.querySelector(".button--addOccupancyTypeField") as HTMLButtonElement
.addEventListener("click", openAddOccupancyTypeField); ).addEventListener("click", openAddOccupancyTypeField);
if (occupancyTypes.length === 0) { if (occupancyTypes.length === 0) {
containerElement.insertAdjacentHTML( containerElement.insertAdjacentHTML(
@ -689,88 +698,103 @@ declare const bulmaJS: BulmaJS;
renderOccupancyTypeFields( renderOccupancyTypeFields(
occupancyTypeContainer, occupancyTypeContainer,
occupancyType.occupancyTypeId, occupancyType.occupancyTypeId,
occupancyType.occupancyTypeFields occupancyType.occupancyTypeFields!
); );
occupancyTypeContainer (
.querySelector(".button--toggleOccupancyTypeFields") occupancyTypeContainer.querySelector(
.addEventListener("click", toggleOccupancyTypeFields); ".button--toggleOccupancyTypeFields"
) as HTMLButtonElement
).addEventListener("click", toggleOccupancyTypeFields);
occupancyTypeContainer (
.querySelector(".button--deleteOccupancyType") occupancyTypeContainer.querySelector(
.addEventListener("click", deleteOccupancyType); ".button--deleteOccupancyType"
) as HTMLButtonElement
).addEventListener("click", deleteOccupancyType);
occupancyTypeContainer (
.querySelector(".button--editOccupancyType") occupancyTypeContainer.querySelector(
.addEventListener("click", openEditOccupancyType); ".button--editOccupancyType"
) as HTMLButtonElement
).addEventListener("click", openEditOccupancyType);
occupancyTypeContainer (
.querySelector(".button--addOccupancyTypeField") occupancyTypeContainer.querySelector(
.addEventListener("click", openAddOccupancyTypeField); ".button--addOccupancyTypeField"
) as HTMLButtonElement
).addEventListener("click", openAddOccupancyTypeField);
occupancyTypeContainer (
.querySelector(".button--moveOccupancyTypeUp") occupancyTypeContainer.querySelector(
.addEventListener("click", moveOccupancyTypeUp); ".button--moveOccupancyTypeUp"
) as HTMLButtonElement
).addEventListener("click", moveOccupancyTypeUp);
occupancyTypeContainer (
.querySelector(".button--moveOccupancyTypeDown") occupancyTypeContainer.querySelector(
.addEventListener("click", moveOccupancyTypeDown); ".button--moveOccupancyTypeDown"
) as HTMLButtonElement
).addEventListener("click", moveOccupancyTypeDown);
containerElement.append(occupancyTypeContainer); containerElement.append(occupancyTypeContainer);
} }
}; };
document.querySelector("#button--addOccupancyType").addEventListener("click", () => { (document.querySelector("#button--addOccupancyType") as HTMLButtonElement).addEventListener(
let addCloseModalFunction: () => void; "click",
() => {
let addCloseModalFunction: () => void;
const doAdd = (submitEvent: SubmitEvent) => { const doAdd = (submitEvent: SubmitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddOccupancyType", los.urlPrefix + "/admin/doAddOccupancyType",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
errorMessage?: string; errorMessage?: string;
occupancyTypes?: recordTypes.OccupancyType[]; occupancyTypes?: recordTypes.OccupancyType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
addCloseModalFunction(); addCloseModalFunction();
occupancyTypes = responseJSON.occupancyTypes; occupancyTypes = responseJSON.occupancyTypes!;
renderOccupancyTypes(); renderOccupancyTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding " + exports.aliases.occupancy + " Type", title: "Error Adding " + exports.aliases.occupancy + " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" 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.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(); renderOccupancyTypes();
})(); })();

View File

@ -1,12 +1,12 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los;
let workOrderTypes = exports.workOrderTypes; let workOrderTypes = exports.workOrderTypes;
delete exports.workOrderTypes; delete exports.workOrderTypes;
const updateWorkOrderType = (submitEvent) => { const updateWorkOrderType = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateWorkOrderType", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateWorkOrderType", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes; workOrderTypes = responseJSON.workOrderTypes;
bulmaJS.alert({ bulmaJS.alert({
@ -17,7 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Work Order Type", title: "Error Updating Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -27,7 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const workOrderTypeId = tableRowElement.dataset.workOrderTypeId; const workOrderTypeId = tableRowElement.dataset.workOrderTypeId;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteWorkOrderType", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteWorkOrderType", {
workOrderTypeId workOrderTypeId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
@ -46,7 +46,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Work Order Type", title: "Error Deleting Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -67,7 +67,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveWorkOrderTypeUp = (clickEvent) => { const moveWorkOrderTypeUp = (clickEvent) => {
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const workOrderTypeId = tableRowElement.dataset.workOrderTypeId; const workOrderTypeId = tableRowElement.dataset.workOrderTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveWorkOrderTypeUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveWorkOrderTypeUp", {
workOrderTypeId, workOrderTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -78,7 +78,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Work Order Type", title: "Error Moving Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -87,7 +87,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveWorkOrderTypeDown = (clickEvent) => { const moveWorkOrderTypeDown = (clickEvent) => {
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const workOrderTypeId = tableRowElement.dataset.workOrderTypeId; const workOrderTypeId = tableRowElement.dataset.workOrderTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveWorkOrderTypeDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveWorkOrderTypeDown", {
workOrderTypeId, workOrderTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -98,7 +98,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Work Order Type", title: "Error Moving Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -130,7 +130,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
('<div class="field has-addons">' + ('<div class="field has-addons">' +
'<div class="control">' + '<div class="control">' +
'<input class="input" name="workOrderType" type="text" value="' + '<input class="input" name="workOrderType" type="text" value="' +
cityssm.escapeHTML(workOrderType.workOrderType) + cityssm.escapeHTML(workOrderType.workOrderType || "") +
'" maxlength="100" aria-label="Work Order Type" required />' + '" maxlength="100" aria-label="Work Order Type" required />' +
"</div>" + "</div>" +
'<div class="control">' + '<div class="control">' +
@ -159,24 +159,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>" + "</div>" +
"</td>"; "</td>";
tableRowElement.querySelector("form").addEventListener("submit", updateWorkOrderType); tableRowElement.querySelector("form").addEventListener("submit", updateWorkOrderType);
tableRowElement tableRowElement.querySelector(".button--moveWorkOrderTypeUp").addEventListener("click", moveWorkOrderTypeUp);
.querySelector(".button--moveWorkOrderTypeUp") tableRowElement.querySelector(".button--moveWorkOrderTypeDown").addEventListener("click", moveWorkOrderTypeDown);
.addEventListener("click", moveWorkOrderTypeUp); tableRowElement.querySelector(".button--deleteWorkOrderType").addEventListener("click", deleteWorkOrderType);
tableRowElement
.querySelector(".button--moveWorkOrderTypeDown")
.addEventListener("click", moveWorkOrderTypeDown);
tableRowElement
.querySelector(".button--deleteWorkOrderType")
.addEventListener("click", deleteWorkOrderType);
containerElement.append(tableRowElement); containerElement.append(tableRowElement);
} }
}; };
document document.querySelector("#form--addWorkOrderType").addEventListener("submit", (submitEvent) => {
.querySelector("#form--addWorkOrderType")
.addEventListener("submit", (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
const formElement = submitEvent.currentTarget; const formElement = submitEvent.currentTarget;
cityssm.postJSON(urlPrefix + "/admin/doAddWorkOrderType", formElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddWorkOrderType", formElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes; workOrderTypes = responseJSON.workOrderTypes;
renderWorkOrderTypes(); renderWorkOrderTypes();
@ -186,7 +178,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding Work Order Type", title: "Error Adding Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -197,7 +189,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
delete exports.workOrderMilestoneTypes; delete exports.workOrderMilestoneTypes;
const updateWorkOrderMilestoneType = (submitEvent) => { const updateWorkOrderMilestoneType = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateWorkOrderMilestoneType", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateWorkOrderMilestoneType", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes; workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes;
bulmaJS.alert({ bulmaJS.alert({
@ -208,7 +200,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Work Order Milestone Type", title: "Error Updating Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -218,7 +210,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId; const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteWorkOrderMilestoneType", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteWorkOrderMilestoneType", {
workOrderMilestoneTypeId workOrderMilestoneTypeId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
@ -237,7 +229,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Work Order Milestone Type", title: "Error Deleting Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -258,7 +250,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveWorkOrderMilestoneTypeUp = (clickEvent) => { const moveWorkOrderMilestoneTypeUp = (clickEvent) => {
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId; const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveWorkOrderMilestoneTypeUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveWorkOrderMilestoneTypeUp", {
workOrderMilestoneTypeId, workOrderMilestoneTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -269,7 +261,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Work Order Milestone Type", title: "Error Moving Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -278,7 +270,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveWorkOrderMilestoneTypeDown = (clickEvent) => { const moveWorkOrderMilestoneTypeDown = (clickEvent) => {
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId; const workOrderMilestoneTypeId = tableRowElement.dataset.workOrderMilestoneTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveWorkOrderMilestoneTypeDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveWorkOrderMilestoneTypeDown", {
workOrderMilestoneTypeId, workOrderMilestoneTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -289,7 +281,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Work Order Milestone Type", title: "Error Moving Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -350,27 +342,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>" + "</div>" +
"</div>" + "</div>" +
"</td>"; "</td>";
tableRowElement tableRowElement.querySelector("form").addEventListener("submit", updateWorkOrderMilestoneType);
.querySelector("form") tableRowElement.querySelector(".button--moveWorkOrderMilestoneTypeUp").addEventListener("click", moveWorkOrderMilestoneTypeUp);
.addEventListener("submit", updateWorkOrderMilestoneType); tableRowElement.querySelector(".button--moveWorkOrderMilestoneTypeDown").addEventListener("click", moveWorkOrderMilestoneTypeDown);
tableRowElement tableRowElement.querySelector(".button--deleteWorkOrderMilestoneType").addEventListener("click", deleteWorkOrderMilestoneType);
.querySelector(".button--moveWorkOrderMilestoneTypeUp")
.addEventListener("click", moveWorkOrderMilestoneTypeUp);
tableRowElement
.querySelector(".button--moveWorkOrderMilestoneTypeDown")
.addEventListener("click", moveWorkOrderMilestoneTypeDown);
tableRowElement
.querySelector(".button--deleteWorkOrderMilestoneType")
.addEventListener("click", deleteWorkOrderMilestoneType);
containerElement.append(tableRowElement); containerElement.append(tableRowElement);
} }
}; };
document document.querySelector("#form--addWorkOrderMilestoneType").addEventListener("submit", (submitEvent) => {
.querySelector("#form--addWorkOrderMilestoneType")
.addEventListener("submit", (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
const formElement = submitEvent.currentTarget; const formElement = submitEvent.currentTarget;
cityssm.postJSON(urlPrefix + "/admin/doAddWorkOrderMilestoneType", formElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddWorkOrderMilestoneType", formElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes; workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes;
renderWorkOrderMilestoneTypes(); renderWorkOrderMilestoneTypes();
@ -380,7 +362,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding Work Order Milestone Type", title: "Error Adding Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -391,7 +373,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
delete exports.lotStatuses; delete exports.lotStatuses;
const updateLotStatus = (submitEvent) => { const updateLotStatus = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateLotStatus", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotStatus", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses; lotStatuses = responseJSON.lotStatuses;
bulmaJS.alert({ bulmaJS.alert({
@ -402,7 +384,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.lot + " Status", title: "Error Updating " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -412,7 +394,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const lotStatusId = tableRowElement.dataset.lotStatusId; const lotStatusId = tableRowElement.dataset.lotStatusId;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteLotStatus", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotStatus", {
lotStatusId lotStatusId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
@ -431,7 +413,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting " + exports.aliases.lot + " Status", title: "Error Deleting " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -454,7 +436,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveLotStatusUp = (clickEvent) => { const moveLotStatusUp = (clickEvent) => {
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const lotStatusId = tableRowElement.dataset.lotStatusId; const lotStatusId = tableRowElement.dataset.lotStatusId;
cityssm.postJSON(urlPrefix + "/admin/doMoveLotStatusUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotStatusUp", {
lotStatusId, lotStatusId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -465,7 +447,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving " + exports.aliases.lot + " Status", title: "Error Moving " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -474,7 +456,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveLotStatusDown = (clickEvent) => { const moveLotStatusDown = (clickEvent) => {
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const lotStatusId = tableRowElement.dataset.lotStatusId; const lotStatusId = tableRowElement.dataset.lotStatusId;
cityssm.postJSON(urlPrefix + "/admin/doMoveLotStatusDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotStatusDown", {
lotStatusId, lotStatusId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -485,7 +467,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving " + exports.aliases.lot + " Status", title: "Error Moving " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -549,24 +531,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>" + "</div>" +
"</td>"; "</td>";
tableRowElement.querySelector("form").addEventListener("submit", updateLotStatus); tableRowElement.querySelector("form").addEventListener("submit", updateLotStatus);
tableRowElement tableRowElement.querySelector(".button--moveLotStatusUp").addEventListener("click", moveLotStatusUp);
.querySelector(".button--moveLotStatusUp") tableRowElement.querySelector(".button--moveLotStatusDown").addEventListener("click", moveLotStatusDown);
.addEventListener("click", moveLotStatusUp); tableRowElement.querySelector(".button--deleteLotStatus").addEventListener("click", deleteLotStatus);
tableRowElement
.querySelector(".button--moveLotStatusDown")
.addEventListener("click", moveLotStatusDown);
tableRowElement
.querySelector(".button--deleteLotStatus")
.addEventListener("click", deleteLotStatus);
containerElement.append(tableRowElement); containerElement.append(tableRowElement);
} }
}; };
document document.querySelector("#form--addLotStatus").addEventListener("submit", (submitEvent) => {
.querySelector("#form--addLotStatus")
.addEventListener("submit", (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
const formElement = submitEvent.currentTarget; const formElement = submitEvent.currentTarget;
cityssm.postJSON(urlPrefix + "/admin/doAddLotStatus", formElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddLotStatus", formElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses; lotStatuses = responseJSON.lotStatuses;
renderLotStatuses(); renderLotStatuses();
@ -576,7 +550,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding " + exports.aliases.lot + " Status", title: "Error Adding " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -587,7 +561,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
delete exports.lotOccupantTypes; delete exports.lotOccupantTypes;
const updateLotOccupantType = (submitEvent) => { const updateLotOccupantType = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/admin/doUpdateLotOccupantType", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doUpdateLotOccupantType", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes; lotOccupantTypes = responseJSON.lotOccupantTypes;
bulmaJS.alert({ bulmaJS.alert({
@ -605,7 +579,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -615,7 +589,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId; const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/admin/doDeleteLotOccupantType", { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteLotOccupantType", {
lotOccupantTypeId lotOccupantTypeId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
@ -641,7 +615,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -670,7 +644,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveLotOccupantTypeUp = (clickEvent) => { const moveLotOccupantTypeUp = (clickEvent) => {
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId; const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveLotOccupantTypeUp", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotOccupantTypeUp", {
lotOccupantTypeId, lotOccupantTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -685,7 +659,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -694,7 +668,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const moveLotOccupantTypeDown = (clickEvent) => { const moveLotOccupantTypeDown = (clickEvent) => {
const tableRowElement = clickEvent.currentTarget.closest("tr"); const tableRowElement = clickEvent.currentTarget.closest("tr");
const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId; const lotOccupantTypeId = tableRowElement.dataset.lotOccupantTypeId;
cityssm.postJSON(urlPrefix + "/admin/doMoveLotOccupantTypeDown", { cityssm.postJSON(los.urlPrefix + "/admin/doMoveLotOccupantTypeDown", {
lotOccupantTypeId, lotOccupantTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
}, (responseJSON) => { }, (responseJSON) => {
@ -709,7 +683,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -787,25 +761,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>" + "</div>" +
"</div>" + "</div>" +
"</td>"; "</td>";
tableRowElement.querySelector("form").addEventListener("submit", updateLotOccupantType);
tableRowElement tableRowElement
.querySelector(".button--moveLotOccupantTypeUp") .querySelector("form")
.addEventListener("click", moveLotOccupantTypeUp); .addEventListener("submit", updateLotOccupantType);
tableRowElement tableRowElement.querySelector(".button--moveLotOccupantTypeUp").addEventListener("click", moveLotOccupantTypeUp);
.querySelector(".button--moveLotOccupantTypeDown") tableRowElement.querySelector(".button--moveLotOccupantTypeDown").addEventListener("click", moveLotOccupantTypeDown);
.addEventListener("click", moveLotOccupantTypeDown); tableRowElement.querySelector(".button--deleteLotOccupantType").addEventListener("click", deleteLotOccupantType);
tableRowElement
.querySelector(".button--deleteLotOccupantType")
.addEventListener("click", deleteLotOccupantType);
containerElement.append(tableRowElement); containerElement.append(tableRowElement);
} }
}; };
document document.querySelector("#form--addLotOccupantType").addEventListener("submit", (submitEvent) => {
.querySelector("#form--addLotOccupantType")
.addEventListener("submit", (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
const formElement = submitEvent.currentTarget; const formElement = submitEvent.currentTarget;
cityssm.postJSON(urlPrefix + "/admin/doAddLotOccupantType", formElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/admin/doAddLotOccupantType", formElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes; lotOccupantTypes = responseJSON.lotOccupantTypes;
renderLotOccupantTypes(); renderLotOccupantTypes();
@ -819,7 +787,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }

View File

@ -1,5 +1,6 @@
/* eslint-disable unicorn/prefer-module */ /* 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 recordTypes from "../types/recordTypes";
import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types"; import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
@ -10,7 +11,7 @@ declare const cityssm: cityssmGlobal;
declare const bulmaJS: BulmaJS; declare const bulmaJS: BulmaJS;
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los as globalTypes.LOS;
/* /*
* Work Order Types * Work Order Types
@ -23,7 +24,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateWorkOrderType", los.urlPrefix + "/admin/doUpdateWorkOrderType",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -31,7 +32,7 @@ declare const bulmaJS: BulmaJS;
workOrderTypes?: recordTypes.WorkOrderType[]; workOrderTypes?: recordTypes.WorkOrderType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes; workOrderTypes = responseJSON.workOrderTypes!;
bulmaJS.alert({ bulmaJS.alert({
message: "Work Order Type Updated Successfully", message: "Work Order Type Updated Successfully",
@ -40,7 +41,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Work Order Type", title: "Error Updating Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -49,13 +50,13 @@ declare const bulmaJS: BulmaJS;
}; };
const deleteWorkOrderType = (clickEvent: Event) => { 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 = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteWorkOrderType", los.urlPrefix + "/admin/doDeleteWorkOrderType",
{ {
workOrderTypeId workOrderTypeId
}, },
@ -65,7 +66,7 @@ declare const bulmaJS: BulmaJS;
workOrderTypes?: recordTypes.WorkOrderType[]; workOrderTypes?: recordTypes.WorkOrderType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes; workOrderTypes = responseJSON.workOrderTypes!;
if (workOrderTypes.length === 0) { if (workOrderTypes.length === 0) {
renderWorkOrderTypes(); renderWorkOrderTypes();
@ -80,7 +81,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Work Order Type", title: "Error Deleting Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -103,12 +104,12 @@ declare const bulmaJS: BulmaJS;
}; };
const moveWorkOrderTypeUp = (clickEvent: MouseEvent) => { const moveWorkOrderTypeUp = (clickEvent: MouseEvent) => {
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;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveWorkOrderTypeUp", los.urlPrefix + "/admin/doMoveWorkOrderTypeUp",
{ {
workOrderTypeId, workOrderTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -119,12 +120,12 @@ declare const bulmaJS: BulmaJS;
workOrderTypes?: recordTypes.WorkOrderType[]; workOrderTypes?: recordTypes.WorkOrderType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes; workOrderTypes = responseJSON.workOrderTypes!;
renderWorkOrderTypes(); renderWorkOrderTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Work Order Type", title: "Error Moving Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -133,12 +134,12 @@ declare const bulmaJS: BulmaJS;
}; };
const moveWorkOrderTypeDown = (clickEvent: MouseEvent) => { const moveWorkOrderTypeDown = (clickEvent: MouseEvent) => {
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;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveWorkOrderTypeDown", los.urlPrefix + "/admin/doMoveWorkOrderTypeDown",
{ {
workOrderTypeId, workOrderTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -149,12 +150,12 @@ declare const bulmaJS: BulmaJS;
workOrderTypes?: recordTypes.WorkOrderType[]; workOrderTypes?: recordTypes.WorkOrderType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes; workOrderTypes = responseJSON.workOrderTypes!;
renderWorkOrderTypes(); renderWorkOrderTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Work Order Type", title: "Error Moving Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -185,18 +186,18 @@ declare const bulmaJS: BulmaJS;
for (const workOrderType of workOrderTypes) { for (const workOrderType of workOrderTypes) {
const tableRowElement = document.createElement("tr"); const tableRowElement = document.createElement("tr");
tableRowElement.dataset.workOrderTypeId = workOrderType.workOrderTypeId.toString(); tableRowElement.dataset.workOrderTypeId = workOrderType.workOrderTypeId!.toString();
tableRowElement.innerHTML = tableRowElement.innerHTML =
"<td>" + "<td>" +
"<form>" + "<form>" +
'<input name="workOrderTypeId" type="hidden" value="' + '<input name="workOrderTypeId" type="hidden" value="' +
workOrderType.workOrderTypeId.toString() + workOrderType.workOrderTypeId!.toString() +
'" />' + '" />' +
('<div class="field has-addons">' + ('<div class="field has-addons">' +
'<div class="control">' + '<div class="control">' +
'<input class="input" name="workOrderType" type="text" value="' + '<input class="input" name="workOrderType" type="text" value="' +
cityssm.escapeHTML(workOrderType.workOrderType) + cityssm.escapeHTML(workOrderType.workOrderType || "") +
'" maxlength="100" aria-label="Work Order Type" required />' + '" maxlength="100" aria-label="Work Order Type" required />' +
"</div>" + "</div>" +
'<div class="control">' + '<div class="control">' +
@ -225,30 +226,33 @@ declare const bulmaJS: BulmaJS;
"</div>" + "</div>" +
"</td>"; "</td>";
tableRowElement.querySelector("form").addEventListener("submit", updateWorkOrderType); tableRowElement.querySelector("form")!.addEventListener("submit", updateWorkOrderType);
tableRowElement
.querySelector(".button--moveWorkOrderTypeUp") (
.addEventListener("click", moveWorkOrderTypeUp); tableRowElement.querySelector(".button--moveWorkOrderTypeUp") as HTMLButtonElement
tableRowElement ).addEventListener("click", moveWorkOrderTypeUp);
.querySelector(".button--moveWorkOrderTypeDown")
.addEventListener("click", moveWorkOrderTypeDown); (
tableRowElement tableRowElement.querySelector(".button--moveWorkOrderTypeDown") as HTMLButtonElement
.querySelector(".button--deleteWorkOrderType") ).addEventListener("click", moveWorkOrderTypeDown);
.addEventListener("click", deleteWorkOrderType);
(
tableRowElement.querySelector(".button--deleteWorkOrderType") as HTMLButtonElement
).addEventListener("click", deleteWorkOrderType);
containerElement.append(tableRowElement); containerElement.append(tableRowElement);
} }
}; };
document (document.querySelector("#form--addWorkOrderType") as HTMLFormElement).addEventListener(
.querySelector("#form--addWorkOrderType") "submit",
.addEventListener("submit", (submitEvent: SubmitEvent) => { (submitEvent: SubmitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
const formElement = submitEvent.currentTarget as HTMLFormElement; const formElement = submitEvent.currentTarget as HTMLFormElement;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddWorkOrderType", los.urlPrefix + "/admin/doAddWorkOrderType",
formElement, formElement,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -256,20 +260,21 @@ declare const bulmaJS: BulmaJS;
workOrderTypes?: recordTypes.WorkOrderType[]; workOrderTypes?: recordTypes.WorkOrderType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderTypes = responseJSON.workOrderTypes; workOrderTypes = responseJSON.workOrderTypes!;
renderWorkOrderTypes(); renderWorkOrderTypes();
formElement.reset(); formElement.reset();
formElement.querySelector("input").focus(); formElement.querySelector("input")!.focus();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding Work Order Type", title: "Error Adding Work Order Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
} }
); );
}); }
);
renderWorkOrderTypes(); renderWorkOrderTypes();
@ -285,7 +290,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateWorkOrderMilestoneType", los.urlPrefix + "/admin/doUpdateWorkOrderMilestoneType",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -293,7 +298,7 @@ declare const bulmaJS: BulmaJS;
workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[]; workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes; workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!;
bulmaJS.alert({ bulmaJS.alert({
message: "Work Order Milestone Type Updated Successfully", message: "Work Order Milestone Type Updated Successfully",
@ -302,7 +307,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Work Order Milestone Type", title: "Error Updating Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -311,13 +316,13 @@ declare const bulmaJS: BulmaJS;
}; };
const deleteWorkOrderMilestoneType = (clickEvent: Event) => { 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 = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteWorkOrderMilestoneType", los.urlPrefix + "/admin/doDeleteWorkOrderMilestoneType",
{ {
workOrderMilestoneTypeId workOrderMilestoneTypeId
}, },
@ -327,7 +332,7 @@ declare const bulmaJS: BulmaJS;
workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[]; workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes; workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!;
if (workOrderMilestoneTypes.length === 0) { if (workOrderMilestoneTypes.length === 0) {
renderWorkOrderMilestoneTypes(); renderWorkOrderMilestoneTypes();
@ -342,7 +347,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Work Order Milestone Type", title: "Error Deleting Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -365,12 +370,12 @@ declare const bulmaJS: BulmaJS;
}; };
const moveWorkOrderMilestoneTypeUp = (clickEvent: MouseEvent) => { const moveWorkOrderMilestoneTypeUp = (clickEvent: MouseEvent) => {
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;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveWorkOrderMilestoneTypeUp", los.urlPrefix + "/admin/doMoveWorkOrderMilestoneTypeUp",
{ {
workOrderMilestoneTypeId, workOrderMilestoneTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -381,12 +386,12 @@ declare const bulmaJS: BulmaJS;
workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[]; workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes; workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!;
renderWorkOrderMilestoneTypes(); renderWorkOrderMilestoneTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Work Order Milestone Type", title: "Error Moving Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -395,12 +400,12 @@ declare const bulmaJS: BulmaJS;
}; };
const moveWorkOrderMilestoneTypeDown = (clickEvent: MouseEvent) => { const moveWorkOrderMilestoneTypeDown = (clickEvent: MouseEvent) => {
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;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveWorkOrderMilestoneTypeDown", los.urlPrefix + "/admin/doMoveWorkOrderMilestoneTypeDown",
{ {
workOrderMilestoneTypeId, workOrderMilestoneTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -411,12 +416,12 @@ declare const bulmaJS: BulmaJS;
workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[]; workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes; workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!;
renderWorkOrderMilestoneTypes(); renderWorkOrderMilestoneTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving Work Order Milestone Type", title: "Error Moving Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -488,53 +493,63 @@ declare const bulmaJS: BulmaJS;
"</div>" + "</div>" +
"</td>"; "</td>";
tableRowElement (tableRowElement.querySelector("form") as HTMLFormElement).addEventListener(
.querySelector("form") "submit",
.addEventListener("submit", updateWorkOrderMilestoneType); updateWorkOrderMilestoneType
tableRowElement );
.querySelector(".button--moveWorkOrderMilestoneTypeUp")
.addEventListener("click", moveWorkOrderMilestoneTypeUp); (
tableRowElement tableRowElement.querySelector(
.querySelector(".button--moveWorkOrderMilestoneTypeDown") ".button--moveWorkOrderMilestoneTypeUp"
.addEventListener("click", moveWorkOrderMilestoneTypeDown); ) as HTMLButtonElement
tableRowElement ).addEventListener("click", moveWorkOrderMilestoneTypeUp);
.querySelector(".button--deleteWorkOrderMilestoneType")
.addEventListener("click", deleteWorkOrderMilestoneType); (
tableRowElement.querySelector(
".button--moveWorkOrderMilestoneTypeDown"
) as HTMLButtonElement
).addEventListener("click", moveWorkOrderMilestoneTypeDown);
(
tableRowElement.querySelector(
".button--deleteWorkOrderMilestoneType"
) as HTMLButtonElement
).addEventListener("click", deleteWorkOrderMilestoneType);
containerElement.append(tableRowElement); containerElement.append(tableRowElement);
} }
}; };
document (
.querySelector("#form--addWorkOrderMilestoneType") document.querySelector("#form--addWorkOrderMilestoneType") as HTMLFormElement
.addEventListener("submit", (submitEvent: SubmitEvent) => { ).addEventListener("submit", (submitEvent: SubmitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
const formElement = submitEvent.currentTarget as HTMLFormElement; const formElement = submitEvent.currentTarget as HTMLFormElement;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddWorkOrderMilestoneType", los.urlPrefix + "/admin/doAddWorkOrderMilestoneType",
formElement, formElement,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
errorMessage?: string; errorMessage?: string;
workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[]; workOrderMilestoneTypes?: recordTypes.WorkOrderMilestoneType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes; workOrderMilestoneTypes = responseJSON.workOrderMilestoneTypes!;
renderWorkOrderMilestoneTypes(); renderWorkOrderMilestoneTypes();
formElement.reset(); formElement.reset();
formElement.querySelector("input").focus(); formElement.querySelector("input")!.focus();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding Work Order Milestone Type", title: "Error Adding Work Order Milestone Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
}
} }
); }
}); );
});
renderWorkOrderMilestoneTypes(); renderWorkOrderMilestoneTypes();
@ -549,7 +564,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateLotStatus", los.urlPrefix + "/admin/doUpdateLotStatus",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -557,7 +572,7 @@ declare const bulmaJS: BulmaJS;
lotStatuses?: recordTypes.LotStatus[]; lotStatuses?: recordTypes.LotStatus[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses; lotStatuses = responseJSON.lotStatuses!;
bulmaJS.alert({ bulmaJS.alert({
message: exports.aliases.lot + " Status Updated Successfully", message: exports.aliases.lot + " Status Updated Successfully",
@ -566,7 +581,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.lot + " Status", title: "Error Updating " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -575,13 +590,13 @@ declare const bulmaJS: BulmaJS;
}; };
const deleteLotStatus = (clickEvent: Event) => { 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 = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteLotStatus", los.urlPrefix + "/admin/doDeleteLotStatus",
{ {
lotStatusId lotStatusId
}, },
@ -591,7 +606,7 @@ declare const bulmaJS: BulmaJS;
lotStatuses?: recordTypes.LotStatus[]; lotStatuses?: recordTypes.LotStatus[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses; lotStatuses = responseJSON.lotStatuses!;
if (lotStatuses.length === 0) { if (lotStatuses.length === 0) {
renderLotStatuses(); renderLotStatuses();
@ -606,7 +621,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting " + exports.aliases.lot + " Status", title: "Error Deleting " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -631,12 +646,12 @@ declare const bulmaJS: BulmaJS;
}; };
const moveLotStatusUp = (clickEvent: MouseEvent) => { const moveLotStatusUp = (clickEvent: MouseEvent) => {
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;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveLotStatusUp", los.urlPrefix + "/admin/doMoveLotStatusUp",
{ {
lotStatusId, lotStatusId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -647,12 +662,12 @@ declare const bulmaJS: BulmaJS;
lotStatuses?: recordTypes.LotStatus[]; lotStatuses?: recordTypes.LotStatus[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses; lotStatuses = responseJSON.lotStatuses!;
renderLotStatuses(); renderLotStatuses();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving " + exports.aliases.lot + " Status", title: "Error Moving " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -661,12 +676,12 @@ declare const bulmaJS: BulmaJS;
}; };
const moveLotStatusDown = (clickEvent: MouseEvent) => { const moveLotStatusDown = (clickEvent: MouseEvent) => {
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;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveLotStatusDown", los.urlPrefix + "/admin/doMoveLotStatusDown",
{ {
lotStatusId, lotStatusId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -677,12 +692,12 @@ declare const bulmaJS: BulmaJS;
lotStatuses?: recordTypes.LotStatus[]; lotStatuses?: recordTypes.LotStatus[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses; lotStatuses = responseJSON.lotStatuses!;
renderLotStatuses(); renderLotStatuses();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Moving " + exports.aliases.lot + " Status", title: "Error Moving " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -756,30 +771,33 @@ declare const bulmaJS: BulmaJS;
"</div>" + "</div>" +
"</td>"; "</td>";
tableRowElement.querySelector("form").addEventListener("submit", updateLotStatus); tableRowElement.querySelector("form")!.addEventListener("submit", updateLotStatus);
tableRowElement
.querySelector(".button--moveLotStatusUp") (
.addEventListener("click", moveLotStatusUp); tableRowElement.querySelector(".button--moveLotStatusUp") as HTMLButtonElement
tableRowElement ).addEventListener("click", moveLotStatusUp);
.querySelector(".button--moveLotStatusDown")
.addEventListener("click", moveLotStatusDown); (
tableRowElement tableRowElement.querySelector(".button--moveLotStatusDown") as HTMLButtonElement
.querySelector(".button--deleteLotStatus") ).addEventListener("click", moveLotStatusDown);
.addEventListener("click", deleteLotStatus);
(
tableRowElement.querySelector(".button--deleteLotStatus") as HTMLButtonElement
).addEventListener("click", deleteLotStatus);
containerElement.append(tableRowElement); containerElement.append(tableRowElement);
} }
}; };
document (document.querySelector("#form--addLotStatus") as HTMLFormElement).addEventListener(
.querySelector("#form--addLotStatus") "submit",
.addEventListener("submit", (submitEvent: SubmitEvent) => { (submitEvent: SubmitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
const formElement = submitEvent.currentTarget as HTMLFormElement; const formElement = submitEvent.currentTarget as HTMLFormElement;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddLotStatus", los.urlPrefix + "/admin/doAddLotStatus",
formElement, formElement,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -787,20 +805,21 @@ declare const bulmaJS: BulmaJS;
lotStatuses?: recordTypes.LotStatus[]; lotStatuses?: recordTypes.LotStatus[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotStatuses = responseJSON.lotStatuses; lotStatuses = responseJSON.lotStatuses!;
renderLotStatuses(); renderLotStatuses();
formElement.reset(); formElement.reset();
formElement.querySelector("input").focus(); formElement.querySelector("input")!.focus();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding " + exports.aliases.lot + " Status", title: "Error Adding " + exports.aliases.lot + " Status",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
} }
); );
}); }
);
renderLotStatuses(); renderLotStatuses();
@ -815,7 +834,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doUpdateLotOccupantType", los.urlPrefix + "/admin/doUpdateLotOccupantType",
submitEvent.currentTarget, submitEvent.currentTarget,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -823,7 +842,7 @@ declare const bulmaJS: BulmaJS;
lotOccupantTypes?: recordTypes.LotOccupantType[]; lotOccupantTypes?: recordTypes.LotOccupantType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes; lotOccupantTypes = responseJSON.lotOccupantTypes!;
bulmaJS.alert({ bulmaJS.alert({
message: message:
@ -841,7 +860,7 @@ declare const bulmaJS: BulmaJS;
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -850,13 +869,13 @@ declare const bulmaJS: BulmaJS;
}; };
const deleteLotOccupantType = (clickEvent: Event) => { 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 = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doDeleteLotOccupantType", los.urlPrefix + "/admin/doDeleteLotOccupantType",
{ {
lotOccupantTypeId lotOccupantTypeId
}, },
@ -866,7 +885,7 @@ declare const bulmaJS: BulmaJS;
lotOccupantTypes?: recordTypes.LotOccupantType[]; lotOccupantTypes?: recordTypes.LotOccupantType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes; lotOccupantTypes = responseJSON.lotOccupantTypes!;
if (lotOccupantTypes.length === 0) { if (lotOccupantTypes.length === 0) {
renderLotOccupantTypes(); renderLotOccupantTypes();
@ -890,7 +909,7 @@ declare const bulmaJS: BulmaJS;
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -922,12 +941,12 @@ declare const bulmaJS: BulmaJS;
}; };
const moveLotOccupantTypeUp = (clickEvent: MouseEvent) => { const moveLotOccupantTypeUp = (clickEvent: MouseEvent) => {
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;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveLotOccupantTypeUp", los.urlPrefix + "/admin/doMoveLotOccupantTypeUp",
{ {
lotOccupantTypeId, lotOccupantTypeId,
moveToTop: clickEvent.shiftKey ? "1" : "0" moveToTop: clickEvent.shiftKey ? "1" : "0"
@ -938,7 +957,7 @@ declare const bulmaJS: BulmaJS;
lotOccupantTypes?: recordTypes.LotOccupantType[]; lotOccupantTypes?: recordTypes.LotOccupantType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes; lotOccupantTypes = responseJSON.lotOccupantTypes!;
renderLotOccupantTypes(); renderLotOccupantTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
@ -948,7 +967,7 @@ declare const bulmaJS: BulmaJS;
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -957,12 +976,12 @@ declare const bulmaJS: BulmaJS;
}; };
const moveLotOccupantTypeDown = (clickEvent: MouseEvent) => { const moveLotOccupantTypeDown = (clickEvent: MouseEvent) => {
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;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doMoveLotOccupantTypeDown", los.urlPrefix + "/admin/doMoveLotOccupantTypeDown",
{ {
lotOccupantTypeId, lotOccupantTypeId,
moveToBottom: clickEvent.shiftKey ? "1" : "0" moveToBottom: clickEvent.shiftKey ? "1" : "0"
@ -973,7 +992,7 @@ declare const bulmaJS: BulmaJS;
lotOccupantTypes?: recordTypes.LotOccupantType[]; lotOccupantTypes?: recordTypes.LotOccupantType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes; lotOccupantTypes = responseJSON.lotOccupantTypes!;
renderLotOccupantTypes(); renderLotOccupantTypes();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
@ -983,7 +1002,7 @@ declare const bulmaJS: BulmaJS;
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -1072,30 +1091,37 @@ declare const bulmaJS: BulmaJS;
"</div>" + "</div>" +
"</td>"; "</td>";
tableRowElement.querySelector("form").addEventListener("submit", updateLotOccupantType);
tableRowElement tableRowElement
.querySelector(".button--moveLotOccupantTypeUp") .querySelector("form")!
.addEventListener("click", moveLotOccupantTypeUp); .addEventListener("submit", updateLotOccupantType);
tableRowElement
.querySelector(".button--moveLotOccupantTypeDown") (
.addEventListener("click", moveLotOccupantTypeDown); tableRowElement.querySelector(".button--moveLotOccupantTypeUp") as HTMLButtonElement
tableRowElement ).addEventListener("click", moveLotOccupantTypeUp);
.querySelector(".button--deleteLotOccupantType")
.addEventListener("click", deleteLotOccupantType); (
tableRowElement.querySelector(
".button--moveLotOccupantTypeDown"
) as HTMLButtonElement
).addEventListener("click", moveLotOccupantTypeDown);
(
tableRowElement.querySelector(".button--deleteLotOccupantType") as HTMLButtonElement
).addEventListener("click", deleteLotOccupantType);
containerElement.append(tableRowElement); containerElement.append(tableRowElement);
} }
}; };
document (document.querySelector("#form--addLotOccupantType") as HTMLFormElement).addEventListener(
.querySelector("#form--addLotOccupantType") "submit",
.addEventListener("submit", (submitEvent: SubmitEvent) => { (submitEvent: SubmitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
const formElement = submitEvent.currentTarget as HTMLFormElement; const formElement = submitEvent.currentTarget as HTMLFormElement;
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/admin/doAddLotOccupantType", los.urlPrefix + "/admin/doAddLotOccupantType",
formElement, formElement,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -1103,10 +1129,10 @@ declare const bulmaJS: BulmaJS;
lotOccupantTypes?: recordTypes.LotOccupantType[]; lotOccupantTypes?: recordTypes.LotOccupantType[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupantTypes = responseJSON.lotOccupantTypes; lotOccupantTypes = responseJSON.lotOccupantTypes!;
renderLotOccupantTypes(); renderLotOccupantTypes();
formElement.reset(); formElement.reset();
formElement.querySelector("input").focus(); formElement.querySelector("input")!.focus();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: title:
@ -1115,13 +1141,14 @@ declare const bulmaJS: BulmaJS;
" " + " " +
exports.aliases.occupant + exports.aliases.occupant +
" Type", " Type",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
} }
); );
}); }
);
renderLotOccupantTypes(); renderLotOccupantTypes();
})(); })();

View File

@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
const los = exports.los; 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) { for (const workOrderNumberCircleElement of workOrderNumberCircleElements) {
workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber); workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber || "");
} }
})(); })();

View File

@ -8,6 +8,6 @@ import type * as globalTypes from "../types/globalTypes";
const workOrderNumberCircleElements = document.querySelectorAll(".fa-circle[data-work-order-number") as NodeListOf<HTMLElement>; const workOrderNumberCircleElements = document.querySelectorAll(".fa-circle[data-work-order-number") as NodeListOf<HTMLElement>;
for (const workOrderNumberCircleElement of workOrderNumberCircleElements) { for (const workOrderNumberCircleElement of workOrderNumberCircleElements) {
workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber); workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber || "");
} }
})(); })();

View File

@ -2,16 +2,16 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const lotId = document.querySelector("#lot--lotId").value; const lotId = document.querySelector("#lot--lotId").value;
const isCreate = lotId === ""; const isCreate = lotId === "";
const formElement = document.querySelector("#form--lot"); const formElement = document.querySelector("#form--lot");
const updateLot = (formEvent) => { const updateLot = (formEvent) => {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/lots/" + (isCreate ? "doCreateLot" : "doUpdateLot"), formElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lots/" + (isCreate ? "doCreateLot" : "doUpdateLot"), formElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
if (isCreate) { if (isCreate) {
window.location.href = urlPrefix + "/lots/" + responseJSON.lotId + "/edit"; window.location.href =
los.urlPrefix + "/lots/" + responseJSON.lotId + "/edit";
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.lot, title: "Error Updating " + exports.aliases.lot,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -35,17 +35,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
document.querySelector("#button--deleteLot").addEventListener("click", (clickEvent) => { document.querySelector("#button--deleteLot").addEventListener("click", (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/lots/doDeleteLot", { cityssm.postJSON(los.urlPrefix + "/lots/doDeleteLot", {
lotId lotId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
cityssm.disableNavBlocker(); cityssm.disableNavBlocker();
window.location.href = urlPrefix + "/lots/?t=" + Date.now(); window.location.href = los.urlPrefix + "/lots/?t=" + Date.now();
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting " + exports.aliases.lot, title: "Error Deleting " + exports.aliases.lot,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -75,7 +75,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
const editComment = (submitEvent) => { const editComment = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/lots/doUpdateLotComment", editFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lots/doUpdateLotComment", editFormElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotComments = responseJSON.lotComments; lotComments = responseJSON.lotComments;
editCloseModalFunction(); editCloseModalFunction();
@ -84,7 +84,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Comment", title: "Error Updating Comment",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -123,7 +123,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const deleteLotComment = (clickEvent) => { const 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 = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/lots/doDeleteLotComment", { cityssm.postJSON(los.urlPrefix + "/lots/doDeleteLotComment", {
lotId, lotId,
lotCommentId lotCommentId
}, (responseJSON) => { }, (responseJSON) => {
@ -134,7 +134,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Removing Comment", title: "Error Removing Comment",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -174,14 +174,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
tableRowElement.dataset.lotCommentId = lotComment.lotCommentId.toString(); tableRowElement.dataset.lotCommentId = lotComment.lotCommentId.toString();
tableRowElement.innerHTML = tableRowElement.innerHTML =
"<td>" + "<td>" +
cityssm.escapeHTML(lotComment.recordCreate_userName) + cityssm.escapeHTML(lotComment.recordCreate_userName || "") +
"</td>" + "</td>" +
"<td>" + "<td>" +
lotComment.lotCommentDateString + lotComment.lotCommentDateString +
(lotComment.lotCommentTime === 0 ? "" : " " + lotComment.lotCommentTimeString) + (lotComment.lotCommentTime === 0 ? "" : " " + lotComment.lotCommentTimeString) +
"</td>" + "</td>" +
"<td>" + "<td>" +
cityssm.escapeHTML(lotComment.lotComment) + cityssm.escapeHTML(lotComment.lotComment || "") +
"</td>" + "</td>" +
('<td class="is-hidden-print">' + ('<td class="is-hidden-print">' +
'<div class="buttons are-small is-justify-content-end">' + '<div class="buttons are-small is-justify-content-end">' +
@ -194,12 +194,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</button>") + "</button>") +
"</div>" + "</div>" +
"</td>"); "</td>");
tableRowElement tableRowElement.querySelector(".button--edit").addEventListener("click", openEditLotComment);
.querySelector(".button--edit") tableRowElement.querySelector(".button--delete").addEventListener("click", deleteLotComment);
.addEventListener("click", openEditLotComment);
tableRowElement
.querySelector(".button--delete")
.addEventListener("click", deleteLotComment);
tableElement.querySelector("tbody").append(tableRowElement); tableElement.querySelector("tbody").append(tableRowElement);
} }
containerElement.innerHTML = ""; containerElement.innerHTML = "";
@ -209,7 +205,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCommentCloseModalFunction; let addCommentCloseModalFunction;
const doAddComment = (formEvent) => { const doAddComment = (formEvent) => {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/lots/doAddLotComment", formEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lots/doAddLotComment", formEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotComments = responseJSON.lotComments; lotComments = responseJSON.lotComments;
renderLotComments(); renderLotComments();

View File

@ -1,4 +1,4 @@
/* eslint-disable unicorn/prefer-module */ /* 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 * as recordTypes from "../types/recordTypes"; import type * as recordTypes from "../types/recordTypes";
@ -13,8 +13,6 @@ declare const bulmaJS: BulmaJS;
(() => { (() => {
const los = exports.los as globalTypes.LOS; const los = exports.los as globalTypes.LOS;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const lotId = (document.querySelector("#lot--lotId") as HTMLInputElement).value; const lotId = (document.querySelector("#lot--lotId") as HTMLInputElement).value;
const isCreate = lotId === ""; const isCreate = lotId === "";
@ -26,12 +24,13 @@ declare const bulmaJS: BulmaJS;
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/lots/" + (isCreate ? "doCreateLot" : "doUpdateLot"), los.urlPrefix + "/lots/" + (isCreate ? "doCreateLot" : "doUpdateLot"),
formElement, formElement,
(responseJSON: { success: boolean; lotId?: number; errorMessage?: string }) => { (responseJSON: { success: boolean; lotId?: number; errorMessage?: string }) => {
if (responseJSON.success) { if (responseJSON.success) {
if (isCreate) { if (isCreate) {
window.location.href = urlPrefix + "/lots/" + responseJSON.lotId + "/edit"; window.location.href =
los.urlPrefix + "/lots/" + responseJSON.lotId + "/edit";
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
message: exports.aliases.lot + " Updated Successfully", message: exports.aliases.lot + " Updated Successfully",
@ -41,7 +40,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.lot, title: "Error Updating " + exports.aliases.lot,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -54,43 +53,46 @@ declare const bulmaJS: BulmaJS;
los.initializeUnlockFieldButtons(formElement); los.initializeUnlockFieldButtons(formElement);
if (!isCreate) { if (!isCreate) {
document.querySelector("#button--deleteLot").addEventListener("click", (clickEvent) => { (document.querySelector("#button--deleteLot") as HTMLButtonElement).addEventListener(
clickEvent.preventDefault(); "click",
(clickEvent) => {
clickEvent.preventDefault();
const doDelete = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/lots/doDeleteLot", los.urlPrefix + "/lots/doDeleteLot",
{ {
lotId lotId
}, },
(responseJSON: { success: boolean; errorMessage?: string }) => { (responseJSON: { success: boolean; errorMessage?: string }) => {
if (responseJSON.success) { if (responseJSON.success) {
cityssm.disableNavBlocker(); cityssm.disableNavBlocker();
window.location.href = urlPrefix + "/lots/?t=" + Date.now(); window.location.href = los.urlPrefix + "/lots/?t=" + Date.now();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting " + exports.aliases.lot, title: "Error Deleting " + exports.aliases.lot,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
}
} }
} );
); };
};
bulmaJS.confirm({ bulmaJS.confirm({
title: "Delete " + exports.aliases.lot, title: "Delete " + exports.aliases.lot,
message: message:
"Are you sure you want to delete this " + "Are you sure you want to delete this " +
exports.aliases.lot.toLowerCase() + exports.aliases.lot.toLowerCase() +
"?", "?",
contextualColorName: "warning", contextualColorName: "warning",
okButton: { okButton: {
text: "Yes, Delete " + exports.aliases.lot, text: "Yes, Delete " + exports.aliases.lot,
callbackFunction: doDelete callbackFunction: doDelete
} }
}); });
}); }
);
} }
// Comments // Comments
@ -100,13 +102,13 @@ declare const bulmaJS: BulmaJS;
const openEditLotComment = (clickEvent: Event) => { const openEditLotComment = (clickEvent: Event) => {
const lotCommentId = Number.parseInt( const lotCommentId = Number.parseInt(
(clickEvent.currentTarget as HTMLElement).closest("tr").dataset.lotCommentId, (clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.lotCommentId!,
10 10
); );
const lotComment = lotComments.find((currentLotComment) => { const lotComment = lotComments.find((currentLotComment) => {
return currentLotComment.lotCommentId === lotCommentId; return currentLotComment.lotCommentId === lotCommentId;
}); })!;
let editFormElement: HTMLFormElement; let editFormElement: HTMLFormElement;
let editCloseModalFunction: () => void; let editCloseModalFunction: () => void;
@ -115,7 +117,7 @@ declare const bulmaJS: BulmaJS;
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/lots/doUpdateLotComment", los.urlPrefix + "/lots/doUpdateLotComment",
editFormElement, editFormElement,
(responseJSON: { (responseJSON: {
success: boolean; success: boolean;
@ -123,13 +125,13 @@ declare const bulmaJS: BulmaJS;
lotComments?: recordTypes.LotComment[]; lotComments?: recordTypes.LotComment[];
}) => { }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotComments = responseJSON.lotComments; lotComments = responseJSON.lotComments!;
editCloseModalFunction(); editCloseModalFunction();
renderLotComments(); renderLotComments();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Comment", title: "Error Updating Comment",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -149,26 +151,26 @@ declare const bulmaJS: BulmaJS;
( (
modalElement.querySelector("#lotCommentEdit--lotComment") as HTMLInputElement modalElement.querySelector("#lotCommentEdit--lotComment") as HTMLInputElement
).value = lotComment.lotComment; ).value = lotComment.lotComment!;
const lotCommentDateStringElement = modalElement.querySelector( const lotCommentDateStringElement = modalElement.querySelector(
"#lotCommentEdit--lotCommentDateString" "#lotCommentEdit--lotCommentDateString"
) as HTMLInputElement; ) as HTMLInputElement;
lotCommentDateStringElement.value = lotComment.lotCommentDateString; lotCommentDateStringElement.value = lotComment.lotCommentDateString!;
const currentDateString = cityssm.dateToString(new Date()); const currentDateString = cityssm.dateToString(new Date());
lotCommentDateStringElement.max = lotCommentDateStringElement.max =
lotComment.lotCommentDateString <= currentDateString lotComment.lotCommentDateString! <= currentDateString
? currentDateString ? currentDateString
: lotComment.lotCommentDateString; : lotComment.lotCommentDateString!;
( (
modalElement.querySelector( modalElement.querySelector(
"#lotCommentEdit--lotCommentTimeString" "#lotCommentEdit--lotCommentTimeString"
) as HTMLInputElement ) as HTMLInputElement
).value = lotComment.lotCommentTimeString; ).value = lotComment.lotCommentTimeString!;
}, },
onshown: (modalElement, closeModalFunction) => { onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -180,7 +182,7 @@ declare const bulmaJS: BulmaJS;
modalElement.querySelector("#lotCommentEdit--lotComment") as HTMLTextAreaElement modalElement.querySelector("#lotCommentEdit--lotComment") as HTMLTextAreaElement
).focus(); ).focus();
editFormElement = modalElement.querySelector("form"); editFormElement = modalElement.querySelector("form")!;
editFormElement.addEventListener("submit", editComment); editFormElement.addEventListener("submit", editComment);
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
@ -193,13 +195,13 @@ declare const bulmaJS: BulmaJS;
const deleteLotComment = (clickEvent: Event) => { const deleteLotComment = (clickEvent: Event) => {
const lotCommentId = Number.parseInt( const lotCommentId = Number.parseInt(
(clickEvent.currentTarget as HTMLElement).closest("tr").dataset.lotCommentId, (clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.lotCommentId!,
10 10
); );
const doDelete = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/lots/doDeleteLotComment", los.urlPrefix + "/lots/doDeleteLotComment",
{ {
lotId, lotId,
lotCommentId lotCommentId
@ -215,7 +217,7 @@ declare const bulmaJS: BulmaJS;
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Removing Comment", title: "Error Removing Comment",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -258,18 +260,18 @@ declare const bulmaJS: BulmaJS;
for (const lotComment of lotComments) { for (const lotComment of lotComments) {
const tableRowElement = document.createElement("tr"); const tableRowElement = document.createElement("tr");
tableRowElement.dataset.lotCommentId = lotComment.lotCommentId.toString(); tableRowElement.dataset.lotCommentId = lotComment.lotCommentId!.toString();
tableRowElement.innerHTML = tableRowElement.innerHTML =
"<td>" + "<td>" +
cityssm.escapeHTML(lotComment.recordCreate_userName) + cityssm.escapeHTML(lotComment.recordCreate_userName || "") +
"</td>" + "</td>" +
"<td>" + "<td>" +
lotComment.lotCommentDateString + lotComment.lotCommentDateString +
(lotComment.lotCommentTime === 0 ? "" : " " + lotComment.lotCommentTimeString) + (lotComment.lotCommentTime === 0 ? "" : " " + lotComment.lotCommentTimeString) +
"</td>" + "</td>" +
"<td>" + "<td>" +
cityssm.escapeHTML(lotComment.lotComment) + cityssm.escapeHTML(lotComment.lotComment || "") +
"</td>" + "</td>" +
('<td class="is-hidden-print">' + ('<td class="is-hidden-print">' +
'<div class="buttons are-small is-justify-content-end">' + '<div class="buttons are-small is-justify-content-end">' +
@ -283,14 +285,16 @@ declare const bulmaJS: BulmaJS;
"</div>" + "</div>" +
"</td>"); "</td>");
tableRowElement (tableRowElement.querySelector(".button--edit") as HTMLButtonElement).addEventListener(
.querySelector(".button--edit") "click",
.addEventListener("click", openEditLotComment); openEditLotComment
tableRowElement );
.querySelector(".button--delete")
.addEventListener("click", deleteLotComment);
tableElement.querySelector("tbody").append(tableRowElement); (
tableRowElement.querySelector(".button--delete") as HTMLButtonElement
).addEventListener("click", deleteLotComment);
tableElement.querySelector("tbody")!.append(tableRowElement);
} }
containerElement.innerHTML = ""; containerElement.innerHTML = "";
@ -304,11 +308,11 @@ declare const bulmaJS: BulmaJS;
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/lots/doAddLotComment", los.urlPrefix + "/lots/doAddLotComment",
formEvent.currentTarget, formEvent.currentTarget,
(responseJSON: { success: boolean; lotComments?: recordTypes.LotComment[] }) => { (responseJSON: { success: boolean; lotComments?: recordTypes.LotComment[] }) => {
if (responseJSON.success) { if (responseJSON.success) {
lotComments = responseJSON.lotComments; lotComments = responseJSON.lotComments!;
renderLotComments(); renderLotComments();
addCommentCloseModalFunction(); addCommentCloseModalFunction();
} }
@ -321,7 +325,7 @@ declare const bulmaJS: BulmaJS;
los.populateAliases(modalElement); los.populateAliases(modalElement);
(modalElement.querySelector("#lotCommentAdd--lotId") as HTMLInputElement).value = (modalElement.querySelector("#lotCommentAdd--lotId") as HTMLInputElement).value =
lotId; lotId;
modalElement.querySelector("form").addEventListener("submit", doAddComment); modalElement.querySelector("form")!.addEventListener("submit", doAddComment);
}, },
onshown(modalElement, closeModalFunction) { onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -338,7 +342,10 @@ declare const bulmaJS: BulmaJS;
}; };
if (!isCreate) { if (!isCreate) {
document.querySelector("#lotComments--add").addEventListener("click", openAddCommentModal); (document.querySelector("#lotComments--add") as HTMLButtonElement).addEventListener(
"click",
openAddCommentModal
);
renderLotComments(); renderLotComments();
} }
})(); })();

View File

@ -2,7 +2,6 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const lotOccupancyId = document.querySelector("#lotOccupancy--lotOccupancyId").value; const lotOccupancyId = document.querySelector("#lotOccupancy--lotOccupancyId").value;
const isCreate = lotOccupancyId === ""; const isCreate = lotOccupancyId === "";
let hasUnsavedChanges = false; let hasUnsavedChanges = false;
@ -20,14 +19,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
const formElement = document.querySelector("#form--lotOccupancy"); const formElement = document.querySelector("#form--lotOccupancy");
formElement.addEventListener("submit", (formEvent) => { formElement.addEventListener("submit", (formEvent) => {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(urlPrefix + cityssm.postJSON(los.urlPrefix +
"/lotOccupancies/" + "/lotOccupancies/" +
(isCreate ? "doCreateLotOccupancy" : "doUpdateLotOccupancy"), formElement, (responseJSON) => { (isCreate ? "doCreateLotOccupancy" : "doUpdateLotOccupancy"), formElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
clearUnsavedChanges(); clearUnsavedChanges();
if (isCreate || refreshAfterSave) { if (isCreate || refreshAfterSave) {
window.location.href = window.location.href =
urlPrefix + los.urlPrefix +
"/lotOccupancies/" + "/lotOccupancies/" +
responseJSON.lotOccupancyId + responseJSON.lotOccupancyId +
"/edit?t=" + "/edit?t=" +
@ -43,7 +42,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Saving " + exports.aliases.occupancy, title: "Error Saving " + exports.aliases.occupancy,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -54,23 +53,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
formInputElement.addEventListener("change", setUnsavedChanges); formInputElement.addEventListener("change", setUnsavedChanges);
} }
if (!isCreate) { if (!isCreate) {
document document.querySelector("#button--deleteLotOccupancy").addEventListener("click", (clickEvent) => {
.querySelector("#button--deleteLotOccupancy")
.addEventListener("click", (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/lotOccupancies/doDeleteLotOccupancy", { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancy", {
lotOccupancyId lotOccupancyId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
cityssm.disableNavBlocker(); cityssm.disableNavBlocker();
window.location.href = window.location.href =
urlPrefix + "/lotOccupancies?t=" + Date.now(); los.urlPrefix + "/lotOccupancies?t=" + Date.now();
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Record", title: "Error Deleting Record",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -100,7 +97,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>"; "</div>";
return; return;
} }
cityssm.postJSON(urlPrefix + "/lotOccupancies/doGetOccupancyTypeFields", { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doGetOccupancyTypeFields", {
occupancyTypeId: occupancyTypeIdElement.value occupancyTypeId: occupancyTypeIdElement.value
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.occupancyTypeFields.length === 0) { if (responseJSON.occupancyTypeFields.length === 0) {
@ -150,14 +147,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
'">' + '">' +
'<option value="">(Not Set)</option>' + '<option value="">(Not Set)</option>' +
"</select></div>"; "</select></div>";
fieldElement.querySelector("select").required = const selectElement = fieldElement.querySelector("select");
occupancyTypeField.isRequired; selectElement.required = occupancyTypeField.isRequired;
const optionValues = occupancyTypeField.occupancyTypeFieldValues.split("\n"); const optionValues = occupancyTypeField.occupancyTypeFieldValues.split("\n");
for (const optionValue of optionValues) { for (const optionValue of optionValues) {
const optionElement = document.createElement("option"); const optionElement = document.createElement("option");
optionElement.value = optionValue; optionElement.value = optionValue;
optionElement.textContent = optionValue; optionElement.textContent = optionValue;
fieldElement.querySelector("select").append(optionElement); selectElement.append(optionElement);
} }
} }
lotOccupancyFieldsContainerElement.append(fieldElement); lotOccupancyFieldsContainerElement.append(fieldElement);
@ -220,7 +217,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<i class="fas fa-3x fa-pulse fa-spinner" aria-hidden="true"></i><br />' + '<i class="fas fa-3x fa-pulse fa-spinner" aria-hidden="true"></i><br />' +
"Searching..." + "Searching..." +
"</p>"; "</p>";
cityssm.postJSON(urlPrefix + "/lots/doSearchLots", lotSelectFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lots/doSearchLots", lotSelectFormElement, (responseJSON) => {
if (responseJSON.count === 0) { if (responseJSON.count === 0) {
lotSelectResultsElement.innerHTML = lotSelectResultsElement.innerHTML =
'<div class="message is-info">' + '<div class="message is-info">' +
@ -241,10 +238,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
panelBlockElement.innerHTML = panelBlockElement.innerHTML =
'<div class="columns">' + '<div class="columns">' +
('<div class="column">' + ('<div class="column">' +
cityssm.escapeHTML(lot.lotName) + cityssm.escapeHTML(lot.lotName || "") +
"<br />" + "<br />" +
'<span class="is-size-7">' + '<span class="is-size-7">' +
cityssm.escapeHTML(lot.mapName) + cityssm.escapeHTML(lot.mapName || "") +
"</span>" + "</span>" +
"</div>") + "</div>") +
('<div class="column">' + ('<div class="column">' +
@ -265,14 +262,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
const createLotAndSelect = (submitEvent) => { const createLotAndSelect = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
const lotName = lotSelectModalElement.querySelector("#lotCreate--lotName").value; const lotName = lotSelectModalElement.querySelector("#lotCreate--lotName").value;
cityssm.postJSON(urlPrefix + "/lots/doCreateLot", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lots/doCreateLot", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
renderSelectedLotAndClose(responseJSON.lotId, lotName); renderSelectedLotAndClose(responseJSON.lotId, lotName);
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Creating " + exports.aliases.lot, title: "Error Creating " + exports.aliases.lot,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -330,9 +327,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
optionElement.textContent = map.mapName || "(No Name)"; optionElement.textContent = map.mapName || "(No Name)";
mapElement.append(optionElement); mapElement.append(optionElement);
} }
modalElement modalElement.querySelector("#form--lotCreate").addEventListener("submit", createLotAndSelect);
.querySelector("#form--lotCreate")
.addEventListener("submit", createLotAndSelect);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -340,9 +335,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
}); });
document.querySelector(".is-lot-view-button").addEventListener("click", () => { document.querySelector(".is-lot-view-button").addEventListener("click", () => {
const lotId = document.querySelector("#lotOccupancy--lotId").value; const lotId = document.querySelector("#lotOccupancy--lotId")
.value;
if (lotId) { if (lotId) {
window.open(urlPrefix + "/lots/" + lotId); window.open(los.urlPrefix + "/lots/" + lotId);
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
@ -365,9 +361,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}); });
los.initializeDatePickers(formElement); los.initializeDatePickers(formElement);
document document.querySelector("#lotOccupancy--occupancyStartDateString").addEventListener("change", () => {
.querySelector("#lotOccupancy--occupancyStartDateString")
.addEventListener("change", () => {
const endDatePicker = document.querySelector("#lotOccupancy--occupancyEndDateString").bulmaCalendar.datePicker; const endDatePicker = document.querySelector("#lotOccupancy--occupancyEndDateString").bulmaCalendar.datePicker;
endDatePicker.min = document.querySelector("#lotOccupancy--occupancyStartDateString").value; endDatePicker.min = document.querySelector("#lotOccupancy--occupancyStartDateString").value;
endDatePicker.refresh(); endDatePicker.refresh();
@ -385,7 +379,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
const editOccupant = (submitEvent) => { const editOccupant = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/lotOccupancies/doUpdateLotOccupancyOccupant", editFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doUpdateLotOccupancyOccupant", editFormElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants; lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
editCloseModalFunction(); editCloseModalFunction();
@ -394,7 +388,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.occupant, title: "Error Updating " + exports.aliases.occupant,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -447,10 +441,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
}; };
const deleteLotOccupancyOccupant = (clickEvent) => { const deleteLotOccupancyOccupant = (clickEvent) => {
const lotOccupantIndex = clickEvent.currentTarget.closest("tr").dataset const lotOccupantIndex = clickEvent.currentTarget.closest("tr")
.lotOccupantIndex; .dataset.lotOccupantIndex;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/lotOccupancies/doDeleteLotOccupancyOccupant", { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyOccupant", {
lotOccupancyId, lotOccupancyId,
lotOccupantIndex lotOccupantIndex
}, (responseJSON) => { }, (responseJSON) => {
@ -461,7 +455,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Removing " + exports.aliases.occupant, title: "Error Removing " + exports.aliases.occupant,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -514,7 +508,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
"<td>" + "<td>" +
cityssm.escapeHTML(lotOccupancyOccupant.lotOccupantType) + cityssm.escapeHTML(lotOccupancyOccupant.lotOccupantType) +
"</td>" + "</td>" +
("<td>" + cityssm.escapeHTML(lotOccupancyOccupant.occupantName) + "</td>") + ("<td>" +
cityssm.escapeHTML(lotOccupancyOccupant.occupantName || "") +
"</td>") +
("<td>" + ("<td>" +
(lotOccupancyOccupant.occupantAddress1 (lotOccupancyOccupant.occupantAddress1
? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) + "<br />" ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) + "<br />"
@ -525,9 +521,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
(lotOccupancyOccupant.occupantCity (lotOccupancyOccupant.occupantCity
? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ", " ? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ", "
: "") + : "") +
cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince) + cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince || "") +
"<br />" + "<br />" +
cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode) + cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode || "") +
"</td>") + "</td>") +
("<td>" + ("<td>" +
(lotOccupancyOccupant.occupantPhoneNumber (lotOccupancyOccupant.occupantPhoneNumber
@ -551,12 +547,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</button>") + "</button>") +
"</div>" + "</div>" +
"</td>"); "</td>");
tableRowElement tableRowElement.querySelector(".button--edit").addEventListener("click", openEditLotOccupancyOccupant);
.querySelector(".button--edit") tableRowElement.querySelector(".button--delete").addEventListener("click", deleteLotOccupancyOccupant);
.addEventListener("click", openEditLotOccupancyOccupant);
tableRowElement
.querySelector(".button--delete")
.addEventListener("click", deleteLotOccupancyOccupant);
tableElement.querySelector("tbody").append(tableRowElement); tableElement.querySelector("tbody").append(tableRowElement);
} }
occupantsContainer.append(tableElement); occupantsContainer.append(tableElement);
@ -567,7 +559,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let searchFormElement; let searchFormElement;
let searchResultsElement; let searchResultsElement;
const addOccupant = (formOrObject) => { const addOccupant = (formOrObject) => {
cityssm.postJSON(urlPrefix + "/lotOccupancies/doAddLotOccupancyOccupant", formOrObject, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyOccupant", formOrObject, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupancyOccupants = responseJSON.lotOccupancyOccupants; lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
addCloseModalFunction(); addCloseModalFunction();
@ -576,7 +568,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding " + exports.aliases.occupant, title: "Error Adding " + exports.aliases.occupant,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -623,7 +615,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' + '<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' +
"Searching..." + "Searching..." +
"</div>"; "</div>";
cityssm.postJSON(urlPrefix + "/lotOccupancies/doSearchPastOccupants", searchFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doSearchPastOccupants", searchFormElement, (responseJSON) => {
pastOccupantSearchResults = responseJSON.occupants; pastOccupantSearchResults = responseJSON.occupants;
const panelElement = document.createElement("div"); const panelElement = document.createElement("div");
panelElement.className = "panel"; panelElement.className = "panel";
@ -633,28 +625,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
panelBlockElement.dataset.index = index.toString(); panelBlockElement.dataset.index = index.toString();
panelBlockElement.innerHTML = panelBlockElement.innerHTML =
"<strong>" + "<strong>" +
cityssm.escapeHTML(occupant.occupantName) + cityssm.escapeHTML(occupant.occupantName || "") +
"</strong>" + "</strong>" +
"<br />" + "<br />" +
'<div class="columns">' + '<div class="columns">' +
('<div class="column">' + ('<div class="column">' +
cityssm.escapeHTML(occupant.occupantAddress1) + cityssm.escapeHTML(occupant.occupantAddress1 || "") +
"<br />" + "<br />" +
(occupant.occupantAddress2 (occupant.occupantAddress2
? cityssm.escapeHTML(occupant.occupantAddress2) + "<br />" ? cityssm.escapeHTML(occupant.occupantAddress2) +
"<br />"
: "") + : "") +
cityssm.escapeHTML(occupant.occupantCity) + cityssm.escapeHTML(occupant.occupantCity || "") +
", " + ", " +
cityssm.escapeHTML(occupant.occupantProvince) + cityssm.escapeHTML(occupant.occupantProvince || "") +
"<br />" + "<br />" +
cityssm.escapeHTML(occupant.occupantPostalCode) + cityssm.escapeHTML(occupant.occupantPostalCode || "") +
"</div>") + "</div>") +
('<div class="column">' + ('<div class="column">' +
(occupant.occupantPhoneNumber (occupant.occupantPhoneNumber
? cityssm.escapeHTML(occupant.occupantPhoneNumber) + ? cityssm.escapeHTML(occupant.occupantPhoneNumber) +
"<br />" "<br />"
: "") + : "") +
cityssm.escapeHTML(occupant.occupantEmailAddress) + cityssm.escapeHTML(occupant.occupantEmailAddress || "") +
"<br />" + "<br />" +
"</div>") + "</div>") +
"</div>"; "</div>";
@ -692,9 +685,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
searchFormElement.addEventListener("submit", (formEvent) => { searchFormElement.addEventListener("submit", (formEvent) => {
formEvent.preventDefault(); formEvent.preventDefault();
}); });
modalElement modalElement.querySelector("#lotOccupancyOccupantCopy--searchFilter").addEventListener("change", searchOccupants);
.querySelector("#lotOccupancyOccupantCopy--searchFilter")
.addEventListener("change", searchOccupants);
addCloseModalFunction = closeModalFunction; addCloseModalFunction = closeModalFunction;
}, },
onremoved: () => { onremoved: () => {
@ -717,7 +708,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
const editComment = (submitEvent) => { const editComment = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/lotOccupancies/doUpdateLotOccupancyComment", editFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doUpdateLotOccupancyComment", editFormElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupancyComments = responseJSON.lotOccupancyComments; lotOccupancyComments = responseJSON.lotOccupancyComments;
editCloseModalFunction(); editCloseModalFunction();
@ -726,7 +717,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Comment", title: "Error Updating Comment",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -766,7 +757,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset const lotOccupancyCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset
.lotOccupancyCommentId, 10); .lotOccupancyCommentId, 10);
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/lotOccupancies/doDeleteLotOccupancyComment", { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyComment", {
lotOccupancyId, lotOccupancyId,
lotOccupancyCommentId lotOccupancyCommentId
}, (responseJSON) => { }, (responseJSON) => {
@ -777,7 +768,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Removing Comment", title: "Error Removing Comment",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -818,7 +809,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
lotOccupancyComment.lotOccupancyCommentId.toString(); lotOccupancyComment.lotOccupancyCommentId.toString();
tableRowElement.innerHTML = tableRowElement.innerHTML =
"<td>" + "<td>" +
cityssm.escapeHTML(lotOccupancyComment.recordCreate_userName) + cityssm.escapeHTML(lotOccupancyComment.recordCreate_userName || "") +
"</td>" + "</td>" +
"<td>" + "<td>" +
lotOccupancyComment.lotOccupancyCommentDateString + lotOccupancyComment.lotOccupancyCommentDateString +
@ -827,7 +818,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
: " " + lotOccupancyComment.lotOccupancyCommentTimeString) + : " " + lotOccupancyComment.lotOccupancyCommentTimeString) +
"</td>" + "</td>" +
"<td>" + "<td>" +
cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment) + cityssm.escapeHTML(lotOccupancyComment.lotOccupancyComment || "") +
"</td>" + "</td>" +
('<td class="is-hidden-print">' + ('<td class="is-hidden-print">' +
'<div class="buttons are-small is-justify-content-end">' + '<div class="buttons are-small is-justify-content-end">' +
@ -840,12 +831,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</button>") + "</button>") +
"</div>" + "</div>" +
"</td>"); "</td>");
tableRowElement tableRowElement.querySelector(".button--edit").addEventListener("click", openEditLotOccupancyComment);
.querySelector(".button--edit") tableRowElement.querySelector(".button--delete").addEventListener("click", deleteLotOccupancyComment);
.addEventListener("click", openEditLotOccupancyComment);
tableRowElement
.querySelector(".button--delete")
.addEventListener("click", deleteLotOccupancyComment);
tableElement.querySelector("tbody").append(tableRowElement); tableElement.querySelector("tbody").append(tableRowElement);
} }
containerElement.innerHTML = ""; containerElement.innerHTML = "";
@ -856,7 +843,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCloseModalFunction; let addCloseModalFunction;
const addComment = (submitEvent) => { const addComment = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/lotOccupancies/doAddLotOccupancyComment", addFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyComment", addFormElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupancyComments = responseJSON.lotOccupancyComments; lotOccupancyComments = responseJSON.lotOccupancyComments;
addCloseModalFunction(); addCloseModalFunction();
@ -865,7 +852,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding Comment", title: "Error Adding Comment",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -906,7 +893,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const deleteLotOccupancyFee = (clickEvent) => { const deleteLotOccupancyFee = (clickEvent) => {
const feeId = clickEvent.currentTarget.closest(".container--lotOccupancyFee").dataset.feeId; const feeId = clickEvent.currentTarget.closest(".container--lotOccupancyFee").dataset.feeId;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/lotOccupancies/doDeleteLotOccupancyFee", { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyFee", {
lotOccupancyId, lotOccupancyId,
feeId feeId
}, (responseJSON) => { }, (responseJSON) => {
@ -917,7 +904,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Fee", title: "Error Deleting Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -973,7 +960,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<td colspan="' + '<td colspan="' +
(lotOccupancyFee.quantity === 1 ? "5" : "1") + (lotOccupancyFee.quantity === 1 ? "5" : "1") +
'">' + '">' +
cityssm.escapeHTML(lotOccupancyFee.feeName) + cityssm.escapeHTML(lotOccupancyFee.feeName || "") +
"</td>" + "</td>" +
(lotOccupancyFee.quantity === 1 (lotOccupancyFee.quantity === 1
? "" ? ""
@ -1017,7 +1004,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let feeFilterElement; let feeFilterElement;
let feeFilterResultsElement; let feeFilterResultsElement;
const doAddFee = (feeId, quantity = 1) => { const doAddFee = (feeId, quantity = 1) => {
cityssm.postJSON(urlPrefix + "/lotOccupancies/doAddLotOccupancyFee", { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyFee", {
lotOccupancyId, lotOccupancyId,
feeId, feeId,
quantity quantity
@ -1030,7 +1017,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding Fee", title: "Error Adding Fee",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -1075,7 +1062,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}; };
const filterFees = () => { const filterFees = () => {
const filterStringPieces = feeFilterElement.value.trim().toLowerCase().split(" "); const filterStringPieces = feeFilterElement.value
.trim()
.toLowerCase()
.split(" ");
feeFilterResultsElement.innerHTML = ""; feeFilterResultsElement.innerHTML = "";
for (const feeCategory of feeCategories) { for (const feeCategory of feeCategories) {
const categoryContainerElement = document.createElement("div"); const categoryContainerElement = document.createElement("div");
@ -1084,7 +1074,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
feeCategory.feeCategoryId.toString(); feeCategory.feeCategoryId.toString();
categoryContainerElement.innerHTML = categoryContainerElement.innerHTML =
'<h4 class="title is-5 mt-2">' + '<h4 class="title is-5 mt-2">' +
cityssm.escapeHTML(feeCategory.feeCategory) + cityssm.escapeHTML(feeCategory.feeCategory || "") +
"</h4>" + "</h4>" +
'<div class="panel mb-5"></div>'; '<div class="panel mb-5"></div>';
let hasFees = false; let hasFees = false;
@ -1111,10 +1101,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
panelBlockElement.href = "#"; panelBlockElement.href = "#";
panelBlockElement.innerHTML = panelBlockElement.innerHTML =
"<strong>" + "<strong>" +
cityssm.escapeHTML(fee.feeName) + cityssm.escapeHTML(fee.feeName || "") +
"</strong><br />" + "</strong><br />" +
"<small>" + "<small>" +
cityssm.escapeHTML(fee.feeDescription).replace(/\n/g, "<br />") + cityssm.escapeHTML(fee.feeDescription || "").replace(/\n/g, "<br />") +
"</small>"; "</small>";
panelBlockElement.addEventListener("click", tryAddFee); panelBlockElement.addEventListener("click", tryAddFee);
categoryContainerElement.querySelector(".panel").append(panelBlockElement); categoryContainerElement.querySelector(".panel").append(panelBlockElement);
@ -1128,7 +1118,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
onshow: (modalElement) => { onshow: (modalElement) => {
feeFilterElement = modalElement.querySelector("#feeSelect--feeName"); feeFilterElement = modalElement.querySelector("#feeSelect--feeName");
feeFilterResultsElement = modalElement.querySelector("#resultsContainer--feeSelect"); feeFilterResultsElement = modalElement.querySelector("#resultsContainer--feeSelect");
cityssm.postJSON(urlPrefix + "/lotOccupancies/doGetFees", { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doGetFees", {
lotOccupancyId lotOccupancyId
}, (responseJSON) => { }, (responseJSON) => {
feeCategories = responseJSON.feeCategories; feeCategories = responseJSON.feeCategories;
@ -1162,7 +1152,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const deleteLotOccupancyTransaction = (clickEvent) => { const deleteLotOccupancyTransaction = (clickEvent) => {
const transactionIndex = clickEvent.currentTarget.closest(".container--lotOccupancyTransaction").dataset.transactionIndex; const transactionIndex = clickEvent.currentTarget.closest(".container--lotOccupancyTransaction").dataset.transactionIndex;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/lotOccupancies/doDeleteLotOccupancyTransaction", { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyTransaction", {
lotOccupancyId, lotOccupancyId,
transactionIndex transactionIndex
}, (responseJSON) => { }, (responseJSON) => {
@ -1173,7 +1163,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Transaction", title: "Error Deleting Transaction",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -1228,10 +1218,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
lotOccupancyTransaction.transactionDateString + lotOccupancyTransaction.transactionDateString +
"</td>" + "</td>" +
("<td>" + ("<td>" +
cityssm.escapeHTML(lotOccupancyTransaction.externalReceiptNumber) + cityssm.escapeHTML(lotOccupancyTransaction.externalReceiptNumber || "") +
"<br />" + "<br />" +
"<small>" + "<small>" +
cityssm.escapeHTML(lotOccupancyTransaction.transactionNote) + cityssm.escapeHTML(lotOccupancyTransaction.transactionNote || "") +
"</small>" + "</small>" +
"</td>") + "</td>") +
('<td class="has-text-right">$' + ('<td class="has-text-right">$' +
@ -1268,7 +1258,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCloseModalFunction; let addCloseModalFunction;
const doAddTransaction = (submitEvent) => { const doAddTransaction = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/lotOccupancies/doAddLotOccupancyTransaction", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyTransaction", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
lotOccupancyTransactions = responseJSON.lotOccupancyTransactions; lotOccupancyTransactions = responseJSON.lotOccupancyTransactions;
addCloseModalFunction(); addCloseModalFunction();
@ -1277,7 +1267,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.confirm({ bulmaJS.confirm({
title: "Error Adding Transaction", title: "Error Adding Transaction",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -1297,7 +1287,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
onshown: (modalElement, closeModalFunction) => { onshown: (modalElement, closeModalFunction) => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
addCloseModalFunction = closeModalFunction; addCloseModalFunction = closeModalFunction;
modalElement.querySelector("form").addEventListener("submit", doAddTransaction); modalElement
.querySelector("form")
.addEventListener("submit", doAddTransaction);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los;
const lotOccupancyPrints = exports.lotOccupancyPrints; const lotOccupancyPrints = exports.lotOccupancyPrints;
const searchFilterFormElement = document.querySelector("#form--searchFilters"); const searchFilterFormElement = document.querySelector("#form--searchFilters");
const searchResultsContainerElement = document.querySelector("#container--searchResults"); const searchResultsContainerElement = document.querySelector("#container--searchResults");
@ -16,7 +16,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.aliases.occupancies + exports.aliases.occupancies +
"..." + "..." +
"</div>"; "</div>";
cityssm.postJSON(urlPrefix + "/lotOccupancies/doSearchLotOccupancies", searchFilterFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doSearchLotOccupancies", searchFilterFormElement, (responseJSON) => {
if (responseJSON.lotOccupancies.length === 0) { if (responseJSON.lotOccupancies.length === 0) {
searchResultsContainerElement.innerHTML = searchResultsContainerElement.innerHTML =
'<div class="message is-info">' + '<div class="message is-info">' +
@ -66,16 +66,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
for (const occupant of lotOccupancy.lotOccupancyOccupants) { for (const occupant of lotOccupancy.lotOccupancyOccupants) {
occupantsHTML += occupantsHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType) + cityssm.escapeHTML(occupant.lotOccupantType || "") +
'">' + '">' +
cityssm.escapeHTML(occupant.occupantName) + cityssm.escapeHTML(occupant.occupantName || "") +
"</span><br />"; "</span><br />";
} }
resultsTbodyElement.insertAdjacentHTML("beforeend", "<tr>" + resultsTbodyElement.insertAdjacentHTML("beforeend", "<tr>" +
('<td class="has-width-1">' + occupancyTimeHTML + "</td>") + ('<td class="has-width-1">' + occupancyTimeHTML + "</td>") +
("<td>" + ("<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/lotOccupancies/" + "/lotOccupancies/" +
lotOccupancy.lotOccupancyId + lotOccupancy.lotOccupancyId +
'">' + '">' +
@ -85,9 +85,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
("<td>" + ("<td>" +
(lotOccupancy.lotName (lotOccupancy.lotName
? '<a class="has-tooltip-right" data-tooltip="' + ? '<a class="has-tooltip-right" data-tooltip="' +
cityssm.escapeHTML(lotOccupancy.lotType) + cityssm.escapeHTML(lotOccupancy.lotType || "") +
'" href="' + '" href="' +
urlPrefix + los.urlPrefix +
"/lots/" + "/lots/" +
lotOccupancy.lotId + lotOccupancy.lotId +
'">' + '">' +
@ -111,7 +111,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
(lotOccupancyPrints.length > 0 (lotOccupancyPrints.length > 0
? "<td>" + ? "<td>" +
'<a class="button is-small" data-tooltip="Print" href="' + '<a class="button is-small" data-tooltip="Print" href="' +
urlPrefix + los.urlPrefix +
"/print/" + "/print/" +
lotOccupancyPrints[0] + lotOccupancyPrints[0] +
"/?lotOccupancyId=" + "/?lotOccupancyId=" +
@ -132,7 +132,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
("<th>" + cityssm.escapeHTML(exports.aliases.occupancyStartDate) + "</th>") + ("<th>" + cityssm.escapeHTML(exports.aliases.occupancyStartDate) + "</th>") +
"<th>End Date</th>" + "<th>End Date</th>" +
("<th>" + cityssm.escapeHTML(exports.aliases.occupants) + "</th>") + ("<th>" + cityssm.escapeHTML(exports.aliases.occupants) + "</th>") +
(lotOccupancyPrints.length > 0 ? '<th class="has-width-1"><span class="is-sr-only">Print</span></th>' : "") + (lotOccupancyPrints.length > 0
? '<th class="has-width-1"><span class="is-sr-only">Print</span></th>'
: "") +
"</tr></thead>" + "</tr></thead>" +
"<table>" + "<table>" +
'<div class="level">' + '<div class="level">' +
@ -166,14 +168,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>"; "</div>";
searchResultsContainerElement.querySelector("table").append(resultsTbodyElement); searchResultsContainerElement.querySelector("table").append(resultsTbodyElement);
if (offset > 0) { if (offset > 0) {
searchResultsContainerElement searchResultsContainerElement.querySelector("button[data-page='previous']").addEventListener("click", previousAndGetLotOccupancies);
.querySelector("button[data-page='previous']")
.addEventListener("click", previousAndGetLotOccupancies);
} }
if (limit + offset < responseJSON.count) { if (limit + offset < responseJSON.count) {
searchResultsContainerElement searchResultsContainerElement.querySelector("button[data-page='next']").addEventListener("click", nextAndGetLotOccupancies);
.querySelector("button[data-page='next']")
.addEventListener("click", nextAndGetLotOccupancies);
} }
}); });
}; };

View File

@ -1,5 +1,6 @@
/* eslint-disable unicorn/prefer-module */ /* 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 recordTypes from "../types/recordTypes";
import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types"; import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
@ -7,7 +8,7 @@ import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
declare const cityssm: cityssmGlobal; declare const cityssm: cityssmGlobal;
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los as globalTypes.LOS;
const lotOccupancyPrints: string[] = exports.lotOccupancyPrints; const lotOccupancyPrints: string[] = exports.lotOccupancyPrints;
@ -37,7 +38,7 @@ declare const cityssm: cityssmGlobal;
"</div>"; "</div>";
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/lotOccupancies/doSearchLotOccupancies", los.urlPrefix + "/lotOccupancies/doSearchLotOccupancies",
searchFilterFormElement, searchFilterFormElement,
(responseJSON: { count: number; lotOccupancies: recordTypes.LotOccupancy[] }) => { (responseJSON: { count: number; lotOccupancies: recordTypes.LotOccupancy[] }) => {
if (responseJSON.lotOccupancies.length === 0) { if (responseJSON.lotOccupancies.length === 0) {
@ -59,9 +60,9 @@ declare const cityssm: cityssmGlobal;
let occupancyTimeHTML = ""; let occupancyTimeHTML = "";
if ( if (
lotOccupancy.occupancyStartDateString <= nowDateString && lotOccupancy.occupancyStartDateString! <= nowDateString &&
(lotOccupancy.occupancyEndDateString === "" || (lotOccupancy.occupancyEndDateString === "" ||
lotOccupancy.occupancyEndDateString >= nowDateString) lotOccupancy.occupancyEndDateString! >= nowDateString)
) { ) {
occupancyTimeHTML = occupancyTimeHTML =
'<span class="has-tooltip-right" data-tooltip="Current ' + '<span class="has-tooltip-right" data-tooltip="Current ' +
@ -71,7 +72,7 @@ declare const cityssm: cityssmGlobal;
exports.aliases.occupancy + exports.aliases.occupancy +
'"></i>') + '"></i>') +
"</span>"; "</span>";
} else if (lotOccupancy.occupancyStartDateString > nowDateString) { } else if (lotOccupancy.occupancyStartDateString! > nowDateString) {
occupancyTimeHTML = occupancyTimeHTML =
'<span class="has-tooltip-right" data-tooltip="Future ' + '<span class="has-tooltip-right" data-tooltip="Future ' +
exports.aliases.occupancy + exports.aliases.occupancy +
@ -93,12 +94,12 @@ declare const cityssm: cityssmGlobal;
let occupantsHTML = ""; let occupantsHTML = "";
for (const occupant of lotOccupancy.lotOccupancyOccupants) { for (const occupant of lotOccupancy.lotOccupancyOccupants!) {
occupantsHTML += occupantsHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType) + cityssm.escapeHTML(occupant.lotOccupantType || "") +
'">' + '">' +
cityssm.escapeHTML(occupant.occupantName) + cityssm.escapeHTML(occupant.occupantName || "") +
"</span><br />"; "</span><br />";
} }
@ -108,7 +109,7 @@ declare const cityssm: cityssmGlobal;
('<td class="has-width-1">' + occupancyTimeHTML + "</td>") + ('<td class="has-width-1">' + occupancyTimeHTML + "</td>") +
("<td>" + ("<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/lotOccupancies/" + "/lotOccupancies/" +
lotOccupancy.lotOccupancyId + lotOccupancy.lotOccupancyId +
'">' + '">' +
@ -118,9 +119,9 @@ declare const cityssm: cityssmGlobal;
("<td>" + ("<td>" +
(lotOccupancy.lotName (lotOccupancy.lotName
? '<a class="has-tooltip-right" data-tooltip="' + ? '<a class="has-tooltip-right" data-tooltip="' +
cityssm.escapeHTML(lotOccupancy.lotType) + cityssm.escapeHTML(lotOccupancy.lotType || "") +
'" href="' + '" href="' +
urlPrefix + los.urlPrefix +
"/lots/" + "/lots/" +
lotOccupancy.lotId + lotOccupancy.lotId +
'">' + '">' +
@ -144,7 +145,7 @@ declare const cityssm: cityssmGlobal;
(lotOccupancyPrints.length > 0 (lotOccupancyPrints.length > 0
? "<td>" + ? "<td>" +
'<a class="button is-small" data-tooltip="Print" href="' + '<a class="button is-small" data-tooltip="Print" href="' +
urlPrefix + los.urlPrefix +
"/print/" + "/print/" +
lotOccupancyPrints[0] + lotOccupancyPrints[0] +
"/?lotOccupancyId=" + "/?lotOccupancyId=" +
@ -167,7 +168,9 @@ declare const cityssm: cityssmGlobal;
("<th>" + cityssm.escapeHTML(exports.aliases.occupancyStartDate) + "</th>") + ("<th>" + cityssm.escapeHTML(exports.aliases.occupancyStartDate) + "</th>") +
"<th>End Date</th>" + "<th>End Date</th>" +
("<th>" + cityssm.escapeHTML(exports.aliases.occupants) + "</th>") + ("<th>" + cityssm.escapeHTML(exports.aliases.occupants) + "</th>") +
(lotOccupancyPrints.length > 0 ? '<th class="has-width-1"><span class="is-sr-only">Print</span></th>' : "") + (lotOccupancyPrints.length > 0
? '<th class="has-width-1"><span class="is-sr-only">Print</span></th>'
: "") +
"</tr></thead>" + "</tr></thead>" +
"<table>" + "<table>" +
'<div class="level">' + '<div class="level">' +
@ -200,18 +203,22 @@ declare const cityssm: cityssmGlobal;
"</div>") + "</div>") +
"</div>"; "</div>";
searchResultsContainerElement.querySelector("table").append(resultsTbodyElement); searchResultsContainerElement.querySelector("table")!.append(resultsTbodyElement);
if (offset > 0) { if (offset > 0) {
searchResultsContainerElement (
.querySelector("button[data-page='previous']") searchResultsContainerElement.querySelector(
.addEventListener("click", previousAndGetLotOccupancies); "button[data-page='previous']"
) as HTMLButtonElement
).addEventListener("click", previousAndGetLotOccupancies);
} }
if (limit + offset < responseJSON.count) { if (limit + offset < responseJSON.count) {
searchResultsContainerElement (
.querySelector("button[data-page='next']") searchResultsContainerElement.querySelector(
.addEventListener("click", nextAndGetLotOccupancies); "button[data-page='next']"
) as HTMLButtonElement
).addEventListener("click", nextAndGetLotOccupancies);
} }
} }
); );

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los;
const searchFilterFormElement = document.querySelector("#form--searchFilters"); const searchFilterFormElement = document.querySelector("#form--searchFilters");
const searchResultsContainerElement = document.querySelector("#container--searchResults"); const searchResultsContainerElement = document.querySelector("#container--searchResults");
const limit = Number.parseInt(document.querySelector("#searchFilter--limit").value, 10); const limit = Number.parseInt(document.querySelector("#searchFilter--limit").value, 10);
@ -15,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
exports.aliases.lots + exports.aliases.lots +
"..." + "..." +
"</div>"; "</div>";
cityssm.postJSON(urlPrefix + "/lots/doSearchLots", searchFilterFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lots/doSearchLots", searchFilterFormElement, (responseJSON) => {
if (responseJSON.lots.length === 0) { if (responseJSON.lots.length === 0) {
searchResultsContainerElement.innerHTML = searchResultsContainerElement.innerHTML =
'<div class="message is-info">' + '<div class="message is-info">' +
@ -30,16 +30,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
resultsTbodyElement.insertAdjacentHTML("beforeend", "<tr>" + resultsTbodyElement.insertAdjacentHTML("beforeend", "<tr>" +
("<td>" + ("<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/lots/" + "/lots/" +
lot.lotId + lot.lotId +
'">' + '">' +
cityssm.escapeHTML(lot.lotName) + cityssm.escapeHTML(lot.lotName || "") +
"</a>" + "</a>" +
"</td>") + "</td>") +
("<td>" + ("<td>" +
'<a href="' + '<a href="' +
urlPrefix + los.urlPrefix +
"/maps/" + "/maps/" +
lot.mapId + lot.mapId +
'">' + '">' +
@ -48,10 +48,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
: '<span class="has-text-grey">(No Name)</span>') + : '<span class="has-text-grey">(No Name)</span>') +
"</a>" + "</a>" +
"</td>") + "</td>") +
("<td>" + cityssm.escapeHTML(lot.lotType) + "</td>") + ("<td>" + cityssm.escapeHTML(lot.lotType || "") + "</td>") +
("<td>" + ("<td>" +
(lot.lotStatusId (lot.lotStatusId
? cityssm.escapeHTML(lot.lotStatus) ? cityssm.escapeHTML(lot.lotStatus || "")
: '<span class="has-text-grey">(No Status)</span>') + : '<span class="has-text-grey">(No Status)</span>') +
"<br />" + "<br />" +
(lot.lotOccupancyCount > 0 (lot.lotOccupancyCount > 0
@ -100,14 +100,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>"; "</div>";
searchResultsContainerElement.querySelector("table").append(resultsTbodyElement); searchResultsContainerElement.querySelector("table").append(resultsTbodyElement);
if (offset > 0) { if (offset > 0) {
searchResultsContainerElement searchResultsContainerElement.querySelector("button[data-page='previous']").addEventListener("click", previousAndGetLots);
.querySelector("button[data-page='previous']")
.addEventListener("click", previousAndGetLots);
} }
if (limit + offset < responseJSON.count) { if (limit + offset < responseJSON.count) {
searchResultsContainerElement searchResultsContainerElement.querySelector("button[data-page='next']").addEventListener("click", nextAndGetLots);
.querySelector("button[data-page='next']")
.addEventListener("click", nextAndGetLots);
} }
}); });
}; };

View File

@ -1,5 +1,6 @@
/* eslint-disable unicorn/prefer-module */ /* 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 recordTypes from "../types/recordTypes";
import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types"; import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
@ -7,7 +8,7 @@ import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
declare const cityssm: cityssmGlobal; declare const cityssm: cityssmGlobal;
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los as globalTypes.LOS;
const searchFilterFormElement = document.querySelector( const searchFilterFormElement = document.querySelector(
"#form--searchFilters" "#form--searchFilters"
@ -34,7 +35,7 @@ declare const cityssm: cityssmGlobal;
"</div>"; "</div>";
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/lots/doSearchLots", los.urlPrefix + "/lots/doSearchLots",
searchFilterFormElement, searchFilterFormElement,
(responseJSON: { count: number; lots: recordTypes.Lot[] }) => { (responseJSON: { count: number; lots: recordTypes.Lot[] }) => {
if (responseJSON.lots.length === 0) { if (responseJSON.lots.length === 0) {
@ -56,16 +57,16 @@ declare const cityssm: cityssmGlobal;
"<tr>" + "<tr>" +
("<td>" + ("<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/lots/" + "/lots/" +
lot.lotId + lot.lotId +
'">' + '">' +
cityssm.escapeHTML(lot.lotName) + cityssm.escapeHTML(lot.lotName || "") +
"</a>" + "</a>" +
"</td>") + "</td>") +
("<td>" + ("<td>" +
'<a href="' + '<a href="' +
urlPrefix + los.urlPrefix +
"/maps/" + "/maps/" +
lot.mapId + lot.mapId +
'">' + '">' +
@ -74,13 +75,13 @@ declare const cityssm: cityssmGlobal;
: '<span class="has-text-grey">(No Name)</span>') + : '<span class="has-text-grey">(No Name)</span>') +
"</a>" + "</a>" +
"</td>") + "</td>") +
("<td>" + cityssm.escapeHTML(lot.lotType) + "</td>") + ("<td>" + cityssm.escapeHTML(lot.lotType || "") + "</td>") +
("<td>" + ("<td>" +
(lot.lotStatusId (lot.lotStatusId
? cityssm.escapeHTML(lot.lotStatus) ? cityssm.escapeHTML(lot.lotStatus || "")
: '<span class="has-text-grey">(No Status)</span>') + : '<span class="has-text-grey">(No Status)</span>') +
"<br />" + "<br />" +
(lot.lotOccupancyCount > 0 (lot.lotOccupancyCount! > 0
? '<span class="is-size-7">Currently Occupied</span>' ? '<span class="is-size-7">Currently Occupied</span>'
: "") + : "") +
"</td>") + "</td>") +
@ -127,18 +128,22 @@ declare const cityssm: cityssmGlobal;
"</div>") + "</div>") +
"</div>"; "</div>";
searchResultsContainerElement.querySelector("table").append(resultsTbodyElement); searchResultsContainerElement.querySelector("table")!.append(resultsTbodyElement);
if (offset > 0) { if (offset > 0) {
searchResultsContainerElement (
.querySelector("button[data-page='previous']") searchResultsContainerElement.querySelector(
.addEventListener("click", previousAndGetLots); "button[data-page='previous']"
) as HTMLButtonElement
).addEventListener("click", previousAndGetLots);
} }
if (limit + offset < responseJSON.count) { if (limit + offset < responseJSON.count) {
searchResultsContainerElement (
.querySelector("button[data-page='next']") searchResultsContainerElement.querySelector(
.addEventListener("click", nextAndGetLots); "button[data-page='next']"
) as HTMLButtonElement
).addEventListener("click", nextAndGetLots);
} }
} }
); );

View File

@ -1,4 +1,4 @@
/* eslint-disable unicorn/prefer-module */ /* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
import * as globalTypes from "../types/globalTypes"; import * as globalTypes from "../types/globalTypes";
@ -9,7 +9,7 @@ import * as globalTypes from "../types/globalTypes";
if (mapContainerElement) { if (mapContainerElement) {
(exports.los as globalTypes.LOS).highlightMap( (exports.los as globalTypes.LOS).highlightMap(
mapContainerElement, mapContainerElement,
mapContainerElement.dataset.mapKey, mapContainerElement.dataset.mapKey!,
"success" "success"
); );
} }

View File

@ -12,11 +12,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
svgId = svgId.slice(0, Math.max(0, svgId.lastIndexOf("-"))); svgId = svgId.slice(0, Math.max(0, svgId.lastIndexOf("-")));
} }
if (svgElementToHighlight) { if (svgElementToHighlight) {
svgElementToHighlight.style.fill = null; svgElementToHighlight.style.fill = "";
svgElementToHighlight.classList.add("highlight", "is-" + contextualClass); svgElementToHighlight.classList.add("highlight", "is-" + contextualClass);
const childPathElements = svgElementToHighlight.querySelectorAll("path"); const childPathElements = svgElementToHighlight.querySelectorAll("path");
for (const pathElement of childPathElements) { for (const pathElement of childPathElements) {
pathElement.style.fill = null; pathElement.style.fill = "";
} }
} }
}; };
@ -194,6 +194,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
}; };
const los = { const los = {
urlPrefix: document.querySelector("main").dataset.urlPrefix,
apiKey: document.querySelector("main").dataset.apiKey,
highlightMap, highlightMap,
initializeUnlockFieldButtons, initializeUnlockFieldButtons,
initializeDatePickers, initializeDatePickers,

View File

@ -1,4 +1,4 @@
/* eslint-disable unicorn/prefer-module */ /* 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 { Options as BulmaCalendarOptions } from "bulma-calendar"; import type { Options as BulmaCalendarOptions } from "bulma-calendar";
@ -17,7 +17,7 @@ declare const bulmaJS: BulmaJS;
// Search for ID // Search for ID
let svgId = mapKey; let svgId = mapKey;
let svgElementToHighlight: SVGElement; let svgElementToHighlight: SVGElement | null;
// eslint-disable-next-line no-constant-condition // eslint-disable-next-line no-constant-condition
while (true) { while (true) {
@ -32,20 +32,20 @@ declare const bulmaJS: BulmaJS;
if (svgElementToHighlight) { if (svgElementToHighlight) {
// eslint-disable-next-line unicorn/no-null // eslint-disable-next-line unicorn/no-null
svgElementToHighlight.style.fill = null; svgElementToHighlight.style.fill = "";
svgElementToHighlight.classList.add("highlight", "is-" + contextualClass); svgElementToHighlight.classList.add("highlight", "is-" + contextualClass);
const childPathElements = svgElementToHighlight.querySelectorAll("path"); const childPathElements = svgElementToHighlight.querySelectorAll("path");
for (const pathElement of childPathElements) { for (const pathElement of childPathElements) {
// eslint-disable-next-line unicorn/no-null // eslint-disable-next-line unicorn/no-null
pathElement.style.fill = null; pathElement.style.fill = "";
} }
} }
}; };
const unlockField = (clickEvent: Event) => { const unlockField = (clickEvent: Event) => {
const fieldElement = (clickEvent.currentTarget as HTMLElement).closest(".field"); const fieldElement = (clickEvent.currentTarget as HTMLElement).closest(".field")!;
const inputOrSelectElement = fieldElement.querySelector("input, select") as const inputOrSelectElement = fieldElement.querySelector("input, select") as
| HTMLInputElement | HTMLInputElement
@ -115,7 +115,7 @@ declare const bulmaJS: BulmaJS;
// Disable html scrolling when calendar is open // Disable html scrolling when calendar is open
cal.on("show", () => { cal.on("show", () => {
document.querySelector("html").classList.add("is-clipped"); document.querySelector("html")!.classList.add("is-clipped");
}); });
// Reenable scrolling, if a modal window is not open // Reenable scrolling, if a modal window is not open
@ -160,7 +160,7 @@ declare const bulmaJS: BulmaJS;
const labelElement = document.querySelector("label[for='" + dateElement.id + "']"); const labelElement = document.querySelector("label[for='" + dateElement.id + "']");
if (labelElement) { if (labelElement) {
datepickerElement.querySelector(".datetimepicker-dummy-input").ariaLabel = labelElement.textContent; datepickerElement.querySelector(".datetimepicker-dummy-input")!.ariaLabel = labelElement.textContent;
} }
} }
}; };
@ -196,7 +196,7 @@ declare const bulmaJS: BulmaJS;
// Disable html scrolling when calendar is open // Disable html scrolling when calendar is open
cal.on("show", () => { cal.on("show", () => {
document.querySelector("html").classList.add("is-clipped"); document.querySelector("html")!.classList.add("is-clipped");
}); });
// Reenable scrolling, if a modal window is not open // Reenable scrolling, if a modal window is not open
@ -290,15 +290,17 @@ declare const bulmaJS: BulmaJS;
return exports.randomColor({ return exports.randomColor({
seed: actualSeedString + actualSeedString, seed: actualSeedString + actualSeedString,
hue: hues[actualSeedString.codePointAt(actualSeedString.length - 1) % hues.length], hue: hues[actualSeedString.codePointAt(actualSeedString.length - 1)! % hues.length],
luminosity: luminosity:
luminosity[ luminosity[
actualSeedString.codePointAt(actualSeedString.length - 2) % luminosity.length actualSeedString.codePointAt(actualSeedString.length - 2)! % luminosity.length
] ]
}); });
}; };
const los: globalTypes.LOS = { const los: globalTypes.LOS = {
urlPrefix: document.querySelector("main")!.dataset.urlPrefix!,
apiKey: document.querySelector("main")!.dataset.apiKey!,
highlightMap, highlightMap,
initializeUnlockFieldButtons, initializeUnlockFieldButtons,
initializeDatePickers, initializeDatePickers,

View File

@ -1,19 +1,18 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los;
const mapId = document.querySelector("#map--mapId") const mapId = document.querySelector("#map--mapId").value;
.value;
const isCreate = mapId === ""; const isCreate = mapId === "";
const mapForm = document.querySelector("#form--map"); const mapForm = document.querySelector("#form--map");
const updateMap = (formEvent) => { const updateMap = (formEvent) => {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/maps/" + (isCreate ? "doCreateMap" : "doUpdateMap"), mapForm, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/maps/" + (isCreate ? "doCreateMap" : "doUpdateMap"), mapForm, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
cityssm.disableNavBlocker(); cityssm.disableNavBlocker();
if (isCreate) { if (isCreate) {
window.location.href = window.location.href =
urlPrefix + "/maps/" + responseJSON.mapId + "/edit"; los.urlPrefix + "/maps/" + responseJSON.mapId + "/edit";
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
@ -25,7 +24,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.map, title: "Error Updating " + exports.aliases.map,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -37,22 +36,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
inputElement.addEventListener("change", cityssm.enableNavBlocker); inputElement.addEventListener("change", cityssm.enableNavBlocker);
} }
if (!isCreate) { if (!isCreate) {
document document.querySelector("#button--deleteMap").addEventListener("click", (clickEvent) => {
.querySelector("#button--deleteMap")
.addEventListener("click", (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/maps/doDeleteMap", { cityssm.postJSON(los.urlPrefix + "/maps/doDeleteMap", {
mapId mapId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
window.location.href = window.location.href = los.urlPrefix + "/maps?t=" + Date.now();
urlPrefix + "/maps?t=" + Date.now();
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting " + exports.aliases.map, title: "Error Deleting " + exports.aliases.map,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -62,7 +58,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
title: "Delete " + exports.aliases.map, title: "Delete " + exports.aliases.map,
message: "Are you sure you want to delete this " + message: "Are you sure you want to delete this " +
exports.aliases.map.toLowerCase() + exports.aliases.map.toLowerCase() +
" and all related " + exports.aliases.lots.toLowerCase() + " and all related " +
exports.aliases.lots.toLowerCase() +
"?", "?",
contextualColorName: "warning", contextualColorName: "warning",
okButton: { okButton: {

View File

@ -1,4 +1,6 @@
/* eslint-disable unicorn/prefer-module */ /* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
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";
@ -7,10 +9,9 @@ declare const cityssm: cityssmGlobal;
declare const bulmaJS: BulmaJS; declare const bulmaJS: BulmaJS;
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los as globalTypes.LOS;
const mapId = (document.querySelector("#map--mapId") as HTMLInputElement) const mapId = (document.querySelector("#map--mapId") as HTMLInputElement).value;
.value;
const isCreate = mapId === ""; const isCreate = mapId === "";
const mapForm = document.querySelector("#form--map") as HTMLFormElement; const mapForm = document.querySelector("#form--map") as HTMLFormElement;
@ -19,30 +20,25 @@ declare const bulmaJS: BulmaJS;
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/maps/" + (isCreate ? "doCreateMap" : "doUpdateMap"), los.urlPrefix + "/maps/" + (isCreate ? "doCreateMap" : "doUpdateMap"),
mapForm, mapForm,
(responseJSON: { (responseJSON: { success: boolean; mapId?: number; errorMessage?: string }) => {
success: boolean;
mapId?: number;
errorMessage?: string;
}) => {
if (responseJSON.success) { if (responseJSON.success) {
cityssm.disableNavBlocker(); cityssm.disableNavBlocker();
if (isCreate) { if (isCreate) {
window.location.href = window.location.href =
urlPrefix + "/maps/" + responseJSON.mapId + "/edit"; los.urlPrefix + "/maps/" + responseJSON.mapId + "/edit";
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
message: message: exports.aliases.map + " Updated Successfully",
exports.aliases.map + " Updated Successfully",
contextualColorName: "success" contextualColorName: "success"
}); });
} }
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating " + exports.aliases.map, title: "Error Updating " + exports.aliases.map,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -52,36 +48,33 @@ declare const bulmaJS: BulmaJS;
mapForm.addEventListener("submit", updateMap); mapForm.addEventListener("submit", updateMap);
const inputElements = mapForm.querySelectorAll("input, select") as NodeListOf<HTMLInputElement | HTMLSelectElement>; const inputElements = mapForm.querySelectorAll("input, select") as NodeListOf<
HTMLInputElement | HTMLSelectElement
>;
for (const inputElement of inputElements) { for (const inputElement of inputElements) {
inputElement.addEventListener("change", cityssm.enableNavBlocker); inputElement.addEventListener("change", cityssm.enableNavBlocker);
} }
if (!isCreate) { if (!isCreate) {
document (document.querySelector("#button--deleteMap") as HTMLButtonElement).addEventListener(
.querySelector("#button--deleteMap") "click",
.addEventListener("click", (clickEvent) => { (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
const doDelete = () => { const doDelete = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/maps/doDeleteMap", los.urlPrefix + "/maps/doDeleteMap",
{ {
mapId mapId
}, },
(responseJSON: { (responseJSON: { success: boolean; errorMessage?: string }) => {
success: boolean;
errorMessage?: string;
}) => {
if (responseJSON.success) { if (responseJSON.success) {
window.location.href = window.location.href = los.urlPrefix + "/maps?t=" + Date.now();
urlPrefix + "/maps?t=" + Date.now();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: title: "Error Deleting " + exports.aliases.map,
"Error Deleting " + exports.aliases.map, message: responseJSON.errorMessage || "",
message: responseJSON.errorMessage,
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -94,7 +87,8 @@ declare const bulmaJS: BulmaJS;
message: message:
"Are you sure you want to delete this " + "Are you sure you want to delete this " +
exports.aliases.map.toLowerCase() + exports.aliases.map.toLowerCase() +
" and all related " + exports.aliases.lots.toLowerCase() + " and all related " +
exports.aliases.lots.toLowerCase() +
"?", "?",
contextualColorName: "warning", contextualColorName: "warning",
okButton: { okButton: {
@ -102,6 +96,7 @@ declare const bulmaJS: BulmaJS;
callbackFunction: doDelete callbackFunction: doDelete
} }
}); });
}); }
);
} }
})(); })();

View File

@ -1,7 +1,7 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los;
const maps = exports.maps; const maps = exports.maps;
const searchFilterElement = document.querySelector("#searchFilter--map"); const searchFilterElement = document.querySelector("#searchFilter--map");
const searchResultsContainerElement = document.querySelector("#container--searchResults"); const searchResultsContainerElement = document.querySelector("#container--searchResults");
@ -36,28 +36,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
searchResultsTbodyElement.insertAdjacentHTML("beforeend", "<tr>" + searchResultsTbodyElement.insertAdjacentHTML("beforeend", "<tr>" +
("<td>" + ("<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/maps/" + "/maps/" +
map.mapId + map.mapId +
'">' + '">' +
cityssm.escapeHTML(map.mapName || "(No Name)") + cityssm.escapeHTML(map.mapName || "(No Name)") +
"</a><br />" + "</a><br />" +
'<span class="is-size-7">' + '<span class="is-size-7">' +
cityssm.escapeHTML(map.mapDescription) + cityssm.escapeHTML(map.mapDescription || "") +
"</span>" + "</span>" +
"</td>") + "</td>") +
("<td>" + ("<td>" +
(map.mapAddress1 ? cityssm.escapeHTML(map.mapAddress1) + "<br />" : "") + (map.mapAddress1 ? cityssm.escapeHTML(map.mapAddress1) + "<br />" : "") +
(map.mapAddress2 ? cityssm.escapeHTML(map.mapAddress2) + "<br />" : "") + (map.mapAddress2 ? cityssm.escapeHTML(map.mapAddress2) + "<br />" : "") +
(map.mapCity || map.mapProvince (map.mapCity || map.mapProvince
? cityssm.escapeHTML(map.mapCity) + ? cityssm.escapeHTML(map.mapCity || "") +
", " + ", " +
cityssm.escapeHTML(map.mapProvince) + cityssm.escapeHTML(map.mapProvince || "") +
"<br />" "<br />"
: "") + : "") +
(map.mapPostalCode ? cityssm.escapeHTML(map.mapPostalCode) : "") + (map.mapPostalCode ? cityssm.escapeHTML(map.mapPostalCode) : "") +
"</td>") + "</td>") +
("<td>" + cityssm.escapeHTML(map.mapPhoneNumber) + "</td>") + ("<td>" + cityssm.escapeHTML(map.mapPhoneNumber || "") + "</td>") +
'<td class="has-text-centered">' + '<td class="has-text-centered">' +
(map.mapLatitude && map.mapLongitude (map.mapLatitude && map.mapLongitude
? '<span data-tooltip="Has Geographic Coordinates"><i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i></span>' ? '<span data-tooltip="Has Geographic Coordinates"><i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i></span>'
@ -70,7 +70,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</td>" + "</td>" +
('<td class="has-text-right">' + ('<td class="has-text-right">' +
'<a href="' + '<a href="' +
urlPrefix + los.urlPrefix +
"/lots?mapId=" + "/lots?mapId=" +
map.mapId + map.mapId +
'">' + '">' +

View File

@ -1,5 +1,6 @@
/* eslint-disable unicorn/prefer-module */ /* 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 recordTypes from "../types/recordTypes";
import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types"; import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
@ -7,7 +8,7 @@ import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types";
declare const cityssm: cityssmGlobal; declare const cityssm: cityssmGlobal;
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los as globalTypes.LOS;
const maps: recordTypes.Map[] = exports.maps; const maps: recordTypes.Map[] = exports.maps;
@ -60,28 +61,28 @@ declare const cityssm: cityssmGlobal;
"<tr>" + "<tr>" +
("<td>" + ("<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/maps/" + "/maps/" +
map.mapId + map.mapId +
'">' + '">' +
cityssm.escapeHTML(map.mapName || "(No Name)") + cityssm.escapeHTML(map.mapName || "(No Name)") +
"</a><br />" + "</a><br />" +
'<span class="is-size-7">' + '<span class="is-size-7">' +
cityssm.escapeHTML(map.mapDescription) + cityssm.escapeHTML(map.mapDescription || "") +
"</span>" + "</span>" +
"</td>") + "</td>") +
("<td>" + ("<td>" +
(map.mapAddress1 ? cityssm.escapeHTML(map.mapAddress1) + "<br />" : "") + (map.mapAddress1 ? cityssm.escapeHTML(map.mapAddress1) + "<br />" : "") +
(map.mapAddress2 ? cityssm.escapeHTML(map.mapAddress2) + "<br />" : "") + (map.mapAddress2 ? cityssm.escapeHTML(map.mapAddress2) + "<br />" : "") +
(map.mapCity || map.mapProvince (map.mapCity || map.mapProvince
? cityssm.escapeHTML(map.mapCity) + ? cityssm.escapeHTML(map.mapCity || "") +
", " + ", " +
cityssm.escapeHTML(map.mapProvince) + cityssm.escapeHTML(map.mapProvince || "") +
"<br />" "<br />"
: "") + : "") +
(map.mapPostalCode ? cityssm.escapeHTML(map.mapPostalCode) : "") + (map.mapPostalCode ? cityssm.escapeHTML(map.mapPostalCode) : "") +
"</td>") + "</td>") +
("<td>" + cityssm.escapeHTML(map.mapPhoneNumber) + "</td>") + ("<td>" + cityssm.escapeHTML(map.mapPhoneNumber || "") + "</td>") +
'<td class="has-text-centered">' + '<td class="has-text-centered">' +
(map.mapLatitude && map.mapLongitude (map.mapLatitude && map.mapLongitude
? '<span data-tooltip="Has Geographic Coordinates"><i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i></span>' ? '<span data-tooltip="Has Geographic Coordinates"><i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i></span>'
@ -94,7 +95,7 @@ declare const cityssm: cityssmGlobal;
"</td>" + "</td>" +
('<td class="has-text-right">' + ('<td class="has-text-right">' +
'<a href="' + '<a href="' +
urlPrefix + los.urlPrefix +
"/lots?mapId=" + "/lots?mapId=" +
map.mapId + map.mapId +
'">' + '">' +
@ -138,10 +139,13 @@ declare const cityssm: cityssmGlobal;
searchFilterElement.addEventListener("keyup", renderResults); searchFilterElement.addEventListener("keyup", renderResults);
document.querySelector("#form--searchFilters").addEventListener("submit", (formEvent) => { (document.querySelector("#form--searchFilters") as HTMLFormElement).addEventListener(
formEvent.preventDefault(); "submit",
renderResults(); (formEvent) => {
}); formEvent.preventDefault();
renderResults();
}
);
renderResults(); renderResults();
})(); })();

View File

@ -1,9 +1,7 @@
// import type { cityssmGlobal } from "@cityssm/bulma-webapp-js/src/types"; /* eslint-disable @typescript-eslint/no-non-null-assertion */
// import type { BulmaJS } from "@cityssm/bulma-js/types";
import type * as Leaflet from "leaflet"; import type * as Leaflet from "leaflet";
// declare const cityssm: cityssmGlobal;
// declare const bulmaJS: BulmaJS;
declare const L; declare const L;
(() => { (() => {
@ -13,14 +11,15 @@ declare const L;
if (mapContainerElement) { if (mapContainerElement) {
const mapLatitude = Number.parseFloat( const mapLatitude = Number.parseFloat(
mapContainerElement.dataset.mapLatitude mapContainerElement.dataset.mapLatitude!
); );
const mapLongitude = Number.parseFloat( const mapLongitude = Number.parseFloat(
mapContainerElement.dataset.mapLongitude mapContainerElement.dataset.mapLongitude!
); );
const mapCoordinates: Leaflet.LatLngTuple = [mapLatitude, mapLongitude]; const mapCoordinates: Leaflet.LatLngTuple = [mapLatitude, mapLongitude];
// eslint-disable-next-line unicorn/no-array-callback-reference
const map: Leaflet.Map = L.map(mapContainerElement); const map: Leaflet.Map = L.map(mapContainerElement);
map.setView(mapCoordinates, 15); map.setView(mapCoordinates, 15);

View File

@ -2,23 +2,20 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const workOrderId = document.querySelector("#workOrderEdit--workOrderId") const workOrderId = document.querySelector("#workOrderEdit--workOrderId")
.value; .value;
const isCreate = workOrderId === ""; const isCreate = workOrderId === "";
const workOrderFormElement = document.querySelector("#form--workOrderEdit"); const workOrderFormElement = document.querySelector("#form--workOrderEdit");
los.initializeDatePickers(workOrderFormElement los.initializeDatePickers(workOrderFormElement.querySelector("#workOrderEdit--workOrderOpenDateString").closest(".field"));
.querySelector("#workOrderEdit--workOrderOpenDateString")
.closest(".field"));
los.initializeUnlockFieldButtons(workOrderFormElement); los.initializeUnlockFieldButtons(workOrderFormElement);
workOrderFormElement.addEventListener("submit", (submitEvent) => { workOrderFormElement.addEventListener("submit", (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/workOrders/" + (isCreate ? "doCreateWorkOrder" : "doUpdateWorkOrder"), submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/workOrders/" + (isCreate ? "doCreateWorkOrder" : "doUpdateWorkOrder"), submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
cityssm.disableNavBlocker(); cityssm.disableNavBlocker();
if (isCreate) { if (isCreate) {
window.location.href = window.location.href =
urlPrefix + "/workOrders/" + responseJSON.workOrderId + "/edit"; los.urlPrefix + "/workOrders/" + responseJSON.workOrderId + "/edit";
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
@ -30,7 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Work Order", title: "Error Updating Work Order",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -43,17 +40,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
let workOrderMilestones; let workOrderMilestones;
if (!isCreate) { if (!isCreate) {
const doClose = () => { const doClose = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doCloseWorkOrder", { cityssm.postJSON(los.urlPrefix + "/workOrders/doCloseWorkOrder", {
workOrderId workOrderId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
window.location.href = window.location.href =
urlPrefix + "/workOrders/" + encodeURIComponent(workOrderId); los.urlPrefix + "/workOrders/" + encodeURIComponent(workOrderId);
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Closing Work Order", title: "Error Closing Work Order",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -87,24 +84,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}); });
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doDeleteWorkOrder", { cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrder", {
workOrderId workOrderId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
window.location.href = urlPrefix + "/workOrders"; window.location.href = los.urlPrefix + "/workOrders";
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Work Order", title: "Error Deleting Work Order",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
}); });
}; };
document document.querySelector("#button--deleteWorkOrder").addEventListener("click", (clickEvent) => {
.querySelector("#button--deleteWorkOrder")
.addEventListener("click", (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
bulmaJS.confirm({ bulmaJS.confirm({
title: "Delete Work Order", title: "Delete Work Order",
@ -125,7 +120,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const deleteLotOccupancy = (clickEvent) => { const deleteLotOccupancy = (clickEvent) => {
const lotOccupancyId = clickEvent.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId; const lotOccupancyId = clickEvent.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doDeleteWorkOrderLotOccupancy", { cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderLotOccupancy", {
workOrderId, workOrderId,
lotOccupancyId lotOccupancyId
}, (responseJSON) => { }, (responseJSON) => {
@ -136,7 +131,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Relationship", title: "Error Deleting Relationship",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -161,7 +156,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
}; };
const addLot = (lotId, callbackFunction) => { const addLot = (lotId, callbackFunction) => {
cityssm.postJSON(urlPrefix + "/workOrders/doAddWorkOrderLot", { cityssm.postJSON(los.urlPrefix + "/workOrders/doAddWorkOrderLot", {
workOrderId, workOrderId,
lotId lotId
}, (responseJSON) => { }, (responseJSON) => {
@ -172,7 +167,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding " + exports.aliases.lot, title: "Error Adding " + exports.aliases.lot,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -182,7 +177,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
}; };
const addLotOccupancy = (lotOccupancyId, callbackFunction) => { const addLotOccupancy = (lotOccupancyId, callbackFunction) => {
cityssm.postJSON(urlPrefix + "/workOrders/doAddWorkOrderLotOccupancy", { cityssm.postJSON(los.urlPrefix + "/workOrders/doAddWorkOrderLotOccupancy", {
workOrderId, workOrderId,
lotOccupancyId lotOccupancyId
}, (responseJSON) => { }, (responseJSON) => {
@ -193,7 +188,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Adding " + exports.aliases.occupancy, title: "Error Adding " + exports.aliases.occupancy,
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -208,8 +203,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}; };
const renderRelatedOccupancies = () => { const renderRelatedOccupancies = () => {
const occupanciesContainerElement = document.querySelector("#container--lotOccupancies"); const occupanciesContainerElement = document.querySelector("#container--lotOccupancies");
document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent = document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent = workOrderLotOccupancies.length.toString();
workOrderLotOccupancies.length.toString();
if (workOrderLotOccupancies.length === 0) { if (workOrderLotOccupancies.length === 0) {
occupanciesContainerElement.innerHTML = occupanciesContainerElement.innerHTML =
'<div class="message is-info">' + '<div class="message is-info">' +
@ -257,16 +251,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</td>" + "</td>" +
("<td>" + ("<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
cityssm.escapeHTML(urlPrefix) + cityssm.escapeHTML(los.urlPrefix) +
"/lotOccupancies/" + "/lotOccupancies/" +
lotOccupancy.lotOccupancyId + lotOccupancy.lotOccupancyId +
'">' + '">' +
cityssm.escapeHTML(lotOccupancy.occupancyType) + cityssm.escapeHTML(lotOccupancy.occupancyType || "") +
"</a>" + "</a>" +
"</td>"); "</td>");
if (lotOccupancy.lotId) { if (lotOccupancy.lotId) {
rowElement.insertAdjacentHTML("beforeend", "<td>" + rowElement.insertAdjacentHTML("beforeend", "<td>" +
cityssm.escapeHTML(lotOccupancy.lotName) + cityssm.escapeHTML(lotOccupancy.lotName || "") +
(hasLotRecord (hasLotRecord
? "" ? ""
: ' <button class="button is-small is-light is-success button--addLot"' + : ' <button class="button is-small is-light is-success button--addLot"' +
@ -318,13 +312,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</button>" + "</button>" +
"</td>")); "</td>"));
if (lotOccupancy.lotId && !hasLotRecord) { if (lotOccupancy.lotId && !hasLotRecord) {
rowElement rowElement.querySelector(".button--addLot").addEventListener("click", addLotFromLotOccupancy);
.querySelector(".button--addLot")
.addEventListener("click", addLotFromLotOccupancy);
} }
rowElement rowElement.querySelector(".button--deleteLotOccupancy").addEventListener("click", deleteLotOccupancy);
.querySelector(".button--deleteLotOccupancy")
.addEventListener("click", deleteLotOccupancy);
occupanciesContainerElement.querySelector("tbody").append(rowElement); occupanciesContainerElement.querySelector("tbody").append(rowElement);
} }
}; };
@ -336,7 +326,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
const doUpdateLotStatus = (submitEvent) => { const doUpdateLotStatus = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/workOrders/doUpdateLotStatus", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/workOrders/doUpdateLotStatus", submitEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderLots = responseJSON.workOrderLots; workOrderLots = responseJSON.workOrderLots;
renderRelatedLotsAndOccupancies(); renderRelatedLotsAndOccupancies();
@ -345,7 +335,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Relationship", title: "Error Deleting Relationship",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -395,7 +385,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const deleteLot = (clickEvent) => { const deleteLot = (clickEvent) => {
const lotId = clickEvent.currentTarget.closest(".container--lot").dataset.lotId; const lotId = clickEvent.currentTarget.closest(".container--lot").dataset.lotId;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doDeleteWorkOrderLot", { cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderLot", {
workOrderId, workOrderId,
lotId lotId
}, (responseJSON) => { }, (responseJSON) => {
@ -406,7 +396,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Deleting Relationship", title: "Error Deleting Relationship",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -432,8 +422,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}; };
const renderRelatedLots = () => { const renderRelatedLots = () => {
const lotsContainerElement = document.querySelector("#container--lots"); const lotsContainerElement = document.querySelector("#container--lots");
document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent = document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent = workOrderLots.length.toString();
workOrderLots.length.toString();
if (workOrderLots.length === 0) { if (workOrderLots.length === 0) {
lotsContainerElement.innerHTML = lotsContainerElement.innerHTML =
'<div class="message is-info">' + '<div class="message is-info">' +
@ -463,18 +452,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
rowElement.innerHTML = rowElement.innerHTML =
"<td>" + "<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
cityssm.escapeHTML(urlPrefix) + cityssm.escapeHTML(los.urlPrefix) +
"/lots/" + "/lots/" +
lot.lotId + lot.lotId +
'">' + '">' +
cityssm.escapeHTML(lot.lotName) + cityssm.escapeHTML(lot.lotName || "") +
"</a>" + "</a>" +
"</td>" + "</td>" +
("<td>" + cityssm.escapeHTML(lot.mapName) + "</td>") + ("<td>" + cityssm.escapeHTML(lot.mapName || "") + "</td>") +
("<td>" + cityssm.escapeHTML(lot.lotType) + "</td>") + ("<td>" + cityssm.escapeHTML(lot.lotType || "") + "</td>") +
("<td>" + ("<td>" +
(lot.lotStatusId (lot.lotStatusId
? cityssm.escapeHTML(lot.lotStatus) ? cityssm.escapeHTML(lot.lotStatus || "")
: '<span class="has-text-grey">(No Status)</span>') + : '<span class="has-text-grey">(No Status)</span>') +
"</td>") + "</td>") +
('<td class="is-nowrap">' + ('<td class="is-nowrap">' +
@ -485,9 +474,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<i class="fas fa-trash" aria-hidden="true"></i>' + '<i class="fas fa-trash" aria-hidden="true"></i>' +
"</button>" + "</button>" +
"</td>"); "</td>");
rowElement rowElement.querySelector(".button--editLotStatus").addEventListener("click", openEditLotStatus);
.querySelector(".button--editLotStatus")
.addEventListener("click", openEditLotStatus);
rowElement.querySelector(".button--deleteLot").addEventListener("click", deleteLot); rowElement.querySelector(".button--deleteLot").addEventListener("click", deleteLot);
lotsContainerElement.querySelector("tbody").append(rowElement); lotsContainerElement.querySelector("tbody").append(rowElement);
} }
@ -518,7 +505,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' + '<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' +
"Searching..." + "Searching..." +
"</p>"; "</p>";
cityssm.postJSON(urlPrefix + "/lotOccupancies/doSearchLotOccupancies", searchFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doSearchLotOccupancies", searchFormElement, (responseJSON) => {
if (responseJSON.lotOccupancies.length === 0) { if (responseJSON.lotOccupancies.length === 0) {
searchResultsContainerElement.innerHTML = searchResultsContainerElement.innerHTML =
'<div class="message is-info">' + '<div class="message is-info">' +
@ -552,10 +539,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</button>" + "</button>" +
"</td>" + "</td>" +
('<td class="has-text-weight-bold">' + ('<td class="has-text-weight-bold">' +
cityssm.escapeHTML(lotOccupancy.occupancyType) + cityssm.escapeHTML(lotOccupancy.occupancyType || "") +
"</td>"); "</td>");
if (lotOccupancy.lotId) { if (lotOccupancy.lotId) {
rowElement.insertAdjacentHTML("beforeend", "<td>" + cityssm.escapeHTML(lotOccupancy.lotName) + "</td>"); rowElement.insertAdjacentHTML("beforeend", "<td>" +
cityssm.escapeHTML(lotOccupancy.lotName || "") +
"</td>");
} }
else { else {
rowElement.insertAdjacentHTML("beforeend", "<td>" + rowElement.insertAdjacentHTML("beforeend", "<td>" +
@ -577,16 +566,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
? '<span class="has-text-grey">(No ' + ? '<span class="has-text-grey">(No ' +
cityssm.escapeHTML(exports.aliases.occupants) + cityssm.escapeHTML(exports.aliases.occupants) +
")</span>" ")</span>"
: cityssm.escapeHTML(lotOccupancy.lotOccupancyOccupants[0].occupantName) + : cityssm.escapeHTML(lotOccupancy.lotOccupancyOccupants[0]
.occupantName) +
(lotOccupancy.lotOccupancyOccupants.length > 1 (lotOccupancy.lotOccupancyOccupants.length > 1
? " plus " + ? " plus " +
(lotOccupancy.lotOccupancyOccupants.length - 1) (lotOccupancy.lotOccupancyOccupants
.length -
1)
: "")) + : "")) +
"</td>")); "</td>"));
rowElement rowElement.querySelector(".button--addLotOccupancy").addEventListener("click", doAddLotOccupancy);
.querySelector(".button--addLotOccupancy") searchResultsContainerElement
.addEventListener("click", doAddLotOccupancy); .querySelector("tbody")
searchResultsContainerElement.querySelector("tbody").append(rowElement); .append(rowElement);
} }
}); });
}; };
@ -601,12 +593,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
}, },
onshown: (modalElement) => { onshown: (modalElement) => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
modalElement modalElement.querySelector("#lotOccupancySearch--occupantName").addEventListener("change", doSearch);
.querySelector("#lotOccupancySearch--occupantName") modalElement.querySelector("#lotOccupancySearch--lotName").addEventListener("change", doSearch);
.addEventListener("change", doSearch);
modalElement
.querySelector("#lotOccupancySearch--lotName")
.addEventListener("change", doSearch);
searchFormElement.addEventListener("submit", doSearch); searchFormElement.addEventListener("submit", doSearch);
}, },
onremoved: () => { onremoved: () => {
@ -635,7 +623,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' + '<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' +
"Searching..." + "Searching..." +
"</p>"; "</p>";
cityssm.postJSON(urlPrefix + "/lots/doSearchLots", searchFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/lots/doSearchLots", searchFormElement, (responseJSON) => {
if (responseJSON.lots.length === 0) { if (responseJSON.lots.length === 0) {
searchResultsContainerElement.innerHTML = searchResultsContainerElement.innerHTML =
'<div class="message is-info">' + '<div class="message is-info">' +
@ -667,17 +655,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</button>" + "</button>" +
"</td>" + "</td>" +
('<td class="has-text-weight-bold">' + ('<td class="has-text-weight-bold">' +
cityssm.escapeHTML(lot.lotName) + cityssm.escapeHTML(lot.lotName || "") +
"</td>") + "</td>") +
"<td>" + "<td>" +
cityssm.escapeHTML(lot.mapName) + cityssm.escapeHTML(lot.mapName || "") +
"</td>" + "</td>" +
("<td>" + cityssm.escapeHTML(lot.lotType) + "</td>") + ("<td>" + cityssm.escapeHTML(lot.lotType || "") + "</td>") +
("<td>" + cityssm.escapeHTML(lot.lotStatus) + "</td>"); ("<td>" + cityssm.escapeHTML(lot.lotStatus || "") + "</td>");
rowElement rowElement.querySelector(".button--addLot").addEventListener("click", doAddLot);
.querySelector(".button--addLot") searchResultsContainerElement
.addEventListener("click", doAddLot); .querySelector("tbody")
searchResultsContainerElement.querySelector("tbody").append(rowElement); .append(rowElement);
} }
}); });
}; };
@ -698,12 +686,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
}, },
onshown: (modalElement) => { onshown: (modalElement) => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
modalElement modalElement.querySelector("#lotSearch--lotName").addEventListener("change", doSearch);
.querySelector("#lotSearch--lotName") modalElement.querySelector("#lotSearch--lotStatusId").addEventListener("change", doSearch);
.addEventListener("change", doSearch);
modalElement
.querySelector("#lotSearch--lotStatusId")
.addEventListener("change", doSearch);
searchFormElement.addEventListener("submit", doSearch); searchFormElement.addEventListener("submit", doSearch);
}, },
onremoved: () => { onremoved: () => {
@ -723,7 +707,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
const editComment = (submitEvent) => { const editComment = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/workOrders/doUpdateWorkOrderComment", editFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/workOrders/doUpdateWorkOrderComment", editFormElement, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderComments = responseJSON.workOrderComments; workOrderComments = responseJSON.workOrderComments;
editCloseModalFunction(); editCloseModalFunction();
@ -732,7 +716,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Updating Comment", title: "Error Updating Comment",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -770,7 +754,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const deleteWorkOrderComment = (clickEvent) => { const deleteWorkOrderComment = (clickEvent) => {
const workOrderCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.workOrderCommentId, 10); const workOrderCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.workOrderCommentId, 10);
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doDeleteWorkOrderComment", { cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderComment", {
workOrderId, workOrderId,
workOrderCommentId workOrderCommentId
}, (responseJSON) => { }, (responseJSON) => {
@ -781,7 +765,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Removing Comment", title: "Error Removing Comment",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -822,7 +806,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
workOrderComment.workOrderCommentId.toString(); workOrderComment.workOrderCommentId.toString();
tableRowElement.innerHTML = tableRowElement.innerHTML =
"<td>" + "<td>" +
cityssm.escapeHTML(workOrderComment.recordCreate_userName) + cityssm.escapeHTML(workOrderComment.recordCreate_userName || "") +
"</td>" + "</td>" +
"<td>" + "<td>" +
workOrderComment.workOrderCommentDateString + workOrderComment.workOrderCommentDateString +
@ -831,7 +815,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
: " " + workOrderComment.workOrderCommentTimeString) + : " " + workOrderComment.workOrderCommentTimeString) +
"</td>" + "</td>" +
"<td>" + "<td>" +
cityssm.escapeHTML(workOrderComment.workOrderComment) + cityssm.escapeHTML(workOrderComment.workOrderComment || "") +
"</td>" + "</td>" +
('<td class="is-hidden-print">' + ('<td class="is-hidden-print">' +
'<div class="buttons are-small is-justify-content-end">' + '<div class="buttons are-small is-justify-content-end">' +
@ -844,12 +828,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</button>") + "</button>") +
"</div>" + "</div>" +
"</td>"); "</td>");
tableRowElement tableRowElement.querySelector(".button--edit").addEventListener("click", openEditWorkOrderComment);
.querySelector(".button--edit") tableRowElement.querySelector(".button--delete").addEventListener("click", deleteWorkOrderComment);
.addEventListener("click", openEditWorkOrderComment);
tableRowElement
.querySelector(".button--delete")
.addEventListener("click", deleteWorkOrderComment);
tableElement.querySelector("tbody").append(tableRowElement); tableElement.querySelector("tbody").append(tableRowElement);
} }
containerElement.innerHTML = ""; containerElement.innerHTML = "";
@ -859,7 +839,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCommentCloseModalFunction; let addCommentCloseModalFunction;
const doAddComment = (formEvent) => { const doAddComment = (formEvent) => {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/workOrders/doAddWorkOrderComment", formEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/workOrders/doAddWorkOrderComment", formEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
workOrderComments = responseJSON.workOrderComments; workOrderComments = responseJSON.workOrderComments;
renderWorkOrderComments(); renderWorkOrderComments();
@ -885,9 +865,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
}; };
if (!isCreate) { if (!isCreate) {
document document.querySelector("#workOrderComments--add").addEventListener("click", openAddCommentModal);
.querySelector("#workOrderComments--add")
.addEventListener("click", openAddCommentModal);
renderWorkOrderComments(); renderWorkOrderComments();
} }
if (!isCreate) { if (!isCreate) {
@ -901,7 +879,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Reopening Milestone", title: "Error Reopening Milestone",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }
@ -914,7 +892,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
return currentMilestone.workOrderMilestoneId === workOrderMilestoneId; return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
}); });
const doComplete = () => { const doComplete = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doCompleteWorkOrderMilestone", { cityssm.postJSON(los.urlPrefix + "/workOrders/doCompleteWorkOrderMilestone", {
workOrderId, workOrderId,
workOrderMilestoneId workOrderMilestoneId
}, processMilestoneResponse); }, processMilestoneResponse);
@ -937,7 +915,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
clickEvent.preventDefault(); clickEvent.preventDefault();
const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId; const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
const doReopen = () => { const doReopen = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doReopenWorkOrderMilestone", { cityssm.postJSON(los.urlPrefix + "/workOrders/doReopenWorkOrderMilestone", {
workOrderId, workOrderId,
workOrderMilestoneId workOrderMilestoneId
}, processMilestoneResponse); }, processMilestoneResponse);
@ -956,7 +934,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
clickEvent.preventDefault(); clickEvent.preventDefault();
const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId; const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
const doDelete = () => { const doDelete = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doDeleteWorkOrderMilestone", { cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderMilestone", {
workOrderMilestoneId, workOrderMilestoneId,
workOrderId workOrderId
}, processMilestoneResponse); }, processMilestoneResponse);
@ -980,7 +958,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
const doEdit = (submitEvent) => { const doEdit = (submitEvent) => {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(urlPrefix + "/workOrders/doUpdateWorkOrderMilestone", submitEvent.currentTarget, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/workOrders/doUpdateWorkOrderMilestone", submitEvent.currentTarget, (responseJSON) => {
processMilestoneResponse(responseJSON); processMilestoneResponse(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
editCloseModalFunction(); editCloseModalFunction();
@ -1059,7 +1037,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
('<div class="column">' + ('<div class="column">' +
(milestone.workOrderMilestoneTypeId (milestone.workOrderMilestoneTypeId
? "<strong>" + ? "<strong>" +
cityssm.escapeHTML(milestone.workOrderMilestoneType) + cityssm.escapeHTML(milestone.workOrderMilestoneType || "") +
"</strong><br />" "</strong><br />"
: "") + : "") +
milestone.workOrderMilestoneDateString + milestone.workOrderMilestoneDateString +
@ -1068,7 +1046,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
: "") + : "") +
"<br />" + "<br />" +
'<span class="is-size-7">' + '<span class="is-size-7">' +
cityssm.escapeHTML(milestone.workOrderMilestoneDescription) + cityssm.escapeHTML(milestone.workOrderMilestoneDescription || "") +
"</span>" + "</span>" +
"</div>") + "</div>") +
('<div class="column is-narrow">' + ('<div class="column is-narrow">' +
@ -1100,21 +1078,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>") + "</div>") +
"</div>"; "</div>";
if (milestone.workOrderMilestoneCompletionDate) { if (milestone.workOrderMilestoneCompletionDate) {
panelBlockElement panelBlockElement.querySelector(".button--reopenMilestone").addEventListener("click", reopenMilestone);
.querySelector(".button--reopenMilestone")
.addEventListener("click", reopenMilestone);
} }
else { else {
panelBlockElement panelBlockElement.querySelector(".button--editMilestone").addEventListener("click", editMilestone);
.querySelector(".button--editMilestone") panelBlockElement.querySelector(".button--completeMilestone").addEventListener("click", completeMilestone);
.addEventListener("click", editMilestone);
panelBlockElement
.querySelector(".button--completeMilestone")
.addEventListener("click", completeMilestone);
} }
panelBlockElement panelBlockElement.querySelector(".button--deleteMilestone").addEventListener("click", deleteMilestone);
.querySelector(".button--deleteMilestone")
.addEventListener("click", deleteMilestone);
milestonesPanelElement.append(panelBlockElement); milestonesPanelElement.append(panelBlockElement);
} }
bulmaJS.init(milestonesPanelElement); bulmaJS.init(milestonesPanelElement);
@ -1130,7 +1100,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
const currentDateString = cityssm.dateToString(new Date()); const currentDateString = cityssm.dateToString(new Date());
const _doAdd = () => { const _doAdd = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doAddWorkOrderMilestone", addFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/workOrders/doAddWorkOrderMilestone", addFormElement, (responseJSON) => {
processMilestoneResponse(responseJSON); processMilestoneResponse(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
addCloseModalFunction(); addCloseModalFunction();

File diff suppressed because it is too large Load Diff

View File

@ -2,7 +2,6 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const workOrderSearchFiltersFormElement = document.querySelector("#form--searchFilters"); const workOrderSearchFiltersFormElement = document.querySelector("#form--searchFilters");
const workOrderMilestoneDateFilterElement = workOrderSearchFiltersFormElement.querySelector("#searchFilter--workOrderMilestoneDateFilter"); const workOrderMilestoneDateFilterElement = workOrderSearchFiltersFormElement.querySelector("#searchFilter--workOrderMilestoneDateFilter");
const workOrderMilestoneDateStringElement = workOrderSearchFiltersFormElement.querySelector("#searchFilter--workOrderMilestoneDateString"); const workOrderMilestoneDateStringElement = workOrderSearchFiltersFormElement.querySelector("#searchFilter--workOrderMilestoneDateString");
@ -40,12 +39,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
for (const lot of milestone.workOrderLots) { for (const lot of milestone.workOrderLots) {
lotOccupancyHTML += lotOccupancyHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(lot.mapName) + cityssm.escapeHTML(lot.mapName || "") +
'">' + '">' +
'<i class="fas fa-vector-square" aria-label="' + '<i class="fas fa-vector-square" aria-label="' +
cityssm.escapeHTML(exports.aliases.lot) + cityssm.escapeHTML(exports.aliases.lot) +
'"></i> ' + '"></i> ' +
cityssm.escapeHTML(lot.lotName) + cityssm.escapeHTML(lot.lotName || "") +
"</span>" + "</span>" +
"<br />"; "<br />";
} }
@ -53,12 +52,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
for (const occupant of lotOccupancy.lotOccupancyOccupants) { for (const occupant of lotOccupancy.lotOccupancyOccupants) {
lotOccupancyHTML += lotOccupancyHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType) + cityssm.escapeHTML(occupant.lotOccupantType || "") +
'">' + '">' +
'<i class="fas fa-user" aria-label="' + '<i class="fas fa-user" aria-label="' +
cityssm.escapeHTML(exports.aliases.lotOccupancy) + cityssm.escapeHTML(exports.aliases.lotOccupancy) +
'"></i> ' + '"></i> ' +
cityssm.escapeHTML(occupant.occupantName) + cityssm.escapeHTML(occupant.occupantName || "") +
"</span>" + "</span>" +
"<br />"; "<br />";
} }
@ -87,17 +86,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</div>") + "</div>") +
('<div class="column">' + ('<div class="column">' +
'<i class="fas fa-circle" style="color:' + '<i class="fas fa-circle" style="color:' +
los.getRandomColor(milestone.workOrderNumber) + los.getRandomColor(milestone.workOrderNumber || "") +
'" aria-hidden="true"></i>' + '" aria-hidden="true"></i>' +
' <a class="has-text-weight-bold" href="' + ' <a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/workOrders/" + "/workOrders/" +
milestone.workOrderId + milestone.workOrderId +
'">' + '">' +
cityssm.escapeHTML(milestone.workOrderNumber) + cityssm.escapeHTML(milestone.workOrderNumber || "") +
"</a><br />" + "</a><br />" +
'<span class="is-size-7">' + '<span class="is-size-7">' +
cityssm.escapeHTML(milestone.workOrderDescription) + cityssm.escapeHTML(milestone.workOrderDescription || "") +
"</span>" + "</span>" +
"</div>") + "</div>") +
('<div class="column is-size-7">' + lotOccupancyHTML + "</div>") + ('<div class="column is-size-7">' + lotOccupancyHTML + "</div>") +
@ -115,7 +114,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' + '<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' +
"Loading Milestones..." + "Loading Milestones..." +
"</div>"; "</div>";
cityssm.postJSON(urlPrefix + "/workOrders/doGetWorkOrderMilestones", workOrderSearchFiltersFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/workOrders/doGetWorkOrderMilestones", workOrderSearchFiltersFormElement, (responseJSON) => {
renderMilestones(responseJSON.workOrderMilestones); renderMilestones(responseJSON.workOrderMilestones);
}); });
}; };

View File

@ -1,4 +1,4 @@
/* eslint-disable unicorn/prefer-module */ /* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
import type * as recordTypes from "../types/recordTypes"; import type * as recordTypes from "../types/recordTypes";
import type * as globalTypes from "../types/globalTypes"; import type * as globalTypes from "../types/globalTypes";
@ -9,8 +9,6 @@ declare const cityssm: cityssmGlobal;
(() => { (() => {
const los = exports.los as globalTypes.LOS; const los = exports.los as globalTypes.LOS;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const workOrderSearchFiltersFormElement = document.querySelector( const workOrderSearchFiltersFormElement = document.querySelector(
"#form--searchFilters" "#form--searchFilters"
) as HTMLFormElement; ) as HTMLFormElement;
@ -40,7 +38,7 @@ declare const cityssm: cityssmGlobal;
const currentDate = cityssm.dateToString(new Date()); const currentDate = cityssm.dateToString(new Date());
let currentPanelElement: HTMLElement; let currentPanelElement: HTMLElement | undefined;
let currentPanelDateString = ""; let currentPanelDateString = "";
for (const milestone of workOrderMilestones) { for (const milestone of workOrderMilestones) {
@ -55,7 +53,7 @@ declare const cityssm: cityssmGlobal;
currentPanelElement.innerHTML = currentPanelElement.innerHTML =
'<h2 class="panel-heading">' + milestone.workOrderMilestoneDateString + "</h2>"; '<h2 class="panel-heading">' + milestone.workOrderMilestoneDateString + "</h2>";
currentPanelDateString = milestone.workOrderMilestoneDateString; currentPanelDateString = milestone.workOrderMilestoneDateString!;
} }
const panelBlockElement = document.createElement("div"); const panelBlockElement = document.createElement("div");
@ -64,36 +62,36 @@ declare const cityssm: cityssmGlobal;
if ( if (
!milestone.workOrderMilestoneCompletionDate && !milestone.workOrderMilestoneCompletionDate &&
milestone.workOrderMilestoneDateString < currentDate milestone.workOrderMilestoneDateString! < currentDate
) { ) {
panelBlockElement.classList.add("has-background-warning-light"); panelBlockElement.classList.add("has-background-warning-light");
} }
let lotOccupancyHTML = ""; let lotOccupancyHTML = "";
for (const lot of milestone.workOrderLots) { for (const lot of milestone.workOrderLots!) {
lotOccupancyHTML += lotOccupancyHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(lot.mapName) + cityssm.escapeHTML(lot.mapName || "") +
'">' + '">' +
'<i class="fas fa-vector-square" aria-label="' + '<i class="fas fa-vector-square" aria-label="' +
cityssm.escapeHTML(exports.aliases.lot) + cityssm.escapeHTML(exports.aliases.lot) +
'"></i> ' + '"></i> ' +
cityssm.escapeHTML(lot.lotName) + cityssm.escapeHTML(lot.lotName || "") +
"</span>" + "</span>" +
"<br />"; "<br />";
} }
for (const lotOccupancy of milestone.workOrderLotOccupancies) { for (const lotOccupancy of milestone.workOrderLotOccupancies!) {
for (const occupant of lotOccupancy.lotOccupancyOccupants) { for (const occupant of lotOccupancy.lotOccupancyOccupants!) {
lotOccupancyHTML += lotOccupancyHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType) + cityssm.escapeHTML(occupant.lotOccupantType || "") +
'">' + '">' +
'<i class="fas fa-user" aria-label="' + '<i class="fas fa-user" aria-label="' +
cityssm.escapeHTML(exports.aliases.lotOccupancy) + cityssm.escapeHTML(exports.aliases.lotOccupancy) +
'"></i> ' + '"></i> ' +
cityssm.escapeHTML(occupant.occupantName) + cityssm.escapeHTML(occupant.occupantName || "") +
"</span>" + "</span>" +
"<br />"; "<br />";
} }
@ -114,35 +112,35 @@ declare const cityssm: cityssmGlobal;
: milestone.workOrderMilestoneTimeString + "<br />") + : milestone.workOrderMilestoneTimeString + "<br />") +
(milestone.workOrderMilestoneTypeId (milestone.workOrderMilestoneTypeId
? "<strong>" + ? "<strong>" +
cityssm.escapeHTML(milestone.workOrderMilestoneType) + cityssm.escapeHTML(milestone.workOrderMilestoneType!) +
"</strong><br />" "</strong><br />"
: "") + : "") +
'<span class="is-size-7">' + '<span class="is-size-7">' +
cityssm.escapeHTML(milestone.workOrderMilestoneDescription) + cityssm.escapeHTML(milestone.workOrderMilestoneDescription!) +
"</span>" + "</span>" +
"</div>") + "</div>") +
('<div class="column">' + ('<div class="column">' +
'<i class="fas fa-circle" style="color:' + '<i class="fas fa-circle" style="color:' +
los.getRandomColor(milestone.workOrderNumber) + los.getRandomColor(milestone.workOrderNumber || "") +
'" aria-hidden="true"></i>' + '" aria-hidden="true"></i>' +
' <a class="has-text-weight-bold" href="' + ' <a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/workOrders/" + "/workOrders/" +
milestone.workOrderId + milestone.workOrderId +
'">' + '">' +
cityssm.escapeHTML(milestone.workOrderNumber) + cityssm.escapeHTML(milestone.workOrderNumber || "") +
"</a><br />" + "</a><br />" +
'<span class="is-size-7">' + '<span class="is-size-7">' +
cityssm.escapeHTML(milestone.workOrderDescription) + cityssm.escapeHTML(milestone.workOrderDescription || "") +
"</span>" + "</span>" +
"</div>") + "</div>") +
('<div class="column is-size-7">' + lotOccupancyHTML + "</div>") + ('<div class="column is-size-7">' + lotOccupancyHTML + "</div>") +
"</div>"; "</div>";
currentPanelElement.append(panelBlockElement); (currentPanelElement as HTMLElement).append(panelBlockElement);
} }
milestoneCalendarContainerElement.append(currentPanelElement); milestoneCalendarContainerElement.append(currentPanelElement!);
}; };
const getMilestones = (event?: Event) => { const getMilestones = (event?: Event) => {
@ -157,7 +155,7 @@ declare const cityssm: cityssmGlobal;
"</div>"; "</div>";
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/workOrders/doGetWorkOrderMilestones", los.urlPrefix + "/workOrders/doGetWorkOrderMilestones",
workOrderSearchFiltersFormElement, workOrderSearchFiltersFormElement,
(responseJSON: { workOrderMilestones: recordTypes.WorkOrderMilestone[] }) => { (responseJSON: { workOrderMilestones: recordTypes.WorkOrderMilestone[] }) => {
renderMilestones(responseJSON.workOrderMilestones); renderMilestones(responseJSON.workOrderMilestones);
@ -166,7 +164,7 @@ declare const cityssm: cityssmGlobal;
}; };
workOrderMilestoneDateFilterElement.addEventListener("change", () => { workOrderMilestoneDateFilterElement.addEventListener("change", () => {
workOrderMilestoneDateStringElement.closest("fieldset").disabled = workOrderMilestoneDateStringElement.closest("fieldset")!.disabled =
workOrderMilestoneDateFilterElement.value !== "date"; workOrderMilestoneDateFilterElement.value !== "date";
getMilestones(); getMilestones();
}); });

View File

@ -0,0 +1 @@
export {};

View File

@ -1,14 +1,15 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los;
const apiKey = document.querySelector("main").dataset.apiKey;
const workOrderTypeIdsElement = document.querySelector("#icsFilters--workOrderTypeIds"); const workOrderTypeIdsElement = document.querySelector("#icsFilters--workOrderTypeIds");
const workOrderMilestoneTypeIdsElement = document.querySelector("#icsFilters--workOrderMilestoneTypeIds"); const workOrderMilestoneTypeIdsElement = document.querySelector("#icsFilters--workOrderMilestoneTypeIds");
const calendarLinkElement = document.querySelector("#icsFilters--calendarURL"); const calendarLinkElement = document.querySelector("#icsFilters--calendarURL");
const updateCalendarURL = () => { const updateCalendarURL = () => {
let url = window.location.href.slice(0, Math.max(0, window.location.href.indexOf(window.location.pathname) + 1)) + let url = window.location.href.slice(0, Math.max(0, window.location.href.indexOf(window.location.pathname) + 1)) +
urlPrefix + los.urlPrefix +
"api/" + "api/" +
apiKey + los.apiKey +
"/" + "/" +
"milestoneICS/" + "milestoneICS/" +
"?"; "?";
@ -30,19 +31,13 @@
} }
calendarLinkElement.value = url.slice(0, -1); calendarLinkElement.value = url.slice(0, -1);
}; };
document document.querySelector("#icsFilters--workOrderTypeIds-all").addEventListener("change", (changeEvent) => {
.querySelector("#icsFilters--workOrderTypeIds-all")
.addEventListener("change", (changeEvent) => {
workOrderTypeIdsElement.disabled = changeEvent.currentTarget.checked; workOrderTypeIdsElement.disabled = changeEvent.currentTarget.checked;
}); });
document document.querySelector("#icsFilters--workOrderMilestoneTypeIds-all").addEventListener("change", (changeEvent) => {
.querySelector("#icsFilters--workOrderMilestoneTypeIds-all")
.addEventListener("change", (changeEvent) => {
workOrderMilestoneTypeIdsElement.disabled = changeEvent.currentTarget.checked; workOrderMilestoneTypeIdsElement.disabled = changeEvent.currentTarget.checked;
}); });
const inputSelectElements = document const inputSelectElements = document.querySelector("#panel--icsFilters").querySelectorAll("input, select");
.querySelector("#panel--icsFilters")
.querySelectorAll("input, select");
for (const element of inputSelectElements) { for (const element of inputSelectElements) {
element.addEventListener("change", updateCalendarURL); element.addEventListener("change", updateCalendarURL);
} }

View File

@ -1,6 +1,9 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
import type * as globalTypes from "../types/globalTypes";
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los as globalTypes.LOS;
const apiKey = document.querySelector("main").dataset.apiKey;
const workOrderTypeIdsElement = document.querySelector( const workOrderTypeIdsElement = document.querySelector(
"#icsFilters--workOrderTypeIds" "#icsFilters--workOrderTypeIds"
@ -18,14 +21,11 @@
let url = let url =
window.location.href.slice( window.location.href.slice(
0, 0,
Math.max( Math.max(0, window.location.href.indexOf(window.location.pathname) + 1)
0,
window.location.href.indexOf(window.location.pathname) + 1
)
) + ) +
urlPrefix + los.urlPrefix +
"api/" + "api/" +
apiKey + los.apiKey +
"/" + "/" +
"milestoneICS/" + "milestoneICS/" +
"?"; "?";
@ -59,27 +59,23 @@
calendarLinkElement.value = url.slice(0, -1); calendarLinkElement.value = url.slice(0, -1);
}; };
document (
.querySelector("#icsFilters--workOrderTypeIds-all") document.querySelector("#icsFilters--workOrderTypeIds-all") as HTMLInputElement
.addEventListener("change", (changeEvent) => { ).addEventListener("change", (changeEvent) => {
workOrderTypeIdsElement.disabled = ( workOrderTypeIdsElement.disabled = (changeEvent.currentTarget as HTMLInputElement).checked;
changeEvent.currentTarget as HTMLInputElement });
).checked;
});
document (
.querySelector("#icsFilters--workOrderMilestoneTypeIds-all") document.querySelector("#icsFilters--workOrderMilestoneTypeIds-all") as HTMLInputElement
.addEventListener("change", (changeEvent) => { ).addEventListener("change", (changeEvent) => {
workOrderMilestoneTypeIdsElement.disabled = ( workOrderMilestoneTypeIdsElement.disabled = (
changeEvent.currentTarget as HTMLInputElement changeEvent.currentTarget as HTMLInputElement
).checked; ).checked;
}); });
const inputSelectElements = document const inputSelectElements = (
.querySelector("#panel--icsFilters") document.querySelector("#panel--icsFilters") as HTMLElement
.querySelectorAll("input, select") as NodeListOf< ).querySelectorAll("input, select") as NodeListOf<HTMLInputElement | HTMLSelectElement>;
HTMLInputElement | HTMLSelectElement
>;
for (const element of inputSelectElements) { for (const element of inputSelectElements) {
element.addEventListener("change", updateCalendarURL); element.addEventListener("change", updateCalendarURL);
@ -90,5 +86,5 @@
calendarLinkElement.addEventListener("click", () => { calendarLinkElement.addEventListener("click", () => {
calendarLinkElement.focus(); calendarLinkElement.focus();
calendarLinkElement.select(); calendarLinkElement.select();
}) });
})(); })();

View File

@ -2,7 +2,6 @@
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const workOrderPrints = exports.workOrderPrints; const workOrderPrints = exports.workOrderPrints;
const searchFilterFormElement = document.querySelector("#form--searchFilters"); const searchFilterFormElement = document.querySelector("#form--searchFilters");
los.initializeDatePickers(searchFilterFormElement); los.initializeDatePickers(searchFilterFormElement);
@ -16,7 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' + '<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' +
"Loading Work Orders..." + "Loading Work Orders..." +
"</div>"; "</div>";
cityssm.postJSON(urlPrefix + "/workOrders/doSearchWorkOrders", searchFilterFormElement, (responseJSON) => { cityssm.postJSON(los.urlPrefix + "/workOrders/doSearchWorkOrders", searchFilterFormElement, (responseJSON) => {
if (responseJSON.workOrders.length === 0) { if (responseJSON.workOrders.length === 0) {
searchResultsContainerElement.innerHTML = searchResultsContainerElement.innerHTML =
'<div class="message is-info">' + '<div class="message is-info">' +
@ -30,7 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
for (const lot of workOrder.workOrderLots) { for (const lot of workOrder.workOrderLots) {
relatedHTML += relatedHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(lot.mapName) + cityssm.escapeHTML(lot.mapName || "") +
'">' + '">' +
'<i class="fas fa-vector-square" aria-label="' + '<i class="fas fa-vector-square" aria-label="' +
cityssm.escapeHTML(exports.aliases.lot) + cityssm.escapeHTML(exports.aliases.lot) +
@ -42,7 +41,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
for (const occupant of occupancy.lotOccupancyOccupants) { for (const occupant of occupancy.lotOccupancyOccupants) {
relatedHTML += relatedHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType) + cityssm.escapeHTML(occupant.lotOccupantType || "") +
'">' + '">' +
'<i class="fas fa-user" aria-label="' + '<i class="fas fa-user" aria-label="' +
cityssm.escapeHTML(exports.aliases.occupant) + cityssm.escapeHTML(exports.aliases.occupant) +
@ -54,20 +53,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
resultsTbodyElement.insertAdjacentHTML("beforeend", "<tr>" + resultsTbodyElement.insertAdjacentHTML("beforeend", "<tr>" +
("<td>" + ("<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/workOrders/" + "/workOrders/" +
workOrder.workOrderId + workOrder.workOrderId +
'">' + '">' +
(workOrder.workOrderNumber.trim() (workOrder.workOrderNumber.trim()
? cityssm.escapeHTML(workOrder.workOrderNumber) ? cityssm.escapeHTML(workOrder.workOrderNumber || "")
: "(No Number)") + : "(No Number)") +
"</a>" + "</a>" +
"</td>") + "</td>") +
("<td>" + ("<td>" +
cityssm.escapeHTML(workOrder.workOrderType) + cityssm.escapeHTML(workOrder.workOrderType || "") +
"<br />" + "<br />" +
'<span class="is-size-7">' + '<span class="is-size-7">' +
cityssm.escapeHTML(workOrder.workOrderDescription) + cityssm.escapeHTML(workOrder.workOrderDescription || "") +
"</span>" + "</span>" +
"</td>") + "</td>") +
('<td class="is-nowrap"><span class="is-size-7">' + ('<td class="is-nowrap"><span class="is-size-7">' +
@ -95,7 +94,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
(workOrderPrints.length > 0 (workOrderPrints.length > 0
? "<td>" + ? "<td>" +
'<a class="button is-small" data-tooltip="Print" href="' + '<a class="button is-small" data-tooltip="Print" href="' +
urlPrefix + los.urlPrefix +
"/print/" + "/print/" +
workOrderPrints[0] + workOrderPrints[0] +
"/?workOrderId=" + "/?workOrderId=" +

View File

@ -1,4 +1,4 @@
/* eslint-disable unicorn/prefer-module */ /* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
import type * as recordTypes from "../types/recordTypes"; import type * as recordTypes from "../types/recordTypes";
import type * as globalTypes from "../types/globalTypes"; import type * as globalTypes from "../types/globalTypes";
@ -9,8 +9,6 @@ declare const cityssm: cityssmGlobal;
(() => { (() => {
const los = exports.los as globalTypes.LOS; const los = exports.los as globalTypes.LOS;
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const workOrderPrints: string[] = exports.workOrderPrints; const workOrderPrints: string[] = exports.workOrderPrints;
const searchFilterFormElement = document.querySelector( const searchFilterFormElement = document.querySelector(
@ -40,7 +38,7 @@ declare const cityssm: cityssmGlobal;
"</div>"; "</div>";
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/workOrders/doSearchWorkOrders", los.urlPrefix + "/workOrders/doSearchWorkOrders",
searchFilterFormElement, searchFilterFormElement,
(responseJSON: { count: number; workOrders: recordTypes.WorkOrder[] }) => { (responseJSON: { count: number; workOrders: recordTypes.WorkOrder[] }) => {
if (responseJSON.workOrders.length === 0) { if (responseJSON.workOrders.length === 0) {
@ -57,10 +55,10 @@ declare const cityssm: cityssmGlobal;
for (const workOrder of responseJSON.workOrders) { for (const workOrder of responseJSON.workOrders) {
let relatedHTML = ""; let relatedHTML = "";
for (const lot of workOrder.workOrderLots) { for (const lot of workOrder.workOrderLots!) {
relatedHTML += relatedHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(lot.mapName) + cityssm.escapeHTML(lot.mapName || "") +
'">' + '">' +
'<i class="fas fa-vector-square" aria-label="' + '<i class="fas fa-vector-square" aria-label="' +
cityssm.escapeHTML(exports.aliases.lot) + cityssm.escapeHTML(exports.aliases.lot) +
@ -69,11 +67,11 @@ declare const cityssm: cityssmGlobal;
"</span><br />"; "</span><br />";
} }
for (const occupancy of workOrder.workOrderLotOccupancies) { for (const occupancy of workOrder.workOrderLotOccupancies!) {
for (const occupant of occupancy.lotOccupancyOccupants) { for (const occupant of occupancy.lotOccupancyOccupants!) {
relatedHTML += relatedHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType) + cityssm.escapeHTML(occupant.lotOccupantType || "") +
'">' + '">' +
'<i class="fas fa-user" aria-label="' + '<i class="fas fa-user" aria-label="' +
cityssm.escapeHTML(exports.aliases.occupant) + cityssm.escapeHTML(exports.aliases.occupant) +
@ -88,20 +86,20 @@ declare const cityssm: cityssmGlobal;
"<tr>" + "<tr>" +
("<td>" + ("<td>" +
'<a class="has-text-weight-bold" href="' + '<a class="has-text-weight-bold" href="' +
urlPrefix + los.urlPrefix +
"/workOrders/" + "/workOrders/" +
workOrder.workOrderId + workOrder.workOrderId +
'">' + '">' +
(workOrder.workOrderNumber.trim() (workOrder.workOrderNumber!.trim()
? cityssm.escapeHTML(workOrder.workOrderNumber) ? cityssm.escapeHTML(workOrder.workOrderNumber || "")
: "(No Number)") + : "(No Number)") +
"</a>" + "</a>" +
"</td>") + "</td>") +
("<td>" + ("<td>" +
cityssm.escapeHTML(workOrder.workOrderType) + cityssm.escapeHTML(workOrder.workOrderType || "") +
"<br />" + "<br />" +
'<span class="is-size-7">' + '<span class="is-size-7">' +
cityssm.escapeHTML(workOrder.workOrderDescription) + cityssm.escapeHTML(workOrder.workOrderDescription || "") +
"</span>" + "</span>" +
"</td>") + "</td>") +
('<td class="is-nowrap"><span class="is-size-7">' + ('<td class="is-nowrap"><span class="is-size-7">' +
@ -129,7 +127,7 @@ declare const cityssm: cityssmGlobal;
(workOrderPrints.length > 0 (workOrderPrints.length > 0
? "<td>" + ? "<td>" +
'<a class="button is-small" data-tooltip="Print" href="' + '<a class="button is-small" data-tooltip="Print" href="' +
urlPrefix + los.urlPrefix +
"/print/" + "/print/" +
workOrderPrints[0] + workOrderPrints[0] +
"/?workOrderId=" + "/?workOrderId=" +

View File

@ -1,27 +1,23 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los;
const reopenWorkOrderButtonElement = document.querySelector("#button--reopenWorkOrder"); const reopenWorkOrderButtonElement = document.querySelector("#button--reopenWorkOrder");
if (reopenWorkOrderButtonElement) { if (reopenWorkOrderButtonElement) {
reopenWorkOrderButtonElement.addEventListener("click", () => { reopenWorkOrderButtonElement.addEventListener("click", () => {
const workOrderId = reopenWorkOrderButtonElement.dataset.workOrderId; const workOrderId = reopenWorkOrderButtonElement.dataset.workOrderId;
const doReopen = () => { const doReopen = () => {
cityssm.postJSON(urlPrefix + "/workOrders/doReopenWorkOrder", { cityssm.postJSON(los.urlPrefix + "/workOrders/doReopenWorkOrder", {
workOrderId workOrderId
}, (responseJSON) => { }, (responseJSON) => {
if (responseJSON.success) { if (responseJSON.success) {
window.location.href = window.location.href =
urlPrefix + los.urlPrefix + "/workOrders/" + workOrderId + "/edit/?t=" + Date.now();
"/workOrders/" +
workOrderId +
"/edit/?t=" +
Date.now();
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Reopening Work Order", title: "Error Reopening Work Order",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }

View File

@ -1,13 +1,16 @@
/* eslint-disable unicorn/prefer-module */ /* eslint-disable unicorn/prefer-module */
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 cityssm: cityssmGlobal;
declare const bulmaJS: BulmaJS; declare const bulmaJS: BulmaJS;
(() => { (() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix; const los = exports.los as globalTypes.LOS;
const reopenWorkOrderButtonElement = document.querySelector( const reopenWorkOrderButtonElement = document.querySelector(
"#button--reopenWorkOrder" "#button--reopenWorkOrder"
@ -15,30 +18,22 @@ declare const bulmaJS: BulmaJS;
if (reopenWorkOrderButtonElement) { if (reopenWorkOrderButtonElement) {
reopenWorkOrderButtonElement.addEventListener("click", () => { reopenWorkOrderButtonElement.addEventListener("click", () => {
const workOrderId = const workOrderId = reopenWorkOrderButtonElement.dataset.workOrderId;
reopenWorkOrderButtonElement.dataset.workOrderId;
const doReopen = () => { const doReopen = () => {
cityssm.postJSON( cityssm.postJSON(
urlPrefix + "/workOrders/doReopenWorkOrder", los.urlPrefix + "/workOrders/doReopenWorkOrder",
{ {
workOrderId workOrderId
}, },
(responseJSON: { (responseJSON: { success: boolean; errorMessage?: string }) => {
success: boolean;
errorMessage?: string;
}) => {
if (responseJSON.success) { if (responseJSON.success) {
window.location.href = window.location.href =
urlPrefix + los.urlPrefix + "/workOrders/" + workOrderId + "/edit/?t=" + Date.now();
"/workOrders/" +
workOrderId +
"/edit/?t=" +
Date.now();
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: "Error Reopening Work Order", title: "Error Reopening Work Order",
message: responseJSON.errorMessage, message: responseJSON.errorMessage || "",
contextualColorName: "danger" contextualColorName: "danger"
}); });
} }

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,a=()=>{cityssm.postJSON(e+"/admin/doCleanupDatabase",{},e=>{e.success?bulmaJS.alert({title:"Database Cleaned Up Successfully",message:e.inactivedRecordCount+" records inactivated, "+e.purgedRecordCount+" permanently deleted.",contextualColorName:"success"}):bulmaJS.alert({title:"Error Cleaning Database",message:e.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:a}})})})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,a=()=>{cityssm.postJSON(e.urlPrefix+"/admin/doCleanupDatabase",{},e=>{e.success?bulmaJS.alert({title:"Database Cleaned Up Successfully",message:e.inactivedRecordCount+" records inactivated, "+e.purgedRecordCount+" permanently deleted.",contextualColorName:"success"}):bulmaJS.alert({title:"Error Cleaning Database",message:e.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:a}})})})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,o=document.querySelectorAll(".fa-circle[data-work-order-number");for(const r of o)r.style.color=e.getRandomColor(r.dataset.workOrderNumber)})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,o=document.querySelectorAll(".fa-circle[data-work-order-number");for(const r of o)r.style.color=e.getRandomColor(r.dataset.workOrderNumber||"")})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=document.querySelector("main").dataset.urlPrefix,a=exports.lotOccupancyPrints,e=document.querySelector("#form--searchFilters"),s=document.querySelector("#container--searchResults"),c=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),i=document.querySelector("#searchFilter--offset"),n=()=>{const n=Number.parseInt(i.value,10);s.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+exports.aliases.occupancies+"...</div>",cityssm.postJSON(t+"/lotOccupancies/doSearchLotOccupancies",e,e=>{if(0===e.lotOccupancies.length)return void(s.innerHTML='<div class="message is-info"><p class="message-body">There are no '+cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase())+" records that meet the search criteria.</p></div>");const i=document.createElement("tbody"),o=cityssm.dateToString(new Date);for(const s of e.lotOccupancies){let e="";e=s.occupancyStartDateString<=o&&(""===s.occupancyEndDateString||s.occupancyEndDateString>=o)?'<span class="has-tooltip-right" data-tooltip="Current '+exports.aliases.occupancy+'"><i class="fas fa-play" aria-label="Current '+exports.aliases.occupancy+'"></i></span>':s.occupancyStartDateString>o?'<span class="has-tooltip-right" data-tooltip="Future '+exports.aliases.occupancy+'"><i class="fas fa-fast-forward" aria-label="Future '+exports.aliases.occupancy+'"></i></span>':'<span class="has-tooltip-right" data-tooltip="Past '+exports.aliases.occupancy+'"><i class="fas fa-stop" aria-label="Past '+exports.aliases.occupancy+'"></i></span>';let c="";for(const t of s.lotOccupancyOccupants)c+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.lotOccupantType)+'">'+cityssm.escapeHTML(t.occupantName)+"</span><br />";i.insertAdjacentHTML("beforeend",'<tr><td class="has-width-1">'+e+'</td><td><a class="has-text-weight-bold" href="'+t+"/lotOccupancies/"+s.lotOccupancyId+'">'+cityssm.escapeHTML(s.occupancyType)+"</a></td><td>"+(s.lotName?'<a class="has-tooltip-right" data-tooltip="'+cityssm.escapeHTML(s.lotType)+'" href="'+t+"/lots/"+s.lotId+'">'+cityssm.escapeHTML(s.lotName)+"</a>":'<span class="has-text-grey">(No '+cityssm.escapeHTML(exports.aliases.lot)+")</span>")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(s.mapName||"")+"</span></td><td>"+s.occupancyStartDateString+"</td><td>"+(s.occupancyEndDate?s.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>')+"</td><td>"+c+"</td>"+(a.length>0?'<td><a class="button is-small" data-tooltip="Print" href="'+t+"/print/"+a[0]+"/?lotOccupancyId="+s.lotOccupancyId+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a></td>':"")+"</tr>")}s.innerHTML='<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"><thead><tr><th class="has-width-1"></th><th>'+cityssm.escapeHTML(exports.aliases.occupancy)+" Type</th><th>"+cityssm.escapeHTML(exports.aliases.lot)+"</th><th>"+cityssm.escapeHTML(exports.aliases.occupancyStartDate)+"</th><th>End Date</th><th>"+cityssm.escapeHTML(exports.aliases.occupants)+"</th>"+(a.length>0?'<th class="has-width-1"><span class="is-sr-only">Print</span></th>':"")+'</tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(n+1).toString()+" to "+Math.min(e.count,c+n)+" of "+e.count+'</div></div><div class="level-right">'+(n>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(c+n<e.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",s.querySelector("table").append(i),n>0&&s.querySelector("button[data-page='previous']").addEventListener("click",l),c+n<e.count&&s.querySelector("button[data-page='next']").addEventListener("click",r)})},o=()=>{i.value="0",n()},l=()=>{i.value=Math.max(Number.parseInt(i.value,10)-c,0).toString(),n()},r=()=>{i.value=(Number.parseInt(i.value,10)+c).toString(),n()},p=e.querySelectorAll("input, select");for(const t of p)t.addEventListener("change",o);e.addEventListener("submit",t=>{t.preventDefault(),o()}),n()})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=exports.los,a=exports.lotOccupancyPrints,e=document.querySelector("#form--searchFilters"),s=document.querySelector("#container--searchResults"),c=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),i=document.querySelector("#searchFilter--offset"),l=()=>{const l=Number.parseInt(i.value,10);s.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+exports.aliases.occupancies+"...</div>",cityssm.postJSON(t.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,e=>{if(0===e.lotOccupancies.length)return void(s.innerHTML='<div class="message is-info"><p class="message-body">There are no '+cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase())+" records that meet the search criteria.</p></div>");const i=document.createElement("tbody"),o=cityssm.dateToString(new Date);for(const s of e.lotOccupancies){let e="";e=s.occupancyStartDateString<=o&&(""===s.occupancyEndDateString||s.occupancyEndDateString>=o)?'<span class="has-tooltip-right" data-tooltip="Current '+exports.aliases.occupancy+'"><i class="fas fa-play" aria-label="Current '+exports.aliases.occupancy+'"></i></span>':s.occupancyStartDateString>o?'<span class="has-tooltip-right" data-tooltip="Future '+exports.aliases.occupancy+'"><i class="fas fa-fast-forward" aria-label="Future '+exports.aliases.occupancy+'"></i></span>':'<span class="has-tooltip-right" data-tooltip="Past '+exports.aliases.occupancy+'"><i class="fas fa-stop" aria-label="Past '+exports.aliases.occupancy+'"></i></span>';let c="";for(const t of s.lotOccupancyOccupants)c+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.lotOccupantType||"")+'">'+cityssm.escapeHTML(t.occupantName||"")+"</span><br />";i.insertAdjacentHTML("beforeend",'<tr><td class="has-width-1">'+e+'</td><td><a class="has-text-weight-bold" href="'+t.urlPrefix+"/lotOccupancies/"+s.lotOccupancyId+'">'+cityssm.escapeHTML(s.occupancyType)+"</a></td><td>"+(s.lotName?'<a class="has-tooltip-right" data-tooltip="'+cityssm.escapeHTML(s.lotType||"")+'" href="'+t.urlPrefix+"/lots/"+s.lotId+'">'+cityssm.escapeHTML(s.lotName)+"</a>":'<span class="has-text-grey">(No '+cityssm.escapeHTML(exports.aliases.lot)+")</span>")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(s.mapName||"")+"</span></td><td>"+s.occupancyStartDateString+"</td><td>"+(s.occupancyEndDate?s.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>')+"</td><td>"+c+"</td>"+(a.length>0?'<td><a class="button is-small" data-tooltip="Print" href="'+t.urlPrefix+"/print/"+a[0]+"/?lotOccupancyId="+s.lotOccupancyId+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a></td>':"")+"</tr>")}s.innerHTML='<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"><thead><tr><th class="has-width-1"></th><th>'+cityssm.escapeHTML(exports.aliases.occupancy)+" Type</th><th>"+cityssm.escapeHTML(exports.aliases.lot)+"</th><th>"+cityssm.escapeHTML(exports.aliases.occupancyStartDate)+"</th><th>End Date</th><th>"+cityssm.escapeHTML(exports.aliases.occupants)+"</th>"+(a.length>0?'<th class="has-width-1"><span class="is-sr-only">Print</span></th>':"")+'</tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(l+1).toString()+" to "+Math.min(e.count,c+l)+" of "+e.count+'</div></div><div class="level-right">'+(l>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(c+l<e.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",s.querySelector("table").append(i),l>0&&s.querySelector("button[data-page='previous']").addEventListener("click",r),c+l<e.count&&s.querySelector("button[data-page='next']").addEventListener("click",n)})},o=()=>{i.value="0",l()},r=()=>{i.value=Math.max(Number.parseInt(i.value,10)-c,0).toString(),l()},n=()=>{i.value=(Number.parseInt(i.value,10)+c).toString(),l()},p=e.querySelectorAll("input, select");for(const t of p)t.addEventListener("change",o);e.addEventListener("submit",t=>{t.preventDefault(),o()}),l()})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,t=document.querySelector("#form--searchFilters"),s=document.querySelector("#container--searchResults"),a=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),i=document.querySelector("#searchFilter--offset"),r=()=>{const r=Number.parseInt(i.value,10);s.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+exports.aliases.lots+"...</div>",cityssm.postJSON(e+"/lots/doSearchLots",t,t=>{if(0===t.lots.length)return void(s.innerHTML='<div class="message is-info"><p class="message-body">There are no '+exports.aliases.lots.toLowerCase()+" that meet the search criteria.</p></div>");const i=document.createElement("tbody");for(const s of t.lots)i.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e+"/lots/"+s.lotId+'">'+cityssm.escapeHTML(s.lotName)+'</a></td><td><a href="'+e+"/maps/"+s.mapId+'">'+(s.mapName?cityssm.escapeHTML(s.mapName):'<span class="has-text-grey">(No Name)</span>')+"</a></td><td>"+cityssm.escapeHTML(s.lotType)+"</td><td>"+(s.lotStatusId?cityssm.escapeHTML(s.lotStatus):'<span class="has-text-grey">(No Status)</span>')+"<br />"+(s.lotOccupancyCount>0?'<span class="is-size-7">Currently Occupied</span>':"")+"</td></tr>");s.innerHTML='<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"><thead><tr><th>'+cityssm.escapeHTML(exports.aliases.lot)+"</th><th>"+cityssm.escapeHTML(exports.aliases.map)+"</th><th>"+cityssm.escapeHTML(exports.aliases.lot)+' Type</th><th>Status</th></tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(r+1).toString()+" to "+Math.min(t.count,a+r)+" of "+t.count+'</div></div><div class="level-right">'+(r>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(a+r<t.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",s.querySelector("table").append(i),r>0&&s.querySelector("button[data-page='previous']").addEventListener("click",o),a+r<t.count&&s.querySelector("button[data-page='next']").addEventListener("click",n)})},l=()=>{i.value="0",r()},o=()=>{i.value=Math.max(Number.parseInt(i.value,10)-a,0).toString(),r()},n=()=>{i.value=(Number.parseInt(i.value,10)+a).toString(),r()},c=t.querySelectorAll("input, select");for(const e of c)e.addEventListener("change",l);t.addEventListener("submit",e=>{e.preventDefault(),l()}),r()})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#form--searchFilters"),s=document.querySelector("#container--searchResults"),a=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),i=document.querySelector("#searchFilter--offset"),r=()=>{const r=Number.parseInt(i.value,10);s.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+exports.aliases.lots+"...</div>",cityssm.postJSON(e.urlPrefix+"/lots/doSearchLots",t,t=>{if(0===t.lots.length)return void(s.innerHTML='<div class="message is-info"><p class="message-body">There are no '+exports.aliases.lots.toLowerCase()+" that meet the search criteria.</p></div>");const i=document.createElement("tbody");for(const s of t.lots)i.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/lots/"+s.lotId+'">'+cityssm.escapeHTML(s.lotName||"")+'</a></td><td><a href="'+e.urlPrefix+"/maps/"+s.mapId+'">'+(s.mapName?cityssm.escapeHTML(s.mapName):'<span class="has-text-grey">(No Name)</span>')+"</a></td><td>"+cityssm.escapeHTML(s.lotType||"")+"</td><td>"+(s.lotStatusId?cityssm.escapeHTML(s.lotStatus||""):'<span class="has-text-grey">(No Status)</span>')+"<br />"+(s.lotOccupancyCount>0?'<span class="is-size-7">Currently Occupied</span>':"")+"</td></tr>");s.innerHTML='<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"><thead><tr><th>'+cityssm.escapeHTML(exports.aliases.lot)+"</th><th>"+cityssm.escapeHTML(exports.aliases.map)+"</th><th>"+cityssm.escapeHTML(exports.aliases.lot)+' Type</th><th>Status</th></tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(r+1).toString()+" to "+Math.min(t.count,a+r)+" of "+t.count+'</div></div><div class="level-right">'+(r>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(a+r<t.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",s.querySelector("table").append(i),r>0&&s.querySelector("button[data-page='previous']").addEventListener("click",o),a+r<t.count&&s.querySelector("button[data-page='next']").addEventListener("click",n)})},l=()=>{i.value="0",r()},o=()=>{i.value=Math.max(Number.parseInt(i.value,10)-a,0).toString(),r()},n=()=>{i.value=(Number.parseInt(i.value,10)+a).toString(),r()},c=t.querySelectorAll("input, select");for(const e of c)e.addEventListener("change",l);t.addEventListener("submit",e=>{e.preventDefault(),l()}),r()})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=e=>{const t=e.currentTarget.closest(".field").querySelector("input, select");if(t.classList.remove("is-readonly"),"INPUT"===t.tagName)t.readOnly=!1,t.disabled=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()},t={type:"date",dateFormat:"yyyy-MM-dd",showFooter:!1,color:"info",displayMode:"dialog"},o={type:"time",timeFormat:"hh:mm",color:"info",displayMode:"dialog",validateLabel:"Set Time",minuteSteps:1},a=["red","green","orange","blue","pink","yellow","purple"],s=["bright","light","dark"],l={highlightMap:(e,t,o)=>{let a,s=t;for(;!(a=e.querySelector("#"+s))&&s.includes("-");)s=s.slice(0,Math.max(0,s.lastIndexOf("-")));if(a){a.style.fill=null,a.classList.add("highlight","is-"+o);const e=a.querySelectorAll("path");for(const t of e)t.style.fill=null}},initializeUnlockFieldButtons:t=>{const o=t.querySelectorAll(".is-unlock-field-button");for(const t of o)t.addEventListener("click",e)},initializeDatePickers:e=>{const o=e.querySelectorAll("input[type='date']");for(const a of o){const o=Object.assign({},t);a.required&&(o.showClearButton=!1),a.min&&(o.minDate=cityssm.dateStringToDate(a.min)),a.max&&(o.maxDate=cityssm.dateStringToDate(a.max));const s=exports.bulmaCalendar.attach(a,o)[0];s.on("save",()=>{a.value=s.value(),a.dispatchEvent(new Event("change"))}),s.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),s.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const l=e.querySelector("#"+s._id),r=l.querySelectorAll(".datepicker-nav button.is-text");for(const e of r)e.classList.add("is-"+t.color),e.classList.remove("is-text");const n=l.querySelector(".datetimepicker-clear-button");n&&(a.required?n.remove():(n.dataset.tooltip="Clear",n.ariaLabel="Clear",n.innerHTML='<span class="has-text-weight-bold" aria-hidden="true">&times;</span>'));const i=document.querySelector("label[for='"+a.id+"']");i&&(l.querySelector(".datetimepicker-dummy-input").ariaLabel=i.textContent)}},initializeTimePickers:e=>{const t=e.querySelectorAll("input[type='time']");for(const a of t){const t=Object.assign({},o);a.required&&(t.showClearButton=!1);const s=exports.bulmaCalendar.attach(a,t)[0];s.on("save",()=>{a.value=s.value(),a.dispatchEvent(new Event("change"))}),s.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),s.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const l=e.querySelector("#"+s._id),r=l.querySelector(".datetimepicker-footer-cancel");r&&r.remove();const n=l.querySelector(".datetimepicker-clear-button");n&&(a.required?n.remove():(n.dataset.tooltip="Clear",n.innerHTML='<span class="has-text-weight-bold" aria-hidden="true">&times;</span>'))}},populateAliases:e=>{const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Map":e.textContent=exports.aliases.map;break;case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}},getRandomColor:e=>{let t=e;return t.length<2&&(t+="a1"),exports.randomColor({seed:t+t,hue:a[t.codePointAt(t.length-1)%a.length],luminosity:s[t.codePointAt(t.length-2)%s.length]})}};exports.los=l})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=e=>{const t=e.currentTarget.closest(".field").querySelector("input, select");if(t.classList.remove("is-readonly"),"INPUT"===t.tagName)t.readOnly=!1,t.disabled=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()},t={type:"date",dateFormat:"yyyy-MM-dd",showFooter:!1,color:"info",displayMode:"dialog"},o={type:"time",timeFormat:"hh:mm",color:"info",displayMode:"dialog",validateLabel:"Set Time",minuteSteps:1},a=["red","green","orange","blue","pink","yellow","purple"],s=["bright","light","dark"],l={urlPrefix:document.querySelector("main").dataset.urlPrefix,apiKey:document.querySelector("main").dataset.apiKey,highlightMap:(e,t,o)=>{let a,s=t;for(;!(a=e.querySelector("#"+s))&&s.includes("-");)s=s.slice(0,Math.max(0,s.lastIndexOf("-")));if(a){a.style.fill="",a.classList.add("highlight","is-"+o);const e=a.querySelectorAll("path");for(const t of e)t.style.fill=""}},initializeUnlockFieldButtons:t=>{const o=t.querySelectorAll(".is-unlock-field-button");for(const t of o)t.addEventListener("click",e)},initializeDatePickers:e=>{const o=e.querySelectorAll("input[type='date']");for(const a of o){const o=Object.assign({},t);a.required&&(o.showClearButton=!1),a.min&&(o.minDate=cityssm.dateStringToDate(a.min)),a.max&&(o.maxDate=cityssm.dateStringToDate(a.max));const s=exports.bulmaCalendar.attach(a,o)[0];s.on("save",()=>{a.value=s.value(),a.dispatchEvent(new Event("change"))}),s.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),s.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const l=e.querySelector("#"+s._id),r=l.querySelectorAll(".datepicker-nav button.is-text");for(const e of r)e.classList.add("is-"+t.color),e.classList.remove("is-text");const i=l.querySelector(".datetimepicker-clear-button");i&&(a.required?i.remove():(i.dataset.tooltip="Clear",i.ariaLabel="Clear",i.innerHTML='<span class="has-text-weight-bold" aria-hidden="true">&times;</span>'));const n=document.querySelector("label[for='"+a.id+"']");n&&(l.querySelector(".datetimepicker-dummy-input").ariaLabel=n.textContent)}},initializeTimePickers:e=>{const t=e.querySelectorAll("input[type='time']");for(const a of t){const t=Object.assign({},o);a.required&&(t.showClearButton=!1);const s=exports.bulmaCalendar.attach(a,t)[0];s.on("save",()=>{a.value=s.value(),a.dispatchEvent(new Event("change"))}),s.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),s.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const l=e.querySelector("#"+s._id),r=l.querySelector(".datetimepicker-footer-cancel");r&&r.remove();const i=l.querySelector(".datetimepicker-clear-button");i&&(a.required?i.remove():(i.dataset.tooltip="Clear",i.innerHTML='<span class="has-text-weight-bold" aria-hidden="true">&times;</span>'))}},populateAliases:e=>{const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Map":e.textContent=exports.aliases.map;break;case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}},getRandomColor:e=>{let t=e;return t.length<2&&(t+="a1"),exports.randomColor({seed:t+t,hue:a[t.codePointAt(t.length-1)%a.length],luminosity:s[t.codePointAt(t.length-2)%s.length]})}};exports.los=l})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,t=document.querySelector("#map--mapId").value,a=""===t,s=document.querySelector("#form--map");s.addEventListener("submit",t=>{t.preventDefault(),cityssm.postJSON(e+"/maps/"+(a?"doCreateMap":"doUpdateMap"),s,t=>{t.success?(cityssm.disableNavBlocker(),a?window.location.href=e+"/maps/"+t.mapId+"/edit":bulmaJS.alert({message:exports.aliases.map+" Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating "+exports.aliases.map,message:t.errorMessage,contextualColorName:"danger"})})});const o=s.querySelectorAll("input, select");for(const e of o)e.addEventListener("change",cityssm.enableNavBlocker);a||document.querySelector("#button--deleteMap").addEventListener("click",a=>{a.preventDefault();bulmaJS.confirm({title:"Delete "+exports.aliases.map,message:"Are you sure you want to delete this "+exports.aliases.map.toLowerCase()+" and all related "+exports.aliases.lots.toLowerCase()+"?",contextualColorName:"warning",okButton:{text:"Yes, Delete "+exports.aliases.map+"?",callbackFunction:()=>{cityssm.postJSON(e+"/maps/doDeleteMap",{mapId:t},t=>{t.success?window.location.href=e+"/maps?t="+Date.now():bulmaJS.alert({title:"Error Deleting "+exports.aliases.map,message:t.errorMessage,contextualColorName:"danger"})})}}})})})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#map--mapId").value,a=""===t,s=document.querySelector("#form--map");s.addEventListener("submit",t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/maps/"+(a?"doCreateMap":"doUpdateMap"),s,t=>{t.success?(cityssm.disableNavBlocker(),a?window.location.href=e.urlPrefix+"/maps/"+t.mapId+"/edit":bulmaJS.alert({message:exports.aliases.map+" Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating "+exports.aliases.map,message:t.errorMessage||"",contextualColorName:"danger"})})});const o=s.querySelectorAll("input, select");for(const e of o)e.addEventListener("change",cityssm.enableNavBlocker);a||document.querySelector("#button--deleteMap").addEventListener("click",a=>{a.preventDefault();bulmaJS.confirm({title:"Delete "+exports.aliases.map,message:"Are you sure you want to delete this "+exports.aliases.map.toLowerCase()+" and all related "+exports.aliases.lots.toLowerCase()+"?",contextualColorName:"warning",okButton:{text:"Yes, Delete "+exports.aliases.map+"?",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/maps/doDeleteMap",{mapId:t},t=>{t.success?window.location.href=e.urlPrefix+"/maps?t="+Date.now():bulmaJS.alert({title:"Error Deleting "+exports.aliases.map,message:t.errorMessage||"",contextualColorName:"danger"})})}}})})})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,a=exports.maps,s=document.querySelector("#searchFilter--map"),t=document.querySelector("#container--searchResults"),r=()=>{t.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+exports.aliases.maps+"...</div>";let r=0;const i=document.createElement("tbody"),d=s.value.trim().toLowerCase().split(" ");for(const s of a){const a=(s.mapName+" "+s.mapDescription+" "+s.mapAddress1+" "+s.mapAddress2).toLowerCase();let t=!0;for(const e of d)if(!a.includes(e)){t=!1;break}t&&(r+=1,i.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e+"/maps/"+s.mapId+'">'+cityssm.escapeHTML(s.mapName||"(No Name)")+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(s.mapDescription)+"</span></td><td>"+(s.mapAddress1?cityssm.escapeHTML(s.mapAddress1)+"<br />":"")+(s.mapAddress2?cityssm.escapeHTML(s.mapAddress2)+"<br />":"")+(s.mapCity||s.mapProvince?cityssm.escapeHTML(s.mapCity)+", "+cityssm.escapeHTML(s.mapProvince)+"<br />":"")+(s.mapPostalCode?cityssm.escapeHTML(s.mapPostalCode):"")+"</td><td>"+cityssm.escapeHTML(s.mapPhoneNumber)+'</td><td class="has-text-centered">'+(s.mapLatitude&&s.mapLongitude?'<span data-tooltip="Has Geographic Coordinates"><i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i></span>':"")+'</td><td class="has-text-centered">'+(s.mapSVG?'<span data-tooltip="Has Image"><i class="fas fa-image" aria-label="Has Image"></i></span>':"")+'</td><td class="has-text-right"><a href="'+e+"/lots?mapId="+s.mapId+'">'+s.lotCount+"</a></td></tr>"))}if(t.innerHTML="",0===r)t.innerHTML='<div class="message is-info"><p class="message-body">There are no '+exports.aliases.maps.toLowerCase()+" that meet the search criteria.</p></div>";else{const e=document.createElement("table");e.className="table is-fullwidth is-striped is-hoverable has-sticky-header",e.innerHTML="<thead><tr><th>"+exports.aliases.map+'</th><th>Address</th><th>Phone Number</th><th class="has-text-centered">Coordinates</th><th class="has-text-centered">Image</th><th class="has-text-right">'+exports.aliases.lot+" Count</th></tr></thead>",e.append(i),t.append(e)}};s.addEventListener("keyup",r),document.querySelector("#form--searchFilters").addEventListener("submit",e=>{e.preventDefault(),r()}),r()})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,s=exports.maps,a=document.querySelector("#searchFilter--map"),t=document.querySelector("#container--searchResults"),r=()=>{t.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+exports.aliases.maps+"...</div>";let r=0;const i=document.createElement("tbody"),d=a.value.trim().toLowerCase().split(" ");for(const a of s){const s=(a.mapName+" "+a.mapDescription+" "+a.mapAddress1+" "+a.mapAddress2).toLowerCase();let t=!0;for(const e of d)if(!s.includes(e)){t=!1;break}t&&(r+=1,i.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/maps/"+a.mapId+'">'+cityssm.escapeHTML(a.mapName||"(No Name)")+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(a.mapDescription||"")+"</span></td><td>"+(a.mapAddress1?cityssm.escapeHTML(a.mapAddress1)+"<br />":"")+(a.mapAddress2?cityssm.escapeHTML(a.mapAddress2)+"<br />":"")+(a.mapCity||a.mapProvince?cityssm.escapeHTML(a.mapCity||"")+", "+cityssm.escapeHTML(a.mapProvince||"")+"<br />":"")+(a.mapPostalCode?cityssm.escapeHTML(a.mapPostalCode):"")+"</td><td>"+cityssm.escapeHTML(a.mapPhoneNumber||"")+'</td><td class="has-text-centered">'+(a.mapLatitude&&a.mapLongitude?'<span data-tooltip="Has Geographic Coordinates"><i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i></span>':"")+'</td><td class="has-text-centered">'+(a.mapSVG?'<span data-tooltip="Has Image"><i class="fas fa-image" aria-label="Has Image"></i></span>':"")+'</td><td class="has-text-right"><a href="'+e.urlPrefix+"/lots?mapId="+a.mapId+'">'+a.lotCount+"</a></td></tr>"))}if(t.innerHTML="",0===r)t.innerHTML='<div class="message is-info"><p class="message-body">There are no '+exports.aliases.maps.toLowerCase()+" that meet the search criteria.</p></div>";else{const e=document.createElement("table");e.className="table is-fullwidth is-striped is-hoverable has-sticky-header",e.innerHTML="<thead><tr><th>"+exports.aliases.map+'</th><th>Address</th><th>Phone Number</th><th class="has-text-centered">Coordinates</th><th class="has-text-centered">Image</th><th class="has-text-right">'+exports.aliases.lot+" Count</th></tr></thead>",e.append(i),t.append(e)}};a.addEventListener("keyup",r),document.querySelector("#form--searchFilters").addEventListener("submit",e=>{e.preventDefault(),r()}),r()})();

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,s=document.querySelector("main").dataset.urlPrefix,r=document.querySelector("#form--searchFilters"),a=r.querySelector("#searchFilter--workOrderMilestoneDateFilter"),t=r.querySelector("#searchFilter--workOrderMilestoneDateString"),i=document.querySelector("#container--milestoneCalendar"),o=a=>{a&&a.preventDefault(),i.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Milestones...</div>',cityssm.postJSON(s+"/workOrders/doGetWorkOrderMilestones",r,r=>{(r=>{if(0===r.length)return void(i.innerHTML='<div class="message is-info"><p class="message-body">There are no milestones that meet the search criteria.</p></div>');i.innerHTML="";const a=cityssm.dateToString(new Date);let t,o="";for(const n of r){o!==n.workOrderMilestoneDateString&&(t&&i.append(t),(t=document.createElement("div")).className="panel",t.innerHTML='<h2 class="panel-heading">'+n.workOrderMilestoneDateString+"</h2>",o=n.workOrderMilestoneDateString);const r=document.createElement("div");r.className="panel-block is-block",!n.workOrderMilestoneCompletionDate&&n.workOrderMilestoneDateString<a&&r.classList.add("has-background-warning-light");let c="";for(const e of n.workOrderLots)c+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(e.mapName)+'"><i class="fas fa-vector-square" aria-label="'+cityssm.escapeHTML(exports.aliases.lot)+'"></i> '+cityssm.escapeHTML(e.lotName)+"</span><br />";for(const e of n.workOrderLotOccupancies)for(const s of e.lotOccupancyOccupants)c+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(s.lotOccupantType)+'"><i class="fas fa-user" aria-label="'+cityssm.escapeHTML(exports.aliases.lotOccupancy)+'"></i> '+cityssm.escapeHTML(s.occupantName)+"</span><br />";r.innerHTML='<div class="columns"><div class="column is-narrow"><span class="icon is-small">'+(n.workOrderMilestoneCompletionDate?'<i class="fas fa-check" aria-label="Completed"></i>':'<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>')+'</span></div><div class="column">'+(0===n.workOrderMilestoneTime?"":n.workOrderMilestoneTimeString+"<br />")+(n.workOrderMilestoneTypeId?"<strong>"+cityssm.escapeHTML(n.workOrderMilestoneType)+"</strong><br />":"")+'<span class="is-size-7">'+cityssm.escapeHTML(n.workOrderMilestoneDescription)+'</span></div><div class="column"><i class="fas fa-circle" style="color:'+e.getRandomColor(n.workOrderNumber)+'" aria-hidden="true"></i> <a class="has-text-weight-bold" href="'+s+"/workOrders/"+n.workOrderId+'">'+cityssm.escapeHTML(n.workOrderNumber)+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(n.workOrderDescription)+'</span></div><div class="column is-size-7">'+c+"</div></div>",t.append(r)}i.append(t)})(r.workOrderMilestones)})};a.addEventListener("change",()=>{t.closest("fieldset").disabled="date"!==a.value,o()}),e.initializeDatePickers(r),t.addEventListener("change",o),r.addEventListener("submit",o),o()})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,s=document.querySelector("#form--searchFilters"),r=s.querySelector("#searchFilter--workOrderMilestoneDateFilter"),a=s.querySelector("#searchFilter--workOrderMilestoneDateString"),t=document.querySelector("#container--milestoneCalendar"),i=r=>{r&&r.preventDefault(),t.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Milestones...</div>',cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{(s=>{if(0===s.length)return void(t.innerHTML='<div class="message is-info"><p class="message-body">There are no milestones that meet the search criteria.</p></div>');t.innerHTML="";const r=cityssm.dateToString(new Date);let a,i="";for(const o of s){i!==o.workOrderMilestoneDateString&&(a&&t.append(a),(a=document.createElement("div")).className="panel",a.innerHTML='<h2 class="panel-heading">'+o.workOrderMilestoneDateString+"</h2>",i=o.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!o.workOrderMilestoneCompletionDate&&o.workOrderMilestoneDateString<r&&s.classList.add("has-background-warning-light");let n="";for(const e of o.workOrderLots)n+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(e.mapName||"")+'"><i class="fas fa-vector-square" aria-label="'+cityssm.escapeHTML(exports.aliases.lot)+'"></i> '+cityssm.escapeHTML(e.lotName||"")+"</span><br />";for(const e of o.workOrderLotOccupancies)for(const s of e.lotOccupancyOccupants)n+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(s.lotOccupantType||"")+'"><i class="fas fa-user" aria-label="'+cityssm.escapeHTML(exports.aliases.lotOccupancy)+'"></i> '+cityssm.escapeHTML(s.occupantName||"")+"</span><br />";s.innerHTML='<div class="columns"><div class="column is-narrow"><span class="icon is-small">'+(o.workOrderMilestoneCompletionDate?'<i class="fas fa-check" aria-label="Completed"></i>':'<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>')+'</span></div><div class="column">'+(0===o.workOrderMilestoneTime?"":o.workOrderMilestoneTimeString+"<br />")+(o.workOrderMilestoneTypeId?"<strong>"+cityssm.escapeHTML(o.workOrderMilestoneType)+"</strong><br />":"")+'<span class="is-size-7">'+cityssm.escapeHTML(o.workOrderMilestoneDescription)+'</span></div><div class="column"><i class="fas fa-circle" style="color:'+e.getRandomColor(o.workOrderNumber||"")+'" aria-hidden="true"></i> <a class="has-text-weight-bold" href="'+e.urlPrefix+"/workOrders/"+o.workOrderId+'">'+cityssm.escapeHTML(o.workOrderNumber||"")+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(o.workOrderDescription||"")+'</span></div><div class="column is-size-7">'+n+"</div></div>",a.append(s)}t.append(a)})(s.workOrderMilestones)})};r.addEventListener("change",()=>{a.closest("fieldset").disabled="date"!==r.value,i()}),e.initializeDatePickers(s),a.addEventListener("change",i),s.addEventListener("submit",i),i()})();

View File

@ -1 +1 @@
(()=>{const e=document.querySelector("main").dataset.urlPrefix,t=document.querySelector("main").dataset.apiKey,r=document.querySelector("#icsFilters--workOrderTypeIds"),c=document.querySelector("#icsFilters--workOrderMilestoneTypeIds"),l=document.querySelector("#icsFilters--calendarURL"),o=()=>{let o=window.location.href.slice(0,Math.max(0,window.location.href.indexOf(window.location.pathname)+1))+e+"api/"+t+"/milestoneICS/?";if(!r.disabled&&r.selectedOptions.length>0){o+="workOrderTypeIds=";for(const e of r.selectedOptions)o+=e.value+",";o=o.slice(0,-1)+"&"}if(!c.disabled&&c.selectedOptions.length>0){o+="workOrderMilestoneTypeIds=";for(const e of c.selectedOptions)o+=e.value+",";o=o.slice(0,-1)+"&"}l.value=o.slice(0,-1)};document.querySelector("#icsFilters--workOrderTypeIds-all").addEventListener("change",e=>{r.disabled=e.currentTarget.checked}),document.querySelector("#icsFilters--workOrderMilestoneTypeIds-all").addEventListener("change",e=>{c.disabled=e.currentTarget.checked});const s=document.querySelector("#panel--icsFilters").querySelectorAll("input, select");for(const e of s)e.addEventListener("change",o);o(),l.addEventListener("click",()=>{l.focus(),l.select()})})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#icsFilters--workOrderTypeIds"),r=document.querySelector("#icsFilters--workOrderMilestoneTypeIds"),s=document.querySelector("#icsFilters--calendarURL"),l=()=>{let l=window.location.href.slice(0,Math.max(0,window.location.href.indexOf(window.location.pathname)+1))+e.urlPrefix+"api/"+e.apiKey+"/milestoneICS/?";if(!t.disabled&&t.selectedOptions.length>0){l+="workOrderTypeIds=";for(const e of t.selectedOptions)l+=e.value+",";l=l.slice(0,-1)+"&"}if(!r.disabled&&r.selectedOptions.length>0){l+="workOrderMilestoneTypeIds=";for(const e of r.selectedOptions)l+=e.value+",";l=l.slice(0,-1)+"&"}s.value=l.slice(0,-1)};document.querySelector("#icsFilters--workOrderTypeIds-all").addEventListener("change",e=>{t.disabled=e.currentTarget.checked}),document.querySelector("#icsFilters--workOrderMilestoneTypeIds-all").addEventListener("change",e=>{r.disabled=e.currentTarget.checked});const o=document.querySelector("#panel--icsFilters").querySelectorAll("input, select");for(const e of o)e.addEventListener("change",l);l(),s.addEventListener("click",()=>{s.focus(),s.select()})})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("main").dataset.urlPrefix,s=exports.workOrderPrints,a=document.querySelector("#form--searchFilters");e.initializeDatePickers(a);const r=document.querySelector("#container--searchResults"),o=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),i=document.querySelector("#searchFilter--offset"),l=()=>{const e=Number.parseInt(i.value,10);r.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Work Orders...</div>',cityssm.postJSON(t+"/workOrders/doSearchWorkOrders",a,a=>{if(0===a.workOrders.length)return void(r.innerHTML='<div class="message is-info"><p class="message-body">There are no work orders that meet the search criteria.</p></div>');const i=document.createElement("tbody");for(const e of a.workOrders){let a="";for(const t of e.workOrderLots)a+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.mapName)+'"><i class="fas fa-vector-square" aria-label="'+cityssm.escapeHTML(exports.aliases.lot)+'"></i> '+cityssm.escapeHTML(t.lotName||"(No Lot Name)")+"</span><br />";for(const t of e.workOrderLotOccupancies)for(const e of t.lotOccupancyOccupants)a+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(e.lotOccupantType)+'"><i class="fas fa-user" aria-label="'+cityssm.escapeHTML(exports.aliases.occupant)+'"></i> '+cityssm.escapeHTML(e.occupantName||"(No Name)")+"</span><br />";i.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+t+"/workOrders/"+e.workOrderId+'">'+(e.workOrderNumber.trim()?cityssm.escapeHTML(e.workOrderNumber):"(No Number)")+"</a></td><td>"+cityssm.escapeHTML(e.workOrderType)+'<br /><span class="is-size-7">'+cityssm.escapeHTML(e.workOrderDescription)+'</span></td><td class="is-nowrap"><span class="is-size-7">'+a+'</span></td><td class="is-nowrap"><span class="has-tooltip-left" data-tooltip="Open Date"><i class="fas fa-fw fa-play" aria-label="Open Date"></i> '+e.workOrderOpenDateString+'</span><br /><span class="has-tooltip-left" data-tooltip="Close Date"><i class="fas fa-fw fa-stop" aria-label="Close Date"></i> '+(e.workOrderCloseDate?e.workOrderCloseDateString:'<span class="has-text-grey">(No Close Date)</span>')+"</span></td><td>"+(0===e.workOrderMilestoneCount?"-":e.workOrderMilestoneCompletionCount+" / "+e.workOrderMilestoneCount)+"</td>"+(s.length>0?'<td><a class="button is-small" data-tooltip="Print" href="'+t+"/print/"+s[0]+"/?workOrderId="+e.workOrderId+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a></td>':"")+"</tr>")}r.innerHTML='<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"><thead><tr><th>Work Order Number</th><th>Description</th><th>Related</th><th>Date</th><th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>'+(s.length>0?'<th class="has-width-1"></th>':"")+'</tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(e+1).toString()+" to "+Math.min(a.count,o+e)+" of "+a.count+'</div></div><div class="level-right">'+(e>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(o+e<a.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",r.querySelector("table").append(i),e>0&&r.querySelector("button[data-page='previous']").addEventListener("click",c),o+e<a.count&&r.querySelector("button[data-page='next']").addEventListener("click",d)})},n=()=>{i.value="0",l()},c=()=>{i.value=Math.max(Number.parseInt(i.value,10)-o,0).toString(),l()},d=()=>{i.value=(Number.parseInt(i.value,10)+o).toString(),l()},p=a.querySelectorAll("input, select");for(const e of p)e.addEventListener("change",n);a.addEventListener("submit",e=>{e.preventDefault(),n()}),l()})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=exports.workOrderPrints,s=document.querySelector("#form--searchFilters");e.initializeDatePickers(s);const a=document.querySelector("#container--searchResults"),r=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),o=document.querySelector("#searchFilter--offset"),i=()=>{const i=Number.parseInt(o.value,10);a.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Work Orders...</div>',cityssm.postJSON(e.urlPrefix+"/workOrders/doSearchWorkOrders",s,s=>{if(0===s.workOrders.length)return void(a.innerHTML='<div class="message is-info"><p class="message-body">There are no work orders that meet the search criteria.</p></div>');const o=document.createElement("tbody");for(const a of s.workOrders){let s="";for(const e of a.workOrderLots)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(e.mapName||"")+'"><i class="fas fa-vector-square" aria-label="'+cityssm.escapeHTML(exports.aliases.lot)+'"></i> '+cityssm.escapeHTML(e.lotName||"(No Lot Name)")+"</span><br />";for(const e of a.workOrderLotOccupancies)for(const t of e.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.lotOccupantType||"")+'"><i class="fas fa-user" aria-label="'+cityssm.escapeHTML(exports.aliases.occupant)+'"></i> '+cityssm.escapeHTML(t.occupantName||"(No Name)")+"</span><br />";o.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/workOrders/"+a.workOrderId+'">'+(a.workOrderNumber.trim()?cityssm.escapeHTML(a.workOrderNumber||""):"(No Number)")+"</a></td><td>"+cityssm.escapeHTML(a.workOrderType||"")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(a.workOrderDescription||"")+'</span></td><td class="is-nowrap"><span class="is-size-7">'+s+'</span></td><td class="is-nowrap"><span class="has-tooltip-left" data-tooltip="Open Date"><i class="fas fa-fw fa-play" aria-label="Open Date"></i> '+a.workOrderOpenDateString+'</span><br /><span class="has-tooltip-left" data-tooltip="Close Date"><i class="fas fa-fw fa-stop" aria-label="Close Date"></i> '+(a.workOrderCloseDate?a.workOrderCloseDateString:'<span class="has-text-grey">(No Close Date)</span>')+"</span></td><td>"+(0===a.workOrderMilestoneCount?"-":a.workOrderMilestoneCompletionCount+" / "+a.workOrderMilestoneCount)+"</td>"+(t.length>0?'<td><a class="button is-small" data-tooltip="Print" href="'+e.urlPrefix+"/print/"+t[0]+"/?workOrderId="+a.workOrderId+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a></td>':"")+"</tr>")}a.innerHTML='<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"><thead><tr><th>Work Order Number</th><th>Description</th><th>Related</th><th>Date</th><th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>'+(t.length>0?'<th class="has-width-1"></th>':"")+'</tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(i+1).toString()+" to "+Math.min(s.count,r+i)+" of "+s.count+'</div></div><div class="level-right">'+(i>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(r+i<s.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",a.querySelector("table").append(o),i>0&&a.querySelector("button[data-page='previous']").addEventListener("click",n),r+i<s.count&&a.querySelector("button[data-page='next']").addEventListener("click",c)})},l=()=>{o.value="0",i()},n=()=>{o.value=Math.max(Number.parseInt(o.value,10)-r,0).toString(),i()},c=()=>{o.value=(Number.parseInt(o.value,10)+r).toString(),i()},d=s.querySelectorAll("input, select");for(const e of d)e.addEventListener("change",l);s.addEventListener("submit",e=>{e.preventDefault(),l()}),i()})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,r=document.querySelector("#button--reopenWorkOrder");r&&r.addEventListener("click",()=>{const o=r.dataset.workOrderId;bulmaJS.confirm({title:"Reopen Work Order",message:"Are you sure you want to remove the close date from this work order and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Work Order",callbackFunction:()=>{cityssm.postJSON(e+"/workOrders/doReopenWorkOrder",{workOrderId:o},r=>{r.success?window.location.href=e+"/workOrders/"+o+"/edit/?t="+Date.now():bulmaJS.alert({title:"Error Reopening Work Order",message:r.errorMessage,contextualColorName:"danger"})})}}})})})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,r=document.querySelector("#button--reopenWorkOrder");r&&r.addEventListener("click",()=>{const o=r.dataset.workOrderId;bulmaJS.confirm({title:"Reopen Work Order",message:"Are you sure you want to remove the close date from this work order and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Work Order",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doReopenWorkOrder",{workOrderId:o},r=>{r.success?window.location.href=e.urlPrefix+"/workOrders/"+o+"/edit/?t="+Date.now():bulmaJS.alert({title:"Error Reopening Work Order",message:r.errorMessage||"",contextualColorName:"danger"})})}}})})})();

View File

@ -1,4 +1,6 @@
export interface LOS { export interface LOS {
urlPrefix: string;
apiKey: string;
highlightMap: (mapContainerElement: HTMLElement, mapKey: string, contextualClass: "success" | "danger") => void; highlightMap: (mapContainerElement: HTMLElement, mapKey: string, contextualClass: "success" | "danger") => void;
initializeDatePickers: (containerElement: HTMLElement) => void; initializeDatePickers: (containerElement: HTMLElement) => void;
initializeTimePickers: (containerElement: HTMLElement) => void; initializeTimePickers: (containerElement: HTMLElement) => void;

View File

@ -1,4 +1,7 @@
export interface LOS { export interface LOS {
urlPrefix: string;
apiKey: string;
highlightMap: ( highlightMap: (
mapContainerElement: HTMLElement, mapContainerElement: HTMLElement,
mapKey: string, mapKey: string,