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 = '';
for (const occupant of lotOccupancy.lotOccupancyOccupants) {
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 : '') +
'">' +
('<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 : '') === ''
? 'user'
: occupant.fontAwesomeIconClass) +
'" aria-hidden="true"></i> ') +
'" aria-hidden="true"></i></span> ') +
cityssm.escapeHTML((_c = occupant.occupantName) !== null && _c !== void 0 ? _c : '') +
' ' +
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) => {
var _a, _b, _c;
@ -107,7 +107,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
? lotOccupancy.occupancyEndDateString
: '<span class="has-text-grey">(No End Date)</span>') +
'</td>') +
('<td>' + occupantsHTML + '</td>') +
('<td>' +
(occupantsHTML === ''
? ''
: '<ul class="fa-ul">' + occupantsHTML + '</ul>') +
'</td>') +
('<td>' + feeIconHTML + '</td>') +
'<td>' +
(lotOccupancy.printEJS

View File

@ -72,20 +72,20 @@ declare const cityssm: cityssmGlobal
for (const occupant of lotOccupancy.lotOccupancyOccupants!) {
occupantsHTML +=
'<span class="has-tooltip-left" data-tooltip="' +
'<li class="has-tooltip-right" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType ?? '') +
'">' +
('<i class="fas fa-fw fa-' +
('<span class="fa-li"><i class="fas fa-fw fa-' +
cityssm.escapeHTML(
(occupant.fontAwesomeIconClass ?? '') === ''
? 'user'
: occupant.fontAwesomeIconClass!
) +
'" aria-hidden="true"></i> ') +
'" aria-hidden="true"></i></span> ') +
cityssm.escapeHTML(occupant.occupantName ?? '') +
' ' +
cityssm.escapeHTML(occupant.occupantFamilyName ?? '') +
'</span><br />'
'</li>'
}
const feeTotal = (
@ -153,10 +153,14 @@ declare const cityssm: cityssmGlobal
('<td>' + lotOccupancy.occupancyStartDateString! + '</td>') +
('<td>' +
(lotOccupancy.occupancyEndDate
? lotOccupancy.occupancyEndDateString
? lotOccupancy.occupancyEndDateString!
: '<span class="has-text-grey">(No End Date)</span>') +
'</td>') +
('<td>' + occupantsHTML + '</td>') +
('<td>' +
(occupantsHTML === ''
? ''
: '<ul class="fa-ul">' + occupantsHTML + '</ul>') +
'</td>') +
('<td>' + feeIconHTML + '</td>') +
'<td>' +
(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 offsetElement = document.querySelector('#searchFilter--offset');
function renderLots(responseJSON) {
var _a, _b, _c, _d;
var _a, _b, _c, _d, _e;
if (responseJSON.lots.length === 0) {
searchResultsContainerElement.innerHTML = `<div class="message is-info">
<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)
: '<span class="has-text-grey">(No Status)</span>') +
'<br />' +
(lot.lotOccupancyCount > 0
(((_c = lot.lotOccupancyCount) !== null && _c !== void 0 ? _c : 0) > 0
? '<span class="is-size-7">Currently Occupied</span>'
: '') +
'</td>') +
@ -58,10 +58,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
searchResultsContainerElement
.querySelector('table')
.append(resultsTbodyElement);
(_c = searchResultsContainerElement
.querySelector("button[data-page='previous']")) === null || _c === void 0 ? void 0 : _c.addEventListener('click', previousAndGetLots);
(_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() {
searchResultsContainerElement.innerHTML = los.getLoadingParagraphHTML(`Loading ${los.escapedAliases.Lots}...`);

View File

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

View File

@ -158,7 +158,7 @@ declare const bulmaJS: BulmaJS
})
// 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
const datePickerNavButtonElements = datepickerElement.querySelectorAll(

View File

@ -318,6 +318,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
else {
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>' +
lotOccupancy.occupancyStartDateString +
'</td>' +
@ -328,27 +341,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
'</td>') +
('<td>' +
(lotOccupancy.lotOccupancyOccupants.length === 0
? '<span class="has-text-grey">(No ' +
los.escapedAliases.Occupants +
')</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 />');
}, '')) +
? `<span class="has-text-grey">(No ${los.escapedAliases.Occupants})</span>`
: `<ul class="fa-ul ml-5">${occupantsHTML}</ul>`) +
'</td>') +
('<td>' +
'<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) +
(lotOccupancy.lotOccupancyOccupants.length > 1
? ' plus ' +
(lotOccupancy.lotOccupancyOccupants.length - 1)
(lotOccupancy.lotOccupancyOccupants.length - 1).toString()
: '')) +
'</td>'));
rowElement

View File

@ -162,6 +162,19 @@ function renderRelatedOccupancies() {
else {
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>' +
lotOccupancy.occupancyStartDateString +
'</td>' +
@ -172,27 +185,8 @@ function renderRelatedOccupancies() {
'</td>') +
('<td>' +
(lotOccupancy.lotOccupancyOccupants.length === 0
? '<span class="has-text-grey">(No ' +
los.escapedAliases.Occupants +
')</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 />');
}, '')) +
? `<span class="has-text-grey">(No ${los.escapedAliases.Occupants})</span>`
: `<ul class="fa-ul ml-5">${occupantsHTML}</ul>`) +
'</td>') +
('<td>' +
'<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) +
(lotOccupancy.lotOccupancyOccupants.length > 1
? ' plus ' +
(lotOccupancy.lotOccupancyOccupants.length - 1)
(lotOccupancy.lotOccupancyOccupants.length - 1).toString()
: '')) +
'</td>'));
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(
'beforeend',
'<td>' +
lotOccupancy.occupancyStartDateString +
lotOccupancy.occupancyStartDateString! +
'</td>' +
('<td>' +
(lotOccupancy.occupancyEndDate
? lotOccupancy.occupancyEndDateString
? lotOccupancy.occupancyEndDateString!
: '<span class="has-text-grey">(No End Date)</span>') +
'</td>') +
('<td>' +
(lotOccupancy.lotOccupancyOccupants!.length === 0
? '<span class="has-text-grey">(No ' +
los.escapedAliases.Occupants +
')</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 />'
)
}, '')) +
? `<span class="has-text-grey">(No ${los.escapedAliases.Occupants})</span>`
: `<ul class="fa-ul ml-5">${occupantsHTML}</ul>`) +
'</td>') +
('<td>' +
'<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
? ' plus ' +
(lotOccupancy.lotOccupancyOccupants!.length - 1)
(lotOccupancy.lotOccupancyOccupants!.length - 1).toString()
: '')) +
'</td>')
)

View File

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

View File

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

View File

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

View File

@ -35,10 +35,9 @@ declare const cityssm: cityssmGlobal
workOrders: recordTypes.WorkOrder[]
}): void {
if (responseJSON.workOrders.length === 0) {
searchResultsContainerElement.innerHTML =
'<div class="message is-info">' +
'<p class="message-body">There are no work orders that meet the search criteria.</p>' +
'</div>'
searchResultsContainerElement.innerHTML = `<div class="message is-info">
<p class="message-body">There are no work orders that meet the search criteria.</p>
</div>`
return
}
@ -49,42 +48,39 @@ declare const cityssm: cityssmGlobal
let relatedHTML = ''
for (const lot of workOrder.workOrderLots!) {
relatedHTML +=
'<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(lot.mapName ?? '') +
'">' +
'<i class="fas fa-fw fa-vector-square" aria-label="' +
los.escapedAliases.Lot +
'"></i> ' +
cityssm.escapeHTML(
relatedHTML += `<li class="has-tooltip-right"
data-tooltip="${cityssm.escapeHTML(lot.mapName ?? '')}">
<span class="fa-li">
<i class="fas fa-fw fa-vector-square"
aria-label="${los.escapedAliases.Lot}"></i>
</span>
${cityssm.escapeHTML(
(lot.lotName ?? '') === ''
? '(No ' + los.escapedAliases.Lot + ' Name)'
: lot.lotName!
) +
'</span><br />'
)}
</li>`
}
for (const occupancy of workOrder.workOrderLotOccupancies!) {
for (const occupant of occupancy.lotOccupancyOccupants!) {
relatedHTML +=
'<span class="has-tooltip-left" data-tooltip="' +
cityssm.escapeHTML(occupant.lotOccupantType ?? '') +
'">' +
'<i class="fas fa-fw fa-' +
cityssm.escapeHTML(
relatedHTML += `<li class="has-tooltip-right"
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> ' +
cityssm.escapeHTML(
(occupant.occupantName ?? '') === '' && (occupant.occupantFamilyName ?? '') === ''
)}" aria-label="${los.escapedAliases.occupant}"></i></span>
${cityssm.escapeHTML(
(occupant.occupantName ?? '') === '' &&
(occupant.occupantFamilyName ?? '') === ''
? '(No Name)'
: occupant.occupantName! + ' ' + occupant.occupantFamilyName!
) +
'</span><br />'
)}
</li>`
}
}
@ -95,9 +91,9 @@ declare const cityssm: cityssmGlobal
'<a class="has-text-weight-bold" href="' +
los.getWorkOrderURL(workOrder.workOrderId) +
'">' +
(workOrder.workOrderNumber!.trim()
? cityssm.escapeHTML(workOrder.workOrderNumber ?? '')
: '(No Number)') +
(workOrder.workOrderNumber!.trim() === ''
? '(No Number)'
: cityssm.escapeHTML(workOrder.workOrderNumber ?? '')) +
'</a>' +
'</td>') +
('<td>' +
@ -107,37 +103,43 @@ declare const cityssm: cityssmGlobal
cityssm.escapeHTML(workOrder.workOrderDescription ?? '') +
'</span>' +
'</td>') +
('<td class="is-nowrap"><span class="is-size-7">' +
relatedHTML +
'</span></td>') +
('<td class="is-nowrap">' +
('<span class="has-tooltip-left" data-tooltip="' +
('<td>' +
(relatedHTML === ''
? ''
: '<ul class="fa-ul ml-5 is-size-7">' + relatedHTML + '</ul>') +
'</td>') +
('<td>' +
'<ul class="fa-ul ml-5 is-size-7">' +
('<li class="has-tooltip-right" data-tooltip="' +
los.escapedAliases.WorkOrderOpenDate +
'">' +
'<span class="fa-li">' +
'<i class="fas fa-fw fa-play" aria-label="' +
los.escapedAliases.WorkOrderOpenDate +
'"></i> ' +
workOrder.workOrderOpenDateString +
'</span><br />') +
('<span class="has-tooltip-left" data-tooltip="' +
'"></i></span> ' +
workOrder.workOrderOpenDateString! +
'</li>') +
('<li class="has-tooltip-right" data-tooltip="' +
los.escapedAliases.WorkOrderCloseDate +
'">' +
'<span class="fa-li">' +
'<i class="fas fa-fw fa-stop" aria-label="' +
los.escapedAliases.WorkOrderCloseDate +
'"></i> ' +
'"></i></span> ' +
(workOrder.workOrderCloseDate
? workOrder.workOrderCloseDateString
? workOrder.workOrderCloseDateString!
: '<span class="has-text-grey">(No ' +
los.escapedAliases.WorkOrderCloseDate +
')</span>') +
'</span>') +
'</li>') +
'</ul>' +
'</td>') +
('<td>' +
(workOrder.workOrderMilestoneCount === 0
? '-'
: workOrder.workOrderMilestoneCompletionCount +
: workOrder.workOrderMilestoneCompletionCount!.toString() +
' / ' +
workOrder.workOrderMilestoneCount) +
workOrder.workOrderMilestoneCount!.toString()) +
'</td>') +
(workOrderPrints.length > 0
? '<td>' +
@ -146,7 +148,7 @@ declare const cityssm: cityssmGlobal
'/print/' +
workOrderPrints[0] +
'/?workOrderId=' +
workOrder.workOrderId +
workOrder.workOrderId!.toString() +
'" target="_blank">' +
'<i class="fas fa-print" aria-label="Print"></i>' +
'</a>' +
@ -156,17 +158,16 @@ declare const cityssm: cityssmGlobal
)
}
searchResultsContainerElement.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>' +
(workOrderPrints.length > 0 ? '<th class="has-width-1"></th>' : '') +
'</tr></thead>' +
'<table>'
searchResultsContainerElement.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>
${workOrderPrints.length > 0 ? '<th class="has-width-1"></th>' : ''}
</tr></thead>
<table>`
searchResultsContainerElement.insertAdjacentHTML(
'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">
<h2 class="menu-label">
<h2 class="menu-label is-hidden-touch">
Administrator Tools
</h2>
<ul class="menu-list">
<li>
<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>Fee Management</span>
<span class="is-hidden-touch">Fee Management</span>
</a>
</li>
<li>
<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><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</span>
<span class="is-hidden-touch"><%= configFunctions.getProperty("aliases.occupancy") %> Type Management</span>
</a>
</li>
<li>
<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><%= configFunctions.getProperty("aliases.lot") %> Type Management</span>
<span class="is-hidden-touch"><%= configFunctions.getProperty("aliases.lot") %> Type Management</span>
</a>
</li>
<li>
<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>Config Table Management</span>
<span class="is-hidden-touch">Config Table Management</span>
</a>
</li>
<li>
<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>Database Maintenance</span>
<span class="is-hidden-touch">Database Maintenance</span>
</a>
</li>
<% if (configFunctions.getProperty("application.ntfyStartup")) { %>
<li>
<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>Ntfy Startup Notification</span>
<span class="is-hidden-touch">Ntfy Startup Notification</span>
</a>
</li>
<% } %>

View File

@ -1,36 +1,36 @@
<aside class="menu">
<h2 class="menu-label">
<h2 class="menu-label is-hidden-touch">
Work Orders
</h2>
<ul class="menu-list">
<li>
<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>Work Order Search</span>
<span class="is-hidden-touch">Work Order Search</span>
</a>
</li>
</ul>
<h2 class="menu-label">
<h2 class="menu-label is-hidden-touch">
Milestones
</h2>
<ul class="menu-list">
<li>
<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>Milestone Calendar</span>
<span class="is-hidden-touch">Milestone Calendar</span>
</a>
</li>
<li>
<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>Outlook Integration</span>
<span class="is-hidden-touch">Outlook Integration</span>
</a>
</li>
</ul>
<h2 class="menu-label">
<h2 class="menu-label is-hidden-touch">
Help
</h2>
<ul class="menu-list">
<ul class="menu-list is-hidden-touch">
<li>
<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>

View File

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

View File

@ -1,7 +1,7 @@
<%- include('_header'); -%>
<div class="columns">
<div class="column is-3 is-hidden-mobile">
<div class="columns is-mobile">
<div class="column is-2-desktop is-narrow-touch">
<%- include('_menu-admin'); -%>
</div>
<div class="column">
@ -22,23 +22,19 @@
</ul>
</nav>
<div class="level">
<div class="level-left">
<div class="level-item is-justify-content-start">
<div class="columns is-vcentered">
<div class="column">
<h1 class="title is-1">
Fee Management
</h1>
</div>
</div>
<div class="level-right">
<div class="level-item is-justify-content-end">
<div class="column has-text-right is-narrow">
<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>Add Fee Category</span>
</button>
</div>
</div>
</div>
<div id="container--feeCategories"></div>
</div>

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -77,8 +77,14 @@
<hr />
<div class="has-text-right has-text-grey-dark is-size-7">
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 ml-4" href="https://github.com/cityssm/lot-occupancy-system" target="_blank" rel="noreferrer">GitHub</a>
<a class="has-text-grey-dark" href="https://cityssm.github.io/lot-occupancy-system/docs" target="_blank" rel="nofollow noreferrer" accesskey="h">
<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>

View File

@ -12,22 +12,18 @@
</ul>
</nav>
<div class="level is-mobile">
<div class="level-left">
<div class="level-item">
<div class="columns is-vcentered">
<div class="column">
<h1 class="title is-1">
Find a <%= configFunctions.getProperty("aliases.map") %>
</h1>
</div>
</div>
<div class="level-right">
<div class="level-item">
<div class="column has-text-right is-narrow">
<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>Export</span>
</a>
</div>
</div>
</div>
<% if (user.userProperties.canUpdate) { %>

View File

@ -1,51 +1,51 @@
<%- include('_header'); -%>
<div class="columns">
<div class="column is-3">
<div class="columns is-mobile">
<div class="column is-3-desktop is-narrow-touch">
<aside class="menu">
<h2 class="menu-label">
<h2 class="menu-label is-hidden-touch">
Reports
</h2>
<ul class="menu-list">
<li>
<a class="is-active" href="#tab--workOrders">
<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>
</li>
<li>
<a href="#tab--lotOccupancies">
<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>
</li>
<li>
<a href="#tab--lots">
<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>
</li>
<li>
<a href="#tab--maps">
<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>
</li>
</ul>
<h2 class="menu-label">
<h2 class="menu-label is-hidden-touch">
Table Exports
</h2>
<ul class="menu-list">
<li>
<a href="#tab--dataTableExports">
<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>
</li>
<li>
<a href="#tab--configTableExports">
<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>
</li>
</ul>

View File

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

View File

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

View File

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

View File

@ -206,15 +206,21 @@
</td>
<td>
<% 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 { %>
<ul class="fa-ul ml-5">
<% 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>
</span>
<%= occupant.occupantName %>
<%= occupant.occupantFamilyName %>
</span><br />
</li>
<% } %>
</ul>
<% } %>
</td>
</tr>