client side javascript null checks

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

View File

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

View File

@ -1,20 +1,23 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
(() => {
const urlPrefix = document.querySelector("main").dataset.urlPrefix;
const los = exports.los;
const doCleanup = () => {
cityssm.postJSON(urlPrefix + "/admin/doCleanupDatabase", {}, (responseJSON) => {
cityssm.postJSON(los.urlPrefix + "/admin/doCleanupDatabase", {}, (responseJSON) => {
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 {
bulmaJS.alert({
title: "Error Cleaning Database",
message: responseJSON.errorMessage,
message: responseJSON.errorMessage || "",
contextualColorName: "danger"
});
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
const los = exports.los;
const workOrderNumberCircleElements = document.querySelectorAll(".fa-circle[data-work-order-number");
for (const workOrderNumberCircleElement of workOrderNumberCircleElements) {
workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber);
workOrderNumberCircleElement.style.color = los.getRandomColor(workOrderNumberCircleElement.dataset.workOrderNumber || "");
}
})();

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=document.querySelector("main").dataset.urlPrefix,a=()=>{cityssm.postJSON(e+"/admin/doCleanupDatabase",{},e=>{e.success?bulmaJS.alert({title:"Database Cleaned Up Successfully",message:e.inactivedRecordCount+" records inactivated, "+e.purgedRecordCount+" permanently deleted.",contextualColorName:"success"}):bulmaJS.alert({title:"Error Cleaning Database",message:e.errorMessage,contextualColorName:"danger"})})};document.querySelector("#button--cleanupDatabase").addEventListener("click",()=>{bulmaJS.confirm({title:"Cleanup Database",message:"Are you sure you want to cleanup up the database?",okButton:{text:"Yes, Cleanup Database",callbackFunction:a}})})})();
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,a=()=>{cityssm.postJSON(e.urlPrefix+"/admin/doCleanupDatabase",{},e=>{e.success?bulmaJS.alert({title:"Database Cleaned Up Successfully",message:e.inactivedRecordCount+" records inactivated, "+e.purgedRecordCount+" permanently deleted.",contextualColorName:"success"}):bulmaJS.alert({title:"Error Cleaning Database",message:e.errorMessage||"",contextualColorName:"danger"})})};document.querySelector("#button--cleanupDatabase").addEventListener("click",()=>{bulmaJS.confirm({title:"Cleanup Database",message:"Are you sure you want to cleanup up the database?",okButton:{text:"Yes, Cleanup Database",callbackFunction:a}})})})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because one or more lines are too long

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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