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";
/* 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)
? '<i class="fas fa-fw fa-minus" 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');
}
}
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', '<div class="panel-block is-block' +
(!occupancyTypeId || expandedOccupancyTypes.has(occupancyTypeId)
// eslint-disable-next-line no-unsanitized/method
panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block ${!occupancyTypeId || expandedOccupancyTypes.has(occupancyTypeId)
? ''
: ' is-hidden') +
'">' +
'<div class="message is-info">' +
'<p class="message-body">There are no additional fields.</p>' +
'</div>' +
'</div>');
: ' is-hidden'}">
<div class="message is-info"><p class="message-body">There are no additional fields.</p></div>
</div>`);
}
else {
for (const occupancyTypeField of occupancyTypeFields) {
@ -282,24 +292,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
panelBlockElement.dataset.occupancyTypeFieldId =
occupancyTypeField.occupancyTypeFieldId.toString();
panelBlockElement.innerHTML =
'<div class="level is-mobile">' +
'<div class="level-left">' +
('<div class="level-item">' +
'<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">' +
cityssm.escapeHTML((_a = occupancyTypeField.occupancyTypeField) !== null && _a !== void 0 ? _a : '') +
'</a>' +
'</div>') +
'</div>' +
'<div class="level-right">' +
('<div class="level-item">' +
los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeFieldUp', 'button--moveOccupancyTypeFieldDown') +
'</div>') +
'</div>' +
'</div>';
panelBlockElement
.querySelector('.button--editOccupancyTypeField')
.addEventListener('click', openEditOccupancyTypeFieldByClick);
// eslint-disable-next-line no-unsanitized/property
panelBlockElement.innerHTML = `<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">
${cityssm.escapeHTML((_a = occupancyTypeField.occupancyTypeField) !== null && _a !== void 0 ? _a : '')}
</a>
</div>
</div>
<div class="level-right">
<div class="level-item">
${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeFieldUp', 'button--moveOccupancyTypeFieldDown')}
</div>
</div>
</div>`;
(_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,6 +385,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
function renderOccupancyTypePrints(panelElement, occupancyTypeId, occupancyTypePrints) {
var _a;
if (occupancyTypePrints.length === 0) {
panelElement.insertAdjacentHTML('beforeend', `<div class="panel-block is-block">
<div class="message is-info">
@ -396,182 +409,165 @@ Object.defineProperty(exports, "__esModule", { value: true });
else if (printEJS.startsWith('screen/')) {
printIconClass = 'fa-file';
}
panelBlockElement.innerHTML =
'<div class="level is-mobile">' +
'<div class="level-left">' +
('<div class="level-item">' +
'<i class="fas fa-fw ' +
printIconClass +
'" aria-hidden="true"></i>' +
'</div>') +
('<div class="level-item">' +
cityssm.escapeHTML(printTitle || printEJS) +
'</div>') +
'</div>' +
'<div class="level-right">' +
('<div class="level-item">' +
los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypePrintUp', 'button--moveOccupancyTypePrintDown') +
'</div>') +
('<div class="level-item">' +
'<button class="button is-small is-danger button--deleteOccupancyTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print">' +
'<i class="fas fa-trash" aria-hidden="true"></i>' +
'</button>' +
'</div>' +
'</div>') +
'</div>' +
'</div>';
// eslint-disable-next-line no-unsanitized/property
panelBlockElement.innerHTML = `<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<i class="fas fa-fw ${printIconClass}" aria-hidden="true"></i>
</div>
<div class="level-item">
${cityssm.escapeHTML(printTitle || printEJS)}
</div>
</div>
<div class="level-right">
<div class="level-item">
${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypePrintUp', 'button--moveOccupancyTypePrintDown')}
</div>
<div class="level-item">
<button class="button is-small is-danger button--deleteOccupancyTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print">
<i class="fas fa-trash" aria-hidden="true"></i>
</button>
</div>
</div>
</div>`;
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 =
'<div class="panel container--occupancyType" id="container--allOccupancyTypeFields" data-occupancy-type-id="">' +
'<div class="panel-heading">' +
('<div class="level is-mobile">' +
('<div class="level-left">' +
'<div class="level-item">' +
('<h2 class="title is-4">(All ' +
los.escapedAliases.Occupancy +
' Types)</h2>') +
'</div>' +
'</div>') +
('<div class="level-right">' +
('<div class="level-item">' +
'<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>Add Field</span>' +
'</button>' +
'</div>') +
'</div>') +
'</div>') +
'</div>' +
'</div>';
var _a, _b, _c, _d, _e, _f, _g, _h;
// eslint-disable-next-line no-unsanitized/property
occupancyTypesContainerElement.innerHTML = `<div class="panel container--occupancyType" id="container--allOccupancyTypeFields" data-occupancy-type-id="">
<div class="panel-heading">
<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<h2 class="title is-4">(All ${los.escapedAliases.Occupancy} Types)</h2>
</div>
</div>
<div class="level-right">
<div class="level-item">
<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>Add Field</span>
</button>
</div>
</div>
</div>
</div>
</div>`;
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', `<div class="message is-warning>
<p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p>
</div>`);
// eslint-disable-next-line no-unsanitized/method
occupancyTypePrintsContainerElement.insertAdjacentHTML('afterbegin', `<div class="message is-warning>
<p class="message-body">There are no active ${los.escapedAliases.occupancy} types.</p>
</div>`);
return;
}
for (const occupancyType of occupancyTypes) {
// Types and Fields
{
/*
* Types and Fields
*/
const occupancyTypeContainer = document.createElement('div');
occupancyTypeContainer.className = 'panel container--occupancyType';
occupancyTypeContainer.dataset.occupancyTypeId =
occupancyType.occupancyTypeId.toString();
occupancyTypeContainer.innerHTML =
'<div class="panel-heading">' +
'<div class="level is-mobile">' +
('<div class="level-left">' +
'<div class="level-item">' +
'<button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">' +
(expandedOccupancyTypes.has(occupancyType.occupancyTypeId)
// eslint-disable-next-line no-unsanitized/property
occupancyTypeContainer.innerHTML = `<div class="panel-heading">
<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">
${expandedOccupancyTypes.has(occupancyType.occupancyTypeId)
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>') +
'</button>' +
'</div>' +
'<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-danger is-small button--deleteOccupancyType" type="button">' +
'<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>' +
'<span>Delete</span>' +
'</button>' +
'</div>') +
('<div class="level-item">' +
'<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>Edit ' +
los.escapedAliases.Occupancy +
' Type</span>' +
'</button>' +
'</div>') +
('<div class="level-item">' +
'<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>Add Field</span>' +
'</button>' +
'</div>') +
('<div class="level-item">' +
los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeUp', 'button--moveOccupancyTypeDown') +
'</div>') +
'</div>') +
'</div>' +
'</div>';
renderOccupancyTypeFields(occupancyTypeContainer, occupancyType.occupancyTypeId, occupancyType.occupancyTypeFields);
occupancyTypeContainer
.querySelector('.button--toggleOccupancyTypeFields')
.addEventListener('click', toggleOccupancyTypeFields);
occupancyTypeContainer
.querySelector('.button--deleteOccupancyType')
.addEventListener('click', deleteOccupancyType);
occupancyTypeContainer
.querySelector('.button--editOccupancyType')
.addEventListener('click', openEditOccupancyType);
occupancyTypeContainer
.querySelector('.button--addOccupancyTypeField')
.addEventListener('click', openAddOccupancyTypeField);
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'}
</button>
</div>
<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-danger is-small button--deleteOccupancyType" type="button">
<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>
<span>Delete</span>
</button>
</div>
<div class="level-item">
<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>Edit ${los.escapedAliases.Occupancy} Type</span>
</button>
</div>
<div class="level-item">
<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>Add Field</span>
</button>
</div>
<div class="level-item">
${los.getMoveUpDownButtonFieldHTML('button--moveOccupancyTypeUp', 'button--moveOccupancyTypeDown')}
</div>
</div>
</div>
</div>`;
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
{
/*
* Prints
*/
const occupancyTypePrintContainer = document.createElement('div');
occupancyTypePrintContainer.className =
'panel container--occupancyTypePrintList';
occupancyTypePrintContainer.dataset.occupancyTypeId =
occupancyType.occupancyTypeId.toString();
occupancyTypePrintContainer.innerHTML =
'<div class="panel-heading">' +
'<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, occupancyType.occupancyTypeId, occupancyType.occupancyTypePrints);
occupancyTypePrintContainer
.querySelector('.button--addOccupancyTypePrint')
.addEventListener('click', openAddOccupancyTypePrint);
occupancyTypePrintContainer.innerHTML = `<div class="panel-heading">
<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, 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();
}
});

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 * 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<string, unknown>
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<number>()
@ -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)
? '<i class="fas fa-fw fa-minus" 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 {
const responseJSON = rawResponseJSON as {
success: boolean
errorMessage?: string
occupancyTypes?: recordTypes.OccupancyType[]
allOccupancyTypeFields?: recordTypes.OccupancyTypeField[]
}): void {
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',
'<div class="panel-block is-block' +
(!occupancyTypeId || expandedOccupancyTypes.has(occupancyTypeId)
`<div class="panel-block is-block ${
!occupancyTypeId || expandedOccupancyTypes.has(occupancyTypeId)
? ''
: ' is-hidden') +
'">' +
'<div class="message is-info">' +
'<p class="message-body">There are no additional fields.</p>' +
'</div>' +
'</div>'
: ' is-hidden'
}">
<div class="message is-info"><p class="message-body">There are no additional fields.</p></div>
</div>`
)
} else {
for (const occupancyTypeField of occupancyTypeFields) {
@ -518,30 +522,30 @@ type ResponseJSON =
}
panelBlockElement.dataset.occupancyTypeFieldId =
occupancyTypeField.occupancyTypeFieldId!.toString()
occupancyTypeField.occupancyTypeFieldId.toString()
panelBlockElement.innerHTML =
'<div class="level is-mobile">' +
'<div class="level-left">' +
('<div class="level-item">' +
'<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">' +
cityssm.escapeHTML(occupancyTypeField.occupancyTypeField ?? '') +
'</a>' +
'</div>') +
'</div>' +
'<div class="level-right">' +
('<div class="level-item">' +
los.getMoveUpDownButtonFieldHTML(
// eslint-disable-next-line no-unsanitized/property
panelBlockElement.innerHTML = `<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<a class="has-text-weight-bold button--editOccupancyTypeField" href="#">
${cityssm.escapeHTML(occupancyTypeField.occupancyTypeField ?? '')}
</a>
</div>
</div>
<div class="level-right">
<div class="level-item">
${los.getMoveUpDownButtonFieldHTML(
'button--moveOccupancyTypeFieldUp',
'button--moveOccupancyTypeFieldDown'
) +
'</div>') +
'</div>' +
'</div>'
)}
</div>
</div>
</div>`
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 = (
const occupancyTypeId =
(
(clickEvent.currentTarget as HTMLElement).closest(
'.container--occupancyTypePrintList'
) as HTMLElement
).dataset.occupancyTypeId!
).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<string, string>
)) {
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
@ -713,33 +720,30 @@ type ResponseJSON =
printIconClass = 'fa-file'
}
panelBlockElement.innerHTML =
'<div class="level is-mobile">' +
'<div class="level-left">' +
('<div class="level-item">' +
'<i class="fas fa-fw ' +
printIconClass +
'" aria-hidden="true"></i>' +
'</div>') +
('<div class="level-item">' +
cityssm.escapeHTML(printTitle || printEJS) +
'</div>') +
'</div>' +
'<div class="level-right">' +
('<div class="level-item">' +
los.getMoveUpDownButtonFieldHTML(
// eslint-disable-next-line no-unsanitized/property
panelBlockElement.innerHTML = `<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<i class="fas fa-fw ${printIconClass}" aria-hidden="true"></i>
</div>
<div class="level-item">
${cityssm.escapeHTML(printTitle || printEJS)}
</div>
</div>
<div class="level-right">
<div class="level-item">
${los.getMoveUpDownButtonFieldHTML(
'button--moveOccupancyTypePrintUp',
'button--moveOccupancyTypePrintDown'
) +
'</div>') +
('<div class="level-item">' +
'<button class="button is-small is-danger button--deleteOccupancyTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print">' +
'<i class="fas fa-trash" aria-hidden="true"></i>' +
'</button>' +
'</div>' +
'</div>') +
'</div>' +
'</div>'
)}
</div>
<div class="level-item">
<button class="button is-small is-danger button--deleteOccupancyTypePrint" data-tooltip="Delete" type="button" aria-label="Delete Print">
<i class="fas fa-trash" aria-hidden="true"></i>
</button>
</div>
</div>
</div>`
;(
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 =
'<div class="panel container--occupancyType" id="container--allOccupancyTypeFields" data-occupancy-type-id="">' +
'<div class="panel-heading">' +
('<div class="level is-mobile">' +
('<div class="level-left">' +
'<div class="level-item">' +
('<h2 class="title is-4">(All ' +
los.escapedAliases.Occupancy +
' Types)</h2>') +
'</div>' +
'</div>') +
('<div class="level-right">' +
('<div class="level-item">' +
'<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>Add Field</span>' +
'</button>' +
'</div>') +
'</div>') +
'</div>') +
'</div>' +
'</div>'
// eslint-disable-next-line no-unsanitized/property
occupancyTypesContainerElement.innerHTML = `<div class="panel container--occupancyType" id="container--allOccupancyTypeFields" data-occupancy-type-id="">
<div class="panel-heading">
<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<h2 class="title is-4">(All ${los.escapedAliases.Occupancy} Types)</h2>
</div>
</div>
<div class="level-right">
<div class="level-item">
<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>Add Field</span>
</button>
</div>
</div>
</div>
</div>
</div>`
occupancyTypePrintsContainerElement.innerHTML = ''
@ -795,10 +797,11 @@ 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',
`<div class="message is-warning>
@ -806,6 +809,7 @@ type ResponseJSON =
</div>`
)
// eslint-disable-next-line no-unsanitized/method
occupancyTypePrintsContainerElement.insertAdjacentHTML(
'afterbegin',
`<div class="message is-warning>
@ -817,8 +821,10 @@ type ResponseJSON =
}
for (const occupancyType of occupancyTypes) {
// Types and Fields
{
/*
* Types and Fields
*/
const occupancyTypeContainer = document.createElement('div')
occupancyTypeContainer.className = 'panel container--occupancyType'
@ -826,75 +832,73 @@ type ResponseJSON =
occupancyTypeContainer.dataset.occupancyTypeId =
occupancyType.occupancyTypeId.toString()
occupancyTypeContainer.innerHTML =
'<div class="panel-heading">' +
'<div class="level is-mobile">' +
('<div class="level-left">' +
'<div class="level-item">' +
'<button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">' +
(expandedOccupancyTypes.has(occupancyType.occupancyTypeId)
// eslint-disable-next-line no-unsanitized/property
occupancyTypeContainer.innerHTML = `<div class="panel-heading">
<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<button class="button is-small button--toggleOccupancyTypeFields" data-tooltip="Toggle Fields" type="button" aria-label="Toggle Fields">
${
expandedOccupancyTypes.has(occupancyType.occupancyTypeId)
? '<i class="fas fa-fw fa-minus" aria-hidden="true"></i>'
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>') +
'</button>' +
'</div>' +
'<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-danger is-small button--deleteOccupancyType" type="button">' +
'<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>' +
'<span>Delete</span>' +
'</button>' +
'</div>') +
('<div class="level-item">' +
'<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>Edit ' +
los.escapedAliases.Occupancy +
' Type</span>' +
'</button>' +
'</div>') +
('<div class="level-item">' +
'<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>Add Field</span>' +
'</button>' +
'</div>') +
('<div class="level-item">' +
los.getMoveUpDownButtonFieldHTML(
: '<i class="fas fa-fw fa-plus" aria-hidden="true"></i>'
}
</button>
</div>
<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-danger is-small button--deleteOccupancyType" type="button">
<span class="icon is-small"><i class="fas fa-trash" aria-hidden="true"></i></span>
<span>Delete</span>
</button>
</div>
<div class="level-item">
<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>Edit ${los.escapedAliases.Occupancy} Type</span>
</button>
</div>
<div class="level-item">
<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>Add Field</span>
</button>
</div>
<div class="level-item">
${los.getMoveUpDownButtonFieldHTML(
'button--moveOccupancyTypeUp',
'button--moveOccupancyTypeDown'
) +
'</div>') +
'</div>') +
'</div>' +
'</div>'
)}
</div>
</div>
</div>
</div>`
renderOccupancyTypeFields(
occupancyTypeContainer,
occupancyType.occupancyTypeId,
occupancyType.occupancyTypeFields!
occupancyType.occupancyTypeFields ?? []
)
occupancyTypeContainer
.querySelector('.button--toggleOccupancyTypeFields')!
.addEventListener('click', toggleOccupancyTypeFields)
.querySelector('.button--toggleOccupancyTypeFields')
?.addEventListener('click', toggleOccupancyTypeFields)
occupancyTypeContainer
.querySelector('.button--deleteOccupancyType')!
.addEventListener('click', deleteOccupancyType)
.querySelector('.button--deleteOccupancyType')
?.addEventListener('click', deleteOccupancyType)
occupancyTypeContainer
.querySelector('.button--editOccupancyType')!
.addEventListener('click', openEditOccupancyType)
.querySelector('.button--editOccupancyType')
?.addEventListener('click', openEditOccupancyType)
occupancyTypeContainer
.querySelector('.button--addOccupancyTypeField')!
.addEventListener('click', openAddOccupancyTypeField)
.querySelector('.button--addOccupancyTypeField')
?.addEventListener('click', openAddOccupancyTypeField)
;(
occupancyTypeContainer.querySelector(
'.button--moveOccupancyTypeUp'
@ -907,10 +911,11 @@ type ResponseJSON =
).addEventListener('click', moveOccupancyType)
occupancyTypesContainerElement.append(occupancyTypeContainer)
}
// Prints
{
/*
* Prints
*/
const occupancyTypePrintContainer = document.createElement('div')
occupancyTypePrintContainer.className =
@ -919,45 +924,41 @@ type ResponseJSON =
occupancyTypePrintContainer.dataset.occupancyTypeId =
occupancyType.occupancyTypeId.toString()
occupancyTypePrintContainer.innerHTML =
'<div class="panel-heading">' +
'<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>'
occupancyTypePrintContainer.innerHTML = `<div class="panel-heading">
<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,
occupancyType.occupancyTypeId,
occupancyType.occupancyTypePrints!
occupancyType.occupancyTypePrints ?? []
)
occupancyTypePrintContainer
.querySelector('.button--addOccupancyTypePrint')!
.addEventListener('click', openAddOccupancyTypePrint)
.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()
}
})

View File

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

View File

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

View File

@ -673,8 +673,8 @@ declare const exports: Record<string, unknown>
?.addEventListener('click', completeMilestone)
panelBlockElement
.querySelector('.button--deleteMilestone')!
.addEventListener('click', deleteMilestone)
.querySelector('.button--deleteMilestone')
?.addEventListener('click', deleteMilestone)
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