code cleanup
parent
20d3d89558
commit
2fbfa5963e
|
|
@ -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();
|
||||
}
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue