From 2fbfa5963e41402054e750eea98596e5a1e11cf4 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Tue, 25 Jun 2024 14:30:13 -0400 Subject: [PATCH] code cleanup --- public-typescript/adminOccupancyTypes.js | 451 ++++++++------- public-typescript/adminOccupancyTypes.ts | 537 +++++++++--------- public-typescript/workOrderEdit.js | 7 +- .../workOrderEdit/workOrderEdit.js | 7 +- .../workOrderEdit/workOrderEdit.ts | 4 +- public/javascripts/adminOccupancyTypes.min.js | 2 +- public/javascripts/workOrderEdit.min.js | 2 +- 7 files changed, 503 insertions(+), 507 deletions(-) diff --git a/public-typescript/adminOccupancyTypes.js b/public-typescript/adminOccupancyTypes.js index 2285a347..e7819e41 100644 --- a/public-typescript/adminOccupancyTypes.js +++ b/public-typescript/adminOccupancyTypes.js @@ -1,7 +1,9 @@ "use strict"; -/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */ +// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair +/* eslint-disable unicorn/prefer-module */ Object.defineProperty(exports, "__esModule", { value: true }); (() => { + var _a; const los = exports.los; const occupancyTypesContainerElement = document.querySelector('#container--occupancyTypes'); const occupancyTypePrintsContainerElement = document.querySelector('#container--occupancyTypePrints'); @@ -11,15 +13,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); delete exports.allOccupancyTypeFields; const expandedOccupancyTypes = new Set(); function toggleOccupancyTypeFields(clickEvent) { + var _a; const toggleButtonElement = clickEvent.currentTarget; const occupancyTypeElement = toggleButtonElement.closest('.container--occupancyType'); - const occupancyTypeId = Number.parseInt(occupancyTypeElement.dataset.occupancyTypeId, 10); + const occupancyTypeId = Number.parseInt((_a = occupancyTypeElement.dataset.occupancyTypeId) !== null && _a !== void 0 ? _a : '', 10); if (expandedOccupancyTypes.has(occupancyTypeId)) { expandedOccupancyTypes.delete(occupancyTypeId); } else { expandedOccupancyTypes.add(occupancyTypeId); } + // eslint-disable-next-line no-unsanitized/property toggleButtonElement.innerHTML = expandedOccupancyTypes.has(occupancyTypeId) ? '' : ''; @@ -28,8 +32,9 @@ Object.defineProperty(exports, "__esModule", { value: true }); panelBlockElement.classList.toggle('is-hidden'); } } - function occupancyTypeResponseHandler(responseJSON) { + function occupancyTypeResponseHandler(rawResponseJSON) { var _a; + const responseJSON = rawResponseJSON; if (responseJSON.success) { occupancyTypes = responseJSON.occupancyTypes; allOccupancyTypeFields = responseJSON.allOccupancyTypeFields; @@ -37,16 +42,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); } else { bulmaJS.alert({ - title: 'Error Updating ' + los.escapedAliases.Occupancy + ' Type', + title: `Error Updating ${los.escapedAliases.Occupancy} Type`, message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '', contextualColorName: 'danger' }); } } function deleteOccupancyType(clickEvent) { - const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId, 10); + var _a; + const occupancyTypeId = Number.parseInt((_a = clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId) !== null && _a !== void 0 ? _a : '', 10); function doDelete() { - cityssm.postJSON(los.urlPrefix + '/admin/doDeleteOccupancyType', { + cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteOccupancyType`, { occupancyTypeId }, occupancyTypeResponseHandler); } @@ -61,14 +67,15 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function openEditOccupancyType(clickEvent) { - const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId, 10); + var _a; + const occupancyTypeId = Number.parseInt((_a = clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId) !== null && _a !== void 0 ? _a : '', 10); const occupancyType = occupancyTypes.find((currentOccupancyType) => { return occupancyTypeId === currentOccupancyType.occupancyTypeId; }); let editCloseModalFunction; function doEdit(submitEvent) { submitEvent.preventDefault(); - cityssm.postJSON(los.urlPrefix + '/admin/doUpdateOccupancyType', submitEvent.currentTarget, (rawResponseJSON) => { + cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateOccupancyType`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; occupancyTypeResponseHandler(responseJSON); if (responseJSON.success) { @@ -83,9 +90,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); modalElement.querySelector('#occupancyTypeEdit--occupancyType').value = occupancyType.occupancyType; }, onshown(modalElement, closeModalFunction) { + var _a; editCloseModalFunction = closeModalFunction; modalElement.querySelector('#occupancyTypeEdit--occupancyType').focus(); - modalElement.querySelector('form').addEventListener('submit', doEdit); + (_a = modalElement.querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doEdit); bulmaJS.toggleHtmlClipped(); }, onremoved() { @@ -94,11 +102,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function openAddOccupancyTypeField(clickEvent) { - const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId, 10); + var _a; + const occupancyTypeId = Number.parseInt((_a = clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId) !== null && _a !== void 0 ? _a : '', 10); let addCloseModalFunction; function doAdd(submitEvent) { submitEvent.preventDefault(); - cityssm.postJSON(los.urlPrefix + '/admin/doAddOccupancyTypeField', submitEvent.currentTarget, (rawResponseJSON) => { + cityssm.postJSON(`${los.urlPrefix}/admin/doAddOccupancyTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; expandedOccupancyTypes.add(occupancyTypeId); occupancyTypeResponseHandler(responseJSON); @@ -117,9 +126,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); } }, onshown(modalElement, closeModalFunction) { + var _a; addCloseModalFunction = closeModalFunction; modalElement.querySelector('#occupancyTypeFieldAdd--occupancyTypeField').focus(); - modalElement.querySelector('form').addEventListener('submit', doAdd); + (_a = modalElement.querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doAdd); bulmaJS.toggleHtmlClipped(); }, onremoved() { @@ -140,6 +150,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); }, occupancyTypeResponseHandler); } function openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId) { + var _a; let occupancyType; if (occupancyTypeId) { occupancyType = occupancyTypes.find((currentOccupancyType) => { @@ -147,7 +158,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } const occupancyTypeField = (occupancyType - ? occupancyType.occupancyTypeFields + ? (_a = occupancyType.occupancyTypeFields) !== null && _a !== void 0 ? _a : [] : allOccupancyTypeFields).find((currentOccupancyTypeField) => { return (currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId); }); @@ -173,7 +184,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); } function doUpdate(submitEvent) { submitEvent.preventDefault(); - cityssm.postJSON(los.urlPrefix + '/admin/doUpdateOccupancyTypeField', submitEvent.currentTarget, (rawResponseJSON) => { + cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateOccupancyTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; occupancyTypeResponseHandler(responseJSON); if (responseJSON.success) { @@ -182,7 +193,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function doDelete() { - cityssm.postJSON(los.urlPrefix + '/admin/doDeleteOccupancyTypeField', { + cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteOccupancyTypeField`, { occupancyTypeFieldId }, (rawResponseJSON) => { const responseJSON = rawResponseJSON; @@ -205,35 +216,36 @@ Object.defineProperty(exports, "__esModule", { value: true }); } cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyTypeField', { onshow: (modalElement) => { + var _a, _b, _c, _d, _e, _f, _g, _h; los.populateAliases(modalElement); modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldId').value = occupancyTypeField.occupancyTypeFieldId.toString(); - modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeField').value = occupancyTypeField.occupancyTypeField; - modalElement.querySelector('#occupancyTypeFieldEdit--isRequired').value = occupancyTypeField.isRequired ? '1' : '0'; + modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeField').value = (_a = occupancyTypeField.occupancyTypeField) !== null && _a !== void 0 ? _a : ''; + modalElement.querySelector('#occupancyTypeFieldEdit--isRequired').value = ((_b = occupancyTypeField.isRequired) !== null && _b !== void 0 ? _b : false) ? '1' : '0'; minimumLengthElement = modalElement.querySelector('#occupancyTypeFieldEdit--minimumLength'); minimumLengthElement.value = - occupancyTypeField.minimumLength.toString(); + (_d = (_c = occupancyTypeField.minimumLength) === null || _c === void 0 ? void 0 : _c.toString()) !== null && _d !== void 0 ? _d : ''; maximumLengthElement = modalElement.querySelector('#occupancyTypeFieldEdit--maximumLength'); maximumLengthElement.value = - occupancyTypeField.maximumLength.toString(); + (_f = (_e = occupancyTypeField.maximumLength) === null || _e === void 0 ? void 0 : _e.toString()) !== null && _f !== void 0 ? _f : ''; patternElement = modalElement.querySelector('#occupancyTypeFieldEdit--pattern'); - patternElement.value = occupancyTypeField.pattern; + patternElement.value = (_g = occupancyTypeField.pattern) !== null && _g !== void 0 ? _g : ''; occupancyTypeFieldValuesElement = modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldValues'); occupancyTypeFieldValuesElement.value = - occupancyTypeField.occupancyTypeFieldValues; + (_h = occupancyTypeField.occupancyTypeFieldValues) !== null && _h !== void 0 ? _h : ''; toggleInputFields(); }, onshown: (modalElement, closeModalFunction) => { + var _a, _b; editCloseModalFunction = closeModalFunction; bulmaJS.init(modalElement); bulmaJS.toggleHtmlClipped(); cityssm.enableNavBlocker(); - modalElement.querySelector('form').addEventListener('submit', doUpdate); + (_a = modalElement.querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doUpdate); minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin); updateMaximumLengthMin(); occupancyTypeFieldValuesElement.addEventListener('keyup', toggleInputFields); - modalElement - .querySelector('#button--deleteOccupancyTypeField') - .addEventListener('click', confirmDoDelete); + (_b = modalElement + .querySelector('#button--deleteOccupancyTypeField')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', confirmDoDelete); }, onremoved: () => { bulmaJS.toggleHtmlClipped(); @@ -242,9 +254,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function openEditOccupancyTypeFieldByClick(clickEvent) { + var _a, _b; clickEvent.preventDefault(); - const occupancyTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.occupancyTypeFieldId, 10); - const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId, 10); + const occupancyTypeFieldId = Number.parseInt((_a = clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.occupancyTypeFieldId) !== null && _a !== void 0 ? _a : '', 10); + const occupancyTypeId = Number.parseInt((_b = clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId) !== null && _b !== void 0 ? _b : '', 10); openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId); } function moveOccupancyTypeField(clickEvent) { @@ -260,17 +273,14 @@ Object.defineProperty(exports, "__esModule", { value: true }); }, occupancyTypeResponseHandler); } function renderOccupancyTypeFields(panelElement, occupancyTypeId, occupancyTypeFields) { - var _a; + var _a, _b; if (occupancyTypeFields.length === 0) { - panelElement.insertAdjacentHTML('beforeend', '
' + - '
' + - '

There are no additional fields.

' + - '
' + - '
'); + // eslint-disable-next-line no-unsanitized/method + panelElement.insertAdjacentHTML('beforeend', `
+

There are no additional fields.

+
`); } else { for (const occupancyTypeField of occupancyTypeFields) { @@ -282,24 +292,23 @@ Object.defineProperty(exports, "__esModule", { value: true }); } panelBlockElement.dataset.occupancyTypeFieldId = occupancyTypeField.occupancyTypeFieldId.toString(); - panelBlockElement.innerHTML = - '
' + - '' + - '
' + - ('
' + - los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeFieldUp', 'button--moveOccupancyTypeFieldDown') + - '
') + - '
' + - '
'; - panelBlockElement - .querySelector('.button--editOccupancyTypeField') - .addEventListener('click', openEditOccupancyTypeFieldByClick); + // eslint-disable-next-line no-unsanitized/property + panelBlockElement.innerHTML = `
+ +
+
+ ${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeFieldUp', 'button--moveOccupancyTypeFieldDown')} +
+
+
`; + (_b = panelBlockElement + .querySelector('.button--editOccupancyTypeField')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', openEditOccupancyTypeFieldByClick); panelBlockElement.querySelector('.button--moveOccupancyTypeFieldUp').addEventListener('click', moveOccupancyTypeField); panelBlockElement.querySelector('.button--moveOccupancyTypeFieldDown').addEventListener('click', moveOccupancyTypeField); panelElement.append(panelBlockElement); @@ -307,11 +316,12 @@ Object.defineProperty(exports, "__esModule", { value: true }); } } function openAddOccupancyTypePrint(clickEvent) { - const occupancyTypeId = clickEvent.currentTarget.closest('.container--occupancyTypePrintList').dataset.occupancyTypeId; + var _a; + const occupancyTypeId = (_a = clickEvent.currentTarget.closest('.container--occupancyTypePrintList').dataset.occupancyTypeId) !== null && _a !== void 0 ? _a : ''; let closeAddModalFunction; function doAdd(formEvent) { formEvent.preventDefault(); - cityssm.postJSON(los.urlPrefix + '/admin/doAddOccupancyTypePrint', formEvent.currentTarget, (rawResponseJSON) => { + cityssm.postJSON(`${los.urlPrefix}/admin/doAddOccupancyTypePrint`, formEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; if (responseJSON.success) { closeAddModalFunction(); @@ -345,8 +355,10 @@ Object.defineProperty(exports, "__esModule", { value: true }); cityssm.postJSON(los.urlPrefix + '/admin/' + (buttonElement.dataset.direction === 'up' - ? 'doMoveOccupancyTypePrintUp' - : 'doMoveOccupancyTypePrintDown'), { + ? // eslint-disable-next-line no-secrets/no-secrets + 'doMoveOccupancyTypePrintUp' + : // eslint-disable-next-line no-secrets/no-secrets + 'doMoveOccupancyTypePrintDown'), { occupancyTypeId, printEJS, moveToEnd: clickEvent.shiftKey ? '1' : '0' @@ -357,7 +369,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); const printEJS = clickEvent.currentTarget.closest('.container--occupancyTypePrint').dataset.printEJS; const occupancyTypeId = clickEvent.currentTarget.closest('.container--occupancyTypePrintList').dataset.occupancyTypeId; function doDelete() { - cityssm.postJSON(los.urlPrefix + '/admin/doDeleteOccupancyTypePrint', { + cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteOccupancyTypePrint`, { occupancyTypeId, printEJS }, occupancyTypeResponseHandler); @@ -373,12 +385,13 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function renderOccupancyTypePrints(panelElement, occupancyTypeId, occupancyTypePrints) { + var _a; if (occupancyTypePrints.length === 0) { panelElement.insertAdjacentHTML('beforeend', `
-
-

There are no prints associated with this record.

-
-
`); +
+

There are no prints associated with this record.

+
+ `); } else { for (const printEJS of occupancyTypePrints) { @@ -396,182 +409,165 @@ Object.defineProperty(exports, "__esModule", { value: true }); else if (printEJS.startsWith('screen/')) { printIconClass = 'fa-file'; } - panelBlockElement.innerHTML = - '
' + - '
' + - ('
' + - '' + - '
') + - ('
' + - cityssm.escapeHTML(printTitle || printEJS) + - '
') + - '
' + - '
' + - ('
' + - los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypePrintUp', 'button--moveOccupancyTypePrintDown') + - '
') + - ('
' + - '' + - '
' + - '
') + - '
' + - ''; + // eslint-disable-next-line no-unsanitized/property + panelBlockElement.innerHTML = `
+
+
+ +
+
+ ${cityssm.escapeHTML(printTitle || printEJS)} +
+
+
+
+ ${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypePrintUp', 'button--moveOccupancyTypePrintDown')} +
+
+ +
+
+
`; panelBlockElement.querySelector('.button--moveOccupancyTypePrintUp').addEventListener('click', moveOccupancyTypePrint); panelBlockElement.querySelector('.button--moveOccupancyTypePrintDown').addEventListener('click', moveOccupancyTypePrint); - panelBlockElement - .querySelector('.button--deleteOccupancyTypePrint') - .addEventListener('click', deleteOccupancyTypePrint); + (_a = panelBlockElement + .querySelector('.button--deleteOccupancyTypePrint')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', deleteOccupancyTypePrint); panelElement.append(panelBlockElement); } } } function renderOccupancyTypes() { - occupancyTypesContainerElement.innerHTML = - '
' + - '
' + - ('
' + - ('
' + - '
' + - ('

(All ' + - los.escapedAliases.Occupancy + - ' Types)

') + - '
' + - '
') + - ('
' + - ('
' + - '' + - '
') + - '
') + - '
') + - '
' + - '
'; + var _a, _b, _c, _d, _e, _f, _g, _h; + // eslint-disable-next-line no-unsanitized/property + occupancyTypesContainerElement.innerHTML = `
+
+
+
+
+

(All ${los.escapedAliases.Occupancy} Types)

+
+
+
+
+ +
+
+
+
+
`; occupancyTypePrintsContainerElement.innerHTML = ''; renderOccupancyTypeFields(occupancyTypesContainerElement.querySelector('#container--allOccupancyTypeFields'), undefined, allOccupancyTypeFields); - occupancyTypesContainerElement - .querySelector('.button--addOccupancyTypeField') - .addEventListener('click', openAddOccupancyTypeField); + (_a = occupancyTypesContainerElement + .querySelector('.button--addOccupancyTypeField')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', openAddOccupancyTypeField); if (occupancyTypes.length === 0) { + // eslint-disable-next-line no-unsanitized/method occupancyTypesContainerElement.insertAdjacentHTML('afterbegin', `
There are no active ${los.escapedAliases.occupancy} types.

-
`); +

There are no active ${los.escapedAliases.occupancy} types.

+ `); + // eslint-disable-next-line no-unsanitized/method occupancyTypePrintsContainerElement.insertAdjacentHTML('afterbegin', `
There are no active ${los.escapedAliases.occupancy} types.

-
`); +

There are no active ${los.escapedAliases.occupancy} types.

+ `); return; } for (const occupancyType of occupancyTypes) { - // Types and Fields - { - const occupancyTypeContainer = document.createElement('div'); - occupancyTypeContainer.className = 'panel container--occupancyType'; - occupancyTypeContainer.dataset.occupancyTypeId = - occupancyType.occupancyTypeId.toString(); - occupancyTypeContainer.innerHTML = - '
' + - '
' + - ('
' + - '
' + - '' + - '
' + - '
' + - '

' + - cityssm.escapeHTML(occupancyType.occupancyType) + - '

' + - '
' + - '
') + - ('
' + - ('
' + - '' + - '
') + - ('
' + - '' + - '
') + - ('
' + - '' + - '
') + - ('
' + - los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeUp', 'button--moveOccupancyTypeDown') + - '
') + - '
') + - '
' + - '
'; - 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', moveOccupancyType); - occupancyTypeContainer.querySelector('.button--moveOccupancyTypeDown').addEventListener('click', moveOccupancyType); - occupancyTypesContainerElement.append(occupancyTypeContainer); - } - // Prints - { - const occupancyTypePrintContainer = document.createElement('div'); - occupancyTypePrintContainer.className = - 'panel container--occupancyTypePrintList'; - occupancyTypePrintContainer.dataset.occupancyTypeId = - occupancyType.occupancyTypeId.toString(); - occupancyTypePrintContainer.innerHTML = - '
' + - '
' + - ('
' + - '
' + - '

' + - cityssm.escapeHTML(occupancyType.occupancyType) + - '

' + - '
' + - '
') + - ('
' + - ('
' + - '' + - '
') + - '
') + - '
' + - '
'; - renderOccupancyTypePrints(occupancyTypePrintContainer, occupancyType.occupancyTypeId, occupancyType.occupancyTypePrints); - occupancyTypePrintContainer - .querySelector('.button--addOccupancyTypePrint') - .addEventListener('click', openAddOccupancyTypePrint); - occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer); - } + /* + * Types and Fields + */ + const occupancyTypeContainer = document.createElement('div'); + occupancyTypeContainer.className = 'panel container--occupancyType'; + occupancyTypeContainer.dataset.occupancyTypeId = + occupancyType.occupancyTypeId.toString(); + // eslint-disable-next-line no-unsanitized/property + occupancyTypeContainer.innerHTML = `
+
+
+
+ +
+
+

${cityssm.escapeHTML(occupancyType.occupancyType)}

+
+
+
+
+ +
+
+ +
+
+ +
+
+ ${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeUp', 'button--moveOccupancyTypeDown')} +
+
+
+
`; + renderOccupancyTypeFields(occupancyTypeContainer, occupancyType.occupancyTypeId, (_b = occupancyType.occupancyTypeFields) !== null && _b !== void 0 ? _b : []); + (_c = occupancyTypeContainer + .querySelector('.button--toggleOccupancyTypeFields')) === null || _c === void 0 ? void 0 : _c.addEventListener('click', toggleOccupancyTypeFields); + (_d = occupancyTypeContainer + .querySelector('.button--deleteOccupancyType')) === null || _d === void 0 ? void 0 : _d.addEventListener('click', deleteOccupancyType); + (_e = occupancyTypeContainer + .querySelector('.button--editOccupancyType')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', openEditOccupancyType); + (_f = occupancyTypeContainer + .querySelector('.button--addOccupancyTypeField')) === null || _f === void 0 ? void 0 : _f.addEventListener('click', openAddOccupancyTypeField); + occupancyTypeContainer.querySelector('.button--moveOccupancyTypeUp').addEventListener('click', moveOccupancyType); + occupancyTypeContainer.querySelector('.button--moveOccupancyTypeDown').addEventListener('click', moveOccupancyType); + occupancyTypesContainerElement.append(occupancyTypeContainer); + /* + * Prints + */ + const occupancyTypePrintContainer = document.createElement('div'); + occupancyTypePrintContainer.className = + 'panel container--occupancyTypePrintList'; + occupancyTypePrintContainer.dataset.occupancyTypeId = + occupancyType.occupancyTypeId.toString(); + occupancyTypePrintContainer.innerHTML = `
+
+
+
+

${cityssm.escapeHTML(occupancyType.occupancyType)}

+
+
+
+
+ +
+
+
+
`; + renderOccupancyTypePrints(occupancyTypePrintContainer, occupancyType.occupancyTypeId, (_g = occupancyType.occupancyTypePrints) !== null && _g !== void 0 ? _g : []); + (_h = occupancyTypePrintContainer + .querySelector('.button--addOccupancyTypePrint')) === null || _h === void 0 ? void 0 : _h.addEventListener('click', openAddOccupancyTypePrint); + occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer); } } - document - .querySelector('#button--addOccupancyType') - .addEventListener('click', () => { + (_a = document + .querySelector('#button--addOccupancyType')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', () => { let addCloseModalFunction; function doAdd(submitEvent) { submitEvent.preventDefault(); @@ -593,16 +589,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyType', { - onshow: (modalElement) => { + onshow(modalElement) { los.populateAliases(modalElement); }, - onshown: (modalElement, closeModalFunction) => { + onshown(modalElement, closeModalFunction) { + var _a; addCloseModalFunction = closeModalFunction; modalElement.querySelector('#occupancyTypeAdd--occupancyType').focus(); - modalElement.querySelector('form').addEventListener('submit', doAdd); + (_a = modalElement.querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doAdd); bulmaJS.toggleHtmlClipped(); }, - onremoved: () => { + onremoved() { bulmaJS.toggleHtmlClipped(); } }); diff --git a/public-typescript/adminOccupancyTypes.ts b/public-typescript/adminOccupancyTypes.ts index bf10675d..6e71ddba 100644 --- a/public-typescript/adminOccupancyTypes.ts +++ b/public-typescript/adminOccupancyTypes.ts @@ -1,15 +1,17 @@ -/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */ +// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair +/* eslint-disable unicorn/prefer-module */ -import type * as globalTypes from '../types/globalTypes' -import type * as recordTypes from '../types/recordTypes' +import type { BulmaJS } from '@cityssm/bulma-js/types.js' +import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js' -import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types' - -import type { BulmaJS } from '@cityssm/bulma-js/types' +import type * as globalTypes from '../types/globalTypes.js' +import type * as recordTypes from '../types/recordTypes.js' declare const cityssm: cityssmGlobal declare const bulmaJS: BulmaJS +declare const exports: Record + type ResponseJSON = | { success: true @@ -32,11 +34,11 @@ type ResponseJSON = '#container--occupancyTypePrints' ) as HTMLElement - let occupancyTypes: recordTypes.OccupancyType[] = exports.occupancyTypes + let occupancyTypes = exports.occupancyTypes as recordTypes.OccupancyType[] delete exports.occupancyTypes - let allOccupancyTypeFields: recordTypes.OccupancyTypeField[] = - exports.allOccupancyTypeFields + let allOccupancyTypeFields = + exports.allOccupancyTypeFields as recordTypes.OccupancyTypeField[] delete exports.allOccupancyTypeFields const expandedOccupancyTypes = new Set() @@ -49,7 +51,7 @@ type ResponseJSON = ) as HTMLElement const occupancyTypeId = Number.parseInt( - occupancyTypeElement.dataset.occupancyTypeId!, + occupancyTypeElement.dataset.occupancyTypeId ?? '', 10 ) @@ -59,6 +61,7 @@ type ResponseJSON = expandedOccupancyTypes.add(occupancyTypeId) } + // eslint-disable-next-line no-unsanitized/property toggleButtonElement.innerHTML = expandedOccupancyTypes.has(occupancyTypeId) ? '' : '' @@ -71,19 +74,21 @@ type ResponseJSON = } } - function occupancyTypeResponseHandler(responseJSON: { - success: boolean - errorMessage?: string - occupancyTypes?: recordTypes.OccupancyType[] - allOccupancyTypeFields?: recordTypes.OccupancyTypeField[] - }): void { + function occupancyTypeResponseHandler(rawResponseJSON: unknown): void { + const responseJSON = rawResponseJSON as { + success: boolean + errorMessage?: string + occupancyTypes: recordTypes.OccupancyType[] + 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 ' + los.escapedAliases.Occupancy + ' Type', + title: `Error Updating ${los.escapedAliases.Occupancy} Type`, message: responseJSON.errorMessage ?? '', contextualColorName: 'danger' }) @@ -96,13 +101,13 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--occupancyType' ) as HTMLElement - ).dataset.occupancyTypeId!, + ).dataset.occupancyTypeId ?? '', 10 ) function doDelete(): void { cityssm.postJSON( - los.urlPrefix + '/admin/doDeleteOccupancyType', + `${los.urlPrefix}/admin/doDeleteOccupancyType`, { occupancyTypeId }, @@ -127,13 +132,13 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--occupancyType' ) as HTMLElement - ).dataset.occupancyTypeId!, + ).dataset.occupancyTypeId ?? '', 10 ) const occupancyType = occupancyTypes.find((currentOccupancyType) => { return occupancyTypeId === currentOccupancyType.occupancyTypeId - })! + }) as recordTypes.OccupancyType let editCloseModalFunction: () => void @@ -141,7 +146,7 @@ type ResponseJSON = submitEvent.preventDefault() cityssm.postJSON( - los.urlPrefix + '/admin/doUpdateOccupancyType', + `${los.urlPrefix}/admin/doUpdateOccupancyType`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON as ResponseJSON @@ -176,7 +181,7 @@ type ResponseJSON = ) as HTMLInputElement ).focus() - modalElement.querySelector('form')!.addEventListener('submit', doEdit) + modalElement.querySelector('form')?.addEventListener('submit', doEdit) bulmaJS.toggleHtmlClipped() }, @@ -192,7 +197,7 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--occupancyType' ) as HTMLElement - ).dataset.occupancyTypeId!, + ).dataset.occupancyTypeId ?? '', 10 ) @@ -202,7 +207,7 @@ type ResponseJSON = submitEvent.preventDefault() cityssm.postJSON( - los.urlPrefix + '/admin/doAddOccupancyTypeField', + `${los.urlPrefix}/admin/doAddOccupancyTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON as ResponseJSON @@ -241,7 +246,7 @@ type ResponseJSON = ) as HTMLInputElement ).focus() - modalElement.querySelector('form')!.addEventListener('submit', doAdd) + modalElement.querySelector('form')?.addEventListener('submit', doAdd) bulmaJS.toggleHtmlClipped() }, @@ -288,13 +293,13 @@ type ResponseJSON = const occupancyTypeField = ( occupancyType - ? occupancyType.occupancyTypeFields! + ? occupancyType.occupancyTypeFields ?? [] : allOccupancyTypeFields ).find((currentOccupancyTypeField) => { return ( currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId ) - })! + }) as recordTypes.OccupancyTypeField let minimumLengthElement: HTMLInputElement let maximumLengthElement: HTMLInputElement @@ -323,7 +328,7 @@ type ResponseJSON = submitEvent.preventDefault() cityssm.postJSON( - los.urlPrefix + '/admin/doUpdateOccupancyTypeField', + `${los.urlPrefix}/admin/doUpdateOccupancyTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON as ResponseJSON @@ -338,7 +343,7 @@ type ResponseJSON = function doDelete(): void { cityssm.postJSON( - los.urlPrefix + '/admin/doDeleteOccupancyTypeField', + `${los.urlPrefix}/admin/doDeleteOccupancyTypeField`, { occupancyTypeFieldId }, @@ -373,44 +378,44 @@ type ResponseJSON = 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( '#occupancyTypeFieldEdit--isRequired' ) as HTMLSelectElement - ).value = occupancyTypeField.isRequired ? '1' : '0' + ).value = (occupancyTypeField.isRequired ?? false) ? '1' : '0' minimumLengthElement = modalElement.querySelector( '#occupancyTypeFieldEdit--minimumLength' ) as HTMLInputElement minimumLengthElement.value = - occupancyTypeField.minimumLength!.toString() + occupancyTypeField.minimumLength?.toString() ?? '' maximumLengthElement = modalElement.querySelector( '#occupancyTypeFieldEdit--maximumLength' ) as HTMLInputElement maximumLengthElement.value = - occupancyTypeField.maximumLength!.toString() + occupancyTypeField.maximumLength?.toString() ?? '' 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! + occupancyTypeField.occupancyTypeFieldValues ?? '' toggleInputFields() }, @@ -421,7 +426,7 @@ type ResponseJSON = bulmaJS.toggleHtmlClipped() cityssm.enableNavBlocker() - modalElement.querySelector('form')!.addEventListener('submit', doUpdate) + modalElement.querySelector('form')?.addEventListener('submit', doUpdate) minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin) updateMaximumLengthMin() @@ -432,8 +437,8 @@ type ResponseJSON = ) modalElement - .querySelector('#button--deleteOccupancyTypeField')! - .addEventListener('click', confirmDoDelete) + .querySelector('#button--deleteOccupancyTypeField') + ?.addEventListener('click', confirmDoDelete) }, onremoved: () => { bulmaJS.toggleHtmlClipped() @@ -450,7 +455,7 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--occupancyTypeField' ) as HTMLElement - ).dataset.occupancyTypeFieldId!, + ).dataset.occupancyTypeFieldId ?? '', 10 ) @@ -459,7 +464,7 @@ type ResponseJSON = (clickEvent.currentTarget as HTMLElement).closest( '.container--occupancyType' ) as HTMLElement - ).dataset.occupancyTypeId!, + ).dataset.occupancyTypeId ?? '', 10 ) @@ -495,17 +500,16 @@ type ResponseJSON = occupancyTypeFields: recordTypes.OccupancyTypeField[] ): void { if (occupancyTypeFields.length === 0) { + // eslint-disable-next-line no-unsanitized/method panelElement.insertAdjacentHTML( 'beforeend', - '
' + - '
' + - '

There are no additional fields.

' + - '
' + - '
' + : ' is-hidden' + }"> +

There are no additional fields.

+ ` ) } else { for (const occupancyTypeField of occupancyTypeFields) { @@ -518,30 +522,30 @@ type ResponseJSON = } panelBlockElement.dataset.occupancyTypeFieldId = - occupancyTypeField.occupancyTypeFieldId!.toString() + occupancyTypeField.occupancyTypeFieldId.toString() - panelBlockElement.innerHTML = - '
' + - '' + - '
' + - ('
' + - los.getMoveUpDownButtonFieldHTML( - 'button--moveOccupancyTypeFieldUp', - 'button--moveOccupancyTypeFieldDown' - ) + - '
') + - '
' + - '
' + // eslint-disable-next-line no-unsanitized/property + panelBlockElement.innerHTML = `
+ +
+
+ ${los.getMoveUpDownButtonFieldHTML( + 'button--moveOccupancyTypeFieldUp', + 'button--moveOccupancyTypeFieldDown' + )} +
+
+
` panelBlockElement - .querySelector('.button--editOccupancyTypeField')! - .addEventListener('click', openEditOccupancyTypeFieldByClick) + .querySelector('.button--editOccupancyTypeField') + ?.addEventListener('click', openEditOccupancyTypeFieldByClick) ;( panelBlockElement.querySelector( '.button--moveOccupancyTypeFieldUp' @@ -559,11 +563,12 @@ type ResponseJSON = } function openAddOccupancyTypePrint(clickEvent: Event): void { - const occupancyTypeId = ( - (clickEvent.currentTarget as HTMLElement).closest( - '.container--occupancyTypePrintList' - ) as HTMLElement - ).dataset.occupancyTypeId! + const occupancyTypeId = + ( + (clickEvent.currentTarget as HTMLElement).closest( + '.container--occupancyTypePrintList' + ) as HTMLElement + ).dataset.occupancyTypeId ?? '' let closeAddModalFunction: () => void @@ -571,7 +576,7 @@ type ResponseJSON = formEvent.preventDefault() cityssm.postJSON( - los.urlPrefix + '/admin/doAddOccupancyTypePrint', + `${los.urlPrefix}/admin/doAddOccupancyTypePrint`, formEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON as ResponseJSON @@ -599,7 +604,7 @@ type ResponseJSON = ) as HTMLSelectElement for (const [printEJS, printTitle] of Object.entries( - exports.occupancyTypePrintTitles + exports.occupancyTypePrintTitles as Record )) { const optionElement = document.createElement('option') optionElement.value = printEJS @@ -630,8 +635,10 @@ type ResponseJSON = los.urlPrefix + '/admin/' + (buttonElement.dataset.direction === 'up' - ? 'doMoveOccupancyTypePrintUp' - : 'doMoveOccupancyTypePrintDown'), + ? // eslint-disable-next-line no-secrets/no-secrets + 'doMoveOccupancyTypePrintUp' + : // eslint-disable-next-line no-secrets/no-secrets + 'doMoveOccupancyTypePrintDown'), { occupancyTypeId, printEJS, @@ -658,7 +665,7 @@ type ResponseJSON = function doDelete(): void { cityssm.postJSON( - los.urlPrefix + '/admin/doDeleteOccupancyTypePrint', + `${los.urlPrefix}/admin/doDeleteOccupancyTypePrint`, { occupancyTypeId, printEJS @@ -687,10 +694,10 @@ type ResponseJSON = panelElement.insertAdjacentHTML( 'beforeend', `
-
-

There are no prints associated with this record.

-
-
` +
+

There are no prints associated with this record.

+
+ ` ) } else { for (const printEJS of occupancyTypePrints) { @@ -713,33 +720,30 @@ type ResponseJSON = printIconClass = 'fa-file' } - panelBlockElement.innerHTML = - '
' + - '
' + - ('
' + - '' + - '
') + - ('
' + - cityssm.escapeHTML(printTitle || printEJS) + - '
') + - '
' + - '
' + - ('
' + - los.getMoveUpDownButtonFieldHTML( - 'button--moveOccupancyTypePrintUp', - 'button--moveOccupancyTypePrintDown' - ) + - '
') + - ('
' + - '' + - '
' + - '
') + - '
' + - '' + // eslint-disable-next-line no-unsanitized/property + panelBlockElement.innerHTML = `
+
+
+ +
+
+ ${cityssm.escapeHTML(printTitle || printEJS)} +
+
+
+
+ ${los.getMoveUpDownButtonFieldHTML( + 'button--moveOccupancyTypePrintUp', + 'button--moveOccupancyTypePrintDown' + )} +
+
+ +
+
+
` ;( panelBlockElement.querySelector( '.button--moveOccupancyTypePrintUp' @@ -752,8 +756,8 @@ type ResponseJSON = ).addEventListener('click', moveOccupancyTypePrint) panelBlockElement - .querySelector('.button--deleteOccupancyTypePrint')! - .addEventListener('click', deleteOccupancyTypePrint) + .querySelector('.button--deleteOccupancyTypePrint') + ?.addEventListener('click', deleteOccupancyTypePrint) panelElement.append(panelBlockElement) } @@ -761,28 +765,26 @@ type ResponseJSON = } function renderOccupancyTypes(): void { - occupancyTypesContainerElement.innerHTML = - '
' + - '
' + - ('
' + - ('
' + - '
' + - ('

(All ' + - los.escapedAliases.Occupancy + - ' Types)

') + - '
' + - '
') + - ('
' + - ('
' + - '' + - '
') + - '
') + - '
') + - '
' + - '
' + // eslint-disable-next-line no-unsanitized/property + occupancyTypesContainerElement.innerHTML = `
+
+
+
+
+

(All ${los.escapedAliases.Occupancy} Types)

+
+
+
+
+ +
+
+
+
+
` occupancyTypePrintsContainerElement.innerHTML = '' @@ -795,169 +797,168 @@ type ResponseJSON = ) occupancyTypesContainerElement - .querySelector('.button--addOccupancyTypeField')! - .addEventListener('click', openAddOccupancyTypeField) + .querySelector('.button--addOccupancyTypeField') + ?.addEventListener('click', openAddOccupancyTypeField) if (occupancyTypes.length === 0) { + // eslint-disable-next-line no-unsanitized/method occupancyTypesContainerElement.insertAdjacentHTML( 'afterbegin', `
There are no active ${los.escapedAliases.occupancy} types.

-
` +

There are no active ${los.escapedAliases.occupancy} types.

+ ` ) + // eslint-disable-next-line no-unsanitized/method occupancyTypePrintsContainerElement.insertAdjacentHTML( 'afterbegin', `
There are no active ${los.escapedAliases.occupancy} types.

-
` +

There are no active ${los.escapedAliases.occupancy} types.

+ ` ) return } for (const occupancyType of occupancyTypes) { - // Types and Fields - { - const occupancyTypeContainer = document.createElement('div') + /* + * Types and Fields + */ - occupancyTypeContainer.className = 'panel container--occupancyType' + const occupancyTypeContainer = document.createElement('div') - occupancyTypeContainer.dataset.occupancyTypeId = - occupancyType.occupancyTypeId.toString() + occupancyTypeContainer.className = 'panel container--occupancyType' - occupancyTypeContainer.innerHTML = - '
' + - '
' + - ('
' + - '
' + - '' + - '
' + - '
' + - '

' + - cityssm.escapeHTML(occupancyType.occupancyType) + - '

' + - '
' + - '
') + - ('
' + - ('
' + - '' + - '
') + - ('
' + - '' + - '
') + - ('
' + - '' + - '
') + - ('
' + - los.getMoveUpDownButtonFieldHTML( + occupancyTypeContainer.dataset.occupancyTypeId = + occupancyType.occupancyTypeId.toString() + + // eslint-disable-next-line no-unsanitized/property + occupancyTypeContainer.innerHTML = `
+
+
+
+ +
+
+

${cityssm.escapeHTML(occupancyType.occupancyType)}

+
+
+
+
+ +
+
+ +
+
+ +
+
+ ${los.getMoveUpDownButtonFieldHTML( 'button--moveOccupancyTypeUp', 'button--moveOccupancyTypeDown' - ) + - '
') + - '
') + - '
' + - '
' + )} +
+
+
+
` - renderOccupancyTypeFields( - occupancyTypeContainer, - occupancyType.occupancyTypeId, - occupancyType.occupancyTypeFields! - ) + renderOccupancyTypeFields( + occupancyTypeContainer, + occupancyType.occupancyTypeId, + occupancyType.occupancyTypeFields ?? [] + ) - occupancyTypeContainer - .querySelector('.button--toggleOccupancyTypeFields')! - .addEventListener('click', toggleOccupancyTypeFields) + occupancyTypeContainer + .querySelector('.button--toggleOccupancyTypeFields') + ?.addEventListener('click', toggleOccupancyTypeFields) - occupancyTypeContainer - .querySelector('.button--deleteOccupancyType')! - .addEventListener('click', deleteOccupancyType) + occupancyTypeContainer + .querySelector('.button--deleteOccupancyType') + ?.addEventListener('click', deleteOccupancyType) - occupancyTypeContainer - .querySelector('.button--editOccupancyType')! - .addEventListener('click', openEditOccupancyType) + occupancyTypeContainer + .querySelector('.button--editOccupancyType') + ?.addEventListener('click', openEditOccupancyType) - occupancyTypeContainer - .querySelector('.button--addOccupancyTypeField')! - .addEventListener('click', openAddOccupancyTypeField) - ;( - occupancyTypeContainer.querySelector( - '.button--moveOccupancyTypeUp' - ) as HTMLButtonElement - ).addEventListener('click', moveOccupancyType) - ;( - occupancyTypeContainer.querySelector( - '.button--moveOccupancyTypeDown' - ) as HTMLButtonElement - ).addEventListener('click', moveOccupancyType) + occupancyTypeContainer + .querySelector('.button--addOccupancyTypeField') + ?.addEventListener('click', openAddOccupancyTypeField) + ;( + occupancyTypeContainer.querySelector( + '.button--moveOccupancyTypeUp' + ) as HTMLButtonElement + ).addEventListener('click', moveOccupancyType) + ;( + occupancyTypeContainer.querySelector( + '.button--moveOccupancyTypeDown' + ) as HTMLButtonElement + ).addEventListener('click', moveOccupancyType) - occupancyTypesContainerElement.append(occupancyTypeContainer) - } + occupancyTypesContainerElement.append(occupancyTypeContainer) - // Prints - { - const occupancyTypePrintContainer = document.createElement('div') + /* + * Prints + */ - occupancyTypePrintContainer.className = - 'panel container--occupancyTypePrintList' + const occupancyTypePrintContainer = document.createElement('div') - occupancyTypePrintContainer.dataset.occupancyTypeId = - occupancyType.occupancyTypeId.toString() + occupancyTypePrintContainer.className = + 'panel container--occupancyTypePrintList' - occupancyTypePrintContainer.innerHTML = - '
' + - '
' + - ('
' + - '
' + - '

' + - cityssm.escapeHTML(occupancyType.occupancyType) + - '

' + - '
' + - '
') + - ('
' + - ('
' + - '' + - '
') + - '
') + - '
' + - '
' + occupancyTypePrintContainer.dataset.occupancyTypeId = + occupancyType.occupancyTypeId.toString() - renderOccupancyTypePrints( - occupancyTypePrintContainer, - occupancyType.occupancyTypeId, - occupancyType.occupancyTypePrints! - ) + occupancyTypePrintContainer.innerHTML = `
+
+
+
+

${cityssm.escapeHTML(occupancyType.occupancyType)}

+
+
+
+
+ +
+
+
+
` - occupancyTypePrintContainer - .querySelector('.button--addOccupancyTypePrint')! - .addEventListener('click', openAddOccupancyTypePrint) + renderOccupancyTypePrints( + occupancyTypePrintContainer, + occupancyType.occupancyTypeId, + occupancyType.occupancyTypePrints ?? [] + ) - occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer) - } + occupancyTypePrintContainer + .querySelector('.button--addOccupancyTypePrint') + ?.addEventListener('click', openAddOccupancyTypePrint) + + occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer) } } document - .querySelector('#button--addOccupancyType')! - .addEventListener('click', () => { + .querySelector('#button--addOccupancyType') + ?.addEventListener('click', () => { let addCloseModalFunction: () => void function doAdd(submitEvent: SubmitEvent): void { @@ -971,7 +972,7 @@ type ResponseJSON = if (responseJSON.success) { addCloseModalFunction() - occupancyTypes = responseJSON.occupancyTypes! + occupancyTypes = responseJSON.occupancyTypes renderOccupancyTypes() } else { bulmaJS.alert({ @@ -985,10 +986,10 @@ type ResponseJSON = } cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyType', { - onshow: (modalElement) => { + onshow(modalElement) { los.populateAliases(modalElement) }, - onshown: (modalElement, closeModalFunction) => { + onshown(modalElement, closeModalFunction) { addCloseModalFunction = closeModalFunction ;( modalElement.querySelector( @@ -996,11 +997,11 @@ type ResponseJSON = ) as HTMLInputElement ).focus() - modalElement.querySelector('form')!.addEventListener('submit', doAdd) + modalElement.querySelector('form')?.addEventListener('submit', doAdd) bulmaJS.toggleHtmlClipped() }, - onremoved: () => { + onremoved() { bulmaJS.toggleHtmlClipped() } }) diff --git a/public-typescript/workOrderEdit.js b/public-typescript/workOrderEdit.js index 315bf58d..68c9d6bf 100644 --- a/public-typescript/workOrderEdit.js +++ b/public-typescript/workOrderEdit.js @@ -1120,7 +1120,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function renderMilestones() { - var _a, _b, _c, _d, _e; + var _a, _b, _c, _d, _e, _f; // Clear milestones panel const milestonesPanelElement = document.querySelector('#panel--milestones'); const panelBlockElementsToDelete = milestonesPanelElement.querySelectorAll('.panel-block'); @@ -1198,9 +1198,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); .querySelector('.button--editMilestone')) === null || _d === void 0 ? void 0 : _d.addEventListener('click', editMilestone); (_e = panelBlockElement .querySelector('.button--completeMilestone')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', completeMilestone); - panelBlockElement - .querySelector('.button--deleteMilestone') - .addEventListener('click', deleteMilestone); + (_f = panelBlockElement + .querySelector('.button--deleteMilestone')) === null || _f === void 0 ? void 0 : _f.addEventListener('click', deleteMilestone); milestonesPanelElement.append(panelBlockElement); } bulmaJS.init(milestonesPanelElement); diff --git a/public-typescript/workOrderEdit/workOrderEdit.js b/public-typescript/workOrderEdit/workOrderEdit.js index f7f7a604..671b5f8a 100644 --- a/public-typescript/workOrderEdit/workOrderEdit.js +++ b/public-typescript/workOrderEdit/workOrderEdit.js @@ -369,7 +369,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); }); } function renderMilestones() { - var _a, _b, _c, _d, _e; + var _a, _b, _c, _d, _e, _f; // Clear milestones panel const milestonesPanelElement = document.querySelector('#panel--milestones'); const panelBlockElementsToDelete = milestonesPanelElement.querySelectorAll('.panel-block'); @@ -447,9 +447,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); .querySelector('.button--editMilestone')) === null || _d === void 0 ? void 0 : _d.addEventListener('click', editMilestone); (_e = panelBlockElement .querySelector('.button--completeMilestone')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', completeMilestone); - panelBlockElement - .querySelector('.button--deleteMilestone') - .addEventListener('click', deleteMilestone); + (_f = panelBlockElement + .querySelector('.button--deleteMilestone')) === null || _f === void 0 ? void 0 : _f.addEventListener('click', deleteMilestone); milestonesPanelElement.append(panelBlockElement); } bulmaJS.init(milestonesPanelElement); diff --git a/public-typescript/workOrderEdit/workOrderEdit.ts b/public-typescript/workOrderEdit/workOrderEdit.ts index bbed42e4..249f2d8f 100644 --- a/public-typescript/workOrderEdit/workOrderEdit.ts +++ b/public-typescript/workOrderEdit/workOrderEdit.ts @@ -673,8 +673,8 @@ declare const exports: Record ?.addEventListener('click', completeMilestone) panelBlockElement - .querySelector('.button--deleteMilestone')! - .addEventListener('click', deleteMilestone) + .querySelector('.button--deleteMilestone') + ?.addEventListener('click', deleteMilestone) milestonesPanelElement.append(panelBlockElement) } diff --git a/public/javascripts/adminOccupancyTypes.min.js b/public/javascripts/adminOccupancyTypes.min.js index 9245d5c0..080164c5 100644 --- a/public/javascripts/adminOccupancyTypes.min.js +++ b/public/javascripts/adminOccupancyTypes.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,c=document.querySelector("#container--occupancyTypes"),t=document.querySelector("#container--occupancyTypePrints");let n=exports.occupancyTypes;delete exports.occupancyTypes;let a=exports.allOccupancyTypeFields;delete exports.allOccupancyTypeFields;const s=new Set;function i(e){const c=e.currentTarget,t=c.closest(".container--occupancyType"),n=Number.parseInt(t.dataset.occupancyTypeId,10);s.has(n)?s.delete(n):s.add(n),c.innerHTML=s.has(n)?'':'';const a=t.querySelectorAll(".panel-block");for(const e of a)e.classList.toggle("is-hidden")}function l(c){var t;c.success?(n=c.occupancyTypes,a=c.allOccupancyTypeFields,S()):bulmaJS.alert({title:"Error Updating "+e.escapedAliases.Occupancy+" Type",message:null!==(t=c.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})}function o(c){const t=Number.parseInt(c.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId,10);bulmaJS.confirm({title:`Delete ${e.escapedAliases.Occupancy} Type`,message:`Are you sure you want to delete this ${e.escapedAliases.occupancy} type?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${e.escapedAliases.Occupancy} Type`,callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteOccupancyType",{occupancyTypeId:t},l)}}})}function p(c){const t=Number.parseInt(c.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId,10),a=n.find(e=>t===e.occupancyTypeId);let s;function i(c){c.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateOccupancyType",c.currentTarget,e=>{const c=e;l(c),c.success&&s()})}cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyType",{onshow(c){e.populateAliases(c),c.querySelector("#occupancyTypeEdit--occupancyTypeId").value=t.toString(),c.querySelector("#occupancyTypeEdit--occupancyType").value=a.occupancyType},onshown(e,c){s=c,e.querySelector("#occupancyTypeEdit--occupancyType").focus(),e.querySelector("form").addEventListener("submit",i),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function d(c){const t=Number.parseInt(c.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId,10);let n;function a(c){c.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddOccupancyTypeField",c.currentTarget,e=>{const c=e;s.add(t),l(c),c.success&&(n(),r(t,c.occupancyTypeFieldId))})}cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypeField",{onshow(c){e.populateAliases(c),t&&(c.querySelector("#occupancyTypeFieldAdd--occupancyTypeId").value=t.toString())},onshown(e,c){n=c,e.querySelector("#occupancyTypeFieldAdd--occupancyTypeField").focus(),e.querySelector("form").addEventListener("submit",a),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function u(c){const t=c.currentTarget,n=c.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===t.dataset.direction?"doMoveOccupancyTypeUp":"doMoveOccupancyTypeDown"),{occupancyTypeId:n,moveToEnd:c.shiftKey?"1":"0"},l)}function r(c,t){let s;c&&(s=n.find(e=>e.occupancyTypeId===c));const i=(s?s.occupancyTypeFields:a).find(e=>e.occupancyTypeFieldId===t);let o,p,d,u,r;function y(){p.min=o.value}function v(){""===u.value?(o.disabled=!1,p.disabled=!1,d.disabled=!1):(o.disabled=!0,p.disabled=!0,d.disabled=!0)}function T(c){c.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doUpdateOccupancyTypeField",c.currentTarget,e=>{const c=e;l(c),c.success&&r()})}function m(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteOccupancyTypeField",{occupancyTypeFieldId:t},e=>{const c=e;l(c),c.success&&r()})}function f(){bulmaJS.confirm({title:"Delete Field",message:"Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",contextualColorName:"warning",okButton:{text:"Yes, Delete Field",callbackFunction:m}})}cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyTypeField",{onshow:c=>{e.populateAliases(c),c.querySelector("#occupancyTypeFieldEdit--occupancyTypeFieldId").value=i.occupancyTypeFieldId.toString(),c.querySelector("#occupancyTypeFieldEdit--occupancyTypeField").value=i.occupancyTypeField,c.querySelector("#occupancyTypeFieldEdit--isRequired").value=i.isRequired?"1":"0",(o=c.querySelector("#occupancyTypeFieldEdit--minimumLength")).value=i.minimumLength.toString(),(p=c.querySelector("#occupancyTypeFieldEdit--maximumLength")).value=i.maximumLength.toString(),(d=c.querySelector("#occupancyTypeFieldEdit--pattern")).value=i.pattern,(u=c.querySelector("#occupancyTypeFieldEdit--occupancyTypeFieldValues")).value=i.occupancyTypeFieldValues,v()},onshown:(e,c)=>{r=c,bulmaJS.init(e),bulmaJS.toggleHtmlClipped(),cityssm.enableNavBlocker(),e.querySelector("form").addEventListener("submit",T),o.addEventListener("keyup",y),y(),u.addEventListener("keyup",v),e.querySelector("#button--deleteOccupancyTypeField").addEventListener("click",f)},onremoved:()=>{bulmaJS.toggleHtmlClipped(),cityssm.disableNavBlocker()}})}function y(e){e.preventDefault();const c=Number.parseInt(e.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId,10);r(Number.parseInt(e.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId,10),c)}function v(c){const t=c.currentTarget,n=c.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId;cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===t.dataset.direction?"doMoveOccupancyTypeFieldUp":"doMoveOccupancyTypeFieldDown"),{occupancyTypeFieldId:n,moveToEnd:c.shiftKey?"1":"0"},l)}function T(c,t,n){var a;if(0===n.length)c.insertAdjacentHTML("beforeend",'

There are no additional fields.

');else for(const i of n){const n=document.createElement("div");n.className="panel-block is-block container--occupancyTypeField",t&&!s.has(t)&&n.classList.add("is-hidden"),n.dataset.occupancyTypeFieldId=i.occupancyTypeFieldId.toString(),n.innerHTML='
'+e.getMoveUpDownButtonFieldHTML("button--moveOccupancyTypeFieldUp","button--moveOccupancyTypeFieldDown")+"
",n.querySelector(".button--editOccupancyTypeField").addEventListener("click",y),n.querySelector(".button--moveOccupancyTypeFieldUp").addEventListener("click",v),n.querySelector(".button--moveOccupancyTypeFieldDown").addEventListener("click",v),c.append(n)}}function m(c){const t=c.currentTarget.closest(".container--occupancyTypePrintList").dataset.occupancyTypeId;let n;function a(c){c.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddOccupancyTypePrint",c.currentTarget,e=>{const c=e;c.success&&n(),l(c)})}cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypePrint",{onshow(c){e.populateAliases(c),c.querySelector("#occupancyTypePrintAdd--occupancyTypeId").value=t;const n=c.querySelector("#occupancyTypePrintAdd--printEJS");for(const[e,c]of Object.entries(exports.occupancyTypePrintTitles)){const t=document.createElement("option");t.value=e,t.textContent=c,n.append(t)}},onshown(e,c){var t;n=c,null===(t=e.querySelector("form"))||void 0===t||t.addEventListener("submit",a)}})}function f(c){const t=c.currentTarget,n=t.closest(".container--occupancyTypePrint").dataset.printEJS,a=t.closest(".container--occupancyTypePrintList").dataset.occupancyTypeId;cityssm.postJSON(e.urlPrefix+"/admin/"+("up"===t.dataset.direction?"doMoveOccupancyTypePrintUp":"doMoveOccupancyTypePrintDown"),{occupancyTypeId:a,printEJS:n,moveToEnd:c.shiftKey?"1":"0"},l)}function b(c){c.preventDefault();const t=c.currentTarget.closest(".container--occupancyTypePrint").dataset.printEJS,n=c.currentTarget.closest(".container--occupancyTypePrintList").dataset.occupancyTypeId;bulmaJS.confirm({title:"Delete Print",message:"Are you sure you want to remove this print option?",contextualColorName:"warning",okButton:{text:"Yes, Remove Print",callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/admin/doDeleteOccupancyTypePrint",{occupancyTypeId:n,printEJS:t},l)}}})}function g(c,t,n){if(0===n.length)c.insertAdjacentHTML("beforeend",'
\n
\n

There are no prints associated with this record.

\n
\n
');else for(const t of n){const n=document.createElement("div");n.className="panel-block is-block container--occupancyTypePrint",n.dataset.printEJS=t;const a="*"===t?"(All Available Prints)":exports.occupancyTypePrintTitles[t];let s="fa-star";t.startsWith("pdf/")?s="fa-file-pdf":t.startsWith("screen/")&&(s="fa-file"),n.innerHTML='
'+cityssm.escapeHTML(a||t)+'
'+e.getMoveUpDownButtonFieldHTML("button--moveOccupancyTypePrintUp","button--moveOccupancyTypePrintDown")+'
',n.querySelector(".button--moveOccupancyTypePrintUp").addEventListener("click",f),n.querySelector(".button--moveOccupancyTypePrintDown").addEventListener("click",f),n.querySelector(".button--deleteOccupancyTypePrint").addEventListener("click",b),c.append(n)}}function S(){if(c.innerHTML='

(All '+e.escapedAliases.Occupancy+' Types)

',t.innerHTML="",T(c.querySelector("#container--allOccupancyTypeFields"),void 0,a),c.querySelector(".button--addOccupancyTypeField").addEventListener("click",d),0===n.length)return c.insertAdjacentHTML("afterbegin",`
There are no active ${e.escapedAliases.occupancy} types.

\n
`),void t.insertAdjacentHTML("afterbegin",`
There are no active ${e.escapedAliases.occupancy} types.

\n
`);for(const a of n){{const t=document.createElement("div");t.className="panel container--occupancyType",t.dataset.occupancyTypeId=a.occupancyTypeId.toString(),t.innerHTML='

'+cityssm.escapeHTML(a.occupancyType)+'

'+e.getMoveUpDownButtonFieldHTML("button--moveOccupancyTypeUp","button--moveOccupancyTypeDown")+"
",T(t,a.occupancyTypeId,a.occupancyTypeFields),t.querySelector(".button--toggleOccupancyTypeFields").addEventListener("click",i),t.querySelector(".button--deleteOccupancyType").addEventListener("click",o),t.querySelector(".button--editOccupancyType").addEventListener("click",p),t.querySelector(".button--addOccupancyTypeField").addEventListener("click",d),t.querySelector(".button--moveOccupancyTypeUp").addEventListener("click",u),t.querySelector(".button--moveOccupancyTypeDown").addEventListener("click",u),c.append(t)}{const e=document.createElement("div");e.className="panel container--occupancyTypePrintList",e.dataset.occupancyTypeId=a.occupancyTypeId.toString(),e.innerHTML='

'+cityssm.escapeHTML(a.occupancyType)+'

',g(e,a.occupancyTypeId,a.occupancyTypePrints),e.querySelector(".button--addOccupancyTypePrint").addEventListener("click",m),t.append(e)}}}document.querySelector("#button--addOccupancyType").addEventListener("click",()=>{let c;function t(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/admin/doAddOccupancyType",t.currentTarget,t=>{var a;const s=t;s.success?(c(),n=s.occupancyTypes,S()):bulmaJS.alert({title:`Error Adding ${e.escapedAliases.Occupancy} Type`,message:null!==(a=s.errorMessage)&&void 0!==a?a:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyType",{onshow:c=>{e.populateAliases(c)},onshown:(e,n)=>{c=n,e.querySelector("#occupancyTypeAdd--occupancyType").focus(),e.querySelector("form").addEventListener("submit",t),bulmaJS.toggleHtmlClipped()},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}),S()})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const c=exports.los,n=document.querySelector("#container--occupancyTypes"),t=document.querySelector("#container--occupancyTypePrints");let a=exports.occupancyTypes;delete exports.occupancyTypes;let i=exports.allOccupancyTypeFields;delete exports.allOccupancyTypeFields;const l=new Set;function s(e){var c;const n=e.currentTarget,t=n.closest(".container--occupancyType"),a=Number.parseInt(null!==(c=t.dataset.occupancyTypeId)&&void 0!==c?c:"",10);l.has(a)?l.delete(a):l.add(a),n.innerHTML=l.has(a)?'':'';const i=t.querySelectorAll(".panel-block");for(const e of i)e.classList.toggle("is-hidden")}function o(e){var n;const t=e;t.success?(a=t.occupancyTypes,i=t.allOccupancyTypeFields,O()):bulmaJS.alert({title:`Error Updating ${c.escapedAliases.Occupancy} Type`,message:null!==(n=t.errorMessage)&&void 0!==n?n:"",contextualColorName:"danger"})}function d(e){var n;const t=Number.parseInt(null!==(n=e.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId)&&void 0!==n?n:"",10);bulmaJS.confirm({title:`Delete ${c.escapedAliases.Occupancy} Type`,message:`Are you sure you want to delete this ${c.escapedAliases.occupancy} type?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${c.escapedAliases.Occupancy} Type`,callbackFunction:function(){cityssm.postJSON(`${c.urlPrefix}/admin/doDeleteOccupancyType`,{occupancyTypeId:t},o)}}})}function p(e){var n;const t=Number.parseInt(null!==(n=e.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId)&&void 0!==n?n:"",10),i=a.find(e=>t===e.occupancyTypeId);let l;function s(e){e.preventDefault(),cityssm.postJSON(`${c.urlPrefix}/admin/doUpdateOccupancyType`,e.currentTarget,e=>{const c=e;o(c),c.success&&l()})}cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyType",{onshow(e){c.populateAliases(e),e.querySelector("#occupancyTypeEdit--occupancyTypeId").value=t.toString(),e.querySelector("#occupancyTypeEdit--occupancyType").value=i.occupancyType},onshown(e,c){var n;l=c,e.querySelector("#occupancyTypeEdit--occupancyType").focus(),null===(n=e.querySelector("form"))||void 0===n||n.addEventListener("submit",s),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function u(e){var n;const t=Number.parseInt(null!==(n=e.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId)&&void 0!==n?n:"",10);let a;function i(e){e.preventDefault(),cityssm.postJSON(`${c.urlPrefix}/admin/doAddOccupancyTypeField`,e.currentTarget,e=>{const c=e;l.add(t),o(c),c.success&&(a(),y(t,c.occupancyTypeFieldId))})}cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypeField",{onshow(e){c.populateAliases(e),t&&(e.querySelector("#occupancyTypeFieldAdd--occupancyTypeId").value=t.toString())},onshown(e,c){var n;a=c,e.querySelector("#occupancyTypeFieldAdd--occupancyTypeField").focus(),null===(n=e.querySelector("form"))||void 0===n||n.addEventListener("submit",i),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}function r(e){const n=e.currentTarget,t=e.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId;cityssm.postJSON(c.urlPrefix+"/admin/"+("up"===n.dataset.direction?"doMoveOccupancyTypeUp":"doMoveOccupancyTypeDown"),{occupancyTypeId:t,moveToEnd:e.shiftKey?"1":"0"},o)}function y(e,n){var t;let l;e&&(l=a.find(c=>c.occupancyTypeId===e));const s=(l?null!==(t=l.occupancyTypeFields)&&void 0!==t?t:[]:i).find(e=>e.occupancyTypeFieldId===n);let d,p,u,r,y;function v(){p.min=d.value}function T(){""===r.value?(d.disabled=!1,p.disabled=!1,u.disabled=!1):(d.disabled=!0,p.disabled=!0,u.disabled=!0)}function m(e){e.preventDefault(),cityssm.postJSON(`${c.urlPrefix}/admin/doUpdateOccupancyTypeField`,e.currentTarget,e=>{const c=e;o(c),c.success&&y()})}function f(){cityssm.postJSON(`${c.urlPrefix}/admin/doDeleteOccupancyTypeField`,{occupancyTypeFieldId:n},e=>{const c=e;o(c),c.success&&y()})}function b(){bulmaJS.confirm({title:"Delete Field",message:"Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.",contextualColorName:"warning",okButton:{text:"Yes, Delete Field",callbackFunction:f}})}cityssm.openHtmlModal("adminOccupancyTypes-editOccupancyTypeField",{onshow:e=>{var n,t,a,i,l,o,y,v;c.populateAliases(e),e.querySelector("#occupancyTypeFieldEdit--occupancyTypeFieldId").value=s.occupancyTypeFieldId.toString(),e.querySelector("#occupancyTypeFieldEdit--occupancyTypeField").value=null!==(n=s.occupancyTypeField)&&void 0!==n?n:"",e.querySelector("#occupancyTypeFieldEdit--isRequired").value=null!==(t=s.isRequired)&&void 0!==t&&t?"1":"0",(d=e.querySelector("#occupancyTypeFieldEdit--minimumLength")).value=null!==(i=null===(a=s.minimumLength)||void 0===a?void 0:a.toString())&&void 0!==i?i:"",(p=e.querySelector("#occupancyTypeFieldEdit--maximumLength")).value=null!==(o=null===(l=s.maximumLength)||void 0===l?void 0:l.toString())&&void 0!==o?o:"",(u=e.querySelector("#occupancyTypeFieldEdit--pattern")).value=null!==(y=s.pattern)&&void 0!==y?y:"",(r=e.querySelector("#occupancyTypeFieldEdit--occupancyTypeFieldValues")).value=null!==(v=s.occupancyTypeFieldValues)&&void 0!==v?v:"",T()},onshown:(e,c)=>{var n,t;y=c,bulmaJS.init(e),bulmaJS.toggleHtmlClipped(),cityssm.enableNavBlocker(),null===(n=e.querySelector("form"))||void 0===n||n.addEventListener("submit",m),d.addEventListener("keyup",v),v(),r.addEventListener("keyup",T),null===(t=e.querySelector("#button--deleteOccupancyTypeField"))||void 0===t||t.addEventListener("click",b)},onremoved:()=>{bulmaJS.toggleHtmlClipped(),cityssm.disableNavBlocker()}})}function v(e){var c,n;e.preventDefault();const t=Number.parseInt(null!==(c=e.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId)&&void 0!==c?c:"",10);y(Number.parseInt(null!==(n=e.currentTarget.closest(".container--occupancyType").dataset.occupancyTypeId)&&void 0!==n?n:"",10),t)}function T(e){const n=e.currentTarget,t=e.currentTarget.closest(".container--occupancyTypeField").dataset.occupancyTypeFieldId;cityssm.postJSON(c.urlPrefix+"/admin/"+("up"===n.dataset.direction?"doMoveOccupancyTypeFieldUp":"doMoveOccupancyTypeFieldDown"),{occupancyTypeFieldId:t,moveToEnd:e.shiftKey?"1":"0"},o)}function m(e,n,t){var a,i;if(0===t.length)e.insertAdjacentHTML("beforeend",`
\n

There are no additional fields.

\n
`);else for(const s of t){const t=document.createElement("div");t.className="panel-block is-block container--occupancyTypeField",n&&!l.has(n)&&t.classList.add("is-hidden"),t.dataset.occupancyTypeFieldId=s.occupancyTypeFieldId.toString(),t.innerHTML=`
\n \n
\n
\n ${c.getMoveUpDownButtonFieldHTML("button--moveOccupancyTypeFieldUp","button--moveOccupancyTypeFieldDown")}\n
\n
\n
`,null===(i=t.querySelector(".button--editOccupancyTypeField"))||void 0===i||i.addEventListener("click",v),t.querySelector(".button--moveOccupancyTypeFieldUp").addEventListener("click",T),t.querySelector(".button--moveOccupancyTypeFieldDown").addEventListener("click",T),e.append(t)}}function f(e){var n;const t=null!==(n=e.currentTarget.closest(".container--occupancyTypePrintList").dataset.occupancyTypeId)&&void 0!==n?n:"";let a;function i(e){e.preventDefault(),cityssm.postJSON(`${c.urlPrefix}/admin/doAddOccupancyTypePrint`,e.currentTarget,e=>{const c=e;c.success&&a(),o(c)})}cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyTypePrint",{onshow(e){c.populateAliases(e),e.querySelector("#occupancyTypePrintAdd--occupancyTypeId").value=t;const n=e.querySelector("#occupancyTypePrintAdd--printEJS");for(const[e,c]of Object.entries(exports.occupancyTypePrintTitles)){const t=document.createElement("option");t.value=e,t.textContent=c,n.append(t)}},onshown(e,c){var n;a=c,null===(n=e.querySelector("form"))||void 0===n||n.addEventListener("submit",i)}})}function b(e){const n=e.currentTarget,t=n.closest(".container--occupancyTypePrint").dataset.printEJS,a=n.closest(".container--occupancyTypePrintList").dataset.occupancyTypeId;cityssm.postJSON(c.urlPrefix+"/admin/"+("up"===n.dataset.direction?"doMoveOccupancyTypePrintUp":"doMoveOccupancyTypePrintDown"),{occupancyTypeId:a,printEJS:t,moveToEnd:e.shiftKey?"1":"0"},o)}function g(e){e.preventDefault();const n=e.currentTarget.closest(".container--occupancyTypePrint").dataset.printEJS,t=e.currentTarget.closest(".container--occupancyTypePrintList").dataset.occupancyTypeId;bulmaJS.confirm({title:"Delete Print",message:"Are you sure you want to remove this print option?",contextualColorName:"warning",okButton:{text:"Yes, Remove Print",callbackFunction:function(){cityssm.postJSON(`${c.urlPrefix}/admin/doDeleteOccupancyTypePrint`,{occupancyTypeId:t,printEJS:n},o)}}})}function S(e,n,t){var a;if(0===t.length)e.insertAdjacentHTML("beforeend",'
\n
\n

There are no prints associated with this record.

\n
\n
');else for(const n of t){const t=document.createElement("div");t.className="panel-block is-block container--occupancyTypePrint",t.dataset.printEJS=n;const i="*"===n?"(All Available Prints)":exports.occupancyTypePrintTitles[n];let l="fa-star";n.startsWith("pdf/")?l="fa-file-pdf":n.startsWith("screen/")&&(l="fa-file"),t.innerHTML=`
\n
\n
\n \n
\n
\n ${cityssm.escapeHTML(i||n)}\n
\n
\n
\n
\n ${c.getMoveUpDownButtonFieldHTML("button--moveOccupancyTypePrintUp","button--moveOccupancyTypePrintDown")}\n
\n
\n \n
\n
\n
`,t.querySelector(".button--moveOccupancyTypePrintUp").addEventListener("click",b),t.querySelector(".button--moveOccupancyTypePrintDown").addEventListener("click",b),null===(a=t.querySelector(".button--deleteOccupancyTypePrint"))||void 0===a||a.addEventListener("click",g),e.append(t)}}function O(){var e,o,y,v,T,b,g,O;if(n.innerHTML=`
\n
\n
\n
\n
\n

(All ${c.escapedAliases.Occupancy} Types)

\n
\n
\n
\n
\n \n
\n
\n
\n
\n
`,t.innerHTML="",m(n.querySelector("#container--allOccupancyTypeFields"),void 0,i),null===(e=n.querySelector(".button--addOccupancyTypeField"))||void 0===e||e.addEventListener("click",u),0===a.length)return n.insertAdjacentHTML("afterbegin",`
There are no active ${c.escapedAliases.occupancy} types.

\n
`),void t.insertAdjacentHTML("afterbegin",`
There are no active ${c.escapedAliases.occupancy} types.

\n
`);for(const e of a){const a=document.createElement("div");a.className="panel container--occupancyType",a.dataset.occupancyTypeId=e.occupancyTypeId.toString(),a.innerHTML=`
\n
\n
\n
\n \n
\n
\n

${cityssm.escapeHTML(e.occupancyType)}

\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n ${c.getMoveUpDownButtonFieldHTML("button--moveOccupancyTypeUp","button--moveOccupancyTypeDown")}\n
\n
\n
\n
`,m(a,e.occupancyTypeId,null!==(o=e.occupancyTypeFields)&&void 0!==o?o:[]),null===(y=a.querySelector(".button--toggleOccupancyTypeFields"))||void 0===y||y.addEventListener("click",s),null===(v=a.querySelector(".button--deleteOccupancyType"))||void 0===v||v.addEventListener("click",d),null===(T=a.querySelector(".button--editOccupancyType"))||void 0===T||T.addEventListener("click",p),null===(b=a.querySelector(".button--addOccupancyTypeField"))||void 0===b||b.addEventListener("click",u),a.querySelector(".button--moveOccupancyTypeUp").addEventListener("click",r),a.querySelector(".button--moveOccupancyTypeDown").addEventListener("click",r),n.append(a);const i=document.createElement("div");i.className="panel container--occupancyTypePrintList",i.dataset.occupancyTypeId=e.occupancyTypeId.toString(),i.innerHTML=`
\n
\n
\n
\n

${cityssm.escapeHTML(e.occupancyType)}

\n
\n
\n
\n
\n \n
\n
\n
\n
`,S(i,e.occupancyTypeId,null!==(g=e.occupancyTypePrints)&&void 0!==g?g:[]),null===(O=i.querySelector(".button--addOccupancyTypePrint"))||void 0===O||O.addEventListener("click",f),t.append(i)}}null===(e=document.querySelector("#button--addOccupancyType"))||void 0===e||e.addEventListener("click",()=>{let e;function n(n){n.preventDefault(),cityssm.postJSON(c.urlPrefix+"/admin/doAddOccupancyType",n.currentTarget,n=>{var t;const i=n;i.success?(e(),a=i.occupancyTypes,O()):bulmaJS.alert({title:`Error Adding ${c.escapedAliases.Occupancy} Type`,message:null!==(t=i.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("adminOccupancyTypes-addOccupancyType",{onshow(e){c.populateAliases(e)},onshown(c,t){var a;e=t,c.querySelector("#occupancyTypeAdd--occupancyType").focus(),null===(a=c.querySelector("form"))||void 0===a||a.addEventListener("submit",n),bulmaJS.toggleHtmlClipped()},onremoved(){bulmaJS.toggleHtmlClipped()}})}),O()})(); \ No newline at end of file diff --git a/public/javascripts/workOrderEdit.min.js b/public/javascripts/workOrderEdit.min.js index 39341148..64f47b11 100644 --- a/public/javascripts/workOrderEdit.min.js +++ b/public/javascripts/workOrderEdit.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e,t;const o=exports.los,r=document.querySelector("#workOrderEdit--workOrderId").value,s=""===r,n=document.querySelector("#form--workOrderEdit");function a(){var e;o.setUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.remove("is-light")}function l(){var e;o.clearUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.add("is-light")}o.initializeDatePickers(null===(S=n.querySelector("#workOrderEdit--workOrderOpenDateString"))||void 0===S?void 0:S.closest(".field")),o.initializeUnlockFieldButtons(n),n.addEventListener("submit",e=>{e.preventDefault(),cityssm.postJSON(o.urlPrefix+"/workOrders/"+(s?"doCreateWorkOrder":"doUpdateWorkOrder"),e.currentTarget,e=>{var t;const r=e;r.success?(l(),s?window.location.href=o.getWorkOrderURL(r.workOrderId,!0):bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating Work Order",message:null!==(t=r.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})});const i=n.querySelectorAll("input, select, textarea");for(const e of i)e.addEventListener("change",a);function c(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doCloseWorkOrder`,{workOrderId:r},e=>{var t;const s=e;s.success?(l(),window.location.href=o.getWorkOrderURL(r)):bulmaJS.alert({title:"Error Closing Work Order",message:null!==(t=s.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}function d(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doDeleteWorkOrder`,{workOrderId:r},e=>{var t;const r=e;r.success?(l(),window.location.href=`${o.urlPrefix}/workOrders`):bulmaJS.alert({title:"Error Deleting Work Order",message:null!==(t=r.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}let u;if(null===(m=document.querySelector("#button--closeWorkOrder"))||void 0===m||m.addEventListener("click",()=>{u.some(e=>!e.workOrderMilestoneCompletionDate)?bulmaJS.alert({title:"Outstanding Milestones",message:"You cannot close a work order with outstanding milestones.\n Either complete the outstanding milestones, or remove them from the work order.",contextualColorName:"warning"}):bulmaJS.confirm({title:"Close Work Order",message:o.hasUnsavedChanges()?"Are you sure you want to close this work order with unsaved changes?":"Are you sure you want to close this work order?",contextualColorName:o.hasUnsavedChanges()?"warning":"info",okButton:{text:"Yes, Close Work Order",callbackFunction:c}})}),null===(e=document.querySelector("#button--deleteWorkOrder"))||void 0===e||e.addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:"Delete Work Order",message:"Are you sure you want to delete this work order?",contextualColorName:"warning",okButton:{text:"Yes, Delete Work Order",callbackFunction:d}})}),!s){var m;Object.defineProperty(exports,"__esModule",{value:!0});let e=exports.workOrderLots;delete exports.workOrderLots;let t=exports.workOrderLotOccupancies;function p(e){const s=e.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:`Delete ${o.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${o.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doDeleteWorkOrderLotOccupancy",{workOrderId:r,lotOccupancyId:s},e=>{var o;const r=e;r.success?(t=r.workOrderLotOccupancies,k()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function y(t,s){cityssm.postJSON(o.urlPrefix+"/workOrders/doAddWorkOrderLot",{workOrderId:r,lotId:t},t=>{var r;const n=t;n.success?(e=n.workOrderLots,k()):bulmaJS.alert({title:`Error Adding ${o.escapedAliases.Lot}`,message:null!==(r=n.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"}),void 0!==s&&s(n.success)})}function O(e){y(e.currentTarget.dataset.lotId)}function h(t){const s=Number.parseInt(t.currentTarget.closest(".container--lot").dataset.lotId,10),n=e.find(e=>e.lotId===s);let a;function l(t){t.preventDefault(),cityssm.postJSON(o.urlPrefix+"/workOrders/doUpdateLotStatus",t.currentTarget,t=>{var o;const r=t;r.success?(e=r.workOrderLots,k(),a()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("lot-editLotStatus",{onshow(e){o.populateAliases(e),e.querySelector("#lotStatusEdit--lotId").value=s.toString(),e.querySelector("#lotStatusEdit--lotName").value=n.lotName;const t=e.querySelector("#lotStatusEdit--lotStatusId");let a=!1;for(const e of exports.lotStatuses){const o=document.createElement("option");o.value=e.lotStatusId.toString(),o.textContent=e.lotStatus,e.lotStatusId===n.lotStatusId&&(a=!0),t.append(o)}if(!a&&n.lotStatusId){const e=document.createElement("option");e.value=n.lotStatusId.toString(),e.textContent=n.lotStatus,t.append(e)}n.lotStatusId&&(t.value=n.lotStatusId.toString()),e.querySelector("form").insertAdjacentHTML("beforeend",``)},onshown(e,t){a=t,bulmaJS.toggleHtmlClipped(),e.querySelector("form").addEventListener("submit",l)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function g(t){const s=t.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:`Delete ${o.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${o.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doDeleteWorkOrderLot",{workOrderId:r,lotId:s},t=>{var o;const r=t;r.success?(e=r.workOrderLots,k()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function k(){!function(){var r,s,n,a;const l=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=t.length.toString(),0===t.length)return void(l.innerHTML=`
\n

There are no ${o.escapedAliases.occupancies} associated with this work order.

\n
`);l.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n
${o.escapedAliases.Occupancy} Type${o.escapedAliases.Lot}${o.escapedAliases.OccupancyStartDate}End Date${o.escapedAliases.Occupants}
`;const i=cityssm.dateToString(new Date);for(const c of t){const t=document.createElement("tr");t.className="container--lotOccupancy",t.dataset.lotOccupancyId=c.lotOccupancyId.toString();const d=!(c.occupancyEndDate&&c.occupancyEndDateStringc.lotId===e.lotId);t.innerHTML=''+(d?'':'')+''+cityssm.escapeHTML(null!==(r=c.occupancyType)&&void 0!==r?r:"")+"
"+`#${c.lotOccupancyId}`+"",c.lotId?t.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=c.lotName)&&void 0!==s?s:"")+(u?"":' ')+""):t.insertAdjacentHTML("beforeend",`(No ${o.escapedAliases.Lot})`);let m="";for(const e of c.lotOccupancyOccupants)m+=`
  • \n \n \n \n ${cityssm.escapeHTML(e.occupantName)}\n ${cityssm.escapeHTML(e.occupantFamilyName)}\n
  • `;t.insertAdjacentHTML("beforeend",""+c.occupancyStartDateString+""+(c.occupancyEndDate?c.occupancyEndDateString:'(No End Date)')+""+(0===c.lotOccupancyOccupants.length?`(No ${o.escapedAliases.Occupants})`:`
      ${m}
    `)+''),null===(a=t.querySelector(".button--addLot"))||void 0===a||a.addEventListener("click",O),t.querySelector(".button--deleteLotOccupancy").addEventListener("click",p),l.querySelector("tbody").append(t)}}(),function(){var t,r,s,n;const a=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=e.length.toString(),0!==e.length){a.innerHTML=`\n \n \n \n \n \n \n \n \n
    ${o.escapedAliases.Lot}${o.escapedAliases.Map}${o.escapedAliases.Lot} TypeStatus
    `;for(const l of e){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=l.lotId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(t=l.lotName)&&void 0!==t?t:"")+""+`${cityssm.escapeHTML(null!==(r=l.mapName)&&void 0!==r?r:"")}`+`${cityssm.escapeHTML(null!==(s=l.lotType)&&void 0!==s?s:"")}`+""+(l.lotStatusId?cityssm.escapeHTML(null!==(n=l.lotStatus)&&void 0!==n?n:""):'(No Status)')+'\n \n \n ',e.querySelector(".button--editLotStatus").addEventListener("click",h),e.querySelector(".button--deleteLot").addEventListener("click",g),a.querySelector("tbody").append(e)}}else a.innerHTML=`
    \n

    There are no ${o.escapedAliases.lots} associated with this work order.

    \n
    `}()}function w(e){const s=e.currentTarget.closest("tr");!function(e,s){cityssm.postJSON(o.urlPrefix+"/workOrders/doAddWorkOrderLotOccupancy",{workOrderId:r,lotOccupancyId:e},e=>{var r;const n=e;n.success?(t=n.workOrderLotOccupancies,k()):bulmaJS.alert({title:"Error Adding "+o.escapedAliases.Occupancy,message:null!==(r=n.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"}),void 0!==s&&s(n.success)})}(s.dataset.lotOccupancyId,e=>{e&&s.remove()})}function v(e){const t=e.currentTarget.closest("tr");y(t.dataset.lotId,e=>{e&&t.remove()})}delete exports.workOrderLotOccupancies,k(),null===(S=document.querySelector("#button--addLotOccupancy"))||void 0===S||S.addEventListener("click",()=>{let e,t;function s(r){r&&r.preventDefault(),t.innerHTML=o.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(o.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,e=>{var r,s;const n=e;if(0!==n.lotOccupancies.length){t.innerHTML=`\n \n \n \n \n \n \n \n \n \n
    ${o.escapedAliases.Occupancy} Type${o.escapedAliases.Lot}${o.escapedAliases.OccupancyStartDate}End Date${o.escapedAliases.Occupants}
    `;for(const e of n.lotOccupancies){const n=document.createElement("tr");n.className="container--lotOccupancy",n.dataset.lotOccupancyId=e.lotOccupancyId.toString(),n.innerHTML=`\n \n \n \n ${cityssm.escapeHTML(null!==(r=e.occupancyType)&&void 0!==r?r:"")}\n `,e.lotId?n.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=e.lotName)&&void 0!==s?s:"")+""):n.insertAdjacentHTML("beforeend",`(No ${o.escapedAliases.Lot})`),n.insertAdjacentHTML("beforeend",`${e.occupancyStartDateString}`+""+(e.occupancyEndDate?e.occupancyEndDateString:'(No End Date)')+""+(0===e.lotOccupancyOccupants.length?`(No ${cityssm.escapeHTML(o.escapedAliases.Occupants)})`:cityssm.escapeHTML(e.lotOccupancyOccupants[0].occupantName+" "+e.lotOccupancyOccupants[0].occupantFamilyName)+(e.lotOccupancyOccupants.length>1?" plus "+(e.lotOccupancyOccupants.length-1).toString():""))+""),n.querySelector(".button--addLotOccupancy").addEventListener("click",w),t.querySelector("tbody").append(n)}}else t.innerHTML='
    \n

    There are no records that meet the search criteria.

    \n
    '})}cityssm.openHtmlModal("workOrder-addLotOccupancy",{onshow(n){o.populateAliases(n),e=n.querySelector("form"),t=n.querySelector("#resultsContainer--lotOccupancyAdd"),n.querySelector("#lotOccupancySearch--notWorkOrderId").value=r,n.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotOccupancySearch--occupantName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotOccupancySearch--lotName").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLotOccupancy").focus()}})}),null===(m=document.querySelector("#button--addLot"))||void 0===m||m.addEventListener("click",()=>{let e,t;function s(r){r&&r.preventDefault(),t.innerHTML=o.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(o.urlPrefix+"/lots/doSearchLots",e,e=>{var r,s,n,a;const l=e;if(0!==l.lots.length){t.innerHTML=`\n \n \n \n \n \n \n \n \n
    ${o.escapedAliases.Lot}${o.escapedAliases.Map}${o.escapedAliases.Lot} TypeStatus
    `;for(const e of l.lots){const o=document.createElement("tr");o.className="container--lot",o.dataset.lotId=e.lotId.toString(),o.innerHTML=''+cityssm.escapeHTML(null!==(r=e.lotName)&&void 0!==r?r:"")+""+cityssm.escapeHTML(null!==(s=e.mapName)&&void 0!==s?s:"")+""+cityssm.escapeHTML(null!==(n=e.lotType)&&void 0!==n?n:"")+""+cityssm.escapeHTML(null!==(a=e.lotStatus)&&void 0!==a?a:"")+"",o.querySelector(".button--addLot").addEventListener("click",v),t.querySelector("tbody").append(o)}}else t.innerHTML='

    There are no records that meet the search criteria.

    '})}cityssm.openHtmlModal("workOrder-addLot",{onshow(n){o.populateAliases(n),e=n.querySelector("form"),t=n.querySelector("#resultsContainer--lotAdd"),n.querySelector("#lotSearch--notWorkOrderId").value=r;const a=n.querySelector("#lotSearch--lotStatusId");for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,a.append(t)}s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotSearch--lotName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotSearch--lotStatusId").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLot").focus()}})})}var S;Object.defineProperty(exports,"__esModule",{value:!0});let f=exports.workOrderComments;function b(e){const t=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10),s=f.find(e=>e.workOrderCommentId===t);let n,a;function l(e){e.preventDefault(),cityssm.postJSON(o.urlPrefix+"/workOrders/doUpdateWorkOrderComment",n,e=>{var t;e.success?(f=e.workOrderComments,a(),L()):bulmaJS.alert({title:"Error Updating Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("workOrder-editComment",{onshow(e){e.querySelector("#workOrderCommentEdit--workOrderId").value=r,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=t.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=s.workOrderComment;const o=e.querySelector("#workOrderCommentEdit--workOrderCommentDateString");o.value=s.workOrderCommentDateString;const n=cityssm.dateToString(new Date);o.max=s.workOrderCommentDateString<=n?n:s.workOrderCommentDateString,e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=s.workOrderCommentTimeString},onshown(e,t){bulmaJS.toggleHtmlClipped(),o.initializeDatePickers(e),e.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(n=e.querySelector("form")).addEventListener("submit",l),a=t},onremoved(){bulmaJS.toggleHtmlClipped()}})}function M(e){const t=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doDeleteWorkOrderComment",{workOrderId:r,workOrderCommentId:t},e=>{var t;e.success?(f=e.workOrderComments,L()):bulmaJS.alert({title:"Error Removing Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function L(){var e,t;const o=document.querySelector("#container--workOrderComments");if(0===f.length)return void(o.innerHTML='
    \n

    There are no comments to display.

    \n
    ');const r=document.createElement("table");r.className="table is-fullwidth is-striped is-hoverable",r.innerHTML='\n Commentor\n Comment Date\n Comment\n Options';for(const o of f){const s=document.createElement("tr");s.dataset.workOrderCommentId=o.workOrderCommentId.toString(),s.innerHTML=""+cityssm.escapeHTML(null!==(e=o.recordCreate_userName)&&void 0!==e?e:"")+""+o.workOrderCommentDateString+(0===o.workOrderCommentTime?"":" "+o.workOrderCommentTimePeriodString)+""+cityssm.escapeHTML(null!==(t=o.workOrderComment)&&void 0!==t?t:"")+'
    ',s.querySelector(".button--edit").addEventListener("click",b),s.querySelector(".button--delete").addEventListener("click",M),r.querySelector("tbody").append(s)}o.innerHTML="",o.append(r)}function T(e){for(const t of e.querySelectorAll(".panel-block"))t.remove()}function C(e,t){T(t),t.insertAdjacentHTML("beforeend",`
    \n ${o.getLoadingParagraphHTML("Loading conflicting milestones...")}\n
    `),cityssm.postJSON(`${o.urlPrefix}/workOrders/doGetWorkOrderMilestones`,{workOrderMilestoneDateFilter:"date",workOrderMilestoneDateString:e},o=>{var s,n,a,l;const i=o.workOrderMilestones.filter(e=>e.workOrderId.toString()!==r);T(t);for(const e of i)t.insertAdjacentHTML("beforeend",`
    \n
    \n
    \n ${cityssm.escapeHTML(0===e.workOrderMilestoneTime?"No Time":null!==(s=e.workOrderMilestoneTimePeriodString)&&void 0!==s?s:"")}
    \n ${cityssm.escapeHTML(null!==(n=e.workOrderMilestoneType)&&void 0!==n?n:"")}\n
    \n
    \n ${cityssm.escapeHTML(null!==(a=e.workOrderNumber)&&void 0!==a?a:"")}
    \n \n ${cityssm.escapeHTML(null!==(l=e.workOrderDescription)&&void 0!==l?l:"")}\n \n
    \n
    \n
    `);0===i.length&&t.insertAdjacentHTML("beforeend",`
    \n
    \n

    \n There are no milestones on other work orders scheduled for\n ${cityssm.escapeHTML(e)}.\n

    \n
    \n
    `)})}function I(e){var t;const o=e;o.success?(u=o.workOrderMilestones,A()):bulmaJS.alert({title:"Error Reopening Milestone",message:null!==(t=o.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})}function x(e){e.preventDefault();const t=cityssm.dateToString(new Date),s=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),n=u.find(e=>e.workOrderMilestoneId===s);bulmaJS.confirm({title:"Complete Milestone",message:"Are you sure you want to complete this milestone?"+(""!==n.workOrderMilestoneDateString&&n.workOrderMilestoneDateString>t?"
    Note that this milestone is expected to be completed in the future.":""),messageIsHtml:!0,contextualColorName:"warning",okButton:{text:"Yes, Complete Milestone",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doCompleteWorkOrderMilestone",{workOrderId:r,workOrderMilestoneId:s},I)}}})}function E(e){e.preventDefault();const t=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Reopen Milestone",message:"Are you sure you want to remove the completion status from this milestone, and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Milestone",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doReopenWorkOrderMilestone",{workOrderId:r,workOrderMilestoneId:t},I)}}})}function D(e){e.preventDefault();const t=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Delete Milestone",message:"Are you sure you want to delete this milestone?",contextualColorName:"warning",okButton:{text:"Yes, Delete Milestone",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doDeleteWorkOrderMilestone",{workOrderMilestoneId:t,workOrderId:r},I)}}})}function q(e){e.preventDefault();const t=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),s=u.find(e=>e.workOrderMilestoneId===t);let n,a;function l(e){e.preventDefault(),cityssm.postJSON(`${o.urlPrefix}/workOrders/doUpdateWorkOrderMilestone`,e.currentTarget,e=>{const t=e;I(t),t.success&&n()})}cityssm.openHtmlModal("workOrder-editMilestone",{onshow(e){var t,o,n,l,i;e.querySelector("#milestoneEdit--workOrderId").value=r,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=null!==(o=null===(t=s.workOrderMilestoneId)||void 0===t?void 0:t.toString())&&void 0!==o?o:"";const c=e.querySelector("#milestoneEdit--workOrderMilestoneTypeId");let d=!1;for(const e of exports.workOrderMilestoneTypes){const t=document.createElement("option");t.value=e.workOrderMilestoneTypeId.toString(),t.textContent=e.workOrderMilestoneType,e.workOrderMilestoneTypeId===s.workOrderMilestoneTypeId&&(t.selected=!0,d=!0),c.append(t)}if(!d&&s.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=s.workOrderMilestoneTypeId.toString(),e.textContent=s.workOrderMilestoneType,e.selected=!0,c.append(e)}(a=e.querySelector("#milestoneEdit--workOrderMilestoneDateString")).value=null!==(n=s.workOrderMilestoneDateString)&&void 0!==n?n:"",s.workOrderMilestoneTime&&(e.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value=null!==(l=s.workOrderMilestoneTimeString)&&void 0!==l?l:""),e.querySelector("#milestoneEdit--workOrderMilestoneDescription").value=null!==(i=s.workOrderMilestoneDescription)&&void 0!==i?i:""},onshown(e,t){var r;n=t,bulmaJS.toggleHtmlClipped(),o.initializeDatePickers(e),null===(r=e.querySelector("form"))||void 0===r||r.addEventListener("submit",l);const s=document.querySelector("#milestoneEdit--conflictingMilestonesPanel");a.addEventListener("change",()=>{C(a.value,s)}),C(a.value,s)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function A(){var e,t,o,r,s;const n=document.querySelector("#panel--milestones"),a=n.querySelectorAll(".panel-block");for(const e of a)e.remove();for(const a of u){const l=document.createElement("div");l.className="panel-block is-block container--milestone",l.dataset.workOrderMilestoneId=a.workOrderMilestoneId.toString(),l.innerHTML='
    '+(a.workOrderMilestoneCompletionDate?'':'')+'
    '+(a.workOrderMilestoneTypeId?""+cityssm.escapeHTML(null!==(e=a.workOrderMilestoneType)&&void 0!==e?e:"")+"
    ":"")+(0===a.workOrderMilestoneDate?'(No Set Date)':a.workOrderMilestoneDateString)+(a.workOrderMilestoneTime?" "+a.workOrderMilestoneTimePeriodString:"")+'
    '+cityssm.escapeHTML(null!==(t=a.workOrderMilestoneDescription)&&void 0!==t?t:"")+'
    ',null===(o=l.querySelector(".button--reopenMilestone"))||void 0===o||o.addEventListener("click",E),null===(r=l.querySelector(".button--editMilestone"))||void 0===r||r.addEventListener("click",q),null===(s=l.querySelector(".button--completeMilestone"))||void 0===s||s.addEventListener("click",x),l.querySelector(".button--deleteMilestone").addEventListener("click",D),n.append(l)}bulmaJS.init(n)}delete exports.workOrderComments,null===(S=document.querySelector("#workOrderComments--add"))||void 0===S||S.addEventListener("click",function(){let e;function t(t){t.preventDefault(),cityssm.postJSON(o.urlPrefix+"/workOrders/doAddWorkOrderComment",t.currentTarget,t=>{t.success&&(f=t.workOrderComments,L(),e())})}cityssm.openHtmlModal("workOrder-addComment",{onshow(e){o.populateAliases(e),e.querySelector("#workOrderCommentAdd--workOrderId").value=r,e.querySelector("form").addEventListener("submit",t)},onshown(t,o){bulmaJS.toggleHtmlClipped(),e=o,t.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})}),s||L(),s||(u=exports.workOrderMilestones,delete exports.workOrderMilestones,A(),null===(t=document.querySelector("#button--addMilestone"))||void 0===t||t.addEventListener("click",()=>{let e,t,s;function n(r){r&&r.preventDefault();const n=cityssm.dateToString(new Date);function a(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doAddWorkOrderMilestone`,e,e=>{const t=e;I(t),t.success&&s()})}const l=t.value;""!==l&&l{C(t.value,l)}),C(t.value,l)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addMilestone").focus()}})}))})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e,t;const o=exports.los,r=document.querySelector("#workOrderEdit--workOrderId").value,s=""===r,n=document.querySelector("#form--workOrderEdit");function a(){var e;o.setUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.remove("is-light")}function l(){var e;o.clearUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.add("is-light")}o.initializeDatePickers(null===(S=n.querySelector("#workOrderEdit--workOrderOpenDateString"))||void 0===S?void 0:S.closest(".field")),o.initializeUnlockFieldButtons(n),n.addEventListener("submit",e=>{e.preventDefault(),cityssm.postJSON(o.urlPrefix+"/workOrders/"+(s?"doCreateWorkOrder":"doUpdateWorkOrder"),e.currentTarget,e=>{var t;const r=e;r.success?(l(),s?window.location.href=o.getWorkOrderURL(r.workOrderId,!0):bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating Work Order",message:null!==(t=r.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})});const i=n.querySelectorAll("input, select, textarea");for(const e of i)e.addEventListener("change",a);function c(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doCloseWorkOrder`,{workOrderId:r},e=>{var t;const s=e;s.success?(l(),window.location.href=o.getWorkOrderURL(r)):bulmaJS.alert({title:"Error Closing Work Order",message:null!==(t=s.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}function d(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doDeleteWorkOrder`,{workOrderId:r},e=>{var t;const r=e;r.success?(l(),window.location.href=`${o.urlPrefix}/workOrders`):bulmaJS.alert({title:"Error Deleting Work Order",message:null!==(t=r.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}let u;if(null===(m=document.querySelector("#button--closeWorkOrder"))||void 0===m||m.addEventListener("click",()=>{u.some(e=>!e.workOrderMilestoneCompletionDate)?bulmaJS.alert({title:"Outstanding Milestones",message:"You cannot close a work order with outstanding milestones.\n Either complete the outstanding milestones, or remove them from the work order.",contextualColorName:"warning"}):bulmaJS.confirm({title:"Close Work Order",message:o.hasUnsavedChanges()?"Are you sure you want to close this work order with unsaved changes?":"Are you sure you want to close this work order?",contextualColorName:o.hasUnsavedChanges()?"warning":"info",okButton:{text:"Yes, Close Work Order",callbackFunction:c}})}),null===(e=document.querySelector("#button--deleteWorkOrder"))||void 0===e||e.addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:"Delete Work Order",message:"Are you sure you want to delete this work order?",contextualColorName:"warning",okButton:{text:"Yes, Delete Work Order",callbackFunction:d}})}),!s){var m;Object.defineProperty(exports,"__esModule",{value:!0});let e=exports.workOrderLots;delete exports.workOrderLots;let t=exports.workOrderLotOccupancies;function p(e){const s=e.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:`Delete ${o.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${o.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doDeleteWorkOrderLotOccupancy",{workOrderId:r,lotOccupancyId:s},e=>{var o;const r=e;r.success?(t=r.workOrderLotOccupancies,k()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function y(t,s){cityssm.postJSON(o.urlPrefix+"/workOrders/doAddWorkOrderLot",{workOrderId:r,lotId:t},t=>{var r;const n=t;n.success?(e=n.workOrderLots,k()):bulmaJS.alert({title:`Error Adding ${o.escapedAliases.Lot}`,message:null!==(r=n.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"}),void 0!==s&&s(n.success)})}function O(e){y(e.currentTarget.dataset.lotId)}function h(t){const s=Number.parseInt(t.currentTarget.closest(".container--lot").dataset.lotId,10),n=e.find(e=>e.lotId===s);let a;function l(t){t.preventDefault(),cityssm.postJSON(o.urlPrefix+"/workOrders/doUpdateLotStatus",t.currentTarget,t=>{var o;const r=t;r.success?(e=r.workOrderLots,k(),a()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("lot-editLotStatus",{onshow(e){o.populateAliases(e),e.querySelector("#lotStatusEdit--lotId").value=s.toString(),e.querySelector("#lotStatusEdit--lotName").value=n.lotName;const t=e.querySelector("#lotStatusEdit--lotStatusId");let a=!1;for(const e of exports.lotStatuses){const o=document.createElement("option");o.value=e.lotStatusId.toString(),o.textContent=e.lotStatus,e.lotStatusId===n.lotStatusId&&(a=!0),t.append(o)}if(!a&&n.lotStatusId){const e=document.createElement("option");e.value=n.lotStatusId.toString(),e.textContent=n.lotStatus,t.append(e)}n.lotStatusId&&(t.value=n.lotStatusId.toString()),e.querySelector("form").insertAdjacentHTML("beforeend",``)},onshown(e,t){a=t,bulmaJS.toggleHtmlClipped(),e.querySelector("form").addEventListener("submit",l)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function g(t){const s=t.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:`Delete ${o.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${o.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doDeleteWorkOrderLot",{workOrderId:r,lotId:s},t=>{var o;const r=t;r.success?(e=r.workOrderLots,k()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function k(){!function(){var r,s,n,a;const l=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=t.length.toString(),0===t.length)return void(l.innerHTML=`
    \n

    There are no ${o.escapedAliases.occupancies} associated with this work order.

    \n
    `);l.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n
    ${o.escapedAliases.Occupancy} Type${o.escapedAliases.Lot}${o.escapedAliases.OccupancyStartDate}End Date${o.escapedAliases.Occupants}
    `;const i=cityssm.dateToString(new Date);for(const c of t){const t=document.createElement("tr");t.className="container--lotOccupancy",t.dataset.lotOccupancyId=c.lotOccupancyId.toString();const d=!(c.occupancyEndDate&&c.occupancyEndDateStringc.lotId===e.lotId);t.innerHTML=''+(d?'':'')+''+cityssm.escapeHTML(null!==(r=c.occupancyType)&&void 0!==r?r:"")+"
    "+`#${c.lotOccupancyId}`+"",c.lotId?t.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=c.lotName)&&void 0!==s?s:"")+(u?"":' ')+""):t.insertAdjacentHTML("beforeend",`(No ${o.escapedAliases.Lot})`);let m="";for(const e of c.lotOccupancyOccupants)m+=`
  • \n \n \n \n ${cityssm.escapeHTML(e.occupantName)}\n ${cityssm.escapeHTML(e.occupantFamilyName)}\n
  • `;t.insertAdjacentHTML("beforeend",""+c.occupancyStartDateString+""+(c.occupancyEndDate?c.occupancyEndDateString:'(No End Date)')+""+(0===c.lotOccupancyOccupants.length?`(No ${o.escapedAliases.Occupants})`:`
      ${m}
    `)+''),null===(a=t.querySelector(".button--addLot"))||void 0===a||a.addEventListener("click",O),t.querySelector(".button--deleteLotOccupancy").addEventListener("click",p),l.querySelector("tbody").append(t)}}(),function(){var t,r,s,n;const a=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=e.length.toString(),0!==e.length){a.innerHTML=`\n \n \n \n \n \n \n \n \n
    ${o.escapedAliases.Lot}${o.escapedAliases.Map}${o.escapedAliases.Lot} TypeStatus
    `;for(const l of e){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=l.lotId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(t=l.lotName)&&void 0!==t?t:"")+""+`${cityssm.escapeHTML(null!==(r=l.mapName)&&void 0!==r?r:"")}`+`${cityssm.escapeHTML(null!==(s=l.lotType)&&void 0!==s?s:"")}`+""+(l.lotStatusId?cityssm.escapeHTML(null!==(n=l.lotStatus)&&void 0!==n?n:""):'(No Status)')+'\n \n \n ',e.querySelector(".button--editLotStatus").addEventListener("click",h),e.querySelector(".button--deleteLot").addEventListener("click",g),a.querySelector("tbody").append(e)}}else a.innerHTML=`
    \n

    There are no ${o.escapedAliases.lots} associated with this work order.

    \n
    `}()}function w(e){const s=e.currentTarget.closest("tr");!function(e,s){cityssm.postJSON(o.urlPrefix+"/workOrders/doAddWorkOrderLotOccupancy",{workOrderId:r,lotOccupancyId:e},e=>{var r;const n=e;n.success?(t=n.workOrderLotOccupancies,k()):bulmaJS.alert({title:"Error Adding "+o.escapedAliases.Occupancy,message:null!==(r=n.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"}),void 0!==s&&s(n.success)})}(s.dataset.lotOccupancyId,e=>{e&&s.remove()})}function v(e){const t=e.currentTarget.closest("tr");y(t.dataset.lotId,e=>{e&&t.remove()})}delete exports.workOrderLotOccupancies,k(),null===(S=document.querySelector("#button--addLotOccupancy"))||void 0===S||S.addEventListener("click",()=>{let e,t;function s(r){r&&r.preventDefault(),t.innerHTML=o.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(o.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,e=>{var r,s;const n=e;if(0!==n.lotOccupancies.length){t.innerHTML=`\n \n \n \n \n \n \n \n \n \n
    ${o.escapedAliases.Occupancy} Type${o.escapedAliases.Lot}${o.escapedAliases.OccupancyStartDate}End Date${o.escapedAliases.Occupants}
    `;for(const e of n.lotOccupancies){const n=document.createElement("tr");n.className="container--lotOccupancy",n.dataset.lotOccupancyId=e.lotOccupancyId.toString(),n.innerHTML=`\n \n \n \n ${cityssm.escapeHTML(null!==(r=e.occupancyType)&&void 0!==r?r:"")}\n `,e.lotId?n.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=e.lotName)&&void 0!==s?s:"")+""):n.insertAdjacentHTML("beforeend",`(No ${o.escapedAliases.Lot})`),n.insertAdjacentHTML("beforeend",`${e.occupancyStartDateString}`+""+(e.occupancyEndDate?e.occupancyEndDateString:'(No End Date)')+""+(0===e.lotOccupancyOccupants.length?`(No ${cityssm.escapeHTML(o.escapedAliases.Occupants)})`:cityssm.escapeHTML(e.lotOccupancyOccupants[0].occupantName+" "+e.lotOccupancyOccupants[0].occupantFamilyName)+(e.lotOccupancyOccupants.length>1?" plus "+(e.lotOccupancyOccupants.length-1).toString():""))+""),n.querySelector(".button--addLotOccupancy").addEventListener("click",w),t.querySelector("tbody").append(n)}}else t.innerHTML='
    \n

    There are no records that meet the search criteria.

    \n
    '})}cityssm.openHtmlModal("workOrder-addLotOccupancy",{onshow(n){o.populateAliases(n),e=n.querySelector("form"),t=n.querySelector("#resultsContainer--lotOccupancyAdd"),n.querySelector("#lotOccupancySearch--notWorkOrderId").value=r,n.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotOccupancySearch--occupantName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotOccupancySearch--lotName").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLotOccupancy").focus()}})}),null===(m=document.querySelector("#button--addLot"))||void 0===m||m.addEventListener("click",()=>{let e,t;function s(r){r&&r.preventDefault(),t.innerHTML=o.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(o.urlPrefix+"/lots/doSearchLots",e,e=>{var r,s,n,a;const l=e;if(0!==l.lots.length){t.innerHTML=`\n \n \n \n \n \n \n \n \n
    ${o.escapedAliases.Lot}${o.escapedAliases.Map}${o.escapedAliases.Lot} TypeStatus
    `;for(const e of l.lots){const o=document.createElement("tr");o.className="container--lot",o.dataset.lotId=e.lotId.toString(),o.innerHTML=''+cityssm.escapeHTML(null!==(r=e.lotName)&&void 0!==r?r:"")+""+cityssm.escapeHTML(null!==(s=e.mapName)&&void 0!==s?s:"")+""+cityssm.escapeHTML(null!==(n=e.lotType)&&void 0!==n?n:"")+""+cityssm.escapeHTML(null!==(a=e.lotStatus)&&void 0!==a?a:"")+"",o.querySelector(".button--addLot").addEventListener("click",v),t.querySelector("tbody").append(o)}}else t.innerHTML='

    There are no records that meet the search criteria.

    '})}cityssm.openHtmlModal("workOrder-addLot",{onshow(n){o.populateAliases(n),e=n.querySelector("form"),t=n.querySelector("#resultsContainer--lotAdd"),n.querySelector("#lotSearch--notWorkOrderId").value=r;const a=n.querySelector("#lotSearch--lotStatusId");for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,a.append(t)}s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotSearch--lotName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotSearch--lotStatusId").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLot").focus()}})})}var S;Object.defineProperty(exports,"__esModule",{value:!0});let f=exports.workOrderComments;function b(e){const t=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10),s=f.find(e=>e.workOrderCommentId===t);let n,a;function l(e){e.preventDefault(),cityssm.postJSON(o.urlPrefix+"/workOrders/doUpdateWorkOrderComment",n,e=>{var t;e.success?(f=e.workOrderComments,a(),L()):bulmaJS.alert({title:"Error Updating Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("workOrder-editComment",{onshow(e){e.querySelector("#workOrderCommentEdit--workOrderId").value=r,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=t.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=s.workOrderComment;const o=e.querySelector("#workOrderCommentEdit--workOrderCommentDateString");o.value=s.workOrderCommentDateString;const n=cityssm.dateToString(new Date);o.max=s.workOrderCommentDateString<=n?n:s.workOrderCommentDateString,e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=s.workOrderCommentTimeString},onshown(e,t){bulmaJS.toggleHtmlClipped(),o.initializeDatePickers(e),e.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(n=e.querySelector("form")).addEventListener("submit",l),a=t},onremoved(){bulmaJS.toggleHtmlClipped()}})}function M(e){const t=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doDeleteWorkOrderComment",{workOrderId:r,workOrderCommentId:t},e=>{var t;e.success?(f=e.workOrderComments,L()):bulmaJS.alert({title:"Error Removing Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function L(){var e,t;const o=document.querySelector("#container--workOrderComments");if(0===f.length)return void(o.innerHTML='
    \n

    There are no comments to display.

    \n
    ');const r=document.createElement("table");r.className="table is-fullwidth is-striped is-hoverable",r.innerHTML='\n Commentor\n Comment Date\n Comment\n Options';for(const o of f){const s=document.createElement("tr");s.dataset.workOrderCommentId=o.workOrderCommentId.toString(),s.innerHTML=""+cityssm.escapeHTML(null!==(e=o.recordCreate_userName)&&void 0!==e?e:"")+""+o.workOrderCommentDateString+(0===o.workOrderCommentTime?"":" "+o.workOrderCommentTimePeriodString)+""+cityssm.escapeHTML(null!==(t=o.workOrderComment)&&void 0!==t?t:"")+'
    ',s.querySelector(".button--edit").addEventListener("click",b),s.querySelector(".button--delete").addEventListener("click",M),r.querySelector("tbody").append(s)}o.innerHTML="",o.append(r)}function T(e){for(const t of e.querySelectorAll(".panel-block"))t.remove()}function C(e,t){T(t),t.insertAdjacentHTML("beforeend",`
    \n ${o.getLoadingParagraphHTML("Loading conflicting milestones...")}\n
    `),cityssm.postJSON(`${o.urlPrefix}/workOrders/doGetWorkOrderMilestones`,{workOrderMilestoneDateFilter:"date",workOrderMilestoneDateString:e},o=>{var s,n,a,l;const i=o.workOrderMilestones.filter(e=>e.workOrderId.toString()!==r);T(t);for(const e of i)t.insertAdjacentHTML("beforeend",`
    \n
    \n
    \n ${cityssm.escapeHTML(0===e.workOrderMilestoneTime?"No Time":null!==(s=e.workOrderMilestoneTimePeriodString)&&void 0!==s?s:"")}
    \n ${cityssm.escapeHTML(null!==(n=e.workOrderMilestoneType)&&void 0!==n?n:"")}\n
    \n
    \n ${cityssm.escapeHTML(null!==(a=e.workOrderNumber)&&void 0!==a?a:"")}
    \n \n ${cityssm.escapeHTML(null!==(l=e.workOrderDescription)&&void 0!==l?l:"")}\n \n
    \n
    \n
    `);0===i.length&&t.insertAdjacentHTML("beforeend",`
    \n
    \n

    \n There are no milestones on other work orders scheduled for\n ${cityssm.escapeHTML(e)}.\n

    \n
    \n
    `)})}function I(e){var t;const o=e;o.success?(u=o.workOrderMilestones,A()):bulmaJS.alert({title:"Error Reopening Milestone",message:null!==(t=o.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})}function x(e){e.preventDefault();const t=cityssm.dateToString(new Date),s=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),n=u.find(e=>e.workOrderMilestoneId===s);bulmaJS.confirm({title:"Complete Milestone",message:"Are you sure you want to complete this milestone?"+(""!==n.workOrderMilestoneDateString&&n.workOrderMilestoneDateString>t?"
    Note that this milestone is expected to be completed in the future.":""),messageIsHtml:!0,contextualColorName:"warning",okButton:{text:"Yes, Complete Milestone",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doCompleteWorkOrderMilestone",{workOrderId:r,workOrderMilestoneId:s},I)}}})}function E(e){e.preventDefault();const t=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Reopen Milestone",message:"Are you sure you want to remove the completion status from this milestone, and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Milestone",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doReopenWorkOrderMilestone",{workOrderId:r,workOrderMilestoneId:t},I)}}})}function D(e){e.preventDefault();const t=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Delete Milestone",message:"Are you sure you want to delete this milestone?",contextualColorName:"warning",okButton:{text:"Yes, Delete Milestone",callbackFunction:function(){cityssm.postJSON(o.urlPrefix+"/workOrders/doDeleteWorkOrderMilestone",{workOrderMilestoneId:t,workOrderId:r},I)}}})}function q(e){e.preventDefault();const t=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),s=u.find(e=>e.workOrderMilestoneId===t);let n,a;function l(e){e.preventDefault(),cityssm.postJSON(`${o.urlPrefix}/workOrders/doUpdateWorkOrderMilestone`,e.currentTarget,e=>{const t=e;I(t),t.success&&n()})}cityssm.openHtmlModal("workOrder-editMilestone",{onshow(e){var t,o,n,l,i;e.querySelector("#milestoneEdit--workOrderId").value=r,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=null!==(o=null===(t=s.workOrderMilestoneId)||void 0===t?void 0:t.toString())&&void 0!==o?o:"";const c=e.querySelector("#milestoneEdit--workOrderMilestoneTypeId");let d=!1;for(const e of exports.workOrderMilestoneTypes){const t=document.createElement("option");t.value=e.workOrderMilestoneTypeId.toString(),t.textContent=e.workOrderMilestoneType,e.workOrderMilestoneTypeId===s.workOrderMilestoneTypeId&&(t.selected=!0,d=!0),c.append(t)}if(!d&&s.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=s.workOrderMilestoneTypeId.toString(),e.textContent=s.workOrderMilestoneType,e.selected=!0,c.append(e)}(a=e.querySelector("#milestoneEdit--workOrderMilestoneDateString")).value=null!==(n=s.workOrderMilestoneDateString)&&void 0!==n?n:"",s.workOrderMilestoneTime&&(e.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value=null!==(l=s.workOrderMilestoneTimeString)&&void 0!==l?l:""),e.querySelector("#milestoneEdit--workOrderMilestoneDescription").value=null!==(i=s.workOrderMilestoneDescription)&&void 0!==i?i:""},onshown(e,t){var r;n=t,bulmaJS.toggleHtmlClipped(),o.initializeDatePickers(e),null===(r=e.querySelector("form"))||void 0===r||r.addEventListener("submit",l);const s=document.querySelector("#milestoneEdit--conflictingMilestonesPanel");a.addEventListener("change",()=>{C(a.value,s)}),C(a.value,s)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function A(){var e,t,o,r,s,n;const a=document.querySelector("#panel--milestones"),l=a.querySelectorAll(".panel-block");for(const e of l)e.remove();for(const l of u){const i=document.createElement("div");i.className="panel-block is-block container--milestone",i.dataset.workOrderMilestoneId=l.workOrderMilestoneId.toString(),i.innerHTML='
    '+(l.workOrderMilestoneCompletionDate?'':'')+'
    '+(l.workOrderMilestoneTypeId?""+cityssm.escapeHTML(null!==(e=l.workOrderMilestoneType)&&void 0!==e?e:"")+"
    ":"")+(0===l.workOrderMilestoneDate?'(No Set Date)':l.workOrderMilestoneDateString)+(l.workOrderMilestoneTime?" "+l.workOrderMilestoneTimePeriodString:"")+'
    '+cityssm.escapeHTML(null!==(t=l.workOrderMilestoneDescription)&&void 0!==t?t:"")+'
    ',null===(o=i.querySelector(".button--reopenMilestone"))||void 0===o||o.addEventListener("click",E),null===(r=i.querySelector(".button--editMilestone"))||void 0===r||r.addEventListener("click",q),null===(s=i.querySelector(".button--completeMilestone"))||void 0===s||s.addEventListener("click",x),null===(n=i.querySelector(".button--deleteMilestone"))||void 0===n||n.addEventListener("click",D),a.append(i)}bulmaJS.init(a)}delete exports.workOrderComments,null===(S=document.querySelector("#workOrderComments--add"))||void 0===S||S.addEventListener("click",function(){let e;function t(t){t.preventDefault(),cityssm.postJSON(o.urlPrefix+"/workOrders/doAddWorkOrderComment",t.currentTarget,t=>{t.success&&(f=t.workOrderComments,L(),e())})}cityssm.openHtmlModal("workOrder-addComment",{onshow(e){o.populateAliases(e),e.querySelector("#workOrderCommentAdd--workOrderId").value=r,e.querySelector("form").addEventListener("submit",t)},onshown(t,o){bulmaJS.toggleHtmlClipped(),e=o,t.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})}),s||L(),s||(u=exports.workOrderMilestones,delete exports.workOrderMilestones,A(),null===(t=document.querySelector("#button--addMilestone"))||void 0===t||t.addEventListener("click",()=>{let e,t,s;function n(r){r&&r.preventDefault();const n=cityssm.dateToString(new Date);function a(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doAddWorkOrderMilestone`,e,e=>{const t=e;I(t),t.success&&s()})}const l=t.value;""!==l&&l{C(t.value,l)}),C(t.value,l)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addMilestone").focus()}})}))})(); \ No newline at end of file