- increase prettier line length
- more template strings
- use optional chaining on search pages to reduce if statements
deepsource-autofix-76c6eb20
Dan Gowans 2023-01-05 09:56:46 -05:00
parent 27b6fe2706
commit f5f10a5d76
19 changed files with 254 additions and 438 deletions

View File

@ -3,5 +3,5 @@
"tabWidth": 4,
"semi": true,
"singleQuote": false,
"printWidth": 100
"printWidth": 110
}

View File

@ -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"
});
}

View File

@ -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 {

View File

@ -8,18 +8,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
delete exports.feeCategories;
function renderFeeCategories() {
if (feeCategories.length === 0) {
feeCategoriesContainerElement.innerHTML =
'<div class="message is-warning">' +
'<p class="message-body">There are no available fees.</p>' +
"</div>";
feeCategoriesContainerElement.innerHTML = `<div class="message is-warning">
<p class="message-body">There are no available fees.</p>
</div>`;
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 =
'<div class="panel-heading">' +
'<div class="columns">' +
@ -89,9 +87,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
"</p>" +
(hasTagsBlock
? '<p class="tags">' +
(fee.isRequired
? '<span class="tag is-warning">Required</span>'
: "") +
(fee.isRequired ? '<span class="tag is-warning">Required</span>' : "") +
(fee.occupancyTypeId
? ' <span class="tag has-tooltip-bottom" data-tooltip="' +
cityssm.escapeHTML(exports.aliases.occupancy) +
@ -116,10 +112,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
? cityssm.escapeHTML(fee.feeFunction) +
"<br />" +
"<small>Fee Function</small>"
: "$" +
fee.feeAmount.toFixed(2) +
"<br />" +
"<small>Fee</small>") +
: "$" + fee.feeAmount.toFixed(2) + "<br />" + "<small>Fee</small>") +
"</div>") +
('<div class="column has-text-centered">' +
(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"), {

View File

@ -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 =
'<div class="message is-warning">' +
'<p class="message-body">There are no available fees.</p>' +
"</div>";
feeCategoriesContainerElement.innerHTML = `<div class="message is-warning">
<p class="message-body">There are no available fees.</p>
</div>`;
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 =
'<div class="panel-heading">' +
@ -119,9 +115,7 @@ declare const bulmaJS: BulmaJS;
"</p>" +
(hasTagsBlock
? '<p class="tags">' +
(fee.isRequired
? '<span class="tag is-warning">Required</span>'
: "") +
(fee.isRequired ? '<span class="tag is-warning">Required</span>' : "") +
(fee.occupancyTypeId
? ' <span class="tag has-tooltip-bottom" data-tooltip="' +
cityssm.escapeHTML(exports.aliases.occupancy) +
@ -146,10 +140,7 @@ declare const bulmaJS: BulmaJS;
? cityssm.escapeHTML(fee.feeFunction) +
"<br />" +
"<small>Fee Function</small>"
: "$" +
fee.feeAmount!.toFixed(2) +
"<br />" +
"<small>Fee</small>") +
: "$" + fee.feeAmount!.toFixed(2) + "<br />" + "<small>Fee</small>") +
"</div>") +
('<div class="column has-text-centered">' +
(fee.taxPercentage
@ -167,10 +158,7 @@ declare const bulmaJS: BulmaJS;
"</div>" +
"</div>") +
('<div class="column is-narrow">' +
los.getMoveUpDownButtonFieldHTML(
"button--moveFeeUp",
"button--moveFeeDown"
) +
los.getMoveUpDownButtonFieldHTML("button--moveFeeUp", "button--moveFeeDown") +
"</div>" +
"</div>") +
"</div>";
@ -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 +

View File

@ -78,24 +78,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
const lotFieldsContainerElement = document.querySelector("#container--lotFields");
lotTypeIdElement.addEventListener("change", () => {
if (lotTypeIdElement.value === "") {
lotFieldsContainerElement.innerHTML =
'<div class="message is-info">' +
'<p class="message-body">Select the ' +
exports.aliases.lot.toLowerCase() +
" type to load the available fields.</p>" +
"</div>";
lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">Select the ${los.escapedAliases.lot} type to load the available fields.</p>
</div>`;
return;
}
cityssm.postJSON(los.urlPrefix + "/lots/doGetLotTypeFields", {
lotTypeId: lotTypeIdElement.value
}, (responseJSON) => {
if (responseJSON.lotTypeFields.length === 0) {
lotFieldsContainerElement.innerHTML =
'<div class="message is-info">' +
'<p class="message-body">There are no additional fields for this ' +
exports.aliases.lot.toLowerCase() +
" type.</p>" +
"</div>";
lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no additional fields for this ${los.escapedAliases.lot} type.</p>
</div>`;
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 =
'<label class="label" for="' +
fieldId +
'"></label>' +
'<div class="control"></div>';
fieldElement.innerHTML = `<label class="label" for="${fieldId}"></label>
<div class="control"></div>`;
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 =
'<div class="select is-fullwidth"><select id="' +
fieldId +
'" name="' +
fieldName +
'">' +
'<option value="">(Not Set)</option>' +
"</select></div>";
fieldElement.querySelector(".control").innerHTML = `<div class="select is-fullwidth">
<select id="${fieldId}" name="${fieldName}"><option value="">(Not Set)</option></select>
</div>`;
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", '<input name="lotTypeFieldIds" type="hidden" value="' +
lotTypeFieldIds.slice(1) +
'" />');
lotFieldsContainerElement.insertAdjacentHTML("beforeend", `<input name="lotTypeFieldIds" type="hidden"
value="${lotTypeFieldIds.slice(1)}" />`);
});
});
}
@ -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 =
'<div class="message is-info">' +
'<p class="message-body">There are no comments to display.</p>' +
"</div>";
containerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no comments to display.</p>
</div>`;
return;
}
const tableElement = document.createElement("table");
tableElement.className = "table is-fullwidth is-striped is-hoverable";
tableElement.innerHTML =
"<thead><tr>" +
"<th>Commentor</th>" +
"<th>Comment Date</th>" +
"<th>Comment</th>" +
'<th class="is-hidden-print"><span class="is-sr-only">Options</span></th>' +
"</tr></thead>" +
"<tbody></tbody>";
tableElement.innerHTML = `<thead><tr>
<th>Commentor</th>
<th>Comment Date</th>
<th>Comment</th>
<th class="is-hidden-print"><span class="is-sr-only">Options</span></th>
</tr></thead>
<tbody></tbody>`;
for (const lotComment of lotComments) {
const tableRowElement = document.createElement("tr");
tableRowElement.dataset.lotCommentId = lotComment.lotCommentId.toString();

View File

@ -113,12 +113,9 @@ declare const bulmaJS: BulmaJS;
lotTypeIdElement.addEventListener("change", () => {
if (lotTypeIdElement.value === "") {
lotFieldsContainerElement.innerHTML =
'<div class="message is-info">' +
'<p class="message-body">Select the ' +
exports.aliases.lot.toLowerCase() +
" type to load the available fields.</p>" +
"</div>";
lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">Select the ${los.escapedAliases.lot} type to load the available fields.</p>
</div>`;
return;
}
@ -130,12 +127,9 @@ declare const bulmaJS: BulmaJS;
},
(responseJSON: { lotTypeFields: recordTypes.LotTypeField[] }) => {
if (responseJSON.lotTypeFields.length === 0) {
lotFieldsContainerElement.innerHTML =
'<div class="message is-info">' +
'<p class="message-body">There are no additional fields for this ' +
exports.aliases.lot.toLowerCase() +
" type.</p>" +
"</div>";
lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no additional fields for this ${los.escapedAliases.lot} type.</p>
</div>`;
return;
}
@ -153,11 +147,8 @@ declare const bulmaJS: BulmaJS;
const fieldElement = document.createElement("div");
fieldElement.className = "field";
fieldElement.innerHTML =
'<label class="label" for="' +
fieldId +
'"></label>' +
'<div class="control"></div>';
fieldElement.innerHTML = `<label class="label" for="${fieldId}"></label>
<div class="control"></div>`;
(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 =
'<div class="select is-fullwidth"><select id="' +
fieldId +
'" name="' +
fieldName +
'">' +
'<option value="">(Not Set)</option>' +
"</select></div>";
fieldElement.querySelector(
".control"
)!.innerHTML = `<div class="select is-fullwidth">
<select id="${fieldId}" name="${fieldName}"><option value="">(Not Set)</option></select>
</div>`;
const selectElement = fieldElement.querySelector(
"select"
@ -217,9 +203,8 @@ declare const bulmaJS: BulmaJS;
lotFieldsContainerElement.insertAdjacentHTML(
"beforeend",
'<input name="lotTypeFieldIds" type="hidden" value="' +
lotTypeFieldIds.slice(1) +
'" />'
`<input name="lotTypeFieldIds" type="hidden"
value="${lotTypeFieldIds.slice(1)}" />`
);
}
);
@ -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 =
'<div class="message is-info">' +
'<p class="message-body">There are no comments to display.</p>' +
"</div>";
containerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no comments to display.</p>
</div>`;
return;
}
const tableElement = document.createElement("table");
tableElement.className = "table is-fullwidth is-striped is-hoverable";
tableElement.innerHTML =
"<thead><tr>" +
"<th>Commentor</th>" +
"<th>Comment Date</th>" +
"<th>Comment</th>" +
'<th class="is-hidden-print"><span class="is-sr-only">Options</span></th>' +
"</tr></thead>" +
"<tbody></tbody>";
tableElement.innerHTML = `<thead><tr>
<th>Commentor</th>
<th>Comment Date</th>
<th>Comment</th>
<th class="is-hidden-print"><span class="is-sr-only">Options</span></th>
</tr></thead>
<tbody></tbody>`;
for (const lotComment of lotComments) {
const tableRowElement = document.createElement("tr");

View File

@ -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 = `<div class="message is-info">
<p class="message-body">
@ -23,34 +24,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
if (lotOccupancy.occupancyStartDateString <= nowDateString &&
(lotOccupancy.occupancyEndDateString === "" ||
lotOccupancy.occupancyEndDateString >= nowDateString)) {
occupancyTimeHTML =
'<span class="has-tooltip-right" data-tooltip="Current ' +
los.escapedAliases.Occupancy +
'">' +
('<i class="fas fa-play" aria-label="Current ' +
los.escapedAliases.Occupancy +
'"></i>') +
"</span>";
occupancyTimeHTML = `<span class="has-tooltip-right" data-tooltip="Current ${los.escapedAliases.Occupancy}">
<i class="fas fa-play" aria-label="Current ${los.escapedAliases.Occupancy}"></i>
</span>`;
}
else if (lotOccupancy.occupancyStartDateString > nowDateString) {
occupancyTimeHTML =
'<span class="has-tooltip-right" data-tooltip="Future ' +
los.escapedAliases.Occupancy +
'">' +
('<i class="fas fa-fast-forward" aria-label="Future ' +
los.escapedAliases.Occupancy +
'"></i>') +
"</span>";
occupancyTimeHTML = `<span class="has-tooltip-right" data-tooltip="Future ${los.escapedAliases.Occupancy}">
<i class="fas fa-fast-forward" aria-label="Future ${los.escapedAliases.Occupancy}"></i>
</span>`;
}
else {
occupancyTimeHTML =
'<span class="has-tooltip-right" data-tooltip="Past ' +
los.escapedAliases.Occupancy +
'">' +
('<i class="fas fa-stop" aria-label="Past ' +
los.escapedAliases.Occupancy +
'"></i>') +
"</span>";
occupancyTimeHTML = `<span class="has-tooltip-right" data-tooltip="Past ${los.escapedAliases.Occupancy}">
<i class="fas fa-stop" aria-label="Past ${los.escapedAliases.Occupancy}"></i>
</span>`;
}
let occupantsHTML = "";
for (const occupant of lotOccupancy.lotOccupancyOccupants) {
@ -86,9 +72,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'">' +
cityssm.escapeHTML(lotOccupancy.lotName) +
"</a>"
: '<span class="has-text-grey">(No ' +
los.escapedAliases.Lot +
")</span>") +
: '<span class="has-text-grey">(No ' + los.escapedAliases.Lot + ")</span>") +
"<br />" +
('<span class="is-size-7">' +
cityssm.escapeHTML(lotOccupancy.mapName || "") +
@ -129,16 +113,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
<table>`;
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}...`);

View File

@ -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 =
'<span class="has-tooltip-right" data-tooltip="Current ' +
los.escapedAliases.Occupancy +
'">' +
('<i class="fas fa-play" aria-label="Current ' +
los.escapedAliases.Occupancy +
'"></i>') +
"</span>";
occupancyTimeHTML = `<span class="has-tooltip-right" data-tooltip="Current ${los.escapedAliases.Occupancy}">
<i class="fas fa-play" aria-label="Current ${los.escapedAliases.Occupancy}"></i>
</span>`;
} else if (lotOccupancy.occupancyStartDateString! > nowDateString) {
occupancyTimeHTML =
'<span class="has-tooltip-right" data-tooltip="Future ' +
los.escapedAliases.Occupancy +
'">' +
('<i class="fas fa-fast-forward" aria-label="Future ' +
los.escapedAliases.Occupancy +
'"></i>') +
"</span>";
occupancyTimeHTML = `<span class="has-tooltip-right" data-tooltip="Future ${los.escapedAliases.Occupancy}">
<i class="fas fa-fast-forward" aria-label="Future ${los.escapedAliases.Occupancy}"></i>
</span>`;
} else {
occupancyTimeHTML =
'<span class="has-tooltip-right" data-tooltip="Past ' +
los.escapedAliases.Occupancy +
'">' +
('<i class="fas fa-stop" aria-label="Past ' +
los.escapedAliases.Occupancy +
'"></i>') +
"</span>";
occupancyTimeHTML = `<span class="has-tooltip-right" data-tooltip="Past ${los.escapedAliases.Occupancy}">
<i class="fas fa-stop" aria-label="Past ${los.escapedAliases.Occupancy}"></i>
</span>`;
}
let occupantsHTML = "";
@ -117,9 +99,7 @@ declare const cityssm: cityssmGlobal;
'">' +
cityssm.escapeHTML(lotOccupancy.lotName) +
"</a>"
: '<span class="has-text-grey">(No ' +
los.escapedAliases.Lot +
")</span>") +
: '<span class="has-text-grey">(No ' + los.escapedAliases.Lot + ")</span>") +
"<br />" +
('<span class="is-size-7">' +
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();
}

View File

@ -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 =
'<div class="message is-info">' +
@ -62,16 +63,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
<table>`;
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}...`);

View File

@ -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 =
'<div class="message is-info">' +
@ -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();
}

View File

@ -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 =
'<div class="message is-info">' +
@ -65,9 +66,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
cityssm.escapeHTML(workOrder.workOrderDescription || "") +
"</span>" +
"</td>") +
('<td class="is-nowrap"><span class="is-size-7">' +
relatedHTML +
"</span></td>") +
('<td class="is-nowrap"><span class="is-size-7">' + relatedHTML + "</span></td>") +
('<td class="is-nowrap">' +
('<span class="has-tooltip-left" data-tooltip="' +
los.escapedAliases.WorkOrderOpenDate +
@ -125,20 +124,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
"<table>";
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() {

View File

@ -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 || "") +
"</span>" +
"</td>") +
('<td class="is-nowrap"><span class="is-size-7">' +
relatedHTML +
"</span></td>") +
('<td class="is-nowrap"><span class="is-size-7">' + relatedHTML + "</span></td>") +
('<td class="is-nowrap">' +
('<span class="has-tooltip-left" data-tooltip="' +
los.escapedAliases.WorkOrderOpenDate +
@ -164,22 +158,17 @@ declare const cityssm: cityssmGlobal;
searchResultsContainerElement.querySelector("table")!.append(resultsTbodyElement);
if (responseJSON.offset > 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();
}

View File

@ -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}})})})();
"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}})})})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=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=`<div class="message is-info">\n <p class="message-body">\n There are no ${t.escapedAliases.occupancy} records that meet the search criteria.\n </p>\n </div>`);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)?'<span class="has-tooltip-right" data-tooltip="Current '+t.escapedAliases.Occupancy+'"><i class="fas fa-play" aria-label="Current '+t.escapedAliases.Occupancy+'"></i></span>':a.occupancyStartDateString>n?'<span class="has-tooltip-right" data-tooltip="Future '+t.escapedAliases.Occupancy+'"><i class="fas fa-fast-forward" aria-label="Future '+t.escapedAliases.Occupancy+'"></i></span>':'<span class="has-tooltip-right" data-tooltip="Past '+t.escapedAliases.Occupancy+'"><i class="fas fa-stop" aria-label="Past '+t.escapedAliases.Occupancy+'"></i></span>';let s="";for(const t of a.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.lotOccupantType||"")+'"><i class="fas fa-fw fa-'+cityssm.escapeHTML(t.fontAwesomeIconClass||"user")+'" aria-hidden="true"></i> '+cityssm.escapeHTML(t.occupantName||"")+"</span><br />";c.insertAdjacentHTML("beforeend",'<tr><td class="has-width-1">'+e+'</td><td><a class="has-text-weight-bold" href="'+t.urlPrefix+"/lotOccupancies/"+a.lotOccupancyId+'">'+cityssm.escapeHTML(a.occupancyType)+"</a></td><td>"+(a.lotName?'<a class="has-tooltip-right" data-tooltip="'+cityssm.escapeHTML(a.lotType||"")+'" href="'+t.urlPrefix+"/lots/"+a.lotId+'">'+cityssm.escapeHTML(a.lotName)+"</a>":'<span class="has-text-grey">(No '+t.escapedAliases.Lot+")</span>")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(a.mapName||"")+"</span></td><td>"+a.occupancyStartDateString+"</td><td>"+(a.occupancyEndDate?a.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>')+"</td><td>"+s+"</td><td>"+(a.printEJS?'<a class="button is-small" data-tooltip="Print" href="'+t.urlPrefix+"/print/"+a.printEJS+"/?lotOccupancyId="+a.lotOccupancyId+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a>':"")+"</td></tr>")}a.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">\n <thead><tr>\n <th class="has-width-1"></th>\n <th>${t.escapedAliases.Occupancy} Type</th>\n <th>${t.escapedAliases.Lot}</th>\n <th>${t.escapedAliases.OccupancyStartDate}</th>\n <th>End Date</th>\n <th>${t.escapedAliases.Occupants}</th>\n <th class="has-width-1"><span class="is-sr-only">Print</span></th>\n </tr></thead>\n <table>`,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<e.count&&a.querySelector("button[data-page='next']").addEventListener("click",l)}function r(){a.innerHTML=t.getLoadingParagraphHTML(`Loading ${exports.aliases.occupancies}...`),cityssm.postJSON(t.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,n)}function i(){c.value="0",r()}function o(){c.value=Math.max(Number.parseInt(c.value,10)-s,0).toString(),r()}function l(){c.value=(Number.parseInt(c.value,10)+s).toString(),r()}const p=e.querySelectorAll("input, select");for(const t of p)t.addEventListener("change",i);e.addEventListener("submit",t=>{t.preventDefault(),i()}),r()})();
"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=`<div class="message is-info">\n <p class="message-body">\n There are no ${t.escapedAliases.occupancy} records that meet the search criteria.\n </p>\n </div>`);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)?`<span class="has-tooltip-right" data-tooltip="Current ${t.escapedAliases.Occupancy}">\n <i class="fas fa-play" aria-label="Current ${t.escapedAliases.Occupancy}"></i>\n </span>`:a.occupancyStartDateString>r?`<span class="has-tooltip-right" data-tooltip="Future ${t.escapedAliases.Occupancy}">\n <i class="fas fa-fast-forward" aria-label="Future ${t.escapedAliases.Occupancy}"></i>\n </span>`:`<span class="has-tooltip-right" data-tooltip="Past ${t.escapedAliases.Occupancy}">\n <i class="fas fa-stop" aria-label="Past ${t.escapedAliases.Occupancy}"></i>\n </span>`;let s="";for(const t of a.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.lotOccupantType||"")+'"><i class="fas fa-fw fa-'+cityssm.escapeHTML(t.fontAwesomeIconClass||"user")+'" aria-hidden="true"></i> '+cityssm.escapeHTML(t.occupantName||"")+"</span><br />";i.insertAdjacentHTML("beforeend",'<tr><td class="has-width-1">'+e+'</td><td><a class="has-text-weight-bold" href="'+t.urlPrefix+"/lotOccupancies/"+a.lotOccupancyId+'">'+cityssm.escapeHTML(a.occupancyType)+"</a></td><td>"+(a.lotName?'<a class="has-tooltip-right" data-tooltip="'+cityssm.escapeHTML(a.lotType||"")+'" href="'+t.urlPrefix+"/lots/"+a.lotId+'">'+cityssm.escapeHTML(a.lotName)+"</a>":'<span class="has-text-grey">(No '+t.escapedAliases.Lot+")</span>")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(a.mapName||"")+"</span></td><td>"+a.occupancyStartDateString+"</td><td>"+(a.occupancyEndDate?a.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>')+"</td><td>"+s+"</td><td>"+(a.printEJS?'<a class="button is-small" data-tooltip="Print" href="'+t.urlPrefix+"/print/"+a.printEJS+"/?lotOccupancyId="+a.lotOccupancyId+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a>':"")+"</td></tr>")}a.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">\n <thead><tr>\n <th class="has-width-1"></th>\n <th>${t.escapedAliases.Occupancy} Type</th>\n <th>${t.escapedAliases.Lot}</th>\n <th>${t.escapedAliases.OccupancyStartDate}</th>\n <th>End Date</th>\n <th>${t.escapedAliases.Occupants}</th>\n <th class="has-width-1"><span class="is-sr-only">Print</span></th>\n </tr></thead>\n <table>`,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()})();

View File

@ -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='<div class="message is-info"><p class="message-body">There are no '+e.escapedAliases.lots+" that meet the search criteria.</p></div>");const r=document.createElement("tbody");for(const s of t.lots)r.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/lots/"+s.lotId+'">'+cityssm.escapeHTML(s.lotName||"")+'</a></td><td><a href="'+e.urlPrefix+"/maps/"+s.mapId+'">'+(s.mapName?cityssm.escapeHTML(s.mapName):'<span class="has-text-grey">(No Name)</span>')+"</a></td><td>"+cityssm.escapeHTML(s.lotType||"")+"</td><td>"+(s.lotStatusId?cityssm.escapeHTML(s.lotStatus||""):'<span class="has-text-grey">(No Status)</span>')+"<br />"+(s.lotOccupancyCount>0?'<span class="is-size-7">Currently Occupied</span>':"")+"</td></tr>");s.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">\n <thead><tr>\n <th>${e.escapedAliases.Lot}</th>\n <th>${e.escapedAliases.Map}</th>\n <th>${e.escapedAliases.Lot} Type</th>\n <th>Status</th>\n </tr></thead>\n <table>`,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<t.count&&s.querySelector("button[data-page='next']").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()})();
"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='<div class="message is-info"><p class="message-body">There are no '+e.escapedAliases.lots+" that meet the search criteria.</p></div>");const o=document.createElement("tbody");for(const s of t.lots)o.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/lots/"+s.lotId+'">'+cityssm.escapeHTML(s.lotName||"")+'</a></td><td><a href="'+e.urlPrefix+"/maps/"+s.mapId+'">'+(s.mapName?cityssm.escapeHTML(s.mapName):'<span class="has-text-grey">(No Name)</span>')+"</a></td><td>"+cityssm.escapeHTML(s.lotType||"")+"</td><td>"+(s.lotStatusId?cityssm.escapeHTML(s.lotStatus||""):'<span class="has-text-grey">(No Status)</span>')+"<br />"+(s.lotOccupancyCount>0?'<span class="is-size-7">Currently Occupied</span>':"")+"</td></tr>");s.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">\n <thead><tr>\n <th>${e.escapedAliases.Lot}</th>\n <th>${e.escapedAliases.Map}</th>\n <th>${e.escapedAliases.Lot} Type</th>\n <th>Status</th>\n </tr></thead>\n <table>`,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()})();

View File

@ -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='<div class="message is-info"><p class="message-body">There are no work orders that meet the search criteria.</p></div>');const o=document.createElement("tbody");for(const r of s.workOrders){let s="";for(const t of r.workOrderLots)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.mapName||"")+'"><i class="fas fa-fw fa-vector-square" aria-label="'+e.escapedAliases.Lot+'"></i> '+cityssm.escapeHTML(t.lotName||"(No "+exports.aliases.Lot+" Name)")+"</span><br />";for(const t of r.workOrderLotOccupancies)for(const r of t.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(r.lotOccupantType||"")+'"><i class="fas fa-fw fa-'+cityssm.escapeHTML(r.fontAwesomeIconClass||"user")+'" aria-label="'+e.escapedAliases.occupant+'"></i> '+cityssm.escapeHTML(r.occupantName||"(No Name)")+"</span><br />";o.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/workOrders/"+r.workOrderId+'">'+(r.workOrderNumber.trim()?cityssm.escapeHTML(r.workOrderNumber||""):"(No Number)")+"</a></td><td>"+cityssm.escapeHTML(r.workOrderType||"")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(r.workOrderDescription||"")+'</span></td><td class="is-nowrap"><span class="is-size-7">'+s+'</span></td><td class="is-nowrap"><span class="has-tooltip-left" data-tooltip="'+e.escapedAliases.WorkOrderOpenDate+'"><i class="fas fa-fw fa-play" aria-label="'+e.escapedAliases.WorkOrderOpenDate+'"></i> '+r.workOrderOpenDateString+'</span><br /><span class="has-tooltip-left" data-tooltip="'+e.escapedAliases.WorkOrderCloseDate+'"><i class="fas fa-fw fa-stop" aria-label="'+e.escapedAliases.WorkOrderCloseDate+'"></i> '+(r.workOrderCloseDate?r.workOrderCloseDateString:'<span class="has-text-grey">(No '+e.escapedAliases.WorkOrderCloseDate+")</span>")+"</span></td><td>"+(0===r.workOrderMilestoneCount?"-":r.workOrderMilestoneCompletionCount+" / "+r.workOrderMilestoneCount)+"</td>"+(t.length>0?'<td><a class="button is-small" data-tooltip="Print" href="'+e.urlPrefix+"/print/"+t[0]+"/?workOrderId="+r.workOrderId+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a></td>':"")+"</tr>")}r.innerHTML='<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"><thead><tr><th>Work Order Number</th><th>Description</th><th>Related</th><th>Date</th><th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>'+(t.length>0?'<th class="has-width-1"></th>':"")+"</tr></thead><table>",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<s.count&&r.querySelector("button[data-page='next']").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()})();
"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='<div class="message is-info"><p class="message-body">There are no work orders that meet the search criteria.</p></div>');const l=document.createElement("tbody");for(const r of s.workOrders){let s="";for(const t of r.workOrderLots)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.mapName||"")+'"><i class="fas fa-fw fa-vector-square" aria-label="'+e.escapedAliases.Lot+'"></i> '+cityssm.escapeHTML(t.lotName||"(No "+exports.aliases.Lot+" Name)")+"</span><br />";for(const t of r.workOrderLotOccupancies)for(const r of t.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(r.lotOccupantType||"")+'"><i class="fas fa-fw fa-'+cityssm.escapeHTML(r.fontAwesomeIconClass||"user")+'" aria-label="'+e.escapedAliases.occupant+'"></i> '+cityssm.escapeHTML(r.occupantName||"(No Name)")+"</span><br />";l.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/workOrders/"+r.workOrderId+'">'+(r.workOrderNumber.trim()?cityssm.escapeHTML(r.workOrderNumber||""):"(No Number)")+"</a></td><td>"+cityssm.escapeHTML(r.workOrderType||"")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(r.workOrderDescription||"")+'</span></td><td class="is-nowrap"><span class="is-size-7">'+s+'</span></td><td class="is-nowrap"><span class="has-tooltip-left" data-tooltip="'+e.escapedAliases.WorkOrderOpenDate+'"><i class="fas fa-fw fa-play" aria-label="'+e.escapedAliases.WorkOrderOpenDate+'"></i> '+r.workOrderOpenDateString+'</span><br /><span class="has-tooltip-left" data-tooltip="'+e.escapedAliases.WorkOrderCloseDate+'"><i class="fas fa-fw fa-stop" aria-label="'+e.escapedAliases.WorkOrderCloseDate+'"></i> '+(r.workOrderCloseDate?r.workOrderCloseDateString:'<span class="has-text-grey">(No '+e.escapedAliases.WorkOrderCloseDate+")</span>")+"</span></td><td>"+(0===r.workOrderMilestoneCount?"-":r.workOrderMilestoneCompletionCount+" / "+r.workOrderMilestoneCount)+"</td>"+(t.length>0?'<td><a class="button is-small" data-tooltip="Print" href="'+e.urlPrefix+"/print/"+t[0]+"/?workOrderId="+r.workOrderId+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a></td>':"")+"</tr>")}r.innerHTML='<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"><thead><tr><th>Work Order Number</th><th>Description</th><th>Related</th><th>Date</th><th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>'+(t.length>0?'<th class="has-width-1"></th>':"")+"</tr></thead><table>",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()})();