diff --git a/helpers/lotOccupancyDB/updateWorkOrderMilestone.js b/helpers/lotOccupancyDB/updateWorkOrderMilestone.js
index 7d3aa2b7..1fc3e9ab 100644
--- a/helpers/lotOccupancyDB/updateWorkOrderMilestone.js
+++ b/helpers/lotOccupancyDB/updateWorkOrderMilestone.js
@@ -14,9 +14,9 @@ export async function updateWorkOrderMilestone(milestoneForm, requestSession) {
where workOrderMilestoneId = ?`)
.run(milestoneForm.workOrderMilestoneTypeId === ''
? undefined
- : milestoneForm.workOrderMilestoneTypeId, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), milestoneForm.workOrderMilestoneTimeString
- ? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString)
- : 0, milestoneForm.workOrderMilestoneDescription, requestSession.user.userName, rightNow.getTime(), milestoneForm.workOrderMilestoneId);
+ : milestoneForm.workOrderMilestoneTypeId, dateStringToInteger(milestoneForm.workOrderMilestoneDateString), (milestoneForm.workOrderMilestoneTimeString ?? '') === ''
+ ? 0
+ : timeStringToInteger(milestoneForm.workOrderMilestoneTimeString), milestoneForm.workOrderMilestoneDescription, requestSession.user.userName, rightNow.getTime(), milestoneForm.workOrderMilestoneId);
database.release();
return result.changes > 0;
}
diff --git a/helpers/lotOccupancyDB/updateWorkOrderMilestone.ts b/helpers/lotOccupancyDB/updateWorkOrderMilestone.ts
index 7e1e0282..ad88fe6f 100644
--- a/helpers/lotOccupancyDB/updateWorkOrderMilestone.ts
+++ b/helpers/lotOccupancyDB/updateWorkOrderMilestone.ts
@@ -39,9 +39,9 @@ export async function updateWorkOrderMilestone(
? undefined
: milestoneForm.workOrderMilestoneTypeId,
dateStringToInteger(milestoneForm.workOrderMilestoneDateString),
- milestoneForm.workOrderMilestoneTimeString
- ? timeStringToInteger(milestoneForm.workOrderMilestoneTimeString)
- : 0,
+ (milestoneForm.workOrderMilestoneTimeString ?? '') === ''
+ ? 0
+ : timeStringToInteger(milestoneForm.workOrderMilestoneTimeString!),
milestoneForm.workOrderMilestoneDescription,
requestSession.user!.userName,
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.js b/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.js
index 45c6fb5f..cef6005a 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.js
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.js
@@ -1,7 +1,9 @@
"use strict";
/* eslint-disable @typescript-eslint/no-non-null-assertion, unicorn/prefer-module */
+var _a;
Object.defineProperty(exports, "__esModule", { value: true });
-let lotOccupancyOccupants;
+let lotOccupancyOccupants = exports.lotOccupancyOccupants;
+delete exports.lotOccupancyOccupants;
function openEditLotOccupancyOccupant(clickEvent) {
const lotOccupantIndex = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset
.lotOccupantIndex, 10);
@@ -192,7 +194,11 @@ function renderLotOccupancyOccupants() {
: cityssm.escapeHTML(lotOccupancyOccupant.occupantEmailAddress)) +
'') +
('
' +
- '' +
+ '' +
cityssm.escapeHTML((_k = lotOccupancyOccupant.occupantComment) !== null && _k !== void 0 ? _k : '') +
'' +
' | ') +
@@ -229,159 +235,155 @@ if (isCreate) {
});
}
else {
- lotOccupancyOccupants = exports.lotOccupancyOccupants;
- delete exports.lotOccupancyOccupants;
- document
- .querySelector('#button--addOccupant')
- .addEventListener('click', () => {
- let addCloseModalFunction;
- let addFormElement;
- let searchFormElement;
- let searchResultsElement;
- function addOccupant(formOrObject) {
- cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyOccupant', formOrObject, (responseJSON) => {
- var _a;
- if (responseJSON.success) {
- lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
- addCloseModalFunction();
- renderLotOccupancyOccupants();
- }
- else {
- bulmaJS.alert({
- title: `Error Adding ${los.escapedAliases.Occupant}`,
- message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '',
- contextualColorName: 'danger'
- });
- }
- });
- }
- function addOccupantFromForm(submitEvent) {
- submitEvent.preventDefault();
- addOccupant(addFormElement);
- }
- let pastOccupantSearchResults = [];
- function 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 ${los.escapedAliases.Occupant} Type Selected`,
- message: `Select a type to apply to the newly added ${los.escapedAliases.occupant}.`,
- contextualColorName: 'warning'
- });
- }
- else {
- occupant.lotOccupantTypeId = Number.parseInt(lotOccupantTypeId, 10);
- occupant.lotOccupancyId = Number.parseInt(lotOccupancyId, 10);
- addOccupant(occupant);
- }
- }
- function 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) => {
- var _a, _b, _c, _d, _e, _f, _g, _h;
- 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((_a = occupant.occupantName) !== null && _a !== void 0 ? _a : '') +
- '' +
- '
' +
- '' +
- ('
' +
- cityssm.escapeHTML((_b = occupant.occupantAddress1) !== null && _b !== void 0 ? _b : '') +
- '
' +
- (((_c = occupant.occupantAddress2) !== null && _c !== void 0 ? _c : '') === ''
- ? ''
- : cityssm.escapeHTML(occupant.occupantAddress2) +
- '
') +
- cityssm.escapeHTML((_d = occupant.occupantCity) !== null && _d !== void 0 ? _d : '') +
- ', ' +
- cityssm.escapeHTML((_e = occupant.occupantProvince) !== null && _e !== void 0 ? _e : '') +
- '
' +
- cityssm.escapeHTML((_f = occupant.occupantPostalCode) !== null && _f !== void 0 ? _f : '') +
- '
') +
- ('
' +
- (((_g = occupant.occupantPhoneNumber) !== null && _g !== void 0 ? _g : '') === ''
- ? ''
- : cityssm.escapeHTML(occupant.occupantPhoneNumber) +
- '
') +
- cityssm.escapeHTML((_h = occupant.occupantEmailAddress) !== null && _h !== void 0 ? _h : '') +
- '
' +
- '
') +
- '
';
- 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;
- optionElement.dataset.occupantCommentTitle =
- lotOccupantType.occupantCommentTitle;
- 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);
- const lotOccupantTypeIdElement = modalElement.querySelector('#lotOccupancyOccupantAdd--lotOccupantTypeId');
- lotOccupantTypeIdElement.focus();
- lotOccupantTypeIdElement.addEventListener('change', () => {
- var _a;
- let occupantCommentTitle = (_a = lotOccupantTypeIdElement.selectedOptions[0].dataset
- .occupantCommentTitle) !== null && _a !== void 0 ? _a : '';
- if (occupantCommentTitle === '') {
- occupantCommentTitle = 'Comment';
- }
- modalElement.querySelector('#lotOccupancyOccupantAdd--occupantCommentTitle').textContent = occupantCommentTitle;
- });
- 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();
}
+(_a = document
+ .querySelector('#button--addOccupant')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', () => {
+ let addCloseModalFunction;
+ let addFormElement;
+ let searchFormElement;
+ let searchResultsElement;
+ function addOccupant(formOrObject) {
+ cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doAddLotOccupancyOccupant', formOrObject, (responseJSON) => {
+ var _a;
+ if (responseJSON.success) {
+ lotOccupancyOccupants = responseJSON.lotOccupancyOccupants;
+ addCloseModalFunction();
+ renderLotOccupancyOccupants();
+ }
+ else {
+ bulmaJS.alert({
+ title: `Error Adding ${los.escapedAliases.Occupant}`,
+ message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '',
+ contextualColorName: 'danger'
+ });
+ }
+ });
+ }
+ function addOccupantFromForm(submitEvent) {
+ submitEvent.preventDefault();
+ addOccupant(addFormElement);
+ }
+ let pastOccupantSearchResults = [];
+ function 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 ${los.escapedAliases.Occupant} Type Selected`,
+ message: `Select a type to apply to the newly added ${los.escapedAliases.occupant}.`,
+ contextualColorName: 'warning'
+ });
+ }
+ else {
+ occupant.lotOccupantTypeId = Number.parseInt(lotOccupantTypeId, 10);
+ occupant.lotOccupancyId = Number.parseInt(lotOccupancyId, 10);
+ addOccupant(occupant);
+ }
+ }
+ function 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) => {
+ var _a, _b, _c, _d, _e, _f, _g, _h;
+ 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((_a = occupant.occupantName) !== null && _a !== void 0 ? _a : '') +
+ '' +
+ '
' +
+ '' +
+ ('
' +
+ cityssm.escapeHTML((_b = occupant.occupantAddress1) !== null && _b !== void 0 ? _b : '') +
+ '
' +
+ (((_c = occupant.occupantAddress2) !== null && _c !== void 0 ? _c : '') === ''
+ ? ''
+ : cityssm.escapeHTML(occupant.occupantAddress2) + '
') +
+ cityssm.escapeHTML((_d = occupant.occupantCity) !== null && _d !== void 0 ? _d : '') +
+ ', ' +
+ cityssm.escapeHTML((_e = occupant.occupantProvince) !== null && _e !== void 0 ? _e : '') +
+ '
' +
+ cityssm.escapeHTML((_f = occupant.occupantPostalCode) !== null && _f !== void 0 ? _f : '') +
+ '
') +
+ ('
' +
+ (((_g = occupant.occupantPhoneNumber) !== null && _g !== void 0 ? _g : '') === ''
+ ? ''
+ : cityssm.escapeHTML(occupant.occupantPhoneNumber) +
+ '
') +
+ cityssm.escapeHTML((_h = occupant.occupantEmailAddress) !== null && _h !== void 0 ? _h : '') +
+ '
' +
+ '
') +
+ '
';
+ 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;
+ optionElement.dataset.occupantCommentTitle =
+ lotOccupantType.occupantCommentTitle;
+ 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);
+ const lotOccupantTypeIdElement = modalElement.querySelector('#lotOccupancyOccupantAdd--lotOccupantTypeId');
+ lotOccupantTypeIdElement.focus();
+ lotOccupantTypeIdElement.addEventListener('change', () => {
+ var _a;
+ let occupantCommentTitle = (_a = lotOccupantTypeIdElement.selectedOptions[0].dataset
+ .occupantCommentTitle) !== null && _a !== void 0 ? _a : '';
+ if (occupantCommentTitle === '') {
+ occupantCommentTitle = 'Comment';
+ }
+ modalElement.querySelector('#lotOccupancyOccupantAdd--occupantCommentTitle').textContent = occupantCommentTitle;
+ });
+ 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();
+ }
+ });
+});
diff --git a/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.ts b/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.ts
index c1109ae3..e63dc17c 100644
--- a/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.ts
+++ b/public-typescript/lotOccupancyEdit/lotOccupancyEditOccupants.ts
@@ -16,7 +16,9 @@ declare const lotOccupancyId: string
declare const isCreate: boolean
declare const formElement: HTMLFormElement
-let lotOccupancyOccupants: recordTypes.LotOccupancyOccupant[]
+let lotOccupancyOccupants: recordTypes.LotOccupancyOccupant[] =
+ exports.lotOccupancyOccupants
+delete exports.lotOccupancyOccupants
function openEditLotOccupancyOccupant(clickEvent: Event): void {
const lotOccupantIndex = Number.parseInt(
@@ -316,7 +318,13 @@ function renderLotOccupancyOccupants(): void {
: cityssm.escapeHTML(lotOccupancyOccupant.occupantEmailAddress!)) +
'') +
('' +
- '' +
+ '' +
cityssm.escapeHTML(lotOccupancyOccupant.occupantComment ?? '') +
'' +
' | ') +
@@ -362,255 +370,246 @@ if (isCreate) {
}
})
} else {
- lotOccupancyOccupants = exports.lotOccupancyOccupants
- delete exports.lotOccupancyOccupants
-
- document
- .querySelector('#button--addOccupant')!
- .addEventListener('click', () => {
- let addCloseModalFunction: () => void
-
- let addFormElement: HTMLFormElement
-
- let searchFormElement: HTMLFormElement
- let searchResultsElement: HTMLElement
-
- function addOccupant(
- formOrObject: HTMLFormElement | recordTypes.LotOccupancyOccupant
- ): void {
- cityssm.postJSON(
- los.urlPrefix + '/lotOccupancies/doAddLotOccupancyOccupant',
- formOrObject,
- (responseJSON: {
- success: boolean
- errorMessage?: string
- lotOccupancyOccupants?: recordTypes.LotOccupancyOccupant[]
- }) => {
- if (responseJSON.success) {
- lotOccupancyOccupants = responseJSON.lotOccupancyOccupants!
- addCloseModalFunction()
- renderLotOccupancyOccupants()
- } else {
- bulmaJS.alert({
- title: `Error Adding ${los.escapedAliases.Occupant}`,
- message: responseJSON.errorMessage ?? '',
- contextualColorName: 'danger'
- })
- }
- }
- )
- }
-
- function addOccupantFromForm(submitEvent: SubmitEvent): void {
- submitEvent.preventDefault()
- addOccupant(addFormElement)
- }
-
- let pastOccupantSearchResults: recordTypes.LotOccupancyOccupant[] = []
-
- function addOccupantFromCopy(clickEvent: MouseEvent): void {
- clickEvent.preventDefault()
-
- const panelBlockElement = clickEvent.currentTarget as HTMLElement
-
- const occupant =
- pastOccupantSearchResults[
- Number.parseInt(panelBlockElement.dataset.index!, 10)
- ]
-
- const lotOccupantTypeId = (
- panelBlockElement
- .closest('.modal')!
- .querySelector(
- '#lotOccupancyOccupantCopy--lotOccupantTypeId'
- ) as HTMLSelectElement
- ).value
-
- if (lotOccupantTypeId === '') {
- bulmaJS.alert({
- title: `No ${los.escapedAliases.Occupant} Type Selected`,
- message: `Select a type to apply to the newly added ${los.escapedAliases.occupant}.`,
- contextualColorName: 'warning'
- })
- } else {
- occupant.lotOccupantTypeId = Number.parseInt(lotOccupantTypeId, 10)
- occupant.lotOccupancyId = Number.parseInt(lotOccupancyId, 10)
- addOccupant(occupant)
- }
- }
-
- function searchOccupants(event: Event): void {
- event.preventDefault()
-
- if (
- (
- searchFormElement.querySelector(
- '#lotOccupancyOccupantCopy--searchFilter'
- ) as HTMLInputElement
- ).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: { occupants: recordTypes.LotOccupancyOccupant[] }) => {
- 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'
- ) as HTMLInputElement
- ).value = lotOccupancyId
-
- const lotOccupantTypeSelectElement = modalElement.querySelector(
- '#lotOccupancyOccupantAdd--lotOccupantTypeId'
- ) as HTMLSelectElement
-
- const lotOccupantTypeCopySelectElement = modalElement.querySelector(
- '#lotOccupancyOccupantCopy--lotOccupantTypeId'
- ) as HTMLSelectElement
-
- for (const lotOccupantType of exports.lotOccupantTypes as recordTypes.LotOccupantType[]) {
- const optionElement = document.createElement('option')
- optionElement.value = lotOccupantType.lotOccupantTypeId.toString()
- optionElement.textContent = lotOccupantType.lotOccupantType
- optionElement.dataset.occupantCommentTitle =
- lotOccupantType.occupantCommentTitle
-
- lotOccupantTypeSelectElement.append(optionElement)
-
- lotOccupantTypeCopySelectElement.append(
- optionElement.cloneNode(true)
- )
- }
-
- ;(
- modalElement.querySelector(
- '#lotOccupancyOccupantAdd--occupantCity'
- ) as HTMLInputElement
- ).value = exports.occupantCityDefault
- ;(
- modalElement.querySelector(
- '#lotOccupancyOccupantAdd--occupantProvince'
- ) as HTMLInputElement
- ).value = exports.occupantProvinceDefault
- },
- onshown: (modalElement, closeModalFunction) => {
- bulmaJS.toggleHtmlClipped()
- bulmaJS.init(modalElement)
-
- const lotOccupantTypeIdElement = modalElement.querySelector(
- '#lotOccupancyOccupantAdd--lotOccupantTypeId'
- ) as HTMLSelectElement
-
- lotOccupantTypeIdElement.focus()
-
- lotOccupantTypeIdElement.addEventListener('change', () => {
- let occupantCommentTitle =
- lotOccupantTypeIdElement.selectedOptions[0].dataset
- .occupantCommentTitle ?? ''
-
- if (occupantCommentTitle === '') {
- occupantCommentTitle = 'Comment'
- }
-
- modalElement.querySelector(
- '#lotOccupancyOccupantAdd--occupantCommentTitle'
- )!.textContent = occupantCommentTitle
- })
-
- addFormElement = modalElement.querySelector(
- '#form--lotOccupancyOccupantAdd'
- ) as HTMLFormElement
- addFormElement.addEventListener('submit', addOccupantFromForm)
-
- searchResultsElement = modalElement.querySelector(
- '#lotOccupancyOccupantCopy--searchResults'
- ) as HTMLElement
-
- searchFormElement = modalElement.querySelector(
- '#form--lotOccupancyOccupantCopy'
- ) as HTMLFormElement
- searchFormElement.addEventListener('submit', (formEvent) => {
- formEvent.preventDefault()
- })
- ;(
- modalElement.querySelector(
- '#lotOccupancyOccupantCopy--searchFilter'
- ) as HTMLInputElement
- ).addEventListener('change', searchOccupants)
-
- addCloseModalFunction = closeModalFunction
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped()
- }
- })
- })
-
renderLotOccupancyOccupants()
}
+
+document
+ .querySelector('#button--addOccupant')
+ ?.addEventListener('click', () => {
+ let addCloseModalFunction: () => void
+
+ let addFormElement: HTMLFormElement
+
+ let searchFormElement: HTMLFormElement
+ let searchResultsElement: HTMLElement
+
+ function addOccupant(
+ formOrObject: HTMLFormElement | recordTypes.LotOccupancyOccupant
+ ): void {
+ cityssm.postJSON(
+ los.urlPrefix + '/lotOccupancies/doAddLotOccupancyOccupant',
+ formOrObject,
+ (responseJSON: {
+ success: boolean
+ errorMessage?: string
+ lotOccupancyOccupants?: recordTypes.LotOccupancyOccupant[]
+ }) => {
+ if (responseJSON.success) {
+ lotOccupancyOccupants = responseJSON.lotOccupancyOccupants!
+ addCloseModalFunction()
+ renderLotOccupancyOccupants()
+ } else {
+ bulmaJS.alert({
+ title: `Error Adding ${los.escapedAliases.Occupant}`,
+ message: responseJSON.errorMessage ?? '',
+ contextualColorName: 'danger'
+ })
+ }
+ }
+ )
+ }
+
+ function addOccupantFromForm(submitEvent: SubmitEvent): void {
+ submitEvent.preventDefault()
+ addOccupant(addFormElement)
+ }
+
+ let pastOccupantSearchResults: recordTypes.LotOccupancyOccupant[] = []
+
+ function addOccupantFromCopy(clickEvent: MouseEvent): void {
+ clickEvent.preventDefault()
+
+ const panelBlockElement = clickEvent.currentTarget as HTMLElement
+
+ const occupant =
+ pastOccupantSearchResults[
+ Number.parseInt(panelBlockElement.dataset.index!, 10)
+ ]
+
+ const lotOccupantTypeId = (
+ panelBlockElement
+ .closest('.modal')!
+ .querySelector(
+ '#lotOccupancyOccupantCopy--lotOccupantTypeId'
+ ) as HTMLSelectElement
+ ).value
+
+ if (lotOccupantTypeId === '') {
+ bulmaJS.alert({
+ title: `No ${los.escapedAliases.Occupant} Type Selected`,
+ message: `Select a type to apply to the newly added ${los.escapedAliases.occupant}.`,
+ contextualColorName: 'warning'
+ })
+ } else {
+ occupant.lotOccupantTypeId = Number.parseInt(lotOccupantTypeId, 10)
+ occupant.lotOccupancyId = Number.parseInt(lotOccupancyId, 10)
+ addOccupant(occupant)
+ }
+ }
+
+ function searchOccupants(event: Event): void {
+ event.preventDefault()
+
+ if (
+ (
+ searchFormElement.querySelector(
+ '#lotOccupancyOccupantCopy--searchFilter'
+ ) as HTMLInputElement
+ ).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: { occupants: recordTypes.LotOccupancyOccupant[] }) => {
+ 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'
+ ) as HTMLInputElement
+ ).value = lotOccupancyId
+
+ const lotOccupantTypeSelectElement = modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--lotOccupantTypeId'
+ ) as HTMLSelectElement
+
+ const lotOccupantTypeCopySelectElement = modalElement.querySelector(
+ '#lotOccupancyOccupantCopy--lotOccupantTypeId'
+ ) as HTMLSelectElement
+
+ for (const lotOccupantType of exports.lotOccupantTypes as recordTypes.LotOccupantType[]) {
+ const optionElement = document.createElement('option')
+ optionElement.value = lotOccupantType.lotOccupantTypeId.toString()
+ optionElement.textContent = lotOccupantType.lotOccupantType
+ optionElement.dataset.occupantCommentTitle =
+ lotOccupantType.occupantCommentTitle
+
+ lotOccupantTypeSelectElement.append(optionElement)
+
+ lotOccupantTypeCopySelectElement.append(optionElement.cloneNode(true))
+ }
+
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--occupantCity'
+ ) as HTMLInputElement
+ ).value = exports.occupantCityDefault
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--occupantProvince'
+ ) as HTMLInputElement
+ ).value = exports.occupantProvinceDefault
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ bulmaJS.toggleHtmlClipped()
+ bulmaJS.init(modalElement)
+
+ const lotOccupantTypeIdElement = modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--lotOccupantTypeId'
+ ) as HTMLSelectElement
+
+ lotOccupantTypeIdElement.focus()
+
+ lotOccupantTypeIdElement.addEventListener('change', () => {
+ let occupantCommentTitle =
+ lotOccupantTypeIdElement.selectedOptions[0].dataset
+ .occupantCommentTitle ?? ''
+
+ if (occupantCommentTitle === '') {
+ occupantCommentTitle = 'Comment'
+ }
+
+ modalElement.querySelector(
+ '#lotOccupancyOccupantAdd--occupantCommentTitle'
+ )!.textContent = occupantCommentTitle
+ })
+
+ addFormElement = modalElement.querySelector(
+ '#form--lotOccupancyOccupantAdd'
+ ) as HTMLFormElement
+ addFormElement.addEventListener('submit', addOccupantFromForm)
+
+ searchResultsElement = modalElement.querySelector(
+ '#lotOccupancyOccupantCopy--searchResults'
+ ) as HTMLElement
+
+ searchFormElement = modalElement.querySelector(
+ '#form--lotOccupancyOccupantCopy'
+ ) as HTMLFormElement
+ searchFormElement.addEventListener('submit', (formEvent) => {
+ formEvent.preventDefault()
+ })
+ ;(
+ modalElement.querySelector(
+ '#lotOccupancyOccupantCopy--searchFilter'
+ ) as HTMLInputElement
+ ).addEventListener('change', searchOccupants)
+
+ addCloseModalFunction = closeModalFunction
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped()
+ }
+ })
+ })