From f5f10a5d765186701aedc69fa6857c9c66841661 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Thu, 5 Jan 2023 09:56:46 -0500 Subject: [PATCH] linting - increase prettier line length - more template strings - use optional chaining on search pages to reduce if statements --- .prettierrc.json | 2 +- public-typescript/adminCleanup.js | 6 +- public-typescript/adminCleanup.ts | 7 +- public-typescript/adminFees.js | 83 ++++---- public-typescript/adminFees.ts | 208 +++++++------------ public-typescript/lotEdit.js | 69 +++--- public-typescript/lotEdit.ts | 78 +++---- public-typescript/lotOccupancySearch.js | 52 ++--- public-typescript/lotOccupancySearch.ts | 67 ++---- public-typescript/lotSearch.js | 15 +- public-typescript/lotSearch.ts | 35 +--- public-typescript/workOrderSearch.js | 22 +- public-typescript/workOrderSearch.ts | 36 +--- public/javascripts/adminCleanup.min.js | 2 +- public/javascripts/adminFees.min.js | 2 +- public/javascripts/lotEdit.min.js | 2 +- public/javascripts/lotOccupancySearch.min.js | 2 +- public/javascripts/lotSearch.min.js | 2 +- public/javascripts/workOrderSearch.min.js | 2 +- 19 files changed, 254 insertions(+), 438 deletions(-) diff --git a/.prettierrc.json b/.prettierrc.json index fd2fc968..3339ce73 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -3,5 +3,5 @@ "tabWidth": 4, "semi": true, "singleQuote": false, - "printWidth": 100 + "printWidth": 110 } diff --git a/public-typescript/adminCleanup.js b/public-typescript/adminCleanup.js index a6d8b838..3369b4ef 100644 --- a/public-typescript/adminCleanup.js +++ b/public-typescript/adminCleanup.js @@ -8,10 +8,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); if (responseJSON.success) { bulmaJS.alert({ 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" }); } diff --git a/public-typescript/adminCleanup.ts b/public-typescript/adminCleanup.ts index e926ca71..6a991b63 100644 --- a/public-typescript/adminCleanup.ts +++ b/public-typescript/adminCleanup.ts @@ -25,11 +25,8 @@ declare const bulmaJS: BulmaJS; if (responseJSON.success) { bulmaJS.alert({ 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" }); } else { diff --git a/public-typescript/adminFees.js b/public-typescript/adminFees.js index 736a03a6..d766953c 100644 --- a/public-typescript/adminFees.js +++ b/public-typescript/adminFees.js @@ -8,18 +8,16 @@ Object.defineProperty(exports, "__esModule", { value: true }); delete exports.feeCategories; function renderFeeCategories() { if (feeCategories.length === 0) { - feeCategoriesContainerElement.innerHTML = - '
' + - '

There are no available fees.

' + - "
"; + feeCategoriesContainerElement.innerHTML = `
+

There are no available fees.

+
`; return; } feeCategoriesContainerElement.innerHTML = ""; for (const feeCategory of feeCategories) { const feeCategoryContainerElement = document.createElement("section"); feeCategoryContainerElement.className = "panel container--feeCategory"; - feeCategoryContainerElement.dataset.feeCategoryId = - feeCategory.feeCategoryId.toString(); + feeCategoryContainerElement.dataset.feeCategoryId = feeCategory.feeCategoryId.toString(); feeCategoryContainerElement.innerHTML = '
' + '
' + @@ -89,9 +87,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); "

" + (hasTagsBlock ? '

' + - (fee.isRequired - ? 'Required' - : "") + + (fee.isRequired ? 'Required' : "") + (fee.occupancyTypeId ? ' " + "Fee Function" - : "$" + - fee.feeAmount.toFixed(2) + - "
" + - "Fee") + + : "$" + fee.feeAmount.toFixed(2) + "
" + "Fee") + "

") + ('
' + (fee.taxPercentage @@ -181,19 +174,21 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); }; cityssm.openHtmlModal("adminFees-addFeeCategory", { - onshown: (modalElement, closeModalFunction) => { + onshown(modalElement, closeModalFunction) { bulmaJS.toggleHtmlClipped(); modalElement.querySelector("#feeCategoryAdd--feeCategory").focus(); addCloseModalFunction = closeModalFunction; modalElement.querySelector("form").addEventListener("submit", doAddFeeCategory); }, - onremoved: () => { + onremoved() { bulmaJS.toggleHtmlClipped(); + document.querySelector("#button--addFeeCategory").focus(); } }); }); function openEditFeeCategory(clickEvent) { - const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10); + const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory") + .dataset.feeCategoryId, 10); const feeCategory = feeCategories.find((currentFeeCategory) => { return currentFeeCategory.feeCategoryId === feeCategoryId; }); @@ -217,8 +212,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); } cityssm.openHtmlModal("adminFees-editFeeCategory", { onshow(modalElement) { - modalElement.querySelector("#feeCategoryEdit--feeCategoryId").value = feeCategory.feeCategoryId.toString(); - modalElement.querySelector("#feeCategoryEdit--feeCategory").value = feeCategory.feeCategory; + modalElement.querySelector("#feeCategoryEdit--feeCategoryId").value = + feeCategory.feeCategoryId.toString(); + modalElement.querySelector("#feeCategoryEdit--feeCategory").value = + feeCategory.feeCategory; }, onshown(modalElement, closeModalFunction) { bulmaJS.toggleHtmlClipped(); @@ -232,7 +229,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function confirmDeleteFeeCategory(clickEvent) { - const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10); + const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory") + .dataset.feeCategoryId, 10); function doDelete() { cityssm.postJSON(los.urlPrefix + "/admin/doDeleteFeeCategory", { feeCategoryId @@ -262,13 +260,11 @@ Object.defineProperty(exports, "__esModule", { value: true }); } function moveFeeCategory(clickEvent) { const buttonElement = clickEvent.currentTarget; - const feeCategoryId = Number.parseInt(buttonElement.closest(".container--feeCategory").dataset - .feeCategoryId, 10); + const feeCategoryId = buttonElement.closest(".container--feeCategory").dataset + .feeCategoryId; cityssm.postJSON(los.urlPrefix + "/admin/" + - (buttonElement.dataset.direction === "up" - ? "doMoveFeeCategoryUp" - : "doMoveFeeCategoryDown"), { + (buttonElement.dataset.direction === "up" ? "doMoveFeeCategoryUp" : "doMoveFeeCategoryDown"), { feeCategoryId, moveToEnd: clickEvent.shiftKey ? "1" : "0" }, (responseJSON) => { @@ -289,7 +285,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); * Fees */ function openAddFee(clickEvent) { - const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId, 10); + const feeCategoryId = Number.parseInt(clickEvent.currentTarget.closest(".container--feeCategory") + .dataset.feeCategoryId, 10); let addCloseModalFunction; function doAddFee(submitEvent) { submitEvent.preventDefault(); @@ -372,7 +369,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); modalElement.querySelector("#feeAdd--includeQuantity").addEventListener("change", () => { modalElement.querySelector("#feeAdd--quantityUnit").disabled = - modalElement.querySelector("#feeAdd--includeQuantity").value === ""; + modalElement.querySelector("#feeAdd--includeQuantity") + .value === ""; }); }, onremoved() { @@ -384,8 +382,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); clickEvent.preventDefault(); const feeContainerElement = clickEvent.currentTarget.closest(".container--fee"); const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10); - const feeCategoryId = Number.parseInt(feeContainerElement.closest(".container--feeCategory").dataset - .feeCategoryId); + const feeCategoryId = Number.parseInt(feeContainerElement.closest(".container--feeCategory").dataset.feeCategoryId); const feeCategory = feeCategories.find((currentFeeCategory) => { return currentFeeCategory.feeCategoryId === feeCategoryId; }); @@ -470,9 +467,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); } } function toggleQuantityFields() { + const includeQuanitityValue = editModalElement.querySelector("#feeEdit--includeQuantity").value; editModalElement.querySelector("#feeEdit--quantityUnit").disabled = - editModalElement.querySelector("#feeEdit--includeQuantity") - .value === ""; + includeQuanitityValue === ""; } cityssm.openHtmlModal("adminFees-editFee", { onshow(modalElement) { @@ -489,9 +486,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); } feeCategoryElement.append(optionElement); } - modalElement.querySelector("#feeEdit--feeName").value = - fee.feeName; - modalElement.querySelector("#feeEdit--feeDescription").value = fee.feeDescription; + modalElement.querySelector("#feeEdit--feeName").value = fee.feeName; + modalElement.querySelector("#feeEdit--feeDescription").value = + fee.feeDescription; const occupancyTypeElement = modalElement.querySelector("#feeEdit--occupancyTypeId"); for (const occupancyType of exports.occupancyTypes) { const optionElement = document.createElement("option"); @@ -512,12 +509,16 @@ Object.defineProperty(exports, "__esModule", { value: true }); } lotTypeElement.append(optionElement); } - modalElement.querySelector("#feeEdit--feeAmount").value = - fee.feeAmount ? fee.feeAmount.toFixed(2) : ""; - modalElement.querySelector("#feeEdit--feeFunction").addEventListener("change", toggleFeeFields); + modalElement.querySelector("#feeEdit--feeAmount").value = fee.feeAmount + ? fee.feeAmount.toFixed(2) + : ""; + modalElement + .querySelector("#feeEdit--feeFunction") + .addEventListener("change", toggleFeeFields); toggleFeeFields(); - modalElement.querySelector("#feeEdit--taxAmount").value = - fee.taxAmount ? fee.taxAmount.toFixed(2) : ""; + modalElement.querySelector("#feeEdit--taxAmount").value = fee.taxAmount + ? fee.taxAmount.toFixed(2) + : ""; const taxPercentageElement = modalElement.querySelector("#feeEdit--taxPercentage"); taxPercentageElement.value = fee.taxPercentage ? fee.taxPercentage.toString() : ""; taxPercentageElement.addEventListener("keyup", toggleTaxFields); @@ -540,9 +541,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); editCloseModalFunction = closeModalFunction; modalElement.querySelector("form").addEventListener("submit", doUpdateFee); bulmaJS.init(modalElement); - modalElement - .querySelector(".button--deleteFee") - .addEventListener("click", confirmDeleteFee); + modalElement.querySelector(".button--deleteFee").addEventListener("click", confirmDeleteFee); }, onremoved: () => { bulmaJS.toggleHtmlClipped(); @@ -552,7 +551,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); function moveFee(clickEvent) { const buttonElement = clickEvent.currentTarget; const feeContainerElement = buttonElement.closest(".container--fee"); - const feeId = Number.parseInt(feeContainerElement.dataset.feeId, 10); + const feeId = feeContainerElement.dataset.feeId; cityssm.postJSON(los.urlPrefix + "/admin/" + (buttonElement.dataset.direction === "up" ? "doMoveFeeUp" : "doMoveFeeDown"), { diff --git a/public-typescript/adminFees.ts b/public-typescript/adminFees.ts index 7664afed..4ae74e3d 100644 --- a/public-typescript/adminFees.ts +++ b/public-typescript/adminFees.ts @@ -13,19 +13,16 @@ declare const bulmaJS: BulmaJS; (() => { const los = exports.los as globalTypes.LOS; - const feeCategoriesContainerElement = document.querySelector( - "#container--feeCategories" - ) as HTMLElement; + const feeCategoriesContainerElement = document.querySelector("#container--feeCategories") as HTMLElement; let feeCategories: recordTypes.FeeCategory[] = exports.feeCategories; delete exports.feeCategories; function renderFeeCategories(): void { if (feeCategories.length === 0) { - feeCategoriesContainerElement.innerHTML = - '
' + - '

There are no available fees.

' + - "
"; + feeCategoriesContainerElement.innerHTML = `
+

There are no available fees.

+
`; return; } @@ -37,8 +34,7 @@ declare const bulmaJS: BulmaJS; feeCategoryContainerElement.className = "panel container--feeCategory"; - feeCategoryContainerElement.dataset.feeCategoryId = - feeCategory.feeCategoryId!.toString(); + feeCategoryContainerElement.dataset.feeCategoryId = feeCategory.feeCategoryId!.toString(); feeCategoryContainerElement.innerHTML = '
' + @@ -119,9 +115,7 @@ declare const bulmaJS: BulmaJS; "

" + (hasTagsBlock ? '

' + - (fee.isRequired - ? 'Required' - : "") + + (fee.isRequired ? 'Required' : "") + (fee.occupancyTypeId ? ' " + "Fee Function" - : "$" + - fee.feeAmount!.toFixed(2) + - "
" + - "Fee") + + : "$" + fee.feeAmount!.toFixed(2) + "
" + "Fee") + "

") + ('
' + (fee.taxPercentage @@ -167,10 +158,7 @@ declare const bulmaJS: BulmaJS; "
" + "
") + ('
' + - los.getMoveUpDownButtonFieldHTML( - "button--moveFeeUp", - "button--moveFeeDown" - ) + + los.getMoveUpDownButtonFieldHTML("button--moveFeeUp", "button--moveFeeDown") + "
" + "
") + ""; @@ -198,15 +186,11 @@ declare const bulmaJS: BulmaJS; .addEventListener("click", openAddFee); ( - feeCategoryContainerElement.querySelector( - ".button--moveFeeCategoryUp" - ) as HTMLButtonElement + feeCategoryContainerElement.querySelector(".button--moveFeeCategoryUp") as HTMLButtonElement ).addEventListener("click", moveFeeCategory); ( - feeCategoryContainerElement.querySelector( - ".button--moveFeeCategoryDown" - ) as HTMLButtonElement + feeCategoryContainerElement.querySelector(".button--moveFeeCategoryDown") as HTMLButtonElement ).addEventListener("click", moveFeeCategory); feeCategoriesContainerElement.append(feeCategoryContainerElement); @@ -247,28 +231,24 @@ declare const bulmaJS: BulmaJS; }; cityssm.openHtmlModal("adminFees-addFeeCategory", { - onshown: (modalElement, closeModalFunction) => { + onshown(modalElement, closeModalFunction) { bulmaJS.toggleHtmlClipped(); - ( - modalElement.querySelector("#feeCategoryAdd--feeCategory") as HTMLInputElement - ).focus(); + (modalElement.querySelector("#feeCategoryAdd--feeCategory") as HTMLInputElement).focus(); addCloseModalFunction = closeModalFunction; modalElement.querySelector("form")!.addEventListener("submit", doAddFeeCategory); }, - onremoved: () => { + onremoved() { bulmaJS.toggleHtmlClipped(); + (document.querySelector("#button--addFeeCategory") as HTMLButtonElement).focus(); } }); }); function openEditFeeCategory(clickEvent: Event): void { const feeCategoryId = Number.parseInt( - ( - (clickEvent.currentTarget as HTMLElement).closest( - ".container--feeCategory" - ) as HTMLElement - ).dataset.feeCategoryId!, + ((clickEvent.currentTarget as HTMLElement).closest(".container--feeCategory") as HTMLElement) + .dataset.feeCategoryId!, 10 ); @@ -306,14 +286,10 @@ declare const bulmaJS: BulmaJS; cityssm.openHtmlModal("adminFees-editFeeCategory", { onshow(modalElement) { - ( - modalElement.querySelector( - "#feeCategoryEdit--feeCategoryId" - ) as HTMLInputElement - ).value = feeCategory.feeCategoryId!.toString(); - ( - modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement - ).value = feeCategory.feeCategory!; + (modalElement.querySelector("#feeCategoryEdit--feeCategoryId") as HTMLInputElement).value = + feeCategory.feeCategoryId!.toString(); + (modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement).value = + feeCategory.feeCategory!; }, onshown(modalElement, closeModalFunction) { bulmaJS.toggleHtmlClipped(); @@ -322,9 +298,7 @@ declare const bulmaJS: BulmaJS; modalElement.querySelector("form")!.addEventListener("submit", doUpdateFeeCategory); - ( - modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement - ).focus(); + (modalElement.querySelector("#feeCategoryEdit--feeCategory") as HTMLInputElement).focus(); }, onremoved: () => { bulmaJS.toggleHtmlClipped(); @@ -334,11 +308,8 @@ declare const bulmaJS: BulmaJS; function confirmDeleteFeeCategory(clickEvent: Event): void { const feeCategoryId = Number.parseInt( - ( - (clickEvent.currentTarget as HTMLElement).closest( - ".container--feeCategory" - ) as HTMLElement - ).dataset.feeCategoryId!, + ((clickEvent.currentTarget as HTMLElement).closest(".container--feeCategory") as HTMLElement) + .dataset.feeCategoryId!, 10 ); @@ -381,18 +352,13 @@ declare const bulmaJS: BulmaJS; function moveFeeCategory(clickEvent: MouseEvent): void { const buttonElement = clickEvent.currentTarget as HTMLButtonElement; - const feeCategoryId = Number.parseInt( - (buttonElement.closest(".container--feeCategory") as HTMLElement).dataset - .feeCategoryId!, - 10 - ); + const feeCategoryId = (buttonElement.closest(".container--feeCategory") as HTMLElement).dataset + .feeCategoryId!; cityssm.postJSON( los.urlPrefix + "/admin/" + - (buttonElement.dataset.direction === "up" - ? "doMoveFeeCategoryUp" - : "doMoveFeeCategoryDown"), + (buttonElement.dataset.direction === "up" ? "doMoveFeeCategoryUp" : "doMoveFeeCategoryDown"), { feeCategoryId, moveToEnd: clickEvent.shiftKey ? "1" : "0" @@ -422,11 +388,8 @@ declare const bulmaJS: BulmaJS; function openAddFee(clickEvent: Event): void { const feeCategoryId = Number.parseInt( - ( - (clickEvent.currentTarget as HTMLElement).closest( - ".container--feeCategory" - ) as HTMLElement - ).dataset.feeCategoryId!, + ((clickEvent.currentTarget as HTMLElement).closest(".container--feeCategory") as HTMLElement) + .dataset.feeCategoryId!, 10 ); @@ -487,9 +450,7 @@ declare const bulmaJS: BulmaJS; occupancyTypeElement.append(optionElement); } - const lotTypeElement = modalElement.querySelector( - "#feeAdd--lotTypeId" - ) as HTMLSelectElement; + const lotTypeElement = modalElement.querySelector("#feeAdd--lotTypeId") as HTMLSelectElement; for (const lotType of exports.lotTypes as recordTypes.LotType[]) { const optionElement = document.createElement("option"); @@ -513,35 +474,36 @@ declare const bulmaJS: BulmaJS; (modalElement.querySelector("#feeAdd--feeName") as HTMLInputElement).focus(); - ( - modalElement.querySelector("#feeAdd--feeFunction") as HTMLInputElement - ).addEventListener("change", () => { - const feeAmountElement = modalElement.querySelector( - "#feeAdd--feeAmount" - ) as HTMLInputElement; - const feeFunctionElement = modalElement.querySelector( - "#feeAdd--feeFunction" - ) as HTMLSelectElement; + (modalElement.querySelector("#feeAdd--feeFunction") as HTMLInputElement).addEventListener( + "change", + () => { + const feeAmountElement = modalElement.querySelector( + "#feeAdd--feeAmount" + ) as HTMLInputElement; - if (feeFunctionElement.value === "") { - feeFunctionElement.closest(".select")!.classList.remove("is-success"); + const feeFunctionElement = modalElement.querySelector( + "#feeAdd--feeFunction" + ) as HTMLSelectElement; - feeAmountElement.classList.add("is-success"); - feeAmountElement.disabled = false; - } else { - feeFunctionElement.closest(".select")!.classList.add("is-success"); + if (feeFunctionElement.value === "") { + feeFunctionElement.closest(".select")!.classList.remove("is-success"); - feeAmountElement.classList.remove("is-success"); - feeAmountElement.disabled = true; + feeAmountElement.classList.add("is-success"); + feeAmountElement.disabled = false; + } else { + feeFunctionElement.closest(".select")!.classList.add("is-success"); + + feeAmountElement.classList.remove("is-success"); + feeAmountElement.disabled = true; + } } - }); + ); - ( - modalElement.querySelector("#feeAdd--taxPercentage") as HTMLInputElement - ).addEventListener("keyup", () => { + modalElement.querySelector("#feeAdd--taxPercentage")!.addEventListener("keyup", () => { const taxAmountElement = modalElement.querySelector( "#feeAdd--taxAmount" ) as HTMLInputElement; + const taxPercentageElement = modalElement.querySelector( "#feeAdd--taxPercentage" ) as HTMLInputElement; @@ -559,17 +521,10 @@ declare const bulmaJS: BulmaJS; } }); - ( - modalElement.querySelector("#feeAdd--includeQuantity") as HTMLSelectElement - ).addEventListener("change", () => { - ( - modalElement.querySelector("#feeAdd--quantityUnit") as HTMLInputElement - ).disabled = - ( - modalElement.querySelector( - "#feeAdd--includeQuantity" - ) as HTMLSelectElement - ).value === ""; + modalElement.querySelector("#feeAdd--includeQuantity")!.addEventListener("change", () => { + (modalElement.querySelector("#feeAdd--quantityUnit") as HTMLInputElement).disabled = + (modalElement.querySelector("#feeAdd--includeQuantity") as HTMLSelectElement) + .value === ""; }); }, onremoved() { @@ -587,8 +542,7 @@ declare const bulmaJS: BulmaJS; const feeId = Number.parseInt(feeContainerElement.dataset.feeId!, 10); const feeCategoryId = Number.parseInt( - (feeContainerElement.closest(".container--feeCategory") as HTMLElement).dataset - .feeCategoryId! + (feeContainerElement.closest(".container--feeCategory") as HTMLElement).dataset.feeCategoryId! ); const feeCategory = feeCategories.find((currentFeeCategory) => { @@ -713,11 +667,12 @@ declare const bulmaJS: BulmaJS; } function toggleQuantityFields() { - ( - editModalElement.querySelector("#feeEdit--quantityUnit") as HTMLInputElement - ).disabled = - (editModalElement.querySelector("#feeEdit--includeQuantity") as HTMLSelectElement) - .value === ""; + const includeQuanitityValue = ( + editModalElement.querySelector("#feeEdit--includeQuantity") as HTMLSelectElement + ).value; + + (editModalElement.querySelector("#feeEdit--quantityUnit") as HTMLInputElement).disabled = + includeQuanitityValue === ""; } cityssm.openHtmlModal("adminFees-editFee", { @@ -743,11 +698,9 @@ declare const bulmaJS: BulmaJS; feeCategoryElement.append(optionElement); } - (modalElement.querySelector("#feeEdit--feeName") as HTMLInputElement).value = - fee.feeName!; - ( - modalElement.querySelector("#feeEdit--feeDescription") as HTMLTextAreaElement - ).value = fee.feeDescription!; + (modalElement.querySelector("#feeEdit--feeName") as HTMLInputElement).value = fee.feeName!; + (modalElement.querySelector("#feeEdit--feeDescription") as HTMLTextAreaElement).value = + fee.feeDescription!; const occupancyTypeElement = modalElement.querySelector( "#feeEdit--occupancyTypeId" @@ -765,9 +718,7 @@ declare const bulmaJS: BulmaJS; occupancyTypeElement.append(optionElement); } - const lotTypeElement = modalElement.querySelector( - "#feeEdit--lotTypeId" - ) as HTMLSelectElement; + const lotTypeElement = modalElement.querySelector("#feeEdit--lotTypeId") as HTMLSelectElement; for (const lotType of exports.lotTypes as recordTypes.LotType[]) { const optionElement = document.createElement("option"); @@ -781,16 +732,19 @@ declare const bulmaJS: BulmaJS; lotTypeElement.append(optionElement); } - (modalElement.querySelector("#feeEdit--feeAmount") as HTMLInputElement).value = - fee.feeAmount ? fee.feeAmount.toFixed(2) : ""; - ( - modalElement.querySelector("#feeEdit--feeFunction") as HTMLSelectElement - ).addEventListener("change", toggleFeeFields); + (modalElement.querySelector("#feeEdit--feeAmount") as HTMLInputElement).value = fee.feeAmount + ? fee.feeAmount.toFixed(2) + : ""; + + modalElement + .querySelector("#feeEdit--feeFunction")! + .addEventListener("change", toggleFeeFields); toggleFeeFields(); - (modalElement.querySelector("#feeEdit--taxAmount") as HTMLInputElement).value = - fee.taxAmount ? fee.taxAmount.toFixed(2) : ""; + (modalElement.querySelector("#feeEdit--taxAmount") as HTMLInputElement).value = fee.taxAmount + ? fee.taxAmount.toFixed(2) + : ""; const taxPercentageElement = modalElement.querySelector( "#feeEdit--taxPercentage" @@ -816,9 +770,7 @@ declare const bulmaJS: BulmaJS; toggleQuantityFields(); if (fee.isRequired) { - ( - modalElement.querySelector("#feeEdit--isRequired") as HTMLSelectElement - ).value = "1"; + (modalElement.querySelector("#feeEdit--isRequired") as HTMLSelectElement).value = "1"; } los.populateAliases(modalElement); @@ -832,9 +784,7 @@ declare const bulmaJS: BulmaJS; bulmaJS.init(modalElement); - modalElement - .querySelector(".button--deleteFee")! - .addEventListener("click", confirmDeleteFee); + modalElement.querySelector(".button--deleteFee")!.addEventListener("click", confirmDeleteFee); }, onremoved: () => { bulmaJS.toggleHtmlClipped(); @@ -847,7 +797,7 @@ declare const bulmaJS: BulmaJS; const feeContainerElement = buttonElement.closest(".container--fee") as HTMLElement; - const feeId = Number.parseInt(feeContainerElement.dataset.feeId!, 10); + const feeId = feeContainerElement.dataset.feeId!; cityssm.postJSON( los.urlPrefix + diff --git a/public-typescript/lotEdit.js b/public-typescript/lotEdit.js index cf118be7..5dcb3726 100644 --- a/public-typescript/lotEdit.js +++ b/public-typescript/lotEdit.js @@ -78,24 +78,18 @@ Object.defineProperty(exports, "__esModule", { value: true }); const lotFieldsContainerElement = document.querySelector("#container--lotFields"); lotTypeIdElement.addEventListener("change", () => { if (lotTypeIdElement.value === "") { - lotFieldsContainerElement.innerHTML = - '
' + - '

Select the ' + - exports.aliases.lot.toLowerCase() + - " type to load the available fields.

" + - "
"; + lotFieldsContainerElement.innerHTML = `
+

Select the ${los.escapedAliases.lot} type to load the available fields.

+
`; return; } cityssm.postJSON(los.urlPrefix + "/lots/doGetLotTypeFields", { lotTypeId: lotTypeIdElement.value }, (responseJSON) => { if (responseJSON.lotTypeFields.length === 0) { - lotFieldsContainerElement.innerHTML = - '
' + - '

There are no additional fields for this ' + - exports.aliases.lot.toLowerCase() + - " type.

" + - "
"; + lotFieldsContainerElement.innerHTML = `
+

There are no additional fields for this ${los.escapedAliases.lot} type.

+
`; return; } lotFieldsContainerElement.innerHTML = ""; @@ -106,11 +100,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); const fieldId = "lot--" + fieldName; const fieldElement = document.createElement("div"); fieldElement.className = "field"; - fieldElement.innerHTML = - '' + - '
'; + fieldElement.innerHTML = ` +
`; fieldElement.querySelector("label").textContent = lotTypeField.lotTypeField; if (lotTypeField.lotTypeFieldValues === "") { @@ -128,14 +119,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); fieldElement.querySelector(".control").append(inputElement); } else { - fieldElement.querySelector(".control").innerHTML = - '
"; + fieldElement.querySelector(".control").innerHTML = `
+ +
`; const selectElement = fieldElement.querySelector("select"); selectElement.required = lotTypeField.isRequired; const optionValues = lotTypeField.lotTypeFieldValues.split("\n"); @@ -148,9 +134,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); } lotFieldsContainerElement.append(fieldElement); } - lotFieldsContainerElement.insertAdjacentHTML("beforeend", ''); + lotFieldsContainerElement.insertAdjacentHTML("beforeend", ``); }); }); } @@ -160,10 +145,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); if (lotTypeIdElement.value !== originalLotTypeId) { bulmaJS.confirm({ title: "Confirm Change", - message: "Are you sure you want to change the " + - exports.aliases.lot.toLowerCase() + - " type?\n" + - "This change affects the additional fields associated with this record.", + message: `Are you sure you want to change the ${los.escapedAliases.lot} type?\n + This change affects the additional fields associated with this record.`, contextualColorName: "warning", okButton: { text: "Yes, Keep the Change", @@ -271,22 +254,20 @@ Object.defineProperty(exports, "__esModule", { value: true }); function renderLotComments() { const containerElement = document.querySelector("#container--lotComments"); if (lotComments.length === 0) { - containerElement.innerHTML = - '
' + - '

There are no comments to display.

' + - "
"; + containerElement.innerHTML = `
+

There are no comments to display.

+
`; return; } const tableElement = document.createElement("table"); tableElement.className = "table is-fullwidth is-striped is-hoverable"; - tableElement.innerHTML = - "" + - "Commentor" + - "Comment Date" + - "Comment" + - 'Options' + - "" + - ""; + tableElement.innerHTML = ` + Commentor + Comment Date + Comment + Options + + `; for (const lotComment of lotComments) { const tableRowElement = document.createElement("tr"); tableRowElement.dataset.lotCommentId = lotComment.lotCommentId.toString(); diff --git a/public-typescript/lotEdit.ts b/public-typescript/lotEdit.ts index a4b0c21a..a015e2a3 100644 --- a/public-typescript/lotEdit.ts +++ b/public-typescript/lotEdit.ts @@ -113,12 +113,9 @@ declare const bulmaJS: BulmaJS; lotTypeIdElement.addEventListener("change", () => { if (lotTypeIdElement.value === "") { - lotFieldsContainerElement.innerHTML = - '
' + - '

Select the ' + - exports.aliases.lot.toLowerCase() + - " type to load the available fields.

" + - "
"; + lotFieldsContainerElement.innerHTML = `
+

Select the ${los.escapedAliases.lot} type to load the available fields.

+
`; return; } @@ -130,12 +127,9 @@ declare const bulmaJS: BulmaJS; }, (responseJSON: { lotTypeFields: recordTypes.LotTypeField[] }) => { if (responseJSON.lotTypeFields.length === 0) { - lotFieldsContainerElement.innerHTML = - '
' + - '

There are no additional fields for this ' + - exports.aliases.lot.toLowerCase() + - " type.

" + - "
"; + lotFieldsContainerElement.innerHTML = `
+

There are no additional fields for this ${los.escapedAliases.lot} type.

+
`; return; } @@ -153,11 +147,8 @@ declare const bulmaJS: BulmaJS; const fieldElement = document.createElement("div"); fieldElement.className = "field"; - fieldElement.innerHTML = - '' + - '
'; + fieldElement.innerHTML = ` +
`; (fieldElement.querySelector("label") as HTMLLabelElement).textContent = lotTypeField.lotTypeField as string; @@ -181,18 +172,13 @@ declare const bulmaJS: BulmaJS; inputElement.pattern = lotTypeField.pattern; } - (fieldElement.querySelector(".control") as HTMLElement).append( - inputElement - ); + fieldElement.querySelector(".control")!.append(inputElement); } else { - (fieldElement.querySelector(".control") as HTMLElement).innerHTML = - '
"; + fieldElement.querySelector( + ".control" + )!.innerHTML = `
+ +
`; const selectElement = fieldElement.querySelector( "select" @@ -217,9 +203,8 @@ declare const bulmaJS: BulmaJS; lotFieldsContainerElement.insertAdjacentHTML( "beforeend", - '' + `` ); } ); @@ -231,11 +216,8 @@ declare const bulmaJS: BulmaJS; if (lotTypeIdElement.value !== originalLotTypeId) { bulmaJS.confirm({ title: "Confirm Change", - message: - "Are you sure you want to change the " + - exports.aliases.lot.toLowerCase() + - " type?\n" + - "This change affects the additional fields associated with this record.", + message: `Are you sure you want to change the ${los.escapedAliases.lot} type?\n + This change affects the additional fields associated with this record.`, contextualColorName: "warning", okButton: { text: "Yes, Keep the Change", @@ -304,6 +286,7 @@ declare const bulmaJS: BulmaJS; (modalElement.querySelector("#lotCommentEdit--lotId") as HTMLInputElement).value = lotId; + ( modalElement.querySelector("#lotCommentEdit--lotCommentId") as HTMLInputElement ).value = lotCommentId.toString(); @@ -336,6 +319,7 @@ declare const bulmaJS: BulmaJS; los.initializeDatePickers(modalElement); // los.initializeTimePickers(modalElement); + ( modalElement.querySelector("#lotCommentEdit--lotComment") as HTMLTextAreaElement ).focus(); @@ -398,23 +382,21 @@ declare const bulmaJS: BulmaJS; const containerElement = document.querySelector("#container--lotComments") as HTMLElement; if (lotComments.length === 0) { - containerElement.innerHTML = - '
' + - '

There are no comments to display.

' + - "
"; + containerElement.innerHTML = `
+

There are no comments to display.

+
`; return; } const tableElement = document.createElement("table"); tableElement.className = "table is-fullwidth is-striped is-hoverable"; - tableElement.innerHTML = - "" + - "Commentor" + - "Comment Date" + - "Comment" + - 'Options' + - "" + - ""; + tableElement.innerHTML = ` + Commentor + Comment Date + Comment + Options + + `; for (const lotComment of lotComments) { const tableRowElement = document.createElement("tr"); diff --git a/public-typescript/lotOccupancySearch.js b/public-typescript/lotOccupancySearch.js index ca9d2189..0fffd4ae 100644 --- a/public-typescript/lotOccupancySearch.js +++ b/public-typescript/lotOccupancySearch.js @@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); const limit = Number.parseInt(document.querySelector("#searchFilter--limit").value, 10); const offsetElement = document.querySelector("#searchFilter--offset"); function renderLotOccupancies(responseJSON) { + var _a, _b; if (responseJSON.lotOccupancies.length === 0) { searchResultsContainerElement.innerHTML = `

@@ -23,34 +24,19 @@ Object.defineProperty(exports, "__esModule", { value: true }); if (lotOccupancy.occupancyStartDateString <= nowDateString && (lotOccupancy.occupancyEndDateString === "" || lotOccupancy.occupancyEndDateString >= nowDateString)) { - occupancyTimeHTML = - '' + - ('') + - ""; + occupancyTimeHTML = ` + + `; } else if (lotOccupancy.occupancyStartDateString > nowDateString) { - occupancyTimeHTML = - '' + - ('') + - ""; + occupancyTimeHTML = ` + + `; } else { - occupancyTimeHTML = - '' + - ('') + - ""; + occupancyTimeHTML = ` + + `; } let occupantsHTML = ""; for (const occupant of lotOccupancy.lotOccupancyOccupants) { @@ -86,9 +72,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); '">' + cityssm.escapeHTML(lotOccupancy.lotName) + "" - : '(No ' + - los.escapedAliases.Lot + - ")") + + : '(No ' + los.escapedAliases.Lot + ")") + "
" + ('' + cityssm.escapeHTML(lotOccupancy.mapName || "") + @@ -129,16 +113,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); `; searchResultsContainerElement.querySelector("table").append(resultsTbodyElement); searchResultsContainerElement.insertAdjacentHTML("beforeend", los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count)); - if (responseJSON.offset > 0) { - searchResultsContainerElement - .querySelector("button[data-page='previous']") - .addEventListener("click", previousAndGetLotOccupancies); - } - if (limit + responseJSON.offset < responseJSON.count) { - searchResultsContainerElement - .querySelector("button[data-page='next']") - .addEventListener("click", nextAndGetLotOccupancies); - } + (_a = searchResultsContainerElement + .querySelector("button[data-page='previous']")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", previousAndGetLotOccupancies); + (_b = searchResultsContainerElement + .querySelector("button[data-page='next']")) === null || _b === void 0 ? void 0 : _b.addEventListener("click", nextAndGetLotOccupancies); } function getLotOccupancies() { searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${exports.aliases.occupancies}...`); diff --git a/public-typescript/lotOccupancySearch.ts b/public-typescript/lotOccupancySearch.ts index 04bad799..32a40c8b 100644 --- a/public-typescript/lotOccupancySearch.ts +++ b/public-typescript/lotOccupancySearch.ts @@ -10,18 +10,15 @@ declare const cityssm: cityssmGlobal; (() => { const los = exports.los as globalTypes.LOS; - const searchFilterFormElement = document.querySelector( - "#form--searchFilters" - ) as HTMLFormElement; + const searchFilterFormElement = document.querySelector("#form--searchFilters") as HTMLFormElement; - const searchResultsContainerElement = document.querySelector( - "#container--searchResults" - ) as HTMLElement; + const searchResultsContainerElement = document.querySelector("#container--searchResults") as HTMLElement; const limit = Number.parseInt( (document.querySelector("#searchFilter--limit") as HTMLInputElement).value, 10 ); + const offsetElement = document.querySelector("#searchFilter--offset") as HTMLInputElement; function renderLotOccupancies(responseJSON: { @@ -51,32 +48,17 @@ declare const cityssm: cityssmGlobal; (lotOccupancy.occupancyEndDateString === "" || lotOccupancy.occupancyEndDateString! >= nowDateString) ) { - occupancyTimeHTML = - '' + - ('') + - ""; + occupancyTimeHTML = ` + + `; } else if (lotOccupancy.occupancyStartDateString! > nowDateString) { - occupancyTimeHTML = - '' + - ('') + - ""; + occupancyTimeHTML = ` + + `; } else { - occupancyTimeHTML = - '' + - ('') + - ""; + occupancyTimeHTML = ` + + `; } let occupantsHTML = ""; @@ -117,9 +99,7 @@ declare const cityssm: cityssmGlobal; '">' + cityssm.escapeHTML(lotOccupancy.lotName) + "" - : '(No ' + - los.escapedAliases.Lot + - ")") + + : '(No ' + los.escapedAliases.Lot + ")") + "
" + ('' + cityssm.escapeHTML(lotOccupancy.mapName || "") + @@ -168,17 +148,13 @@ declare const cityssm: cityssmGlobal; los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count) ); - if (responseJSON.offset > 0) { - searchResultsContainerElement - .querySelector("button[data-page='previous']")! - .addEventListener("click", previousAndGetLotOccupancies); - } + searchResultsContainerElement + .querySelector("button[data-page='previous']") + ?.addEventListener("click", previousAndGetLotOccupancies); - if (limit + responseJSON.offset < responseJSON.count) { - searchResultsContainerElement - .querySelector("button[data-page='next']")! - .addEventListener("click", nextAndGetLotOccupancies); - } + searchResultsContainerElement + .querySelector("button[data-page='next']") + ?.addEventListener("click", nextAndGetLotOccupancies); } function getLotOccupancies() { @@ -199,10 +175,7 @@ declare const cityssm: cityssmGlobal; } function previousAndGetLotOccupancies() { - offsetElement.value = Math.max( - Number.parseInt(offsetElement.value, 10) - limit, - 0 - ).toString(); + offsetElement.value = Math.max(Number.parseInt(offsetElement.value, 10) - limit, 0).toString(); getLotOccupancies(); } diff --git a/public-typescript/lotSearch.js b/public-typescript/lotSearch.js index e34f0e25..acd73d43 100644 --- a/public-typescript/lotSearch.js +++ b/public-typescript/lotSearch.js @@ -8,6 +8,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); const limit = Number.parseInt(document.querySelector("#searchFilter--limit").value, 10); const offsetElement = document.querySelector("#searchFilter--offset"); function renderLots(responseJSON) { + var _a, _b; if (responseJSON.lots.length === 0) { searchResultsContainerElement.innerHTML = '
' + @@ -62,16 +63,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
`; searchResultsContainerElement.insertAdjacentHTML("beforeend", los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count)); searchResultsContainerElement.querySelector("table").append(resultsTbodyElement); - if (responseJSON.offset > 0) { - searchResultsContainerElement - .querySelector("button[data-page='previous']") - .addEventListener("click", previousAndGetLots); - } - if (limit + responseJSON.offset < responseJSON.count) { - searchResultsContainerElement - .querySelector("button[data-page='next']") - .addEventListener("click", nextAndGetLots); - } + (_a = searchResultsContainerElement + .querySelector("button[data-page='previous']")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", previousAndGetLots); + (_b = searchResultsContainerElement + .querySelector("button[data-page='next']")) === null || _b === void 0 ? void 0 : _b.addEventListener("click", nextAndGetLots); } function getLots() { searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Lots}...`); diff --git a/public-typescript/lotSearch.ts b/public-typescript/lotSearch.ts index ac311959..7414aa29 100644 --- a/public-typescript/lotSearch.ts +++ b/public-typescript/lotSearch.ts @@ -10,13 +10,9 @@ declare const cityssm: cityssmGlobal; (() => { const los = exports.los as globalTypes.LOS; - const searchFilterFormElement = document.querySelector( - "#form--searchFilters" - ) as HTMLFormElement; + const searchFilterFormElement = document.querySelector("#form--searchFilters") as HTMLFormElement; - const searchResultsContainerElement = document.querySelector( - "#container--searchResults" - ) as HTMLElement; + const searchResultsContainerElement = document.querySelector("#container--searchResults") as HTMLElement; const limit = Number.parseInt( (document.querySelector("#searchFilter--limit") as HTMLInputElement).value, @@ -24,11 +20,7 @@ declare const cityssm: cityssmGlobal; ); const offsetElement = document.querySelector("#searchFilter--offset") as HTMLInputElement; - function renderLots(responseJSON: { - count: number; - offset: number; - lots: recordTypes.Lot[]; - }): void { + function renderLots(responseJSON: { count: number; offset: number; lots: recordTypes.Lot[] }): void { if (responseJSON.lots.length === 0) { searchResultsContainerElement.innerHTML = '
' + @@ -96,17 +88,13 @@ declare const cityssm: cityssmGlobal; searchResultsContainerElement.querySelector("table")!.append(resultsTbodyElement); - if (responseJSON.offset > 0) { - searchResultsContainerElement - .querySelector("button[data-page='previous']")! - .addEventListener("click", previousAndGetLots); - } + searchResultsContainerElement + .querySelector("button[data-page='previous']") + ?.addEventListener("click", previousAndGetLots); - if (limit + responseJSON.offset < responseJSON.count) { - searchResultsContainerElement - .querySelector("button[data-page='next']")! - .addEventListener("click", nextAndGetLots); - } + searchResultsContainerElement + .querySelector("button[data-page='next']") + ?.addEventListener("click", nextAndGetLots); } function getLots(): void { @@ -123,10 +111,7 @@ declare const cityssm: cityssmGlobal; } function previousAndGetLots(): void { - offsetElement.value = Math.max( - Number.parseInt(offsetElement.value, 10) - limit, - 0 - ).toString(); + offsetElement.value = Math.max(Number.parseInt(offsetElement.value, 10) - limit, 0).toString(); getLots(); } diff --git a/public-typescript/workOrderSearch.js b/public-typescript/workOrderSearch.js index 9e439ff5..b22de585 100644 --- a/public-typescript/workOrderSearch.js +++ b/public-typescript/workOrderSearch.js @@ -10,6 +10,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); const limit = Number.parseInt(document.querySelector("#searchFilter--limit").value, 10); const offsetElement = document.querySelector("#searchFilter--offset"); function renderWorkOrders(responseJSON) { + var _a, _b; if (responseJSON.workOrders.length === 0) { searchResultsContainerElement.innerHTML = '
' + @@ -65,9 +66,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); cityssm.escapeHTML(workOrder.workOrderDescription || "") + "" + "") + - ('
") + + ('") + ('") + - ('") + + ('") + ('';for(const e of r){const o=document.createElement("tr");o.dataset.lotCommentId=e.lotCommentId.toString(),o.innerHTML="',o.querySelector(".button--edit").addEventListener("click",i),o.querySelector(".button--delete").addEventListener("click",m),t.querySelector("tbody").append(o)}e.innerHTML="",e.append(t)}delete exports.lotComments,o||(document.querySelector("#lotComments--add").addEventListener("click",function(){let o;const l=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/lots/doAddLotComment",t.currentTarget,e=>{e.success&&(r=e.lotComments,d(),o())})};cityssm.openHtmlModal("lot-addComment",{onshow(o){e.populateAliases(o),o.querySelector("#lotCommentAdd--lotId").value=t,o.querySelector("form").addEventListener("submit",l)},onshown(e,t){bulmaJS.toggleHtmlClipped(),o=t,e.querySelector("#lotCommentAdd--lotComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#lotComments--add").focus()}})}),d())})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#lot--lotId").value,o=""===t;let n=o;const l=document.querySelector("#form--lot");l.addEventListener("submit",function(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/lots/"+(o?"doCreateLot":"doUpdateLot"),l,t=>{t.success?(e.clearUnsavedChanges(),o||n?window.location.href=e.urlPrefix+"/lots/"+t.lotId+"/edit?t="+Date.now():bulmaJS.alert({message:exports.aliases.lot+" Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating "+exports.aliases.lot,message:t.errorMessage||"",contextualColorName:"danger"})})});const s=l.querySelectorAll("input, select");for(const t of s)t.addEventListener("change",e.setUnsavedChanges);e.initializeUnlockFieldButtons(l),o||document.querySelector("#button--deleteLot").addEventListener("click",o=>{o.preventDefault();bulmaJS.confirm({title:"Delete "+exports.aliases.lot,message:"Are you sure you want to delete this "+exports.aliases.lot.toLowerCase()+"?",contextualColorName:"warning",okButton:{text:"Yes, Delete "+exports.aliases.lot,callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/lots/doDeleteLot",{lotId:t},t=>{t.success?(cityssm.disableNavBlocker(),window.location.href=e.urlPrefix+"/lots/?t="+Date.now()):bulmaJS.alert({title:"Error Deleting "+exports.aliases.lot,message:t.errorMessage||"",contextualColorName:"danger"})})}}})});const a=document.querySelector("#lot--lotTypeId");if(o){const t=document.querySelector("#container--lotFields");a.addEventListener("change",()=>{""!==a.value?cityssm.postJSON(e.urlPrefix+"/lots/doGetLotTypeFields",{lotTypeId:a.value},o=>{if(0===o.lotTypeFields.length)return void(t.innerHTML=`
\n

There are no additional fields for this ${e.escapedAliases.lot} type.

\n
`);t.innerHTML="";let n="";for(const e of o.lotTypeFields){n+=","+e.lotTypeFieldId;const o="lotFieldValue_"+e.lotTypeFieldId,l="lot--"+o,s=document.createElement("div");if(s.className="field",s.innerHTML=`\n
`,s.querySelector("label").textContent=e.lotTypeField,""===e.lotTypeFieldValues){const t=document.createElement("input");t.className="input",t.id=l,t.name=o,t.type="text",t.required=e.isRequired,t.minLength=e.minimumLength,t.maxLength=e.maximumLength,e.pattern&&""!==e.pattern&&(t.pattern=e.pattern),s.querySelector(".control").append(t)}else{s.querySelector(".control").innerHTML=`
\n \n
`;const t=s.querySelector("select");t.required=e.isRequired;const n=e.lotTypeFieldValues.split("\n");for(const e of n){const o=document.createElement("option");o.value=e,o.textContent=e,t.append(o)}}t.append(s)}t.insertAdjacentHTML("beforeend",``)}):t.innerHTML=`
\n

Select the ${e.escapedAliases.lot} type to load the available fields.

\n
`})}else{const t=a.value;a.addEventListener("change",()=>{a.value!==t&&bulmaJS.confirm({title:"Confirm Change",message:`Are you sure you want to change the ${e.escapedAliases.lot} type?\n\n This change affects the additional fields associated with this record.`,contextualColorName:"warning",okButton:{text:"Yes, Keep the Change",callbackFunction:()=>{n=!0}},cancelButton:{text:"Revert the Change",callbackFunction:()=>{a.value=t}}})})}let r=exports.lotComments;function i(o){const n=Number.parseInt(o.currentTarget.closest("tr").dataset.lotCommentId,10),l=r.find(e=>e.lotCommentId===n);let s,a;const i=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/lots/doUpdateLotComment",s,e=>{e.success?(r=e.lotComments,a(),d()):bulmaJS.alert({title:"Error Updating Comment",message:e.errorMessage||"",contextualColorName:"danger"})})};cityssm.openHtmlModal("lot-editComment",{onshow:o=>{e.populateAliases(o),o.querySelector("#lotCommentEdit--lotId").value=t,o.querySelector("#lotCommentEdit--lotCommentId").value=n.toString(),o.querySelector("#lotCommentEdit--lotComment").value=l.lotComment;const s=o.querySelector("#lotCommentEdit--lotCommentDateString");s.value=l.lotCommentDateString;const a=cityssm.dateToString(new Date);s.max=l.lotCommentDateString<=a?a:l.lotCommentDateString,o.querySelector("#lotCommentEdit--lotCommentTimeString").value=l.lotCommentTimeString},onshown:(t,o)=>{bulmaJS.toggleHtmlClipped(),e.initializeDatePickers(t),t.querySelector("#lotCommentEdit--lotComment").focus(),(s=t.querySelector("form")).addEventListener("submit",i),a=o},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}function m(o){const n=Number.parseInt(o.currentTarget.closest("tr").dataset.lotCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/lots/doDeleteLotComment",{lotId:t,lotCommentId:n},e=>{e.success?(r=e.lotComments,d()):bulmaJS.alert({title:"Error Removing Comment",message:e.errorMessage||"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function d(){const e=document.querySelector("#container--lotComments");if(0===r.length)return void(e.innerHTML='
\n

There are no comments to display.

\n
');const t=document.createElement("table");t.className="table is-fullwidth is-striped is-hoverable",t.innerHTML='\n \n \n \n \n \n ';for(const e of r){const o=document.createElement("tr");o.dataset.lotCommentId=e.lotCommentId.toString(),o.innerHTML="',o.querySelector(".button--edit").addEventListener("click",i),o.querySelector(".button--delete").addEventListener("click",m),t.querySelector("tbody").append(o)}e.innerHTML="",e.append(t)}delete exports.lotComments,o||(document.querySelector("#lotComments--add").addEventListener("click",function(){let o;const n=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/lots/doAddLotComment",t.currentTarget,e=>{e.success&&(r=e.lotComments,d(),o())})};cityssm.openHtmlModal("lot-addComment",{onshow(o){e.populateAliases(o),o.querySelector("#lotCommentAdd--lotId").value=t,o.querySelector("form").addEventListener("submit",n)},onshown(e,t){bulmaJS.toggleHtmlClipped(),o=t,e.querySelector("#lotCommentAdd--lotComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#lotComments--add").focus()}})}),d())})(); \ No newline at end of file diff --git a/public/javascripts/lotOccupancySearch.min.js b/public/javascripts/lotOccupancySearch.min.js index 9f1458b1..f961179a 100644 --- a/public/javascripts/lotOccupancySearch.min.js +++ b/public/javascripts/lotOccupancySearch.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=exports.los,e=document.querySelector("#form--searchFilters"),a=document.querySelector("#container--searchResults"),s=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),c=document.querySelector("#searchFilter--offset");function n(e){if(0===e.lotOccupancies.length)return void(a.innerHTML=`
\n

\n There are no ${t.escapedAliases.occupancy} records that meet the search criteria.\n

\n
`);const c=document.createElement("tbody"),n=cityssm.dateToString(new Date);for(const a of e.lotOccupancies){let e="";e=a.occupancyStartDateString<=n&&(""===a.occupancyEndDateString||a.occupancyEndDateString>=n)?'':a.occupancyStartDateString>n?'':'';let s="";for(const t of a.lotOccupancyOccupants)s+=' '+cityssm.escapeHTML(t.occupantName||"")+"
";c.insertAdjacentHTML("beforeend",'")}a.innerHTML=`
' + - relatedHTML + - "' + relatedHTML + "' + ('"; searchResultsContainerElement.insertAdjacentHTML("beforeend", los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count)); searchResultsContainerElement.querySelector("table").append(resultsTbodyElement); - if (responseJSON.offset > 0) { - searchResultsContainerElement - .querySelector("button[data-page='previous']") - .addEventListener("click", previousAndGetWorkOrders); - } - if (limit + responseJSON.offset < responseJSON.count) { - searchResultsContainerElement - .querySelector("button[data-page='next']") - .addEventListener("click", nextAndGetWorkOrders); - } + (_a = searchResultsContainerElement + .querySelector("button[data-page='previous']")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", previousAndGetWorkOrders); + (_b = searchResultsContainerElement + .querySelector("button[data-page='next']")) === null || _b === void 0 ? void 0 : _b.addEventListener("click", nextAndGetWorkOrders); } function getWorkOrders() { - searchResultsContainerElement.innerHTML = - los.getLoadingParagraphHTML("Loading Work Orders..."); + searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML("Loading Work Orders..."); cityssm.postJSON(los.urlPrefix + "/workOrders/doSearchWorkOrders", searchFilterFormElement, renderWorkOrders); } function resetOffsetAndGetWorkOrders() { diff --git a/public-typescript/workOrderSearch.ts b/public-typescript/workOrderSearch.ts index 4a86ff6e..5e8f698f 100644 --- a/public-typescript/workOrderSearch.ts +++ b/public-typescript/workOrderSearch.ts @@ -11,15 +11,11 @@ declare const cityssm: cityssmGlobal; const workOrderPrints: string[] = exports.workOrderPrints; - const searchFilterFormElement = document.querySelector( - "#form--searchFilters" - ) as HTMLFormElement; + const searchFilterFormElement = document.querySelector("#form--searchFilters") as HTMLFormElement; los.initializeDatePickers(searchFilterFormElement); - const searchResultsContainerElement = document.querySelector( - "#container--searchResults" - ) as HTMLElement; + const searchResultsContainerElement = document.querySelector("#container--searchResults") as HTMLElement; const limit = Number.parseInt( (document.querySelector("#searchFilter--limit") as HTMLInputElement).value, @@ -96,9 +92,7 @@ declare const cityssm: cityssmGlobal; cityssm.escapeHTML(workOrder.workOrderDescription || "") + "" + "' + - relatedHTML + - "' + relatedHTML + "' + (' 0) { - searchResultsContainerElement - .querySelector("button[data-page='previous']")! - .addEventListener("click", previousAndGetWorkOrders); - } + searchResultsContainerElement + .querySelector("button[data-page='previous']") + ?.addEventListener("click", previousAndGetWorkOrders); - if (limit + responseJSON.offset < responseJSON.count) { - searchResultsContainerElement - .querySelector("button[data-page='next']")! - .addEventListener("click", nextAndGetWorkOrders); - } + searchResultsContainerElement + .querySelector("button[data-page='next']") + ?.addEventListener("click", nextAndGetWorkOrders); } function getWorkOrders() { - searchResultsContainerElement.innerHTML = - los.getLoadingParagraphHTML("Loading Work Orders..."); + searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML("Loading Work Orders..."); cityssm.postJSON( los.urlPrefix + "/workOrders/doSearchWorkOrders", @@ -194,10 +183,7 @@ declare const cityssm: cityssmGlobal; } function previousAndGetWorkOrders() { - offsetElement.value = Math.max( - Number.parseInt(offsetElement.value, 10) - limit, - 0 - ).toString(); + offsetElement.value = Math.max(Number.parseInt(offsetElement.value, 10) - limit, 0).toString(); getWorkOrders(); } diff --git a/public/javascripts/adminCleanup.min.js b/public/javascripts/adminCleanup.min.js index cda53e10..63f74f65 100644 --- a/public/javascripts/adminCleanup.min.js +++ b/public/javascripts/adminCleanup.min.js @@ -1 +1 @@ -"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}})})})(); \ No newline at end of file +"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,\n ${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}})})})(); \ No newline at end of file diff --git a/public/javascripts/adminFees.min.js b/public/javascripts/adminFees.min.js index fadee81a..9ae34333 100644 --- a/public/javascripts/adminFees.min.js +++ b/public/javascripts/adminFees.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#container--feeCategories");let s=exports.feeCategories;function o(){if(0!==s.length){t.innerHTML="";for(const o of s){const s=document.createElement("section");if(s.className="panel container--feeCategory",s.dataset.feeCategoryId=o.feeCategoryId.toString(),s.innerHTML='

'+cityssm.escapeHTML(o.feeCategory||"")+'

'+(0===o.fees.length?'
':"")+'
'+e.getMoveUpDownButtonFieldHTML("button--moveFeeCategoryUp","button--moveFeeCategoryDown")+"
",0===o.fees.length)s.insertAdjacentHTML("beforeend",`
\n
\n

\n There are no fees in the\n "${cityssm.escapeHTML(o.feeCategory||"")}"\n category.\n

\n
\n
`),s.querySelector(".button--deleteFeeCategory").addEventListener("click",n);else for(const t of o.fees){const o=document.createElement("div");o.className="panel-block is-block container--fee",o.dataset.feeId=t.feeId.toString();const a=t.isRequired||t.occupancyTypeId||t.lotTypeId;o.innerHTML='

'+cityssm.escapeHTML(t.feeName||"")+"
"+cityssm.escapeHTML(t.feeDescription||"").replace(/\n/g,"
")+"

"+(a?'

'+(t.isRequired?'Required':"")+(t.occupancyTypeId?' '+cityssm.escapeHTML(t.occupancyType||"")+"":"")+(t.lotTypeId?' '+cityssm.escapeHTML(t.lotType||"")+"":"")+"

":"")+'
'+(t.feeFunction?cityssm.escapeHTML(t.feeFunction)+"
Fee Function":"$"+t.feeAmount.toFixed(2)+"
Fee")+'
'+(t.taxPercentage?t.taxPercentage+"%":"$"+t.taxAmount.toFixed(2))+'
Tax
'+(t.includeQuantity?cityssm.escapeHTML(t.quantityUnit||"")+"
Quantity":"")+'
'+e.getMoveUpDownButtonFieldHTML("button--moveFeeUp","button--moveFeeDown")+"
",o.querySelector("a").addEventListener("click",l),o.querySelector(".button--moveFeeUp").addEventListener("click",i),o.querySelector(".button--moveFeeDown").addEventListener("click",i),s.append(o)}s.querySelector(".button--editFeeCategory").addEventListener("click",a),s.querySelector(".button--addFee").addEventListener("click",c),s.querySelector(".button--moveFeeCategoryUp").addEventListener("click",r),s.querySelector(".button--moveFeeCategoryDown").addEventListener("click",r),t.append(s)}}else t.innerHTML='

There are no available fees.

'}function a(t){const a=Number.parseInt(t.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId,10),n=s.find(e=>e.feeCategoryId===a);let r;function c(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateFeeCategory",t.currentTarget,e=>{e.success?(s=e.feeCategories,r(),o()):bulmaJS.alert({title:"Error Updating Fee Category",message:e.errorMessage||"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminFees-editFeeCategory",{onshow(e){e.querySelector("#feeCategoryEdit--feeCategoryId").value=n.feeCategoryId.toString(),e.querySelector("#feeCategoryEdit--feeCategory").value=n.feeCategory},onshown(e,t){bulmaJS.toggleHtmlClipped(),r=t,e.querySelector("form").addEventListener("submit",c),e.querySelector("#feeCategoryEdit--feeCategory").focus()},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}function n(t){const a=Number.parseInt(t.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId,10);bulmaJS.confirm({title:"Delete Fee Category?",message:"Are you sure you want to delete this fee category?",contextualColorName:"warning",okButton:{text:"Yes, Delete the Fee Category",callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteFeeCategory",{feeCategoryId:a},e=>{e.success?(s=e.feeCategories,o()):bulmaJS.alert({title:"Error Updating Fee Category",message:e.errorMessage||"",contextualColorName:"danger"})})}}})}function r(t){const a=t.currentTarget,n=Number.parseInt(a.closest(".container--feeCategory").dataset.feeCategoryId,10);cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===a.dataset.direction?"doMoveFeeCategoryUp":"doMoveFeeCategoryDown"),{feeCategoryId:n,moveToEnd:t.shiftKey?"1":"0"},e=>{e.success?(s=e.feeCategories,o()):bulmaJS.alert({title:"Error Moving Fee Category",message:e.errorMessage||"",contextualColorName:"danger"})})}function c(t){const a=Number.parseInt(t.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId,10);let n;function r(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddFee",t.currentTarget,e=>{e.success?(s=e.feeCategories,n(),o()):bulmaJS.alert({title:"Error Adding Fee",message:e.errorMessage||"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminFees-addFee",{onshow(t){const o=t.querySelector("#feeAdd--feeCategoryId");for(const e of s){const t=document.createElement("option");t.value=e.feeCategoryId.toString(),t.textContent=e.feeCategory,e.feeCategoryId===a&&(t.selected=!0),o.append(t)}const n=t.querySelector("#feeAdd--occupancyTypeId");for(const e of exports.occupancyTypes){const t=document.createElement("option");t.value=e.occupancyTypeId.toString(),t.textContent=e.occupancyType,n.append(t)}const r=t.querySelector("#feeAdd--lotTypeId");for(const e of exports.lotTypes){const t=document.createElement("option");t.value=e.lotTypeId.toString(),t.textContent=e.lotType,r.append(t)}t.querySelector("#feeAdd--taxPercentage").value=exports.taxPercentageDefault.toString(),e.populateAliases(t)},onshown(e,t){bulmaJS.toggleHtmlClipped(),n=t,e.querySelector("form").addEventListener("submit",r),e.querySelector("#feeAdd--feeName").focus(),e.querySelector("#feeAdd--feeFunction").addEventListener("change",()=>{const t=e.querySelector("#feeAdd--feeAmount"),s=e.querySelector("#feeAdd--feeFunction");""===s.value?(s.closest(".select").classList.remove("is-success"),t.classList.add("is-success"),t.disabled=!1):(s.closest(".select").classList.add("is-success"),t.classList.remove("is-success"),t.disabled=!0)}),e.querySelector("#feeAdd--taxPercentage").addEventListener("keyup",()=>{const t=e.querySelector("#feeAdd--taxAmount"),s=e.querySelector("#feeAdd--taxPercentage");""===s.value?(s.classList.remove("is-success"),t.classList.add("is-success"),t.disabled=!1):(s.classList.add("is-success"),t.classList.remove("is-success"),t.disabled=!0)}),e.querySelector("#feeAdd--includeQuantity").addEventListener("change",()=>{e.querySelector("#feeAdd--quantityUnit").disabled=""===e.querySelector("#feeAdd--includeQuantity").value})},onremoved(){bulmaJS.toggleHtmlClipped()}})}function l(t){t.preventDefault();const a=t.currentTarget.closest(".container--fee"),n=Number.parseInt(a.dataset.feeId,10),r=Number.parseInt(a.closest(".container--feeCategory").dataset.feeCategoryId),c=s.find(e=>e.feeCategoryId===r).fees.find(e=>e.feeId===n);let l,i;function d(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateFee",t.currentTarget,e=>{e.success?(s=e.feeCategories,l(),o()):bulmaJS.alert({title:"Error Updating Fee",message:e.errorMessage||"",contextualColorName:"danger"})})}function u(t){t.preventDefault();bulmaJS.confirm({title:"Delete Fee?",message:"Are you sure you want to delete this fee?",contextualColorName:"warning",okButton:{text:"Yes, Delete the Fee",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/admin/doDeleteFee",{feeId:n},e=>{e.success?(s=e.feeCategories,l(),o()):bulmaJS.alert({title:"Error Deleting Fee",message:e.errorMessage||"",contextualColorName:"danger"})})}}})}function y(){const e=i.querySelector("#feeEdit--feeAmount"),t=i.querySelector("#feeEdit--feeFunction");""===t.value?(t.closest(".select").classList.remove("is-success"),e.classList.add("is-success"),e.disabled=!1):(t.closest(".select").classList.add("is-success"),e.classList.remove("is-success"),e.disabled=!0)}function f(){const e=i.querySelector("#feeEdit--taxAmount"),t=i.querySelector("#feeEdit--taxPercentage");""===t.value?(t.classList.remove("is-success"),e.classList.add("is-success"),e.disabled=!1):(t.classList.add("is-success"),e.classList.remove("is-success"),e.disabled=!0)}function m(){i.querySelector("#feeEdit--quantityUnit").disabled=""===i.querySelector("#feeEdit--includeQuantity").value}cityssm.openHtmlModal("adminFees-editFee",{onshow(t){i=t,t.querySelector("#feeEdit--feeId").value=c.feeId.toString();const o=t.querySelector("#feeEdit--feeCategoryId");for(const e of s){const t=document.createElement("option");t.value=e.feeCategoryId.toString(),t.textContent=e.feeCategory,e.feeCategoryId===r&&(t.selected=!0),o.append(t)}t.querySelector("#feeEdit--feeName").value=c.feeName,t.querySelector("#feeEdit--feeDescription").value=c.feeDescription;const a=t.querySelector("#feeEdit--occupancyTypeId");for(const e of exports.occupancyTypes){const t=document.createElement("option");t.value=e.occupancyTypeId.toString(),t.textContent=e.occupancyType,e.occupancyTypeId===c.occupancyTypeId&&(t.selected=!0),a.append(t)}const n=t.querySelector("#feeEdit--lotTypeId");for(const e of exports.lotTypes){const t=document.createElement("option");t.value=e.lotTypeId.toString(),t.textContent=e.lotType,e.lotTypeId===c.lotTypeId&&(t.selected=!0),n.append(t)}t.querySelector("#feeEdit--feeAmount").value=c.feeAmount?c.feeAmount.toFixed(2):"",t.querySelector("#feeEdit--feeFunction").addEventListener("change",y),y(),t.querySelector("#feeEdit--taxAmount").value=c.taxAmount?c.taxAmount.toFixed(2):"";const l=t.querySelector("#feeEdit--taxPercentage");l.value=c.taxPercentage?c.taxPercentage.toString():"",l.addEventListener("keyup",f),f();const d=t.querySelector("#feeEdit--includeQuantity");c.includeQuantity&&(d.value="1"),d.addEventListener("change",m),t.querySelector("#feeEdit--quantityUnit").value=c.quantityUnit||"",m(),c.isRequired&&(t.querySelector("#feeEdit--isRequired").value="1"),e.populateAliases(t)},onshown(e,t){bulmaJS.toggleHtmlClipped(),l=t,e.querySelector("form").addEventListener("submit",d),bulmaJS.init(e),e.querySelector(".button--deleteFee").addEventListener("click",u)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}function i(t){const a=t.currentTarget,n=a.closest(".container--fee"),r=Number.parseInt(n.dataset.feeId,10);cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===a.dataset.direction?"doMoveFeeUp":"doMoveFeeDown"),{feeId:r,moveToEnd:t.shiftKey?"1":"0"},e=>{e.success?(s=e.feeCategories,o()):bulmaJS.alert({title:"Error Moving Fee",message:e.errorMessage||"",contextualColorName:"danger"})})}delete exports.feeCategories,document.querySelector("#button--addFeeCategory").addEventListener("click",()=>{let t;const a=a=>{a.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddFeeCategory",a.currentTarget,e=>{e.success?(s=e.feeCategories,t(),o()):bulmaJS.alert({title:"Error Creating Fee Category",message:e.errorMessage||"",contextualColorName:"danger"})})};cityssm.openHtmlModal("adminFees-addFeeCategory",{onshown:(e,s)=>{bulmaJS.toggleHtmlClipped(),e.querySelector("#feeCategoryAdd--feeCategory").focus(),t=s,e.querySelector("form").addEventListener("submit",a)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}),o()})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#container--feeCategories");let s=exports.feeCategories;function o(){if(0!==s.length){t.innerHTML="";for(const o of s){const s=document.createElement("section");if(s.className="panel container--feeCategory",s.dataset.feeCategoryId=o.feeCategoryId.toString(),s.innerHTML='

'+cityssm.escapeHTML(o.feeCategory||"")+'

'+(0===o.fees.length?'
':"")+'
'+e.getMoveUpDownButtonFieldHTML("button--moveFeeCategoryUp","button--moveFeeCategoryDown")+"
",0===o.fees.length)s.insertAdjacentHTML("beforeend",`
\n
\n

\n There are no fees in the\n "${cityssm.escapeHTML(o.feeCategory||"")}"\n category.\n

\n
\n
`),s.querySelector(".button--deleteFeeCategory").addEventListener("click",n);else for(const t of o.fees){const o=document.createElement("div");o.className="panel-block is-block container--fee",o.dataset.feeId=t.feeId.toString();const a=t.isRequired||t.occupancyTypeId||t.lotTypeId;o.innerHTML='

'+cityssm.escapeHTML(t.feeName||"")+"
"+cityssm.escapeHTML(t.feeDescription||"").replace(/\n/g,"
")+"

"+(a?'

'+(t.isRequired?'Required':"")+(t.occupancyTypeId?' '+cityssm.escapeHTML(t.occupancyType||"")+"":"")+(t.lotTypeId?' '+cityssm.escapeHTML(t.lotType||"")+"":"")+"

":"")+'
'+(t.feeFunction?cityssm.escapeHTML(t.feeFunction)+"
Fee Function":"$"+t.feeAmount.toFixed(2)+"
Fee")+'
'+(t.taxPercentage?t.taxPercentage+"%":"$"+t.taxAmount.toFixed(2))+'
Tax
'+(t.includeQuantity?cityssm.escapeHTML(t.quantityUnit||"")+"
Quantity":"")+'
'+e.getMoveUpDownButtonFieldHTML("button--moveFeeUp","button--moveFeeDown")+"
",o.querySelector("a").addEventListener("click",l),o.querySelector(".button--moveFeeUp").addEventListener("click",i),o.querySelector(".button--moveFeeDown").addEventListener("click",i),s.append(o)}s.querySelector(".button--editFeeCategory").addEventListener("click",a),s.querySelector(".button--addFee").addEventListener("click",c),s.querySelector(".button--moveFeeCategoryUp").addEventListener("click",r),s.querySelector(".button--moveFeeCategoryDown").addEventListener("click",r),t.append(s)}}else t.innerHTML='
\n

There are no available fees.

\n
'}function a(t){const a=Number.parseInt(t.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId,10),n=s.find(e=>e.feeCategoryId===a);let r;function c(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateFeeCategory",t.currentTarget,e=>{e.success?(s=e.feeCategories,r(),o()):bulmaJS.alert({title:"Error Updating Fee Category",message:e.errorMessage||"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminFees-editFeeCategory",{onshow(e){e.querySelector("#feeCategoryEdit--feeCategoryId").value=n.feeCategoryId.toString(),e.querySelector("#feeCategoryEdit--feeCategory").value=n.feeCategory},onshown(e,t){bulmaJS.toggleHtmlClipped(),r=t,e.querySelector("form").addEventListener("submit",c),e.querySelector("#feeCategoryEdit--feeCategory").focus()},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}function n(t){const a=Number.parseInt(t.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId,10);bulmaJS.confirm({title:"Delete Fee Category?",message:"Are you sure you want to delete this fee category?",contextualColorName:"warning",okButton:{text:"Yes, Delete the Fee Category",callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteFeeCategory",{feeCategoryId:a},e=>{e.success?(s=e.feeCategories,o()):bulmaJS.alert({title:"Error Updating Fee Category",message:e.errorMessage||"",contextualColorName:"danger"})})}}})}function r(t){const a=t.currentTarget,n=a.closest(".container--feeCategory").dataset.feeCategoryId;cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===a.dataset.direction?"doMoveFeeCategoryUp":"doMoveFeeCategoryDown"),{feeCategoryId:n,moveToEnd:t.shiftKey?"1":"0"},e=>{e.success?(s=e.feeCategories,o()):bulmaJS.alert({title:"Error Moving Fee Category",message:e.errorMessage||"",contextualColorName:"danger"})})}function c(t){const a=Number.parseInt(t.currentTarget.closest(".container--feeCategory").dataset.feeCategoryId,10);let n;function r(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddFee",t.currentTarget,e=>{e.success?(s=e.feeCategories,n(),o()):bulmaJS.alert({title:"Error Adding Fee",message:e.errorMessage||"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminFees-addFee",{onshow(t){const o=t.querySelector("#feeAdd--feeCategoryId");for(const e of s){const t=document.createElement("option");t.value=e.feeCategoryId.toString(),t.textContent=e.feeCategory,e.feeCategoryId===a&&(t.selected=!0),o.append(t)}const n=t.querySelector("#feeAdd--occupancyTypeId");for(const e of exports.occupancyTypes){const t=document.createElement("option");t.value=e.occupancyTypeId.toString(),t.textContent=e.occupancyType,n.append(t)}const r=t.querySelector("#feeAdd--lotTypeId");for(const e of exports.lotTypes){const t=document.createElement("option");t.value=e.lotTypeId.toString(),t.textContent=e.lotType,r.append(t)}t.querySelector("#feeAdd--taxPercentage").value=exports.taxPercentageDefault.toString(),e.populateAliases(t)},onshown(e,t){bulmaJS.toggleHtmlClipped(),n=t,e.querySelector("form").addEventListener("submit",r),e.querySelector("#feeAdd--feeName").focus(),e.querySelector("#feeAdd--feeFunction").addEventListener("change",()=>{const t=e.querySelector("#feeAdd--feeAmount"),s=e.querySelector("#feeAdd--feeFunction");""===s.value?(s.closest(".select").classList.remove("is-success"),t.classList.add("is-success"),t.disabled=!1):(s.closest(".select").classList.add("is-success"),t.classList.remove("is-success"),t.disabled=!0)}),e.querySelector("#feeAdd--taxPercentage").addEventListener("keyup",()=>{const t=e.querySelector("#feeAdd--taxAmount"),s=e.querySelector("#feeAdd--taxPercentage");""===s.value?(s.classList.remove("is-success"),t.classList.add("is-success"),t.disabled=!1):(s.classList.add("is-success"),t.classList.remove("is-success"),t.disabled=!0)}),e.querySelector("#feeAdd--includeQuantity").addEventListener("change",()=>{e.querySelector("#feeAdd--quantityUnit").disabled=""===e.querySelector("#feeAdd--includeQuantity").value})},onremoved(){bulmaJS.toggleHtmlClipped()}})}function l(t){t.preventDefault();const a=t.currentTarget.closest(".container--fee"),n=Number.parseInt(a.dataset.feeId,10),r=Number.parseInt(a.closest(".container--feeCategory").dataset.feeCategoryId),c=s.find(e=>e.feeCategoryId===r).fees.find(e=>e.feeId===n);let l,i;function d(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateFee",t.currentTarget,e=>{e.success?(s=e.feeCategories,l(),o()):bulmaJS.alert({title:"Error Updating Fee",message:e.errorMessage||"",contextualColorName:"danger"})})}function u(t){t.preventDefault();bulmaJS.confirm({title:"Delete Fee?",message:"Are you sure you want to delete this fee?",contextualColorName:"warning",okButton:{text:"Yes, Delete the Fee",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/admin/doDeleteFee",{feeId:n},e=>{e.success?(s=e.feeCategories,l(),o()):bulmaJS.alert({title:"Error Deleting Fee",message:e.errorMessage||"",contextualColorName:"danger"})})}}})}function y(){const e=i.querySelector("#feeEdit--feeAmount"),t=i.querySelector("#feeEdit--feeFunction");""===t.value?(t.closest(".select").classList.remove("is-success"),e.classList.add("is-success"),e.disabled=!1):(t.closest(".select").classList.add("is-success"),e.classList.remove("is-success"),e.disabled=!0)}function f(){const e=i.querySelector("#feeEdit--taxAmount"),t=i.querySelector("#feeEdit--taxPercentage");""===t.value?(t.classList.remove("is-success"),e.classList.add("is-success"),e.disabled=!1):(t.classList.add("is-success"),e.classList.remove("is-success"),e.disabled=!0)}function m(){const e=i.querySelector("#feeEdit--includeQuantity").value;i.querySelector("#feeEdit--quantityUnit").disabled=""===e}cityssm.openHtmlModal("adminFees-editFee",{onshow(t){i=t,t.querySelector("#feeEdit--feeId").value=c.feeId.toString();const o=t.querySelector("#feeEdit--feeCategoryId");for(const e of s){const t=document.createElement("option");t.value=e.feeCategoryId.toString(),t.textContent=e.feeCategory,e.feeCategoryId===r&&(t.selected=!0),o.append(t)}t.querySelector("#feeEdit--feeName").value=c.feeName,t.querySelector("#feeEdit--feeDescription").value=c.feeDescription;const a=t.querySelector("#feeEdit--occupancyTypeId");for(const e of exports.occupancyTypes){const t=document.createElement("option");t.value=e.occupancyTypeId.toString(),t.textContent=e.occupancyType,e.occupancyTypeId===c.occupancyTypeId&&(t.selected=!0),a.append(t)}const n=t.querySelector("#feeEdit--lotTypeId");for(const e of exports.lotTypes){const t=document.createElement("option");t.value=e.lotTypeId.toString(),t.textContent=e.lotType,e.lotTypeId===c.lotTypeId&&(t.selected=!0),n.append(t)}t.querySelector("#feeEdit--feeAmount").value=c.feeAmount?c.feeAmount.toFixed(2):"",t.querySelector("#feeEdit--feeFunction").addEventListener("change",y),y(),t.querySelector("#feeEdit--taxAmount").value=c.taxAmount?c.taxAmount.toFixed(2):"";const l=t.querySelector("#feeEdit--taxPercentage");l.value=c.taxPercentage?c.taxPercentage.toString():"",l.addEventListener("keyup",f),f();const d=t.querySelector("#feeEdit--includeQuantity");c.includeQuantity&&(d.value="1"),d.addEventListener("change",m),t.querySelector("#feeEdit--quantityUnit").value=c.quantityUnit||"",m(),c.isRequired&&(t.querySelector("#feeEdit--isRequired").value="1"),e.populateAliases(t)},onshown(e,t){bulmaJS.toggleHtmlClipped(),l=t,e.querySelector("form").addEventListener("submit",d),bulmaJS.init(e),e.querySelector(".button--deleteFee").addEventListener("click",u)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}function i(t){const a=t.currentTarget,n=a.closest(".container--fee").dataset.feeId;cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===a.dataset.direction?"doMoveFeeUp":"doMoveFeeDown"),{feeId:n,moveToEnd:t.shiftKey?"1":"0"},e=>{e.success?(s=e.feeCategories,o()):bulmaJS.alert({title:"Error Moving Fee",message:e.errorMessage||"",contextualColorName:"danger"})})}delete exports.feeCategories,document.querySelector("#button--addFeeCategory").addEventListener("click",()=>{let t;const a=a=>{a.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddFeeCategory",a.currentTarget,e=>{e.success?(s=e.feeCategories,t(),o()):bulmaJS.alert({title:"Error Creating Fee Category",message:e.errorMessage||"",contextualColorName:"danger"})})};cityssm.openHtmlModal("adminFees-addFeeCategory",{onshown(e,s){bulmaJS.toggleHtmlClipped(),e.querySelector("#feeCategoryAdd--feeCategory").focus(),t=s,e.querySelector("form").addEventListener("submit",a)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addFeeCategory").focus()}})}),o()})(); \ No newline at end of file diff --git a/public/javascripts/lotEdit.min.js b/public/javascripts/lotEdit.min.js index 69b05720..84acffbc 100644 --- a/public/javascripts/lotEdit.min.js +++ b/public/javascripts/lotEdit.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#lot--lotId").value,o=""===t;let l=o;const n=document.querySelector("#form--lot");n.addEventListener("submit",function(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/lots/"+(o?"doCreateLot":"doUpdateLot"),n,t=>{t.success?(e.clearUnsavedChanges(),o||l?window.location.href=e.urlPrefix+"/lots/"+t.lotId+"/edit?t="+Date.now():bulmaJS.alert({message:exports.aliases.lot+" Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating "+exports.aliases.lot,message:t.errorMessage||"",contextualColorName:"danger"})})});const s=n.querySelectorAll("input, select");for(const t of s)t.addEventListener("change",e.setUnsavedChanges);e.initializeUnlockFieldButtons(n),o||document.querySelector("#button--deleteLot").addEventListener("click",o=>{o.preventDefault();bulmaJS.confirm({title:"Delete "+exports.aliases.lot,message:"Are you sure you want to delete this "+exports.aliases.lot.toLowerCase()+"?",contextualColorName:"warning",okButton:{text:"Yes, Delete "+exports.aliases.lot,callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/lots/doDeleteLot",{lotId:t},t=>{t.success?(cityssm.disableNavBlocker(),window.location.href=e.urlPrefix+"/lots/?t="+Date.now()):bulmaJS.alert({title:"Error Deleting "+exports.aliases.lot,message:t.errorMessage||"",contextualColorName:"danger"})})}}})});const a=document.querySelector("#lot--lotTypeId");if(o){const t=document.querySelector("#container--lotFields");a.addEventListener("change",()=>{""!==a.value?cityssm.postJSON(e.urlPrefix+"/lots/doGetLotTypeFields",{lotTypeId:a.value},e=>{if(0===e.lotTypeFields.length)return void(t.innerHTML='

There are no additional fields for this '+exports.aliases.lot.toLowerCase()+" type.

");t.innerHTML="";let o="";for(const l of e.lotTypeFields){o+=","+l.lotTypeFieldId;const e="lotFieldValue_"+l.lotTypeFieldId,n="lot--"+e,s=document.createElement("div");if(s.className="field",s.innerHTML='
',s.querySelector("label").textContent=l.lotTypeField,""===l.lotTypeFieldValues){const t=document.createElement("input");t.className="input",t.id=n,t.name=e,t.type="text",t.required=l.isRequired,t.minLength=l.minimumLength,t.maxLength=l.maximumLength,l.pattern&&""!==l.pattern&&(t.pattern=l.pattern),s.querySelector(".control").append(t)}else{s.querySelector(".control").innerHTML='
';const t=s.querySelector("select");t.required=l.isRequired;const o=l.lotTypeFieldValues.split("\n");for(const e of o){const o=document.createElement("option");o.value=e,o.textContent=e,t.append(o)}}t.append(s)}t.insertAdjacentHTML("beforeend",'')}):t.innerHTML='

Select the '+exports.aliases.lot.toLowerCase()+" type to load the available fields.

"})}else{const e=a.value;a.addEventListener("change",()=>{a.value!==e&&bulmaJS.confirm({title:"Confirm Change",message:"Are you sure you want to change the "+exports.aliases.lot.toLowerCase()+" type?\nThis change affects the additional fields associated with this record.",contextualColorName:"warning",okButton:{text:"Yes, Keep the Change",callbackFunction:()=>{l=!0}},cancelButton:{text:"Revert the Change",callbackFunction:()=>{a.value=e}}})})}let r=exports.lotComments;function i(o){const l=Number.parseInt(o.currentTarget.closest("tr").dataset.lotCommentId,10),n=r.find(e=>e.lotCommentId===l);let s,a;const i=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/lots/doUpdateLotComment",s,e=>{e.success?(r=e.lotComments,a(),d()):bulmaJS.alert({title:"Error Updating Comment",message:e.errorMessage||"",contextualColorName:"danger"})})};cityssm.openHtmlModal("lot-editComment",{onshow:o=>{e.populateAliases(o),o.querySelector("#lotCommentEdit--lotId").value=t,o.querySelector("#lotCommentEdit--lotCommentId").value=l.toString(),o.querySelector("#lotCommentEdit--lotComment").value=n.lotComment;const s=o.querySelector("#lotCommentEdit--lotCommentDateString");s.value=n.lotCommentDateString;const a=cityssm.dateToString(new Date);s.max=n.lotCommentDateString<=a?a:n.lotCommentDateString,o.querySelector("#lotCommentEdit--lotCommentTimeString").value=n.lotCommentTimeString},onshown:(t,o)=>{bulmaJS.toggleHtmlClipped(),e.initializeDatePickers(t),t.querySelector("#lotCommentEdit--lotComment").focus(),(s=t.querySelector("form")).addEventListener("submit",i),a=o},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}function m(o){const l=Number.parseInt(o.currentTarget.closest("tr").dataset.lotCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/lots/doDeleteLotComment",{lotId:t,lotCommentId:l},e=>{e.success?(r=e.lotComments,d()):bulmaJS.alert({title:"Error Removing Comment",message:e.errorMessage||"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function d(){const e=document.querySelector("#container--lotComments");if(0===r.length)return void(e.innerHTML='

There are no comments to display.

');const t=document.createElement("table");t.className="table is-fullwidth is-striped is-hoverable",t.innerHTML='
CommentorComment DateCommentOptions
"+cityssm.escapeHTML(e.recordCreate_userName||"")+""+e.lotCommentDateString+(0===e.lotCommentTime?"":" "+e.lotCommentTimeString)+""+cityssm.escapeHTML(e.lotComment||"")+'
CommentorComment DateCommentOptions
"+cityssm.escapeHTML(e.recordCreate_userName||"")+""+e.lotCommentDateString+(0===e.lotCommentTime?"":" "+e.lotCommentTimeString)+""+cityssm.escapeHTML(e.lotComment||"")+'
'+e+''+cityssm.escapeHTML(a.occupancyType)+""+(a.lotName?''+cityssm.escapeHTML(a.lotName)+"":'(No '+t.escapedAliases.Lot+")")+'
'+cityssm.escapeHTML(a.mapName||"")+"
"+a.occupancyStartDateString+""+(a.occupancyEndDate?a.occupancyEndDateString:'(No End Date)')+""+s+""+(a.printEJS?'':"")+"
\n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}Print
`,a.querySelector("table").append(c),a.insertAdjacentHTML("beforeend",t.getSearchResultsPagerHTML(s,e.offset,e.count)),e.offset>0&&a.querySelector("button[data-page='previous']").addEventListener("click",o),s+e.offset{t.preventDefault(),i()}),r()})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=exports.los,e=document.querySelector("#form--searchFilters"),a=document.querySelector("#container--searchResults"),s=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),c=document.querySelector("#searchFilter--offset");function n(e){var c,n;if(0===e.lotOccupancies.length)return void(a.innerHTML=`
\n

\n There are no ${t.escapedAliases.occupancy} records that meet the search criteria.\n

\n
`);const i=document.createElement("tbody"),r=cityssm.dateToString(new Date);for(const a of e.lotOccupancies){let e="";e=a.occupancyStartDateString<=r&&(""===a.occupancyEndDateString||a.occupancyEndDateString>=r)?`\n \n `:a.occupancyStartDateString>r?`\n \n `:`\n \n `;let s="";for(const t of a.lotOccupancyOccupants)s+=' '+cityssm.escapeHTML(t.occupantName||"")+"
";i.insertAdjacentHTML("beforeend",'
")}a.innerHTML=`
'+e+''+cityssm.escapeHTML(a.occupancyType)+""+(a.lotName?''+cityssm.escapeHTML(a.lotName)+"":'(No '+t.escapedAliases.Lot+")")+'
'+cityssm.escapeHTML(a.mapName||"")+"
"+a.occupancyStartDateString+""+(a.occupancyEndDate?a.occupancyEndDateString:'(No End Date)')+""+s+""+(a.printEJS?'':"")+"
\n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}Print
`,a.querySelector("table").append(i),a.insertAdjacentHTML("beforeend",t.getSearchResultsPagerHTML(s,e.offset,e.count)),null===(c=a.querySelector("button[data-page='previous']"))||void 0===c||c.addEventListener("click",l),null===(n=a.querySelector("button[data-page='next']"))||void 0===n||n.addEventListener("click",o)}function i(){a.innerHTML=t.getLoadingParagraphHTML(`Loading ${exports.aliases.occupancies}...`),cityssm.postJSON(t.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,n)}function r(){c.value="0",i()}function l(){c.value=Math.max(Number.parseInt(c.value,10)-s,0).toString(),i()}function o(){c.value=(Number.parseInt(c.value,10)+s).toString(),i()}const p=e.querySelectorAll("input, select");for(const t of p)t.addEventListener("change",r);e.addEventListener("submit",t=>{t.preventDefault(),r()}),i()})(); \ No newline at end of file diff --git a/public/javascripts/lotSearch.min.js b/public/javascripts/lotSearch.min.js index ba8e1c66..ed526a95 100644 --- a/public/javascripts/lotSearch.min.js +++ b/public/javascripts/lotSearch.min.js @@ -1 +1 @@ -"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),r=document.querySelector("#searchFilter--offset");function n(t){if(0===t.lots.length)return void(s.innerHTML='

There are no '+e.escapedAliases.lots+" that meet the search criteria.

");const r=document.createElement("tbody");for(const s of t.lots)r.insertAdjacentHTML("beforeend",'");s.innerHTML=`
'+cityssm.escapeHTML(s.lotName||"")+''+(s.mapName?cityssm.escapeHTML(s.mapName):'(No Name)')+""+cityssm.escapeHTML(s.lotType||"")+""+(s.lotStatusId?cityssm.escapeHTML(s.lotStatus||""):'(No Status)')+"
"+(s.lotOccupancyCount>0?'Currently Occupied':"")+"
\n \n \n \n \n \n \n
${e.escapedAliases.Lot}${e.escapedAliases.Map}${e.escapedAliases.Lot} TypeStatus
`,s.insertAdjacentHTML("beforeend",e.getSearchResultsPagerHTML(a,t.offset,t.count)),s.querySelector("table").append(r),t.offset>0&&s.querySelector("button[data-page='previous']").addEventListener("click",l),a+t.offset{e.preventDefault(),c()}),o()})(); \ No newline at end of file +"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),r=document.querySelector("#searchFilter--offset");function n(t){var r,n;if(0===t.lots.length)return void(s.innerHTML='

There are no '+e.escapedAliases.lots+" that meet the search criteria.

");const o=document.createElement("tbody");for(const s of t.lots)o.insertAdjacentHTML("beforeend",'
");s.innerHTML=`
'+cityssm.escapeHTML(s.lotName||"")+''+(s.mapName?cityssm.escapeHTML(s.mapName):'(No Name)')+""+cityssm.escapeHTML(s.lotType||"")+""+(s.lotStatusId?cityssm.escapeHTML(s.lotStatus||""):'(No Status)')+"
"+(s.lotOccupancyCount>0?'Currently Occupied':"")+"
\n \n \n \n \n \n \n
${e.escapedAliases.Lot}${e.escapedAliases.Map}${e.escapedAliases.Lot} TypeStatus
`,s.insertAdjacentHTML("beforeend",e.getSearchResultsPagerHTML(a,t.offset,t.count)),s.querySelector("table").append(o),null===(r=s.querySelector("button[data-page='previous']"))||void 0===r||r.addEventListener("click",l),null===(n=s.querySelector("button[data-page='next']"))||void 0===n||n.addEventListener("click",i)}function o(){s.innerHTML=e.getLoadingParagraphHTML(`Loading ${e.escapedAliases.Lots}...`),cityssm.postJSON(e.urlPrefix+"/lots/doSearchLots",t,n)}function c(){r.value="0",o()}function l(){r.value=Math.max(Number.parseInt(r.value,10)-a,0).toString(),o()}function i(){r.value=(Number.parseInt(r.value,10)+a).toString(),o()}const d=t.querySelectorAll("input, select");for(const e of d)e.addEventListener("change",c);t.addEventListener("submit",e=>{e.preventDefault(),c()}),o()})(); \ No newline at end of file diff --git a/public/javascripts/workOrderSearch.min.js b/public/javascripts/workOrderSearch.min.js index d6fc0ceb..cc157cc8 100644 --- a/public/javascripts/workOrderSearch.min.js +++ b/public/javascripts/workOrderSearch.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=exports.workOrderPrints,s=document.querySelector("#form--searchFilters");e.initializeDatePickers(s);const r=document.querySelector("#container--searchResults"),a=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),o=document.querySelector("#searchFilter--offset");function i(s){if(0===s.workOrders.length)return void(r.innerHTML='

There are no work orders that meet the search criteria.

');const o=document.createElement("tbody");for(const r of s.workOrders){let s="";for(const t of r.workOrderLots)s+=' '+cityssm.escapeHTML(t.lotName||"(No "+exports.aliases.Lot+" Name)")+"
";for(const t of r.workOrderLotOccupancies)for(const r of t.lotOccupancyOccupants)s+=' '+cityssm.escapeHTML(r.occupantName||"(No Name)")+"
";o.insertAdjacentHTML("beforeend",'"+(t.length>0?'':"")+"")}r.innerHTML='
'+(r.workOrderNumber.trim()?cityssm.escapeHTML(r.workOrderNumber||""):"(No Number)")+""+cityssm.escapeHTML(r.workOrderType||"")+'
'+cityssm.escapeHTML(r.workOrderDescription||"")+'
'+s+' '+r.workOrderOpenDateString+'
'+(r.workOrderCloseDate?r.workOrderCloseDateString:'(No '+e.escapedAliases.WorkOrderCloseDate+")")+"
"+(0===r.workOrderMilestoneCount?"-":r.workOrderMilestoneCompletionCount+" / "+r.workOrderMilestoneCount)+"
'+(t.length>0?'':"")+"
Work Order NumberDescriptionRelatedDateProgress
",r.insertAdjacentHTML("beforeend",e.getSearchResultsPagerHTML(a,s.offset,s.count)),r.querySelector("table").append(o),s.offset>0&&r.querySelector("button[data-page='previous']").addEventListener("click",c),a+s.offset{e.preventDefault(),n()}),l()})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=exports.workOrderPrints,s=document.querySelector("#form--searchFilters");e.initializeDatePickers(s);const r=document.querySelector("#container--searchResults"),a=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),o=document.querySelector("#searchFilter--offset");function i(s){var o,i;if(0===s.workOrders.length)return void(r.innerHTML='

There are no work orders that meet the search criteria.

');const l=document.createElement("tbody");for(const r of s.workOrders){let s="";for(const t of r.workOrderLots)s+=' '+cityssm.escapeHTML(t.lotName||"(No "+exports.aliases.Lot+" Name)")+"
";for(const t of r.workOrderLotOccupancies)for(const r of t.lotOccupancyOccupants)s+=' '+cityssm.escapeHTML(r.occupantName||"(No Name)")+"
";l.insertAdjacentHTML("beforeend",'
"+(t.length>0?'':"")+"")}r.innerHTML='
'+(r.workOrderNumber.trim()?cityssm.escapeHTML(r.workOrderNumber||""):"(No Number)")+""+cityssm.escapeHTML(r.workOrderType||"")+'
'+cityssm.escapeHTML(r.workOrderDescription||"")+'
'+s+' '+r.workOrderOpenDateString+'
'+(r.workOrderCloseDate?r.workOrderCloseDateString:'(No '+e.escapedAliases.WorkOrderCloseDate+")")+"
"+(0===r.workOrderMilestoneCount?"-":r.workOrderMilestoneCompletionCount+" / "+r.workOrderMilestoneCount)+"
'+(t.length>0?'':"")+"
Work Order NumberDescriptionRelatedDateProgress
",r.insertAdjacentHTML("beforeend",e.getSearchResultsPagerHTML(a,s.offset,s.count)),r.querySelector("table").append(l),null===(o=r.querySelector("button[data-page='previous']"))||void 0===o||o.addEventListener("click",c),null===(i=r.querySelector("button[data-page='next']"))||void 0===i||i.addEventListener("click",d)}function l(){r.innerHTML=e.getLoadingParagraphHTML("Loading Work Orders..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doSearchWorkOrders",s,i)}function n(){o.value="0",l()}function c(){o.value=Math.max(Number.parseInt(o.value,10)-a,0).toString(),l()}function d(){o.value=(Number.parseInt(o.value,10)+a).toString(),l()}const p=s.querySelectorAll("input, select");for(const e of p)e.addEventListener("change",n);s.addEventListener("submit",e=>{e.preventDefault(),n()}),l()})(); \ No newline at end of file