code cleanup

deepsource-autofix-76c6eb20
Dan Gowans 2024-06-25 14:30:13 -04:00
parent 20d3d89558
commit 2fbfa5963e
7 changed files with 503 additions and 507 deletions

View File

@ -1,7 +1,9 @@
"use strict"; "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 }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
var _a;
const los = exports.los; const los = exports.los;
const occupancyTypesContainerElement = document.querySelector('#container--occupancyTypes'); const occupancyTypesContainerElement = document.querySelector('#container--occupancyTypes');
const occupancyTypePrintsContainerElement = document.querySelector('#container--occupancyTypePrints'); const occupancyTypePrintsContainerElement = document.querySelector('#container--occupancyTypePrints');
@ -11,15 +13,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
delete exports.allOccupancyTypeFields; delete exports.allOccupancyTypeFields;
const expandedOccupancyTypes = new Set(); const expandedOccupancyTypes = new Set();
function toggleOccupancyTypeFields(clickEvent) { function toggleOccupancyTypeFields(clickEvent) {
var _a;
const toggleButtonElement = clickEvent.currentTarget; const toggleButtonElement = clickEvent.currentTarget;
const occupancyTypeElement = toggleButtonElement.closest('.container--occupancyType'); 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)) { if (expandedOccupancyTypes.has(occupancyTypeId)) {
expandedOccupancyTypes.delete(occupancyTypeId); expandedOccupancyTypes.delete(occupancyTypeId);
} }
else { else {
expandedOccupancyTypes.add(occupancyTypeId); expandedOccupancyTypes.add(occupancyTypeId);
} }
// eslint-disable-next-line no-unsanitized/property
toggleButtonElement.innerHTML = expandedOccupancyTypes.has(occupancyTypeId) toggleButtonElement.innerHTML = expandedOccupancyTypes.has(occupancyTypeId)
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>' ? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'; : '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>';
@ -28,8 +32,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
panelBlockElement.classList.toggle('is-hidden'); panelBlockElement.classList.toggle('is-hidden');
} }
} }
function occupancyTypeResponseHandler(responseJSON) { function occupancyTypeResponseHandler(rawResponseJSON) {
var _a; var _a;
const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes; occupancyTypes = responseJSON.occupancyTypes;
allOccupancyTypeFields = responseJSON.allOccupancyTypeFields; allOccupancyTypeFields = responseJSON.allOccupancyTypeFields;
@ -37,16 +42,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
else { else {
bulmaJS.alert({ 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 : '', message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '',
contextualColorName: 'danger' contextualColorName: 'danger'
}); });
} }
} }
function deleteOccupancyType(clickEvent) { 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() { function doDelete() {
cityssm.postJSON(los.urlPrefix + '/admin/doDeleteOccupancyType', { cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteOccupancyType`, {
occupancyTypeId occupancyTypeId
}, occupancyTypeResponseHandler); }, occupancyTypeResponseHandler);
} }
@ -61,14 +67,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
function openEditOccupancyType(clickEvent) { 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) => { const occupancyType = occupancyTypes.find((currentOccupancyType) => {
return occupancyTypeId === currentOccupancyType.occupancyTypeId; return occupancyTypeId === currentOccupancyType.occupancyTypeId;
}); });
let editCloseModalFunction; let editCloseModalFunction;
function doEdit(submitEvent) { function doEdit(submitEvent) {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/admin/doUpdateOccupancyType', submitEvent.currentTarget, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateOccupancyType`, submitEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
occupancyTypeResponseHandler(responseJSON); occupancyTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
@ -83,9 +90,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
modalElement.querySelector('#occupancyTypeEdit--occupancyType').value = occupancyType.occupancyType; modalElement.querySelector('#occupancyTypeEdit--occupancyType').value = occupancyType.occupancyType;
}, },
onshown(modalElement, closeModalFunction) { onshown(modalElement, closeModalFunction) {
var _a;
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
modalElement.querySelector('#occupancyTypeEdit--occupancyType').focus(); 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(); bulmaJS.toggleHtmlClipped();
}, },
onremoved() { onremoved() {
@ -94,11 +102,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
function openAddOccupancyTypeField(clickEvent) { 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; let addCloseModalFunction;
function doAdd(submitEvent) { function doAdd(submitEvent) {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/admin/doAddOccupancyTypeField', submitEvent.currentTarget, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/admin/doAddOccupancyTypeField`, submitEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
expandedOccupancyTypes.add(occupancyTypeId); expandedOccupancyTypes.add(occupancyTypeId);
occupancyTypeResponseHandler(responseJSON); occupancyTypeResponseHandler(responseJSON);
@ -117,9 +126,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
}, },
onshown(modalElement, closeModalFunction) { onshown(modalElement, closeModalFunction) {
var _a;
addCloseModalFunction = closeModalFunction; addCloseModalFunction = closeModalFunction;
modalElement.querySelector('#occupancyTypeFieldAdd--occupancyTypeField').focus(); 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(); bulmaJS.toggleHtmlClipped();
}, },
onremoved() { onremoved() {
@ -140,6 +150,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}, occupancyTypeResponseHandler); }, occupancyTypeResponseHandler);
} }
function openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId) { function openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId) {
var _a;
let occupancyType; let occupancyType;
if (occupancyTypeId) { if (occupancyTypeId) {
occupancyType = occupancyTypes.find((currentOccupancyType) => { occupancyType = occupancyTypes.find((currentOccupancyType) => {
@ -147,7 +158,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
const occupancyTypeField = (occupancyType const occupancyTypeField = (occupancyType
? occupancyType.occupancyTypeFields ? (_a = occupancyType.occupancyTypeFields) !== null && _a !== void 0 ? _a : []
: allOccupancyTypeFields).find((currentOccupancyTypeField) => { : allOccupancyTypeFields).find((currentOccupancyTypeField) => {
return (currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId); return (currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId);
}); });
@ -173,7 +184,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
function doUpdate(submitEvent) { function doUpdate(submitEvent) {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/admin/doUpdateOccupancyTypeField', submitEvent.currentTarget, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateOccupancyTypeField`, submitEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
occupancyTypeResponseHandler(responseJSON); occupancyTypeResponseHandler(responseJSON);
if (responseJSON.success) { if (responseJSON.success) {
@ -182,7 +193,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
function doDelete() { function doDelete() {
cityssm.postJSON(los.urlPrefix + '/admin/doDeleteOccupancyTypeField', { cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteOccupancyTypeField`, {
occupancyTypeFieldId occupancyTypeFieldId
}, (rawResponseJSON) => { }, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
@ -205,35 +216,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyTypeField', { cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyTypeField', {
onshow: (modalElement) => { onshow: (modalElement) => {
var _a, _b, _c, _d, _e, _f, _g, _h;
los.populateAliases(modalElement); los.populateAliases(modalElement);
modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldId').value = occupancyTypeField.occupancyTypeFieldId.toString(); modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldId').value = occupancyTypeField.occupancyTypeFieldId.toString();
modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeField').value = occupancyTypeField.occupancyTypeField; modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeField').value = (_a = occupancyTypeField.occupancyTypeField) !== null && _a !== void 0 ? _a : '';
modalElement.querySelector('#occupancyTypeFieldEdit--isRequired').value = occupancyTypeField.isRequired ? '1' : '0'; modalElement.querySelector('#occupancyTypeFieldEdit--isRequired').value = ((_b = occupancyTypeField.isRequired) !== null && _b !== void 0 ? _b : false) ? '1' : '0';
minimumLengthElement = modalElement.querySelector('#occupancyTypeFieldEdit--minimumLength'); minimumLengthElement = modalElement.querySelector('#occupancyTypeFieldEdit--minimumLength');
minimumLengthElement.value = 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 = modalElement.querySelector('#occupancyTypeFieldEdit--maximumLength');
maximumLengthElement.value = 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 = modalElement.querySelector('#occupancyTypeFieldEdit--pattern');
patternElement.value = occupancyTypeField.pattern; patternElement.value = (_g = occupancyTypeField.pattern) !== null && _g !== void 0 ? _g : '';
occupancyTypeFieldValuesElement = modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldValues'); occupancyTypeFieldValuesElement = modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldValues');
occupancyTypeFieldValuesElement.value = occupancyTypeFieldValuesElement.value =
occupancyTypeField.occupancyTypeFieldValues; (_h = occupancyTypeField.occupancyTypeFieldValues) !== null && _h !== void 0 ? _h : '';
toggleInputFields(); toggleInputFields();
}, },
onshown: (modalElement, closeModalFunction) => { onshown: (modalElement, closeModalFunction) => {
var _a, _b;
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
bulmaJS.init(modalElement); bulmaJS.init(modalElement);
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
cityssm.enableNavBlocker(); 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); minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin);
updateMaximumLengthMin(); updateMaximumLengthMin();
occupancyTypeFieldValuesElement.addEventListener('keyup', toggleInputFields); occupancyTypeFieldValuesElement.addEventListener('keyup', toggleInputFields);
modalElement (_b = modalElement
.querySelector('#button--deleteOccupancyTypeField') .querySelector('#button--deleteOccupancyTypeField')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', confirmDoDelete);
.addEventListener('click', confirmDoDelete);
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -242,9 +254,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
function openEditOccupancyTypeFieldByClick(clickEvent) { function openEditOccupancyTypeFieldByClick(clickEvent) {
var _a, _b;
clickEvent.preventDefault(); clickEvent.preventDefault();
const occupancyTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.occupancyTypeFieldId, 10); const occupancyTypeFieldId = Number.parseInt((_a = clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.occupancyTypeFieldId) !== null && _a !== void 0 ? _a : '', 10);
const occupancyTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId, 10); const occupancyTypeId = Number.parseInt((_b = clickEvent.currentTarget.closest('.container--occupancyType').dataset.occupancyTypeId) !== null && _b !== void 0 ? _b : '', 10);
openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId); openEditOccupancyTypeField(occupancyTypeId, occupancyTypeFieldId);
} }
function moveOccupancyTypeField(clickEvent) { function moveOccupancyTypeField(clickEvent) {
@ -260,17 +273,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
}, occupancyTypeResponseHandler); }, occupancyTypeResponseHandler);
} }
function renderOccupancyTypeFields(panelElement, occupancyTypeId, occupancyTypeFields) { function renderOccupancyTypeFields(panelElement, occupancyTypeId, occupancyTypeFields) {
var _a; var _a, _b;
if (occupancyTypeFields.length === 0) { if (occupancyTypeFields.length === 0) {
panelElement.insertAdjacentHTML('beforeend', '<div class="panel-block is-block' + // eslint-disable-next-line no-unsanitized/method
(!occupancyTypeId || expandedOccupancyTypes.has(occupancyTypeId) panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block ${!occupancyTypeId || expandedOccupancyTypes.has(occupancyTypeId)
? '' ? ''
: ' is-hidden') + : ' is-hidden'}">
'">' + <div class="message is-info"><p class="message-body">There are no additional fields.</p></div>
'<div class="message is-info">' + </div>`);
'<p class="message-body">There are no additional fields.</p>' +
'</div>' +
'</div>');
} }
else { else {
for (const occupancyTypeField of occupancyTypeFields) { for (const occupancyTypeField of occupancyTypeFields) {
@ -282,24 +292,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
panelBlockElement.dataset.occupancyTypeFieldId = panelBlockElement.dataset.occupancyTypeFieldId =
occupancyTypeField.occupancyTypeFieldId.toString(); occupancyTypeField.occupancyTypeFieldId.toString();
panelBlockElement.innerHTML = // eslint-disable-next-line no-unsanitized/property
'<div class="level is-mobile">' + panelBlockElement.innerHTML = `<div class="level is-mobile">
'<div class="level-left">' + <div class="level-left">
('<div class="level-item">' + <div class="level-item">
'<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">' + <a class="has-text-weight-bold button--editOccupancyTypeField" href="#">
cityssm.escapeHTML((_a = occupancyTypeField.occupancyTypeField) !== null && _a !== void 0 ? _a : '') + ${cityssm.escapeHTML((_a = occupancyTypeField.occupancyTypeField) !== null && _a !== void 0 ? _a : '')}
'</a>' + </a>
'</div>') + </div>
'</div>' + </div>
'<div class="level-right">' + <div class="level-right">
('<div class="level-item">' + <div class="level-item">
los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeFieldUp', 'button--moveOccupancyTypeFieldDown') + ${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeFieldUp', 'button--moveOccupancyTypeFieldDown')}
'</div>') + </div>
'</div>' + </div>
'</div>'; </div>`;
panelBlockElement (_b = panelBlockElement
.querySelector('.button--editOccupancyTypeField') .querySelector('.button--editOccupancyTypeField')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', openEditOccupancyTypeFieldByClick);
.addEventListener('click', openEditOccupancyTypeFieldByClick);
panelBlockElement.querySelector('.button--moveOccupancyTypeFieldUp').addEventListener('click', moveOccupancyTypeField); panelBlockElement.querySelector('.button--moveOccupancyTypeFieldUp').addEventListener('click', moveOccupancyTypeField);
panelBlockElement.querySelector('.button--moveOccupancyTypeFieldDown').addEventListener('click', moveOccupancyTypeField); panelBlockElement.querySelector('.button--moveOccupancyTypeFieldDown').addEventListener('click', moveOccupancyTypeField);
panelElement.append(panelBlockElement); panelElement.append(panelBlockElement);
@ -307,11 +316,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
} }
function openAddOccupancyTypePrint(clickEvent) { 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; let closeAddModalFunction;
function doAdd(formEvent) { function doAdd(formEvent) {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/admin/doAddOccupancyTypePrint', formEvent.currentTarget, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/admin/doAddOccupancyTypePrint`, formEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
closeAddModalFunction(); closeAddModalFunction();
@ -345,8 +355,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
cityssm.postJSON(los.urlPrefix + cityssm.postJSON(los.urlPrefix +
'/admin/' + '/admin/' +
(buttonElement.dataset.direction === 'up' (buttonElement.dataset.direction === 'up'
? 'doMoveOccupancyTypePrintUp' ? // eslint-disable-next-line no-secrets/no-secrets
: 'doMoveOccupancyTypePrintDown'), { 'doMoveOccupancyTypePrintUp'
: // eslint-disable-next-line no-secrets/no-secrets
'doMoveOccupancyTypePrintDown'), {
occupancyTypeId, occupancyTypeId,
printEJS, printEJS,
moveToEnd: clickEvent.shiftKey ? '1' : '0' 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 printEJS = clickEvent.currentTarget.closest('.container--occupancyTypePrint').dataset.printEJS;
const occupancyTypeId = clickEvent.currentTarget.closest('.container--occupancyTypePrintList').dataset.occupancyTypeId; const occupancyTypeId = clickEvent.currentTarget.closest('.container--occupancyTypePrintList').dataset.occupancyTypeId;
function doDelete() { function doDelete() {
cityssm.postJSON(los.urlPrefix + '/admin/doDeleteOccupancyTypePrint', { cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteOccupancyTypePrint`, {
occupancyTypeId, occupancyTypeId,
printEJS printEJS
}, occupancyTypeResponseHandler); }, occupancyTypeResponseHandler);
@ -373,12 +385,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
function renderOccupancyTypePrints(panelElement, occupancyTypeId, occupancyTypePrints) { function renderOccupancyTypePrints(panelElement, occupancyTypeId, occupancyTypePrints) {
var _a;
if (occupancyTypePrints.length === 0) { if (occupancyTypePrints.length === 0) {
panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block"> panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block">
<div class="message is-info"> <div class="message is-info">
<p class="message-body">There are no prints associated with this record.</p> <p class="message-body">There are no prints associated with this record.</p>
</div> </div>
</div>`); </div>`);
} }
else { else {
for (const printEJS of occupancyTypePrints) { for (const printEJS of occupancyTypePrints) {
@ -396,182 +409,165 @@ Object.defineProperty(exports, "__esModule", { value: true });
else if (printEJS.startsWith('screen/')) { else if (printEJS.startsWith('screen/')) {
printIconClass = 'fa-file'; printIconClass = 'fa-file';
} }
panelBlockElement.innerHTML = // eslint-disable-next-line no-unsanitized/property
'<div class="level is-mobile">' + panelBlockElement.innerHTML = `<div class="level is-mobile">
'<div class="level-left">' + <div class="level-left">
('<div class="level-item">' + <div class="level-item">
'<i class="fas fa-fw ' + <i class="fas fa-fw ${printIconClass}" aria-hidden="true"></i>
printIconClass + </div>
'" aria-hidden="true"></i>' + <div class="level-item">
'</div>') + ${cityssm.escapeHTML(printTitle || printEJS)}
('<div class="level-item">' + </div>
cityssm.escapeHTML(printTitle || printEJS) + </div>
'</div>') + <div class="level-right">
'</div>' + <div class="level-item">
'<div class="level-right">' + ${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypePrintUp', 'button--moveOccupancyTypePrintDown')}
('<div class="level-item">' + </div>
los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypePrintUp', 'button--moveOccupancyTypePrintDown') + <div class="level-item">
'</div>') + <button class="button is-small is-danger button--deleteOccupancyTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print">
('<div class="level-item">' + <i class="fas fa-trash" aria-hidden="true"></i>
'<button class="button is-small is-danger button--deleteOccupancyTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print">' + </button>
'<i class="fas fa-trash" aria-hidden="true"></i>' + </div>
'</button>' + </div>
'</div>' + </div>`;
'</div>') +
'</div>' +
'</div>';
panelBlockElement.querySelector('.button--moveOccupancyTypePrintUp').addEventListener('click', moveOccupancyTypePrint); panelBlockElement.querySelector('.button--moveOccupancyTypePrintUp').addEventListener('click', moveOccupancyTypePrint);
panelBlockElement.querySelector('.button--moveOccupancyTypePrintDown').addEventListener('click', moveOccupancyTypePrint); panelBlockElement.querySelector('.button--moveOccupancyTypePrintDown').addEventListener('click', moveOccupancyTypePrint);
panelBlockElement (_a = panelBlockElement
.querySelector('.button--deleteOccupancyTypePrint') .querySelector('.button--deleteOccupancyTypePrint')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', deleteOccupancyTypePrint);
.addEventListener('click', deleteOccupancyTypePrint);
panelElement.append(panelBlockElement); panelElement.append(panelBlockElement);
} }
} }
} }
function renderOccupancyTypes() { function renderOccupancyTypes() {
occupancyTypesContainerElement.innerHTML = var _a, _b, _c, _d, _e, _f, _g, _h;
'<div class="panel container--occupancyType" id="container--allOccupancyTypeFields" data-occupancy-type-id="">' + // eslint-disable-next-line no-unsanitized/property
'<div class="panel-heading">' + occupancyTypesContainerElement.innerHTML = `<div class="panel container--occupancyType" id="container--allOccupancyTypeFields" data-occupancy-type-id="">
('<div class="level is-mobile">' + <div class="panel-heading">
('<div class="level-left">' + <div class="level is-mobile">
'<div class="level-item">' + <div class="level-left">
('<h2 class="title is-4">(All ' + <div class="level-item">
los.escapedAliases.Occupancy + <h2 class="title is-4">(All ${los.escapedAliases.Occupancy} Types)</h2>
' Types)</h2>') + </div>
'</div>' + </div>
'</div>') + <div class="level-right">
('<div class="level-right">' + <div class="level-item">
('<div class="level-item">' + <button class="button is-success is-small button--addOccupancyTypeField" type="button">
'<button class="button is-success is-small button--addOccupancyTypeField" type="button">' + <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
'<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>' + <span>Add Field</span>
'<span>Add Field</span>' + </button>
'</button>' + </div>
'</div>') + </div>
'</div>') + </div>
'</div>') + </div>
'</div>' + </div>`;
'</div>';
occupancyTypePrintsContainerElement.innerHTML = ''; occupancyTypePrintsContainerElement.innerHTML = '';
renderOccupancyTypeFields(occupancyTypesContainerElement.querySelector('#container--allOccupancyTypeFields'), undefined, allOccupancyTypeFields); renderOccupancyTypeFields(occupancyTypesContainerElement.querySelector('#container--allOccupancyTypeFields'), undefined, allOccupancyTypeFields);
occupancyTypesContainerElement (_a = occupancyTypesContainerElement
.querySelector('.button--addOccupancyTypeField') .querySelector('.button--addOccupancyTypeField')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', openAddOccupancyTypeField);
.addEventListener('click', openAddOccupancyTypeField);
if (occupancyTypes.length === 0) { if (occupancyTypes.length === 0) {
// eslint-disable-next-line no-unsanitized/method
occupancyTypesContainerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning> occupancyTypesContainerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning>
<p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p> <p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p>
</div>`); </div>`);
// eslint-disable-next-line no-unsanitized/method
occupancyTypePrintsContainerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning> occupancyTypePrintsContainerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning>
<p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p> <p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p>
</div>`); </div>`);
return; return;
} }
for (const occupancyType of occupancyTypes) { for (const occupancyType of occupancyTypes) {
// Types and Fields /*
{ * Types and Fields
const occupancyTypeContainer = document.createElement('div'); */
occupancyTypeContainer.className = 'panel container--occupancyType'; const occupancyTypeContainer = document.createElement('div');
occupancyTypeContainer.dataset.occupancyTypeId = occupancyTypeContainer.className = 'panel container--occupancyType';
occupancyType.occupancyTypeId.toString(); occupancyTypeContainer.dataset.occupancyTypeId =
occupancyTypeContainer.innerHTML = occupancyType.occupancyTypeId.toString();
'<div class="panel-heading">' + // eslint-disable-next-line no-unsanitized/property
'<div class="level is-mobile">' + occupancyTypeContainer.innerHTML = `<div class="panel-heading">
('<div class="level-left">' + <div class="level is-mobile">
'<div class="level-item">' + <div class="level-left">
'<button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">' + <div class="level-item">
(expandedOccupancyTypes.has(occupancyType.occupancyTypeId) <button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>' ${expandedOccupancyTypes.has(occupancyType.occupancyTypeId)
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>') + ? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
'</button>' + : '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'}
'</div>' + </button>
'<div class="level-item">' + </div>
'<h2 class="title is-4">' + <div class="level-item">
cityssm.escapeHTML(occupancyType.occupancyType) + <h2 class="title is-4">${cityssm.escapeHTML(occupancyType.occupancyType)}</h2>
'</h2>' + </div>
'</div>' + </div>
'</div>') + <div class="level-right">
('<div class="level-right">' + <div class="level-item">
('<div class="level-item">' + <button class="button is-danger is-small button--deleteOccupancyType" type="button">
'<button class="button is-danger is-small button--deleteOccupancyType" type="button">' + <span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>
'<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>' + <span>Delete</span>
'<span>Delete</span>' + </button>
'</button>' + </div>
'</div>') + <div class="level-item">
('<div class="level-item">' + <button class="button is-primary is-small button--editOccupancyType" type="button">
'<button class="button is-primary is-small button--editOccupancyType" type="button">' + <span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>
'<span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>' + <span>Edit ${los.escapedAliases.Occupancy} Type</span>
'<span>Edit ' + </button>
los.escapedAliases.Occupancy + </div>
' Type</span>' + <div class="level-item">
'</button>' + <button class="button is-success is-small button--addOccupancyTypeField" type="button">
'</div>') + <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
('<div class="level-item">' + <span>Add Field</span>
'<button class="button is-success is-small button--addOccupancyTypeField" type="button">' + </button>
'<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>' + </div>
'<span>Add Field</span>' + <div class="level-item">
'</button>' + ${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeUp', 'button--moveOccupancyTypeDown')}
'</div>') + </div>
('<div class="level-item">' + </div>
los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeUp', 'button--moveOccupancyTypeDown') + </div>
'</div>') + </div>`;
'</div>') + renderOccupancyTypeFields(occupancyTypeContainer, occupancyType.occupancyTypeId, (_b = occupancyType.occupancyTypeFields) !== null && _b !== void 0 ? _b : []);
'</div>' + (_c = occupancyTypeContainer
'</div>'; .querySelector('.button--toggleOccupancyTypeFields')) === null || _c === void 0 ? void 0 : _c.addEventListener('click', toggleOccupancyTypeFields);
renderOccupancyTypeFields(occupancyTypeContainer, occupancyType.occupancyTypeId, occupancyType.occupancyTypeFields); (_d = occupancyTypeContainer
occupancyTypeContainer .querySelector('.button--deleteOccupancyType')) === null || _d === void 0 ? void 0 : _d.addEventListener('click', deleteOccupancyType);
.querySelector('.button--toggleOccupancyTypeFields') (_e = occupancyTypeContainer
.addEventListener('click', toggleOccupancyTypeFields); .querySelector('.button--editOccupancyType')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', openEditOccupancyType);
occupancyTypeContainer (_f = occupancyTypeContainer
.querySelector('.button--deleteOccupancyType') .querySelector('.button--addOccupancyTypeField')) === null || _f === void 0 ? void 0 : _f.addEventListener('click', openAddOccupancyTypeField);
.addEventListener('click', deleteOccupancyType); occupancyTypeContainer.querySelector('.button--moveOccupancyTypeUp').addEventListener('click', moveOccupancyType);
occupancyTypeContainer occupancyTypeContainer.querySelector('.button--moveOccupancyTypeDown').addEventListener('click', moveOccupancyType);
.querySelector('.button--editOccupancyType') occupancyTypesContainerElement.append(occupancyTypeContainer);
.addEventListener('click', openEditOccupancyType); /*
occupancyTypeContainer * Prints
.querySelector('.button--addOccupancyTypeField') */
.addEventListener('click', openAddOccupancyTypeField); const occupancyTypePrintContainer = document.createElement('div');
occupancyTypeContainer.querySelector('.button--moveOccupancyTypeUp').addEventListener('click', moveOccupancyType); occupancyTypePrintContainer.className =
occupancyTypeContainer.querySelector('.button--moveOccupancyTypeDown').addEventListener('click', moveOccupancyType); 'panel container--occupancyTypePrintList';
occupancyTypesContainerElement.append(occupancyTypeContainer); occupancyTypePrintContainer.dataset.occupancyTypeId =
} occupancyType.occupancyTypeId.toString();
// Prints occupancyTypePrintContainer.innerHTML = `<div class="panel-heading">
{ <div class="level is-mobile">
const occupancyTypePrintContainer = document.createElement('div'); <div class="level-left">
occupancyTypePrintContainer.className = <div class="level-item">
'panel container--occupancyTypePrintList'; <h2 class="title is-4">${cityssm.escapeHTML(occupancyType.occupancyType)}</h2>
occupancyTypePrintContainer.dataset.occupancyTypeId = </div>
occupancyType.occupancyTypeId.toString(); </div>
occupancyTypePrintContainer.innerHTML = <div class="level-right">
'<div class="panel-heading">' + <div class="level-item">
'<div class="level is-mobile">' + <button class="button is-success is-small button--addOccupancyTypePrint" type="button">
('<div class="level-left">' + <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
'<div class="level-item">' + <span>Add Print</span>
'<h2 class="title is-4">' + </button>
cityssm.escapeHTML(occupancyType.occupancyType) + </div>
'</h2>' + </div>
'</div>' + </div>
'</div>') + </div>`;
('<div class="level-right">' + renderOccupancyTypePrints(occupancyTypePrintContainer, occupancyType.occupancyTypeId, (_g = occupancyType.occupancyTypePrints) !== null && _g !== void 0 ? _g : []);
('<div class="level-item">' + (_h = occupancyTypePrintContainer
'<button class="button is-success is-small button--addOccupancyTypePrint" type="button">' + .querySelector('.button--addOccupancyTypePrint')) === null || _h === void 0 ? void 0 : _h.addEventListener('click', openAddOccupancyTypePrint);
'<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>' + occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer);
'<span>Add Print</span>' +
'</button>' +
'</div>') +
'</div>') +
'</div>' +
'</div>';
renderOccupancyTypePrints(occupancyTypePrintContainer, occupancyType.occupancyTypeId, occupancyType.occupancyTypePrints);
occupancyTypePrintContainer
.querySelector('.button--addOccupancyTypePrint')
.addEventListener('click', openAddOccupancyTypePrint);
occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer);
}
} }
} }
document (_a = document
.querySelector('#button--addOccupancyType') .querySelector('#button--addOccupancyType')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', () => {
.addEventListener('click', () => {
let addCloseModalFunction; let addCloseModalFunction;
function doAdd(submitEvent) { function doAdd(submitEvent) {
submitEvent.preventDefault(); submitEvent.preventDefault();
@ -593,16 +589,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyType', { cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyType', {
onshow: (modalElement) => { onshow(modalElement) {
los.populateAliases(modalElement); los.populateAliases(modalElement);
}, },
onshown: (modalElement, closeModalFunction) => { onshown(modalElement, closeModalFunction) {
var _a;
addCloseModalFunction = closeModalFunction; addCloseModalFunction = closeModalFunction;
modalElement.querySelector('#occupancyTypeAdd--occupancyType').focus(); 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(); bulmaJS.toggleHtmlClipped();
}, },
onremoved: () => { onremoved() {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
} }
}); });

View File

@ -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 { BulmaJS } from '@cityssm/bulma-js/types.js'
import type * as recordTypes from '../types/recordTypes' import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types' import type * as globalTypes from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js'
import type { BulmaJS } from '@cityssm/bulma-js/types'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const bulmaJS: BulmaJS declare const bulmaJS: BulmaJS
declare const exports: Record<string, unknown>
type ResponseJSON = type ResponseJSON =
| { | {
success: true success: true
@ -32,11 +34,11 @@ type ResponseJSON =
'#container--occupancyTypePrints' '#container--occupancyTypePrints'
) as HTMLElement ) as HTMLElement
let occupancyTypes: recordTypes.OccupancyType[] = exports.occupancyTypes let occupancyTypes = exports.occupancyTypes as recordTypes.OccupancyType[]
delete exports.occupancyTypes delete exports.occupancyTypes
let allOccupancyTypeFields: recordTypes.OccupancyTypeField[] = let allOccupancyTypeFields =
exports.allOccupancyTypeFields exports.allOccupancyTypeFields as recordTypes.OccupancyTypeField[]
delete exports.allOccupancyTypeFields delete exports.allOccupancyTypeFields
const expandedOccupancyTypes = new Set<number>() const expandedOccupancyTypes = new Set<number>()
@ -49,7 +51,7 @@ type ResponseJSON =
) as HTMLElement ) as HTMLElement
const occupancyTypeId = Number.parseInt( const occupancyTypeId = Number.parseInt(
occupancyTypeElement.dataset.occupancyTypeId!, occupancyTypeElement.dataset.occupancyTypeId ?? '',
10 10
) )
@ -59,6 +61,7 @@ type ResponseJSON =
expandedOccupancyTypes.add(occupancyTypeId) expandedOccupancyTypes.add(occupancyTypeId)
} }
// eslint-disable-next-line no-unsanitized/property
toggleButtonElement.innerHTML = expandedOccupancyTypes.has(occupancyTypeId) toggleButtonElement.innerHTML = expandedOccupancyTypes.has(occupancyTypeId)
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>' ? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>' : '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'
@ -71,19 +74,21 @@ type ResponseJSON =
} }
} }
function occupancyTypeResponseHandler(responseJSON: { function occupancyTypeResponseHandler(rawResponseJSON: unknown): void {
success: boolean const responseJSON = rawResponseJSON as {
errorMessage?: string success: boolean
occupancyTypes?: recordTypes.OccupancyType[] errorMessage?: string
allOccupancyTypeFields?: recordTypes.OccupancyTypeField[] occupancyTypes: recordTypes.OccupancyType[]
}): void { allOccupancyTypeFields: recordTypes.OccupancyTypeField[]
}
if (responseJSON.success) { if (responseJSON.success) {
occupancyTypes = responseJSON.occupancyTypes! occupancyTypes = responseJSON.occupancyTypes
allOccupancyTypeFields = responseJSON.allOccupancyTypeFields! allOccupancyTypeFields = responseJSON.allOccupancyTypeFields
renderOccupancyTypes() renderOccupancyTypes()
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: 'Error Updating ' + los.escapedAliases.Occupancy + ' Type', title: `Error Updating ${los.escapedAliases.Occupancy} Type`,
message: responseJSON.errorMessage ?? '', message: responseJSON.errorMessage ?? '',
contextualColorName: 'danger' contextualColorName: 'danger'
}) })
@ -96,13 +101,13 @@ type ResponseJSON =
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
'.container--occupancyType' '.container--occupancyType'
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeId!, ).dataset.occupancyTypeId ?? '',
10 10
) )
function doDelete(): void { function doDelete(): void {
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/admin/doDeleteOccupancyType', `${los.urlPrefix}/admin/doDeleteOccupancyType`,
{ {
occupancyTypeId occupancyTypeId
}, },
@ -127,13 +132,13 @@ type ResponseJSON =
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
'.container--occupancyType' '.container--occupancyType'
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeId!, ).dataset.occupancyTypeId ?? '',
10 10
) )
const occupancyType = occupancyTypes.find((currentOccupancyType) => { const occupancyType = occupancyTypes.find((currentOccupancyType) => {
return occupancyTypeId === currentOccupancyType.occupancyTypeId return occupancyTypeId === currentOccupancyType.occupancyTypeId
})! }) as recordTypes.OccupancyType
let editCloseModalFunction: () => void let editCloseModalFunction: () => void
@ -141,7 +146,7 @@ type ResponseJSON =
submitEvent.preventDefault() submitEvent.preventDefault()
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/admin/doUpdateOccupancyType', `${los.urlPrefix}/admin/doUpdateOccupancyType`,
submitEvent.currentTarget, submitEvent.currentTarget,
(rawResponseJSON) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as ResponseJSON const responseJSON = rawResponseJSON as ResponseJSON
@ -176,7 +181,7 @@ type ResponseJSON =
) as HTMLInputElement ) as HTMLInputElement
).focus() ).focus()
modalElement.querySelector('form')!.addEventListener('submit', doEdit) modalElement.querySelector('form')?.addEventListener('submit', doEdit)
bulmaJS.toggleHtmlClipped() bulmaJS.toggleHtmlClipped()
}, },
@ -192,7 +197,7 @@ type ResponseJSON =
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
'.container--occupancyType' '.container--occupancyType'
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeId!, ).dataset.occupancyTypeId ?? '',
10 10
) )
@ -202,7 +207,7 @@ type ResponseJSON =
submitEvent.preventDefault() submitEvent.preventDefault()
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/admin/doAddOccupancyTypeField', `${los.urlPrefix}/admin/doAddOccupancyTypeField`,
submitEvent.currentTarget, submitEvent.currentTarget,
(rawResponseJSON) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as ResponseJSON const responseJSON = rawResponseJSON as ResponseJSON
@ -241,7 +246,7 @@ type ResponseJSON =
) as HTMLInputElement ) as HTMLInputElement
).focus() ).focus()
modalElement.querySelector('form')!.addEventListener('submit', doAdd) modalElement.querySelector('form')?.addEventListener('submit', doAdd)
bulmaJS.toggleHtmlClipped() bulmaJS.toggleHtmlClipped()
}, },
@ -288,13 +293,13 @@ type ResponseJSON =
const occupancyTypeField = ( const occupancyTypeField = (
occupancyType occupancyType
? occupancyType.occupancyTypeFields! ? occupancyType.occupancyTypeFields ?? []
: allOccupancyTypeFields : allOccupancyTypeFields
).find((currentOccupancyTypeField) => { ).find((currentOccupancyTypeField) => {
return ( return (
currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId currentOccupancyTypeField.occupancyTypeFieldId === occupancyTypeFieldId
) )
})! }) as recordTypes.OccupancyTypeField
let minimumLengthElement: HTMLInputElement let minimumLengthElement: HTMLInputElement
let maximumLengthElement: HTMLInputElement let maximumLengthElement: HTMLInputElement
@ -323,7 +328,7 @@ type ResponseJSON =
submitEvent.preventDefault() submitEvent.preventDefault()
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/admin/doUpdateOccupancyTypeField', `${los.urlPrefix}/admin/doUpdateOccupancyTypeField`,
submitEvent.currentTarget, submitEvent.currentTarget,
(rawResponseJSON) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as ResponseJSON const responseJSON = rawResponseJSON as ResponseJSON
@ -338,7 +343,7 @@ type ResponseJSON =
function doDelete(): void { function doDelete(): void {
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/admin/doDeleteOccupancyTypeField', `${los.urlPrefix}/admin/doDeleteOccupancyTypeField`,
{ {
occupancyTypeFieldId occupancyTypeFieldId
}, },
@ -373,44 +378,44 @@ type ResponseJSON =
modalElement.querySelector( modalElement.querySelector(
'#occupancyTypeFieldEdit--occupancyTypeFieldId' '#occupancyTypeFieldEdit--occupancyTypeFieldId'
) as HTMLInputElement ) as HTMLInputElement
).value = occupancyTypeField.occupancyTypeFieldId!.toString() ).value = occupancyTypeField.occupancyTypeFieldId.toString()
;( ;(
modalElement.querySelector( modalElement.querySelector(
'#occupancyTypeFieldEdit--occupancyTypeField' '#occupancyTypeFieldEdit--occupancyTypeField'
) as HTMLInputElement ) as HTMLInputElement
).value = occupancyTypeField.occupancyTypeField! ).value = occupancyTypeField.occupancyTypeField ?? ''
;( ;(
modalElement.querySelector( modalElement.querySelector(
'#occupancyTypeFieldEdit--isRequired' '#occupancyTypeFieldEdit--isRequired'
) as HTMLSelectElement ) as HTMLSelectElement
).value = occupancyTypeField.isRequired ? '1' : '0' ).value = (occupancyTypeField.isRequired ?? false) ? '1' : '0'
minimumLengthElement = modalElement.querySelector( minimumLengthElement = modalElement.querySelector(
'#occupancyTypeFieldEdit--minimumLength' '#occupancyTypeFieldEdit--minimumLength'
) as HTMLInputElement ) as HTMLInputElement
minimumLengthElement.value = minimumLengthElement.value =
occupancyTypeField.minimumLength!.toString() occupancyTypeField.minimumLength?.toString() ?? ''
maximumLengthElement = modalElement.querySelector( maximumLengthElement = modalElement.querySelector(
'#occupancyTypeFieldEdit--maximumLength' '#occupancyTypeFieldEdit--maximumLength'
) as HTMLInputElement ) as HTMLInputElement
maximumLengthElement.value = maximumLengthElement.value =
occupancyTypeField.maximumLength!.toString() occupancyTypeField.maximumLength?.toString() ?? ''
patternElement = modalElement.querySelector( patternElement = modalElement.querySelector(
'#occupancyTypeFieldEdit--pattern' '#occupancyTypeFieldEdit--pattern'
) as HTMLInputElement ) as HTMLInputElement
patternElement.value = occupancyTypeField.pattern! patternElement.value = occupancyTypeField.pattern ?? ''
occupancyTypeFieldValuesElement = modalElement.querySelector( occupancyTypeFieldValuesElement = modalElement.querySelector(
'#occupancyTypeFieldEdit--occupancyTypeFieldValues' '#occupancyTypeFieldEdit--occupancyTypeFieldValues'
) as HTMLTextAreaElement ) as HTMLTextAreaElement
occupancyTypeFieldValuesElement.value = occupancyTypeFieldValuesElement.value =
occupancyTypeField.occupancyTypeFieldValues! occupancyTypeField.occupancyTypeFieldValues ?? ''
toggleInputFields() toggleInputFields()
}, },
@ -421,7 +426,7 @@ type ResponseJSON =
bulmaJS.toggleHtmlClipped() bulmaJS.toggleHtmlClipped()
cityssm.enableNavBlocker() cityssm.enableNavBlocker()
modalElement.querySelector('form')!.addEventListener('submit', doUpdate) modalElement.querySelector('form')?.addEventListener('submit', doUpdate)
minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin) minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin)
updateMaximumLengthMin() updateMaximumLengthMin()
@ -432,8 +437,8 @@ type ResponseJSON =
) )
modalElement modalElement
.querySelector('#button--deleteOccupancyTypeField')! .querySelector('#button--deleteOccupancyTypeField')
.addEventListener('click', confirmDoDelete) ?.addEventListener('click', confirmDoDelete)
}, },
onremoved: () => { onremoved: () => {
bulmaJS.toggleHtmlClipped() bulmaJS.toggleHtmlClipped()
@ -450,7 +455,7 @@ type ResponseJSON =
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
'.container--occupancyTypeField' '.container--occupancyTypeField'
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeFieldId!, ).dataset.occupancyTypeFieldId ?? '',
10 10
) )
@ -459,7 +464,7 @@ type ResponseJSON =
(clickEvent.currentTarget as HTMLElement).closest( (clickEvent.currentTarget as HTMLElement).closest(
'.container--occupancyType' '.container--occupancyType'
) as HTMLElement ) as HTMLElement
).dataset.occupancyTypeId!, ).dataset.occupancyTypeId ?? '',
10 10
) )
@ -495,17 +500,16 @@ type ResponseJSON =
occupancyTypeFields: recordTypes.OccupancyTypeField[] occupancyTypeFields: recordTypes.OccupancyTypeField[]
): void { ): void {
if (occupancyTypeFields.length === 0) { if (occupancyTypeFields.length === 0) {
// eslint-disable-next-line no-unsanitized/method
panelElement.insertAdjacentHTML( panelElement.insertAdjacentHTML(
'beforeend', 'beforeend',
'<div class="panel-block is-block' + `<div class="panel-block is-block ${
(!occupancyTypeId || expandedOccupancyTypes.has(occupancyTypeId) !occupancyTypeId || expandedOccupancyTypes.has(occupancyTypeId)
? '' ? ''
: ' is-hidden') + : ' is-hidden'
'">' + }">
'<div class="message is-info">' + <div class="message is-info"><p class="message-body">There are no additional fields.</p></div>
'<p class="message-body">There are no additional fields.</p>' + </div>`
'</div>' +
'</div>'
) )
} else { } else {
for (const occupancyTypeField of occupancyTypeFields) { for (const occupancyTypeField of occupancyTypeFields) {
@ -518,30 +522,30 @@ type ResponseJSON =
} }
panelBlockElement.dataset.occupancyTypeFieldId = panelBlockElement.dataset.occupancyTypeFieldId =
occupancyTypeField.occupancyTypeFieldId!.toString() occupancyTypeField.occupancyTypeFieldId.toString()
panelBlockElement.innerHTML = // eslint-disable-next-line no-unsanitized/property
'<div class="level is-mobile">' + panelBlockElement.innerHTML = `<div class="level is-mobile">
'<div class="level-left">' + <div class="level-left">
('<div class="level-item">' + <div class="level-item">
'<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">' + <a class="has-text-weight-bold button--editOccupancyTypeField" href="#">
cityssm.escapeHTML(occupancyTypeField.occupancyTypeField ?? '') + ${cityssm.escapeHTML(occupancyTypeField.occupancyTypeField ?? '')}
'</a>' + </a>
'</div>') + </div>
'</div>' + </div>
'<div class="level-right">' + <div class="level-right">
('<div class="level-item">' + <div class="level-item">
los.getMoveUpDownButtonFieldHTML( ${los.getMoveUpDownButtonFieldHTML(
'button--moveOccupancyTypeFieldUp', 'button--moveOccupancyTypeFieldUp',
'button--moveOccupancyTypeFieldDown' 'button--moveOccupancyTypeFieldDown'
) + )}
'</div>') + </div>
'</div>' + </div>
'</div>' </div>`
panelBlockElement panelBlockElement
.querySelector('.button--editOccupancyTypeField')! .querySelector('.button--editOccupancyTypeField')
.addEventListener('click', openEditOccupancyTypeFieldByClick) ?.addEventListener('click', openEditOccupancyTypeFieldByClick)
;( ;(
panelBlockElement.querySelector( panelBlockElement.querySelector(
'.button--moveOccupancyTypeFieldUp' '.button--moveOccupancyTypeFieldUp'
@ -559,11 +563,12 @@ type ResponseJSON =
} }
function openAddOccupancyTypePrint(clickEvent: Event): void { function openAddOccupancyTypePrint(clickEvent: Event): void {
const occupancyTypeId = ( const occupancyTypeId =
(clickEvent.currentTarget as HTMLElement).closest( (
'.container--occupancyTypePrintList' (clickEvent.currentTarget as HTMLElement).closest(
) as HTMLElement '.container--occupancyTypePrintList'
).dataset.occupancyTypeId! ) as HTMLElement
).dataset.occupancyTypeId ?? ''
let closeAddModalFunction: () => void let closeAddModalFunction: () => void
@ -571,7 +576,7 @@ type ResponseJSON =
formEvent.preventDefault() formEvent.preventDefault()
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/admin/doAddOccupancyTypePrint', `${los.urlPrefix}/admin/doAddOccupancyTypePrint`,
formEvent.currentTarget, formEvent.currentTarget,
(rawResponseJSON) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as ResponseJSON const responseJSON = rawResponseJSON as ResponseJSON
@ -599,7 +604,7 @@ type ResponseJSON =
) as HTMLSelectElement ) as HTMLSelectElement
for (const [printEJS, printTitle] of Object.entries( for (const [printEJS, printTitle] of Object.entries(
exports.occupancyTypePrintTitles exports.occupancyTypePrintTitles as Record<string, string>
)) { )) {
const optionElement = document.createElement('option') const optionElement = document.createElement('option')
optionElement.value = printEJS optionElement.value = printEJS
@ -630,8 +635,10 @@ type ResponseJSON =
los.urlPrefix + los.urlPrefix +
'/admin/' + '/admin/' +
(buttonElement.dataset.direction === 'up' (buttonElement.dataset.direction === 'up'
? 'doMoveOccupancyTypePrintUp' ? // eslint-disable-next-line no-secrets/no-secrets
: 'doMoveOccupancyTypePrintDown'), 'doMoveOccupancyTypePrintUp'
: // eslint-disable-next-line no-secrets/no-secrets
'doMoveOccupancyTypePrintDown'),
{ {
occupancyTypeId, occupancyTypeId,
printEJS, printEJS,
@ -658,7 +665,7 @@ type ResponseJSON =
function doDelete(): void { function doDelete(): void {
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/admin/doDeleteOccupancyTypePrint', `${los.urlPrefix}/admin/doDeleteOccupancyTypePrint`,
{ {
occupancyTypeId, occupancyTypeId,
printEJS printEJS
@ -687,10 +694,10 @@ type ResponseJSON =
panelElement.insertAdjacentHTML( panelElement.insertAdjacentHTML(
'beforeend', 'beforeend',
`<div class="panel-block is-block"> `<div class="panel-block is-block">
<div class="message is-info"> <div class="message is-info">
<p class="message-body">There are no prints associated with this record.</p> <p class="message-body">There are no prints associated with this record.</p>
</div> </div>
</div>` </div>`
) )
} else { } else {
for (const printEJS of occupancyTypePrints) { for (const printEJS of occupancyTypePrints) {
@ -713,33 +720,30 @@ type ResponseJSON =
printIconClass = 'fa-file' printIconClass = 'fa-file'
} }
panelBlockElement.innerHTML = // eslint-disable-next-line no-unsanitized/property
'<div class="level is-mobile">' + panelBlockElement.innerHTML = `<div class="level is-mobile">
'<div class="level-left">' + <div class="level-left">
('<div class="level-item">' + <div class="level-item">
'<i class="fas fa-fw ' + <i class="fas fa-fw ${printIconClass}" aria-hidden="true"></i>
printIconClass + </div>
'" aria-hidden="true"></i>' + <div class="level-item">
'</div>') + ${cityssm.escapeHTML(printTitle || printEJS)}
('<div class="level-item">' + </div>
cityssm.escapeHTML(printTitle || printEJS) + </div>
'</div>') + <div class="level-right">
'</div>' + <div class="level-item">
'<div class="level-right">' + ${los.getMoveUpDownButtonFieldHTML(
('<div class="level-item">' + 'button--moveOccupancyTypePrintUp',
los.getMoveUpDownButtonFieldHTML( 'button--moveOccupancyTypePrintDown'
'button--moveOccupancyTypePrintUp', )}
'button--moveOccupancyTypePrintDown' </div>
) + <div class="level-item">
'</div>') + <button class="button is-small is-danger button--deleteOccupancyTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print">
('<div class="level-item">' + <i class="fas fa-trash" aria-hidden="true"></i>
'<button class="button is-small is-danger button--deleteOccupancyTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print">' + </button>
'<i class="fas fa-trash" aria-hidden="true"></i>' + </div>
'</button>' + </div>
'</div>' + </div>`
'</div>') +
'</div>' +
'</div>'
;( ;(
panelBlockElement.querySelector( panelBlockElement.querySelector(
'.button--moveOccupancyTypePrintUp' '.button--moveOccupancyTypePrintUp'
@ -752,8 +756,8 @@ type ResponseJSON =
).addEventListener('click', moveOccupancyTypePrint) ).addEventListener('click', moveOccupancyTypePrint)
panelBlockElement panelBlockElement
.querySelector('.button--deleteOccupancyTypePrint')! .querySelector('.button--deleteOccupancyTypePrint')
.addEventListener('click', deleteOccupancyTypePrint) ?.addEventListener('click', deleteOccupancyTypePrint)
panelElement.append(panelBlockElement) panelElement.append(panelBlockElement)
} }
@ -761,28 +765,26 @@ type ResponseJSON =
} }
function renderOccupancyTypes(): void { function renderOccupancyTypes(): void {
occupancyTypesContainerElement.innerHTML = // eslint-disable-next-line no-unsanitized/property
'<div class="panel container--occupancyType" id="container--allOccupancyTypeFields" data-occupancy-type-id="">' + occupancyTypesContainerElement.innerHTML = `<div class="panel container--occupancyType" id="container--allOccupancyTypeFields" data-occupancy-type-id="">
'<div class="panel-heading">' + <div class="panel-heading">
('<div class="level is-mobile">' + <div class="level is-mobile">
('<div class="level-left">' + <div class="level-left">
'<div class="level-item">' + <div class="level-item">
('<h2 class="title is-4">(All ' + <h2 class="title is-4">(All ${los.escapedAliases.Occupancy} Types)</h2>
los.escapedAliases.Occupancy + </div>
' Types)</h2>') + </div>
'</div>' + <div class="level-right">
'</div>') + <div class="level-item">
('<div class="level-right">' + <button class="button is-success is-small button--addOccupancyTypeField" type="button">
('<div class="level-item">' + <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
'<button class="button is-success is-small button--addOccupancyTypeField" type="button">' + <span>Add Field</span>
'<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>' + </button>
'<span>Add Field</span>' + </div>
'</button>' + </div>
'</div>') + </div>
'</div>') + </div>
'</div>') + </div>`
'</div>' +
'</div>'
occupancyTypePrintsContainerElement.innerHTML = '' occupancyTypePrintsContainerElement.innerHTML = ''
@ -795,169 +797,168 @@ type ResponseJSON =
) )
occupancyTypesContainerElement occupancyTypesContainerElement
.querySelector('.button--addOccupancyTypeField')! .querySelector('.button--addOccupancyTypeField')
.addEventListener('click', openAddOccupancyTypeField) ?.addEventListener('click', openAddOccupancyTypeField)
if (occupancyTypes.length === 0) { if (occupancyTypes.length === 0) {
// eslint-disable-next-line no-unsanitized/method
occupancyTypesContainerElement.insertAdjacentHTML( occupancyTypesContainerElement.insertAdjacentHTML(
'afterbegin', 'afterbegin',
`<div class="message is-warning> `<div class="message is-warning>
<p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p> <p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p>
</div>` </div>`
) )
// eslint-disable-next-line no-unsanitized/method
occupancyTypePrintsContainerElement.insertAdjacentHTML( occupancyTypePrintsContainerElement.insertAdjacentHTML(
'afterbegin', 'afterbegin',
`<div class="message is-warning> `<div class="message is-warning>
<p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p> <p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p>
</div>` </div>`
) )
return return
} }
for (const occupancyType of occupancyTypes) { for (const occupancyType of occupancyTypes) {
// Types and Fields /*
{ * Types and Fields
const occupancyTypeContainer = document.createElement('div') */
occupancyTypeContainer.className = 'panel container--occupancyType' const occupancyTypeContainer = document.createElement('div')
occupancyTypeContainer.dataset.occupancyTypeId = occupancyTypeContainer.className = 'panel container--occupancyType'
occupancyType.occupancyTypeId.toString()
occupancyTypeContainer.innerHTML = occupancyTypeContainer.dataset.occupancyTypeId =
'<div class="panel-heading">' + occupancyType.occupancyTypeId.toString()
'<div class="level is-mobile">' +
('<div class="level-left">' + // eslint-disable-next-line no-unsanitized/property
'<div class="level-item">' + occupancyTypeContainer.innerHTML = `<div class="panel-heading">
'<button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">' + <div class="level is-mobile">
(expandedOccupancyTypes.has(occupancyType.occupancyTypeId) <div class="level-left">
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>' <div class="level-item">
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>') + <button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">
'</button>' + ${
'</div>' + expandedOccupancyTypes.has(occupancyType.occupancyTypeId)
'<div class="level-item">' + ? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
'<h2 class="title is-4">' + : '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'
cityssm.escapeHTML(occupancyType.occupancyType) + }
'</h2>' + </button>
'</div>' + </div>
'</div>') + <div class="level-item">
('<div class="level-right">' + <h2 class="title is-4">${cityssm.escapeHTML(occupancyType.occupancyType)}</h2>
('<div class="level-item">' + </div>
'<button class="button is-danger is-small button--deleteOccupancyType" type="button">' + </div>
'<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>' + <div class="level-right">
'<span>Delete</span>' + <div class="level-item">
'</button>' + <button class="button is-danger is-small button--deleteOccupancyType" type="button">
'</div>') + <span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>
('<div class="level-item">' + <span>Delete</span>
'<button class="button is-primary is-small button--editOccupancyType" type="button">' + </button>
'<span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>' + </div>
'<span>Edit ' + <div class="level-item">
los.escapedAliases.Occupancy + <button class="button is-primary is-small button--editOccupancyType" type="button">
' Type</span>' + <span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>
'</button>' + <span>Edit ${los.escapedAliases.Occupancy} Type</span>
'</div>') + </button>
('<div class="level-item">' + </div>
'<button class="button is-success is-small button--addOccupancyTypeField" type="button">' + <div class="level-item">
'<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>' + <button class="button is-success is-small button--addOccupancyTypeField" type="button">
'<span>Add Field</span>' + <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
'</button>' + <span>Add Field</span>
'</div>') + </button>
('<div class="level-item">' + </div>
los.getMoveUpDownButtonFieldHTML( <div class="level-item">
${los.getMoveUpDownButtonFieldHTML(
'button--moveOccupancyTypeUp', 'button--moveOccupancyTypeUp',
'button--moveOccupancyTypeDown' 'button--moveOccupancyTypeDown'
) + )}
'</div>') + </div>
'</div>') + </div>
'</div>' + </div>
'</div>' </div>`
renderOccupancyTypeFields( renderOccupancyTypeFields(
occupancyTypeContainer, occupancyTypeContainer,
occupancyType.occupancyTypeId, occupancyType.occupancyTypeId,
occupancyType.occupancyTypeFields! occupancyType.occupancyTypeFields ?? []
) )
occupancyTypeContainer occupancyTypeContainer
.querySelector('.button--toggleOccupancyTypeFields')! .querySelector('.button--toggleOccupancyTypeFields')
.addEventListener('click', toggleOccupancyTypeFields) ?.addEventListener('click', toggleOccupancyTypeFields)
occupancyTypeContainer occupancyTypeContainer
.querySelector('.button--deleteOccupancyType')! .querySelector('.button--deleteOccupancyType')
.addEventListener('click', deleteOccupancyType) ?.addEventListener('click', deleteOccupancyType)
occupancyTypeContainer occupancyTypeContainer
.querySelector('.button--editOccupancyType')! .querySelector('.button--editOccupancyType')
.addEventListener('click', openEditOccupancyType) ?.addEventListener('click', openEditOccupancyType)
occupancyTypeContainer occupancyTypeContainer
.querySelector('.button--addOccupancyTypeField')! .querySelector('.button--addOccupancyTypeField')
.addEventListener('click', openAddOccupancyTypeField) ?.addEventListener('click', openAddOccupancyTypeField)
;( ;(
occupancyTypeContainer.querySelector( occupancyTypeContainer.querySelector(
'.button--moveOccupancyTypeUp' '.button--moveOccupancyTypeUp'
) as HTMLButtonElement ) as HTMLButtonElement
).addEventListener('click', moveOccupancyType) ).addEventListener('click', moveOccupancyType)
;( ;(
occupancyTypeContainer.querySelector( occupancyTypeContainer.querySelector(
'.button--moveOccupancyTypeDown' '.button--moveOccupancyTypeDown'
) as HTMLButtonElement ) as HTMLButtonElement
).addEventListener('click', moveOccupancyType) ).addEventListener('click', moveOccupancyType)
occupancyTypesContainerElement.append(occupancyTypeContainer) occupancyTypesContainerElement.append(occupancyTypeContainer)
}
// Prints /*
{ * Prints
const occupancyTypePrintContainer = document.createElement('div') */
occupancyTypePrintContainer.className = const occupancyTypePrintContainer = document.createElement('div')
'panel container--occupancyTypePrintList'
occupancyTypePrintContainer.dataset.occupancyTypeId = occupancyTypePrintContainer.className =
occupancyType.occupancyTypeId.toString() 'panel container--occupancyTypePrintList'
occupancyTypePrintContainer.innerHTML = occupancyTypePrintContainer.dataset.occupancyTypeId =
'<div class="panel-heading">' + occupancyType.occupancyTypeId.toString()
'<div class="level is-mobile">' +
('<div class="level-left">' +
'<div class="level-item">' +
'<h2 class="title is-4">' +
cityssm.escapeHTML(occupancyType.occupancyType) +
'</h2>' +
'</div>' +
'</div>') +
('<div class="level-right">' +
('<div class="level-item">' +
'<button class="button is-success is-small button--addOccupancyTypePrint" type="button">' +
'<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>' +
'<span>Add Print</span>' +
'</button>' +
'</div>') +
'</div>') +
'</div>' +
'</div>'
renderOccupancyTypePrints( occupancyTypePrintContainer.innerHTML = `<div class="panel-heading">
occupancyTypePrintContainer, <div class="level is-mobile">
occupancyType.occupancyTypeId, <div class="level-left">
occupancyType.occupancyTypePrints! <div class="level-item">
) <h2 class="title is-4">${cityssm.escapeHTML(occupancyType.occupancyType)}</h2>
</div>
</div>
<div class="level-right">
<div class="level-item">
<button class="button is-success is-small button--addOccupancyTypePrint" type="button">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Print</span>
</button>
</div>
</div>
</div>
</div>`
occupancyTypePrintContainer renderOccupancyTypePrints(
.querySelector('.button--addOccupancyTypePrint')! occupancyTypePrintContainer,
.addEventListener('click', openAddOccupancyTypePrint) occupancyType.occupancyTypeId,
occupancyType.occupancyTypePrints ?? []
)
occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer) occupancyTypePrintContainer
} .querySelector('.button--addOccupancyTypePrint')
?.addEventListener('click', openAddOccupancyTypePrint)
occupancyTypePrintsContainerElement.append(occupancyTypePrintContainer)
} }
} }
document document
.querySelector('#button--addOccupancyType')! .querySelector('#button--addOccupancyType')
.addEventListener('click', () => { ?.addEventListener('click', () => {
let addCloseModalFunction: () => void let addCloseModalFunction: () => void
function doAdd(submitEvent: SubmitEvent): void { function doAdd(submitEvent: SubmitEvent): void {
@ -971,7 +972,7 @@ type ResponseJSON =
if (responseJSON.success) { if (responseJSON.success) {
addCloseModalFunction() addCloseModalFunction()
occupancyTypes = responseJSON.occupancyTypes! occupancyTypes = responseJSON.occupancyTypes
renderOccupancyTypes() renderOccupancyTypes()
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
@ -985,10 +986,10 @@ type ResponseJSON =
} }
cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyType', { cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyType', {
onshow: (modalElement) => { onshow(modalElement) {
los.populateAliases(modalElement) los.populateAliases(modalElement)
}, },
onshown: (modalElement, closeModalFunction) => { onshown(modalElement, closeModalFunction) {
addCloseModalFunction = closeModalFunction addCloseModalFunction = closeModalFunction
;( ;(
modalElement.querySelector( modalElement.querySelector(
@ -996,11 +997,11 @@ type ResponseJSON =
) as HTMLInputElement ) as HTMLInputElement
).focus() ).focus()
modalElement.querySelector('form')!.addEventListener('submit', doAdd) modalElement.querySelector('form')?.addEventListener('submit', doAdd)
bulmaJS.toggleHtmlClipped() bulmaJS.toggleHtmlClipped()
}, },
onremoved: () => { onremoved() {
bulmaJS.toggleHtmlClipped() bulmaJS.toggleHtmlClipped()
} }
}) })

View File

@ -1120,7 +1120,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
function renderMilestones() { function renderMilestones() {
var _a, _b, _c, _d, _e; var _a, _b, _c, _d, _e, _f;
// Clear milestones panel // Clear milestones panel
const milestonesPanelElement = document.querySelector('#panel--milestones'); const milestonesPanelElement = document.querySelector('#panel--milestones');
const panelBlockElementsToDelete = milestonesPanelElement.querySelectorAll('.panel-block'); 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); .querySelector('.button--editMilestone')) === null || _d === void 0 ? void 0 : _d.addEventListener('click', editMilestone);
(_e = panelBlockElement (_e = panelBlockElement
.querySelector('.button--completeMilestone')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', completeMilestone); .querySelector('.button--completeMilestone')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', completeMilestone);
panelBlockElement (_f = panelBlockElement
.querySelector('.button--deleteMilestone') .querySelector('.button--deleteMilestone')) === null || _f === void 0 ? void 0 : _f.addEventListener('click', deleteMilestone);
.addEventListener('click', deleteMilestone);
milestonesPanelElement.append(panelBlockElement); milestonesPanelElement.append(panelBlockElement);
} }
bulmaJS.init(milestonesPanelElement); bulmaJS.init(milestonesPanelElement);

View File

@ -369,7 +369,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
function renderMilestones() { function renderMilestones() {
var _a, _b, _c, _d, _e; var _a, _b, _c, _d, _e, _f;
// Clear milestones panel // Clear milestones panel
const milestonesPanelElement = document.querySelector('#panel--milestones'); const milestonesPanelElement = document.querySelector('#panel--milestones');
const panelBlockElementsToDelete = milestonesPanelElement.querySelectorAll('.panel-block'); 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); .querySelector('.button--editMilestone')) === null || _d === void 0 ? void 0 : _d.addEventListener('click', editMilestone);
(_e = panelBlockElement (_e = panelBlockElement
.querySelector('.button--completeMilestone')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', completeMilestone); .querySelector('.button--completeMilestone')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', completeMilestone);
panelBlockElement (_f = panelBlockElement
.querySelector('.button--deleteMilestone') .querySelector('.button--deleteMilestone')) === null || _f === void 0 ? void 0 : _f.addEventListener('click', deleteMilestone);
.addEventListener('click', deleteMilestone);
milestonesPanelElement.append(panelBlockElement); milestonesPanelElement.append(panelBlockElement);
} }
bulmaJS.init(milestonesPanelElement); bulmaJS.init(milestonesPanelElement);

View File

@ -673,8 +673,8 @@ declare const exports: Record<string, unknown>
?.addEventListener('click', completeMilestone) ?.addEventListener('click', completeMilestone)
panelBlockElement panelBlockElement
.querySelector('.button--deleteMilestone')! .querySelector('.button--deleteMilestone')
.addEventListener('click', deleteMilestone) ?.addEventListener('click', deleteMilestone)
milestonesPanelElement.append(panelBlockElement) milestonesPanelElement.append(panelBlockElement)
} }

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long