"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); (() => { const los = exports.los; const occupancyTypesContainerElement = document.querySelector('#container--occupancyTypes'); const ContractTypePrintsContainerElement = document.querySelector('#container--ContractTypePrints'); let occupancyTypes = exports.occupancyTypes; delete exports.occupancyTypes; let allContractTypeFields = exports.allContractTypeFields; delete exports.allContractTypeFields; const expandedOccupancyTypes = new Set(); function toggleContractTypeFields(clickEvent) { const toggleButtonElement = clickEvent.currentTarget; const occupancyTypeElement = toggleButtonElement.closest('.container--occupancyType'); const contractTypeId = Number.parseInt(occupancyTypeElement.dataset.contractTypeId ?? '', 10); if (expandedOccupancyTypes.has(contractTypeId)) { expandedOccupancyTypes.delete(contractTypeId); } else { expandedOccupancyTypes.add(contractTypeId); } // eslint-disable-next-line no-unsanitized/property toggleButtonElement.innerHTML = expandedOccupancyTypes.has(contractTypeId) ? '' : ''; const panelBlockElements = occupancyTypeElement.querySelectorAll('.panel-block'); for (const panelBlockElement of panelBlockElements) { panelBlockElement.classList.toggle('is-hidden'); } } function occupancyTypeResponseHandler(rawResponseJSON) { const responseJSON = rawResponseJSON; if (responseJSON.success) { occupancyTypes = responseJSON.occupancyTypes; allContractTypeFields = responseJSON.allContractTypeFields; renderOccupancyTypes(); } else { bulmaJS.alert({ title: `Error Updating ${los.escapedAliases.Occupancy} Type`, message: responseJSON.errorMessage ?? '', contextualColorName: 'danger' }); } } function deleteOccupancyType(clickEvent) { const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId ?? '', 10); function doDelete() { cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteContractType`, { contractTypeId }, occupancyTypeResponseHandler); } bulmaJS.confirm({ title: `Delete ${los.escapedAliases.Occupancy} Type`, message: `Are you sure you want to delete this ${los.escapedAliases.occupancy} type?`, contextualColorName: 'warning', okButton: { text: `Yes, Delete ${los.escapedAliases.Occupancy} Type`, callbackFunction: doDelete } }); } function openEditOccupancyType(clickEvent) { const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId ?? '', 10); const occupancyType = occupancyTypes.find((currentOccupancyType) => contractTypeId === currentOccupancyType.contractTypeId); let editCloseModalFunction; function doEdit(submitEvent) { submitEvent.preventDefault(); cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateContractType`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; occupancyTypeResponseHandler(responseJSON); if (responseJSON.success) { editCloseModalFunction(); } }); } cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyType', { onshow(modalElement) { los.populateAliases(modalElement); modalElement.querySelector('#occupancyTypeEdit--contractTypeId').value = contractTypeId.toString(); modalElement.querySelector('#occupancyTypeEdit--occupancyType').value = occupancyType.occupancyType; }, onshown(modalElement, closeModalFunction) { editCloseModalFunction = closeModalFunction; modalElement.querySelector('#occupancyTypeEdit--occupancyType').focus(); modalElement.querySelector('form')?.addEventListener('submit', doEdit); bulmaJS.toggleHtmlClipped(); }, onremoved() { bulmaJS.toggleHtmlClipped(); } }); } function openAddOccupancyTypeField(clickEvent) { const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId ?? '', 10); let addCloseModalFunction; function doAdd(submitEvent) { submitEvent.preventDefault(); cityssm.postJSON(`${los.urlPrefix}/admin/doAddContractTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; expandedOccupancyTypes.add(contractTypeId); occupancyTypeResponseHandler(responseJSON); if (responseJSON.success) { addCloseModalFunction(); openEditOccupancyTypeField(contractTypeId, responseJSON.contractTypeFieldId ?? 0); } }); } cityssm.openHtmlModal('adminOccupancyTypes-addOccupancyTypeField', { onshow(modalElement) { los.populateAliases(modalElement); if (contractTypeId) { ; modalElement.querySelector('#occupancyTypeFieldAdd--contractTypeId').value = contractTypeId.toString(); } }, onshown(modalElement, closeModalFunction) { addCloseModalFunction = closeModalFunction; modalElement.querySelector('#occupancyTypeFieldAdd--occupancyTypeField').focus(); modalElement.querySelector('form')?.addEventListener('submit', doAdd); bulmaJS.toggleHtmlClipped(); }, onremoved() { bulmaJS.toggleHtmlClipped(); } }); } function moveOccupancyType(clickEvent) { const buttonElement = clickEvent.currentTarget; const contractTypeId = clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId; cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up' ? 'doMoveContractTypeUp' : 'doMoveContractTypeDown'}`, { contractTypeId, moveToEnd: clickEvent.shiftKey ? '1' : '0' }, occupancyTypeResponseHandler); } function openEditOccupancyTypeField(contractTypeId, contractTypeFieldId) { let occupancyType; if (contractTypeId) { occupancyType = occupancyTypes.find((currentOccupancyType) => currentOccupancyType.contractTypeId === contractTypeId); } const occupancyTypeField = (occupancyType ? occupancyType.ContractTypeFields ?? [] : allContractTypeFields).find((currentOccupancyTypeField) => currentOccupancyTypeField.contractTypeFieldId === contractTypeFieldId); let fieldTypeElement; let minimumLengthElement; let maximumLengthElement; let patternElement; let occupancyTypeFieldValuesElement; let editCloseModalFunction; function updateMaximumLengthMin() { maximumLengthElement.min = minimumLengthElement.value; } function toggleInputFields() { switch (fieldTypeElement.value) { case 'date': { minimumLengthElement.disabled = true; maximumLengthElement.disabled = true; patternElement.disabled = true; occupancyTypeFieldValuesElement.disabled = true; break; } case 'select': { minimumLengthElement.disabled = true; maximumLengthElement.disabled = true; patternElement.disabled = true; occupancyTypeFieldValuesElement.disabled = false; break; } default: { minimumLengthElement.disabled = false; maximumLengthElement.disabled = false; patternElement.disabled = false; occupancyTypeFieldValuesElement.disabled = true; break; } } } function doUpdate(submitEvent) { submitEvent.preventDefault(); cityssm.postJSON(`${los.urlPrefix}/admin/doUpdateContractTypeField`, submitEvent.currentTarget, (rawResponseJSON) => { const responseJSON = rawResponseJSON; occupancyTypeResponseHandler(responseJSON); if (responseJSON.success) { editCloseModalFunction(); } }); } function doDelete() { cityssm.postJSON(`${los.urlPrefix}/admin/doDeleteContractTypeField`, { contractTypeFieldId }, (rawResponseJSON) => { const responseJSON = rawResponseJSON; occupancyTypeResponseHandler(responseJSON); if (responseJSON.success) { editCloseModalFunction(); } }); } function confirmDoDelete() { bulmaJS.confirm({ title: 'Delete Field', message: 'Are you sure you want to delete this field? Note that historical records that make use of this field will not be affected.', contextualColorName: 'warning', okButton: { text: 'Yes, Delete Field', callbackFunction: doDelete } }); } cityssm.openHtmlModal('adminOccupancyTypes-editOccupancyTypeField', { onshow: (modalElement) => { los.populateAliases(modalElement); modalElement.querySelector('#occupancyTypeFieldEdit--contractTypeFieldId').value = occupancyTypeField.contractTypeFieldId.toString(); modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeField').value = occupancyTypeField.occupancyTypeField ?? ''; modalElement.querySelector('#occupancyTypeFieldEdit--isRequired').value = occupancyTypeField.isRequired ?? false ? '1' : '0'; fieldTypeElement = modalElement.querySelector('#occupancyTypeFieldEdit--fieldType'); fieldTypeElement.value = occupancyTypeField.fieldType; minimumLengthElement = modalElement.querySelector('#occupancyTypeFieldEdit--minimumLength'); minimumLengthElement.value = occupancyTypeField.minimumLength?.toString() ?? ''; maximumLengthElement = modalElement.querySelector('#occupancyTypeFieldEdit--maximumLength'); maximumLengthElement.value = occupancyTypeField.maximumLength?.toString() ?? ''; patternElement = modalElement.querySelector('#occupancyTypeFieldEdit--pattern'); patternElement.value = occupancyTypeField.pattern ?? ''; occupancyTypeFieldValuesElement = modalElement.querySelector('#occupancyTypeFieldEdit--occupancyTypeFieldValues'); occupancyTypeFieldValuesElement.value = occupancyTypeField.occupancyTypeFieldValues ?? ''; toggleInputFields(); }, onshown: (modalElement, closeModalFunction) => { editCloseModalFunction = closeModalFunction; bulmaJS.init(modalElement); bulmaJS.toggleHtmlClipped(); cityssm.enableNavBlocker(); modalElement.querySelector('form')?.addEventListener('submit', doUpdate); minimumLengthElement.addEventListener('keyup', updateMaximumLengthMin); updateMaximumLengthMin(); fieldTypeElement.addEventListener('change', toggleInputFields); modalElement .querySelector('#button--deleteOccupancyTypeField') ?.addEventListener('click', confirmDoDelete); }, onremoved: () => { bulmaJS.toggleHtmlClipped(); cityssm.disableNavBlocker(); } }); } function openEditOccupancyTypeFieldByClick(clickEvent) { clickEvent.preventDefault(); const contractTypeFieldId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.contractTypeFieldId ?? '', 10); const contractTypeId = Number.parseInt(clickEvent.currentTarget.closest('.container--occupancyType').dataset.contractTypeId ?? '', 10); openEditOccupancyTypeField(contractTypeId, contractTypeFieldId); } function moveOccupancyTypeField(clickEvent) { const buttonElement = clickEvent.currentTarget; const contractTypeFieldId = clickEvent.currentTarget.closest('.container--occupancyTypeField').dataset.contractTypeFieldId; cityssm.postJSON(`${los.urlPrefix}/admin/${buttonElement.dataset.direction === 'up' ? 'doMoveContractTypeFieldUp' : // eslint-disable-next-line no-secrets/no-secrets 'doMoveContractTypeFieldDown'}`, { contractTypeFieldId, moveToEnd: clickEvent.shiftKey ? '1' : '0' }, occupancyTypeResponseHandler); } function renderContractTypeFields(panelElement, contractTypeId, ContractTypeFields) { if (ContractTypeFields.length === 0) { // eslint-disable-next-line no-unsanitized/method panelElement.insertAdjacentHTML('beforeend', `
`); } else { for (const occupancyTypeField of ContractTypeFields) { const panelBlockElement = document.createElement('div'); panelBlockElement.className = 'panel-block is-block container--occupancyTypeField'; if (contractTypeId && !expandedOccupancyTypes.has(contractTypeId)) { panelBlockElement.classList.add('is-hidden'); } panelBlockElement.dataset.contractTypeFieldId = occupancyTypeField.contractTypeFieldId.toString(); // eslint-disable-next-line no-unsanitized/property panelBlockElement.innerHTML = `