centralize unsaved changes functions

deepsource-autofix-76c6eb20
Dan Gowans 2022-12-30 10:40:20 -05:00
parent b60ebf78cc
commit 774f9eddb6
12 changed files with 115 additions and 134 deletions

View File

@ -6,24 +6,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
const lotId = document.querySelector("#lot--lotId").value;
const isCreate = lotId === "";
// Main form
let hasUnsavedChanges = false;
let refreshAfterSave = isCreate;
const setUnsavedChanges = () => {
if (!hasUnsavedChanges) {
hasUnsavedChanges = true;
cityssm.enableNavBlocker();
}
};
const clearUnsavedChanges = () => {
hasUnsavedChanges = false;
cityssm.disableNavBlocker();
};
const formElement = document.querySelector("#form--lot");
const updateLot = (formEvent) => {
function updateLot(formEvent) {
formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + "/lots/" + (isCreate ? "doCreateLot" : "doUpdateLot"), formElement, (responseJSON) => {
if (responseJSON.success) {
clearUnsavedChanges();
los.clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
window.location.href =
los.urlPrefix + "/lots/" + responseJSON.lotId + "/edit?t=" + Date.now();
@ -43,11 +32,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
});
};
}
formElement.addEventListener("submit", updateLot);
const formInputElements = formElement.querySelectorAll("input, select");
for (const formInputElement of formInputElements) {
formInputElement.addEventListener("change", setUnsavedChanges);
formInputElement.addEventListener("change", los.setUnsavedChanges);
}
los.initializeUnlockFieldButtons(formElement);
if (!isCreate) {
@ -195,7 +184,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
// Comments
let lotComments = exports.lotComments;
delete exports.lotComments;
const openEditLotComment = (clickEvent) => {
function openEditLotComment(clickEvent) {
const lotCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotCommentId, 10);
const lotComment = lotComments.find((currentLotComment) => {
return currentLotComment.lotCommentId === lotCommentId;
@ -248,8 +237,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
bulmaJS.toggleHtmlClipped();
}
});
};
const deleteLotComment = (clickEvent) => {
}
function deleteLotComment(clickEvent) {
const lotCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotCommentId, 10);
const doDelete = () => {
cityssm.postJSON(los.urlPrefix + "/lots/doDeleteLotComment", {
@ -278,8 +267,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
},
contextualColorName: "warning"
});
};
const renderLotComments = () => {
}
function renderLotComments() {
const containerElement = document.querySelector("#container--lotComments");
if (lotComments.length === 0) {
containerElement.innerHTML =
@ -329,8 +318,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
containerElement.innerHTML = "";
containerElement.append(tableElement);
};
const openAddCommentModal = () => {
}
function openAddCommentModal() {
let addCommentCloseModalFunction;
const doAddComment = (formEvent) => {
formEvent.preventDefault();
@ -359,7 +348,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
document.querySelector("#lotComments--add").focus();
}
});
};
}
if (!isCreate) {
document.querySelector("#lotComments--add").addEventListener("click", openAddCommentModal);
renderLotComments();

View File

@ -18,24 +18,11 @@ declare const bulmaJS: BulmaJS;
// Main form
let hasUnsavedChanges = false;
let refreshAfterSave = isCreate;
const setUnsavedChanges = () => {
if (!hasUnsavedChanges) {
hasUnsavedChanges = true;
cityssm.enableNavBlocker();
}
};
const clearUnsavedChanges = () => {
hasUnsavedChanges = false;
cityssm.disableNavBlocker();
};
const formElement = document.querySelector("#form--lot") as HTMLFormElement;
const updateLot = (formEvent: SubmitEvent) => {
function updateLot(formEvent: SubmitEvent) {
formEvent.preventDefault();
cityssm.postJSON(
@ -43,7 +30,7 @@ declare const bulmaJS: BulmaJS;
formElement,
(responseJSON: { success: boolean; lotId?: number; errorMessage?: string }) => {
if (responseJSON.success) {
clearUnsavedChanges();
los.clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
window.location.href =
@ -63,14 +50,14 @@ declare const bulmaJS: BulmaJS;
}
}
);
};
}
formElement.addEventListener("submit", updateLot);
const formInputElements = formElement.querySelectorAll("input, select");
for (const formInputElement of formInputElements) {
formInputElement.addEventListener("change", setUnsavedChanges);
formInputElement.addEventListener("change", los.setUnsavedChanges);
}
los.initializeUnlockFieldButtons(formElement);
@ -275,7 +262,7 @@ declare const bulmaJS: BulmaJS;
let lotComments: recordTypes.LotComment[] = exports.lotComments;
delete exports.lotComments;
const openEditLotComment = (clickEvent: Event) => {
function openEditLotComment(clickEvent: Event) {
const lotCommentId = Number.parseInt(
(clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.lotCommentId!,
10
@ -352,7 +339,6 @@ declare const bulmaJS: BulmaJS;
los.initializeDatePickers(modalElement);
// los.initializeTimePickers(modalElement);
(
modalElement.querySelector("#lotCommentEdit--lotComment") as HTMLTextAreaElement
).focus();
@ -366,9 +352,9 @@ declare const bulmaJS: BulmaJS;
bulmaJS.toggleHtmlClipped();
}
});
};
}
const deleteLotComment = (clickEvent: Event) => {
function deleteLotComment(clickEvent: Event) {
const lotCommentId = Number.parseInt(
(clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.lotCommentId!,
10
@ -409,9 +395,9 @@ declare const bulmaJS: BulmaJS;
},
contextualColorName: "warning"
});
};
}
const renderLotComments = () => {
function renderLotComments() {
const containerElement = document.querySelector("#container--lotComments") as HTMLElement;
if (lotComments.length === 0) {
@ -474,9 +460,9 @@ declare const bulmaJS: BulmaJS;
containerElement.innerHTML = "";
containerElement.append(tableElement);
};
}
const openAddCommentModal = () => {
function openAddCommentModal() {
let addCommentCloseModalFunction: () => void;
const doAddComment = (formEvent: SubmitEvent) => {
@ -514,7 +500,7 @@ declare const bulmaJS: BulmaJS;
(document.querySelector("#lotComments--add") as HTMLButtonElement).focus();
}
});
};
}
if (!isCreate) {
(document.querySelector("#lotComments--add") as HTMLButtonElement).addEventListener(

View File

@ -9,18 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
/*
* Main form
*/
let hasUnsavedChanges = false;
let refreshAfterSave = isCreate;
const setUnsavedChanges = () => {
if (!hasUnsavedChanges) {
hasUnsavedChanges = true;
cityssm.enableNavBlocker();
}
};
const clearUnsavedChanges = () => {
hasUnsavedChanges = false;
cityssm.disableNavBlocker();
};
const formElement = document.querySelector("#form--lotOccupancy");
formElement.addEventListener("submit", (formEvent) => {
formEvent.preventDefault();
@ -28,7 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
"/lotOccupancies/" +
(isCreate ? "doCreateLotOccupancy" : "doUpdateLotOccupancy"), formElement, (responseJSON) => {
if (responseJSON.success) {
clearUnsavedChanges();
los.clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
window.location.href =
los.urlPrefix +
@ -55,7 +44,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
const formInputElements = formElement.querySelectorAll("input, select");
for (const formInputElement of formInputElements) {
formInputElement.addEventListener("change", setUnsavedChanges);
formInputElement.addEventListener("change", los.setUnsavedChanges);
}
if (!isCreate) {
const doCopy = () => {
@ -83,7 +72,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
(_a = document
.querySelector("#button--copyLotOccupancy")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", (clickEvent) => {
clickEvent.preventDefault();
if (hasUnsavedChanges) {
if (los.hasUnsavedChanges()) {
bulmaJS.alert({
title: "Unsaved Changes",
message: "Please save all unsaved changes before continuing.",
@ -312,7 +301,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
document.querySelector("#lotOccupancy--lotId").value =
lotId.toString();
document.querySelector("#lotOccupancy--lotName").value = lotName;
setUnsavedChanges();
los.setUnsavedChanges();
lotSelectCloseModalFunction();
};
const selectExistingLot = (clickEvent) => {
@ -468,7 +457,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else {
lotNameElement.value = "(No " + exports.aliases.lot + ")";
document.querySelector("#lotOccupancy--lotId").value = "";
setUnsavedChanges();
los.setUnsavedChanges();
}
});
// Start Date

View File

@ -9,18 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
/*
* Main form
*/
let hasUnsavedChanges = false;
let refreshAfterSave = isCreate;
const setUnsavedChanges = () => {
if (!hasUnsavedChanges) {
hasUnsavedChanges = true;
cityssm.enableNavBlocker();
}
};
const clearUnsavedChanges = () => {
hasUnsavedChanges = false;
cityssm.disableNavBlocker();
};
const formElement = document.querySelector("#form--lotOccupancy");
formElement.addEventListener("submit", (formEvent) => {
formEvent.preventDefault();
@ -28,7 +17,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
"/lotOccupancies/" +
(isCreate ? "doCreateLotOccupancy" : "doUpdateLotOccupancy"), formElement, (responseJSON) => {
if (responseJSON.success) {
clearUnsavedChanges();
los.clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
window.location.href =
los.urlPrefix +
@ -55,7 +44,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
const formInputElements = formElement.querySelectorAll("input, select");
for (const formInputElement of formInputElements) {
formInputElement.addEventListener("change", setUnsavedChanges);
formInputElement.addEventListener("change", los.setUnsavedChanges);
}
if (!isCreate) {
const doCopy = () => {
@ -83,7 +72,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
(_a = document
.querySelector("#button--copyLotOccupancy")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", (clickEvent) => {
clickEvent.preventDefault();
if (hasUnsavedChanges) {
if (los.hasUnsavedChanges()) {
bulmaJS.alert({
title: "Unsaved Changes",
message: "Please save all unsaved changes before continuing.",
@ -312,7 +301,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
document.querySelector("#lotOccupancy--lotId").value =
lotId.toString();
document.querySelector("#lotOccupancy--lotName").value = lotName;
setUnsavedChanges();
los.setUnsavedChanges();
lotSelectCloseModalFunction();
};
const selectExistingLot = (clickEvent) => {
@ -468,7 +457,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
else {
lotNameElement.value = "(No " + exports.aliases.lot + ")";
document.querySelector("#lotOccupancy--lotId").value = "";
setUnsavedChanges();
los.setUnsavedChanges();
}
});
// Start Date

View File

@ -22,21 +22,8 @@ declare const bulmaJS: BulmaJS;
* Main form
*/
let hasUnsavedChanges = false;
let refreshAfterSave = isCreate;
const setUnsavedChanges = () => {
if (!hasUnsavedChanges) {
hasUnsavedChanges = true;
cityssm.enableNavBlocker();
}
};
const clearUnsavedChanges = () => {
hasUnsavedChanges = false;
cityssm.disableNavBlocker();
};
const formElement = document.querySelector("#form--lotOccupancy") as HTMLFormElement;
formElement.addEventListener("submit", (formEvent) => {
@ -53,7 +40,7 @@ declare const bulmaJS: BulmaJS;
errorMessage?: string;
}) => {
if (responseJSON.success) {
clearUnsavedChanges();
los.clearUnsavedChanges();
if (isCreate || refreshAfterSave) {
window.location.href =
@ -82,7 +69,7 @@ declare const bulmaJS: BulmaJS;
const formInputElements = formElement.querySelectorAll("input, select");
for (const formInputElement of formInputElements) {
formInputElement.addEventListener("change", setUnsavedChanges);
formInputElement.addEventListener("change", los.setUnsavedChanges);
}
if (!isCreate) {
@ -120,7 +107,7 @@ declare const bulmaJS: BulmaJS;
?.addEventListener("click", (clickEvent) => {
clickEvent.preventDefault();
if (hasUnsavedChanges) {
if (los.hasUnsavedChanges()) {
bulmaJS.alert({
title: "Unsaved Changes",
message: "Please save all unsaved changes before continuing.",
@ -440,7 +427,7 @@ declare const bulmaJS: BulmaJS;
lotId.toString();
(document.querySelector("#lotOccupancy--lotName") as HTMLInputElement).value = lotName;
setUnsavedChanges();
los.setUnsavedChanges();
lotSelectCloseModalFunction();
};
@ -672,7 +659,7 @@ declare const bulmaJS: BulmaJS;
} else {
lotNameElement.value = "(No " + exports.aliases.lot + ")";
(document.querySelector("#lotOccupancy--lotId") as HTMLInputElement).value = "";
setUnsavedChanges();
los.setUnsavedChanges();
}
}
);

View File

@ -2,7 +2,21 @@
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
Object.defineProperty(exports, "__esModule", { value: true });
(() => {
const highlightMap = (mapContainerElement, mapKey, contextualClass) => {
let _hasUnsavedChanges = false;
function setUnsavedChanges() {
if (!hasUnsavedChanges()) {
_hasUnsavedChanges = true;
cityssm.enableNavBlocker();
}
}
function clearUnsavedChanges() {
_hasUnsavedChanges = false;
cityssm.disableNavBlocker();
}
function hasUnsavedChanges() {
return _hasUnsavedChanges;
}
function highlightMap(mapContainerElement, mapKey, contextualClass) {
// Search for ID
let svgId = mapKey;
let svgElementToHighlight;
@ -24,8 +38,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
pathElement.style.fill = "";
}
}
};
const unlockField = (clickEvent) => {
}
function unlockField(clickEvent) {
const fieldElement = clickEvent.currentTarget.closest(".field");
const inputOrSelectElement = fieldElement.querySelector("input, select");
inputOrSelectElement.classList.remove("is-readonly");
@ -40,13 +54,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
}
inputOrSelectElement.focus();
};
const initializeUnlockFieldButtons = (containerElement) => {
}
function initializeUnlockFieldButtons(containerElement) {
const unlockFieldButtonElements = containerElement.querySelectorAll(".is-unlock-field-button");
for (const unlockFieldButtonElement of unlockFieldButtonElements) {
unlockFieldButtonElement.addEventListener("click", unlockField);
}
};
}
const datePickerBaseOptions = {
type: "date",
dateFormat: "yyyy-MM-dd",
@ -54,7 +68,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
color: "info",
displayMode: "dialog"
};
const initializeDatePickers = (containerElement) => {
function initializeDatePickers(containerElement) {
const dateElements = containerElement.querySelectorAll("input[type='date']");
for (const dateElement of dateElements) {
const datePickerOptions = Object.assign({}, datePickerBaseOptions);
@ -111,7 +125,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
labelElement.textContent;
}
}
};
}
/*
const timePickerBaseOptions: BulmaCalendarOptions = {
type: "time",
@ -184,7 +198,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
};
*/
const populateAliases = (containerElement) => {
function populateAliases(containerElement) {
const aliasElements = containerElement.querySelectorAll(".alias");
for (const aliasElement of aliasElements) {
switch (aliasElement.dataset.alias) {
@ -222,7 +236,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
}
}
};
}
const escapedAliases = Object.freeze({
Map: cityssm.escapeHTML(exports.aliases.map),
map: cityssm.escapeHTML(exports.aliases.map.toLowerCase()),
@ -249,7 +263,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
const hues = ["red", "green", "orange", "blue", "pink", "yellow", "purple"];
const luminosity = ["bright", "light", "dark"];
const getRandomColor = (seedString) => {
function getRandomColor(seedString) {
let actualSeedString = seedString;
if (actualSeedString.length < 2) {
actualSeedString = actualSeedString + "a1";
@ -259,7 +273,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
hue: hues[actualSeedString.codePointAt(actualSeedString.length - 1) % hues.length],
luminosity: luminosity[actualSeedString.codePointAt(actualSeedString.length - 2) % luminosity.length]
});
};
}
const los = {
urlPrefix: document.querySelector("main").dataset.urlPrefix,
apiKey: document.querySelector("main").dataset.apiKey,
@ -269,7 +283,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
// initializeTimePickers,
populateAliases,
escapedAliases,
getRandomColor
getRandomColor,
setUnsavedChanges,
clearUnsavedChanges,
hasUnsavedChanges
};
exports.los = los;
})();

View File

@ -9,13 +9,30 @@ declare const cityssm: cityssmGlobal;
declare const bulmaJS: BulmaJS;
(() => {
const highlightMap = (
let _hasUnsavedChanges = false;
function setUnsavedChanges() {
if (!hasUnsavedChanges()) {
_hasUnsavedChanges = true;
cityssm.enableNavBlocker();
}
}
function clearUnsavedChanges() {
_hasUnsavedChanges = false;
cityssm.disableNavBlocker();
}
function hasUnsavedChanges() {
return _hasUnsavedChanges;
}
function highlightMap(
mapContainerElement: HTMLElement,
mapKey: string,
contextualClass: "success" | "danger"
) => {
): void {
// Search for ID
let svgId = mapKey;
let svgElementToHighlight: SVGElement | null;
@ -42,9 +59,9 @@ declare const bulmaJS: BulmaJS;
pathElement.style.fill = "";
}
}
};
}
const unlockField = (clickEvent: Event) => {
function unlockField(clickEvent: Event): void {
const fieldElement = (clickEvent.currentTarget as HTMLElement).closest(".field")!;
const inputOrSelectElement = fieldElement.querySelector("input, select") as
@ -64,16 +81,16 @@ declare const bulmaJS: BulmaJS;
}
inputOrSelectElement.focus();
};
}
const initializeUnlockFieldButtons = (containerElement: HTMLElement) => {
function initializeUnlockFieldButtons(containerElement: HTMLElement): void {
const unlockFieldButtonElements =
containerElement.querySelectorAll(".is-unlock-field-button");
for (const unlockFieldButtonElement of unlockFieldButtonElements) {
unlockFieldButtonElement.addEventListener("click", unlockField);
}
};
}
const datePickerBaseOptions: BulmaCalendarOptions = {
type: "date",
@ -83,7 +100,7 @@ declare const bulmaJS: BulmaJS;
displayMode: "dialog"
};
const initializeDatePickers = (containerElement: HTMLElement) => {
function initializeDatePickers(containerElement: HTMLElement): void {
const dateElements = containerElement.querySelectorAll(
"input[type='date']"
) as NodeListOf<HTMLInputElement>;
@ -124,11 +141,9 @@ declare const bulmaJS: BulmaJS;
});
// Get the datepicker container element
const datepickerElement = containerElement.querySelector("#" + cal._id) as HTMLElement;
// Override the previous and next month button styles
const datePickerNavButtonElements = datepickerElement.querySelectorAll(
".datepicker-nav button.is-text"
);
@ -139,7 +154,6 @@ declare const bulmaJS: BulmaJS;
}
// Override the clear button style
const clearButtonElement = datepickerElement.querySelector(
".datetimepicker-clear-button"
) as HTMLElement;
@ -156,7 +170,6 @@ declare const bulmaJS: BulmaJS;
}
// Apply a label
const labelElement = document.querySelector("label[for='" + dateElement.id + "']");
if (labelElement) {
@ -164,7 +177,7 @@ declare const bulmaJS: BulmaJS;
labelElement.textContent;
}
}
};
}
/*
const timePickerBaseOptions: BulmaCalendarOptions = {
@ -239,7 +252,7 @@ declare const bulmaJS: BulmaJS;
};
*/
const populateAliases = (containerElement: HTMLElement) => {
function populateAliases(containerElement: HTMLElement): void {
const aliasElements = containerElement.querySelectorAll(
".alias"
) as NodeListOf<HTMLElement>;
@ -280,7 +293,7 @@ declare const bulmaJS: BulmaJS;
}
}
}
};
}
const escapedAliases = Object.freeze({
Map: cityssm.escapeHTML(exports.aliases.map),
@ -319,7 +332,7 @@ declare const bulmaJS: BulmaJS;
const hues = ["red", "green", "orange", "blue", "pink", "yellow", "purple"];
const luminosity = ["bright", "light", "dark"];
const getRandomColor = (seedString: string) => {
function getRandomColor(seedString: string) {
let actualSeedString = seedString;
if (actualSeedString.length < 2) {
@ -334,7 +347,7 @@ declare const bulmaJS: BulmaJS;
actualSeedString.codePointAt(actualSeedString.length - 2)! % luminosity.length
]
});
};
}
const los: globalTypes.LOS = {
urlPrefix: document.querySelector("main")!.dataset.urlPrefix!,
@ -345,7 +358,11 @@ declare const bulmaJS: BulmaJS;
// initializeTimePickers,
populateAliases,
escapedAliases,
getRandomColor
getRandomColor,
setUnsavedChanges,
clearUnsavedChanges,
hasUnsavedChanges
};
exports.los = los;

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=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"},s=Object.freeze({Map:cityssm.escapeHTML(exports.aliases.map),map:cityssm.escapeHTML(exports.aliases.map.toLowerCase()),Lot:cityssm.escapeHTML(exports.aliases.lot),lot:cityssm.escapeHTML(exports.aliases.lot.toLowerCase()),Lots:cityssm.escapeHTML(exports.aliases.lots),lots:cityssm.escapeHTML(exports.aliases.lots.toLowerCase()),Occupancy:cityssm.escapeHTML(exports.aliases.occupancy),occupancy:cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase()),Occupancies:cityssm.escapeHTML(exports.aliases.occupancies),occupancies:cityssm.escapeHTML(exports.aliases.occupancies.toLowerCase()),Occupant:cityssm.escapeHTML(exports.aliases.occupant),occupant:cityssm.escapeHTML(exports.aliases.occupant.toLowerCase()),Occupants:cityssm.escapeHTML(exports.aliases.occupants),occupants:cityssm.escapeHTML(exports.aliases.occupants.toLowerCase()),ExternalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber),externalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber.toLowerCase()),OccupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate),occupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate.toLowerCase()),WorkOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate),workOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate.toLowerCase()),WorkOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate),workOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate.toLowerCase())}),a=["red","green","orange","blue","pink","yellow","purple"],o=["bright","light","dark"],c={urlPrefix:document.querySelector("main").dataset.urlPrefix,apiKey:document.querySelector("main").dataset.apiKey,highlightMap:(e,t,s)=>{let a,o=t;for(;!(a=e.querySelector("#"+o))&&o.includes("-");)o=o.slice(0,Math.max(0,o.lastIndexOf("-")));if(a){a.style.fill="",a.classList.add("highlight","is-"+s);const e=a.querySelectorAll("path");for(const t of e)t.style.fill=""}},initializeUnlockFieldButtons:t=>{const s=t.querySelectorAll(".is-unlock-field-button");for(const t of s)t.addEventListener("click",e)},initializeDatePickers:e=>{const s=e.querySelectorAll("input[type='date']");for(const a of s){const s=Object.assign({},t);a.required&&(s.showClearButton=!1),a.min&&(s.minDate=cityssm.dateStringToDate(a.min)),a.max&&(s.maxDate=cityssm.dateStringToDate(a.max));const o=exports.bulmaCalendar.attach(a,s)[0];o.on("save",()=>{a.value=o.value(),a.dispatchEvent(new Event("change"))}),o.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),o.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const c=e.querySelector("#"+o._id),r=c.querySelectorAll(".datepicker-nav button.is-text");for(const e of r)e.classList.add("is-"+t.color),e.classList.remove("is-text");const l=c.querySelector(".datetimepicker-clear-button");l&&(a.required?l.remove():(l.dataset.tooltip="Clear",l.ariaLabel="Clear",l.innerHTML='<span class="has-text-weight-bold" aria-hidden="true">&times;</span>'));const i=document.querySelector("label[for='"+a.id+"']");i&&(c.querySelector(".datetimepicker-dummy-input").ariaLabel=i.textContent)}},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}},escapedAliases:s,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:o[t.codePointAt(t.length-2)%o.length]})}};exports.los=c})();
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{let e=!1;function t(){return e}function s(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()}const a={type:"date",dateFormat:"yyyy-MM-dd",showFooter:!1,color:"info",displayMode:"dialog"};const o=Object.freeze({Map:cityssm.escapeHTML(exports.aliases.map),map:cityssm.escapeHTML(exports.aliases.map.toLowerCase()),Lot:cityssm.escapeHTML(exports.aliases.lot),lot:cityssm.escapeHTML(exports.aliases.lot.toLowerCase()),Lots:cityssm.escapeHTML(exports.aliases.lots),lots:cityssm.escapeHTML(exports.aliases.lots.toLowerCase()),Occupancy:cityssm.escapeHTML(exports.aliases.occupancy),occupancy:cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase()),Occupancies:cityssm.escapeHTML(exports.aliases.occupancies),occupancies:cityssm.escapeHTML(exports.aliases.occupancies.toLowerCase()),Occupant:cityssm.escapeHTML(exports.aliases.occupant),occupant:cityssm.escapeHTML(exports.aliases.occupant.toLowerCase()),Occupants:cityssm.escapeHTML(exports.aliases.occupants),occupants:cityssm.escapeHTML(exports.aliases.occupants.toLowerCase()),ExternalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber),externalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber.toLowerCase()),OccupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate),occupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate.toLowerCase()),WorkOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate),workOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate.toLowerCase()),WorkOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate),workOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate.toLowerCase())}),c=["red","green","orange","blue","pink","yellow","purple"],r=["bright","light","dark"];const i={urlPrefix:document.querySelector("main").dataset.urlPrefix,apiKey:document.querySelector("main").dataset.apiKey,highlightMap:function(e,t,s){let a,o=t;for(;!(a=e.querySelector("#"+o))&&o.includes("-");)o=o.slice(0,Math.max(0,o.lastIndexOf("-")));if(a){a.style.fill="",a.classList.add("highlight","is-"+s);const e=a.querySelectorAll("path");for(const t of e)t.style.fill=""}},initializeUnlockFieldButtons:function(e){const t=e.querySelectorAll(".is-unlock-field-button");for(const e of t)e.addEventListener("click",s)},initializeDatePickers:function(e){const t=e.querySelectorAll("input[type='date']");for(const s of t){const t=Object.assign({},a);s.required&&(t.showClearButton=!1),s.min&&(t.minDate=cityssm.dateStringToDate(s.min)),s.max&&(t.maxDate=cityssm.dateStringToDate(s.max));const o=exports.bulmaCalendar.attach(s,t)[0];o.on("save",()=>{s.value=o.value(),s.dispatchEvent(new Event("change"))}),o.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),o.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const c=e.querySelector("#"+o._id),r=c.querySelectorAll(".datepicker-nav button.is-text");for(const e of r)e.classList.add("is-"+a.color),e.classList.remove("is-text");const i=c.querySelector(".datetimepicker-clear-button");i&&(s.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='"+s.id+"']");n&&(c.querySelector(".datetimepicker-dummy-input").ariaLabel=n.textContent)}},populateAliases:function(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}},escapedAliases:o,getRandomColor:function(e){let t=e;return t.length<2&&(t+="a1"),exports.randomColor({seed:t+t,hue:c[t.codePointAt(t.length-1)%c.length],luminosity:r[t.codePointAt(t.length-2)%r.length]})},setUnsavedChanges:function(){t()||(e=!0,cityssm.enableNavBlocker())},clearUnsavedChanges:function(){e=!1,cityssm.disableNavBlocker()},hasUnsavedChanges:t};exports.los=i})();

View File

@ -30,4 +30,7 @@ export interface LOS {
workOrderCloseDate: string;
};
getRandomColor: (seedString: string) => string;
setUnsavedChanges: () => void;
clearUnsavedChanges: () => void;
hasUnsavedChanges: () => boolean;
}

View File

@ -41,4 +41,8 @@ export interface LOS {
};
getRandomColor: (seedString: string) => string;
setUnsavedChanges: () => void;
clearUnsavedChanges: () => void;
hasUnsavedChanges: () => boolean;
}