"use strict"; /* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */ Object.defineProperty(exports, "__esModule", { value: true }); let lotOccupancyOccupants; const openEditLotOccupancyOccupant = (clickEvent) => { const lotOccupantIndex = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.lotOccupantIndex, 10); const lotOccupancyOccupant = lotOccupancyOccupants.find((currentLotOccupancyOccupant) => { return currentLotOccupancyOccupant.lotOccupantIndex === lotOccupantIndex; }); let editFormElement; let editCloseModalFunction; const editOccupant = (submitEvent) => { submitEvent.preventDefault(); cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doUpdateLotOccupancyOccupant", editFormElement, (responseJSON) => { if (responseJSON.success) { lotOccupancyOccupants = responseJSON.lotOccupancyOccupants; editCloseModalFunction(); renderLotOccupancyOccupants(); } else { bulmaJS.alert({ title: "Error Updating " + exports.aliases.occupant, message: responseJSON.errorMessage || "", contextualColorName: "danger" }); } }); }; cityssm.openHtmlModal("lotOccupancy-editOccupant", { onshow: (modalElement) => { los.populateAliases(modalElement); modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupancyId").value = lotOccupancyId; modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupantIndex").value = lotOccupantIndex.toString(); const lotOccupantTypeSelectElement = modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupantTypeId"); let lotOccupantTypeSelected = false; for (const lotOccupantType of exports.lotOccupantTypes) { const optionElement = document.createElement("option"); optionElement.value = lotOccupantType.lotOccupantTypeId.toString(); optionElement.textContent = lotOccupantType.lotOccupantType; if (lotOccupantType.lotOccupantTypeId === lotOccupancyOccupant.lotOccupantTypeId) { optionElement.selected = true; lotOccupantTypeSelected = true; } lotOccupantTypeSelectElement.append(optionElement); } if (!lotOccupantTypeSelected) { const optionElement = document.createElement("option"); optionElement.value = lotOccupancyOccupant.lotOccupantTypeId.toString(); optionElement.textContent = lotOccupancyOccupant.lotOccupantType; optionElement.selected = true; lotOccupantTypeSelectElement.append(optionElement); } modalElement.querySelector("#lotOccupancyOccupantEdit--occupantName").value = lotOccupancyOccupant.occupantName; modalElement.querySelector("#lotOccupancyOccupantEdit--occupantAddress1").value = lotOccupancyOccupant.occupantAddress1; modalElement.querySelector("#lotOccupancyOccupantEdit--occupantAddress2").value = lotOccupancyOccupant.occupantAddress2; modalElement.querySelector("#lotOccupancyOccupantEdit--occupantCity").value = lotOccupancyOccupant.occupantCity; modalElement.querySelector("#lotOccupancyOccupantEdit--occupantProvince").value = lotOccupancyOccupant.occupantProvince; modalElement.querySelector("#lotOccupancyOccupantEdit--occupantPostalCode").value = lotOccupancyOccupant.occupantPostalCode; modalElement.querySelector("#lotOccupancyOccupantEdit--occupantPhoneNumber").value = lotOccupancyOccupant.occupantPhoneNumber; modalElement.querySelector("#lotOccupancyOccupantEdit--occupantEmailAddress").value = lotOccupancyOccupant.occupantEmailAddress; modalElement.querySelector("#lotOccupancyOccupantEdit--occupantComment").value = lotOccupancyOccupant.occupantComment; }, onshown: (modalElement, closeModalFunction) => { bulmaJS.toggleHtmlClipped(); modalElement.querySelector("#lotOccupancyOccupantEdit--lotOccupantTypeId").focus(); editFormElement = modalElement.querySelector("form"); editFormElement.addEventListener("submit", editOccupant); editCloseModalFunction = closeModalFunction; }, onremoved: () => { bulmaJS.toggleHtmlClipped(); } }); }; const deleteLotOccupancyOccupant = (clickEvent) => { const lotOccupantIndex = clickEvent.currentTarget.closest("tr").dataset .lotOccupantIndex; const doDelete = () => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doDeleteLotOccupancyOccupant", { lotOccupancyId, lotOccupantIndex }, (responseJSON) => { if (responseJSON.success) { lotOccupancyOccupants = responseJSON.lotOccupancyOccupants; renderLotOccupancyOccupants(); } else { bulmaJS.alert({ title: "Error Removing " + exports.aliases.occupant, message: responseJSON.errorMessage || "", contextualColorName: "danger" }); } }); }; bulmaJS.confirm({ title: "Remove " + exports.aliases.occupant + "?", message: "Are you sure you want to remove this " + exports.aliases.occupant.toLowerCase() + "?", okButton: { text: "Yes, Remove " + exports.aliases.occupant, callbackFunction: doDelete }, contextualColorName: "warning" }); }; const renderLotOccupancyOccupants = () => { const occupantsContainer = document.querySelector("#container--lotOccupancyOccupants"); cityssm.clearElement(occupantsContainer); if (lotOccupancyOccupants.length === 0) { occupantsContainer.innerHTML = '
' + '

There are no ' + exports.aliases.occupants.toLowerCase() + " associated with this record.

" + "
"; return; } const tableElement = document.createElement("table"); tableElement.className = "table is-fullwidth is-striped is-hoverable"; tableElement.innerHTML = "" + ("" + exports.aliases.occupant + "") + "Address" + "Other Contact" + "Comment" + 'Options' + "" + ""; for (const lotOccupancyOccupant of lotOccupancyOccupants) { const tableRowElement = document.createElement("tr"); tableRowElement.dataset.lotOccupantIndex = lotOccupancyOccupant.lotOccupantIndex.toString(); tableRowElement.innerHTML = "" + cityssm.escapeHTML(lotOccupancyOccupant.occupantName || "(No Name)") + "
" + ('' + '' + ' ' + cityssm.escapeHTML(lotOccupancyOccupant.lotOccupantType) + "" + "") + "" + ("" + (lotOccupancyOccupant.occupantAddress1 ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress1) + "
" : "") + (lotOccupancyOccupant.occupantAddress2 ? cityssm.escapeHTML(lotOccupancyOccupant.occupantAddress2) + "
" : "") + (lotOccupancyOccupant.occupantCity ? cityssm.escapeHTML(lotOccupancyOccupant.occupantCity) + ", " : "") + cityssm.escapeHTML(lotOccupancyOccupant.occupantProvince || "") + "
" + cityssm.escapeHTML(lotOccupancyOccupant.occupantPostalCode || "") + "") + ("" + (lotOccupancyOccupant.occupantPhoneNumber ? cityssm.escapeHTML(lotOccupancyOccupant.occupantPhoneNumber) + "
" : "") + (lotOccupancyOccupant.occupantEmailAddress ? cityssm.escapeHTML(lotOccupancyOccupant.occupantEmailAddress) : "") + "") + ("" + cityssm.escapeHTML(lotOccupancyOccupant.occupantComment) + "") + ('' + '
' + ('") + ('") + "
" + ""); tableRowElement.querySelector(".button--edit").addEventListener("click", openEditLotOccupancyOccupant); tableRowElement.querySelector(".button--delete").addEventListener("click", deleteLotOccupancyOccupant); tableElement.querySelector("tbody").append(tableRowElement); } occupantsContainer.append(tableElement); }; if (isCreate) { const lotOccupantTypeIdElement = document.querySelector("#lotOccupancy--lotOccupantTypeId"); lotOccupantTypeIdElement.addEventListener("change", () => { const occupantFields = formElement.querySelectorAll("[data-table='LotOccupancyOccupant']"); for (const occupantField of occupantFields) { occupantField.disabled = lotOccupantTypeIdElement.value === ""; } }); } else { lotOccupancyOccupants = exports.lotOccupancyOccupants; delete exports.lotOccupancyOccupants; document.querySelector("#button--addOccupant").addEventListener("click", () => { let addCloseModalFunction; let addFormElement; let searchFormElement; let searchResultsElement; const addOccupant = (formOrObject) => { cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doAddLotOccupancyOccupant", formOrObject, (responseJSON) => { if (responseJSON.success) { lotOccupancyOccupants = responseJSON.lotOccupancyOccupants; addCloseModalFunction(); renderLotOccupancyOccupants(); } else { bulmaJS.alert({ title: "Error Adding " + exports.aliases.occupant, message: responseJSON.errorMessage || "", contextualColorName: "danger" }); } }); }; const addOccupantFromForm = (submitEvent) => { submitEvent.preventDefault(); addOccupant(addFormElement); }; let pastOccupantSearchResults = []; const addOccupantFromCopy = (clickEvent) => { clickEvent.preventDefault(); const panelBlockElement = clickEvent.currentTarget; const occupant = pastOccupantSearchResults[Number.parseInt(panelBlockElement.dataset.index, 10)]; const lotOccupantTypeId = panelBlockElement .closest(".modal") .querySelector("#lotOccupancyOccupantCopy--lotOccupantTypeId").value; if (lotOccupantTypeId === "") { bulmaJS.alert({ title: "No " + exports.aliases.occupant + " Type Selected", message: "Select a type to apply to the newly added " + exports.aliases.occupant.toLowerCase() + ".", contextualColorName: "warning" }); } else { occupant.lotOccupantTypeId = Number.parseInt(lotOccupantTypeId, 10); occupant.lotOccupancyId = Number.parseInt(lotOccupancyId, 10); addOccupant(occupant); } }; const searchOccupants = (event) => { event.preventDefault(); if (searchFormElement.querySelector("#lotOccupancyOccupantCopy--searchFilter").value === "") { searchResultsElement.innerHTML = '
' + '

Enter a partial name or address in the search field above.

' + "
"; return; } searchResultsElement.innerHTML = los.getLoadingParagraphHTML("Searching..."); cityssm.postJSON(los.urlPrefix + "/lotOccupancies/doSearchPastOccupants", searchFormElement, (responseJSON) => { pastOccupantSearchResults = responseJSON.occupants; const panelElement = document.createElement("div"); panelElement.className = "panel"; for (const [index, occupant] of pastOccupantSearchResults.entries()) { const panelBlockElement = document.createElement("a"); panelBlockElement.className = "panel-block is-block"; panelBlockElement.dataset.index = index.toString(); panelBlockElement.innerHTML = "" + cityssm.escapeHTML(occupant.occupantName || "") + "" + "
" + '
' + ('
' + cityssm.escapeHTML(occupant.occupantAddress1 || "") + "
" + (occupant.occupantAddress2 ? cityssm.escapeHTML(occupant.occupantAddress2) + "
" : "") + cityssm.escapeHTML(occupant.occupantCity || "") + ", " + cityssm.escapeHTML(occupant.occupantProvince || "") + "
" + cityssm.escapeHTML(occupant.occupantPostalCode || "") + "
") + ('
' + (occupant.occupantPhoneNumber ? cityssm.escapeHTML(occupant.occupantPhoneNumber) + "
" : "") + cityssm.escapeHTML(occupant.occupantEmailAddress || "") + "
" + "
") + "
"; panelBlockElement.addEventListener("click", addOccupantFromCopy); panelElement.append(panelBlockElement); } searchResultsElement.innerHTML = ""; searchResultsElement.append(panelElement); }); }; cityssm.openHtmlModal("lotOccupancy-addOccupant", { onshow: (modalElement) => { los.populateAliases(modalElement); modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupancyId").value = lotOccupancyId; const lotOccupantTypeSelectElement = modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupantTypeId"); const lotOccupantTypeCopySelectElement = modalElement.querySelector("#lotOccupancyOccupantCopy--lotOccupantTypeId"); for (const lotOccupantType of exports.lotOccupantTypes) { const optionElement = document.createElement("option"); optionElement.value = lotOccupantType.lotOccupantTypeId.toString(); optionElement.textContent = lotOccupantType.lotOccupantType; lotOccupantTypeSelectElement.append(optionElement); lotOccupantTypeCopySelectElement.append(optionElement.cloneNode(true)); } modalElement.querySelector("#lotOccupancyOccupantAdd--occupantCity").value = exports.occupantCityDefault; modalElement.querySelector("#lotOccupancyOccupantAdd--occupantProvince").value = exports.occupantProvinceDefault; }, onshown: (modalElement, closeModalFunction) => { bulmaJS.toggleHtmlClipped(); bulmaJS.init(modalElement); modalElement.querySelector("#lotOccupancyOccupantAdd--lotOccupantTypeId").focus(); addFormElement = modalElement.querySelector("#form--lotOccupancyOccupantAdd"); addFormElement.addEventListener("submit", addOccupantFromForm); searchResultsElement = modalElement.querySelector("#lotOccupancyOccupantCopy--searchResults"); searchFormElement = modalElement.querySelector("#form--lotOccupancyOccupantCopy"); searchFormElement.addEventListener("submit", (formEvent) => { formEvent.preventDefault(); }); modalElement.querySelector("#lotOccupancyOccupantCopy--searchFilter").addEventListener("change", searchOccupants); addCloseModalFunction = closeModalFunction; }, onremoved: () => { bulmaJS.toggleHtmlClipped(); } }); }); renderLotOccupancyOccupants(); }