centralize escaping aliases
parent
9637f4e8f7
commit
8c2ef7d0d6
|
|
@ -6,6 +6,7 @@ export const handler = async (request, response) => {
|
|||
});
|
||||
response.json({
|
||||
count: result.count,
|
||||
offset: Number.parseInt(request.body.offset, 10),
|
||||
lots: result.lots
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ export const handler: RequestHandler = async (request, response) => {
|
|||
|
||||
response.json({
|
||||
count: result.count,
|
||||
offset: Number.parseInt(request.body.offset, 10),
|
||||
lots: result.lots
|
||||
});
|
||||
};
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
searchResultsContainerElement.innerHTML =
|
||||
'<div class="message is-info">' +
|
||||
'<p class="message-body">There are no ' +
|
||||
cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase()) +
|
||||
los.escapedAliases.occupancy +
|
||||
" records that meet the search criteria.</p>" +
|
||||
"</div>";
|
||||
return;
|
||||
|
|
@ -26,30 +26,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
lotOccupancy.occupancyEndDateString >= nowDateString)) {
|
||||
occupancyTimeHTML =
|
||||
'<span class="has-tooltip-right" data-tooltip="Current ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'">' +
|
||||
('<i class="fas fa-play" aria-label="Current ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'"></i>') +
|
||||
"</span>";
|
||||
}
|
||||
else if (lotOccupancy.occupancyStartDateString > nowDateString) {
|
||||
occupancyTimeHTML =
|
||||
'<span class="has-tooltip-right" data-tooltip="Future ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'">' +
|
||||
('<i class="fas fa-fast-forward" aria-label="Future ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'"></i>') +
|
||||
"</span>";
|
||||
}
|
||||
else {
|
||||
occupancyTimeHTML =
|
||||
'<span class="has-tooltip-right" data-tooltip="Past ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'">' +
|
||||
('<i class="fas fa-stop" aria-label="Past ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'"></i>') +
|
||||
"</span>";
|
||||
}
|
||||
|
|
@ -88,7 +88,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
cityssm.escapeHTML(lotOccupancy.lotName) +
|
||||
"</a>"
|
||||
: '<span class="has-text-grey">(No ' +
|
||||
cityssm.escapeHTML(exports.aliases.lot) +
|
||||
los.escapedAliases.Lot +
|
||||
")</span>") +
|
||||
"<br />" +
|
||||
('<span class="is-size-7">' +
|
||||
|
|
@ -121,11 +121,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
'<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">' +
|
||||
"<thead><tr>" +
|
||||
'<th class="has-width-1"></th>' +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.occupancy) + " Type</th>") +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.lot) + "</th>") +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.occupancyStartDate) + "</th>") +
|
||||
("<th>" + los.escapedAliases.Occupancy + " Type</th>") +
|
||||
("<th>" + los.escapedAliases.Lot + "</th>") +
|
||||
("<th>" + los.escapedAliases.OccupancyStartDate + "</th>") +
|
||||
"<th>End Date</th>" +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.occupants) + "</th>") +
|
||||
("<th>" + los.escapedAliases.Occupants + "</th>") +
|
||||
'<th class="has-width-1"><span class="is-sr-only">Print</span></th>' +
|
||||
"</tr></thead>" +
|
||||
"<table>" +
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ declare const cityssm: cityssmGlobal;
|
|||
searchResultsContainerElement.innerHTML =
|
||||
'<div class="message is-info">' +
|
||||
'<p class="message-body">There are no ' +
|
||||
cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase()) +
|
||||
los.escapedAliases.occupancy +
|
||||
" records that meet the search criteria.</p>" +
|
||||
"</div>";
|
||||
|
||||
|
|
@ -54,28 +54,28 @@ declare const cityssm: cityssmGlobal;
|
|||
) {
|
||||
occupancyTimeHTML =
|
||||
'<span class="has-tooltip-right" data-tooltip="Current ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'">' +
|
||||
('<i class="fas fa-play" aria-label="Current ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'"></i>') +
|
||||
"</span>";
|
||||
} else if (lotOccupancy.occupancyStartDateString! > nowDateString) {
|
||||
occupancyTimeHTML =
|
||||
'<span class="has-tooltip-right" data-tooltip="Future ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'">' +
|
||||
('<i class="fas fa-fast-forward" aria-label="Future ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'"></i>') +
|
||||
"</span>";
|
||||
} else {
|
||||
occupancyTimeHTML =
|
||||
'<span class="has-tooltip-right" data-tooltip="Past ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'">' +
|
||||
('<i class="fas fa-stop" aria-label="Past ' +
|
||||
exports.aliases.occupancy +
|
||||
los.escapedAliases.Occupancy +
|
||||
'"></i>') +
|
||||
"</span>";
|
||||
}
|
||||
|
|
@ -119,7 +119,7 @@ declare const cityssm: cityssmGlobal;
|
|||
cityssm.escapeHTML(lotOccupancy.lotName) +
|
||||
"</a>"
|
||||
: '<span class="has-text-grey">(No ' +
|
||||
cityssm.escapeHTML(exports.aliases.lot) +
|
||||
los.escapedAliases.Lot +
|
||||
")</span>") +
|
||||
"<br />" +
|
||||
('<span class="is-size-7">' +
|
||||
|
|
@ -154,11 +154,11 @@ declare const cityssm: cityssmGlobal;
|
|||
'<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">' +
|
||||
"<thead><tr>" +
|
||||
'<th class="has-width-1"></th>' +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.occupancy) + " Type</th>") +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.lot) + "</th>") +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.occupancyStartDate) + "</th>") +
|
||||
("<th>" + los.escapedAliases.Occupancy + " Type</th>") +
|
||||
("<th>" + los.escapedAliases.Lot + "</th>") +
|
||||
("<th>" + los.escapedAliases.OccupancyStartDate + "</th>") +
|
||||
"<th>End Date</th>" +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.occupants) + "</th>") +
|
||||
("<th>" + los.escapedAliases.Occupants + "</th>") +
|
||||
'<th class="has-width-1"><span class="is-sr-only">Print</span></th>' +
|
||||
"</tr></thead>" +
|
||||
"<table>" +
|
||||
|
|
|
|||
|
|
@ -7,21 +7,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
const searchResultsContainerElement = document.querySelector("#container--searchResults");
|
||||
const limit = Number.parseInt(document.querySelector("#searchFilter--limit").value, 10);
|
||||
const offsetElement = document.querySelector("#searchFilter--offset");
|
||||
const getLots = () => {
|
||||
const offset = Number.parseInt(offsetElement.value, 10);
|
||||
searchResultsContainerElement.innerHTML =
|
||||
'<div class="has-text-grey has-text-centered">' +
|
||||
'<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' +
|
||||
"Loading " +
|
||||
exports.aliases.lots +
|
||||
"..." +
|
||||
"</div>";
|
||||
cityssm.postJSON(los.urlPrefix + "/lots/doSearchLots", searchFilterFormElement, (responseJSON) => {
|
||||
function renderLots(responseJSON) {
|
||||
if (responseJSON.lots.length === 0) {
|
||||
searchResultsContainerElement.innerHTML =
|
||||
'<div class="message is-info">' +
|
||||
'<p class="message-body">There are no ' +
|
||||
exports.aliases.lots.toLowerCase() +
|
||||
los.escapedAliases.lots +
|
||||
" that meet the search criteria.</p>" +
|
||||
"</div>";
|
||||
return;
|
||||
|
|
@ -64,9 +55,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
searchResultsContainerElement.innerHTML =
|
||||
'<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">' +
|
||||
"<thead><tr>" +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.lot) + "</th>") +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.map) + "</th>") +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.lot) + " Type</th>") +
|
||||
("<th>" + los.escapedAliases.Lot + "</th>") +
|
||||
("<th>" + los.escapedAliases.Map + "</th>") +
|
||||
("<th>" + los.escapedAliases.Lot + " Type</th>") +
|
||||
"<th>Status</th>" +
|
||||
"</tr></thead>" +
|
||||
"<table>" +
|
||||
|
|
@ -74,22 +65,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
('<div class="level-left">' +
|
||||
'<div class="level-item has-text-weight-bold">' +
|
||||
"Displaying " +
|
||||
(offset + 1).toString() +
|
||||
(responseJSON.offset + 1).toString() +
|
||||
" to " +
|
||||
Math.min(responseJSON.count, limit + offset) +
|
||||
Math.min(responseJSON.count, limit + responseJSON.offset) +
|
||||
" of " +
|
||||
responseJSON.count +
|
||||
"</div>" +
|
||||
"</div>") +
|
||||
('<div class="level-right">' +
|
||||
(offset > 0
|
||||
(responseJSON.offset > 0
|
||||
? '<div class="level-item">' +
|
||||
'<button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous">' +
|
||||
'<i class="fas fa-arrow-left" aria-hidden="true"></i>' +
|
||||
"</button>" +
|
||||
"</div>"
|
||||
: "") +
|
||||
(limit + offset < responseJSON.count
|
||||
(limit + responseJSON.offset < responseJSON.count
|
||||
? '<div class="level-item">' +
|
||||
'<button class="button is-rounded is-link" data-page="next" type="button" title="Next">' +
|
||||
"<span>Next</span>" +
|
||||
|
|
@ -100,26 +91,35 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
"</div>") +
|
||||
"</div>";
|
||||
searchResultsContainerElement.querySelector("table").append(resultsTbodyElement);
|
||||
if (offset > 0) {
|
||||
if (responseJSON.offset > 0) {
|
||||
searchResultsContainerElement.querySelector("button[data-page='previous']").addEventListener("click", previousAndGetLots);
|
||||
}
|
||||
if (limit + offset < responseJSON.count) {
|
||||
if (limit + responseJSON.offset < responseJSON.count) {
|
||||
searchResultsContainerElement.querySelector("button[data-page='next']").addEventListener("click", nextAndGetLots);
|
||||
}
|
||||
});
|
||||
};
|
||||
const resetOffsetAndGetLots = () => {
|
||||
}
|
||||
function getLots() {
|
||||
searchResultsContainerElement.innerHTML =
|
||||
'<div class="has-text-grey has-text-centered">' +
|
||||
'<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' +
|
||||
"Loading " +
|
||||
los.escapedAliases.Lots +
|
||||
"..." +
|
||||
"</div>";
|
||||
cityssm.postJSON(los.urlPrefix + "/lots/doSearchLots", searchFilterFormElement, renderLots);
|
||||
}
|
||||
function resetOffsetAndGetLots() {
|
||||
offsetElement.value = "0";
|
||||
getLots();
|
||||
};
|
||||
const previousAndGetLots = () => {
|
||||
}
|
||||
function previousAndGetLots() {
|
||||
offsetElement.value = Math.max(Number.parseInt(offsetElement.value, 10) - limit, 0).toString();
|
||||
getLots();
|
||||
};
|
||||
const nextAndGetLots = () => {
|
||||
}
|
||||
function nextAndGetLots() {
|
||||
offsetElement.value = (Number.parseInt(offsetElement.value, 10) + limit).toString();
|
||||
getLots();
|
||||
};
|
||||
}
|
||||
const filterElements = searchFilterFormElement.querySelectorAll("input, select");
|
||||
for (const filterElement of filterElements) {
|
||||
filterElement.addEventListener("change", resetOffsetAndGetLots);
|
||||
|
|
|
|||
|
|
@ -23,26 +23,12 @@ declare const cityssm: cityssmGlobal;
|
|||
);
|
||||
const offsetElement = document.querySelector("#searchFilter--offset") as HTMLInputElement;
|
||||
|
||||
const getLots = () => {
|
||||
const offset = Number.parseInt(offsetElement.value, 10);
|
||||
|
||||
searchResultsContainerElement.innerHTML =
|
||||
'<div class="has-text-grey has-text-centered">' +
|
||||
'<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' +
|
||||
"Loading " +
|
||||
exports.aliases.lots +
|
||||
"..." +
|
||||
"</div>";
|
||||
|
||||
cityssm.postJSON(
|
||||
los.urlPrefix + "/lots/doSearchLots",
|
||||
searchFilterFormElement,
|
||||
(responseJSON: { count: number; lots: recordTypes.Lot[] }) => {
|
||||
function renderLots(responseJSON: { count: number; offset: number; lots: recordTypes.Lot[] }): void {
|
||||
if (responseJSON.lots.length === 0) {
|
||||
searchResultsContainerElement.innerHTML =
|
||||
'<div class="message is-info">' +
|
||||
'<p class="message-body">There are no ' +
|
||||
exports.aliases.lots.toLowerCase() +
|
||||
los.escapedAliases.lots +
|
||||
" that meet the search criteria.</p>" +
|
||||
"</div>";
|
||||
|
||||
|
|
@ -92,9 +78,9 @@ declare const cityssm: cityssmGlobal;
|
|||
searchResultsContainerElement.innerHTML =
|
||||
'<table class="table is-fullwidth is-striped is-hoverable has-sticky-header">' +
|
||||
"<thead><tr>" +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.lot) + "</th>") +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.map) + "</th>") +
|
||||
("<th>" + cityssm.escapeHTML(exports.aliases.lot) + " Type</th>") +
|
||||
("<th>" + los.escapedAliases.Lot + "</th>") +
|
||||
("<th>" + los.escapedAliases.Map + "</th>") +
|
||||
("<th>" + los.escapedAliases.Lot + " Type</th>") +
|
||||
"<th>Status</th>" +
|
||||
"</tr></thead>" +
|
||||
"<table>" +
|
||||
|
|
@ -102,22 +88,22 @@ declare const cityssm: cityssmGlobal;
|
|||
('<div class="level-left">' +
|
||||
'<div class="level-item has-text-weight-bold">' +
|
||||
"Displaying " +
|
||||
(offset + 1).toString() +
|
||||
(responseJSON.offset + 1).toString() +
|
||||
" to " +
|
||||
Math.min(responseJSON.count, limit + offset) +
|
||||
Math.min(responseJSON.count, limit + responseJSON.offset) +
|
||||
" of " +
|
||||
responseJSON.count +
|
||||
"</div>" +
|
||||
"</div>") +
|
||||
('<div class="level-right">' +
|
||||
(offset > 0
|
||||
(responseJSON.offset > 0
|
||||
? '<div class="level-item">' +
|
||||
'<button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous">' +
|
||||
'<i class="fas fa-arrow-left" aria-hidden="true"></i>' +
|
||||
"</button>" +
|
||||
"</div>"
|
||||
: "") +
|
||||
(limit + offset < responseJSON.count
|
||||
(limit + responseJSON.offset < responseJSON.count
|
||||
? '<div class="level-item">' +
|
||||
'<button class="button is-rounded is-link" data-page="next" type="button" title="Next">' +
|
||||
"<span>Next</span>" +
|
||||
|
|
@ -130,7 +116,7 @@ declare const cityssm: cityssmGlobal;
|
|||
|
||||
searchResultsContainerElement.querySelector("table")!.append(resultsTbodyElement);
|
||||
|
||||
if (offset > 0) {
|
||||
if (responseJSON.offset > 0) {
|
||||
(
|
||||
searchResultsContainerElement.querySelector(
|
||||
"button[data-page='previous']"
|
||||
|
|
@ -138,7 +124,7 @@ declare const cityssm: cityssmGlobal;
|
|||
).addEventListener("click", previousAndGetLots);
|
||||
}
|
||||
|
||||
if (limit + offset < responseJSON.count) {
|
||||
if (limit + responseJSON.offset < responseJSON.count) {
|
||||
(
|
||||
searchResultsContainerElement.querySelector(
|
||||
"button[data-page='next']"
|
||||
|
|
@ -146,26 +132,36 @@ declare const cityssm: cityssmGlobal;
|
|||
).addEventListener("click", nextAndGetLots);
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
const resetOffsetAndGetLots = () => {
|
||||
function getLots(): void {
|
||||
searchResultsContainerElement.innerHTML =
|
||||
'<div class="has-text-grey has-text-centered">' +
|
||||
'<i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />' +
|
||||
"Loading " +
|
||||
los.escapedAliases.Lots +
|
||||
"..." +
|
||||
"</div>";
|
||||
|
||||
cityssm.postJSON(los.urlPrefix + "/lots/doSearchLots", searchFilterFormElement, renderLots);
|
||||
}
|
||||
|
||||
function resetOffsetAndGetLots(): void {
|
||||
offsetElement.value = "0";
|
||||
getLots();
|
||||
};
|
||||
}
|
||||
|
||||
const previousAndGetLots = () => {
|
||||
function previousAndGetLots(): void {
|
||||
offsetElement.value = Math.max(
|
||||
Number.parseInt(offsetElement.value, 10) - limit,
|
||||
0
|
||||
).toString();
|
||||
getLots();
|
||||
};
|
||||
}
|
||||
|
||||
const nextAndGetLots = () => {
|
||||
function nextAndGetLots(): void {
|
||||
offsetElement.value = (Number.parseInt(offsetElement.value, 10) + limit).toString();
|
||||
getLots();
|
||||
};
|
||||
}
|
||||
|
||||
const filterElements = searchFilterFormElement.querySelectorAll("input, select") as NodeListOf<
|
||||
HTMLInputElement | HTMLSelectElement
|
||||
|
|
|
|||
|
|
@ -107,7 +107,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
// Apply a label
|
||||
const labelElement = document.querySelector("label[for='" + dateElement.id + "']");
|
||||
if (labelElement) {
|
||||
datepickerElement.querySelector(".datetimepicker-dummy-input").ariaLabel = labelElement.textContent;
|
||||
datepickerElement.querySelector(".datetimepicker-dummy-input").ariaLabel =
|
||||
labelElement.textContent;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -222,6 +223,30 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
}
|
||||
}
|
||||
};
|
||||
const escapedAliases = Object.freeze({
|
||||
Map: cityssm.escapeHTML(exports.aliases.map),
|
||||
map: cityssm.escapeHTML(exports.aliases.map.toLowerCase()),
|
||||
Lot: cityssm.escapeHTML(exports.aliases.lot),
|
||||
lot: cityssm.escapeHTML(exports.aliases.lot.toLowerCase()),
|
||||
Lots: cityssm.escapeHTML(exports.aliases.lots),
|
||||
lots: cityssm.escapeHTML(exports.aliases.lots.toLowerCase()),
|
||||
Occupancy: cityssm.escapeHTML(exports.aliases.occupancy),
|
||||
occupancy: cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase()),
|
||||
Occupancies: cityssm.escapeHTML(exports.aliases.occupancies),
|
||||
occupancies: cityssm.escapeHTML(exports.aliases.occupancies.toLowerCase()),
|
||||
Occupant: cityssm.escapeHTML(exports.aliases.occupant),
|
||||
occupant: cityssm.escapeHTML(exports.aliases.occupant.toLowerCase()),
|
||||
Occupants: cityssm.escapeHTML(exports.aliases.occupants),
|
||||
occupants: cityssm.escapeHTML(exports.aliases.occupants.toLowerCase()),
|
||||
ExternalReceiptNumber: cityssm.escapeHTML(exports.aliases.externalReceiptNumber),
|
||||
externalReceiptNumber: cityssm.escapeHTML(exports.aliases.externalReceiptNumber.toLowerCase()),
|
||||
OccupancyStartDate: cityssm.escapeHTML(exports.aliases.occupancyStartDate),
|
||||
occupancyStartDate: cityssm.escapeHTML(exports.aliases.occupancyStartDate.toLowerCase()),
|
||||
WorkOrderOpenDate: cityssm.escapeHTML(exports.aliases.workOrderOpenDate),
|
||||
workOrderOpenDate: cityssm.escapeHTML(exports.aliases.workOrderOpenDate.toLowerCase()),
|
||||
WorkOrderCloseDate: cityssm.escapeHTML(exports.aliases.workOrderCloseDate),
|
||||
workOrderCloseDate: cityssm.escapeHTML(exports.aliases.workOrderCloseDate.toLowerCase())
|
||||
});
|
||||
const hues = ["red", "green", "orange", "blue", "pink", "yellow", "purple"];
|
||||
const luminosity = ["bright", "light", "dark"];
|
||||
const getRandomColor = (seedString) => {
|
||||
|
|
@ -243,6 +268,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
initializeDatePickers,
|
||||
// initializeTimePickers,
|
||||
populateAliases,
|
||||
escapedAliases,
|
||||
getRandomColor
|
||||
};
|
||||
exports.los = los;
|
||||
|
|
|
|||
|
|
@ -160,7 +160,8 @@ declare const bulmaJS: BulmaJS;
|
|||
const labelElement = document.querySelector("label[for='" + dateElement.id + "']");
|
||||
|
||||
if (labelElement) {
|
||||
datepickerElement.querySelector(".datetimepicker-dummy-input")!.ariaLabel = labelElement.textContent;
|
||||
datepickerElement.querySelector(".datetimepicker-dummy-input")!.ariaLabel =
|
||||
labelElement.textContent;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -281,6 +282,40 @@ declare const bulmaJS: BulmaJS;
|
|||
}
|
||||
};
|
||||
|
||||
const escapedAliases = Object.freeze({
|
||||
Map: cityssm.escapeHTML(exports.aliases.map),
|
||||
map: cityssm.escapeHTML(exports.aliases.map.toLowerCase()),
|
||||
|
||||
Lot: cityssm.escapeHTML(exports.aliases.lot),
|
||||
lot: cityssm.escapeHTML(exports.aliases.lot.toLowerCase()),
|
||||
Lots: cityssm.escapeHTML(exports.aliases.lots),
|
||||
lots: cityssm.escapeHTML(exports.aliases.lots.toLowerCase()),
|
||||
|
||||
Occupancy: cityssm.escapeHTML(exports.aliases.occupancy),
|
||||
occupancy: cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase()),
|
||||
Occupancies: cityssm.escapeHTML(exports.aliases.occupancies),
|
||||
occupancies: cityssm.escapeHTML(exports.aliases.occupancies.toLowerCase()),
|
||||
|
||||
Occupant: cityssm.escapeHTML(exports.aliases.occupant),
|
||||
occupant: cityssm.escapeHTML(exports.aliases.occupant.toLowerCase()),
|
||||
Occupants: cityssm.escapeHTML(exports.aliases.occupants),
|
||||
occupants: cityssm.escapeHTML(exports.aliases.occupants.toLowerCase()),
|
||||
|
||||
ExternalReceiptNumber: cityssm.escapeHTML(exports.aliases.externalReceiptNumber),
|
||||
externalReceiptNumber: cityssm.escapeHTML(
|
||||
exports.aliases.externalReceiptNumber.toLowerCase()
|
||||
),
|
||||
|
||||
OccupancyStartDate: cityssm.escapeHTML(exports.aliases.occupancyStartDate),
|
||||
occupancyStartDate: cityssm.escapeHTML(exports.aliases.occupancyStartDate.toLowerCase()),
|
||||
|
||||
WorkOrderOpenDate: cityssm.escapeHTML(exports.aliases.workOrderOpenDate),
|
||||
workOrderOpenDate: cityssm.escapeHTML(exports.aliases.workOrderOpenDate.toLowerCase()),
|
||||
|
||||
WorkOrderCloseDate: cityssm.escapeHTML(exports.aliases.workOrderCloseDate),
|
||||
workOrderCloseDate: cityssm.escapeHTML(exports.aliases.workOrderCloseDate.toLowerCase())
|
||||
});
|
||||
|
||||
const hues = ["red", "green", "orange", "blue", "pink", "yellow", "purple"];
|
||||
const luminosity = ["bright", "light", "dark"];
|
||||
|
||||
|
|
@ -309,6 +344,7 @@ declare const bulmaJS: BulmaJS;
|
|||
initializeDatePickers,
|
||||
// initializeTimePickers,
|
||||
populateAliases,
|
||||
escapedAliases,
|
||||
getRandomColor
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
cityssm.escapeHTML(lot.mapName || "") +
|
||||
'">' +
|
||||
'<i class="fas fa-vector-square" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.lot) +
|
||||
los.escapedAliases.Lot +
|
||||
'"></i> ' +
|
||||
cityssm.escapeHTML(lot.lotName || "") +
|
||||
"</span>" +
|
||||
|
|
@ -56,7 +56,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
cityssm.escapeHTML(occupant.lotOccupantType || "") +
|
||||
'">' +
|
||||
'<i class="fas fa-user" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.lotOccupancy) +
|
||||
los.escapedAliases.Occupancy +
|
||||
'"></i> ' +
|
||||
cityssm.escapeHTML(occupant.occupantName || "") +
|
||||
"</span>" +
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ declare const cityssm: cityssmGlobal;
|
|||
cityssm.escapeHTML(lot.mapName || "") +
|
||||
'">' +
|
||||
'<i class="fas fa-vector-square" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.lot) +
|
||||
los.escapedAliases.Lot +
|
||||
'"></i> ' +
|
||||
cityssm.escapeHTML(lot.lotName || "") +
|
||||
"</span>" +
|
||||
|
|
@ -89,7 +89,7 @@ declare const cityssm: cityssmGlobal;
|
|||
cityssm.escapeHTML(occupant.lotOccupantType || "") +
|
||||
'">' +
|
||||
'<i class="fas fa-user" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.lotOccupancy) +
|
||||
los.escapedAliases.Occupancy +
|
||||
'"></i> ' +
|
||||
cityssm.escapeHTML(occupant.occupantName || "") +
|
||||
"</span>" +
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
cityssm.escapeHTML(lot.mapName || "") +
|
||||
'">' +
|
||||
'<i class="fas fa-fw fa-vector-square" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.lot) +
|
||||
los.escapedAliases.Lot +
|
||||
'"></i> ' +
|
||||
cityssm.escapeHTML(lot.lotName || "(No Lot Name)") +
|
||||
cityssm.escapeHTML(lot.lotName || "(No " + exports.aliases.Lot + " Name)") +
|
||||
"</span><br />";
|
||||
}
|
||||
for (const occupancy of workOrder.workOrderLotOccupancies) {
|
||||
|
|
@ -37,8 +37,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
'<span class="has-tooltip-left" data-tooltip="' +
|
||||
cityssm.escapeHTML(occupant.lotOccupantType || "") +
|
||||
'">' +
|
||||
'<i class="fas fa-fw fa-' + cityssm.escapeHTML(occupant.fontAwesomeIconClass || "user") + '" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.occupant) +
|
||||
'<i class="fas fa-fw fa-' +
|
||||
cityssm.escapeHTML(occupant.fontAwesomeIconClass || "user") +
|
||||
'" aria-label="' +
|
||||
los.escapedAliases.occupant +
|
||||
'"></i> ' +
|
||||
cityssm.escapeHTML(occupant.occupantName || "(No Name)") +
|
||||
"</span><br />";
|
||||
|
|
@ -68,23 +70,23 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
"</span></td>") +
|
||||
('<td class="is-nowrap">' +
|
||||
('<span class="has-tooltip-left" data-tooltip="' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderOpenDate) +
|
||||
los.escapedAliases.WorkOrderOpenDate +
|
||||
'">' +
|
||||
'<i class="fas fa-fw fa-play" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderOpenDate) +
|
||||
los.escapedAliases.WorkOrderOpenDate +
|
||||
'"></i> ' +
|
||||
workOrder.workOrderOpenDateString +
|
||||
"</span><br />") +
|
||||
('<span class="has-tooltip-left" data-tooltip="' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderCloseDate) +
|
||||
los.escapedAliases.WorkOrderCloseDate +
|
||||
'">' +
|
||||
'<i class="fas fa-fw fa-stop" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderCloseDate) +
|
||||
los.escapedAliases.WorkOrderCloseDate +
|
||||
'"></i> ' +
|
||||
(workOrder.workOrderCloseDate
|
||||
? workOrder.workOrderCloseDateString
|
||||
: '<span class="has-text-grey">(No ' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderCloseDate) +
|
||||
los.escapedAliases.WorkOrderCloseDate +
|
||||
")</span>") +
|
||||
"</span>") +
|
||||
"</td>") +
|
||||
|
|
|
|||
|
|
@ -28,7 +28,11 @@ declare const cityssm: cityssmGlobal;
|
|||
|
||||
const offsetElement = document.querySelector("#searchFilter--offset") as HTMLInputElement;
|
||||
|
||||
function renderWorkOrders(responseJSON: { count: number; offset: number; workOrders: recordTypes.WorkOrder[]; }) {
|
||||
function renderWorkOrders(responseJSON: {
|
||||
count: number;
|
||||
offset: number;
|
||||
workOrders: recordTypes.WorkOrder[];
|
||||
}) {
|
||||
if (responseJSON.workOrders.length === 0) {
|
||||
searchResultsContainerElement.innerHTML =
|
||||
'<div class="message is-info">' +
|
||||
|
|
@ -49,9 +53,9 @@ declare const cityssm: cityssmGlobal;
|
|||
cityssm.escapeHTML(lot.mapName || "") +
|
||||
'">' +
|
||||
'<i class="fas fa-fw fa-vector-square" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.lot) +
|
||||
los.escapedAliases.Lot +
|
||||
'"></i> ' +
|
||||
cityssm.escapeHTML(lot.lotName || "(No Lot Name)") +
|
||||
cityssm.escapeHTML(lot.lotName || "(No " + exports.aliases.Lot + " Name)") +
|
||||
"</span><br />";
|
||||
}
|
||||
|
||||
|
|
@ -61,8 +65,10 @@ declare const cityssm: cityssmGlobal;
|
|||
'<span class="has-tooltip-left" data-tooltip="' +
|
||||
cityssm.escapeHTML(occupant.lotOccupantType || "") +
|
||||
'">' +
|
||||
'<i class="fas fa-fw fa-' + cityssm.escapeHTML(occupant.fontAwesomeIconClass || "user") + '" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.occupant) +
|
||||
'<i class="fas fa-fw fa-' +
|
||||
cityssm.escapeHTML(occupant.fontAwesomeIconClass || "user") +
|
||||
'" aria-label="' +
|
||||
los.escapedAliases.occupant +
|
||||
'"></i> ' +
|
||||
cityssm.escapeHTML(occupant.occupantName || "(No Name)") +
|
||||
"</span><br />";
|
||||
|
|
@ -95,23 +101,23 @@ declare const cityssm: cityssmGlobal;
|
|||
"</span></td>") +
|
||||
('<td class="is-nowrap">' +
|
||||
('<span class="has-tooltip-left" data-tooltip="' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderOpenDate) +
|
||||
los.escapedAliases.WorkOrderOpenDate +
|
||||
'">' +
|
||||
'<i class="fas fa-fw fa-play" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderOpenDate) +
|
||||
los.escapedAliases.WorkOrderOpenDate +
|
||||
'"></i> ' +
|
||||
workOrder.workOrderOpenDateString +
|
||||
"</span><br />") +
|
||||
('<span class="has-tooltip-left" data-tooltip="' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderCloseDate) +
|
||||
los.escapedAliases.WorkOrderCloseDate +
|
||||
'">' +
|
||||
'<i class="fas fa-fw fa-stop" aria-label="' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderCloseDate) +
|
||||
los.escapedAliases.WorkOrderCloseDate +
|
||||
'"></i> ' +
|
||||
(workOrder.workOrderCloseDate
|
||||
? workOrder.workOrderCloseDateString
|
||||
: '<span class="has-text-grey">(No ' +
|
||||
cityssm.escapeHTML(exports.aliases.workOrderCloseDate) +
|
||||
los.escapedAliases.WorkOrderCloseDate +
|
||||
")</span>") +
|
||||
"</span>") +
|
||||
"</td>") +
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=exports.los,e=document.querySelector("#form--searchFilters"),a=document.querySelector("#container--searchResults"),s=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),c=document.querySelector("#searchFilter--offset");function i(e){if(0===e.lotOccupancies.length)return void(a.innerHTML='<div class="message is-info"><p class="message-body">There are no '+cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase())+" records that meet the search criteria.</p></div>");const c=document.createElement("tbody"),i=cityssm.dateToString(new Date);for(const a of e.lotOccupancies){let e="";e=a.occupancyStartDateString<=i&&(""===a.occupancyEndDateString||a.occupancyEndDateString>=i)?'<span class="has-tooltip-right" data-tooltip="Current '+exports.aliases.occupancy+'"><i class="fas fa-play" aria-label="Current '+exports.aliases.occupancy+'"></i></span>':a.occupancyStartDateString>i?'<span class="has-tooltip-right" data-tooltip="Future '+exports.aliases.occupancy+'"><i class="fas fa-fast-forward" aria-label="Future '+exports.aliases.occupancy+'"></i></span>':'<span class="has-tooltip-right" data-tooltip="Past '+exports.aliases.occupancy+'"><i class="fas fa-stop" aria-label="Past '+exports.aliases.occupancy+'"></i></span>';let s="";for(const t of a.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.lotOccupantType||"")+'"><i class="fas fa-fw fa-'+cityssm.escapeHTML(t.fontAwesomeIconClass||"user")+'" aria-hidden="true"></i> '+cityssm.escapeHTML(t.occupantName||"")+"</span><br />";c.insertAdjacentHTML("beforeend",'<tr><td class="has-width-1">'+e+'</td><td><a class="has-text-weight-bold" href="'+t.urlPrefix+"/lotOccupancies/"+a.lotOccupancyId+'">'+cityssm.escapeHTML(a.occupancyType)+"</a></td><td>"+(a.lotName?'<a class="has-tooltip-right" data-tooltip="'+cityssm.escapeHTML(a.lotType||"")+'" href="'+t.urlPrefix+"/lots/"+a.lotId+'">'+cityssm.escapeHTML(a.lotName)+"</a>":'<span class="has-text-grey">(No '+cityssm.escapeHTML(exports.aliases.lot)+")</span>")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(a.mapName||"")+"</span></td><td>"+a.occupancyStartDateString+"</td><td>"+(a.occupancyEndDate?a.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>')+"</td><td>"+s+"</td><td>"+(a.printEJS?'<a class="button is-small" data-tooltip="Print" href="'+t.urlPrefix+"/print/"+a.printEJS+"/?lotOccupancyId="+a.lotOccupancyId+'" 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 class="has-width-1"></th><th>'+cityssm.escapeHTML(exports.aliases.occupancy)+" Type</th><th>"+cityssm.escapeHTML(exports.aliases.lot)+"</th><th>"+cityssm.escapeHTML(exports.aliases.occupancyStartDate)+"</th><th>End Date</th><th>"+cityssm.escapeHTML(exports.aliases.occupants)+'</th><th class="has-width-1"><span class="is-sr-only">Print</span></th></tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(e.offset+1).toString()+" to "+Math.min(e.count,s+e.offset)+" of "+e.count+'</div></div><div class="level-right">'+(e.offset>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(s+e.offset<e.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",a.querySelector("table").append(c),e.offset>0&&a.querySelector("button[data-page='previous']").addEventListener("click",r),s+e.offset<e.count&&a.querySelector("button[data-page='next']").addEventListener("click",l)}function o(){a.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+exports.aliases.occupancies+"...</div>",cityssm.postJSON(t.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,i)}function n(){c.value="0",o()}function r(){c.value=Math.max(Number.parseInt(c.value,10)-s,0).toString(),o()}function l(){c.value=(Number.parseInt(c.value,10)+s).toString(),o()}const p=e.querySelectorAll("input, select");for(const t of p)t.addEventListener("change",n);e.addEventListener("submit",t=>{t.preventDefault(),n()}),o()})();
|
||||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=exports.los,e=document.querySelector("#form--searchFilters"),a=document.querySelector("#container--searchResults"),s=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),c=document.querySelector("#searchFilter--offset");function i(e){if(0===e.lotOccupancies.length)return void(a.innerHTML='<div class="message is-info"><p class="message-body">There are no '+t.escapedAliases.occupancy+" records that meet the search criteria.</p></div>");const c=document.createElement("tbody"),i=cityssm.dateToString(new Date);for(const a of e.lotOccupancies){let e="";e=a.occupancyStartDateString<=i&&(""===a.occupancyEndDateString||a.occupancyEndDateString>=i)?'<span class="has-tooltip-right" data-tooltip="Current '+t.escapedAliases.Occupancy+'"><i class="fas fa-play" aria-label="Current '+t.escapedAliases.Occupancy+'"></i></span>':a.occupancyStartDateString>i?'<span class="has-tooltip-right" data-tooltip="Future '+t.escapedAliases.Occupancy+'"><i class="fas fa-fast-forward" aria-label="Future '+t.escapedAliases.Occupancy+'"></i></span>':'<span class="has-tooltip-right" data-tooltip="Past '+t.escapedAliases.Occupancy+'"><i class="fas fa-stop" aria-label="Past '+t.escapedAliases.Occupancy+'"></i></span>';let s="";for(const t of a.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.lotOccupantType||"")+'"><i class="fas fa-fw fa-'+cityssm.escapeHTML(t.fontAwesomeIconClass||"user")+'" aria-hidden="true"></i> '+cityssm.escapeHTML(t.occupantName||"")+"</span><br />";c.insertAdjacentHTML("beforeend",'<tr><td class="has-width-1">'+e+'</td><td><a class="has-text-weight-bold" href="'+t.urlPrefix+"/lotOccupancies/"+a.lotOccupancyId+'">'+cityssm.escapeHTML(a.occupancyType)+"</a></td><td>"+(a.lotName?'<a class="has-tooltip-right" data-tooltip="'+cityssm.escapeHTML(a.lotType||"")+'" href="'+t.urlPrefix+"/lots/"+a.lotId+'">'+cityssm.escapeHTML(a.lotName)+"</a>":'<span class="has-text-grey">(No '+t.escapedAliases.Lot+")</span>")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(a.mapName||"")+"</span></td><td>"+a.occupancyStartDateString+"</td><td>"+(a.occupancyEndDate?a.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>')+"</td><td>"+s+"</td><td>"+(a.printEJS?'<a class="button is-small" data-tooltip="Print" href="'+t.urlPrefix+"/print/"+a.printEJS+"/?lotOccupancyId="+a.lotOccupancyId+'" 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 class="has-width-1"></th><th>'+t.escapedAliases.Occupancy+" Type</th><th>"+t.escapedAliases.Lot+"</th><th>"+t.escapedAliases.OccupancyStartDate+"</th><th>End Date</th><th>"+t.escapedAliases.Occupants+'</th><th class="has-width-1"><span class="is-sr-only">Print</span></th></tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(e.offset+1).toString()+" to "+Math.min(e.count,s+e.offset)+" of "+e.count+'</div></div><div class="level-right">'+(e.offset>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(s+e.offset<e.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",a.querySelector("table").append(c),e.offset>0&&a.querySelector("button[data-page='previous']").addEventListener("click",o),s+e.offset<e.count&&a.querySelector("button[data-page='next']").addEventListener("click",r)}function n(){a.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+exports.aliases.occupancies+"...</div>",cityssm.postJSON(t.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,i)}function l(){c.value="0",n()}function o(){c.value=Math.max(Number.parseInt(c.value,10)-s,0).toString(),n()}function r(){c.value=(Number.parseInt(c.value,10)+s).toString(),n()}const p=e.querySelectorAll("input, select");for(const t of p)t.addEventListener("change",l);e.addEventListener("submit",t=>{t.preventDefault(),l()}),n()})();
|
||||
|
|
@ -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),i=document.querySelector("#searchFilter--offset"),r=()=>{const r=Number.parseInt(i.value,10);s.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+exports.aliases.lots+"...</div>",cityssm.postJSON(e.urlPrefix+"/lots/doSearchLots",t,t=>{if(0===t.lots.length)return void(s.innerHTML='<div class="message is-info"><p class="message-body">There are no '+exports.aliases.lots.toLowerCase()+" that meet the search criteria.</p></div>");const i=document.createElement("tbody");for(const s of t.lots)i.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/lots/"+s.lotId+'">'+cityssm.escapeHTML(s.lotName||"")+'</a></td><td><a href="'+e.urlPrefix+"/maps/"+s.mapId+'">'+(s.mapName?cityssm.escapeHTML(s.mapName):'<span class="has-text-grey">(No Name)</span>')+"</a></td><td>"+cityssm.escapeHTML(s.lotType||"")+"</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"><thead><tr><th>'+cityssm.escapeHTML(exports.aliases.lot)+"</th><th>"+cityssm.escapeHTML(exports.aliases.map)+"</th><th>"+cityssm.escapeHTML(exports.aliases.lot)+' Type</th><th>Status</th></tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(r+1).toString()+" to "+Math.min(t.count,a+r)+" of "+t.count+'</div></div><div class="level-right">'+(r>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(a+r<t.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",s.querySelector("table").append(i),r>0&&s.querySelector("button[data-page='previous']").addEventListener("click",o),a+r<t.count&&s.querySelector("button[data-page='next']").addEventListener("click",n)})},l=()=>{i.value="0",r()},o=()=>{i.value=Math.max(Number.parseInt(i.value,10)-a,0).toString(),r()},n=()=>{i.value=(Number.parseInt(i.value,10)+a).toString(),r()},c=t.querySelectorAll("input, select");for(const e of c)e.addEventListener("change",l);t.addEventListener("submit",e=>{e.preventDefault(),l()}),r()})();
|
||||
"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),i=document.querySelector("#searchFilter--offset");function r(t){if(0===t.lots.length)return void(s.innerHTML='<div class="message is-info"><p class="message-body">There are no '+e.escapedAliases.lots+" that meet the search criteria.</p></div>");const i=document.createElement("tbody");for(const s of t.lots)i.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/lots/"+s.lotId+'">'+cityssm.escapeHTML(s.lotName||"")+'</a></td><td><a href="'+e.urlPrefix+"/maps/"+s.mapId+'">'+(s.mapName?cityssm.escapeHTML(s.mapName):'<span class="has-text-grey">(No Name)</span>')+"</a></td><td>"+cityssm.escapeHTML(s.lotType||"")+"</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"><thead><tr><th>'+e.escapedAliases.Lot+"</th><th>"+e.escapedAliases.Map+"</th><th>"+e.escapedAliases.Lot+' Type</th><th>Status</th></tr></thead><table><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(t.offset+1).toString()+" to "+Math.min(t.count,a+t.offset)+" of "+t.count+'</div></div><div class="level-right">'+(t.offset>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(a+t.offset<t.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",s.querySelector("table").append(i),t.offset>0&&s.querySelector("button[data-page='previous']").addEventListener("click",n),a+t.offset<t.count&&s.querySelector("button[data-page='next']").addEventListener("click",c)}function l(){s.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading '+e.escapedAliases.Lots+"...</div>",cityssm.postJSON(e.urlPrefix+"/lots/doSearchLots",t,r)}function o(){i.value="0",l()}function n(){i.value=Math.max(Number.parseInt(i.value,10)-a,0).toString(),l()}function c(){i.value=(Number.parseInt(i.value,10)+a).toString(),l()}const d=t.querySelectorAll("input, select");for(const e of d)e.addEventListener("change",o);t.addEventListener("submit",e=>{e.preventDefault(),o()}),l()})();
|
||||
|
|
@ -1 +1 @@
|
|||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=e=>{const t=e.currentTarget.closest(".field").querySelector("input, select");if(t.classList.remove("is-readonly"),"INPUT"===t.tagName)t.readOnly=!1,t.disabled=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()},t={type:"date",dateFormat:"yyyy-MM-dd",showFooter:!1,color:"info",displayMode:"dialog"},a=["red","green","orange","blue","pink","yellow","purple"],o=["bright","light","dark"],s={urlPrefix:document.querySelector("main").dataset.urlPrefix,apiKey:document.querySelector("main").dataset.apiKey,highlightMap:(e,t,a)=>{let o,s=t;for(;!(o=e.querySelector("#"+s))&&s.includes("-");)s=s.slice(0,Math.max(0,s.lastIndexOf("-")));if(o){o.style.fill="",o.classList.add("highlight","is-"+a);const e=o.querySelectorAll("path");for(const t of e)t.style.fill=""}},initializeUnlockFieldButtons:t=>{const a=t.querySelectorAll(".is-unlock-field-button");for(const t of a)t.addEventListener("click",e)},initializeDatePickers:e=>{const a=e.querySelectorAll("input[type='date']");for(const o of a){const a=Object.assign({},t);o.required&&(a.showClearButton=!1),o.min&&(a.minDate=cityssm.dateStringToDate(o.min)),o.max&&(a.maxDate=cityssm.dateStringToDate(o.max));const s=exports.bulmaCalendar.attach(o,a)[0];s.on("save",()=>{o.value=s.value(),o.dispatchEvent(new Event("change"))}),s.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),s.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const l=e.querySelector("#"+s._id),r=l.querySelectorAll(".datepicker-nav button.is-text");for(const e of r)e.classList.add("is-"+t.color),e.classList.remove("is-text");const n=l.querySelector(".datetimepicker-clear-button");n&&(o.required?n.remove():(n.dataset.tooltip="Clear",n.ariaLabel="Clear",n.innerHTML='<span class="has-text-weight-bold" aria-hidden="true">×</span>'));const i=document.querySelector("label[for='"+o.id+"']");i&&(l.querySelector(".datetimepicker-dummy-input").ariaLabel=i.textContent)}},populateAliases:e=>{const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Map":e.textContent=exports.aliases.map;break;case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}},getRandomColor:e=>{let t=e;return t.length<2&&(t+="a1"),exports.randomColor({seed:t+t,hue:a[t.codePointAt(t.length-1)%a.length],luminosity:o[t.codePointAt(t.length-2)%o.length]})}};exports.los=s})();
|
||||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=e=>{const t=e.currentTarget.closest(".field").querySelector("input, select");if(t.classList.remove("is-readonly"),"INPUT"===t.tagName)t.readOnly=!1,t.disabled=!1;else{const e=t.querySelectorAll("option");for(const t of e)t.disabled=!1}t.focus()},t={type:"date",dateFormat:"yyyy-MM-dd",showFooter:!1,color:"info",displayMode:"dialog"},s=Object.freeze({Map:cityssm.escapeHTML(exports.aliases.map),map:cityssm.escapeHTML(exports.aliases.map.toLowerCase()),Lot:cityssm.escapeHTML(exports.aliases.lot),lot:cityssm.escapeHTML(exports.aliases.lot.toLowerCase()),Lots:cityssm.escapeHTML(exports.aliases.lots),lots:cityssm.escapeHTML(exports.aliases.lots.toLowerCase()),Occupancy:cityssm.escapeHTML(exports.aliases.occupancy),occupancy:cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase()),Occupancies:cityssm.escapeHTML(exports.aliases.occupancies),occupancies:cityssm.escapeHTML(exports.aliases.occupancies.toLowerCase()),Occupant:cityssm.escapeHTML(exports.aliases.occupant),occupant:cityssm.escapeHTML(exports.aliases.occupant.toLowerCase()),Occupants:cityssm.escapeHTML(exports.aliases.occupants),occupants:cityssm.escapeHTML(exports.aliases.occupants.toLowerCase()),ExternalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber),externalReceiptNumber:cityssm.escapeHTML(exports.aliases.externalReceiptNumber.toLowerCase()),OccupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate),occupancyStartDate:cityssm.escapeHTML(exports.aliases.occupancyStartDate.toLowerCase()),WorkOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate),workOrderOpenDate:cityssm.escapeHTML(exports.aliases.workOrderOpenDate.toLowerCase()),WorkOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate),workOrderCloseDate:cityssm.escapeHTML(exports.aliases.workOrderCloseDate.toLowerCase())}),a=["red","green","orange","blue","pink","yellow","purple"],o=["bright","light","dark"],c={urlPrefix:document.querySelector("main").dataset.urlPrefix,apiKey:document.querySelector("main").dataset.apiKey,highlightMap:(e,t,s)=>{let a,o=t;for(;!(a=e.querySelector("#"+o))&&o.includes("-");)o=o.slice(0,Math.max(0,o.lastIndexOf("-")));if(a){a.style.fill="",a.classList.add("highlight","is-"+s);const e=a.querySelectorAll("path");for(const t of e)t.style.fill=""}},initializeUnlockFieldButtons:t=>{const s=t.querySelectorAll(".is-unlock-field-button");for(const t of s)t.addEventListener("click",e)},initializeDatePickers:e=>{const s=e.querySelectorAll("input[type='date']");for(const a of s){const s=Object.assign({},t);a.required&&(s.showClearButton=!1),a.min&&(s.minDate=cityssm.dateStringToDate(a.min)),a.max&&(s.maxDate=cityssm.dateStringToDate(a.max));const o=exports.bulmaCalendar.attach(a,s)[0];o.on("save",()=>{a.value=o.value(),a.dispatchEvent(new Event("change"))}),o.on("show",()=>{document.querySelector("html").classList.add("is-clipped")}),o.on("hide",()=>{bulmaJS.toggleHtmlClipped()});const c=e.querySelector("#"+o._id),r=c.querySelectorAll(".datepicker-nav button.is-text");for(const e of r)e.classList.add("is-"+t.color),e.classList.remove("is-text");const l=c.querySelector(".datetimepicker-clear-button");l&&(a.required?l.remove():(l.dataset.tooltip="Clear",l.ariaLabel="Clear",l.innerHTML='<span class="has-text-weight-bold" aria-hidden="true">×</span>'));const i=document.querySelector("label[for='"+a.id+"']");i&&(c.querySelector(".datetimepicker-dummy-input").ariaLabel=i.textContent)}},populateAliases:e=>{const t=e.querySelectorAll(".alias");for(const e of t)switch(e.dataset.alias){case"Map":e.textContent=exports.aliases.map;break;case"Lot":e.textContent=exports.aliases.lot;break;case"lot":e.textContent=exports.aliases.lot.toLowerCase();break;case"Occupancy":e.textContent=exports.aliases.occupancy;break;case"occupancy":e.textContent=exports.aliases.occupancy.toLowerCase();break;case"Occupant":e.textContent=exports.aliases.occupant;break;case"occupant":e.textContent=exports.aliases.occupant.toLowerCase();break;case"ExternalReceiptNumber":e.textContent=exports.aliases.externalReceiptNumber}},escapedAliases:s,getRandomColor:e=>{let t=e;return t.length<2&&(t+="a1"),exports.randomColor({seed:t+t,hue:a[t.codePointAt(t.length-1)%a.length],luminosity:o[t.codePointAt(t.length-2)%o.length]})}};exports.los=c})();
|
||||
|
|
@ -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"),i=r=>{r&&r.preventDefault(),t.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Milestones...</div>',cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{(s=>{if(0===s.length)return void(t.innerHTML='<div class="message is-info"><p class="message-body">There are no milestones that meet the search criteria.</p></div>');t.innerHTML="";const r=cityssm.dateToString(new Date);let a,i="";for(const o of s){i!==o.workOrderMilestoneDateString&&(a&&t.append(a),(a=document.createElement("div")).className="panel",a.innerHTML='<h2 class="panel-heading">'+o.workOrderMilestoneDateString+"</h2>",i=o.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!o.workOrderMilestoneCompletionDate&&o.workOrderMilestoneDateString<r&&s.classList.add("has-background-warning-light");let n="";for(const e of o.workOrderLots)n+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(e.mapName||"")+'"><i class="fas fa-vector-square" aria-label="'+cityssm.escapeHTML(exports.aliases.lot)+'"></i> '+cityssm.escapeHTML(e.lotName||"")+"</span><br />";for(const e of o.workOrderLotOccupancies)for(const s of e.lotOccupancyOccupants)n+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(s.lotOccupantType||"")+'"><i class="fas fa-user" aria-label="'+cityssm.escapeHTML(exports.aliases.lotOccupancy)+'"></i> '+cityssm.escapeHTML(s.occupantName||"")+"</span><br />";s.innerHTML='<div class="columns"><div class="column is-narrow"><span class="icon is-small">'+(o.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===o.workOrderMilestoneTime?"":o.workOrderMilestoneTimeString+"<br />")+(o.workOrderMilestoneTypeId?"<strong>"+cityssm.escapeHTML(o.workOrderMilestoneType)+"</strong><br />":"")+'<span class="is-size-7">'+cityssm.escapeHTML(o.workOrderMilestoneDescription)+'</span></div><div class="column"><i class="fas fa-circle" style="color:'+e.getRandomColor(o.workOrderNumber||"")+'" aria-hidden="true"></i> <a class="has-text-weight-bold" href="'+e.urlPrefix+"/workOrders/"+o.workOrderId+'">'+cityssm.escapeHTML(o.workOrderNumber||"")+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(o.workOrderDescription||"")+'</span></div><div class="column is-size-7">'+n+"</div></div>",a.append(s)}t.append(a)})(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"),i=r=>{r&&r.preventDefault(),t.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Milestones...</div>',cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{(s=>{if(0===s.length)return void(t.innerHTML='<div class="message is-info"><p class="message-body">There are no milestones that meet the search criteria.</p></div>');t.innerHTML="";const r=cityssm.dateToString(new Date);let a,i="";for(const o of s){i!==o.workOrderMilestoneDateString&&(a&&t.append(a),(a=document.createElement("div")).className="panel",a.innerHTML='<h2 class="panel-heading">'+o.workOrderMilestoneDateString+"</h2>",i=o.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!o.workOrderMilestoneCompletionDate&&o.workOrderMilestoneDateString<r&&s.classList.add("has-background-warning-light");let n="";for(const s of o.workOrderLots)n+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(s.mapName||"")+'"><i class="fas fa-vector-square" aria-label="'+e.escapedAliases.Lot+'"></i> '+cityssm.escapeHTML(s.lotName||"")+"</span><br />";for(const s of o.workOrderLotOccupancies)for(const r of s.lotOccupancyOccupants)n+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(r.lotOccupantType||"")+'"><i class="fas fa-user" aria-label="'+e.escapedAliases.Occupancy+'"></i> '+cityssm.escapeHTML(r.occupantName||"")+"</span><br />";s.innerHTML='<div class="columns"><div class="column is-narrow"><span class="icon is-small">'+(o.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===o.workOrderMilestoneTime?"":o.workOrderMilestoneTimeString+"<br />")+(o.workOrderMilestoneTypeId?"<strong>"+cityssm.escapeHTML(o.workOrderMilestoneType)+"</strong><br />":"")+'<span class="is-size-7">'+cityssm.escapeHTML(o.workOrderMilestoneDescription)+'</span></div><div class="column"><i class="fas fa-circle" style="color:'+e.getRandomColor(o.workOrderNumber||"")+'" aria-hidden="true"></i> <a class="has-text-weight-bold" href="'+e.urlPrefix+"/workOrders/"+o.workOrderId+'">'+cityssm.escapeHTML(o.workOrderNumber||"")+'</a><br /><span class="is-size-7">'+cityssm.escapeHTML(o.workOrderDescription||"")+'</span></div><div class="column is-size-7">'+n+"</div></div>",a.append(s)}t.append(a)})(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()})();
|
||||
|
|
@ -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 i(s){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 o=document.createElement("tbody");for(const a of s.workOrders){let s="";for(const e of a.workOrderLots)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(e.mapName||"")+'"><i class="fas fa-fw fa-vector-square" aria-label="'+cityssm.escapeHTML(exports.aliases.lot)+'"></i> '+cityssm.escapeHTML(e.lotName||"(No Lot Name)")+"</span><br />";for(const e of a.workOrderLotOccupancies)for(const t of e.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(t.lotOccupantType||"")+'"><i class="fas fa-fw fa-'+cityssm.escapeHTML(t.fontAwesomeIconClass||"user")+'" aria-label="'+cityssm.escapeHTML(exports.aliases.occupant)+'"></i> '+cityssm.escapeHTML(t.occupantName||"(No Name)")+"</span><br />";o.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/workOrders/"+a.workOrderId+'">'+(a.workOrderNumber.trim()?cityssm.escapeHTML(a.workOrderNumber||""):"(No Number)")+"</a></td><td>"+cityssm.escapeHTML(a.workOrderType||"")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(a.workOrderDescription||"")+'</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="'+cityssm.escapeHTML(exports.aliases.workOrderOpenDate)+'"><i class="fas fa-fw fa-play" aria-label="'+cityssm.escapeHTML(exports.aliases.workOrderOpenDate)+'"></i> '+a.workOrderOpenDateString+'</span><br /><span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(exports.aliases.workOrderCloseDate)+'"><i class="fas fa-fw fa-stop" aria-label="'+cityssm.escapeHTML(exports.aliases.workOrderCloseDate)+'"></i> '+(a.workOrderCloseDate?a.workOrderCloseDateString:'<span class="has-text-grey">(No '+cityssm.escapeHTML(exports.aliases.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><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(s.offset+1).toString()+" to "+Math.min(s.count,r+s.offset)+" of "+s.count+'</div></div><div class="level-right">'+(s.offset>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(r+s.offset<s.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",a.querySelector("table").append(o),s.offset>0&&a.querySelector("button[data-page='previous']").addEventListener("click",c),r+s.offset<s.count&&a.querySelector("button[data-page='next']").addEventListener("click",d)}function l(){a.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Work Orders...</div>',cityssm.postJSON(e.urlPrefix+"/workOrders/doSearchWorkOrders",s,i)}function n(){o.value="0",l()}function c(){o.value=Math.max(Number.parseInt(o.value,10)-r,0).toString(),l()}function d(){o.value=(Number.parseInt(o.value,10)+r).toString(),l()}const p=s.querySelectorAll("input, select");for(const e of p)e.addEventListener("change",n);s.addEventListener("submit",e=>{e.preventDefault(),n()}),l()})();
|
||||
"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 i(s){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 o=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(t.mapName||"")+'"><i class="fas fa-fw fa-vector-square" aria-label="'+e.escapedAliases.Lot+'"></i> '+cityssm.escapeHTML(t.lotName||"(No "+exports.aliases.Lot+" Name)")+"</span><br />";for(const t of a.workOrderLotOccupancies)for(const a of t.lotOccupancyOccupants)s+='<span class="has-tooltip-left" data-tooltip="'+cityssm.escapeHTML(a.lotOccupantType||"")+'"><i class="fas fa-fw fa-'+cityssm.escapeHTML(a.fontAwesomeIconClass||"user")+'" aria-label="'+e.escapedAliases.occupant+'"></i> '+cityssm.escapeHTML(a.occupantName||"(No Name)")+"</span><br />";o.insertAdjacentHTML("beforeend",'<tr><td><a class="has-text-weight-bold" href="'+e.urlPrefix+"/workOrders/"+a.workOrderId+'">'+(a.workOrderNumber.trim()?cityssm.escapeHTML(a.workOrderNumber||""):"(No Number)")+"</a></td><td>"+cityssm.escapeHTML(a.workOrderType||"")+'<br /><span class="is-size-7">'+cityssm.escapeHTML(a.workOrderDescription||"")+'</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><div class="level"><div class="level-left"><div class="level-item has-text-weight-bold">Displaying '+(s.offset+1).toString()+" to "+Math.min(s.count,r+s.offset)+" of "+s.count+'</div></div><div class="level-right">'+(s.offset>0?'<div class="level-item"><button class="button is-rounded is-link is-outlined" data-page="previous" type="button" title="Previous"><i class="fas fa-arrow-left" aria-hidden="true"></i></button></div>':"")+(r+s.offset<s.count?'<div class="level-item"><button class="button is-rounded is-link" data-page="next" type="button" title="Next"><span>Next</span><span class="icon"><i class="fas fa-arrow-right" aria-hidden="true"></i></span></button></div>':"")+"</div></div>",a.querySelector("table").append(o),s.offset>0&&a.querySelector("button[data-page='previous']").addEventListener("click",c),r+s.offset<s.count&&a.querySelector("button[data-page='next']").addEventListener("click",d)}function l(){a.innerHTML='<div class="has-text-grey has-text-centered"><i class="fas fa-5x fa-circle-notch fa-spin" aria-hidden="true"></i><br />Loading Work Orders...</div>',cityssm.postJSON(e.urlPrefix+"/workOrders/doSearchWorkOrders",s,i)}function n(){o.value="0",l()}function c(){o.value=Math.max(Number.parseInt(o.value,10)-r,0).toString(),l()}function d(){o.value=(Number.parseInt(o.value,10)+r).toString(),l()}const p=s.querySelectorAll("input, select");for(const e of p)e.addEventListener("change",n);s.addEventListener("submit",e=>{e.preventDefault(),n()}),l()})();
|
||||
|
|
@ -5,5 +5,29 @@ export interface LOS {
|
|||
initializeDatePickers: (containerElement: HTMLElement) => void;
|
||||
initializeUnlockFieldButtons: (containerElement: HTMLElement) => void;
|
||||
populateAliases: (containerElement: HTMLElement) => void;
|
||||
escapedAliases: {
|
||||
Map: string;
|
||||
map: string;
|
||||
Lot: string;
|
||||
lot: string;
|
||||
Lots: string;
|
||||
lots: string;
|
||||
Occupancy: string;
|
||||
occupancy: string;
|
||||
Occupancies: string;
|
||||
occupancies: string;
|
||||
Occupant: string;
|
||||
occupant: string;
|
||||
Occupants: string;
|
||||
occupants: string;
|
||||
ExternalReceiptNumber: string;
|
||||
externalReceiptNumber: string;
|
||||
OccupancyStartDate: string;
|
||||
occupancyStartDate: string;
|
||||
WorkOrderOpenDate: string;
|
||||
workOrderOpenDate: string;
|
||||
WorkOrderCloseDate: string;
|
||||
workOrderCloseDate: string;
|
||||
};
|
||||
getRandomColor: (seedString: string) => string;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,5 +14,30 @@ export interface LOS {
|
|||
initializeUnlockFieldButtons: (containerElement: HTMLElement) => void;
|
||||
|
||||
populateAliases: (containerElement: HTMLElement) => void;
|
||||
escapedAliases: {
|
||||
Map: string;
|
||||
map: string;
|
||||
Lot: string;
|
||||
lot: string;
|
||||
Lots: string;
|
||||
lots: string;
|
||||
Occupancy: string;
|
||||
occupancy: string;
|
||||
Occupancies: string;
|
||||
occupancies: string;
|
||||
Occupant: string;
|
||||
occupant: string;
|
||||
Occupants: string;
|
||||
occupants: string;
|
||||
ExternalReceiptNumber: string;
|
||||
externalReceiptNumber: string;
|
||||
OccupancyStartDate: string;
|
||||
occupancyStartDate: string;
|
||||
WorkOrderOpenDate: string;
|
||||
workOrderOpenDate: string;
|
||||
WorkOrderCloseDate: string;
|
||||
workOrderCloseDate: string;
|
||||
};
|
||||
|
||||
getRandomColor: (seedString: string) => string;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue