deepsource-autofix-76c6eb20
Dan Gowans 2024-06-27 12:40:37 -04:00
parent 5aeb485d07
commit cd400e0aa8
31 changed files with 852 additions and 855 deletions

View File

@ -3,14 +3,14 @@
import type { BulmaJS } from '@cityssm/bulma-js/types.js' 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.js'
import type * as globalTypes from '../types/globalTypes.js' import type { LOS } from '../types/globalTypes.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const bulmaJS: BulmaJS declare const bulmaJS: BulmaJS
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
function doBackup(): void { function doBackup(): void {
cityssm.postJSON( cityssm.postJSON(

View File

@ -4,7 +4,7 @@
import type { BulmaJS } from '@cityssm/bulma-js/types.js' 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.js'
import type * as globalTypes from '../types/globalTypes.js' import type { LOS } from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js' import type * as recordTypes from '../types/recordTypes.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
@ -12,7 +12,7 @@ declare const bulmaJS: BulmaJS
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const feeCategoriesContainerElement = document.querySelector( const feeCategoriesContainerElement = document.querySelector(
'#container--feeCategories' '#container--feeCategories'

View File

@ -4,7 +4,7 @@
import type { BulmaJS } from '@cityssm/bulma-js/types.js' 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.js'
import type * as globalTypes from '../types/globalTypes.js' import type { LOS } from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js' import type * as recordTypes from '../types/recordTypes.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
@ -23,7 +23,7 @@ type ResponseJSON =
errorMessage: string errorMessage: string
} }
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const containerElement = document.querySelector( const containerElement = document.querySelector(
'#container--lotTypes' '#container--lotTypes'

View File

@ -4,7 +4,7 @@
import type { BulmaJS } from '@cityssm/bulma-js/types.js' 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.js'
import type * as globalTypes from '../types/globalTypes.js' import type { LOS } from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js' import type * as recordTypes from '../types/recordTypes.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
@ -24,7 +24,7 @@ type ResponseJSON =
errorMessage: string errorMessage: string
} }
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const occupancyTypesContainerElement = document.querySelector( const occupancyTypesContainerElement = document.querySelector(
'#container--occupancyTypes' '#container--occupancyTypes'

View File

@ -1,11 +1,11 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair // eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable unicorn/prefer-module */ /* eslint-disable unicorn/prefer-module */
import type * as globalTypes from '../types/globalTypes.js' import type { LOS } from '../types/globalTypes.js'
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const workOrderNumberCircleElements: NodeListOf<HTMLElement> = const workOrderNumberCircleElements: NodeListOf<HTMLElement> =
document.querySelectorAll('.fa-circle[data-work-order-number]') document.querySelectorAll('.fa-circle[data-work-order-number]')

View File

@ -1,8 +1,9 @@
"use strict"; "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 }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
var _a; var _a, _b;
const los = exports.los; const los = exports.los;
const lotId = document.querySelector('#lot--lotId') const lotId = document.querySelector('#lot--lotId')
.value; .value;
@ -24,7 +25,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const formElement = document.querySelector('#form--lot'); const formElement = document.querySelector('#form--lot');
function updateLot(formEvent) { function updateLot(formEvent) {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/lots/' + (isCreate ? 'doCreateLot' : 'doUpdateLot'), formElement, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/lots/${isCreate ? 'doCreateLot' : 'doUpdateLot'}`, formElement, (rawResponseJSON) => {
var _a; var _a;
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
@ -34,14 +35,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
message: los.escapedAliases.Lot + ' Updated Successfully', message: `${los.escapedAliases.Lot} Updated Successfully`,
contextualColorName: 'success' contextualColorName: 'success'
}); });
} }
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: 'Error Updating ' + los.escapedAliases.Lot, title: `Error Updating ${los.escapedAliases.Lot}`,
message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '', message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '',
contextualColorName: 'danger' contextualColorName: 'danger'
}); });
@ -58,7 +59,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
.querySelector('#button--deleteLot')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (clickEvent) => { .querySelector('#button--deleteLot')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
function doDelete() { function doDelete() {
cityssm.postJSON(los.urlPrefix + '/lots/doDeleteLot', { cityssm.postJSON(`${los.urlPrefix}/lots/doDeleteLot`, {
lotId lotId
}, (rawResponseJSON) => { }, (rawResponseJSON) => {
var _a; var _a;
@ -77,7 +78,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
bulmaJS.confirm({ bulmaJS.confirm({
title: 'Delete ' + los.escapedAliases.Lot, title: `Delete ${los.escapedAliases.Lot}`,
message: `Are you sure you want to delete this ${los.escapedAliases.lot}?`, message: `Are you sure you want to delete this ${los.escapedAliases.lot}?`,
contextualColorName: 'warning', contextualColorName: 'warning',
okButton: { okButton: {
@ -92,19 +93,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
const lotFieldsContainerElement = document.querySelector('#container--lotFields'); const lotFieldsContainerElement = document.querySelector('#container--lotFields');
lotTypeIdElement.addEventListener('change', () => { lotTypeIdElement.addEventListener('change', () => {
if (lotTypeIdElement.value === '') { if (lotTypeIdElement.value === '') {
// eslint-disable-next-line no-unsanitized/property
lotFieldsContainerElement.innerHTML = `<div class="message is-info"> lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">Select the ${los.escapedAliases.lot} type to load the available fields.</p> <p class="message-body">Select the ${los.escapedAliases.lot} type to load the available fields.</p>
</div>`; </div>`;
return; return;
} }
cityssm.postJSON(los.urlPrefix + '/lots/doGetLotTypeFields', { cityssm.postJSON(`${los.urlPrefix}/lots/doGetLotTypeFields`, {
lotTypeId: lotTypeIdElement.value lotTypeId: lotTypeIdElement.value
}, (rawResponseJSON) => { }, (rawResponseJSON) => {
var _a; var _a, _b;
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.lotTypeFields.length === 0) { if (responseJSON.lotTypeFields.length === 0) {
// eslint-disable-next-line no-unsanitized/property
lotFieldsContainerElement.innerHTML = `<div class="message is-info"> lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no additional fields for this ${los.escapedAliases.lot} type.</p> <p class="message-body">
There are no additional fields for this ${los.escapedAliases.lot} type.
</p>
</div>`; </div>`;
return; return;
} }
@ -112,10 +117,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
let lotTypeFieldIds = ''; let lotTypeFieldIds = '';
for (const lotTypeField of responseJSON.lotTypeFields) { for (const lotTypeField of responseJSON.lotTypeFields) {
lotTypeFieldIds += ',' + lotTypeField.lotTypeFieldId.toString(); lotTypeFieldIds += ',' + lotTypeField.lotTypeFieldId.toString();
const fieldName = 'lotFieldValue_' + lotTypeField.lotTypeFieldId.toString(); const fieldName = `lotFieldValue_${lotTypeField.lotTypeFieldId.toString()}`;
const fieldId = 'lot--' + fieldName; const fieldId = `lot--${fieldName}`;
const fieldElement = document.createElement('div'); const fieldElement = document.createElement('div');
fieldElement.className = 'field'; fieldElement.className = 'field';
// eslint-disable-next-line no-unsanitized/property
fieldElement.innerHTML = `<label class="label" for="${fieldId}"></label> fieldElement.innerHTML = `<label class="label" for="${fieldId}"></label>
<div class="control"></div>`; <div class="control"></div>`;
fieldElement.querySelector('label').textContent = lotTypeField.lotTypeField; fieldElement.querySelector('label').textContent = lotTypeField.lotTypeField;
@ -131,9 +137,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
if (((_a = lotTypeField.pattern) !== null && _a !== void 0 ? _a : '') !== '') { if (((_a = lotTypeField.pattern) !== null && _a !== void 0 ? _a : '') !== '') {
inputElement.pattern = lotTypeField.pattern; inputElement.pattern = lotTypeField.pattern;
} }
fieldElement.querySelector('.control').append(inputElement); (_b = fieldElement.querySelector('.control')) === null || _b === void 0 ? void 0 : _b.append(inputElement);
} }
else { else {
// eslint-disable-next-line no-unsanitized/property
;
fieldElement.querySelector('.control').innerHTML = `<div class="select is-fullwidth"> fieldElement.querySelector('.control').innerHTML = `<div class="select is-fullwidth">
<select id="${fieldId}" name="${fieldName}"><option value="">(Not Set)</option></select> <select id="${fieldId}" name="${fieldName}"><option value="">(Not Set)</option></select>
</div>`; </div>`;
@ -150,7 +158,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
lotFieldsContainerElement.append(fieldElement); lotFieldsContainerElement.append(fieldElement);
} }
lotFieldsContainerElement.insertAdjacentHTML('beforeend', `<input name="lotTypeFieldIds" type="hidden" lotFieldsContainerElement.insertAdjacentHTML('beforeend', `<input name="lotTypeFieldIds" type="hidden"
value="${lotTypeFieldIds.slice(1)}" />`); value="${cityssm.escapeHTML(lotTypeFieldIds.slice(1))}" />`);
}); });
}); });
} }
@ -165,13 +173,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
contextualColorName: 'warning', contextualColorName: 'warning',
okButton: { okButton: {
text: 'Yes, Keep the Change', text: 'Yes, Keep the Change',
callbackFunction: () => { callbackFunction() {
refreshAfterSave = true; refreshAfterSave = true;
} }
}, },
cancelButton: { cancelButton: {
text: 'Revert the Change', text: 'Revert the Change',
callbackFunction: () => { callbackFunction() {
lotTypeIdElement.value = originalLotTypeId; lotTypeIdElement.value = originalLotTypeId;
} }
} }
@ -183,8 +191,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
let lotComments = exports.lotComments; let lotComments = exports.lotComments;
delete exports.lotComments; delete exports.lotComments;
function openEditLotComment(clickEvent) { function openEditLotComment(clickEvent) {
const lotCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset var _a, _b;
.lotCommentId, 10); const lotCommentId = Number.parseInt((_b = (_a = clickEvent.currentTarget.closest('tr')) === null || _a === void 0 ? void 0 : _a.dataset.lotCommentId) !== null && _b !== void 0 ? _b : '', 10);
const lotComment = lotComments.find((currentLotComment) => { const lotComment = lotComments.find((currentLotComment) => {
return currentLotComment.lotCommentId === lotCommentId; return currentLotComment.lotCommentId === lotCommentId;
}); });
@ -192,7 +200,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let editCloseModalFunction; let editCloseModalFunction;
function editComment(submitEvent) { function editComment(submitEvent) {
submitEvent.preventDefault(); submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/lots/doUpdateLotComment', editFormElement, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/lots/doUpdateLotComment`, editFormElement, (rawResponseJSON) => {
var _a; var _a;
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
@ -210,21 +218,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
cityssm.openHtmlModal('lot-editComment', { cityssm.openHtmlModal('lot-editComment', {
onshow: (modalElement) => { onshow(modalElement) {
var _a, _b, _c, _d;
los.populateAliases(modalElement); los.populateAliases(modalElement);
modalElement.querySelector('#lotCommentEdit--lotId').value = lotId; modalElement.querySelector('#lotCommentEdit--lotId').value = lotId;
modalElement.querySelector('#lotCommentEdit--lotCommentId').value = lotCommentId.toString(); modalElement.querySelector('#lotCommentEdit--lotCommentId').value = lotCommentId.toString();
modalElement.querySelector('#lotCommentEdit--lotComment').value = lotComment.lotComment; modalElement.querySelector('#lotCommentEdit--lotComment').value = (_a = lotComment.lotComment) !== null && _a !== void 0 ? _a : '';
const lotCommentDateStringElement = modalElement.querySelector('#lotCommentEdit--lotCommentDateString'); const lotCommentDateStringElement = modalElement.querySelector('#lotCommentEdit--lotCommentDateString');
lotCommentDateStringElement.value = lotComment.lotCommentDateString; lotCommentDateStringElement.value =
(_b = lotComment.lotCommentDateString) !== null && _b !== void 0 ? _b : '';
const currentDateString = cityssm.dateToString(new Date()); const currentDateString = cityssm.dateToString(new Date());
lotCommentDateStringElement.max = lotCommentDateStringElement.max =
lotComment.lotCommentDateString <= currentDateString lotComment.lotCommentDateString <= currentDateString
? currentDateString ? currentDateString
: lotComment.lotCommentDateString; : (_c = lotComment.lotCommentDateString) !== null && _c !== void 0 ? _c : '';
modalElement.querySelector('#lotCommentEdit--lotCommentTimeString').value = lotComment.lotCommentTimeString; modalElement.querySelector('#lotCommentEdit--lotCommentTimeString').value = (_d = lotComment.lotCommentTimeString) !== null && _d !== void 0 ? _d : '';
}, },
onshown: (modalElement, closeModalFunction) => { onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
los.initializeDatePickers(modalElement); los.initializeDatePickers(modalElement);
modalElement.querySelector('#lotCommentEdit--lotComment').focus(); modalElement.querySelector('#lotCommentEdit--lotComment').focus();
@ -232,16 +242,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
editFormElement.addEventListener('submit', editComment); editFormElement.addEventListener('submit', editComment);
editCloseModalFunction = closeModalFunction; editCloseModalFunction = closeModalFunction;
}, },
onremoved: () => { onremoved() {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
} }
}); });
} }
function deleteLotComment(clickEvent) { function deleteLotComment(clickEvent) {
const lotCommentId = Number.parseInt(clickEvent.currentTarget.closest('tr').dataset var _a, _b;
.lotCommentId, 10); const lotCommentId = Number.parseInt((_b = (_a = clickEvent.currentTarget.closest('tr')) === null || _a === void 0 ? void 0 : _a.dataset.lotCommentId) !== null && _b !== void 0 ? _b : '', 10);
function doDelete() { function doDelete() {
cityssm.postJSON(los.urlPrefix + '/lots/doDeleteLotComment', { cityssm.postJSON(`${los.urlPrefix}/lots/doDeleteLotComment`, {
lotId, lotId,
lotCommentId lotCommentId
}, (rawResponseJSON) => { }, (rawResponseJSON) => {
@ -271,7 +281,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
function renderLotComments() { function renderLotComments() {
var _a, _b; var _a, _b, _c, _d, _e, _f;
const containerElement = document.querySelector('#container--lotComments'); const containerElement = document.querySelector('#container--lotComments');
if (lotComments.length === 0) { if (lotComments.length === 0) {
containerElement.innerHTML = `<div class="message is-info"> containerElement.innerHTML = `<div class="message is-info">
@ -290,38 +300,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
<tbody></tbody>`; <tbody></tbody>`;
for (const lotComment of lotComments) { for (const lotComment of lotComments) {
const tableRowElement = document.createElement('tr'); const tableRowElement = document.createElement('tr');
tableRowElement.dataset.lotCommentId = lotComment.lotCommentId.toString(); tableRowElement.dataset.lotCommentId = (_a = lotComment.lotCommentId) === null || _a === void 0 ? void 0 : _a.toString();
tableRowElement.innerHTML = // eslint-disable-next-line no-unsanitized/property
'<td>' + tableRowElement.innerHTML = `<td>
cityssm.escapeHTML((_a = lotComment.recordCreate_userName) !== null && _a !== void 0 ? _a : '') + ${cityssm.escapeHTML((_b = lotComment.recordCreate_userName) !== null && _b !== void 0 ? _b : '')}
'</td>' + </td><td>
'<td>' + ${lotComment.lotCommentDateString}
lotComment.lotCommentDateString + ${lotComment.lotCommentTime === 0
(lotComment.lotCommentTime === 0
? '' ? ''
: ' ' + lotComment.lotCommentTimePeriodString) + : ' ' + lotComment.lotCommentTimePeriodString}
'</td>' + </td><td>
'<td>' + ${cityssm.escapeHTML((_c = lotComment.lotComment) !== null && _c !== void 0 ? _c : '')}
cityssm.escapeHTML((_b = lotComment.lotComment) !== null && _b !== void 0 ? _b : '') + </td><td class="is-hidden-print">
'</td>' + <div class="buttons are-small is-justify-content-end">
('<td class="is-hidden-print">' + <button class="button is-primary button--edit" type="button">
'<div class="buttons are-small is-justify-content-end">' + <span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>
('<button class="button is-primary button--edit" type="button">' + <span>Edit</span>
'<span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>' + </button>
' <span>Edit</span>' + <button class="button is-light is-danger button--delete" data-tooltip="Delete Comment" type="button" aria-label="Delete">
'</button>') + <i class="fas fa-trash" aria-hidden="true"></i>
('<button class="button is-light is-danger button--delete" data-tooltip="Delete Comment" type="button" aria-label="Delete">' + </button>
'<i class="fas fa-trash" aria-hidden="true"></i>' + </div>
'</button>') + </td>`;
'</div>' + (_d = tableRowElement
'</td>'); .querySelector('.button--edit')) === null || _d === void 0 ? void 0 : _d.addEventListener('click', openEditLotComment);
tableRowElement (_e = tableRowElement
.querySelector('.button--edit') .querySelector('.button--delete')) === null || _e === void 0 ? void 0 : _e.addEventListener('click', deleteLotComment);
.addEventListener('click', openEditLotComment); (_f = tableElement.querySelector('tbody')) === null || _f === void 0 ? void 0 : _f.append(tableRowElement);
tableRowElement
.querySelector('.button--delete')
.addEventListener('click', deleteLotComment);
tableElement.querySelector('tbody').append(tableRowElement);
} }
containerElement.innerHTML = ''; containerElement.innerHTML = '';
containerElement.append(tableElement); containerElement.append(tableElement);
@ -330,7 +335,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
let addCommentCloseModalFunction; let addCommentCloseModalFunction;
function doAddComment(formEvent) { function doAddComment(formEvent) {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/lots/doAddLotComment', formEvent.currentTarget, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/lots/doAddLotComment`, formEvent.currentTarget, (rawResponseJSON) => {
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
lotComments = responseJSON.lotComments; lotComments = responseJSON.lotComments;
@ -341,11 +346,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
cityssm.openHtmlModal('lot-addComment', { cityssm.openHtmlModal('lot-addComment', {
onshow(modalElement) { onshow(modalElement) {
var _a;
los.populateAliases(modalElement); los.populateAliases(modalElement);
modalElement.querySelector('#lotCommentAdd--lotId').value = lotId; modalElement.querySelector('#lotCommentAdd--lotId').value = lotId;
modalElement (_a = modalElement
.querySelector('form') .querySelector('form')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', doAddComment);
.addEventListener('submit', doAddComment);
}, },
onshown(modalElement, closeModalFunction) { onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped(); bulmaJS.toggleHtmlClipped();
@ -359,9 +364,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
if (!isCreate) { if (!isCreate) {
document (_b = document
.querySelector('#lotComments--add') .querySelector('#lotComments--add')) === null || _b === void 0 ? void 0 : _b.addEventListener('click', openAddCommentModal);
.addEventListener('click', openAddCommentModal);
renderLotComments(); renderLotComments();
} }
})(); })();

View File

@ -1,16 +1,18 @@
/* 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 { BulmaJS } from '@cityssm/bulma-js/types.js'
import type * as recordTypes from '../types/recordTypes' import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types' import type { LOS } from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js'
import type { BulmaJS } from '@cityssm/bulma-js/types'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const bulmaJS: BulmaJS declare const bulmaJS: BulmaJS
declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const lotId = (document.querySelector('#lot--lotId') as HTMLInputElement) const lotId = (document.querySelector('#lot--lotId') as HTMLInputElement)
.value .value
@ -40,7 +42,7 @@ declare const bulmaJS: BulmaJS
formEvent.preventDefault() formEvent.preventDefault()
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/lots/' + (isCreate ? 'doCreateLot' : 'doUpdateLot'), `${los.urlPrefix}/lots/${isCreate ? 'doCreateLot' : 'doUpdateLot'}`,
formElement, formElement,
(rawResponseJSON) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as { const responseJSON = rawResponseJSON as {
@ -56,13 +58,13 @@ declare const bulmaJS: BulmaJS
window.location.href = los.getLotURL(responseJSON.lotId, true, true) window.location.href = los.getLotURL(responseJSON.lotId, true, true)
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
message: los.escapedAliases.Lot + ' Updated Successfully', message: `${los.escapedAliases.Lot} Updated Successfully`,
contextualColorName: 'success' contextualColorName: 'success'
}) })
} }
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: 'Error Updating ' + los.escapedAliases.Lot, title: `Error Updating ${los.escapedAliases.Lot}`,
message: responseJSON.errorMessage ?? '', message: responseJSON.errorMessage ?? '',
contextualColorName: 'danger' contextualColorName: 'danger'
}) })
@ -88,7 +90,7 @@ declare const bulmaJS: BulmaJS
function doDelete(): void { function doDelete(): void {
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/lots/doDeleteLot', `${los.urlPrefix}/lots/doDeleteLot`,
{ {
lotId lotId
}, },
@ -113,7 +115,7 @@ declare const bulmaJS: BulmaJS
} }
bulmaJS.confirm({ bulmaJS.confirm({
title: 'Delete ' + los.escapedAliases.Lot, title: `Delete ${los.escapedAliases.Lot}`,
message: `Are you sure you want to delete this ${los.escapedAliases.lot}?`, message: `Are you sure you want to delete this ${los.escapedAliases.lot}?`,
contextualColorName: 'warning', contextualColorName: 'warning',
okButton: { okButton: {
@ -136,6 +138,7 @@ declare const bulmaJS: BulmaJS
lotTypeIdElement.addEventListener('change', () => { lotTypeIdElement.addEventListener('change', () => {
if (lotTypeIdElement.value === '') { if (lotTypeIdElement.value === '') {
// eslint-disable-next-line no-unsanitized/property
lotFieldsContainerElement.innerHTML = `<div class="message is-info"> lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">Select the ${los.escapedAliases.lot} type to load the available fields.</p> <p class="message-body">Select the ${los.escapedAliases.lot} type to load the available fields.</p>
</div>` </div>`
@ -144,7 +147,7 @@ declare const bulmaJS: BulmaJS
} }
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/lots/doGetLotTypeFields', `${los.urlPrefix}/lots/doGetLotTypeFields`,
{ {
lotTypeId: lotTypeIdElement.value lotTypeId: lotTypeIdElement.value
}, },
@ -154,8 +157,11 @@ declare const bulmaJS: BulmaJS
} }
if (responseJSON.lotTypeFields.length === 0) { if (responseJSON.lotTypeFields.length === 0) {
// eslint-disable-next-line no-unsanitized/property
lotFieldsContainerElement.innerHTML = `<div class="message is-info"> lotFieldsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no additional fields for this ${los.escapedAliases.lot} type.</p> <p class="message-body">
There are no additional fields for this ${los.escapedAliases.lot} type.
</p>
</div>` </div>`
return return
@ -168,13 +174,14 @@ declare const bulmaJS: BulmaJS
for (const lotTypeField of responseJSON.lotTypeFields) { for (const lotTypeField of responseJSON.lotTypeFields) {
lotTypeFieldIds += ',' + lotTypeField.lotTypeFieldId.toString() lotTypeFieldIds += ',' + lotTypeField.lotTypeFieldId.toString()
const fieldName = const fieldName = `lotFieldValue_${lotTypeField.lotTypeFieldId.toString()}`
'lotFieldValue_' + lotTypeField.lotTypeFieldId.toString()
const fieldId = 'lot--' + fieldName const fieldId = `lot--${fieldName}`
const fieldElement = document.createElement('div') const fieldElement = document.createElement('div')
fieldElement.className = 'field' fieldElement.className = 'field'
// eslint-disable-next-line no-unsanitized/property
fieldElement.innerHTML = `<label class="label" for="${fieldId}"></label> fieldElement.innerHTML = `<label class="label" for="${fieldId}"></label>
<div class="control"></div>` <div class="control"></div>`
;( ;(
@ -200,11 +207,12 @@ declare const bulmaJS: BulmaJS
inputElement.pattern = lotTypeField.pattern! inputElement.pattern = lotTypeField.pattern!
} }
fieldElement.querySelector('.control')!.append(inputElement) fieldElement.querySelector('.control')?.append(inputElement)
} else { } else {
fieldElement.querySelector( // eslint-disable-next-line no-unsanitized/property
'.control' ;(
)!.innerHTML = `<div class="select is-fullwidth"> fieldElement.querySelector('.control') as HTMLElement
).innerHTML = `<div class="select is-fullwidth">
<select id="${fieldId}" name="${fieldName}"><option value="">(Not Set)</option></select> <select id="${fieldId}" name="${fieldName}"><option value="">(Not Set)</option></select>
</div>` </div>`
@ -232,7 +240,7 @@ declare const bulmaJS: BulmaJS
lotFieldsContainerElement.insertAdjacentHTML( lotFieldsContainerElement.insertAdjacentHTML(
'beforeend', 'beforeend',
`<input name="lotTypeFieldIds" type="hidden" `<input name="lotTypeFieldIds" type="hidden"
value="${lotTypeFieldIds.slice(1)}" />` value="${cityssm.escapeHTML(lotTypeFieldIds.slice(1))}" />`
) )
} }
) )
@ -249,13 +257,13 @@ declare const bulmaJS: BulmaJS
contextualColorName: 'warning', contextualColorName: 'warning',
okButton: { okButton: {
text: 'Yes, Keep the Change', text: 'Yes, Keep the Change',
callbackFunction: () => { callbackFunction() {
refreshAfterSave = true refreshAfterSave = true
} }
}, },
cancelButton: { cancelButton: {
text: 'Revert the Change', text: 'Revert the Change',
callbackFunction: () => { callbackFunction() {
lotTypeIdElement.value = originalLotTypeId lotTypeIdElement.value = originalLotTypeId
} }
} }
@ -266,19 +274,19 @@ declare const bulmaJS: BulmaJS
// Comments // Comments
let lotComments: recordTypes.LotComment[] = exports.lotComments let lotComments = exports.lotComments as recordTypes.LotComment[]
delete exports.lotComments delete exports.lotComments
function openEditLotComment(clickEvent: Event): void { function openEditLotComment(clickEvent: Event): void {
const lotCommentId = Number.parseInt( const lotCommentId = Number.parseInt(
(clickEvent.currentTarget as HTMLElement).closest('tr')!.dataset (clickEvent.currentTarget as HTMLElement).closest('tr')?.dataset
.lotCommentId!, .lotCommentId ?? '',
10 10
) )
const lotComment = lotComments.find((currentLotComment) => { const lotComment = lotComments.find((currentLotComment) => {
return currentLotComment.lotCommentId === lotCommentId return currentLotComment.lotCommentId === lotCommentId
})! }) as recordTypes.LotComment
let editFormElement: HTMLFormElement let editFormElement: HTMLFormElement
let editCloseModalFunction: () => void let editCloseModalFunction: () => void
@ -287,17 +295,17 @@ declare const bulmaJS: BulmaJS
submitEvent.preventDefault() submitEvent.preventDefault()
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/lots/doUpdateLotComment', `${los.urlPrefix}/lots/doUpdateLotComment`,
editFormElement, editFormElement,
(rawResponseJSON) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as { const responseJSON = rawResponseJSON as {
success: boolean success: boolean
errorMessage?: string errorMessage?: string
lotComments?: recordTypes.LotComment[] lotComments: recordTypes.LotComment[]
} }
if (responseJSON.success) { if (responseJSON.success) {
lotComments = responseJSON.lotComments! lotComments = responseJSON.lotComments
editCloseModalFunction() editCloseModalFunction()
renderLotComments() renderLotComments()
} else { } else {
@ -312,7 +320,7 @@ declare const bulmaJS: BulmaJS
} }
cityssm.openHtmlModal('lot-editComment', { cityssm.openHtmlModal('lot-editComment', {
onshow: (modalElement) => { onshow(modalElement) {
los.populateAliases(modalElement) los.populateAliases(modalElement)
;( ;(
modalElement.querySelector( modalElement.querySelector(
@ -328,27 +336,28 @@ declare const bulmaJS: BulmaJS
modalElement.querySelector( modalElement.querySelector(
'#lotCommentEdit--lotComment' '#lotCommentEdit--lotComment'
) as HTMLInputElement ) as HTMLInputElement
).value = lotComment.lotComment! ).value = lotComment.lotComment ?? ''
const lotCommentDateStringElement = modalElement.querySelector( const lotCommentDateStringElement = modalElement.querySelector(
'#lotCommentEdit--lotCommentDateString' '#lotCommentEdit--lotCommentDateString'
) as HTMLInputElement ) as HTMLInputElement
lotCommentDateStringElement.value = lotComment.lotCommentDateString! lotCommentDateStringElement.value =
lotComment.lotCommentDateString ?? ''
const currentDateString = cityssm.dateToString(new Date()) const currentDateString = cityssm.dateToString(new Date())
lotCommentDateStringElement.max = lotCommentDateStringElement.max =
lotComment.lotCommentDateString! <= currentDateString lotComment.lotCommentDateString! <= currentDateString
? currentDateString ? currentDateString
: lotComment.lotCommentDateString! : lotComment.lotCommentDateString ?? ''
;( ;(
modalElement.querySelector( modalElement.querySelector(
'#lotCommentEdit--lotCommentTimeString' '#lotCommentEdit--lotCommentTimeString'
) as HTMLInputElement ) as HTMLInputElement
).value = lotComment.lotCommentTimeString! ).value = lotComment.lotCommentTimeString ?? ''
}, },
onshown: (modalElement, closeModalFunction) => { onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped() bulmaJS.toggleHtmlClipped()
los.initializeDatePickers(modalElement) los.initializeDatePickers(modalElement)
@ -359,12 +368,12 @@ declare const bulmaJS: BulmaJS
) as HTMLTextAreaElement ) as HTMLTextAreaElement
).focus() ).focus()
editFormElement = modalElement.querySelector('form')! editFormElement = modalElement.querySelector('form') as HTMLFormElement
editFormElement.addEventListener('submit', editComment) editFormElement.addEventListener('submit', editComment)
editCloseModalFunction = closeModalFunction editCloseModalFunction = closeModalFunction
}, },
onremoved: () => { onremoved() {
bulmaJS.toggleHtmlClipped() bulmaJS.toggleHtmlClipped()
} }
}) })
@ -372,14 +381,14 @@ declare const bulmaJS: BulmaJS
function deleteLotComment(clickEvent: Event): void { function deleteLotComment(clickEvent: Event): void {
const lotCommentId = Number.parseInt( const lotCommentId = Number.parseInt(
(clickEvent.currentTarget as HTMLElement).closest('tr')!.dataset (clickEvent.currentTarget as HTMLElement).closest('tr')?.dataset
.lotCommentId!, .lotCommentId ?? '',
10 10
) )
function doDelete(): void { function doDelete(): void {
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/lots/doDeleteLotComment', `${los.urlPrefix}/lots/doDeleteLotComment`,
{ {
lotId, lotId,
lotCommentId lotCommentId
@ -440,42 +449,41 @@ declare const bulmaJS: BulmaJS
for (const lotComment of lotComments) { for (const lotComment of lotComments) {
const tableRowElement = document.createElement('tr') const tableRowElement = document.createElement('tr')
tableRowElement.dataset.lotCommentId = lotComment.lotCommentId!.toString() tableRowElement.dataset.lotCommentId = lotComment.lotCommentId?.toString()
tableRowElement.innerHTML = // eslint-disable-next-line no-unsanitized/property
'<td>' + tableRowElement.innerHTML = `<td>
cityssm.escapeHTML(lotComment.recordCreate_userName ?? '') + ${cityssm.escapeHTML(lotComment.recordCreate_userName ?? '')}
'</td>' + </td><td>
'<td>' + ${lotComment.lotCommentDateString}
lotComment.lotCommentDateString! + ${
(lotComment.lotCommentTime === 0 lotComment.lotCommentTime === 0
? '' ? ''
: ' ' + lotComment.lotCommentTimePeriodString!) + : ' ' + lotComment.lotCommentTimePeriodString
'</td>' + }
'<td>' + </td><td>
cityssm.escapeHTML(lotComment.lotComment ?? '') + ${cityssm.escapeHTML(lotComment.lotComment ?? '')}
'</td>' + </td><td class="is-hidden-print">
('<td class="is-hidden-print">' + <div class="buttons are-small is-justify-content-end">
'<div class="buttons are-small is-justify-content-end">' + <button class="button is-primary button--edit" type="button">
('<button class="button is-primary button--edit" type="button">' + <span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>
'<span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>' + <span>Edit</span>
' <span>Edit</span>' + </button>
'</button>') + <button class="button is-light is-danger button--delete" data-tooltip="Delete Comment" type="button" aria-label="Delete">
('<button class="button is-light is-danger button--delete" data-tooltip="Delete Comment" type="button" aria-label="Delete">' + <i class="fas fa-trash" aria-hidden="true"></i>
'<i class="fas fa-trash" aria-hidden="true"></i>' + </button>
'</button>') + </div>
'</div>' + </td>`
'</td>')
tableRowElement tableRowElement
.querySelector('.button--edit')! .querySelector('.button--edit')
.addEventListener('click', openEditLotComment) ?.addEventListener('click', openEditLotComment)
tableRowElement tableRowElement
.querySelector('.button--delete')! .querySelector('.button--delete')
.addEventListener('click', deleteLotComment) ?.addEventListener('click', deleteLotComment)
tableElement.querySelector('tbody')!.append(tableRowElement) tableElement.querySelector('tbody')?.append(tableRowElement)
} }
containerElement.innerHTML = '' containerElement.innerHTML = ''
@ -489,16 +497,16 @@ declare const bulmaJS: BulmaJS
formEvent.preventDefault() formEvent.preventDefault()
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/lots/doAddLotComment', `${los.urlPrefix}/lots/doAddLotComment`,
formEvent.currentTarget, formEvent.currentTarget,
(rawResponseJSON) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as { const responseJSON = rawResponseJSON as {
success: boolean success: boolean
lotComments?: recordTypes.LotComment[] lotComments: recordTypes.LotComment[]
} }
if (responseJSON.success) { if (responseJSON.success) {
lotComments = responseJSON.lotComments! lotComments = responseJSON.lotComments
renderLotComments() renderLotComments()
addCommentCloseModalFunction() addCommentCloseModalFunction()
} }
@ -515,8 +523,8 @@ declare const bulmaJS: BulmaJS
) as HTMLInputElement ) as HTMLInputElement
).value = lotId ).value = lotId
modalElement modalElement
.querySelector('form')! .querySelector('form')
.addEventListener('submit', doAddComment) ?.addEventListener('submit', doAddComment)
}, },
onshown(modalElement, closeModalFunction) { onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped() bulmaJS.toggleHtmlClipped()
@ -538,8 +546,8 @@ declare const bulmaJS: BulmaJS
if (!isCreate) { if (!isCreate) {
document document
.querySelector('#lotComments--add')! .querySelector('#lotComments--add')
.addEventListener('click', openAddCommentModal) ?.addEventListener('click', openAddCommentModal)
renderLotComments() renderLotComments()
} }
})() })()

View File

@ -1,5 +1,6 @@
"use strict"; "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 }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
@ -8,9 +9,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10); const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10);
const offsetElement = document.querySelector('#searchFilter--offset'); const offsetElement = document.querySelector('#searchFilter--offset');
function renderLotOccupancies(rawResponseJSON) { function renderLotOccupancies(rawResponseJSON) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o; var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.lotOccupancies.length === 0) { if (responseJSON.lotOccupancies.length === 0) {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<div class="message is-info"> searchResultsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body"> <p class="message-body">
There are no ${los.escapedAliases.occupancy} records that meet the search criteria. There are no ${los.escapedAliases.occupancy} records that meet the search criteria.
@ -40,30 +42,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
</span>`; </span>`;
} }
let occupantsHTML = ''; let occupantsHTML = '';
for (const occupant of lotOccupancy.lotOccupancyOccupants) { for (const occupant of (_a = lotOccupancy.lotOccupancyOccupants) !== null && _a !== void 0 ? _a : []) {
occupantsHTML += occupantsHTML += `<li class="has-tooltip-left" data-tooltip="${cityssm.escapeHTML((_b = occupant.lotOccupantType) !== null && _b !== void 0 ? _b : '')}">
'<li class="has-tooltip-left" data-tooltip="' + <span class="fa-li">
cityssm.escapeHTML((_a = occupant.lotOccupantType) !== null && _a !== void 0 ? _a : '') + <i class="fas fa-fw fa-${cityssm.escapeHTML(((_c = occupant.fontAwesomeIconClass) !== null && _c !== void 0 ? _c : '') === ''
'">' +
('<span class="fa-li"><i class="fas fa-fw fa-' +
cityssm.escapeHTML(((_b = occupant.fontAwesomeIconClass) !== null && _b !== void 0 ? _b : '') === ''
? 'user' ? 'user'
: occupant.fontAwesomeIconClass) + : (_d = occupant.fontAwesomeIconClass) !== null && _d !== void 0 ? _d : '')}" aria-hidden="true"></i>
'" aria-hidden="true"></i></span> ') + </span>
cityssm.escapeHTML((_c = occupant.occupantName) !== null && _c !== void 0 ? _c : '') + ${cityssm.escapeHTML((_e = occupant.occupantName) !== null && _e !== void 0 ? _e : '')}
' ' + ${cityssm.escapeHTML((_f = occupant.occupantFamilyName) !== null && _f !== void 0 ? _f : '')}
cityssm.escapeHTML((_d = occupant.occupantFamilyName) !== null && _d !== void 0 ? _d : '') + </li>`;
'</li>';
} }
const feeTotal = ((_f = (_e = lotOccupancy.lotOccupancyFees) === null || _e === void 0 ? void 0 : _e.reduce((soFar, currentFee) => { const feeTotal = ((_h = (_g = lotOccupancy.lotOccupancyFees) === null || _g === void 0 ? void 0 : _g.reduce((soFar, currentFee) => {
var _a, _b, _c; var _a, _b, _c;
return (soFar + return (soFar +
(((_a = currentFee.feeAmount) !== null && _a !== void 0 ? _a : 0) + ((_b = currentFee.taxAmount) !== null && _b !== void 0 ? _b : 0)) * (((_a = currentFee.feeAmount) !== null && _a !== void 0 ? _a : 0) + ((_b = currentFee.taxAmount) !== null && _b !== void 0 ? _b : 0)) *
((_c = currentFee.quantity) !== null && _c !== void 0 ? _c : 0)); ((_c = currentFee.quantity) !== null && _c !== void 0 ? _c : 0));
}, 0)) !== null && _f !== void 0 ? _f : 0).toFixed(2);
const transactionTotal = ((_h = (_g = lotOccupancy.lotOccupancyTransactions) === null || _g === void 0 ? void 0 : _g.reduce((soFar, currentTransaction) => {
return soFar + currentTransaction.transactionAmount;
}, 0)) !== null && _h !== void 0 ? _h : 0).toFixed(2); }, 0)) !== null && _h !== void 0 ? _h : 0).toFixed(2);
const transactionTotal = ((_k = (_j = lotOccupancy.lotOccupancyTransactions) === null || _j === void 0 ? void 0 : _j.reduce((soFar, currentTransaction) => {
return soFar + currentTransaction.transactionAmount;
}, 0)) !== null && _k !== void 0 ? _k : 0).toFixed(2);
let feeIconHTML = ''; let feeIconHTML = '';
if (feeTotal !== '0.00' || transactionTotal !== '0.00') { if (feeTotal !== '0.00' || transactionTotal !== '0.00') {
feeIconHTML = `<span class="icon" feeIconHTML = `<span class="icon"
@ -74,60 +72,42 @@ Object.defineProperty(exports, "__esModule", { value: true });
: 'has-text-danger'}" aria-hidden="true"></i> : 'has-text-danger'}" aria-hidden="true"></i>
</span>`; </span>`;
} }
resultsTbodyElement.insertAdjacentHTML('beforeend', '<tr>' + // eslint-disable-next-line no-unsanitized/method
('<td class="has-width-1">' + occupancyTimeHTML + '</td>') + resultsTbodyElement.insertAdjacentHTML('beforeend', `<tr>
('<td>' + <td class="has-width-1">
'<a class="has-text-weight-bold" href="' + ${occupancyTimeHTML}
los.getLotOccupancyURL(lotOccupancy.lotOccupancyId) + </td><td>
'">' + <a class="has-text-weight-bold"
cityssm.escapeHTML(lotOccupancy.occupancyType) + href="${los.getLotOccupancyURL(lotOccupancy.lotOccupancyId)}">
'</a><br />' + ${cityssm.escapeHTML((_l = lotOccupancy.occupancyType) !== null && _l !== void 0 ? _l : '')}
`<span class="is-size-7">#${lotOccupancy.lotOccupancyId}</span>` + </a><br />
'</td>') + <span class="is-size-7">#${lotOccupancy.lotOccupancyId}</span>
('<td>' + </td><td>
(((_j = lotOccupancy.lotId) !== null && _j !== void 0 ? _j : -1) === -1 ${((_m = lotOccupancy.lotId) !== null && _m !== void 0 ? _m : -1) === -1
? '<span class="has-text-grey">(No ' + ? `<span class="has-text-grey">(No ${los.escapedAliases.Lot})</span>`
los.escapedAliases.Lot + : `<a class="has-tooltip-right" data-tooltip="${cityssm.escapeHTML((_o = lotOccupancy.lotType) !== null && _o !== void 0 ? _o : '')}" href="${los.getLotURL(lotOccupancy.lotId)}">${cityssm.escapeHTML((_p = lotOccupancy.lotName) !== null && _p !== void 0 ? _p : '')}</a>`}<br />
')</span>' <span class="is-size-7">${cityssm.escapeHTML((_q = lotOccupancy.mapName) !== null && _q !== void 0 ? _q : '')}</span>
: '<a class="has-tooltip-right" data-tooltip="' + </td><td>
cityssm.escapeHTML((_k = lotOccupancy.lotType) !== null && _k !== void 0 ? _k : '') + ${lotOccupancy.occupancyStartDateString}
'" href="' + </td><td>
los.getLotURL(lotOccupancy.lotId) + ${lotOccupancy.occupancyEndDate
'">' +
cityssm.escapeHTML(lotOccupancy.lotName) +
'</a>') +
'<br />' +
('<span class="is-size-7">' +
cityssm.escapeHTML((_l = lotOccupancy.mapName) !== null && _l !== void 0 ? _l : '') +
'</span>') +
'</td>') +
('<td>' + lotOccupancy.occupancyStartDateString + '</td>') +
('<td>' +
(lotOccupancy.occupancyEndDate
? lotOccupancy.occupancyEndDateString ? lotOccupancy.occupancyEndDateString
: '<span class="has-text-grey">(No End Date)</span>') + : '<span class="has-text-grey">(No End Date)</span>'}
'</td>') + </td><td>
('<td>' + ${occupantsHTML === ''
(occupantsHTML === ''
? '' ? ''
: '<ul class="fa-ul ml-5">' + occupantsHTML + '</ul>') + : `<ul class="fa-ul ml-5">${occupantsHTML}</ul>`}
'</td>') + </td><td>
('<td>' + feeIconHTML + '</td>') + ${feeIconHTML}
'<td>' + </td><td>
(lotOccupancy.printEJS ${lotOccupancy.printEJS
? '<a class="button is-small" data-tooltip="Print" href="' + ? `<a class="button is-small" data-tooltip="Print"
los.urlPrefix + href="${los.urlPrefix}/print/${lotOccupancy.printEJS}/?lotOccupancyId=${lotOccupancy.lotOccupancyId.toString()}" target="_blank">
'/print/' + <i class="fas fa-print" aria-label="Print"></i>
lotOccupancy.printEJS + </a>`
'/?lotOccupancyId=' + : ''}</td></tr>`);
lotOccupancy.lotOccupancyId.toString() +
'" target="_blank">' +
'<i class="fas fa-print" aria-label="Print"></i>' +
'</a>'
: '') +
'</td>' +
'</tr>');
} }
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"> searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">
<thead><tr> <thead><tr>
<th class="has-width-1"></th> <th class="has-width-1"></th>
@ -140,18 +120,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
<th class="has-width-1"><span class="is-sr-only">Print</span></th> <th class="has-width-1"><span class="is-sr-only">Print</span></th>
</tr></thead> </tr></thead>
<table>`; <table>`;
searchResultsContainerElement (_r = searchResultsContainerElement
.querySelector('table') .querySelector('table')) === null || _r === void 0 ? void 0 : _r.append(resultsTbodyElement);
.append(resultsTbodyElement); // eslint-disable-next-line no-unsanitized/method
searchResultsContainerElement.insertAdjacentHTML('beforeend', los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count)); searchResultsContainerElement.insertAdjacentHTML('beforeend', los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count));
(_m = searchResultsContainerElement (_s = searchResultsContainerElement
.querySelector("button[data-page='previous']")) === null || _m === void 0 ? void 0 : _m.addEventListener('click', previousAndGetLotOccupancies); .querySelector("button[data-page='previous']")) === null || _s === void 0 ? void 0 : _s.addEventListener('click', previousAndGetLotOccupancies);
(_o = searchResultsContainerElement (_t = searchResultsContainerElement
.querySelector("button[data-page='next']")) === null || _o === void 0 ? void 0 : _o.addEventListener('click', nextAndGetLotOccupancies); .querySelector("button[data-page='next']")) === null || _t === void 0 ? void 0 : _t.addEventListener('click', nextAndGetLotOccupancies);
} }
function getLotOccupancies() { function getLotOccupancies() {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Occupancies}...`); searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Occupancies}...`);
cityssm.postJSON(los.urlPrefix + '/lotOccupancies/doSearchLotOccupancies', searchFilterFormElement, renderLotOccupancies); cityssm.postJSON(`${los.urlPrefix}/lotOccupancies/doSearchLotOccupancies`, searchFilterFormElement, renderLotOccupancies);
} }
function resetOffsetAndGetLotOccupancies() { function resetOffsetAndGetLotOccupancies() {
offsetElement.value = '0'; offsetElement.value = '0';

View File

@ -1,13 +1,16 @@
/* 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 { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type * as recordTypes from '../types/recordTypes'
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types' import type { LOS } from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const searchFilterFormElement = document.querySelector( const searchFilterFormElement = document.querySelector(
'#form--searchFilters' '#form--searchFilters'
@ -34,6 +37,7 @@ declare const cityssm: cityssmGlobal
} }
if (responseJSON.lotOccupancies.length === 0) { if (responseJSON.lotOccupancies.length === 0) {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<div class="message is-info"> searchResultsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body"> <p class="message-body">
There are no ${los.escapedAliases.occupancy} records that meet the search criteria. There are no ${los.escapedAliases.occupancy} records that meet the search criteria.
@ -70,22 +74,18 @@ declare const cityssm: cityssmGlobal
let occupantsHTML = '' let occupantsHTML = ''
for (const occupant of lotOccupancy.lotOccupancyOccupants!) { for (const occupant of lotOccupancy.lotOccupancyOccupants ?? []) {
occupantsHTML += occupantsHTML += `<li class="has-tooltip-left" data-tooltip="${cityssm.escapeHTML(occupant.lotOccupantType ?? '')}">
'<li class="has-tooltip-left" data-tooltip="' + <span class="fa-li">
cityssm.escapeHTML(occupant.lotOccupantType ?? '') + <i class="fas fa-fw fa-${cityssm.escapeHTML(
'">' +
('<span class="fa-li"><i class="fas fa-fw fa-' +
cityssm.escapeHTML(
(occupant.fontAwesomeIconClass ?? '') === '' (occupant.fontAwesomeIconClass ?? '') === ''
? 'user' ? 'user'
: occupant.fontAwesomeIconClass! : occupant.fontAwesomeIconClass ?? ''
) + )}" aria-hidden="true"></i>
'" aria-hidden="true"></i></span> ') + </span>
cityssm.escapeHTML(occupant.occupantName ?? '') + ${cityssm.escapeHTML(occupant.occupantName ?? '')}
' ' + ${cityssm.escapeHTML(occupant.occupantFamilyName ?? '')}
cityssm.escapeHTML(occupant.occupantFamilyName ?? '') + </li>`
'</li>'
} }
const feeTotal = ( const feeTotal = (
@ -121,64 +121,54 @@ declare const cityssm: cityssmGlobal
</span>` </span>`
} }
// eslint-disable-next-line no-unsanitized/method
resultsTbodyElement.insertAdjacentHTML( resultsTbodyElement.insertAdjacentHTML(
'beforeend', 'beforeend',
'<tr>' + `<tr>
('<td class="has-width-1">' + occupancyTimeHTML + '</td>') + <td class="has-width-1">
('<td>' + ${occupancyTimeHTML}
'<a class="has-text-weight-bold" href="' + </td><td>
los.getLotOccupancyURL(lotOccupancy.lotOccupancyId) + <a class="has-text-weight-bold"
'">' + href="${los.getLotOccupancyURL(lotOccupancy.lotOccupancyId)}">
cityssm.escapeHTML(lotOccupancy.occupancyType as string) + ${cityssm.escapeHTML(lotOccupancy.occupancyType ?? '')}
'</a><br />' + </a><br />
`<span class="is-size-7">#${lotOccupancy.lotOccupancyId!}</span>` + <span class="is-size-7">#${lotOccupancy.lotOccupancyId}</span>
'</td>') + </td><td>
('<td>' + ${
((lotOccupancy.lotId ?? -1) === -1 (lotOccupancy.lotId ?? -1) === -1
? '<span class="has-text-grey">(No ' + ? `<span class="has-text-grey">(No ${los.escapedAliases.Lot})</span>`
los.escapedAliases.Lot + : `<a class="has-tooltip-right" data-tooltip="${cityssm.escapeHTML(lotOccupancy.lotType ?? '')}" href="${los.getLotURL(lotOccupancy.lotId)}">${cityssm.escapeHTML(lotOccupancy.lotName ?? '')}</a>`
')</span>' }<br />
: '<a class="has-tooltip-right" data-tooltip="' + <span class="is-size-7">${cityssm.escapeHTML(lotOccupancy.mapName ?? '')}</span>
cityssm.escapeHTML(lotOccupancy.lotType ?? '') + </td><td>
'" href="' + ${lotOccupancy.occupancyStartDateString}
los.getLotURL(lotOccupancy.lotId) + </td><td>
'">' + ${
cityssm.escapeHTML(lotOccupancy.lotName!) + lotOccupancy.occupancyEndDate
'</a>') + ? lotOccupancy.occupancyEndDateString
'<br />' + : '<span class="has-text-grey">(No End Date)</span>'
('<span class="is-size-7">' + }
cityssm.escapeHTML(lotOccupancy.mapName ?? '') + </td><td>
'</span>') + ${
'</td>') + occupantsHTML === ''
('<td>' + lotOccupancy.occupancyStartDateString! + '</td>') +
('<td>' +
(lotOccupancy.occupancyEndDate
? lotOccupancy.occupancyEndDateString!
: '<span class="has-text-grey">(No End Date)</span>') +
'</td>') +
('<td>' +
(occupantsHTML === ''
? '' ? ''
: '<ul class="fa-ul ml-5">' + occupantsHTML + '</ul>') + : `<ul class="fa-ul ml-5">${occupantsHTML}</ul>`
'</td>') + }
('<td>' + feeIconHTML + '</td>') + </td><td>
'<td>' + ${feeIconHTML}
(lotOccupancy.printEJS </td><td>
? '<a class="button is-small" data-tooltip="Print" href="' + ${
los.urlPrefix + lotOccupancy.printEJS
'/print/' + ? `<a class="button is-small" data-tooltip="Print"
lotOccupancy.printEJS + href="${los.urlPrefix}/print/${lotOccupancy.printEJS}/?lotOccupancyId=${lotOccupancy.lotOccupancyId.toString()}" target="_blank">
'/?lotOccupancyId=' + <i class="fas fa-print" aria-label="Print"></i>
lotOccupancy.lotOccupancyId!.toString() + </a>`
'" target="_blank">' + : ''
'<i class="fas fa-print" aria-label="Print"></i>' + }</td></tr>`
'</a>'
: '') +
'</td>' +
'</tr>'
) )
} }
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"> searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">
<thead><tr> <thead><tr>
<th class="has-width-1"></th> <th class="has-width-1"></th>
@ -193,9 +183,10 @@ declare const cityssm: cityssmGlobal
<table>` <table>`
searchResultsContainerElement searchResultsContainerElement
.querySelector('table')! .querySelector('table')
.append(resultsTbodyElement) ?.append(resultsTbodyElement)
// eslint-disable-next-line no-unsanitized/method
searchResultsContainerElement.insertAdjacentHTML( searchResultsContainerElement.insertAdjacentHTML(
'beforeend', 'beforeend',
los.getSearchResultsPagerHTML( los.getSearchResultsPagerHTML(
@ -215,12 +206,13 @@ declare const cityssm: cityssmGlobal
} }
function getLotOccupancies(): void { function getLotOccupancies(): void {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML( searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(
`Loading ${los.escapedAliases.Occupancies}...` `Loading ${los.escapedAliases.Occupancies}...`
) )
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/lotOccupancies/doSearchLotOccupancies', `${los.urlPrefix}/lotOccupancies/doSearchLotOccupancies`,
searchFilterFormElement, searchFilterFormElement,
renderLotOccupancies renderLotOccupancies
) )

View File

@ -1,5 +1,6 @@
"use strict"; "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 }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
@ -7,9 +8,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
const searchResultsContainerElement = document.querySelector('#container--searchResults'); const searchResultsContainerElement = document.querySelector('#container--searchResults');
const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10); const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10);
const offsetElement = document.querySelector('#searchFilter--offset'); const offsetElement = document.querySelector('#searchFilter--offset');
function renderLots(responseJSON) { function renderLots(rawResponseJSON) {
var _a, _b, _c, _d, _e; var _a, _b, _c, _d, _e, _f, _g;
const responseJSON = rawResponseJSON;
if (responseJSON.lots.length === 0) { if (responseJSON.lots.length === 0) {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<div class="message is-info"> searchResultsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no ${los.escapedAliases.lots} that meet the search criteria.</p> <p class="message-body">There are no ${los.escapedAliases.lots} that meet the search criteria.</p>
</div>`; </div>`;
@ -17,35 +20,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
const resultsTbodyElement = document.createElement('tbody'); const resultsTbodyElement = document.createElement('tbody');
for (const lot of responseJSON.lots) { for (const lot of responseJSON.lots) {
resultsTbodyElement.insertAdjacentHTML('beforeend', '<tr>' + // eslint-disable-next-line no-unsanitized/method
('<td>' + resultsTbodyElement.insertAdjacentHTML('beforeend', `<tr>
'<a class="has-text-weight-bold" href="' + <td>
los.getLotURL(lot.lotId) + <a class="has-text-weight-bold" href="${los.getLotURL(lot.lotId)}">
'">' + ${cityssm.escapeHTML((_a = lot.lotName) !== null && _a !== void 0 ? _a : '')}
cityssm.escapeHTML((_a = lot.lotName) !== null && _a !== void 0 ? _a : '') + </a>
'</a>' + </td><td>
'</td>') + <a href="${los.getMapURL(lot.mapId)}">
('<td>' + ${lot.mapName
'<a href="' +
los.getMapURL(lot.mapId) +
'">' +
(lot.mapName
? cityssm.escapeHTML(lot.mapName) ? cityssm.escapeHTML(lot.mapName)
: '<span class="has-text-grey">(No Name)</span>') + : '<span class="has-text-grey">(No Name)</span>'}
'</a>' + </a>
'</td>') + </td><td>
('<td>' + cityssm.escapeHTML((_b = lot.lotType) !== null && _b !== void 0 ? _b : '') + '</td>') + ${cityssm.escapeHTML((_b = lot.lotType) !== null && _b !== void 0 ? _b : '')}
('<td>' + </td><td>
(lot.lotStatusId ${lot.lotStatusId
? cityssm.escapeHTML(lot.lotStatus) ? cityssm.escapeHTML((_c = lot.lotStatus) !== null && _c !== void 0 ? _c : '')
: '<span class="has-text-grey">(No Status)</span>') + : '<span class="has-text-grey">(No Status)</span>'}<br />
'<br />' + ${((_d = lot.lotOccupancyCount) !== null && _d !== void 0 ? _d : 0) > 0
(((_c = lot.lotOccupancyCount) !== null && _c !== void 0 ? _c : 0) > 0
? '<span class="is-size-7">Currently Occupied</span>' ? '<span class="is-size-7">Currently Occupied</span>'
: '') + : ''}
'</td>') + </td>
'</tr>'); </tr>`);
} }
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"> searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">
<thead><tr> <thead><tr>
<th>${los.escapedAliases.Lot}</th> <th>${los.escapedAliases.Lot}</th>
@ -54,16 +53,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
<th>Status</th> <th>Status</th>
</tr></thead> </tr></thead>
<table>`; <table>`;
// eslint-disable-next-line no-unsanitized/method
searchResultsContainerElement.insertAdjacentHTML('beforeend', los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count)); searchResultsContainerElement.insertAdjacentHTML('beforeend', los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count));
searchResultsContainerElement
.querySelector('table')
.append(resultsTbodyElement);
(_d = searchResultsContainerElement
.querySelector("button[data-page='previous']")) === null || _d === void 0 ? void 0 : _d.addEventListener('click', previousAndGetLots);
(_e = searchResultsContainerElement (_e = searchResultsContainerElement
.querySelector("button[data-page='next']")) === null || _e === void 0 ? void 0 : _e.addEventListener('click', nextAndGetLots); .querySelector('table')) === null || _e === void 0 ? void 0 : _e.append(resultsTbodyElement);
(_f = searchResultsContainerElement
.querySelector("button[data-page='previous']")) === null || _f === void 0 ? void 0 : _f.addEventListener('click', previousAndGetLots);
(_g = searchResultsContainerElement
.querySelector("button[data-page='next']")) === null || _g === void 0 ? void 0 : _g.addEventListener('click', nextAndGetLots);
} }
function getLots() { function getLots() {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Lots}...`); searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Lots}...`);
cityssm.postJSON(los.urlPrefix + '/lots/doSearchLots', searchFilterFormElement, renderLots); cityssm.postJSON(los.urlPrefix + '/lots/doSearchLots', searchFilterFormElement, renderLots);
} }

View File

@ -1,13 +1,16 @@
/* 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 { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type * as recordTypes from '../types/recordTypes'
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types' import type { LOS } from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const searchFilterFormElement = document.querySelector( const searchFilterFormElement = document.querySelector(
'#form--searchFilters' '#form--searchFilters'
@ -25,12 +28,15 @@ declare const cityssm: cityssmGlobal
'#searchFilter--offset' '#searchFilter--offset'
) as HTMLInputElement ) as HTMLInputElement
function renderLots(responseJSON: { function renderLots(rawResponseJSON): void {
const responseJSON = rawResponseJSON as {
count: number count: number
offset: number offset: number
lots: recordTypes.Lot[] lots: recordTypes.Lot[]
}): void { }
if (responseJSON.lots.length === 0) { if (responseJSON.lots.length === 0) {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<div class="message is-info"> searchResultsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no ${los.escapedAliases.lots} that meet the search criteria.</p> <p class="message-body">There are no ${los.escapedAliases.lots} that meet the search criteria.</p>
</div>` </div>`
@ -41,39 +47,41 @@ declare const cityssm: cityssmGlobal
const resultsTbodyElement = document.createElement('tbody') const resultsTbodyElement = document.createElement('tbody')
for (const lot of responseJSON.lots) { for (const lot of responseJSON.lots) {
// eslint-disable-next-line no-unsanitized/method
resultsTbodyElement.insertAdjacentHTML( resultsTbodyElement.insertAdjacentHTML(
'beforeend', 'beforeend',
'<tr>' + `<tr>
('<td>' + <td>
'<a class="has-text-weight-bold" href="' + <a class="has-text-weight-bold" href="${los.getLotURL(lot.lotId)}">
los.getLotURL(lot.lotId) + ${cityssm.escapeHTML(lot.lotName ?? '')}
'">' + </a>
cityssm.escapeHTML(lot.lotName ?? '') + </td><td>
'</a>' + <a href="${los.getMapURL(lot.mapId)}">
'</td>') + ${
('<td>' + lot.mapName
'<a href="' +
los.getMapURL(lot.mapId) +
'">' +
(lot.mapName
? cityssm.escapeHTML(lot.mapName) ? cityssm.escapeHTML(lot.mapName)
: '<span class="has-text-grey">(No Name)</span>') + : '<span class="has-text-grey">(No Name)</span>'
'</a>' + }
'</td>') + </a>
('<td>' + cityssm.escapeHTML(lot.lotType ?? '') + '</td>') + </td><td>
('<td>' + ${cityssm.escapeHTML(lot.lotType ?? '')}
(lot.lotStatusId </td><td>
? cityssm.escapeHTML(lot.lotStatus!) ${
: '<span class="has-text-grey">(No Status)</span>') + lot.lotStatusId
'<br />' + ? cityssm.escapeHTML(lot.lotStatus ?? '')
((lot.lotOccupancyCount ?? 0) > 0 : '<span class="has-text-grey">(No Status)</span>'
}<br />
${
(lot.lotOccupancyCount ?? 0) > 0
? '<span class="is-size-7">Currently Occupied</span>' ? '<span class="is-size-7">Currently Occupied</span>'
: '') + : ''
'</td>') + }
'</tr>' </td>
</tr>`
) )
} }
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"> searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">
<thead><tr> <thead><tr>
<th>${los.escapedAliases.Lot}</th> <th>${los.escapedAliases.Lot}</th>
@ -83,6 +91,7 @@ declare const cityssm: cityssmGlobal
</tr></thead> </tr></thead>
<table>` <table>`
// eslint-disable-next-line no-unsanitized/method
searchResultsContainerElement.insertAdjacentHTML( searchResultsContainerElement.insertAdjacentHTML(
'beforeend', 'beforeend',
los.getSearchResultsPagerHTML( los.getSearchResultsPagerHTML(
@ -93,8 +102,8 @@ declare const cityssm: cityssmGlobal
) )
searchResultsContainerElement searchResultsContainerElement
.querySelector('table')! .querySelector('table')
.append(resultsTbodyElement) ?.append(resultsTbodyElement)
searchResultsContainerElement searchResultsContainerElement
.querySelector("button[data-page='previous']") .querySelector("button[data-page='previous']")
@ -106,6 +115,7 @@ declare const cityssm: cityssmGlobal
} }
function getLots(): void { function getLots(): void {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML( searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(
`Loading ${los.escapedAliases.Lots}...` `Loading ${los.escapedAliases.Lots}...`
) )

View File

@ -5,7 +5,7 @@ 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.js'
import type { Options as BulmaCalendarOptions } from 'bulma-calendar' import type { Options as BulmaCalendarOptions } from 'bulma-calendar'
import type * as globalTypes from '../types/globalTypes.js' import type { LOS } from '../types/globalTypes.js'
type RandomColorHue = type RandomColorHue =
| 'red' | 'red'
@ -492,7 +492,7 @@ declare const exports: Record<string, unknown> & {
* Declare LOS * Declare LOS
*/ */
const los: globalTypes.LOS = { const los: LOS = {
urlPrefix, urlPrefix,
apiKey: document.querySelector('main')?.dataset.apiKey ?? '', apiKey: document.querySelector('main')?.dataset.apiKey ?? '',
dynamicsGPIntegrationIsEnabled, dynamicsGPIntegrationIsEnabled,

View File

@ -1,5 +1,6 @@
"use strict"; "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 }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
var _a; var _a;
@ -22,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
function updateMap(formEvent) { function updateMap(formEvent) {
formEvent.preventDefault(); formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + '/maps/' + (isCreate ? 'doCreateMap' : 'doUpdateMap'), mapForm, (rawResponseJSON) => { cityssm.postJSON(`${los.urlPrefix}/maps/${isCreate ? 'doCreateMap' : 'doUpdateMap'}`, mapForm, (rawResponseJSON) => {
var _a; var _a;
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.success) { if (responseJSON.success) {
@ -32,14 +33,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
message: los.escapedAliases.Map + ' Updated Successfully', message: `${los.escapedAliases.Map} Updated Successfully`,
contextualColorName: 'success' contextualColorName: 'success'
}); });
} }
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: 'Error Updating ' + los.escapedAliases.Map, title: `Error Updating ${los.escapedAliases.Map}`,
message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '', message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '',
contextualColorName: 'danger' contextualColorName: 'danger'
}); });
@ -55,7 +56,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
.querySelector('#button--deleteMap')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (clickEvent) => { .querySelector('#button--deleteMap')) === null || _a === void 0 ? void 0 : _a.addEventListener('click', (clickEvent) => {
clickEvent.preventDefault(); clickEvent.preventDefault();
function doDelete() { function doDelete() {
cityssm.postJSON(los.urlPrefix + '/maps/doDeleteMap', { cityssm.postJSON(`${los.urlPrefix}/maps/doDeleteMap`, {
mapId mapId
}, (rawResponseJSON) => { }, (rawResponseJSON) => {
var _a; var _a;
@ -65,7 +66,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
else { else {
bulmaJS.alert({ bulmaJS.alert({
title: 'Error Deleting ' + los.escapedAliases.Map, title: `Error Deleting ${los.escapedAliases.Map}`,
message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '', message: (_a = responseJSON.errorMessage) !== null && _a !== void 0 ? _a : '',
contextualColorName: 'danger' contextualColorName: 'danger'
}); });
@ -73,7 +74,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}); });
} }
bulmaJS.confirm({ bulmaJS.confirm({
title: 'Delete ' + los.escapedAliases.Map, title: `Delete ${los.escapedAliases.Map}`,
message: `Are you sure you want to delete this ${los.escapedAliases.map} and all related ${los.escapedAliases.lots}?`, message: `Are you sure you want to delete this ${los.escapedAliases.map} and all related ${los.escapedAliases.lots}?`,
contextualColorName: 'warning', contextualColorName: 'warning',
okButton: { okButton: {

View File

@ -1,14 +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 { 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 { LOS } from '../types/globalTypes.js'
import type { BulmaJS } from '@cityssm/bulma-js/types'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const bulmaJS: BulmaJS declare const bulmaJS: BulmaJS
declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const mapId = (document.querySelector('#map--mapId') as HTMLInputElement) const mapId = (document.querySelector('#map--mapId') as HTMLInputElement)
.value .value
@ -34,7 +37,7 @@ declare const bulmaJS: BulmaJS
formEvent.preventDefault() formEvent.preventDefault()
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/maps/' + (isCreate ? 'doCreateMap' : 'doUpdateMap'), `${los.urlPrefix}/maps/${isCreate ? 'doCreateMap' : 'doUpdateMap'}`,
mapForm, mapForm,
(rawResponseJSON) => { (rawResponseJSON) => {
const responseJSON = rawResponseJSON as { const responseJSON = rawResponseJSON as {
@ -50,13 +53,13 @@ declare const bulmaJS: BulmaJS
window.location.href = los.getMapURL(responseJSON.mapId, true) window.location.href = los.getMapURL(responseJSON.mapId, true)
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
message: los.escapedAliases.Map + ' Updated Successfully', message: `${los.escapedAliases.Map} Updated Successfully`,
contextualColorName: 'success' contextualColorName: 'success'
}) })
} }
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: 'Error Updating ' + los.escapedAliases.Map, title: `Error Updating ${los.escapedAliases.Map}`,
message: responseJSON.errorMessage ?? '', message: responseJSON.errorMessage ?? '',
contextualColorName: 'danger' contextualColorName: 'danger'
}) })
@ -81,7 +84,7 @@ declare const bulmaJS: BulmaJS
function doDelete(): void { function doDelete(): void {
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/maps/doDeleteMap', `${los.urlPrefix}/maps/doDeleteMap`,
{ {
mapId mapId
}, },
@ -95,7 +98,7 @@ declare const bulmaJS: BulmaJS
window.location.href = los.getMapURL() window.location.href = los.getMapURL()
} else { } else {
bulmaJS.alert({ bulmaJS.alert({
title: 'Error Deleting ' + los.escapedAliases.Map, title: `Error Deleting ${los.escapedAliases.Map}`,
message: responseJSON.errorMessage ?? '', message: responseJSON.errorMessage ?? '',
contextualColorName: 'danger' contextualColorName: 'danger'
}) })
@ -105,7 +108,7 @@ declare const bulmaJS: BulmaJS
} }
bulmaJS.confirm({ bulmaJS.confirm({
title: 'Delete ' + los.escapedAliases.Map, title: `Delete ${los.escapedAliases.Map}`,
message: `Are you sure you want to delete this ${los.escapedAliases.map} and all related ${los.escapedAliases.lots}?`, message: `Are you sure you want to delete this ${los.escapedAliases.map} and all related ${los.escapedAliases.lots}?`,
contextualColorName: 'warning', contextualColorName: 'warning',
okButton: { okButton: {

View File

@ -1,13 +1,16 @@
"use strict"; "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 }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
var _a;
const los = exports.los; const los = exports.los;
const maps = exports.maps; const maps = exports.maps;
const searchFilterElement = document.querySelector('#searchFilter--map'); const searchFilterElement = document.querySelector('#searchFilter--map');
const searchResultsContainerElement = document.querySelector('#container--searchResults'); const searchResultsContainerElement = document.querySelector('#container--searchResults');
function renderResults() { function renderResults() {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q; var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s;
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Maps}...`); searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Maps}...`);
let searchResultCount = 0; let searchResultCount = 0;
const searchResultsTbodyElement = document.createElement('tbody'); const searchResultsTbodyElement = document.createElement('tbody');
@ -28,52 +31,48 @@ Object.defineProperty(exports, "__esModule", { value: true });
continue; continue;
} }
searchResultCount += 1; searchResultCount += 1;
searchResultsTbodyElement.insertAdjacentHTML('beforeend', '<tr>' + // eslint-disable-next-line no-unsanitized/method
('<td>' + searchResultsTbodyElement.insertAdjacentHTML('beforeend', `<tr>
'<a class="has-text-weight-bold" href="' + <td>
los.getMapURL(map.mapId) + <a class="has-text-weight-bold" href="${los.getMapURL(map.mapId)}">
'">' + ${cityssm.escapeHTML(((_e = map.mapName) !== null && _e !== void 0 ? _e : '') === '' ? '(No Name)' : (_f = map.mapName) !== null && _f !== void 0 ? _f : '')}
cityssm.escapeHTML(map.mapName === '' ? '(No Name)' : map.mapName) + </a><br />
'</a><br />' + <span class="is-size-7">
'<span class="is-size-7">' + ${cityssm.escapeHTML((_g = map.mapDescription) !== null && _g !== void 0 ? _g : '')}
cityssm.escapeHTML((_e = map.mapDescription) !== null && _e !== void 0 ? _e : '') + </span>
'</span>' + </td><td>
'</td>') + ${((_h = map.mapAddress1) !== null && _h !== void 0 ? _h : '') === ''
('<td>' +
(((_f = map.mapAddress1) !== null && _f !== void 0 ? _f : '') === ''
? '' ? ''
: cityssm.escapeHTML((_g = map.mapAddress1) !== null && _g !== void 0 ? _g : '') + '<br />') + : `${cityssm.escapeHTML((_j = map.mapAddress1) !== null && _j !== void 0 ? _j : '')}<br />`}
(((_h = map.mapAddress2) !== null && _h !== void 0 ? _h : '') === '' ${((_k = map.mapAddress2) !== null && _k !== void 0 ? _k : '') === ''
? '' ? ''
: cityssm.escapeHTML((_j = map.mapAddress2) !== null && _j !== void 0 ? _j : '') + '<br />') + : `${cityssm.escapeHTML((_l = map.mapAddress2) !== null && _l !== void 0 ? _l : '')}<br />`}
(map.mapCity || map.mapProvince ${map.mapCity || map.mapProvince
? cityssm.escapeHTML((_k = map.mapCity) !== null && _k !== void 0 ? _k : '') + ? `${cityssm.escapeHTML((_m = map.mapCity) !== null && _m !== void 0 ? _m : '')}, ${cityssm.escapeHTML((_o = map.mapProvince) !== null && _o !== void 0 ? _o : '')}<br />`
', ' + : ''}
cityssm.escapeHTML((_l = map.mapProvince) !== null && _l !== void 0 ? _l : '') + ${((_p = map.mapPostalCode) !== null && _p !== void 0 ? _p : '') === ''
'<br />'
: '') +
(((_m = map.mapPostalCode) !== null && _m !== void 0 ? _m : '') === ''
? '' ? ''
: cityssm.escapeHTML((_o = map.mapPostalCode) !== null && _o !== void 0 ? _o : '')) + : cityssm.escapeHTML((_q = map.mapPostalCode) !== null && _q !== void 0 ? _q : '')}
'</td>') + </td><td>
('<td>' + cityssm.escapeHTML((_p = map.mapPhoneNumber) !== null && _p !== void 0 ? _p : '') + '</td>') + ${cityssm.escapeHTML((_r = map.mapPhoneNumber) !== null && _r !== void 0 ? _r : '')}
'<td class="has-text-centered">' + </td><td class="has-text-centered">
(map.mapLatitude && map.mapLongitude ${map.mapLatitude && map.mapLongitude
? '<span data-tooltip="Has Geographic Coordinates"><i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i></span>' ? `<span data-tooltip="Has Geographic Coordinates">
: '') + <i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i>
'</td>' + </span>`
'<td class="has-text-centered">' + : ''}
(((_q = map.mapSVG) !== null && _q !== void 0 ? _q : '') === '' </td><td class="has-text-centered">
${((_s = map.mapSVG) !== null && _s !== void 0 ? _s : '') === ''
? '' ? ''
: '<span data-tooltip="Has Image"><i class="fas fa-image" aria-label="Has Image"></i></span>') + : '<span data-tooltip="Has Image"><i class="fas fa-image" aria-label="Has Image"></i></span>'}
'</td>' + </td><td class="has-text-right">
`<td class="has-text-right">
<a href="${los.urlPrefix}/lots?mapId=${map.mapId}">${map.lotCount}</a> <a href="${los.urlPrefix}/lots?mapId=${map.mapId}">${map.lotCount}</a>
</td>` + </td>
'</tr>'); </tr>`);
} }
searchResultsContainerElement.innerHTML = ''; searchResultsContainerElement.innerHTML = '';
if (searchResultCount === 0) { if (searchResultCount === 0) {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<div class="message is-info"> searchResultsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no ${los.escapedAliases.maps} that meet the search criteria.</p> <p class="message-body">There are no ${los.escapedAliases.maps} that meet the search criteria.</p>
</div>`; </div>`;
@ -82,6 +81,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const searchResultsTableElement = document.createElement('table'); const searchResultsTableElement = document.createElement('table');
searchResultsTableElement.className = searchResultsTableElement.className =
'table is-fullwidth is-striped is-hoverable has-sticky-header'; 'table is-fullwidth is-striped is-hoverable has-sticky-header';
// eslint-disable-next-line no-unsanitized/property
searchResultsTableElement.innerHTML = `<thead><tr> searchResultsTableElement.innerHTML = `<thead><tr>
<th>${los.escapedAliases.Map}</th> <th>${los.escapedAliases.Map}</th>
<th>Address</th> <th>Address</th>
@ -95,9 +95,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
} }
searchFilterElement.addEventListener('keyup', renderResults); searchFilterElement.addEventListener('keyup', renderResults);
document (_a = document
.querySelector('#form--searchFilters') .querySelector('#form--searchFilters')) === null || _a === void 0 ? void 0 : _a.addEventListener('submit', (formEvent) => {
.addEventListener('submit', (formEvent) => {
formEvent.preventDefault(); formEvent.preventDefault();
renderResults(); renderResults();
}); });

View File

@ -1,15 +1,18 @@
/* 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 { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type * as recordTypes from '../types/recordTypes'
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types' import type { LOS } from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
;(() => {
const los = exports.los as globalTypes.LOS
const maps: recordTypes.MapRecord[] = exports.maps declare const exports: Record<string, unknown>
;(() => {
const los = exports.los as LOS
const maps = exports.maps as recordTypes.MapRecord[]
const searchFilterElement = document.querySelector( const searchFilterElement = document.querySelector(
'#searchFilter--map' '#searchFilter--map'
@ -20,6 +23,7 @@ declare const cityssm: cityssmGlobal
) as HTMLElement ) as HTMLElement
function renderResults(): void { function renderResults(): void {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML( searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(
`Loading ${los.escapedAliases.Maps}...` `Loading ${los.escapedAliases.Maps}...`
) )
@ -52,61 +56,67 @@ declare const cityssm: cityssmGlobal
searchResultCount += 1 searchResultCount += 1
// eslint-disable-next-line no-unsanitized/method
searchResultsTbodyElement.insertAdjacentHTML( searchResultsTbodyElement.insertAdjacentHTML(
'beforeend', 'beforeend',
'<tr>' + `<tr>
('<td>' + <td>
'<a class="has-text-weight-bold" href="' + <a class="has-text-weight-bold" href="${los.getMapURL(map.mapId)}">
los.getMapURL(map.mapId) + ${cityssm.escapeHTML(
'">' + (map.mapName ?? '') === '' ? '(No Name)' : map.mapName ?? ''
cityssm.escapeHTML( )}
map.mapName! === '' ? '(No Name)' : map.mapName! </a><br />
) + <span class="is-size-7">
'</a><br />' + ${cityssm.escapeHTML(map.mapDescription ?? '')}
'<span class="is-size-7">' + </span>
cityssm.escapeHTML(map.mapDescription ?? '') + </td><td>
'</span>' + ${
'</td>') + (map.mapAddress1 ?? '') === ''
('<td>' +
((map.mapAddress1 ?? '') === ''
? '' ? ''
: cityssm.escapeHTML(map.mapAddress1 ?? '') + '<br />') + : `${cityssm.escapeHTML(map.mapAddress1 ?? '')}<br />`
((map.mapAddress2 ?? '') === '' }
${
(map.mapAddress2 ?? '') === ''
? '' ? ''
: cityssm.escapeHTML(map.mapAddress2 ?? '') + '<br />') + : `${cityssm.escapeHTML(map.mapAddress2 ?? '')}<br />`
(map.mapCity || map.mapProvince }
? cityssm.escapeHTML(map.mapCity ?? '') + ${
', ' + map.mapCity || map.mapProvince
cityssm.escapeHTML(map.mapProvince ?? '') + ? `${cityssm.escapeHTML(map.mapCity ?? '')}, ${cityssm.escapeHTML(map.mapProvince ?? '')}<br />`
'<br />' : ''
: '') + }
((map.mapPostalCode ?? '') === '' ${
(map.mapPostalCode ?? '') === ''
? '' ? ''
: cityssm.escapeHTML(map.mapPostalCode ?? '')) + : cityssm.escapeHTML(map.mapPostalCode ?? '')
'</td>') + }
('<td>' + cityssm.escapeHTML(map.mapPhoneNumber ?? '') + '</td>') + </td><td>
'<td class="has-text-centered">' + ${cityssm.escapeHTML(map.mapPhoneNumber ?? '')}
(map.mapLatitude && map.mapLongitude </td><td class="has-text-centered">
? '<span data-tooltip="Has Geographic Coordinates"><i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i></span>' ${
: '') + map.mapLatitude && map.mapLongitude
'</td>' + ? `<span data-tooltip="Has Geographic Coordinates">
'<td class="has-text-centered">' + <i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i>
((map.mapSVG ?? '') === '' </span>`
: ''
}
</td><td class="has-text-centered">
${
(map.mapSVG ?? '') === ''
? '' ? ''
: '<span data-tooltip="Has Image"><i class="fas fa-image" aria-label="Has Image"></i></span>') + : '<span data-tooltip="Has Image"><i class="fas fa-image" aria-label="Has Image"></i></span>'
'</td>' + }
`<td class="has-text-right"> </td><td class="has-text-right">
<a href="${ <a href="${los.urlPrefix}/lots?mapId=${map.mapId}">${map.lotCount}</a>
los.urlPrefix </td>
}/lots?mapId=${map.mapId!}">${map.lotCount!}</a> </tr>`
</td>` +
'</tr>'
) )
} }
searchResultsContainerElement.innerHTML = '' searchResultsContainerElement.innerHTML = ''
if (searchResultCount === 0) { if (searchResultCount === 0) {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<div class="message is-info"> searchResultsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no ${los.escapedAliases.maps} that meet the search criteria.</p> <p class="message-body">There are no ${los.escapedAliases.maps} that meet the search criteria.</p>
</div>` </div>`
@ -116,6 +126,7 @@ declare const cityssm: cityssmGlobal
searchResultsTableElement.className = searchResultsTableElement.className =
'table is-fullwidth is-striped is-hoverable has-sticky-header' 'table is-fullwidth is-striped is-hoverable has-sticky-header'
// eslint-disable-next-line no-unsanitized/property
searchResultsTableElement.innerHTML = `<thead><tr> searchResultsTableElement.innerHTML = `<thead><tr>
<th>${los.escapedAliases.Map}</th> <th>${los.escapedAliases.Map}</th>
<th>Address</th> <th>Address</th>
@ -134,8 +145,8 @@ declare const cityssm: cityssmGlobal
searchFilterElement.addEventListener('keyup', renderResults) searchFilterElement.addEventListener('keyup', renderResults)
document document
.querySelector('#form--searchFilters')! .querySelector('#form--searchFilters')
.addEventListener('submit', (formEvent) => { ?.addEventListener('submit', (formEvent) => {
formEvent.preventDefault() formEvent.preventDefault()
renderResults() renderResults()
}) })

View File

@ -1,5 +1,6 @@
"use strict"; "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 }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
@ -8,7 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const workOrderMilestoneDateStringElement = workOrderSearchFiltersFormElement.querySelector('#searchFilter--workOrderMilestoneDateString'); const workOrderMilestoneDateStringElement = workOrderSearchFiltersFormElement.querySelector('#searchFilter--workOrderMilestoneDateString');
const milestoneCalendarContainerElement = document.querySelector('#container--milestoneCalendar'); const milestoneCalendarContainerElement = document.querySelector('#container--milestoneCalendar');
function renderMilestones(workOrderMilestones) { function renderMilestones(workOrderMilestones) {
var _a, _b, _c, _d, _e, _f, _g, _h; var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
if (workOrderMilestones.length === 0) { if (workOrderMilestones.length === 0) {
milestoneCalendarContainerElement.innerHTML = `<div class="message is-info"> milestoneCalendarContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no milestones that meet the search criteria.</p> <p class="message-body">There are no milestones that meet the search criteria.</p>
@ -27,11 +28,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
currentPanelElement = document.createElement('div'); currentPanelElement = document.createElement('div');
currentPanelElement.className = 'panel'; currentPanelElement.className = 'panel';
currentPanelElement.innerHTML = `<h2 class="panel-heading"> currentPanelElement.innerHTML = `<h2 class="panel-heading">
${milestone.workOrderMilestoneDate === 0 ${cityssm.escapeHTML(milestone.workOrderMilestoneDate === 0
? 'No Set Date' ? 'No Set Date'
: milestone.workOrderMilestoneDateString} : (_a = milestone.workOrderMilestoneDateString) !== null && _a !== void 0 ? _a : '')}
</h2>`; </h2>`;
currentPanelDateString = milestone.workOrderMilestoneDateString; currentPanelDateString = (_b = milestone.workOrderMilestoneDateString) !== null && _b !== void 0 ? _b : '';
} }
const panelBlockElement = document.createElement('div'); const panelBlockElement = document.createElement('div');
panelBlockElement.className = 'panel-block is-block'; panelBlockElement.className = 'panel-block is-block';
@ -41,70 +42,57 @@ Object.defineProperty(exports, "__esModule", { value: true });
panelBlockElement.classList.add('has-background-warning-light'); panelBlockElement.classList.add('has-background-warning-light');
} }
let lotOccupancyHTML = ''; let lotOccupancyHTML = '';
for (const lot of milestone.workOrderLots) { for (const lot of (_c = milestone.workOrderLots) !== null && _c !== void 0 ? _c : []) {
lotOccupancyHTML += `<li class="has-tooltip-left" lotOccupancyHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML((_a = lot.mapName) !== null && _a !== void 0 ? _a : '')}"> data-tooltip="${cityssm.escapeHTML((_d = lot.mapName) !== null && _d !== void 0 ? _d : '')}">
<span class="fa-li"> <span class="fa-li">
<i class="fas fa-vector-square" <i class="fas fa-vector-square"
aria-label="${los.escapedAliases.Lot}"></i> aria-label="${los.escapedAliases.Lot}"></i>
</span> </span>
${cityssm.escapeHTML((_b = lot.lotName) !== null && _b !== void 0 ? _b : '')} ${cityssm.escapeHTML((_e = lot.lotName) !== null && _e !== void 0 ? _e : '')}
</li>`; </li>`;
} }
for (const lotOccupancy of milestone.workOrderLotOccupancies) { for (const lotOccupancy of (_f = milestone.workOrderLotOccupancies) !== null && _f !== void 0 ? _f : []) {
for (const occupant of lotOccupancy.lotOccupancyOccupants) { for (const occupant of (_g = lotOccupancy.lotOccupancyOccupants) !== null && _g !== void 0 ? _g : []) {
lotOccupancyHTML += `<li class="has-tooltip-left" lotOccupancyHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML((_c = occupant.lotOccupantType) !== null && _c !== void 0 ? _c : '')}"> data-tooltip="${cityssm.escapeHTML((_h = occupant.lotOccupantType) !== null && _h !== void 0 ? _h : '')}">
<span class="fa-li"> <span class="fa-li">
<i class="fas fa-user" <i class="fas fa-user"
aria-label="${los.escapedAliases.Occupancy}"></i> aria-label="${los.escapedAliases.Occupancy}"></i>
</span> </span>
${cityssm.escapeHTML((_d = occupant.occupantName) !== null && _d !== void 0 ? _d : '')} ${cityssm.escapeHTML((_j = occupant.occupantName) !== null && _j !== void 0 ? _j : '')}
${cityssm.escapeHTML((_e = occupant.occupantFamilyName) !== null && _e !== void 0 ? _e : '')} ${cityssm.escapeHTML((_k = occupant.occupantFamilyName) !== null && _k !== void 0 ? _k : '')}
</li>`; </li>`;
} }
} }
panelBlockElement.innerHTML = // eslint-disable-next-line no-unsanitized/property
'<div class="columns">' + panelBlockElement.innerHTML = `<div class="columns">
('<div class="column is-narrow">' + <div class="column is-narrow">
'<span class="icon is-small">' + <span class="icon is-small">
(milestone.workOrderMilestoneCompletionDate ${milestone.workOrderMilestoneCompletionDate
? '<i class="fas fa-check" aria-label="Completed"></i>' ? '<i class="fas fa-check" aria-label="Completed"></i>'
: '<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>') + : '<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>'}
'</span>' + </span>
'</div>') + </div><div class="column">
('<div class="column">' + ${milestone.workOrderMilestoneTime === 0
(milestone.workOrderMilestoneTime === 0
? '' ? ''
: milestone.workOrderMilestoneTimePeriodString + '<br />') + : `${milestone.workOrderMilestoneTimePeriodString}<br />`}
(milestone.workOrderMilestoneTypeId ${milestone.workOrderMilestoneTypeId
? '<strong>' + ? `<strong>${cityssm.escapeHTML((_l = milestone.workOrderMilestoneType) !== null && _l !== void 0 ? _l : '')}</strong><br />`
cityssm.escapeHTML(milestone.workOrderMilestoneType) + : ''}
'</strong><br />' <span class="is-size-7">
: '') + ${cityssm.escapeHTML((_m = milestone.workOrderMilestoneDescription) !== null && _m !== void 0 ? _m : '')}
'<span class="is-size-7">' + </span>
cityssm.escapeHTML(milestone.workOrderMilestoneDescription) + </div><div class="column">
'</span>' + <i class="fas fa-circle" style="color:${los.getRandomColor((_o = milestone.workOrderNumber) !== null && _o !== void 0 ? _o : '')}" aria-hidden="true"></i>
'</div>') + <a class="has-text-weight-bold" href="${los.getWorkOrderURL(milestone.workOrderId)}">
('<div class="column">' + ${cityssm.escapeHTML((_p = milestone.workOrderNumber) !== null && _p !== void 0 ? _p : '')}
'<i class="fas fa-circle" style="color:' + </a><br />
los.getRandomColor((_f = milestone.workOrderNumber) !== null && _f !== void 0 ? _f : '') + <span class="is-size-7">${cityssm.escapeHTML((_q = milestone.workOrderDescription) !== null && _q !== void 0 ? _q : '')}</span>
'" aria-hidden="true"></i>' + </div><div class="column is-size-7">
' <a class="has-text-weight-bold" href="' + ${lotOccupancyHTML === ''
los.getWorkOrderURL(milestone.workOrderId) +
'">' +
cityssm.escapeHTML((_g = milestone.workOrderNumber) !== null && _g !== void 0 ? _g : '') +
'</a><br />' +
'<span class="is-size-7">' +
cityssm.escapeHTML((_h = milestone.workOrderDescription) !== null && _h !== void 0 ? _h : '') +
'</span>' +
'</div>') +
('<div class="column is-size-7">' +
(lotOccupancyHTML === ''
? '' ? ''
: '<ul class="fa-ul ml-4">' + lotOccupancyHTML + '</ul>') + : '<ul class="fa-ul ml-4">' + lotOccupancyHTML + '</ul>'}</div></div>`;
'</div>') +
'</div>';
currentPanelElement.append(panelBlockElement); currentPanelElement.append(panelBlockElement);
} }
milestoneCalendarContainerElement.append(currentPanelElement); milestoneCalendarContainerElement.append(currentPanelElement);
@ -113,14 +101,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
if (event) { if (event) {
event.preventDefault(); event.preventDefault();
} }
// eslint-disable-next-line no-unsanitized/property
milestoneCalendarContainerElement.innerHTML = los.getLoadingParagraphHTML('Loading Milestones...'); milestoneCalendarContainerElement.innerHTML = los.getLoadingParagraphHTML('Loading Milestones...');
cityssm.postJSON(los.urlPrefix + '/workOrders/doGetWorkOrderMilestones', workOrderSearchFiltersFormElement, (responseJSON) => { cityssm.postJSON(`${los.urlPrefix}/workOrders/doGetWorkOrderMilestones`, workOrderSearchFiltersFormElement, (responseJSON) => {
renderMilestones(responseJSON.workOrderMilestones); renderMilestones(responseJSON.workOrderMilestones);
}); });
} }
workOrderMilestoneDateFilterElement.addEventListener('change', () => { workOrderMilestoneDateFilterElement.addEventListener('change', () => {
workOrderMilestoneDateStringElement.closest('fieldset').disabled = ;
workOrderMilestoneDateFilterElement.value !== 'date'; workOrderMilestoneDateStringElement.closest('fieldset').disabled = workOrderMilestoneDateFilterElement.value !== 'date';
getMilestones(); getMilestones();
}); });
los.initializeDatePickers(workOrderSearchFiltersFormElement); los.initializeDatePickers(workOrderSearchFiltersFormElement);

View File

@ -1,12 +1,16 @@
/* 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 recordTypes from '../types/recordTypes' import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type * as globalTypes from '../types/globalTypes'
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types' import type { LOS } from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const workOrderSearchFiltersFormElement = document.querySelector( const workOrderSearchFiltersFormElement = document.querySelector(
'#form--searchFilters' '#form--searchFilters'
@ -53,14 +57,14 @@ declare const cityssm: cityssmGlobal
currentPanelElement.className = 'panel' currentPanelElement.className = 'panel'
currentPanelElement.innerHTML = `<h2 class="panel-heading"> currentPanelElement.innerHTML = `<h2 class="panel-heading">
${ ${cityssm.escapeHTML(
milestone.workOrderMilestoneDate === 0 milestone.workOrderMilestoneDate === 0
? 'No Set Date' ? 'No Set Date'
: milestone.workOrderMilestoneDateString! : milestone.workOrderMilestoneDateString ?? ''
} )}
</h2>` </h2>`
currentPanelDateString = milestone.workOrderMilestoneDateString! currentPanelDateString = milestone.workOrderMilestoneDateString ?? ''
} }
const panelBlockElement = document.createElement('div') const panelBlockElement = document.createElement('div')
@ -77,7 +81,7 @@ declare const cityssm: cityssmGlobal
let lotOccupancyHTML = '' let lotOccupancyHTML = ''
for (const lot of milestone.workOrderLots!) { for (const lot of milestone.workOrderLots ?? []) {
lotOccupancyHTML += `<li class="has-tooltip-left" lotOccupancyHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML(lot.mapName ?? '')}"> data-tooltip="${cityssm.escapeHTML(lot.mapName ?? '')}">
<span class="fa-li"> <span class="fa-li">
@ -88,8 +92,8 @@ declare const cityssm: cityssmGlobal
</li>` </li>`
} }
for (const lotOccupancy of milestone.workOrderLotOccupancies!) { for (const lotOccupancy of milestone.workOrderLotOccupancies ?? []) {
for (const occupant of lotOccupancy.lotOccupancyOccupants!) { for (const occupant of lotOccupancy.lotOccupancyOccupants ?? []) {
lotOccupancyHTML += `<li class="has-tooltip-left" lotOccupancyHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML( data-tooltip="${cityssm.escapeHTML(
occupant.lotOccupantType ?? '' occupant.lotOccupantType ?? ''
@ -104,51 +108,46 @@ declare const cityssm: cityssmGlobal
} }
} }
panelBlockElement.innerHTML = // eslint-disable-next-line no-unsanitized/property
'<div class="columns">' + panelBlockElement.innerHTML = `<div class="columns">
('<div class="column is-narrow">' + <div class="column is-narrow">
'<span class="icon is-small">' + <span class="icon is-small">
(milestone.workOrderMilestoneCompletionDate ${
milestone.workOrderMilestoneCompletionDate
? '<i class="fas fa-check" aria-label="Completed"></i>' ? '<i class="fas fa-check" aria-label="Completed"></i>'
: '<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>') + : '<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>'
'</span>' + }
'</div>') + </span>
('<div class="column">' + </div><div class="column">
(milestone.workOrderMilestoneTime === 0 ${
milestone.workOrderMilestoneTime === 0
? '' ? ''
: milestone.workOrderMilestoneTimePeriodString! + '<br />') + : `${milestone.workOrderMilestoneTimePeriodString}<br />`
(milestone.workOrderMilestoneTypeId }
? '<strong>' + ${
cityssm.escapeHTML(milestone.workOrderMilestoneType!) + milestone.workOrderMilestoneTypeId
'</strong><br />' ? `<strong>${cityssm.escapeHTML(milestone.workOrderMilestoneType ?? '')}</strong><br />`
: '') + : ''
'<span class="is-size-7">' + }
cityssm.escapeHTML(milestone.workOrderMilestoneDescription!) + <span class="is-size-7">
'</span>' + ${cityssm.escapeHTML(milestone.workOrderMilestoneDescription ?? '')}
'</div>') + </span>
('<div class="column">' + </div><div class="column">
'<i class="fas fa-circle" style="color:' + <i class="fas fa-circle" style="color:${los.getRandomColor(milestone.workOrderNumber ?? '')}" aria-hidden="true"></i>
los.getRandomColor(milestone.workOrderNumber ?? '') + <a class="has-text-weight-bold" href="${los.getWorkOrderURL(milestone.workOrderId)}">
'" aria-hidden="true"></i>' + ${cityssm.escapeHTML(milestone.workOrderNumber ?? '')}
' <a class="has-text-weight-bold" href="' + </a><br />
los.getWorkOrderURL(milestone.workOrderId) + <span class="is-size-7">${cityssm.escapeHTML(milestone.workOrderDescription ?? '')}</span>
'">' + </div><div class="column is-size-7">
cityssm.escapeHTML(milestone.workOrderNumber ?? '') + ${
'</a><br />' + lotOccupancyHTML === ''
'<span class="is-size-7">' +
cityssm.escapeHTML(milestone.workOrderDescription ?? '') +
'</span>' +
'</div>') +
('<div class="column is-size-7">' +
(lotOccupancyHTML === ''
? '' ? ''
: '<ul class="fa-ul ml-4">' + lotOccupancyHTML + '</ul>') + : '<ul class="fa-ul ml-4">' + lotOccupancyHTML + '</ul>'
'</div>') + }</div></div>`
'</div>'
;(currentPanelElement as HTMLElement).append(panelBlockElement) ;(currentPanelElement as HTMLElement).append(panelBlockElement)
} }
milestoneCalendarContainerElement.append(currentPanelElement!) milestoneCalendarContainerElement.append(currentPanelElement as HTMLElement)
} }
function getMilestones(event?: Event): void { function getMilestones(event?: Event): void {
@ -156,12 +155,13 @@ declare const cityssm: cityssmGlobal
event.preventDefault() event.preventDefault()
} }
// eslint-disable-next-line no-unsanitized/property
milestoneCalendarContainerElement.innerHTML = los.getLoadingParagraphHTML( milestoneCalendarContainerElement.innerHTML = los.getLoadingParagraphHTML(
'Loading Milestones...' 'Loading Milestones...'
) )
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/workOrders/doGetWorkOrderMilestones', `${los.urlPrefix}/workOrders/doGetWorkOrderMilestones`,
workOrderSearchFiltersFormElement, workOrderSearchFiltersFormElement,
(responseJSON) => { (responseJSON) => {
renderMilestones( renderMilestones(
@ -176,8 +176,11 @@ declare const cityssm: cityssmGlobal
} }
workOrderMilestoneDateFilterElement.addEventListener('change', () => { workOrderMilestoneDateFilterElement.addEventListener('change', () => {
workOrderMilestoneDateStringElement.closest('fieldset')!.disabled = ;(
workOrderMilestoneDateFilterElement.value !== 'date' workOrderMilestoneDateStringElement.closest(
'fieldset'
) as HTMLFieldSetElement
).disabled = workOrderMilestoneDateFilterElement.value !== 'date'
getMilestones() getMilestones()
}) })

View File

@ -1,11 +1,11 @@
// eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair // eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable unicorn/prefer-module */ /* eslint-disable unicorn/prefer-module */
import type * as globalTypes from '../types/globalTypes.js' import type { LOS } from '../types/globalTypes.js'
declare const exports: Record<string, unknown> declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const workOrderTypeIdsElement = document.querySelector( const workOrderTypeIdsElement = document.querySelector(
'#icsFilters--workOrderTypeIds' '#icsFilters--workOrderTypeIds'

View File

@ -1,5 +1,6 @@
"use strict"; "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 }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
const los = exports.los; const los = exports.los;
@ -10,7 +11,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10); const limit = Number.parseInt(document.querySelector('#searchFilter--limit').value, 10);
const offsetElement = document.querySelector('#searchFilter--offset'); const offsetElement = document.querySelector('#searchFilter--offset');
function renderWorkOrders(rawResponseJSON) { function renderWorkOrders(rawResponseJSON) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l; var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
const responseJSON = rawResponseJSON; const responseJSON = rawResponseJSON;
if (responseJSON.workOrders.length === 0) { if (responseJSON.workOrders.length === 0) {
searchResultsContainerElement.innerHTML = `<div class="message is-info"> searchResultsContainerElement.innerHTML = `<div class="message is-info">
@ -21,101 +22,86 @@ Object.defineProperty(exports, "__esModule", { value: true });
const resultsTbodyElement = document.createElement('tbody'); const resultsTbodyElement = document.createElement('tbody');
for (const workOrder of responseJSON.workOrders) { for (const workOrder of responseJSON.workOrders) {
let relatedHTML = ''; let relatedHTML = '';
for (const lot of workOrder.workOrderLots) { for (const lot of (_a = workOrder.workOrderLots) !== null && _a !== void 0 ? _a : []) {
relatedHTML += `<li class="has-tooltip-left" relatedHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML((_a = lot.mapName) !== null && _a !== void 0 ? _a : '')}"> data-tooltip="${cityssm.escapeHTML((_b = lot.mapName) !== null && _b !== void 0 ? _b : '')}">
<span class="fa-li"> <span class="fa-li">
<i class="fas fa-fw fa-vector-square" <i class="fas fa-fw fa-vector-square"
aria-label="${los.escapedAliases.Lot}"></i> aria-label="${los.escapedAliases.Lot}"></i>
</span> </span>
${cityssm.escapeHTML(((_b = lot.lotName) !== null && _b !== void 0 ? _b : '') === '' ${cityssm.escapeHTML(((_c = lot.lotName) !== null && _c !== void 0 ? _c : '') === ''
? '(No ' + los.escapedAliases.Lot + ' Name)' ? `(No ${los.escapedAliases.Lot} Name)`
: lot.lotName)} : (_d = lot.lotName) !== null && _d !== void 0 ? _d : '')}
</li>`; </li>`;
} }
for (const occupancy of workOrder.workOrderLotOccupancies) { for (const occupancy of (_e = workOrder.workOrderLotOccupancies) !== null && _e !== void 0 ? _e : []) {
for (const occupant of occupancy.lotOccupancyOccupants) { for (const occupant of (_f = occupancy.lotOccupancyOccupants) !== null && _f !== void 0 ? _f : []) {
relatedHTML += `<li class="has-tooltip-left" relatedHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML((_c = occupant.lotOccupantType) !== null && _c !== void 0 ? _c : '')}"> data-tooltip="${cityssm.escapeHTML((_g = occupant.lotOccupantType) !== null && _g !== void 0 ? _g : '')}">
<span class="fa-li"> <span class="fa-li">
<i class="fas fa-fw fa-${cityssm.escapeHTML(((_d = occupant.fontAwesomeIconClass) !== null && _d !== void 0 ? _d : '') === '' <i class="fas fa-fw fa-${cityssm.escapeHTML(((_h = occupant.fontAwesomeIconClass) !== null && _h !== void 0 ? _h : '') === ''
? 'user' ? 'user'
: occupant.fontAwesomeIconClass)}" aria-label="${los.escapedAliases.occupant}"></i></span> : (_j = occupant.fontAwesomeIconClass) !== null && _j !== void 0 ? _j : '')}" aria-label="${los.escapedAliases.occupant}"></i></span>
${cityssm.escapeHTML(((_e = occupant.occupantName) !== null && _e !== void 0 ? _e : '') === '' && ${cityssm.escapeHTML(((_k = occupant.occupantName) !== null && _k !== void 0 ? _k : '') === '' &&
((_f = occupant.occupantFamilyName) !== null && _f !== void 0 ? _f : '') === '' ((_l = occupant.occupantFamilyName) !== null && _l !== void 0 ? _l : '') === ''
? '(No Name)' ? '(No Name)'
: occupant.occupantName + ' ' + occupant.occupantFamilyName)} : `${occupant.occupantName} ${occupant.occupantFamilyName}`)}
</li>`; </li>`;
} }
} }
resultsTbodyElement.insertAdjacentHTML('beforeend', '<tr>' + // eslint-disable-next-line no-unsanitized/method
('<td>' + resultsTbodyElement.insertAdjacentHTML('beforeend', `<tr>
'<a class="has-text-weight-bold" href="' + <td>
los.getWorkOrderURL(workOrder.workOrderId) + <a class="has-text-weight-bold" href="${los.getWorkOrderURL(workOrder.workOrderId)}">
'">' + ${((_m = workOrder.workOrderNumber) === null || _m === void 0 ? void 0 : _m.trim()) === ''
(workOrder.workOrderNumber.trim() === ''
? '(No Number)' ? '(No Number)'
: cityssm.escapeHTML((_g = workOrder.workOrderNumber) !== null && _g !== void 0 ? _g : '')) + : cityssm.escapeHTML((_o = workOrder.workOrderNumber) !== null && _o !== void 0 ? _o : '')}
'</a>' + </a>
'</td>') + </td><td>
`<td> ${cityssm.escapeHTML((_p = workOrder.workOrderType) !== null && _p !== void 0 ? _p : '')}<br />
${cityssm.escapeHTML((_h = workOrder.workOrderType) !== null && _h !== void 0 ? _h : '')}<br />
<span class="is-size-7"> <span class="is-size-7">
${cityssm.escapeHTML((_j = workOrder.workOrderDescription) !== null && _j !== void 0 ? _j : '')} ${cityssm.escapeHTML((_q = workOrder.workOrderDescription) !== null && _q !== void 0 ? _q : '')}
</span> </span>
</td>` + </td><td>
('<td>' + ${relatedHTML === ''
(relatedHTML === ''
? '' ? ''
: '<ul class="fa-ul ml-5 is-size-7">' + relatedHTML + '</ul>') + : '<ul class="fa-ul ml-5 is-size-7">' + relatedHTML + '</ul>'}
'</td>') + </td><td>
('<td>' + <ul class="fa-ul ml-5 is-size-7">
'<ul class="fa-ul ml-5 is-size-7">' + <li class="has-tooltip-left"
`<li class="has-tooltip-left"
data-tooltip="${los.escapedAliases.WorkOrderOpenDate}"> data-tooltip="${los.escapedAliases.WorkOrderOpenDate}">
<span class="fa-li"> <span class="fa-li">
<i class="fas fa-fw fa-play" <i class="fas fa-fw fa-play" aria-label="${los.escapedAliases.WorkOrderOpenDate}"></i>
aria-label="${los.escapedAliases.WorkOrderOpenDate}"></i>
</span> </span>
${workOrder.workOrderOpenDateString} ${workOrder.workOrderOpenDateString}
</li>` + </li>
('<li class="has-tooltip-left" data-tooltip="' + <li class="has-tooltip-left" data-tooltip="${los.escapedAliases.WorkOrderCloseDate}">
los.escapedAliases.WorkOrderCloseDate + <span class="fa-li">
'">' + <i class="fas fa-fw fa-stop" aria-label="${los.escapedAliases.WorkOrderCloseDate}"></i>
'<span class="fa-li">' + </span>
'<i class="fas fa-fw fa-stop" aria-label="' + ${workOrder.workOrderCloseDate
los.escapedAliases.WorkOrderCloseDate +
'"></i></span> ' +
(workOrder.workOrderCloseDate
? workOrder.workOrderCloseDateString ? workOrder.workOrderCloseDateString
: '<span class="has-text-grey">(No ' + : `<span class="has-text-grey">(No ${los.escapedAliases.WorkOrderCloseDate})</span>`}
los.escapedAliases.WorkOrderCloseDate + </li>
')</span>') + </ul>
'</li>') + </td><td>
'</ul>' + ${workOrder.workOrderMilestoneCount === 0
'</td>') +
('<td>' +
(workOrder.workOrderMilestoneCount === 0
? '-' ? '-'
: workOrder.workOrderMilestoneCompletionCount.toString() + : ((_r = workOrder.workOrderMilestoneCompletionCount) !== null && _r !== void 0 ? _r : '').toString() +
' / ' + ' / ' +
workOrder.workOrderMilestoneCount.toString()) + ((_s = workOrder.workOrderMilestoneCount) !== null && _s !== void 0 ? _s : '').toString()}
'</td>') + </td>
(workOrderPrints.length > 0 ${workOrderPrints.length > 0
? '<td>' + ? `<td>
'<a class="button is-small" data-tooltip="Print" href="' + <a class="button is-small" data-tooltip="Print"
los.urlPrefix + href="${los.urlPrefix}/print/${workOrderPrints[0]}/?workOrderId=${workOrder.workOrderId.toString()}"
'/print/' + target="_blank">
workOrderPrints[0] + <i class="fas fa-print" aria-label="Print"></i>
'/?workOrderId=' + </a>
workOrder.workOrderId.toString() + </td>`
'" target="_blank">' + : ''}</tr>`);
'<i class="fas fa-print" aria-label="Print"></i>' +
'</a>' +
'</td>'
: '') +
'</tr>');
} }
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"> searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">
<thead><tr> <thead><tr>
<th>Work Order Number</th> <th>Work Order Number</th>
@ -126,18 +112,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
${workOrderPrints.length > 0 ? '<th class="has-width-1"></th>' : ''} ${workOrderPrints.length > 0 ? '<th class="has-width-1"></th>' : ''}
</tr></thead> </tr></thead>
<table>`; <table>`;
// eslint-disable-next-line no-unsanitized/method
searchResultsContainerElement.insertAdjacentHTML('beforeend', los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count)); searchResultsContainerElement.insertAdjacentHTML('beforeend', los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count));
searchResultsContainerElement (_t = searchResultsContainerElement
.querySelector('table') .querySelector('table')) === null || _t === void 0 ? void 0 : _t.append(resultsTbodyElement);
.append(resultsTbodyElement); (_u = searchResultsContainerElement
(_k = searchResultsContainerElement .querySelector("button[data-page='previous']")) === null || _u === void 0 ? void 0 : _u.addEventListener('click', previousAndGetWorkOrders);
.querySelector("button[data-page='previous']")) === null || _k === void 0 ? void 0 : _k.addEventListener('click', previousAndGetWorkOrders); (_v = searchResultsContainerElement
(_l = searchResultsContainerElement .querySelector("button[data-page='next']")) === null || _v === void 0 ? void 0 : _v.addEventListener('click', nextAndGetWorkOrders);
.querySelector("button[data-page='next']")) === null || _l === void 0 ? void 0 : _l.addEventListener('click', nextAndGetWorkOrders);
} }
function getWorkOrders() { function getWorkOrders() {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML('Loading Work Orders...'); searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML('Loading Work Orders...');
cityssm.postJSON(los.urlPrefix + '/workOrders/doSearchWorkOrders', searchFilterFormElement, renderWorkOrders); cityssm.postJSON(`${los.urlPrefix}/workOrders/doSearchWorkOrders`, searchFilterFormElement, renderWorkOrders);
} }
function resetOffsetAndGetWorkOrders() { function resetOffsetAndGetWorkOrders() {
offsetElement.value = '0'; offsetElement.value = '0';
@ -158,6 +145,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
searchFilterFormElement.addEventListener('submit', (formEvent) => { searchFilterFormElement.addEventListener('submit', (formEvent) => {
formEvent.preventDefault(); formEvent.preventDefault();
}); });
// eslint-disable-next-line no-secrets/no-secrets
/* /*
const workOrderOpenDateStringElement = document.querySelector("#searchFilter--workOrderOpenDateString") as HTMLInputElement; const workOrderOpenDateStringElement = document.querySelector("#searchFilter--workOrderOpenDateString") as HTMLInputElement;

View File

@ -1,14 +1,18 @@
/* 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 recordTypes from '../types/recordTypes' import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types.js'
import type * as globalTypes from '../types/globalTypes'
import type { cityssmGlobal } from '@cityssm/bulma-webapp-js/src/types' import type { LOS } from '../types/globalTypes.js'
import type * as recordTypes from '../types/recordTypes.js'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
;(() => {
const los = exports.los as globalTypes.LOS
const workOrderPrints: string[] = exports.workOrderPrints declare const exports: Record<string, unknown>
;(() => {
const los = exports.los as LOS
const workOrderPrints = exports.workOrderPrints as string[]
const searchFilterFormElement = document.querySelector( const searchFilterFormElement = document.querySelector(
'#form--searchFilters' '#form--searchFilters'
@ -49,7 +53,7 @@ declare const cityssm: cityssmGlobal
for (const workOrder of responseJSON.workOrders) { for (const workOrder of responseJSON.workOrders) {
let relatedHTML = '' let relatedHTML = ''
for (const lot of workOrder.workOrderLots!) { for (const lot of workOrder.workOrderLots ?? []) {
relatedHTML += `<li class="has-tooltip-left" relatedHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML(lot.mapName ?? '')}"> data-tooltip="${cityssm.escapeHTML(lot.mapName ?? '')}">
<span class="fa-li"> <span class="fa-li">
@ -58,14 +62,14 @@ declare const cityssm: cityssmGlobal
</span> </span>
${cityssm.escapeHTML( ${cityssm.escapeHTML(
(lot.lotName ?? '') === '' (lot.lotName ?? '') === ''
? '(No ' + los.escapedAliases.Lot + ' Name)' ? `(No ${los.escapedAliases.Lot} Name)`
: lot.lotName! : lot.lotName ?? ''
)} )}
</li>` </li>`
} }
for (const occupancy of workOrder.workOrderLotOccupancies!) { for (const occupancy of workOrder.workOrderLotOccupancies ?? []) {
for (const occupant of occupancy.lotOccupancyOccupants!) { for (const occupant of occupancy.lotOccupancyOccupants ?? []) {
relatedHTML += `<li class="has-tooltip-left" relatedHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML( data-tooltip="${cityssm.escapeHTML(
occupant.lotOccupantType ?? '' occupant.lotOccupantType ?? ''
@ -74,90 +78,87 @@ declare const cityssm: cityssmGlobal
<i class="fas fa-fw fa-${cityssm.escapeHTML( <i class="fas fa-fw fa-${cityssm.escapeHTML(
(occupant.fontAwesomeIconClass ?? '') === '' (occupant.fontAwesomeIconClass ?? '') === ''
? 'user' ? 'user'
: occupant.fontAwesomeIconClass! : occupant.fontAwesomeIconClass ?? ''
)}" aria-label="${los.escapedAliases.occupant}"></i></span> )}" aria-label="${los.escapedAliases.occupant}"></i></span>
${cityssm.escapeHTML( ${cityssm.escapeHTML(
(occupant.occupantName ?? '') === '' && (occupant.occupantName ?? '') === '' &&
(occupant.occupantFamilyName ?? '') === '' (occupant.occupantFamilyName ?? '') === ''
? '(No Name)' ? '(No Name)'
: occupant.occupantName! + ' ' + occupant.occupantFamilyName! : `${occupant.occupantName} ${occupant.occupantFamilyName}`
)} )}
</li>` </li>`
} }
} }
// eslint-disable-next-line no-unsanitized/method
resultsTbodyElement.insertAdjacentHTML( resultsTbodyElement.insertAdjacentHTML(
'beforeend', 'beforeend',
'<tr>' + `<tr>
('<td>' + <td>
'<a class="has-text-weight-bold" href="' + <a class="has-text-weight-bold" href="${los.getWorkOrderURL(workOrder.workOrderId)}">
los.getWorkOrderURL(workOrder.workOrderId) + ${
'">' + workOrder.workOrderNumber?.trim() === ''
(workOrder.workOrderNumber!.trim() === ''
? '(No Number)' ? '(No Number)'
: cityssm.escapeHTML(workOrder.workOrderNumber ?? '')) + : cityssm.escapeHTML(workOrder.workOrderNumber ?? '')
'</a>' + }
'</td>') + </a>
`<td> </td><td>
${cityssm.escapeHTML(workOrder.workOrderType ?? '')}<br /> ${cityssm.escapeHTML(workOrder.workOrderType ?? '')}<br />
<span class="is-size-7"> <span class="is-size-7">
${cityssm.escapeHTML(workOrder.workOrderDescription ?? '')} ${cityssm.escapeHTML(workOrder.workOrderDescription ?? '')}
</span> </span>
</td>` + </td><td>
('<td>' + ${
(relatedHTML === '' relatedHTML === ''
? '' ? ''
: '<ul class="fa-ul ml-5 is-size-7">' + relatedHTML + '</ul>') + : '<ul class="fa-ul ml-5 is-size-7">' + relatedHTML + '</ul>'
'</td>') + }
('<td>' + </td><td>
'<ul class="fa-ul ml-5 is-size-7">' + <ul class="fa-ul ml-5 is-size-7">
`<li class="has-tooltip-left" <li class="has-tooltip-left"
data-tooltip="${los.escapedAliases.WorkOrderOpenDate}"> data-tooltip="${los.escapedAliases.WorkOrderOpenDate}">
<span class="fa-li"> <span class="fa-li">
<i class="fas fa-fw fa-play" <i class="fas fa-fw fa-play" aria-label="${los.escapedAliases.WorkOrderOpenDate}"></i>
aria-label="${los.escapedAliases.WorkOrderOpenDate}"></i>
</span> </span>
${workOrder.workOrderOpenDateString!} ${workOrder.workOrderOpenDateString}
</li>` + </li>
('<li class="has-tooltip-left" data-tooltip="' + <li class="has-tooltip-left" data-tooltip="${los.escapedAliases.WorkOrderCloseDate}">
los.escapedAliases.WorkOrderCloseDate + <span class="fa-li">
'">' + <i class="fas fa-fw fa-stop" aria-label="${los.escapedAliases.WorkOrderCloseDate}"></i>
'<span class="fa-li">' + </span>
'<i class="fas fa-fw fa-stop" aria-label="' + ${
los.escapedAliases.WorkOrderCloseDate + workOrder.workOrderCloseDate
'"></i></span> ' + ? workOrder.workOrderCloseDateString
(workOrder.workOrderCloseDate : `<span class="has-text-grey">(No ${los.escapedAliases.WorkOrderCloseDate})</span>`
? workOrder.workOrderCloseDateString! }
: '<span class="has-text-grey">(No ' + </li>
los.escapedAliases.WorkOrderCloseDate + </ul>
')</span>') + </td><td>
'</li>') + ${
'</ul>' + workOrder.workOrderMilestoneCount === 0
'</td>') +
('<td>' +
(workOrder.workOrderMilestoneCount === 0
? '-' ? '-'
: workOrder.workOrderMilestoneCompletionCount!.toString() + : (
workOrder.workOrderMilestoneCompletionCount ?? ''
).toString() +
' / ' + ' / ' +
workOrder.workOrderMilestoneCount!.toString()) + (workOrder.workOrderMilestoneCount ?? '').toString()
'</td>') + }
(workOrderPrints.length > 0 </td>
? '<td>' + ${
'<a class="button is-small" data-tooltip="Print" href="' + workOrderPrints.length > 0
los.urlPrefix + ? `<td>
'/print/' + <a class="button is-small" data-tooltip="Print"
workOrderPrints[0] + href="${los.urlPrefix}/print/${workOrderPrints[0]}/?workOrderId=${workOrder.workOrderId.toString()}"
'/?workOrderId=' + target="_blank">
workOrder.workOrderId!.toString() + <i class="fas fa-print" aria-label="Print"></i>
'" target="_blank">' + </a>
'<i class="fas fa-print" aria-label="Print"></i>' + </td>`
'</a>' + : ''
'</td>' }</tr>`
: '') +
'</tr>'
) )
} }
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"> searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">
<thead><tr> <thead><tr>
<th>Work Order Number</th> <th>Work Order Number</th>
@ -169,6 +170,7 @@ declare const cityssm: cityssmGlobal
</tr></thead> </tr></thead>
<table>` <table>`
// eslint-disable-next-line no-unsanitized/method
searchResultsContainerElement.insertAdjacentHTML( searchResultsContainerElement.insertAdjacentHTML(
'beforeend', 'beforeend',
los.getSearchResultsPagerHTML( los.getSearchResultsPagerHTML(
@ -179,8 +181,8 @@ declare const cityssm: cityssmGlobal
) )
searchResultsContainerElement searchResultsContainerElement
.querySelector('table')! .querySelector('table')
.append(resultsTbodyElement) ?.append(resultsTbodyElement)
searchResultsContainerElement searchResultsContainerElement
.querySelector("button[data-page='previous']") .querySelector("button[data-page='previous']")
@ -192,12 +194,13 @@ declare const cityssm: cityssmGlobal
} }
function getWorkOrders(): void { function getWorkOrders(): void {
// eslint-disable-next-line no-unsanitized/property
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML( searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(
'Loading Work Orders...' 'Loading Work Orders...'
) )
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/workOrders/doSearchWorkOrders', `${los.urlPrefix}/workOrders/doSearchWorkOrders`,
searchFilterFormElement, searchFilterFormElement,
renderWorkOrders renderWorkOrders
) )
@ -234,6 +237,7 @@ declare const cityssm: cityssmGlobal
formEvent.preventDefault() formEvent.preventDefault()
}) })
// eslint-disable-next-line no-secrets/no-secrets
/* /*
const workOrderOpenDateStringElement = document.querySelector("#searchFilter--workOrderOpenDateString") as HTMLInputElement; const workOrderOpenDateStringElement = document.querySelector("#searchFilter--workOrderOpenDateString") as HTMLInputElement;

View File

@ -1,14 +1,16 @@
"use strict"; "use strict";
/* eslint-disable unicorn/prefer-module, @typescript-eslint/no-non-null-assertion */ // eslint-disable-next-line @eslint-community/eslint-comments/disable-enable-pair
/* eslint-disable unicorn/prefer-module */
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
(() => { (() => {
var _a;
const los = exports.los; const los = exports.los;
const reopenWorkOrderButtonElement = document.querySelector('#button--reopenWorkOrder'); const reopenWorkOrderButtonElement = document.querySelector('#button--reopenWorkOrder');
if (reopenWorkOrderButtonElement !== null) { if (reopenWorkOrderButtonElement !== null) {
const workOrderId = reopenWorkOrderButtonElement.dataset.workOrderId; const workOrderId = (_a = reopenWorkOrderButtonElement.dataset.workOrderId) !== null && _a !== void 0 ? _a : '';
reopenWorkOrderButtonElement.addEventListener('click', () => { reopenWorkOrderButtonElement.addEventListener('click', () => {
function doReopen() { function doReopen() {
cityssm.postJSON(los.urlPrefix + '/workOrders/doReopenWorkOrder', { cityssm.postJSON(`${los.urlPrefix}/workOrders/doReopenWorkOrder`, {
workOrderId workOrderId
}, (rawResponseJSON) => { }, (rawResponseJSON) => {
var _a; var _a;

View File

@ -1,26 +1,28 @@
/* eslint-disable unicorn/prefer-module, @typescript-eslint/no-non-null-assertion */ // 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 { 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 { LOS } from '../types/globalTypes.js'
import type { BulmaJS } from '@cityssm/bulma-js/types'
declare const cityssm: cityssmGlobal declare const cityssm: cityssmGlobal
declare const bulmaJS: BulmaJS declare const bulmaJS: BulmaJS
declare const exports: Record<string, unknown>
;(() => { ;(() => {
const los = exports.los as globalTypes.LOS const los = exports.los as LOS
const reopenWorkOrderButtonElement: HTMLButtonElement | null = const reopenWorkOrderButtonElement: HTMLButtonElement | null =
document.querySelector('#button--reopenWorkOrder') document.querySelector('#button--reopenWorkOrder')
if (reopenWorkOrderButtonElement !== null) { if (reopenWorkOrderButtonElement !== null) {
const workOrderId = reopenWorkOrderButtonElement.dataset.workOrderId! const workOrderId = reopenWorkOrderButtonElement.dataset.workOrderId ?? ''
reopenWorkOrderButtonElement.addEventListener('click', () => { reopenWorkOrderButtonElement.addEventListener('click', () => {
function doReopen(): void { function doReopen(): void {
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/workOrders/doReopenWorkOrder', `${los.urlPrefix}/workOrders/doReopenWorkOrder`,
{ {
workOrderId workOrderId
}, },

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#form--searchFilters"),s=document.querySelector("#container--searchResults"),a=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),n=document.querySelector("#searchFilter--offset");function r(t){var n,r,o,l,d;if(0===t.lots.length)return void(s.innerHTML=`<div class="message is-info">\n <p class="message-body">There are no ${e.escapedAliases.lots} that meet the search criteria.</p>\n </div>`);const u=document.createElement("tbody");for(const s of t.lots)u.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.getLotURL(s.lotId)+'">'+cityssm.escapeHTML(null!==(n=s.lotName)&&void 0!==n?n:"")+'</a></td><td><a href="'+e.getMapURL(s.mapId)+'">'+(s.mapName?cityssm.escapeHTML(s.mapName):'<span class="has-text-grey">(No Name)</span>')+"</a></td><td>"+cityssm.escapeHTML(null!==(r=s.lotType)&&void 0!==r?r:"")+"</td><td>"+(s.lotStatusId?cityssm.escapeHTML(s.lotStatus):'<span class="has-text-grey">(No Status)</span>')+"<br />"+((null!==(o=s.lotOccupancyCount)&&void 0!==o?o:0)>0?'<span class="is-size-7">Currently Occupied</span>':"")+"</td></tr>");s.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">\n <thead><tr>\n <th>${e.escapedAliases.Lot}</th>\n <th>${e.escapedAliases.Map}</th>\n <th>${e.escapedAliases.Lot} Type</th>\n <th>Status</th>\n </tr></thead>\n <table>`,s.insertAdjacentHTML("beforeend",e.getSearchResultsPagerHTML(a,t.offset,t.count)),s.querySelector("table").append(u),null===(l=s.querySelector("button[data-page='previous']"))||void 0===l||l.addEventListener("click",c),null===(d=s.querySelector("button[data-page='next']"))||void 0===d||d.addEventListener("click",i)}function o(){s.innerHTML=e.getLoadingParagraphHTML(`Loading ${e.escapedAliases.Lots}...`),cityssm.postJSON(e.urlPrefix+"/lots/doSearchLots",t,r)}function l(){n.value="0",o()}function c(){n.value=Math.max(Number.parseInt(n.value,10)-a,0).toString(),o()}function i(){n.value=(Number.parseInt(n.value,10)+a).toString(),o()}const d=t.querySelectorAll("input, select");for(const e of d)e.addEventListener("change",l);t.addEventListener("submit",e=>{e.preventDefault()}),o()})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#form--searchFilters"),s=document.querySelector("#container--searchResults"),a=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),n=document.querySelector("#searchFilter--offset");function r(t){var n,r,o,l,d,u,p;const h=t;if(0===h.lots.length)return void(s.innerHTML=`<div class="message is-info">\n <p class="message-body">There are no ${e.escapedAliases.lots} that meet the search criteria.</p>\n </div>`);const m=document.createElement("tbody");for(const t of h.lots)m.insertAdjacentHTML("beforeend",`<tr>\n <td>\n <a class="has-text-weight-bold" href="${e.getLotURL(t.lotId)}">\n ${cityssm.escapeHTML(null!==(n=t.lotName)&&void 0!==n?n:"")}\n </a>\n </td><td>\n <a href="${e.getMapURL(t.mapId)}">\n ${t.mapName?cityssm.escapeHTML(t.mapName):'<span class="has-text-grey">(No Name)</span>'}\n </a>\n </td><td>\n ${cityssm.escapeHTML(null!==(r=t.lotType)&&void 0!==r?r:"")}\n </td><td>\n ${t.lotStatusId?cityssm.escapeHTML(null!==(o=t.lotStatus)&&void 0!==o?o:""):'<span class="has-text-grey">(No Status)</span>'}<br />\n ${(null!==(l=t.lotOccupancyCount)&&void 0!==l?l:0)>0?'<span class="is-size-7">Currently Occupied</span>':""}\n </td>\n </tr>`);s.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">\n <thead><tr>\n <th>${e.escapedAliases.Lot}</th>\n <th>${e.escapedAliases.Map}</th>\n <th>${e.escapedAliases.Lot} Type</th>\n <th>Status</th>\n </tr></thead>\n <table>`,s.insertAdjacentHTML("beforeend",e.getSearchResultsPagerHTML(a,h.offset,h.count)),null===(d=s.querySelector("table"))||void 0===d||d.append(m),null===(u=s.querySelector("button[data-page='previous']"))||void 0===u||u.addEventListener("click",c),null===(p=s.querySelector("button[data-page='next']"))||void 0===p||p.addEventListener("click",i)}function o(){s.innerHTML=e.getLoadingParagraphHTML(`Loading ${e.escapedAliases.Lots}...`),cityssm.postJSON(e.urlPrefix+"/lots/doSearchLots",t,r)}function l(){n.value="0",o()}function c(){n.value=Math.max(Number.parseInt(n.value,10)-a,0).toString(),o()}function i(){n.value=(Number.parseInt(n.value,10)+a).toString(),o()}const d=t.querySelectorAll("input, select");for(const e of d)e.addEventListener("change",l);t.addEventListener("submit",e=>{e.preventDefault()}),o()})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const t=exports.los,a=document.querySelector("#map--mapId").value,s=""===a,o=document.querySelector("#form--map");function l(){var e;t.setUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--map']"))||void 0===e||e.classList.remove("is-light")}o.addEventListener("submit",function(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/maps/"+(s?"doCreateMap":"doUpdateMap"),o,e=>{var a;const o=e;o.success?(function(){var e;t.clearUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--map']"))||void 0===e||e.classList.add("is-light")}(),s?window.location.href=t.getMapURL(o.mapId,!0):bulmaJS.alert({message:t.escapedAliases.Map+" Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating "+t.escapedAliases.Map,message:null!==(a=o.errorMessage)&&void 0!==a?a:"",contextualColorName:"danger"})})});const r=o.querySelectorAll("input, select");for(const e of r)e.addEventListener("change",l);null===(e=document.querySelector("#button--deleteMap"))||void 0===e||e.addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:"Delete "+t.escapedAliases.Map,message:`Are you sure you want to delete this ${t.escapedAliases.map} and all related ${t.escapedAliases.lots}?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${t.escapedAliases.Map}`,callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/maps/doDeleteMap",{mapId:a},e=>{var a;const s=e;s.success?window.location.href=t.getMapURL():bulmaJS.alert({title:"Error Deleting "+t.escapedAliases.Map,message:null!==(a=s.errorMessage)&&void 0!==a?a:"",contextualColorName:"danger"})})}}})})})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const t=exports.los,a=document.querySelector("#map--mapId").value,s=""===a,o=document.querySelector("#form--map");function l(){var e;t.setUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--map']"))||void 0===e||e.classList.remove("is-light")}o.addEventListener("submit",function(e){e.preventDefault(),cityssm.postJSON(`${t.urlPrefix}/maps/${s?"doCreateMap":"doUpdateMap"}`,o,e=>{var a;const o=e;o.success?(function(){var e;t.clearUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--map']"))||void 0===e||e.classList.add("is-light")}(),s?window.location.href=t.getMapURL(o.mapId,!0):bulmaJS.alert({message:`${t.escapedAliases.Map} Updated Successfully`,contextualColorName:"success"})):bulmaJS.alert({title:`Error Updating ${t.escapedAliases.Map}`,message:null!==(a=o.errorMessage)&&void 0!==a?a:"",contextualColorName:"danger"})})});const r=o.querySelectorAll("input, select");for(const e of r)e.addEventListener("change",l);null===(e=document.querySelector("#button--deleteMap"))||void 0===e||e.addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:`Delete ${t.escapedAliases.Map}`,message:`Are you sure you want to delete this ${t.escapedAliases.map} and all related ${t.escapedAliases.lots}?`,contextualColorName:"warning",okButton:{text:`Yes, Delete ${t.escapedAliases.Map}`,callbackFunction:function(){cityssm.postJSON(`${t.urlPrefix}/maps/doDeleteMap`,{mapId:a},e=>{var a;const s=e;s.success?window.location.href=t.getMapURL():bulmaJS.alert({title:`Error Deleting ${t.escapedAliases.Map}`,message:null!==(a=s.errorMessage)&&void 0!==a?a:"",contextualColorName:"danger"})})}}})})})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,a=exports.maps,s=document.querySelector("#searchFilter--map"),t=document.querySelector("#container--searchResults");function i(){var i,d,n,r,o,l,c,p,m,h,u,v,L,f,b;t.innerHTML=e.getLoadingParagraphHTML(`Loading ${e.escapedAliases.Maps}...`);let y=0;const H=document.createElement("tbody"),M=s.value.trim().toLowerCase().split(" ");for(const s of a){const a=`${null!==(i=s.mapName)&&void 0!==i?i:""} ${null!==(d=s.mapDescription)&&void 0!==d?d:""} ${null!==(n=s.mapAddress1)&&void 0!==n?n:""} ${null!==(r=s.mapAddress2)&&void 0!==r?r:""}`.toLowerCase();let t=!0;for(const e of M)if(!a.includes(e)){t=!1;break}t&&(y+=1,H.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.getMapURL(s.mapId)+'">'+cityssm.escapeHTML(""===s.mapName?"(No Name)":s.mapName)+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(null!==(o=s.mapDescription)&&void 0!==o?o:"")+"</span></td><td>"+(""===(null!==(l=s.mapAddress1)&&void 0!==l?l:"")?"":cityssm.escapeHTML(null!==(c=s.mapAddress1)&&void 0!==c?c:"")+"<br />")+(""===(null!==(p=s.mapAddress2)&&void 0!==p?p:"")?"":cityssm.escapeHTML(null!==(m=s.mapAddress2)&&void 0!==m?m:"")+"<br />")+(s.mapCity||s.mapProvince?cityssm.escapeHTML(null!==(h=s.mapCity)&&void 0!==h?h:"")+", "+cityssm.escapeHTML(null!==(u=s.mapProvince)&&void 0!==u?u:"")+"<br />":"")+(""===(null!==(v=s.mapPostalCode)&&void 0!==v?v:"")?"":cityssm.escapeHTML(null!==(L=s.mapPostalCode)&&void 0!==L?L:""))+"</td><td>"+cityssm.escapeHTML(null!==(f=s.mapPhoneNumber)&&void 0!==f?f:"")+'</td><td class="has-text-centered">'+(s.mapLatitude&&s.mapLongitude?'<span data-tooltip="Has Geographic Coordinates"><i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i></span>':"")+'</td><td class="has-text-centered">'+(""===(null!==(b=s.mapSVG)&&void 0!==b?b:"")?"":'<span data-tooltip="Has Image"><i class="fas fa-image" aria-label="Has Image"></i></span>')+"</td>"+`<td class="has-text-right">\n <a href="${e.urlPrefix}/lots?mapId=${s.mapId}">${s.lotCount}</a>\n </td>`+"</tr>"))}if(t.innerHTML="",0===y)t.innerHTML=`<div class="message is-info">\n <p class="message-body">There are no ${e.escapedAliases.maps} that meet the search criteria.</p>\n </div>`;else{const a=document.createElement("table");a.className="table is-fullwidth is-striped is-hoverable has-sticky-header",a.innerHTML=`<thead><tr>\n <th>${e.escapedAliases.Map}</th>\n <th>Address</th>\n <th>Phone Number</th>\n <th class="has-text-centered">Coordinates</th>\n <th class="has-text-centered">Image</th>\n <th class="has-text-right">${e.escapedAliases.Lot} Count</th>\n </tr></thead>`,a.append(H),t.append(a)}}s.addEventListener("keyup",i),document.querySelector("#form--searchFilters").addEventListener("submit",e=>{e.preventDefault(),i()}),i()})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const a=exports.los,s=exports.maps,t=document.querySelector("#searchFilter--map"),n=document.querySelector("#container--searchResults");function i(){var e,i,d,l,r,o,c,p,m,u,h,v,$,L,f,b,y;n.innerHTML=a.getLoadingParagraphHTML(`Loading ${a.escapedAliases.Maps}...`);let H=0;const M=document.createElement("tbody"),g=t.value.trim().toLowerCase().split(" ");for(const t of s){const s=`${null!==(e=t.mapName)&&void 0!==e?e:""} ${null!==(i=t.mapDescription)&&void 0!==i?i:""} ${null!==(d=t.mapAddress1)&&void 0!==d?d:""} ${null!==(l=t.mapAddress2)&&void 0!==l?l:""}`.toLowerCase();let n=!0;for(const e of g)if(!s.includes(e)){n=!1;break}n&&(H+=1,M.insertAdjacentHTML("beforeend",`<tr>\n <td>\n <a class="has-text-weight-bold" href="${a.getMapURL(t.mapId)}">\n ${cityssm.escapeHTML(""===(null!==(r=t.mapName)&&void 0!==r?r:"")?"(No Name)":null!==(o=t.mapName)&&void 0!==o?o:"")}\n </a><br />\n <span class="is-size-7">\n ${cityssm.escapeHTML(null!==(c=t.mapDescription)&&void 0!==c?c:"")}\n </span>\n </td><td>\n ${""===(null!==(p=t.mapAddress1)&&void 0!==p?p:"")?"":`${cityssm.escapeHTML(null!==(m=t.mapAddress1)&&void 0!==m?m:"")}<br />`}\n ${""===(null!==(u=t.mapAddress2)&&void 0!==u?u:"")?"":`${cityssm.escapeHTML(null!==(h=t.mapAddress2)&&void 0!==h?h:"")}<br />`}\n ${t.mapCity||t.mapProvince?`${cityssm.escapeHTML(null!==(v=t.mapCity)&&void 0!==v?v:"")}, ${cityssm.escapeHTML(null!==($=t.mapProvince)&&void 0!==$?$:"")}<br />`:""}\n ${""===(null!==(L=t.mapPostalCode)&&void 0!==L?L:"")?"":cityssm.escapeHTML(null!==(f=t.mapPostalCode)&&void 0!==f?f:"")}\n </td><td>\n ${cityssm.escapeHTML(null!==(b=t.mapPhoneNumber)&&void 0!==b?b:"")}\n </td><td class="has-text-centered">\n ${t.mapLatitude&&t.mapLongitude?'<span data-tooltip="Has Geographic Coordinates">\n <i class="fas fa-map-marker-alt" aria-label="Has Geographic Coordinates"></i>\n </span>':""}\n </td><td class="has-text-centered">\n ${""===(null!==(y=t.mapSVG)&&void 0!==y?y:"")?"":'<span data-tooltip="Has Image"><i class="fas fa-image" aria-label="Has Image"></i></span>'}\n </td><td class="has-text-right">\n <a href="${a.urlPrefix}/lots?mapId=${t.mapId}">${t.lotCount}</a>\n </td>\n </tr>`))}if(n.innerHTML="",0===H)n.innerHTML=`<div class="message is-info">\n <p class="message-body">There are no ${a.escapedAliases.maps} that meet the search criteria.</p>\n </div>`;else{const e=document.createElement("table");e.className="table is-fullwidth is-striped is-hoverable has-sticky-header",e.innerHTML=`<thead><tr>\n <th>${a.escapedAliases.Map}</th>\n <th>Address</th>\n <th>Phone Number</th>\n <th class="has-text-centered">Coordinates</th>\n <th class="has-text-centered">Image</th>\n <th class="has-text-right">${a.escapedAliases.Lot} Count</th>\n </tr></thead>`,e.append(M),n.append(e)}}t.addEventListener("keyup",i),null===(e=document.querySelector("#form--searchFilters"))||void 0===e||e.addEventListener("submit",e=>{e.preventDefault(),i()}),i()})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,s=document.querySelector("#form--searchFilters"),r=s.querySelector("#searchFilter--workOrderMilestoneDateFilter"),a=s.querySelector("#searchFilter--workOrderMilestoneDateString"),t=document.querySelector("#container--milestoneCalendar");function i(r){r&&r.preventDefault(),t.innerHTML=e.getLoadingParagraphHTML("Loading Milestones..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{!function(s){var r,a,i,n,o,l,c,d;if(0===s.length)return void(t.innerHTML='<div class="message is-info">\n <p class="message-body">There are no milestones that meet the search criteria.</p>\n </div>');t.innerHTML="";const p=cityssm.dateToString(new Date);let m,u="x";for(const M of s){u!==M.workOrderMilestoneDateString&&(m&&t.append(m),(m=document.createElement("div")).className="panel",m.innerHTML=`<h2 class="panel-heading">\n ${0===M.workOrderMilestoneDate?"No Set Date":M.workOrderMilestoneDateString}\n </h2>`,u=M.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!M.workOrderMilestoneCompletionDate&&""!==M.workOrderMilestoneDateString&&M.workOrderMilestoneDateString<p&&s.classList.add("has-background-warning-light");let f="";for(const s of M.workOrderLots)f+=`<li class="has-tooltip-left"\n data-tooltip="${cityssm.escapeHTML(null!==(r=s.mapName)&&void 0!==r?r:"")}">\n <span class="fa-li">\n <i class="fas fa-vector-square"\n aria-label="${e.escapedAliases.Lot}"></i>\n </span>\n ${cityssm.escapeHTML(null!==(a=s.lotName)&&void 0!==a?a:"")}\n </li>`;for(const s of M.workOrderLotOccupancies)for(const r of s.lotOccupancyOccupants)f+=`<li class="has-tooltip-left"\n data-tooltip="${cityssm.escapeHTML(null!==(i=r.lotOccupantType)&&void 0!==i?i:"")}">\n <span class="fa-li">\n <i class="fas fa-user"\n aria-label="${e.escapedAliases.Occupancy}"></i>\n </span>\n ${cityssm.escapeHTML(null!==(n=r.occupantName)&&void 0!==n?n:"")}\n ${cityssm.escapeHTML(null!==(o=r.occupantFamilyName)&&void 0!==o?o:"")}\n </li>`;s.innerHTML='<div class="columns"><div class="column is-narrow"><span class="icon is-small">'+(M.workOrderMilestoneCompletionDate?'<i class="fas fa-check" aria-label="Completed"></i>':'<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>')+'</span></div><div class="column">'+(0===M.workOrderMilestoneTime?"":M.workOrderMilestoneTimePeriodString+"<br />")+(M.workOrderMilestoneTypeId?"<strong>"+cityssm.escapeHTML(M.workOrderMilestoneType)+"</strong><br />":"")+'<span class="is-size-7">'+cityssm.escapeHTML(M.workOrderMilestoneDescription)+'</span></div><div class="column"><i class="fas fa-circle" style="color:'+e.getRandomColor(null!==(l=M.workOrderNumber)&&void 0!==l?l:"")+'" aria-hidden="true"></i> <a class="has-text-weight-bold" href="'+e.getWorkOrderURL(M.workOrderId)+'">'+cityssm.escapeHTML(null!==(c=M.workOrderNumber)&&void 0!==c?c:"")+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(null!==(d=M.workOrderDescription)&&void 0!==d?d:"")+'</span></div><div class="column is-size-7">'+(""===f?"":'<ul class="fa-ul ml-4">'+f+"</ul>")+"</div></div>",m.append(s)}t.append(m)}(s.workOrderMilestones)})}r.addEventListener("change",()=>{a.closest("fieldset").disabled="date"!==r.value,i()}),e.initializeDatePickers(s),a.addEventListener("change",i),s.addEventListener("submit",i),i()})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,s=document.querySelector("#form--searchFilters"),n=s.querySelector("#searchFilter--workOrderMilestoneDateFilter"),r=s.querySelector("#searchFilter--workOrderMilestoneDateString"),a=document.querySelector("#container--milestoneCalendar");function i(n){n&&n.preventDefault(),a.innerHTML=e.getLoadingParagraphHTML("Loading Milestones..."),cityssm.postJSON(`${e.urlPrefix}/workOrders/doGetWorkOrderMilestones`,s,s=>{!function(s){var n,r,i,t,l,o,c,d,p,u,m,v,M,f,O;if(0===s.length)return void(a.innerHTML='<div class="message is-info">\n <p class="message-body">There are no milestones that meet the search criteria.</p>\n </div>');a.innerHTML="";const k=cityssm.dateToString(new Date);let g,w="x";for(const y of s){w!==y.workOrderMilestoneDateString&&(g&&a.append(g),(g=document.createElement("div")).className="panel",g.innerHTML=`<h2 class="panel-heading">\n ${cityssm.escapeHTML(0===y.workOrderMilestoneDate?"No Set Date":null!==(n=y.workOrderMilestoneDateString)&&void 0!==n?n:"")}\n </h2>`,w=null!==(r=y.workOrderMilestoneDateString)&&void 0!==r?r:"");const s=document.createElement("div");s.className="panel-block is-block",!y.workOrderMilestoneCompletionDate&&""!==y.workOrderMilestoneDateString&&y.workOrderMilestoneDateString<k&&s.classList.add("has-background-warning-light");let L="";for(const s of null!==(i=y.workOrderLots)&&void 0!==i?i:[])L+=`<li class="has-tooltip-left"\n data-tooltip="${cityssm.escapeHTML(null!==(t=s.mapName)&&void 0!==t?t:"")}">\n <span class="fa-li">\n <i class="fas fa-vector-square"\n aria-label="${e.escapedAliases.Lot}"></i>\n </span>\n ${cityssm.escapeHTML(null!==(l=s.lotName)&&void 0!==l?l:"")}\n </li>`;for(const s of null!==(o=y.workOrderLotOccupancies)&&void 0!==o?o:[])for(const n of null!==(c=s.lotOccupancyOccupants)&&void 0!==c?c:[])L+=`<li class="has-tooltip-left"\n data-tooltip="${cityssm.escapeHTML(null!==(d=n.lotOccupantType)&&void 0!==d?d:"")}">\n <span class="fa-li">\n <i class="fas fa-user"\n aria-label="${e.escapedAliases.Occupancy}"></i>\n </span>\n ${cityssm.escapeHTML(null!==(p=n.occupantName)&&void 0!==p?p:"")}\n ${cityssm.escapeHTML(null!==(u=n.occupantFamilyName)&&void 0!==u?u:"")}\n </li>`;s.innerHTML=`<div class="columns">\n <div class="column is-narrow">\n <span class="icon is-small">\n ${y.workOrderMilestoneCompletionDate?'<i class="fas fa-check" aria-label="Completed"></i>':'<i class="far fa-square has-text-grey" aria-label="Incomplete"></i>'}\n </span>\n </div><div class="column">\n ${0===y.workOrderMilestoneTime?"":`${y.workOrderMilestoneTimePeriodString}<br />`}\n ${y.workOrderMilestoneTypeId?`<strong>${cityssm.escapeHTML(null!==(m=y.workOrderMilestoneType)&&void 0!==m?m:"")}</strong><br />`:""}\n <span class="is-size-7">\n ${cityssm.escapeHTML(null!==(v=y.workOrderMilestoneDescription)&&void 0!==v?v:"")}\n </span>\n </div><div class="column">\n <i class="fas fa-circle" style="color:${e.getRandomColor(null!==(M=y.workOrderNumber)&&void 0!==M?M:"")}" aria-hidden="true"></i>\n <a class="has-text-weight-bold" href="${e.getWorkOrderURL(y.workOrderId)}">\n ${cityssm.escapeHTML(null!==(f=y.workOrderNumber)&&void 0!==f?f:"")}\n </a><br />\n <span class="is-size-7">${cityssm.escapeHTML(null!==(O=y.workOrderDescription)&&void 0!==O?O:"")}</span>\n </div><div class="column is-size-7">\n ${""===L?"":'<ul class="fa-ul ml-4">'+L+"</ul>"}</div></div>`,g.append(s)}a.append(g)}(s.workOrderMilestones)})}n.addEventListener("change",()=>{r.closest("fieldset").disabled="date"!==n.value,i()}),e.initializeDatePickers(s),r.addEventListener("change",i),s.addEventListener("submit",i),i()})();

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,r=document.querySelector("#button--reopenWorkOrder");if(null!==r){const o=r.dataset.workOrderId;r.addEventListener("click",()=>{bulmaJS.confirm({title:"Reopen Work Order",message:"Are you sure you want to remove the close date from this work order and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Work Order",callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/workOrders/doReopenWorkOrder",{workOrderId:o},r=>{var t;const n=r;n.success?window.location.href=e.getWorkOrderURL(o,!0,!0):bulmaJS.alert({title:"Error Reopening Work Order",message:null!==(t=n.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}}})})}})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const r=exports.los,o=document.querySelector("#button--reopenWorkOrder");if(null!==o){const t=null!==(e=o.dataset.workOrderId)&&void 0!==e?e:"";o.addEventListener("click",()=>{bulmaJS.confirm({title:"Reopen Work Order",message:"Are you sure you want to remove the close date from this work order and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Work Order",callbackFunction:function(){cityssm.postJSON(`${r.urlPrefix}/workOrders/doReopenWorkOrder`,{workOrderId:t},e=>{var o;const n=e;n.success?window.location.href=r.getWorkOrderURL(t,!0,!0):bulmaJS.alert({title:"Error Reopening Work Order",message:null!==(o=n.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})})}})();