smaller screen optimizations

deepsource-autofix-76c6eb20
Dan Gowans 2023-03-29 15:33:42 -04:00
parent d38bdf70a2
commit 80c7fe0607
33 changed files with 1347 additions and 1371 deletions

View File

@ -42,18 +42,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
let occupantsHTML = ''; let occupantsHTML = '';
for (const occupant of lotOccupancy.lotOccupancyOccupants) { for (const occupant of lotOccupancy.lotOccupancyOccupants) {
occupantsHTML += occupantsHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<li class="has-tooltip-right" data-tooltip="' +
cityssm.escapeHTML((_a = occupant.lotOccupantType) !== null && _a !== void 0 ? _a : '') + cityssm.escapeHTML((_a = occupant.lotOccupantType) !== null && _a !== void 0 ? _a : '') +
'">' + '">' +
('<i class="fas fa-fw fa-' + ('<span class="fa-li"><i class="fas fa-fw fa-' +
cityssm.escapeHTML(((_b = occupant.fontAwesomeIconClass) !== null && _b !== void 0 ? _b : '') === '' cityssm.escapeHTML(((_b = occupant.fontAwesomeIconClass) !== null && _b !== void 0 ? _b : '') === ''
? 'user' ? 'user'
: occupant.fontAwesomeIconClass) + : occupant.fontAwesomeIconClass) +
'" aria-hidden="true"></i> ') + '" aria-hidden="true"></i></span> ') +
cityssm.escapeHTML((_c = occupant.occupantName) !== null && _c !== void 0 ? _c : '') + cityssm.escapeHTML((_c = occupant.occupantName) !== null && _c !== void 0 ? _c : '') +
' ' + ' ' +
cityssm.escapeHTML((_d = occupant.occupantFamilyName) !== null && _d !== void 0 ? _d : '') + cityssm.escapeHTML((_d = occupant.occupantFamilyName) !== null && _d !== void 0 ? _d : '') +
'</span><br />'; '</li>';
} }
const feeTotal = ((_f = (_e = lotOccupancy.lotOccupancyFees) === null || _e === void 0 ? void 0 : _e.reduce((soFar, currentFee) => { const feeTotal = ((_f = (_e = lotOccupancy.lotOccupancyFees) === null || _e === void 0 ? void 0 : _e.reduce((soFar, currentFee) => {
var _a, _b, _c; var _a, _b, _c;
@ -107,7 +107,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
? 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>' + occupantsHTML + '</td>') + ('<td>' +
(occupantsHTML === ''
? ''
: '<ul class="fa-ul">' + occupantsHTML + '</ul>') +
'</td>') +
('<td>' + feeIconHTML + '</td>') + ('<td>' + feeIconHTML + '</td>') +
'<td>' + '<td>' +
(lotOccupancy.printEJS (lotOccupancy.printEJS

View File

@ -72,20 +72,20 @@ declare const cityssm: cityssmGlobal
for (const occupant of lotOccupancy.lotOccupancyOccupants!) { for (const occupant of lotOccupancy.lotOccupancyOccupants!) {
occupantsHTML += occupantsHTML +=
'<span class="has-tooltip-left" data-tooltip="' + '<li class="has-tooltip-right" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType ?? '') + cityssm.escapeHTML(occupant.lotOccupantType ?? '') +
'">' + '">' +
('<i class="fas fa-fw fa-' + ('<span class="fa-li"><i class="fas fa-fw fa-' +
cityssm.escapeHTML( cityssm.escapeHTML(
(occupant.fontAwesomeIconClass ?? '') === '' (occupant.fontAwesomeIconClass ?? '') === ''
? 'user' ? 'user'
: occupant.fontAwesomeIconClass! : occupant.fontAwesomeIconClass!
) + ) +
'" aria-hidden="true"></i> ') + '" aria-hidden="true"></i></span> ') +
cityssm.escapeHTML(occupant.occupantName ?? '') + cityssm.escapeHTML(occupant.occupantName ?? '') +
' ' + ' ' +
cityssm.escapeHTML(occupant.occupantFamilyName ?? '') + cityssm.escapeHTML(occupant.occupantFamilyName ?? '') +
'</span><br />' '</li>'
} }
const feeTotal = ( const feeTotal = (
@ -153,10 +153,14 @@ declare const cityssm: cityssmGlobal
('<td>' + lotOccupancy.occupancyStartDateString! + '</td>') + ('<td>' + lotOccupancy.occupancyStartDateString! + '</td>') +
('<td>' + ('<td>' +
(lotOccupancy.occupancyEndDate (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>' + occupantsHTML + '</td>') + ('<td>' +
(occupantsHTML === ''
? ''
: '<ul class="fa-ul">' + occupantsHTML + '</ul>') +
'</td>') +
('<td>' + feeIconHTML + '</td>') + ('<td>' + feeIconHTML + '</td>') +
'<td>' + '<td>' +
(lotOccupancy.printEJS (lotOccupancy.printEJS

View File

@ -8,7 +8,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 renderLots(responseJSON) { function renderLots(responseJSON) {
var _a, _b, _c, _d; var _a, _b, _c, _d, _e;
if (responseJSON.lots.length === 0) { if (responseJSON.lots.length === 0) {
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>
@ -40,7 +40,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
? cityssm.escapeHTML(lot.lotStatus) ? cityssm.escapeHTML(lot.lotStatus)
: '<span class="has-text-grey">(No Status)</span>') + : '<span class="has-text-grey">(No Status)</span>') +
'<br />' + '<br />' +
(lot.lotOccupancyCount > 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>') +
@ -58,10 +58,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
searchResultsContainerElement searchResultsContainerElement
.querySelector('table') .querySelector('table')
.append(resultsTbodyElement); .append(resultsTbodyElement);
(_c = searchResultsContainerElement
.querySelector("button[data-page='previous']")) === null || _c === void 0 ? void 0 : _c.addEventListener('click', previousAndGetLots);
(_d = searchResultsContainerElement (_d = searchResultsContainerElement
.querySelector("button[data-page='next']")) === null || _d === void 0 ? void 0 : _d.addEventListener('click', nextAndGetLots); .querySelector("button[data-page='previous']")) === null || _d === void 0 ? void 0 : _d.addEventListener('click', previousAndGetLots);
(_e = searchResultsContainerElement
.querySelector("button[data-page='next']")) === null || _e === void 0 ? void 0 : _e.addEventListener('click', nextAndGetLots);
} }
function getLots() { function getLots() {
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Lots}...`); searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Lots}...`);

View File

@ -66,7 +66,7 @@ declare const cityssm: cityssmGlobal
? cityssm.escapeHTML(lot.lotStatus!) ? cityssm.escapeHTML(lot.lotStatus!)
: '<span class="has-text-grey">(No Status)</span>') + : '<span class="has-text-grey">(No Status)</span>') +
'<br />' + '<br />' +
(lot.lotOccupancyCount! > 0 ((lot.lotOccupancyCount ?? 0) > 0
? '<span class="is-size-7">Currently Occupied</span>' ? '<span class="is-size-7">Currently Occupied</span>'
: '') + : '') +
'</td>') + '</td>') +

View File

@ -158,7 +158,7 @@ declare const bulmaJS: BulmaJS
}) })
// Get the datepicker container element // Get the datepicker container element
const datepickerElement = containerElement.querySelector('#' + cal._id)! const datepickerElement = containerElement.querySelector('#' + (cal._id as string))!
// Override the previous and next month button styles // Override the previous and next month button styles
const datePickerNavButtonElements = datepickerElement.querySelectorAll( const datePickerNavButtonElements = datepickerElement.querySelectorAll(

View File

@ -318,6 +318,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
else { else {
rowElement.insertAdjacentHTML('beforeend', `<td><span class="has-text-grey">(No ${los.escapedAliases.Lot})</span></td>`); rowElement.insertAdjacentHTML('beforeend', `<td><span class="has-text-grey">(No ${los.escapedAliases.Lot})</span></td>`);
} }
let occupantsHTML = '';
for (const occupant of lotOccupancy.lotOccupancyOccupants) {
occupantsHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML(occupant.lotOccupantType)}">
<span class="fa-li">
<i class="fas fa-fw fa-${cityssm.escapeHTML(((_c = occupant.fontAwesomeIconClass) !== null && _c !== void 0 ? _c : '') === ''
? 'user'
: occupant.fontAwesomeIconClass)}" aria-label="${los.escapedAliases.Occupant}"></i>
</span>
${cityssm.escapeHTML(occupant.occupantName)}
${cityssm.escapeHTML(occupant.occupantFamilyName)}
</li>`;
}
rowElement.insertAdjacentHTML('beforeend', '<td>' + rowElement.insertAdjacentHTML('beforeend', '<td>' +
lotOccupancy.occupancyStartDateString + lotOccupancy.occupancyStartDateString +
'</td>' + '</td>' +
@ -328,27 +341,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
'</td>') + '</td>') +
('<td>' + ('<td>' +
(lotOccupancy.lotOccupancyOccupants.length === 0 (lotOccupancy.lotOccupancyOccupants.length === 0
? '<span class="has-text-grey">(No ' + ? `<span class="has-text-grey">(No ${los.escapedAliases.Occupants})</span>`
los.escapedAliases.Occupants + : `<ul class="fa-ul ml-5">${occupantsHTML}</ul>`) +
')</span>'
: (_c = lotOccupancy.lotOccupancyOccupants) === null || _c === void 0 ? void 0 : _c.reduce((soFar, occupant) => {
var _a;
return (soFar +
'<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType) +
'">' +
'<i class="fas fa-fw fa-' +
cityssm.escapeHTML(((_a = occupant.fontAwesomeIconClass) !== null && _a !== void 0 ? _a : '') === ''
? 'user'
: occupant.fontAwesomeIconClass) +
'" aria-label="' +
los.escapedAliases.Occupant +
'"></i> ' +
cityssm.escapeHTML(occupant.occupantName) +
' ' +
cityssm.escapeHTML(occupant.occupantFamilyName) +
'</span><br />');
}, '')) +
'</td>') + '</td>') +
('<td>' + ('<td>' +
'<button class="button is-small is-light is-danger button--deleteLotOccupancy" data-tooltip="Delete Relationship" type="button">' + '<button class="button is-small is-light is-danger button--deleteLotOccupancy" data-tooltip="Delete Relationship" type="button">' +
@ -597,7 +591,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
.occupantFamilyName) + .occupantFamilyName) +
(lotOccupancy.lotOccupancyOccupants.length > 1 (lotOccupancy.lotOccupancyOccupants.length > 1
? ' plus ' + ? ' plus ' +
(lotOccupancy.lotOccupancyOccupants.length - 1) (lotOccupancy.lotOccupancyOccupants.length - 1).toString()
: '')) + : '')) +
'</td>')); '</td>'));
rowElement rowElement

View File

@ -162,6 +162,19 @@ function renderRelatedOccupancies() {
else { else {
rowElement.insertAdjacentHTML('beforeend', `<td><span class="has-text-grey">(No ${los.escapedAliases.Lot})</span></td>`); rowElement.insertAdjacentHTML('beforeend', `<td><span class="has-text-grey">(No ${los.escapedAliases.Lot})</span></td>`);
} }
let occupantsHTML = '';
for (const occupant of lotOccupancy.lotOccupancyOccupants) {
occupantsHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML(occupant.lotOccupantType)}">
<span class="fa-li">
<i class="fas fa-fw fa-${cityssm.escapeHTML(((_c = occupant.fontAwesomeIconClass) !== null && _c !== void 0 ? _c : '') === ''
? 'user'
: occupant.fontAwesomeIconClass)}" aria-label="${los.escapedAliases.Occupant}"></i>
</span>
${cityssm.escapeHTML(occupant.occupantName)}
${cityssm.escapeHTML(occupant.occupantFamilyName)}
</li>`;
}
rowElement.insertAdjacentHTML('beforeend', '<td>' + rowElement.insertAdjacentHTML('beforeend', '<td>' +
lotOccupancy.occupancyStartDateString + lotOccupancy.occupancyStartDateString +
'</td>' + '</td>' +
@ -172,27 +185,8 @@ function renderRelatedOccupancies() {
'</td>') + '</td>') +
('<td>' + ('<td>' +
(lotOccupancy.lotOccupancyOccupants.length === 0 (lotOccupancy.lotOccupancyOccupants.length === 0
? '<span class="has-text-grey">(No ' + ? `<span class="has-text-grey">(No ${los.escapedAliases.Occupants})</span>`
los.escapedAliases.Occupants + : `<ul class="fa-ul ml-5">${occupantsHTML}</ul>`) +
')</span>'
: (_c = lotOccupancy.lotOccupancyOccupants) === null || _c === void 0 ? void 0 : _c.reduce((soFar, occupant) => {
var _a;
return (soFar +
'<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType) +
'">' +
'<i class="fas fa-fw fa-' +
cityssm.escapeHTML(((_a = occupant.fontAwesomeIconClass) !== null && _a !== void 0 ? _a : '') === ''
? 'user'
: occupant.fontAwesomeIconClass) +
'" aria-label="' +
los.escapedAliases.Occupant +
'"></i> ' +
cityssm.escapeHTML(occupant.occupantName) +
' ' +
cityssm.escapeHTML(occupant.occupantFamilyName) +
'</span><br />');
}, '')) +
'</td>') + '</td>') +
('<td>' + ('<td>' +
'<button class="button is-small is-light is-danger button--deleteLotOccupancy" data-tooltip="Delete Relationship" type="button">' + '<button class="button is-small is-light is-danger button--deleteLotOccupancy" data-tooltip="Delete Relationship" type="button">' +
@ -441,7 +435,7 @@ function doAddLotOccupancy(clickEvent) {
.occupantFamilyName) + .occupantFamilyName) +
(lotOccupancy.lotOccupancyOccupants.length > 1 (lotOccupancy.lotOccupancyOccupants.length > 1
? ' plus ' + ? ' plus ' +
(lotOccupancy.lotOccupancyOccupants.length - 1) (lotOccupancy.lotOccupancyOccupants.length - 1).toString()
: '')) + : '')) +
'</td>')); '</td>'));
rowElement rowElement

View File

@ -239,42 +239,37 @@ function renderRelatedOccupancies(): void {
) )
} }
let occupantsHTML = ''
for (const occupant of lotOccupancy.lotOccupancyOccupants!) {
occupantsHTML += `<li class="has-tooltip-left"
data-tooltip="${cityssm.escapeHTML(occupant.lotOccupantType!)}">
<span class="fa-li">
<i class="fas fa-fw fa-${cityssm.escapeHTML(
(occupant.fontAwesomeIconClass ?? '') === ''
? 'user'
: occupant.fontAwesomeIconClass!
)}" aria-label="${los.escapedAliases.Occupant}"></i>
</span>
${cityssm.escapeHTML(occupant.occupantName!)}
${cityssm.escapeHTML(occupant.occupantFamilyName!)}
</li>`
}
rowElement.insertAdjacentHTML( rowElement.insertAdjacentHTML(
'beforeend', 'beforeend',
'<td>' + '<td>' +
lotOccupancy.occupancyStartDateString + lotOccupancy.occupancyStartDateString! +
'</td>' + '</td>' +
('<td>' + ('<td>' +
(lotOccupancy.occupancyEndDate (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>' +
(lotOccupancy.lotOccupancyOccupants!.length === 0 (lotOccupancy.lotOccupancyOccupants!.length === 0
? '<span class="has-text-grey">(No ' + ? `<span class="has-text-grey">(No ${los.escapedAliases.Occupants})</span>`
los.escapedAliases.Occupants + : `<ul class="fa-ul ml-5">${occupantsHTML}</ul>`) +
')</span>'
: lotOccupancy.lotOccupancyOccupants?.reduce((soFar, occupant) => {
return (
soFar +
'<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType!) +
'">' +
'<i class="fas fa-fw fa-' +
cityssm.escapeHTML(
(occupant.fontAwesomeIconClass ?? '') === ''
? 'user'
: occupant.fontAwesomeIconClass!
) +
'" aria-label="' +
los.escapedAliases.Occupant +
'"></i> ' +
cityssm.escapeHTML(occupant.occupantName!) +
' ' +
cityssm.escapeHTML(occupant.occupantFamilyName!) +
'</span><br />'
)
}, '')) +
'</td>') + '</td>') +
('<td>' + ('<td>' +
'<button class="button is-small is-light is-danger button--deleteLotOccupancy" data-tooltip="Delete Relationship" type="button">' + '<button class="button is-small is-light is-danger button--deleteLotOccupancy" data-tooltip="Delete Relationship" type="button">' +
@ -631,7 +626,7 @@ document
) + ) +
(lotOccupancy.lotOccupancyOccupants!.length > 1 (lotOccupancy.lotOccupancyOccupants!.length > 1
? ' plus ' + ? ' plus ' +
(lotOccupancy.lotOccupancyOccupants!.length - 1) (lotOccupancy.lotOccupancyOccupants!.length - 1).toString()
: '')) + : '')) +
'</td>') '</td>')
) )

View File

@ -42,31 +42,26 @@ Object.defineProperty(exports, "__esModule", { value: true });
} }
let lotOccupancyHTML = ''; let lotOccupancyHTML = '';
for (const lot of milestone.workOrderLots) { for (const lot of milestone.workOrderLots) {
lotOccupancyHTML += lotOccupancyHTML += `<li class="has-tooltip-left"
'<span class="has-tooltip-left" data-tooltip="' + data-tooltip="${cityssm.escapeHTML((_a = lot.mapName) !== null && _a !== void 0 ? _a : '')}">
cityssm.escapeHTML((_a = lot.mapName) !== null && _a !== void 0 ? _a : '') + <span class="fa-li">
'">' + <i class="fas fa-vector-square"
'<i class="fas fa-vector-square" aria-label="' + aria-label="${los.escapedAliases.Lot}"></i>
los.escapedAliases.Lot + </span>
'"></i> ' + ${cityssm.escapeHTML((_b = lot.lotName) !== null && _b !== void 0 ? _b : '')}
cityssm.escapeHTML((_b = lot.lotName) !== null && _b !== void 0 ? _b : '') + </li>`;
'</span>' +
'<br />';
} }
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 += lotOccupancyHTML += `<li class="has-tooltip-left"
'<span class="has-tooltip-left" data-tooltip="' + data-tooltip="${cityssm.escapeHTML((_c = occupant.lotOccupantType) !== null && _c !== void 0 ? _c : '')}">
cityssm.escapeHTML((_c = occupant.lotOccupantType) !== null && _c !== void 0 ? _c : '') + <span class="fa-li">
'">' + <i class="fas fa-user"
'<i class="fas fa-user" aria-label="' + aria-label="${los.escapedAliases.Occupancy}"></i>
los.escapedAliases.Occupancy + </span>
'"></i> ' + ${cityssm.escapeHTML((_d = occupant.occupantName) !== null && _d !== void 0 ? _d : '')}
cityssm.escapeHTML((_d = occupant.occupantName) !== null && _d !== void 0 ? _d : '') + ${cityssm.escapeHTML((_e = occupant.occupantFamilyName) !== null && _e !== void 0 ? _e : '')}
' ' + </li>`;
cityssm.escapeHTML((_e = occupant.occupantFamilyName) !== null && _e !== void 0 ? _e : '') +
'</span>' +
'<br />';
} }
} }
panelBlockElement.innerHTML = panelBlockElement.innerHTML =
@ -104,7 +99,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
cityssm.escapeHTML((_h = milestone.workOrderDescription) !== null && _h !== void 0 ? _h : '') + cityssm.escapeHTML((_h = milestone.workOrderDescription) !== null && _h !== void 0 ? _h : '') +
'</span>' + '</span>' +
'</div>') + '</div>') +
('<div class="column is-size-7">' + lotOccupancyHTML + '</div>') + ('<div class="column is-size-7">' +
(lotOccupancyHTML === ''
? ''
: '<ul class="fa-ul ml-4">' + lotOccupancyHTML + '</ul>') +
'</div>') +
'</div>'; '</div>';
currentPanelElement.append(panelBlockElement); currentPanelElement.append(panelBlockElement);
} }

View File

@ -78,32 +78,29 @@ declare const cityssm: cityssmGlobal
let lotOccupancyHTML = '' let lotOccupancyHTML = ''
for (const lot of milestone.workOrderLots!) { for (const lot of milestone.workOrderLots!) {
lotOccupancyHTML += lotOccupancyHTML += `<li class="has-tooltip-left"
'<span class="has-tooltip-left" data-tooltip="' + data-tooltip="${cityssm.escapeHTML(lot.mapName ?? '')}">
cityssm.escapeHTML(lot.mapName ?? '') + <span class="fa-li">
'">' + <i class="fas fa-vector-square"
'<i class="fas fa-vector-square" aria-label="' + aria-label="${los.escapedAliases.Lot}"></i>
los.escapedAliases.Lot + </span>
'"></i> ' + ${cityssm.escapeHTML(lot.lotName ?? '')}
cityssm.escapeHTML(lot.lotName ?? '') + </li>`
'</span>' +
'<br />'
} }
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 += lotOccupancyHTML += `<li class="has-tooltip-left"
'<span class="has-tooltip-left" data-tooltip="' + data-tooltip="${cityssm.escapeHTML(
cityssm.escapeHTML(occupant.lotOccupantType ?? '') + occupant.lotOccupantType ?? ''
'">' + )}">
'<i class="fas fa-user" aria-label="' + <span class="fa-li">
los.escapedAliases.Occupancy + <i class="fas fa-user"
'"></i> ' + aria-label="${los.escapedAliases.Occupancy}"></i>
cityssm.escapeHTML(occupant.occupantName ?? '') + </span>
' ' + ${cityssm.escapeHTML(occupant.occupantName ?? '')}
cityssm.escapeHTML(occupant.occupantFamilyName ?? '') + ${cityssm.escapeHTML(occupant.occupantFamilyName ?? '')}
'</span>' + </li>`
'<br />'
} }
} }
@ -142,7 +139,11 @@ declare const cityssm: cityssmGlobal
cityssm.escapeHTML(milestone.workOrderDescription ?? '') + cityssm.escapeHTML(milestone.workOrderDescription ?? '') +
'</span>' + '</span>' +
'</div>') + '</div>') +
('<div class="column is-size-7">' + lotOccupancyHTML + '</div>') + ('<div class="column is-size-7">' +
(lotOccupancyHTML === ''
? ''
: '<ul class="fa-ul ml-4">' + lotOccupancyHTML + '</ul>') +
'</div>') +
'</div>' '</div>'
;(currentPanelElement as HTMLElement).append(panelBlockElement) ;(currentPanelElement as HTMLElement).append(panelBlockElement)
} }
@ -162,10 +163,14 @@ declare const cityssm: cityssmGlobal
cityssm.postJSON( cityssm.postJSON(
los.urlPrefix + '/workOrders/doGetWorkOrderMilestones', los.urlPrefix + '/workOrders/doGetWorkOrderMilestones',
workOrderSearchFiltersFormElement, workOrderSearchFiltersFormElement,
(responseJSON: { (responseJSON) => {
renderMilestones(
(
responseJSON as {
workOrderMilestones: recordTypes.WorkOrderMilestone[] workOrderMilestones: recordTypes.WorkOrderMilestone[]
}) => { }
renderMilestones(responseJSON.workOrderMilestones) ).workOrderMilestones
)
} }
) )
} }

View File

@ -12,45 +12,39 @@ Object.defineProperty(exports, "__esModule", { value: true });
function renderWorkOrders(responseJSON) { function renderWorkOrders(responseJSON) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l; var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
if (responseJSON.workOrders.length === 0) { if (responseJSON.workOrders.length === 0) {
searchResultsContainerElement.innerHTML = searchResultsContainerElement.innerHTML = `<div class="message is-info">
'<div class="message is-info">' + <p class="message-body">There are no work orders that meet the search criteria.</p>
'<p class="message-body">There are no work orders that meet the search criteria.</p>' + </div>`;
'</div>';
return; return;
} }
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 workOrder.workOrderLots) {
relatedHTML += relatedHTML += `<li class="has-tooltip-right"
'<span class="has-tooltip-left" data-tooltip="' + data-tooltip="${cityssm.escapeHTML((_a = lot.mapName) !== null && _a !== void 0 ? _a : '')}">
cityssm.escapeHTML((_a = lot.mapName) !== null && _a !== void 0 ? _a : '') + <span class="fa-li">
'">' + <i class="fas fa-fw fa-vector-square"
'<i class="fas fa-fw fa-vector-square" aria-label="' + aria-label="${los.escapedAliases.Lot}"></i>
los.escapedAliases.Lot + </span>
'"></i> ' + ${cityssm.escapeHTML(((_b = lot.lotName) !== null && _b !== void 0 ? _b : '') === ''
cityssm.escapeHTML(((_b = lot.lotName) !== null && _b !== void 0 ? _b : '') === ''
? '(No ' + los.escapedAliases.Lot + ' Name)' ? '(No ' + los.escapedAliases.Lot + ' Name)'
: lot.lotName) + : lot.lotName)}
'</span><br />'; </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 += relatedHTML += `<li class="has-tooltip-right"
'<span class="has-tooltip-left" data-tooltip="' + data-tooltip="${cityssm.escapeHTML((_c = occupant.lotOccupantType) !== null && _c !== void 0 ? _c : '')}">
cityssm.escapeHTML((_c = occupant.lotOccupantType) !== null && _c !== void 0 ? _c : '') + <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(((_d = occupant.fontAwesomeIconClass) !== null && _d !== void 0 ? _d : '') === ''
? 'user' ? 'user'
: occupant.fontAwesomeIconClass) + : occupant.fontAwesomeIconClass)}" aria-label="${los.escapedAliases.occupant}"></i></span>
'" aria-label="' + ${cityssm.escapeHTML(((_e = occupant.occupantName) !== null && _e !== void 0 ? _e : '') === '' &&
los.escapedAliases.occupant + ((_f = occupant.occupantFamilyName) !== null && _f !== void 0 ? _f : '') === ''
'"></i> ' +
cityssm.escapeHTML(((_e = occupant.occupantName) !== null && _e !== void 0 ? _e : '') === '' && ((_f = occupant.occupantFamilyName) !== null && _f !== void 0 ? _f : '') === ''
? '(No Name)' ? '(No Name)'
: occupant.occupantName + ' ' + occupant.occupantFamilyName) + : occupant.occupantName + ' ' + occupant.occupantFamilyName)}
'</span><br />'; </li>`;
} }
} }
resultsTbodyElement.insertAdjacentHTML('beforeend', '<tr>' + resultsTbodyElement.insertAdjacentHTML('beforeend', '<tr>' +
@ -58,9 +52,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
'<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() === ''
? cityssm.escapeHTML((_g = workOrder.workOrderNumber) !== null && _g !== void 0 ? _g : '') ? '(No Number)'
: '(No Number)') + : cityssm.escapeHTML((_g = workOrder.workOrderNumber) !== null && _g !== void 0 ? _g : '')) +
'</a>' + '</a>' +
'</td>') + '</td>') +
('<td>' + ('<td>' +
@ -70,37 +64,43 @@ Object.defineProperty(exports, "__esModule", { value: true });
cityssm.escapeHTML((_j = workOrder.workOrderDescription) !== null && _j !== void 0 ? _j : '') + cityssm.escapeHTML((_j = workOrder.workOrderDescription) !== null && _j !== void 0 ? _j : '') +
'</span>' + '</span>' +
'</td>') + '</td>') +
('<td class="is-nowrap"><span class="is-size-7">' + ('<td>' +
relatedHTML + (relatedHTML === ''
'</span></td>') + ? ''
('<td class="is-nowrap">' + : '<ul class="fa-ul ml-5 is-size-7">' + relatedHTML + '</ul>') +
('<span class="has-tooltip-left" data-tooltip="' + '</td>') +
('<td>' +
'<ul class="fa-ul ml-5 is-size-7">' +
('<li class="has-tooltip-right" data-tooltip="' +
los.escapedAliases.WorkOrderOpenDate + los.escapedAliases.WorkOrderOpenDate +
'">' + '">' +
'<span class="fa-li">' +
'<i class="fas fa-fw fa-play" aria-label="' + '<i class="fas fa-fw fa-play" aria-label="' +
los.escapedAliases.WorkOrderOpenDate + los.escapedAliases.WorkOrderOpenDate +
'"></i> ' + '"></i></span> ' +
workOrder.workOrderOpenDateString + workOrder.workOrderOpenDateString +
'</span><br />') + '</li>') +
('<span class="has-tooltip-left" data-tooltip="' + ('<li class="has-tooltip-right" data-tooltip="' +
los.escapedAliases.WorkOrderCloseDate + los.escapedAliases.WorkOrderCloseDate +
'">' + '">' +
'<span class="fa-li">' +
'<i class="fas fa-fw fa-stop" aria-label="' + '<i class="fas fa-fw fa-stop" aria-label="' +
los.escapedAliases.WorkOrderCloseDate + los.escapedAliases.WorkOrderCloseDate +
'"></i> ' + '"></i></span> ' +
(workOrder.workOrderCloseDate (workOrder.workOrderCloseDate
? workOrder.workOrderCloseDateString ? workOrder.workOrderCloseDateString
: '<span class="has-text-grey">(No ' + : '<span class="has-text-grey">(No ' +
los.escapedAliases.WorkOrderCloseDate + los.escapedAliases.WorkOrderCloseDate +
')</span>') + ')</span>') +
'</span>') + '</li>') +
'</ul>' +
'</td>') + '</td>') +
('<td>' + ('<td>' +
(workOrder.workOrderMilestoneCount === 0 (workOrder.workOrderMilestoneCount === 0
? '-' ? '-'
: workOrder.workOrderMilestoneCompletionCount + : workOrder.workOrderMilestoneCompletionCount.toString() +
' / ' + ' / ' +
workOrder.workOrderMilestoneCount) + workOrder.workOrderMilestoneCount.toString()) +
'</td>') + '</td>') +
(workOrderPrints.length > 0 (workOrderPrints.length > 0
? '<td>' + ? '<td>' +
@ -109,7 +109,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
'/print/' + '/print/' +
workOrderPrints[0] + workOrderPrints[0] +
'/?workOrderId=' + '/?workOrderId=' +
workOrder.workOrderId + workOrder.workOrderId.toString() +
'" target="_blank">' + '" target="_blank">' +
'<i class="fas fa-print" aria-label="Print"></i>' + '<i class="fas fa-print" aria-label="Print"></i>' +
'</a>' + '</a>' +
@ -117,17 +117,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
: '') + : '') +
'</tr>'); '</tr>');
} }
searchResultsContainerElement.innerHTML = searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">
'<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>' + <th>Description</th>
'<th>Description</th>' + <th>Related</th>
'<th>Related</th>' + <th>Date</th>
'<th>Date</th>' + <th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>
'<th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>' + ${workOrderPrints.length > 0 ? '<th class="has-width-1"></th>' : ''}
(workOrderPrints.length > 0 ? '<th class="has-width-1"></th>' : '') + </tr></thead>
'</tr></thead>' + <table>`;
'<table>';
searchResultsContainerElement.insertAdjacentHTML('beforeend', los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count)); searchResultsContainerElement.insertAdjacentHTML('beforeend', los.getSearchResultsPagerHTML(limit, responseJSON.offset, responseJSON.count));
searchResultsContainerElement searchResultsContainerElement
.querySelector('table') .querySelector('table')

View File

@ -35,10 +35,9 @@ declare const cityssm: cityssmGlobal
workOrders: recordTypes.WorkOrder[] workOrders: recordTypes.WorkOrder[]
}): void { }): void {
if (responseJSON.workOrders.length === 0) { if (responseJSON.workOrders.length === 0) {
searchResultsContainerElement.innerHTML = searchResultsContainerElement.innerHTML = `<div class="message is-info">
'<div class="message is-info">' + <p class="message-body">There are no work orders that meet the search criteria.</p>
'<p class="message-body">There are no work orders that meet the search criteria.</p>' + </div>`
'</div>'
return return
} }
@ -49,42 +48,39 @@ declare const cityssm: cityssmGlobal
let relatedHTML = '' let relatedHTML = ''
for (const lot of workOrder.workOrderLots!) { for (const lot of workOrder.workOrderLots!) {
relatedHTML += relatedHTML += `<li class="has-tooltip-right"
'<span class="has-tooltip-left" data-tooltip="' + data-tooltip="${cityssm.escapeHTML(lot.mapName ?? '')}">
cityssm.escapeHTML(lot.mapName ?? '') + <span class="fa-li">
'">' + <i class="fas fa-fw fa-vector-square"
'<i class="fas fa-fw fa-vector-square" aria-label="' + aria-label="${los.escapedAliases.Lot}"></i>
los.escapedAliases.Lot + </span>
'"></i> ' + ${cityssm.escapeHTML(
cityssm.escapeHTML(
(lot.lotName ?? '') === '' (lot.lotName ?? '') === ''
? '(No ' + los.escapedAliases.Lot + ' Name)' ? '(No ' + los.escapedAliases.Lot + ' Name)'
: lot.lotName! : lot.lotName!
) + )}
'</span><br />' </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 += relatedHTML += `<li class="has-tooltip-right"
'<span class="has-tooltip-left" data-tooltip="' + data-tooltip="${cityssm.escapeHTML(
cityssm.escapeHTML(occupant.lotOccupantType ?? '') + occupant.lotOccupantType ?? ''
'">' + )}">
'<i class="fas fa-fw fa-' + <span class="fa-li">
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="' + ${cityssm.escapeHTML(
los.escapedAliases.occupant + (occupant.occupantName ?? '') === '' &&
'"></i> ' + (occupant.occupantFamilyName ?? '') === ''
cityssm.escapeHTML(
(occupant.occupantName ?? '') === '' && (occupant.occupantFamilyName ?? '') === ''
? '(No Name)' ? '(No Name)'
: occupant.occupantName! + ' ' + occupant.occupantFamilyName! : occupant.occupantName! + ' ' + occupant.occupantFamilyName!
) + )}
'</span><br />' </li>`
} }
} }
@ -95,9 +91,9 @@ declare const cityssm: cityssmGlobal
'<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() === ''
? cityssm.escapeHTML(workOrder.workOrderNumber ?? '') ? '(No Number)'
: '(No Number)') + : cityssm.escapeHTML(workOrder.workOrderNumber ?? '')) +
'</a>' + '</a>' +
'</td>') + '</td>') +
('<td>' + ('<td>' +
@ -107,37 +103,43 @@ declare const cityssm: cityssmGlobal
cityssm.escapeHTML(workOrder.workOrderDescription ?? '') + cityssm.escapeHTML(workOrder.workOrderDescription ?? '') +
'</span>' + '</span>' +
'</td>') + '</td>') +
('<td class="is-nowrap"><span class="is-size-7">' + ('<td>' +
relatedHTML + (relatedHTML === ''
'</span></td>') + ? ''
('<td class="is-nowrap">' + : '<ul class="fa-ul ml-5 is-size-7">' + relatedHTML + '</ul>') +
('<span class="has-tooltip-left" data-tooltip="' + '</td>') +
('<td>' +
'<ul class="fa-ul ml-5 is-size-7">' +
('<li class="has-tooltip-right" data-tooltip="' +
los.escapedAliases.WorkOrderOpenDate + los.escapedAliases.WorkOrderOpenDate +
'">' + '">' +
'<span class="fa-li">' +
'<i class="fas fa-fw fa-play" aria-label="' + '<i class="fas fa-fw fa-play" aria-label="' +
los.escapedAliases.WorkOrderOpenDate + los.escapedAliases.WorkOrderOpenDate +
'"></i> ' + '"></i></span> ' +
workOrder.workOrderOpenDateString + workOrder.workOrderOpenDateString! +
'</span><br />') + '</li>') +
('<span class="has-tooltip-left" data-tooltip="' + ('<li class="has-tooltip-right" data-tooltip="' +
los.escapedAliases.WorkOrderCloseDate + los.escapedAliases.WorkOrderCloseDate +
'">' + '">' +
'<span class="fa-li">' +
'<i class="fas fa-fw fa-stop" aria-label="' + '<i class="fas fa-fw fa-stop" aria-label="' +
los.escapedAliases.WorkOrderCloseDate + los.escapedAliases.WorkOrderCloseDate +
'"></i> ' + '"></i></span> ' +
(workOrder.workOrderCloseDate (workOrder.workOrderCloseDate
? workOrder.workOrderCloseDateString ? workOrder.workOrderCloseDateString!
: '<span class="has-text-grey">(No ' + : '<span class="has-text-grey">(No ' +
los.escapedAliases.WorkOrderCloseDate + los.escapedAliases.WorkOrderCloseDate +
')</span>') + ')</span>') +
'</span>') + '</li>') +
'</ul>' +
'</td>') + '</td>') +
('<td>' + ('<td>' +
(workOrder.workOrderMilestoneCount === 0 (workOrder.workOrderMilestoneCount === 0
? '-' ? '-'
: workOrder.workOrderMilestoneCompletionCount + : workOrder.workOrderMilestoneCompletionCount!.toString() +
' / ' + ' / ' +
workOrder.workOrderMilestoneCount) + workOrder.workOrderMilestoneCount!.toString()) +
'</td>') + '</td>') +
(workOrderPrints.length > 0 (workOrderPrints.length > 0
? '<td>' + ? '<td>' +
@ -146,7 +148,7 @@ declare const cityssm: cityssmGlobal
'/print/' + '/print/' +
workOrderPrints[0] + workOrderPrints[0] +
'/?workOrderId=' + '/?workOrderId=' +
workOrder.workOrderId + workOrder.workOrderId!.toString() +
'" target="_blank">' + '" target="_blank">' +
'<i class="fas fa-print" aria-label="Print"></i>' + '<i class="fas fa-print" aria-label="Print"></i>' +
'</a>' + '</a>' +
@ -156,17 +158,16 @@ declare const cityssm: cityssmGlobal
) )
} }
searchResultsContainerElement.innerHTML = searchResultsContainerElement.innerHTML = `<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">
'<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>' + <th>Description</th>
'<th>Description</th>' + <th>Related</th>
'<th>Related</th>' + <th>Date</th>
'<th>Date</th>' + <th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>
'<th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>' + ${workOrderPrints.length > 0 ? '<th class="has-width-1"></th>' : ''}
(workOrderPrints.length > 0 ? '<th class="has-width-1"></th>' : '') + </tr></thead>
'</tr></thead>' + <table>`
'<table>'
searchResultsContainerElement.insertAdjacentHTML( searchResultsContainerElement.insertAdjacentHTML(
'beforeend', 'beforeend',

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,c;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 d=document.createElement("tbody");for(const s of t.lots)d.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 />"+(s.lotOccupancyCount>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(d),null===(o=s.querySelector("button[data-page='previous']"))||void 0===o||o.addEventListener("click",l),null===(c=s.querySelector("button[data-page='next']"))||void 0===c||c.addEventListener("click",i)}function o(){s.innerHTML=e.getLoadingParagraphHTML(`Loading ${e.escapedAliases.Lots}...`),cityssm.postJSON(e.urlPrefix+"/lots/doSearchLots",t,r)}function c(){n.value="0",o()}function l(){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",c);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;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()})();

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,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,o,n,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 O="";for(const s of M.workOrderLots)O+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(null!==(r=s.mapName)&&void 0!==r?r:"")+'"><i class="fas fa-vector-square" aria-label="'+e.escapedAliases.Lot+'"></i> '+cityssm.escapeHTML(null!==(a=s.lotName)&&void 0!==a?a:"")+"</span><br />";for(const s of M.workOrderLotOccupancies)for(const r of s.lotOccupancyOccupants)O+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(null!==(i=r.lotOccupantType)&&void 0!==i?i:"")+'"><i class="fas fa-user" aria-label="'+e.escapedAliases.Occupancy+'"></i> '+cityssm.escapeHTML(null!==(o=r.occupantName)&&void 0!==o?o:"")+" "+cityssm.escapeHTML(null!==(n=r.occupantFamilyName)&&void 0!==n?n:"")+"</span><br />";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">'+O+"</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"),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()})();

View File

@ -1 +1 @@
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=exports.workOrderPrints,s=document.querySelector("#form--searchFilters");e.initializeDatePickers(s);const a=document.querySelector("#container--searchResults"),r=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),o=document.querySelector("#searchFilter--offset");function l(s){var o,l,i,n,p,u,f,m,h,O,k;if(0===s.workOrders.length)return void(a.innerHTML='<div class="message is-info"><p class="message-body">There are no work orders that meet the search criteria.</p></div>');const b=document.createElement("tbody");for(const a of s.workOrders){let s="";for(const t of a.workOrderLots)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(null!==(o=t.mapName)&&void 0!==o?o:"")+'"><i class="fas fa-fw fa-vector-square" aria-label="'+e.escapedAliases.Lot+'"></i> '+cityssm.escapeHTML(""===(null!==(l=t.lotName)&&void 0!==l?l:"")?"(No "+e.escapedAliases.Lot+" Name)":t.lotName)+"</span><br />";for(const t of a.workOrderLotOccupancies)for(const a of t.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(null!==(i=a.lotOccupantType)&&void 0!==i?i:"")+'"><i class="fas fa-fw fa-'+cityssm.escapeHTML(""===(null!==(n=a.fontAwesomeIconClass)&&void 0!==n?n:"")?"user":a.fontAwesomeIconClass)+'" aria-label="'+e.escapedAliases.occupant+'"></i> '+cityssm.escapeHTML(""===(null!==(p=a.occupantName)&&void 0!==p?p:"")&&""===(null!==(u=a.occupantFamilyName)&&void 0!==u?u:"")?"(No Name)":a.occupantName+" "+a.occupantFamilyName)+"</span><br />";b.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.getWorkOrderURL(a.workOrderId)+'">'+(a.workOrderNumber.trim()?cityssm.escapeHTML(null!==(f=a.workOrderNumber)&&void 0!==f?f:""):"(No Number)")+"</a></td><td>"+cityssm.escapeHTML(null!==(m=a.workOrderType)&&void 0!==m?m:"")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(null!==(h=a.workOrderDescription)&&void 0!==h?h:"")+'</span></td><td class="is-nowrap"><span class="is-size-7">'+s+'</span></td><td class="is-nowrap"><span class="has-tooltip-left" data-tooltip="'+e.escapedAliases.WorkOrderOpenDate+'"><i class="fas fa-fw fa-play" aria-label="'+e.escapedAliases.WorkOrderOpenDate+'"></i> '+a.workOrderOpenDateString+'</span><br /><span class="has-tooltip-left" data-tooltip="'+e.escapedAliases.WorkOrderCloseDate+'"><i class="fas fa-fw fa-stop" aria-label="'+e.escapedAliases.WorkOrderCloseDate+'"></i> '+(a.workOrderCloseDate?a.workOrderCloseDateString:'<span class="has-text-grey">(No '+e.escapedAliases.WorkOrderCloseDate+")</span>")+"</span></td><td>"+(0===a.workOrderMilestoneCount?"-":a.workOrderMilestoneCompletionCount+" / "+a.workOrderMilestoneCount)+"</td>"+(t.length>0?'<td><a class="button is-small" data-tooltip="Print" href="'+e.urlPrefix+"/print/"+t[0]+"/?workOrderId="+a.workOrderId+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a></td>':"")+"</tr>")}a.innerHTML='<table class="table is-fullwidth is-striped is-hoverable has-sticky-header"><thead><tr><th>Work Order Number</th><th>Description</th><th>Related</th><th>Date</th><th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>'+(t.length>0?'<th class="has-width-1"></th>':"")+"</tr></thead><table>",a.insertAdjacentHTML("beforeend",e.getSearchResultsPagerHTML(r,s.offset,s.count)),a.querySelector("table").append(b),null===(O=a.querySelector("button[data-page='previous']"))||void 0===O||O.addEventListener("click",c),null===(k=a.querySelector("button[data-page='next']"))||void 0===k||k.addEventListener("click",d)}function i(){a.innerHTML=e.getLoadingParagraphHTML("Loading Work Orders..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doSearchWorkOrders",s,l)}function n(){o.value="0",i()}function c(){o.value=Math.max(Number.parseInt(o.value,10)-r,0).toString(),i()}function d(){o.value=(Number.parseInt(o.value,10)+r).toString(),i()}const p=s.querySelectorAll("input, select");for(const e of p)e.addEventListener("change",n);s.addEventListener("submit",e=>{e.preventDefault()}),i()})(); "use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=exports.workOrderPrints,a=document.querySelector("#form--searchFilters");e.initializeDatePickers(a);const s=document.querySelector("#container--searchResults"),r=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),o=document.querySelector("#searchFilter--offset");function l(a){var o,l,i,n,p,u,f,h,m,O,k;if(0===a.workOrders.length)return void(s.innerHTML='<div class="message is-info">\n <p class="message-body">There are no work orders that meet the search criteria.</p>\n </div>');const b=document.createElement("tbody");for(const s of a.workOrders){let a="";for(const t of s.workOrderLots)a+=`<li class="has-tooltip-right"\n data-tooltip="${cityssm.escapeHTML(null!==(o=t.mapName)&&void 0!==o?o:"")}">\n <span class="fa-li">\n <i class="fas fa-fw fa-vector-square"\n aria-label="${e.escapedAliases.Lot}"></i>\n </span>\n ${cityssm.escapeHTML(""===(null!==(l=t.lotName)&&void 0!==l?l:"")?"(No "+e.escapedAliases.Lot+" Name)":t.lotName)}\n </li>`;for(const t of s.workOrderLotOccupancies)for(const s of t.lotOccupancyOccupants)a+=`<li class="has-tooltip-right"\n data-tooltip="${cityssm.escapeHTML(null!==(i=s.lotOccupantType)&&void 0!==i?i:"")}">\n <span class="fa-li">\n <i class="fas fa-fw fa-${cityssm.escapeHTML(""===(null!==(n=s.fontAwesomeIconClass)&&void 0!==n?n:"")?"user":s.fontAwesomeIconClass)}" aria-label="${e.escapedAliases.occupant}"></i></span>\n ${cityssm.escapeHTML(""===(null!==(p=s.occupantName)&&void 0!==p?p:"")&&""===(null!==(u=s.occupantFamilyName)&&void 0!==u?u:"")?"(No Name)":s.occupantName+" "+s.occupantFamilyName)}\n </li>`;b.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.getWorkOrderURL(s.workOrderId)+'">'+(""===s.workOrderNumber.trim()?"(No Number)":cityssm.escapeHTML(null!==(f=s.workOrderNumber)&&void 0!==f?f:""))+"</a></td><td>"+cityssm.escapeHTML(null!==(h=s.workOrderType)&&void 0!==h?h:"")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(null!==(m=s.workOrderDescription)&&void 0!==m?m:"")+"</span></td><td>"+(""===a?"":'<ul class="fa-ul ml-5 is-size-7">'+a+"</ul>")+'</td><td><ul class="fa-ul ml-5 is-size-7"><li class="has-tooltip-right" data-tooltip="'+e.escapedAliases.WorkOrderOpenDate+'"><span class="fa-li"><i class="fas fa-fw fa-play" aria-label="'+e.escapedAliases.WorkOrderOpenDate+'"></i></span> '+s.workOrderOpenDateString+'</li><li class="has-tooltip-right" data-tooltip="'+e.escapedAliases.WorkOrderCloseDate+'"><span class="fa-li"><i class="fas fa-fw fa-stop" aria-label="'+e.escapedAliases.WorkOrderCloseDate+'"></i></span> '+(s.workOrderCloseDate?s.workOrderCloseDateString:'<span class="has-text-grey">(No '+e.escapedAliases.WorkOrderCloseDate+")</span>")+"</li></ul></td><td>"+(0===s.workOrderMilestoneCount?"-":s.workOrderMilestoneCompletionCount.toString()+" / "+s.workOrderMilestoneCount.toString())+"</td>"+(t.length>0?'<td><a class="button is-small" data-tooltip="Print" href="'+e.urlPrefix+"/print/"+t[0]+"/?workOrderId="+s.workOrderId.toString()+'" target="_blank"><i class="fas fa-print" aria-label="Print"></i></a></td>':"")+"</tr>")}s.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">\n <thead><tr>\n <th>Work Order Number</th>\n <th>Description</th>\n <th>Related</th>\n <th>Date</th>\n <th class="has-tooltip-bottom" data-tooltip="Completed / Total Milestones">Progress</th>\n ${t.length>0?'<th class="has-width-1"></th>':""}\n </tr></thead>\n <table>`,s.insertAdjacentHTML("beforeend",e.getSearchResultsPagerHTML(r,a.offset,a.count)),s.querySelector("table").append(b),null===(O=s.querySelector("button[data-page='previous']"))||void 0===O||O.addEventListener("click",c),null===(k=s.querySelector("button[data-page='next']"))||void 0===k||k.addEventListener("click",d)}function i(){s.innerHTML=e.getLoadingParagraphHTML("Loading Work Orders..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doSearchWorkOrders",a,l)}function n(){o.value="0",i()}function c(){o.value=Math.max(Number.parseInt(o.value,10)-r,0).toString(),i()}function d(){o.value=(Number.parseInt(o.value,10)+r).toString(),i()}const p=a.querySelectorAll("input, select");for(const e of p)e.addEventListener("change",n);a.addEventListener("submit",e=>{e.preventDefault()}),i()})();

View File

@ -1,43 +1,43 @@
<aside class="menu"> <aside class="menu">
<h2 class="menu-label"> <h2 class="menu-label is-hidden-touch">
Administrator Tools Administrator Tools
</h2> </h2>
<ul class="menu-list"> <ul class="menu-list">
<li> <li>
<a class="<%= (headTitle === "Fee Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/fees"> <a class="<%= (headTitle === "Fee Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/fees">
<span class="icon"><i class="fas fa-fw fa-dollar-sign" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-dollar-sign" aria-hidden="true"></i></span>
<span>Fee Management</span> <span class="is-hidden-touch">Fee Management</span>
</a> </a>
</li> </li>
<li> <li>
<a class="<%= (headTitle === configFunctions.getProperty("aliases.occupancy") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/occupancyTypes"> <a class="<%= (headTitle === configFunctions.getProperty("aliases.occupancy") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/occupancyTypes">
<span class="icon"><i class="fas fa-fw fa-user-friends" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-user-friends" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</span> <span class="is-hidden-touch"><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</span>
</a> </a>
</li> </li>
<li> <li>
<a class="<%= (headTitle === configFunctions.getProperty("aliases.lot") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/lotTypes"> <a class="<%= (headTitle === configFunctions.getProperty("aliases.lot") + " Type Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/lotTypes">
<span class="icon"><i class="fas fa-fw fa-vector-square" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-vector-square" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.lot") %> Type Management</span> <span class="is-hidden-touch"><%= configFunctions.getProperty("aliases.lot") %> Type Management</span>
</a> </a>
</li> </li>
<li> <li>
<a class="<%= (headTitle === "Config Table Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/tables"> <a class="<%= (headTitle === "Config Table Management" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/tables">
<span class="icon"><i class="fas fa-fw fa-table" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-table" aria-hidden="true"></i></span>
<span>Config Table Management</span> <span class="is-hidden-touch">Config Table Management</span>
</a> </a>
</li> </li>
<li> <li>
<a class="<%= (headTitle === "Database Maintenance" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/database"> <a class="<%= (headTitle === "Database Maintenance" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/database">
<span class="icon"><i class="fas fa-fw fa-database" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-database" aria-hidden="true"></i></span>
<span>Database Maintenance</span> <span class="is-hidden-touch">Database Maintenance</span>
</a> </a>
</li> </li>
<% if (configFunctions.getProperty("application.ntfyStartup")) { %> <% if (configFunctions.getProperty("application.ntfyStartup")) { %>
<li> <li>
<a class="<%= (headTitle === "Ntfy Startup Notification" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/ntfyStartup"> <a class="<%= (headTitle === "Ntfy Startup Notification" ? "is-active" : "") %>" href="<%= urlPrefix %>/admin/ntfyStartup">
<span class="icon"><i class="far fa-fw fa-comment-alt" aria-hidden="true"></i></span> <span class="icon"><i class="far fa-fw fa-comment-alt" aria-hidden="true"></i></span>
<span>Ntfy Startup Notification</span> <span class="is-hidden-touch">Ntfy Startup Notification</span>
</a> </a>
</li> </li>
<% } %> <% } %>

View File

@ -1,36 +1,36 @@
<aside class="menu"> <aside class="menu">
<h2 class="menu-label"> <h2 class="menu-label is-hidden-touch">
Work Orders Work Orders
</h2> </h2>
<ul class="menu-list"> <ul class="menu-list">
<li> <li>
<a class="<%= (headTitle === "Work Order Search" ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders"> <a class="<%= (headTitle === "Work Order Search" ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders">
<span class="icon"><i class="fas fa-fw fa-hard-hat" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-hard-hat" aria-hidden="true"></i></span>
<span>Work Order Search</span> <span class="is-hidden-touch">Work Order Search</span>
</a> </a>
</li> </li>
</ul> </ul>
<h2 class="menu-label"> <h2 class="menu-label is-hidden-touch">
Milestones Milestones
</h2> </h2>
<ul class="menu-list"> <ul class="menu-list">
<li> <li>
<a class="<%= (headTitle.endsWith("Milestone Calendar") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/milestoneCalendar"> <a class="<%= (headTitle.endsWith("Milestone Calendar") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/milestoneCalendar">
<span class="icon"><i class="fas fa-fw fa-calendar" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-calendar" aria-hidden="true"></i></span>
<span>Milestone Calendar</span> <span class="is-hidden-touch">Milestone Calendar</span>
</a> </a>
</li> </li>
<li> <li>
<a class="<%= (headTitle.endsWith("Outlook Integration") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/outlook"> <a class="<%= (headTitle.endsWith("Outlook Integration") ? "is-active" : "") %>" href="<%= urlPrefix %>/workOrders/outlook">
<span class="icon"><i class="fas fa-fw fa-envelope-open-text" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-envelope-open-text" aria-hidden="true"></i></span>
<span>Outlook Integration</span> <span class="is-hidden-touch">Outlook Integration</span>
</a> </a>
</li> </li>
</ul> </ul>
<h2 class="menu-label"> <h2 class="menu-label is-hidden-touch">
Help Help
</h2> </h2>
<ul class="menu-list"> <ul class="menu-list is-hidden-touch">
<li> <li>
<a href="https://cityssm.github.io/lot-occupancy-system/docs/workOrders.html" target="_blank" rel="noopener noreferrer"> <a href="https://cityssm.github.io/lot-occupancy-system/docs/workOrders.html" target="_blank" rel="noopener noreferrer">
<span class="icon"><i class="fas fa-fw fa-question-circle" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-question-circle" aria-hidden="true"></i></span>

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3 is-hidden-mobile"> <div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-admin'); -%> <%- include('_menu-admin'); -%>
</div> </div>
<div class="column"> <div class="column">

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3 is-hidden-mobile"> <div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-admin'); -%> <%- include('_menu-admin'); -%>
</div> </div>
<div class="column"> <div class="column">
@ -22,23 +22,19 @@
</ul> </ul>
</nav> </nav>
<div class="level"> <div class="columns is-vcentered">
<div class="level-left"> <div class="column">
<div class="level-item is-justify-content-start">
<h1 class="title is-1"> <h1 class="title is-1">
Fee Management Fee Management
</h1> </h1>
</div> </div>
</div> <div class="column has-text-right is-narrow">
<div class="level-right">
<div class="level-item is-justify-content-end">
<button class="button is-success" id="button--addFeeCategory" data-cy="addFeeCategory" type="button" accesskey="n"> <button class="button is-success" id="button--addFeeCategory" data-cy="addFeeCategory" type="button" accesskey="n">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add Fee Category</span> <span>Add Fee Category</span>
</button> </button>
</div> </div>
</div> </div>
</div>
<div id="container--feeCategories"></div> <div id="container--feeCategories"></div>
</div> </div>

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3 is-hidden-mobile"> <div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-admin'); -%> <%- include('_menu-admin'); -%>
</div> </div>
<div class="column"> <div class="column">
@ -10,7 +10,6 @@
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li> <li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
<li> <li>
<a href="#"> <a href="#">
<span class="icon is-small"><i class="fas fa-cog" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-cog" aria-hidden="true"></i></span>
<span>Administrator Tools</span> <span>Administrator Tools</span>
</a> </a>
@ -23,23 +22,19 @@
</ul> </ul>
</nav> </nav>
<div class="level is-mobile"> <div class="columns is-vcentered">
<div class="level-left"> <div class="column">
<div class="level-item">
<h1 class="title is-1"> <h1 class="title is-1">
<%= configFunctions.getProperty("aliases.lot") %> Type Management <%= configFunctions.getProperty("aliases.lot") %> Type Management
</h1> </h1>
</div> </div>
</div> <div class="column has-text-right is-narrow">
<div class="level-right">
<div class="level-item">
<button class="button is-success" id="button--addLotType" type="button" accesskey="n"> <button class="button is-success" id="button--addLotType" type="button" accesskey="n">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add <%= configFunctions.getProperty("aliases.lot") %> Type</span> <span>Add <%= configFunctions.getProperty("aliases.lot") %> Type</span>
</button> </button>
</div> </div>
</div> </div>
</div>
<div id="container--lotTypes"></div> <div id="container--lotTypes"></div>
</div> </div>

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3 is-hidden-mobile"> <div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-admin'); -%> <%- include('_menu-admin'); -%>
</div> </div>
<div class="column"> <div class="column">

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3 is-hidden-mobile"> <div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-admin'); -%> <%- include('_menu-admin'); -%>
</div> </div>
<div class="column"> <div class="column">
@ -10,7 +10,6 @@
<li><a href="<%= urlPrefix %>/dashboard">Home</a></li> <li><a href="<%= urlPrefix %>/dashboard">Home</a></li>
<li> <li>
<a href="#"> <a href="#">
<span class="icon is-small"><i class="fas fa-cog" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-cog" aria-hidden="true"></i></span>
<span>Administrator Tools</span> <span>Administrator Tools</span>
</a> </a>
@ -23,23 +22,19 @@
</ul> </ul>
</nav> </nav>
<div class="level is-mobile"> <div class="columns is-vcentered">
<div class="level-left"> <div class="column">
<div class="level-item">
<h1 class="title is-1"> <h1 class="title is-1">
<%= configFunctions.getProperty("aliases.occupancy") %> Type Management <%= configFunctions.getProperty("aliases.occupancy") %> Type Management
</h1> </h1>
</div> </div>
</div> <div class="column has-text-right is-narrow">
<div class="level-right">
<div class="level-item">
<button class="button is-success" id="button--addOccupancyType" type="button" accesskey="n"> <button class="button is-success" id="button--addOccupancyType" type="button" accesskey="n">
<span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-plus" aria-hidden="true"></i></span>
<span>Add <%= configFunctions.getProperty("aliases.occupancy") %> Type</span> <span>Add <%= configFunctions.getProperty("aliases.occupancy") %> Type</span>
</button> </button>
</div> </div>
</div> </div>
</div>
<div class="tabs is-boxed" role="tablist"> <div class="tabs is-boxed" role="tablist">
<ul role="presentation"> <ul role="presentation">

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3 is-hidden-mobile"> <div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-admin'); -%> <%- include('_menu-admin'); -%>
</div> </div>
<div class="column"> <div class="column">

View File

@ -106,12 +106,12 @@
<% } %> <% } %>
</span> </span>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/workOrders">
<div class="level is-marginless is-mobile"> <div class="level is-marginless is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/workOrders">Work Orders</a> Work Orders
</h2> </h2>
</div> </div>
</div> </div>
@ -125,20 +125,17 @@
</div> </div>
</div> </div>
<p>View and maintain work orders.</p> <p>View and maintain work orders.</p>
</div> </div>
</div> </a>
</div>
<div class="card-footer">
<% if (user.userProperties.canUpdate) { %> <% if (user.userProperties.canUpdate) { %>
<a class="card-footer-item" href="<%= urlPrefix %>/workOrders/new"> <a class="button is-fullwidth is-success is-light mb-2" href="<%= urlPrefix %>/workOrders/new">
<span class="icon"> <span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i> <i class="fas fa-plus" aria-hidden="true"></i>
</span> </span>
<span>New Work Order</span> <span>New Work Order</span>
</a> </a>
<% } %> <% } %>
<a class="card-footer-item" href="<%= urlPrefix %>/workOrders/milestoneCalendar"> <a class="button is-fullwidth is-link is-light" href="<%= urlPrefix %>/workOrders/milestoneCalendar">
<span class="icon"> <span class="icon">
<i class="fas fa-calendar" aria-hidden="true"></i> <i class="fas fa-calendar" aria-hidden="true"></i>
</span> </span>
@ -147,6 +144,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="column"> <div class="column">
<div class="card is-hover-container"> <div class="card is-hover-container">
<div class="card-content"> <div class="card-content">
@ -160,14 +158,12 @@
<% } %> <% } %>
</span> </span>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/lotOccupancies">
<div class="level is-marginless is-mobile"> <div class="level is-marginless is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/lotOccupancies">
<%= configFunctions.getProperty("aliases.occupancies") %> <%= configFunctions.getProperty("aliases.occupancies") %>
</a>
</h2> </h2>
</div> </div>
</div> </div>
@ -185,21 +181,19 @@
<%= configFunctions.getProperty("aliases.occupancies").toLowerCase() %>. <%= configFunctions.getProperty("aliases.occupancies").toLowerCase() %>.
</p> </p>
</div> </div>
</div> </a>
</div>
<% if (user.userProperties.canUpdate) { %> <% if (user.userProperties.canUpdate) { %>
<div class="card-footer"> <a class="button is-fullwidth is-success is-light" href="<%= urlPrefix %>/lotOccupancies/new">
<a class="card-footer-item" href="<%= urlPrefix %>/lotOccupancies/new">
<span class="icon"> <span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i> <i class="fas fa-plus" aria-hidden="true"></i>
</span> </span>
<span>New <%= configFunctions.getProperty("aliases.occupancy") %></span> <span>New <%= configFunctions.getProperty("aliases.occupancy") %></span>
</a> </a>
</div>
<% } %> <% } %>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="columns is-desktop"> <div class="columns is-desktop">
<div class="column"> <div class="column">
<div class="card is-hover-container"> <div class="card is-hover-container">
@ -208,12 +202,12 @@
<div class="media-left"> <div class="media-left">
<i class="fas fa-4x fa-fw fa-vector-square" aria-hidden="true"></i> <i class="fas fa-4x fa-fw fa-vector-square" aria-hidden="true"></i>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/lots">
<div class="level is-marginless is-mobile"> <div class="level is-marginless is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/lots"><%= configFunctions.getProperty("aliases.lots") %></a> <%= configFunctions.getProperty("aliases.lots") %>
</h2> </h2>
</div> </div>
</div> </div>
@ -231,21 +225,19 @@
<%= configFunctions.getProperty("aliases.lots").toLowerCase() %> within a <%= configFunctions.getProperty("aliases.lots").toLowerCase() %> within a
<%= configFunctions.getProperty("aliases.map").toLowerCase() %>. <%= configFunctions.getProperty("aliases.map").toLowerCase() %>.
</p> </p>
</div> </a>
</div>
</div> </div>
<% if (user.userProperties.canUpdate) { %> <% if (user.userProperties.canUpdate) { %>
<div class="card-footer"> <a class="button is-fullwidth is-success is-light" href="<%= urlPrefix %>/lots/new">
<a class="card-footer-item" href="<%= urlPrefix %>/lots/new">
<span class="icon"> <span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i> <i class="fas fa-plus" aria-hidden="true"></i>
</span> </span>
<span>New <%= configFunctions.getProperty("aliases.lot") %></span> <span>New <%= configFunctions.getProperty("aliases.lot") %></span>
</a> </a>
</div>
<% } %> <% } %>
</div> </div>
</div> </div>
</div>
<div class="column"> <div class="column">
<div class="card is-hover-container"> <div class="card is-hover-container">
<div class="card-content"> <div class="card-content">
@ -253,12 +245,12 @@
<div class="media-left"> <div class="media-left">
<i class="far fa-4x fa-fw fa-map" aria-hidden="true"></i> <i class="far fa-4x fa-fw fa-map" aria-hidden="true"></i>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/maps">
<div class="level is-marginless is-mobile"> <div class="level is-marginless is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/maps"><%= configFunctions.getProperty("aliases.maps") %></a> <%= configFunctions.getProperty("aliases.maps") %>
</h2> </h2>
</div> </div>
</div> </div>
@ -272,22 +264,20 @@
</div> </div>
</div> </div>
<p>View and maintain <%= configFunctions.getProperty("aliases.maps").toLowerCase() %>.</p> <p>View and maintain <%= configFunctions.getProperty("aliases.maps").toLowerCase() %>.</p>
</div> </a>
</div>
</div> </div>
<% if (user.userProperties.canUpdate) { %> <% if (user.userProperties.canUpdate) { %>
<div class="card-footer"> <a class="button is-fullwidth is-success is-light" href="<%= urlPrefix %>/maps/new">
<a class="card-footer-item" href="<%= urlPrefix %>/maps/new">
<span class="icon"> <span class="icon">
<i class="fas fa-plus" aria-hidden="true"></i> <i class="fas fa-plus" aria-hidden="true"></i>
</span> </span>
<span>New <%= configFunctions.getProperty("aliases.map") %></span> <span>New <%= configFunctions.getProperty("aliases.map") %></span>
</a> </a>
</div>
<% } %> <% } %>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="columns is-desktop"> <div class="columns is-desktop">
<div class="column"> <div class="column">
<div class="card"> <div class="card">
@ -296,12 +286,12 @@
<div class="media-left"> <div class="media-left">
<i class="fas fa-4x fa-fw fa-file" aria-hidden="true"></i> <i class="fas fa-4x fa-fw fa-file" aria-hidden="true"></i>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/reports">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/reports">Report Library</a> Report Library
</h2> </h2>
<p>Produce reports and export data.</p> <p>Produce reports and export data.</p>
</div> </a>
</div> </div>
</div> </div>
</div> </div>
@ -313,13 +303,12 @@
<div class="media-left"> <div class="media-left">
<i class="fas fa-4x fa-fw fa-question-circle" aria-hidden="true"></i> <i class="fas fa-4x fa-fw fa-question-circle" aria-hidden="true"></i>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="https://cityssm.github.io/lot-occupancy-system/docs" target="_blank" rel="noopener noreferrer">
<div class="level is-marginless is-mobile"> <div class="level is-marginless is-mobile">
<div class="level-left"> <div class="level-left">
<div class="level-item"> <div class="level-item">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="https://cityssm.github.io/lot-occupancy-system/docs" target="_blank" Help
rel="noopener noreferrer">Help</a>
</h2> </h2>
</div> </div>
</div> </div>
@ -333,16 +322,14 @@
</div> </div>
</div> </div>
<p>Instructions on how to use this application.</p> <p>Instructions on how to use this application.</p>
</a>
</div> </div>
</div> <a class="button is-fullwidth is-link is-light has-tooltip-bottom" data-tooltip="Latest Updates, Issue Tracker, Say Hello"
</div>
<div class="card-footer">
<a class="card-footer-item has-tooltip-bottom" data-tooltip="Latest Updates, Issue Tracker, Say Hello"
href="https://github.com/cityssm/lot-occupancy-system" target="_blank" rel="noreferrer"> href="https://github.com/cityssm/lot-occupancy-system" target="_blank" rel="noreferrer">
<span class="icon"> <span class="icon">
<i class="fab fa-github" aria-hidden="true"></i> <i class="fab fa-github" aria-hidden="true"></i>
</span> </span>
GitHub <span>GitHub</span>
</a> </a>
</div> </div>
</div> </div>
@ -361,9 +348,9 @@
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i> <i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span> </span>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/admin/fees">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/admin/fees">Fee Management</a> Fee Management
</h2> </h2>
<p> <p>
Manage fees for Manage fees for
@ -372,7 +359,7 @@
and specific and specific
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types. <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types.
</p> </p>
</div> </a>
</div> </div>
</div> </div>
<div class="card-content"> <div class="card-content">
@ -383,9 +370,9 @@
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i> <i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span> </span>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/admin/occupancyTypes">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/admin/occupancyTypes"><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</a> <%= configFunctions.getProperty("aliases.occupancy") %> Type Management
</h2> </h2>
<p> <p>
Manage Manage
@ -393,7 +380,7 @@
the fields associated with them, the fields associated with them,
and their available print options. and their available print options.
</p> </p>
</div> </a>
</div> </div>
</div> </div>
<div class="card-content"> <div class="card-content">
@ -404,16 +391,16 @@
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i> <i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span> </span>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/admin/lotTypes">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/admin/lotTypes"><%= configFunctions.getProperty("aliases.lot") %> Type Management</a> <%= configFunctions.getProperty("aliases.lot") %> Type Management
</h2> </h2>
<p> <p>
Manage Manage
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> types
and fields associated with them. and fields associated with them.
</p> </p>
</div> </a>
</div> </div>
</div> </div>
<div class="card-content"> <div class="card-content">
@ -424,9 +411,9 @@
<i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i> <i class="fas fa-cog" data-fa-transform="shrink-8 right-8 down-5" data-fa-glow="10"></i>
</span> </span>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/admin/tables">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/admin/tables">Config Table Management</a> Config Table Management
</h2> </h2>
<p> <p>
Manage simple configuration tables fees for Manage simple configuration tables fees for
@ -434,7 +421,7 @@
<%= configFunctions.getProperty("aliases.lot").toLowerCase() %> statuses, <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> statuses,
and <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> <%= configFunctions.getProperty("aliases.occupant").toLowerCase() %> types. and <%= configFunctions.getProperty("aliases.lot").toLowerCase() %> <%= configFunctions.getProperty("aliases.occupant").toLowerCase() %> types.
</p> </p>
</div> </a>
</div> </div>
</div> </div>
<div class="card-content"> <div class="card-content">
@ -442,15 +429,15 @@
<div class="media-left"> <div class="media-left">
<i class="fas fa-4x fa-fw fa-database" aria-hidden="true"></i> <i class="fas fa-4x fa-fw fa-database" aria-hidden="true"></i>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/admin/database">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/admin/database">Database Maintenance</a> Database Maintenance
</h2> </h2>
<p> <p>
Backup the database before making significant updates. Backup the database before making significant updates.
Permanently delete records that have been previously deleted from the database. Permanently delete records that have been previously deleted from the database.
</p> </p>
</div> </a>
</div> </div>
</div> </div>
<% if (configFunctions.getProperty("application.ntfyStartup")) { %> <% if (configFunctions.getProperty("application.ntfyStartup")) { %>
@ -459,14 +446,14 @@
<div class="media-left"> <div class="media-left">
<i class="far fa-4x fa-fw fa-comment-alt" aria-hidden="true"></i> <i class="far fa-4x fa-fw fa-comment-alt" aria-hidden="true"></i>
</div> </div>
<div class="media-content has-text-black"> <a class="media-content" href="<%= urlPrefix %>/admin/ntfyStartup">
<h2 class="title is-4 is-marginless"> <h2 class="title is-4 is-marginless has-text-link">
<a href="<%= urlPrefix %>/admin/ntfyStartup">Ntfy Startup Notification</a> Ntfy Startup Notification
</h2> </h2>
<p> <p>
Subscribe to application startup notifications on a phone or a desktop computer. Subscribe to application startup notifications on a phone or a desktop computer.
</p> </p>
</div> </a>
</div> </div>
</div> </div>
<% } %> <% } %>

View File

@ -77,8 +77,14 @@
<hr /> <hr />
<div class="has-text-right has-text-grey-dark is-size-7"> <div class="has-text-right has-text-grey-dark is-size-7">
Build <%= buildNumber %><br /> Build <%= buildNumber %><br />
<a class="has-text-grey-dark" href="https://cityssm.github.io/lot-occupancy-system/docs" target="_blank" rel="nofollow noreferrer" accesskey="h">Help</a> <a class="has-text-grey-dark" href="https://cityssm.github.io/lot-occupancy-system/docs" target="_blank" rel="nofollow noreferrer" accesskey="h">
<a class="has-text-grey-dark ml-4" href="https://github.com/cityssm/lot-occupancy-system" target="_blank" rel="noreferrer">GitHub</a> <i class="fas fa-question-circle" aria-hidden="true"></i>
Help
</a>
<a class="has-text-grey-dark ml-4" href="https://github.com/cityssm/lot-occupancy-system" target="_blank" rel="noreferrer">
<i class="fab fa-github" aria-hidden="true"></i>
GitHub
</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -12,22 +12,18 @@
</ul> </ul>
</nav> </nav>
<div class="level is-mobile"> <div class="columns is-vcentered">
<div class="level-left"> <div class="column">
<div class="level-item">
<h1 class="title is-1"> <h1 class="title is-1">
Find a <%= configFunctions.getProperty("aliases.map") %> Find a <%= configFunctions.getProperty("aliases.map") %>
</h1> </h1>
</div> </div>
</div> <div class="column has-text-right is-narrow">
<div class="level-right">
<div class="level-item">
<a class="button" href="<%= urlPrefix %>/reports/maps-formatted" target="_blank" download> <a class="button" href="<%= urlPrefix %>/reports/maps-formatted" target="_blank" download>
<span class="icon is-small"><i class="fas fa-download" aria-hidden="true"></i></span> <span class="icon is-small"><i class="fas fa-download" aria-hidden="true"></i></span>
<span>Export</span> <span>Export</span>
</a> </a>
</div> </div>
</div>
</div> </div>
<% if (user.userProperties.canUpdate) { %> <% if (user.userProperties.canUpdate) { %>

View File

@ -1,51 +1,51 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3"> <div class="column is-3-desktop is-narrow-touch">
<aside class="menu"> <aside class="menu">
<h2 class="menu-label"> <h2 class="menu-label is-hidden-touch">
Reports Reports
</h2> </h2>
<ul class="menu-list"> <ul class="menu-list">
<li> <li>
<a class="is-active" href="#tab--workOrders"> <a class="is-active" href="#tab--workOrders">
<span class="icon"><i class="fas fa-fw fa-hard-hat" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-hard-hat" aria-hidden="true"></i></span>
<span>Work Orders</span> <span class="is-hidden-touch">Work Orders</span>
</a> </a>
</li> </li>
<li> <li>
<a href="#tab--lotOccupancies"> <a href="#tab--lotOccupancies">
<span class="icon"><i class="fas fa-fw fa-user" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-user" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.occupancies") %></span> <span class="is-hidden-touch"><%= configFunctions.getProperty("aliases.occupancies") %></span>
</a> </a>
</li> </li>
<li> <li>
<a href="#tab--lots"> <a href="#tab--lots">
<span class="icon"><i class="fas fa-fw fa-vector-square" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-vector-square" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.lots") %></span> <span class="is-hidden-touch"><%= configFunctions.getProperty("aliases.lots") %></span>
</a> </a>
</li> </li>
<li> <li>
<a href="#tab--maps"> <a href="#tab--maps">
<span class="icon"><i class="far fa-fw fa-map" aria-hidden="true"></i></span> <span class="icon"><i class="far fa-fw fa-map" aria-hidden="true"></i></span>
<span><%= configFunctions.getProperty("aliases.maps") %></span> <span class="is-hidden-touch"><%= configFunctions.getProperty("aliases.maps") %></span>
</a> </a>
</li> </li>
</ul> </ul>
<h2 class="menu-label"> <h2 class="menu-label is-hidden-touch">
Table Exports Table Exports
</h2> </h2>
<ul class="menu-list"> <ul class="menu-list">
<li> <li>
<a href="#tab--dataTableExports"> <a href="#tab--dataTableExports">
<span class="icon"><i class="fas fa-fw fa-table" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-table" aria-hidden="true"></i></span>
<span>Data Tables</span> <span class="is-hidden-touch">Data Tables</span>
</a> </a>
</li> </li>
<li> <li>
<a href="#tab--configTableExports"> <a href="#tab--configTableExports">
<span class="icon"><i class="fas fa-fw fa-table" aria-hidden="true"></i></span> <span class="icon"><i class="fas fa-fw fa-table" aria-hidden="true"></i></span>
<span>Config Tables</span> <span class="is-hidden-touch">Config Tables</span>
</a> </a>
</li> </li>
</ul> </ul>

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3 is-hidden-mobile"> <div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-workOrders'); -%> <%- include('_menu-workOrders'); -%>
</div> </div>
<div class="column"> <div class="column">

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3 is-hidden-mobile"> <div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-workOrders'); -%> <%- include('_menu-workOrders'); -%>
</div> </div>
<div class="column"> <div class="column">

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%> <%- include('_header'); -%>
<div class="columns"> <div class="columns is-mobile">
<div class="column is-3 is-hidden-mobile"> <div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-workOrders'); -%> <%- include('_menu-workOrders'); -%>
</div> </div>
<div class="column"> <div class="column">

View File

@ -206,15 +206,21 @@
</td> </td>
<td> <td>
<% if (lotOccupancy.lotOccupancyOccupants.length === 0) { %> <% if (lotOccupancy.lotOccupancyOccupants.length === 0) { %>
<span class="has-text-grey">(No <%= configFunctions.getProperty("aliases.occupants") %>)</span> <span class="has-text-grey">(
No <%= configFunctions.getProperty("aliases.occupants") %>)
</span>
<% } else { %> <% } else { %>
<ul class="fa-ul ml-5">
<% for (const occupant of lotOccupancy.lotOccupancyOccupants) { %> <% for (const occupant of lotOccupancy.lotOccupancyOccupants) { %>
<span class="has-tooltip-left" data-tooltip="<%= occupant.lotOccupantType %>"> <li class="has-tooltip-right" data-tooltip="<%= occupant.lotOccupantType %>">
<span class="fa-li">
<i class="fas fa-fw fa-<%= occupant.fontAwesomeIconClass || 'user' %>" aria-hidden="true"></i> <i class="fas fa-fw fa-<%= occupant.fontAwesomeIconClass || 'user' %>" aria-hidden="true"></i>
</span>
<%= occupant.occupantName %> <%= occupant.occupantName %>
<%= occupant.occupantFamilyName %> <%= occupant.occupantFamilyName %>
</span><br /> </li>
<% } %> <% } %>
</ul>
<% } %> <% } %>
</td> </td>
</tr> </tr>