diff --git a/public-typescript/workOrderEdit.js b/public-typescript/workOrderEdit.js
index 15c47630..9691157a 100644
--- a/public-typescript/workOrderEdit.js
+++ b/public-typescript/workOrderEdit.js
@@ -41,25 +41,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
/*
* Work Order Options
*/
+ function doClose() {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doCloseWorkOrder", {
+ workOrderId
+ }, (responseJSON) => {
+ if (responseJSON.success) {
+ window.location.href =
+ los.urlPrefix + "/workOrders/" + encodeURIComponent(workOrderId);
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Closing Work Order",
+ message: responseJSON.errorMessage || "",
+ contextualColorName: "danger"
+ });
+ }
+ });
+ }
+ function doDelete() {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrder", {
+ workOrderId
+ }, (responseJSON) => {
+ if (responseJSON.success) {
+ window.location.href = los.urlPrefix + "/workOrders";
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Deleting Work Order",
+ message: responseJSON.errorMessage || "",
+ contextualColorName: "danger"
+ });
+ }
+ });
+ }
let workOrderMilestones;
if (!isCreate) {
- const doClose = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doCloseWorkOrder", {
- workOrderId
- }, (responseJSON) => {
- if (responseJSON.success) {
- window.location.href =
- los.urlPrefix + "/workOrders/" + encodeURIComponent(workOrderId);
- }
- else {
- bulmaJS.alert({
- title: "Error Closing Work Order",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- });
- };
document.querySelector("#button--closeWorkOrder").addEventListener("click", () => {
const hasOpenMilestones = workOrderMilestones.some((milestone) => {
return !milestone.workOrderMilestoneCompletionDate;
@@ -72,17 +88,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
contextualColorName: "warning"
});
/*
- // Disable closing work orders with open milestones
- bulmaJS.confirm({
- title: "Close Work Order with Outstanding Milestones",
- message:
- "Are you sure you want to close this work order with outstanding milestones?",
- contextualColorName: "danger",
- okButton: {
- text: "Yes, Close Work Order",
- callbackFunction: doClose
- }
- });
+ // Disable closing work orders with open milestones
+ bulmaJS.confirm({
+ title: "Close Work Order with Outstanding Milestones",
+ message:
+ "Are you sure you want to close this work order with outstanding milestones?",
+ contextualColorName: "danger",
+ okButton: {
+ text: "Yes, Close Work Order",
+ callbackFunction: doClose
+ }
+ });
*/
}
else {
@@ -97,23 +113,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
});
- const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrder", {
- workOrderId
- }, (responseJSON) => {
- if (responseJSON.success) {
- window.location.href = los.urlPrefix + "/workOrders";
- }
- else {
- bulmaJS.alert({
- title: "Error Deleting Work Order",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- });
- };
- document.querySelector("#button--deleteWorkOrder").addEventListener("click", (clickEvent) => {
+ document
+ .querySelector("#button--deleteWorkOrder")
+ .addEventListener("click", (clickEvent) => {
clickEvent.preventDefault();
bulmaJS.confirm({
title: "Delete Work Order",
@@ -696,7 +698,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
let editFormElement;
let editCloseModalFunction;
- const editComment = (submitEvent) => {
+ function editComment(submitEvent) {
submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + "/workOrders/doUpdateWorkOrderComment", editFormElement, (responseJSON) => {
if (responseJSON.success) {
@@ -712,15 +714,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
});
- };
+ }
cityssm.openHtmlModal("workOrder-editComment", {
- onshow: (modalElement) => {
+ onshow(modalElement) {
modalElement.querySelector("#workOrderCommentEdit--workOrderId").value = workOrderId;
modalElement.querySelector("#workOrderCommentEdit--workOrderCommentId").value = workOrderCommentId.toString();
modalElement.querySelector("#workOrderCommentEdit--workOrderComment").value = workOrderComment.workOrderComment;
const workOrderCommentDateStringElement = modalElement.querySelector("#workOrderCommentEdit--workOrderCommentDateString");
- workOrderCommentDateStringElement.value =
- workOrderComment.workOrderCommentDateString;
+ workOrderCommentDateStringElement.value = workOrderComment.workOrderCommentDateString;
const currentDateString = cityssm.dateToString(new Date());
workOrderCommentDateStringElement.max =
workOrderComment.workOrderCommentDateString <= currentDateString
@@ -728,7 +729,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
: workOrderComment.workOrderCommentDateString;
modalElement.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value = workOrderComment.workOrderCommentTimeString;
},
- onshown: (modalElement, closeModalFunction) => {
+ onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped();
los.initializeDatePickers(modalElement);
// los.initializeTimePickers(modalElement);
@@ -737,14 +738,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
editFormElement.addEventListener("submit", editComment);
editCloseModalFunction = closeModalFunction;
},
- onremoved: () => {
+ onremoved() {
bulmaJS.toggleHtmlClipped();
}
});
};
- const deleteWorkOrderComment = (clickEvent) => {
+ function deleteWorkOrderComment(clickEvent) {
const workOrderCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.workOrderCommentId, 10);
- const doDelete = () => {
+ function doDelete() {
cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderComment", {
workOrderId,
workOrderCommentId
@@ -761,7 +762,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
});
- };
+ }
bulmaJS.confirm({
title: "Remove Comment?",
message: "Are you sure you want to remove this comment?",
@@ -771,8 +772,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
},
contextualColorName: "warning"
});
- };
- const renderWorkOrderComments = () => {
+ }
+ function renderWorkOrderComments() {
const containerElement = document.querySelector("#container--workOrderComments");
if (workOrderComments.length === 0) {
containerElement.innerHTML =
@@ -819,16 +820,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
"") +
"" +
"");
- tableRowElement.querySelector(".button--edit").addEventListener("click", openEditWorkOrderComment);
- tableRowElement.querySelector(".button--delete").addEventListener("click", deleteWorkOrderComment);
+ tableRowElement
+ .querySelector(".button--edit")
+ .addEventListener("click", openEditWorkOrderComment);
+ tableRowElement
+ .querySelector(".button--delete")
+ .addEventListener("click", deleteWorkOrderComment);
tableElement.querySelector("tbody").append(tableRowElement);
}
containerElement.innerHTML = "";
containerElement.append(tableElement);
- };
- const openAddCommentModal = () => {
+ }
+ function openAddCommentModal() {
let addCommentCloseModalFunction;
- const doAddComment = (formEvent) => {
+ function doAddComment(formEvent) {
formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + "/workOrders/doAddWorkOrderComment", formEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
@@ -837,7 +842,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
addCommentCloseModalFunction();
}
});
- };
+ }
cityssm.openHtmlModal("workOrder-addComment", {
onshow(modalElement) {
los.populateAliases(modalElement);
@@ -854,237 +859,238 @@ Object.defineProperty(exports, "__esModule", { value: true });
document.querySelector("#workOrderComments--add").focus();
}
});
- };
+ }
if (!isCreate) {
- document.querySelector("#workOrderComments--add").addEventListener("click", openAddCommentModal);
+ document
+ .querySelector("#workOrderComments--add")
+ .addEventListener("click", openAddCommentModal);
renderWorkOrderComments();
}
/*
* Milestones
*/
+ function processMilestoneResponse(responseJSON) {
+ if (responseJSON.success) {
+ workOrderMilestones = responseJSON.workOrderMilestones;
+ renderMilestones();
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Reopening Milestone",
+ message: responseJSON.errorMessage || "",
+ contextualColorName: "danger"
+ });
+ }
+ }
+ function completeMilestone(clickEvent) {
+ clickEvent.preventDefault();
+ const currentDateString = cityssm.dateToString(new Date());
+ const workOrderMilestoneId = Number.parseInt(clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId, 10);
+ const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
+ return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
+ });
+ const doComplete = () => {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doCompleteWorkOrderMilestone", {
+ workOrderId,
+ workOrderMilestoneId
+ }, processMilestoneResponse);
+ };
+ bulmaJS.confirm({
+ title: "Complete Milestone",
+ message: "Are you sure you want to complete this milestone?" +
+ (workOrderMilestone.workOrderMilestoneDateString > currentDateString
+ ? "Note that this milestone is expected to be completed in the future. "
+ : ""),
+ messageIsHtml: true,
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Complete Milestone",
+ callbackFunction: doComplete
+ }
+ });
+ }
+ function reopenMilestone(clickEvent) {
+ clickEvent.preventDefault();
+ const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
+ const doReopen = () => {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doReopenWorkOrderMilestone", {
+ workOrderId,
+ workOrderMilestoneId
+ }, processMilestoneResponse);
+ };
+ bulmaJS.confirm({
+ title: "Reopen Milestone",
+ message: "Are you sure you want to remove the completion status from this milestone, and reopen it?",
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Reopen Milestone",
+ callbackFunction: doReopen
+ }
+ });
+ }
+ function deleteMilestone(clickEvent) {
+ clickEvent.preventDefault();
+ const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
+ const doDelete = () => {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderMilestone", {
+ workOrderMilestoneId,
+ workOrderId
+ }, processMilestoneResponse);
+ };
+ bulmaJS.confirm({
+ title: "Delete Milestone",
+ message: "Are you sure you want to delete this milestone?",
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Delete Milestone",
+ callbackFunction: doDelete
+ }
+ });
+ }
+ function editMilestone(clickEvent) {
+ clickEvent.preventDefault();
+ const workOrderMilestoneId = Number.parseInt(clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId, 10);
+ const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
+ return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
+ });
+ let editCloseModalFunction;
+ const doEdit = (submitEvent) => {
+ submitEvent.preventDefault();
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doUpdateWorkOrderMilestone", submitEvent.currentTarget, (responseJSON) => {
+ processMilestoneResponse(responseJSON);
+ if (responseJSON.success) {
+ editCloseModalFunction();
+ }
+ });
+ };
+ cityssm.openHtmlModal("workOrder-editMilestone", {
+ onshow: (modalElement) => {
+ modalElement.querySelector("#milestoneEdit--workOrderId").value = workOrderId;
+ modalElement.querySelector("#milestoneEdit--workOrderMilestoneId").value = workOrderMilestone.workOrderMilestoneId.toString();
+ const milestoneTypeElement = modalElement.querySelector("#milestoneEdit--workOrderMilestoneTypeId");
+ let milestoneTypeFound = false;
+ for (const milestoneType of exports.workOrderMilestoneTypes) {
+ const optionElement = document.createElement("option");
+ optionElement.value = milestoneType.workOrderMilestoneTypeId.toString();
+ optionElement.textContent = milestoneType.workOrderMilestoneType;
+ if (milestoneType.workOrderMilestoneTypeId ===
+ workOrderMilestone.workOrderMilestoneTypeId) {
+ optionElement.selected = true;
+ milestoneTypeFound = true;
+ }
+ milestoneTypeElement.append(optionElement);
+ }
+ if (!milestoneTypeFound && workOrderMilestone.workOrderMilestoneTypeId) {
+ const optionElement = document.createElement("option");
+ optionElement.value = workOrderMilestone.workOrderMilestoneTypeId.toString();
+ optionElement.textContent = workOrderMilestone.workOrderMilestoneType;
+ optionElement.selected = true;
+ milestoneTypeElement.append(optionElement);
+ }
+ modalElement.querySelector("#milestoneEdit--workOrderMilestoneDateString").value = workOrderMilestone.workOrderMilestoneDateString;
+ if (workOrderMilestone.workOrderMilestoneTime) {
+ modalElement.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value = workOrderMilestone.workOrderMilestoneTimeString;
+ }
+ modalElement.querySelector("#milestoneEdit--workOrderMilestoneDescription").value = workOrderMilestone.workOrderMilestoneDescription;
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ editCloseModalFunction = closeModalFunction;
+ bulmaJS.toggleHtmlClipped();
+ los.initializeDatePickers(modalElement);
+ // los.initializeTimePickers(modalElement);
+ modalElement.querySelector("form").addEventListener("submit", doEdit);
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped();
+ }
+ });
+ }
+ function renderMilestones() {
+ // Clear milestones panel
+ const milestonesPanelElement = document.querySelector("#panel--milestones");
+ const panelBlockElementsToDelete = milestonesPanelElement.querySelectorAll(".panel-block");
+ for (const panelBlockToDelete of panelBlockElementsToDelete) {
+ panelBlockToDelete.remove();
+ }
+ for (const milestone of workOrderMilestones) {
+ const panelBlockElement = document.createElement("div");
+ panelBlockElement.className = "panel-block is-block container--milestone";
+ panelBlockElement.dataset.workOrderMilestoneId =
+ milestone.workOrderMilestoneId.toString();
+ panelBlockElement.innerHTML =
+ '
' +
+ ('
' +
+ (milestone.workOrderMilestoneCompletionDate
+ ? '' +
+ ' ' +
+ " "
+ : '' +
+ ' ' +
+ " ") +
+ "
") +
+ ('
' +
+ (milestone.workOrderMilestoneTypeId
+ ? "" +
+ cityssm.escapeHTML(milestone.workOrderMilestoneType || "") +
+ " "
+ : "") +
+ milestone.workOrderMilestoneDateString +
+ (milestone.workOrderMilestoneTime
+ ? " " + milestone.workOrderMilestoneTimeString
+ : "") +
+ " " +
+ '' +
+ cityssm.escapeHTML(milestone.workOrderMilestoneDescription || "") +
+ " " +
+ "
") +
+ ('
' +
+ '
' +
+ ('
' +
+ '' +
+ ' ' +
+ " " +
+ "
") +
+ ('") +
+ "
" +
+ "
") +
+ "
";
+ if (milestone.workOrderMilestoneCompletionDate) {
+ panelBlockElement.querySelector(".button--reopenMilestone").addEventListener("click", reopenMilestone);
+ }
+ else {
+ panelBlockElement.querySelector(".button--editMilestone").addEventListener("click", editMilestone);
+ panelBlockElement.querySelector(".button--completeMilestone").addEventListener("click", completeMilestone);
+ }
+ panelBlockElement.querySelector(".button--deleteMilestone").addEventListener("click", deleteMilestone);
+ milestonesPanelElement.append(panelBlockElement);
+ }
+ bulmaJS.init(milestonesPanelElement);
+ }
if (!isCreate) {
workOrderMilestones = exports.workOrderMilestones;
delete exports.workOrderMilestones;
- const processMilestoneResponse = (responseJSON) => {
- if (responseJSON.success) {
- workOrderMilestones = responseJSON.workOrderMilestones;
- renderMilestones();
- }
- else {
- bulmaJS.alert({
- title: "Error Reopening Milestone",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- };
- const completeMilestone = (clickEvent) => {
- clickEvent.preventDefault();
- const currentDateString = cityssm.dateToString(new Date());
- const workOrderMilestoneId = Number.parseInt(clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId, 10);
- const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
- return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
- });
- const doComplete = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doCompleteWorkOrderMilestone", {
- workOrderId,
- workOrderMilestoneId
- }, processMilestoneResponse);
- };
- bulmaJS.confirm({
- title: "Complete Milestone",
- message: "Are you sure you want to complete this milestone?" +
- (workOrderMilestone.workOrderMilestoneDateString > currentDateString
- ? "Note that this milestone is expected to be completed in the future. "
- : ""),
- messageIsHtml: true,
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Complete Milestone",
- callbackFunction: doComplete
- }
- });
- };
- const reopenMilestone = (clickEvent) => {
- clickEvent.preventDefault();
- const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
- const doReopen = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doReopenWorkOrderMilestone", {
- workOrderId,
- workOrderMilestoneId
- }, processMilestoneResponse);
- };
- bulmaJS.confirm({
- title: "Reopen Milestone",
- message: "Are you sure you want to remove the completion status from this milestone, and reopen it?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Reopen Milestone",
- callbackFunction: doReopen
- }
- });
- };
- const deleteMilestone = (clickEvent) => {
- clickEvent.preventDefault();
- const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
- const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderMilestone", {
- workOrderMilestoneId,
- workOrderId
- }, processMilestoneResponse);
- };
- bulmaJS.confirm({
- title: "Delete Milestone",
- message: "Are you sure you want to delete this milestone?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Milestone",
- callbackFunction: doDelete
- }
- });
- };
- const editMilestone = (clickEvent) => {
- clickEvent.preventDefault();
- const workOrderMilestoneId = Number.parseInt(clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId, 10);
- const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
- return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
- });
- let editCloseModalFunction;
- const doEdit = (submitEvent) => {
- submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/workOrders/doUpdateWorkOrderMilestone", submitEvent.currentTarget, (responseJSON) => {
- processMilestoneResponse(responseJSON);
- if (responseJSON.success) {
- editCloseModalFunction();
- }
- });
- };
- cityssm.openHtmlModal("workOrder-editMilestone", {
- onshow: (modalElement) => {
- modalElement.querySelector("#milestoneEdit--workOrderId").value = workOrderId;
- modalElement.querySelector("#milestoneEdit--workOrderMilestoneId").value = workOrderMilestone.workOrderMilestoneId.toString();
- const milestoneTypeElement = modalElement.querySelector("#milestoneEdit--workOrderMilestoneTypeId");
- let milestoneTypeFound = false;
- for (const milestoneType of exports.workOrderMilestoneTypes) {
- const optionElement = document.createElement("option");
- optionElement.value = milestoneType.workOrderMilestoneTypeId.toString();
- optionElement.textContent = milestoneType.workOrderMilestoneType;
- if (milestoneType.workOrderMilestoneTypeId ===
- workOrderMilestone.workOrderMilestoneTypeId) {
- optionElement.selected = true;
- milestoneTypeFound = true;
- }
- milestoneTypeElement.append(optionElement);
- }
- if (!milestoneTypeFound && workOrderMilestone.workOrderMilestoneTypeId) {
- const optionElement = document.createElement("option");
- optionElement.value =
- workOrderMilestone.workOrderMilestoneTypeId.toString();
- optionElement.textContent = workOrderMilestone.workOrderMilestoneType;
- optionElement.selected = true;
- milestoneTypeElement.append(optionElement);
- }
- modalElement.querySelector("#milestoneEdit--workOrderMilestoneDateString").value = workOrderMilestone.workOrderMilestoneDateString;
- if (workOrderMilestone.workOrderMilestoneTime) {
- modalElement.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value = workOrderMilestone.workOrderMilestoneTimeString;
- }
- modalElement.querySelector("#milestoneEdit--workOrderMilestoneDescription").value = workOrderMilestone.workOrderMilestoneDescription;
- },
- onshown: (modalElement, closeModalFunction) => {
- editCloseModalFunction = closeModalFunction;
- bulmaJS.toggleHtmlClipped();
- los.initializeDatePickers(modalElement);
- // los.initializeTimePickers(modalElement);
- modalElement.querySelector("form").addEventListener("submit", doEdit);
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
- }
- });
- };
- const renderMilestones = () => {
- // Clear milestones panel
- const milestonesPanelElement = document.querySelector("#panel--milestones");
- const panelBlockElementsToDelete = milestonesPanelElement.querySelectorAll(".panel-block");
- for (const panelBlockToDelete of panelBlockElementsToDelete) {
- panelBlockToDelete.remove();
- }
- for (const milestone of workOrderMilestones) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--milestone";
- panelBlockElement.dataset.workOrderMilestoneId =
- milestone.workOrderMilestoneId.toString();
- panelBlockElement.innerHTML =
- '' +
- ('
' +
- (milestone.workOrderMilestoneCompletionDate
- ? '' +
- ' ' +
- " "
- : '' +
- ' ' +
- " ") +
- "
") +
- ('
' +
- (milestone.workOrderMilestoneTypeId
- ? "" +
- cityssm.escapeHTML(milestone.workOrderMilestoneType || "") +
- " "
- : "") +
- milestone.workOrderMilestoneDateString +
- (milestone.workOrderMilestoneTime
- ? " " + milestone.workOrderMilestoneTimeString
- : "") +
- " " +
- '' +
- cityssm.escapeHTML(milestone.workOrderMilestoneDescription || "") +
- " " +
- "
") +
- ('
' +
- '
' +
- ('
' +
- '' +
- ' ' +
- " " +
- "
") +
- ('") +
- "
" +
- "
") +
- "
";
- if (milestone.workOrderMilestoneCompletionDate) {
- panelBlockElement.querySelector(".button--reopenMilestone").addEventListener("click", reopenMilestone);
- }
- else {
- panelBlockElement.querySelector(".button--editMilestone").addEventListener("click", editMilestone);
- panelBlockElement.querySelector(".button--completeMilestone").addEventListener("click", completeMilestone);
- }
- panelBlockElement.querySelector(".button--deleteMilestone").addEventListener("click", deleteMilestone);
- milestonesPanelElement.append(panelBlockElement);
- }
- bulmaJS.init(milestonesPanelElement);
- };
renderMilestones();
document.querySelector("#button--addMilestone").addEventListener("click", () => {
let addModalElement;
@@ -1095,14 +1101,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
submitEvent.preventDefault();
}
const currentDateString = cityssm.dateToString(new Date());
- const _doAdd = () => {
+ function _doAdd() {
cityssm.postJSON(los.urlPrefix + "/workOrders/doAddWorkOrderMilestone", addFormElement, (responseJSON) => {
processMilestoneResponse(responseJSON);
if (responseJSON.success) {
addCloseModalFunction();
}
});
- };
+ }
if (addModalElement.querySelector("#milestoneAdd--workOrderMilestoneDateString").value < currentDateString) {
bulmaJS.confirm({
title: "Milestone Date in the Past",
@@ -1119,7 +1125,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
};
cityssm.openHtmlModal("workOrder-addMilestone", {
- onshow: (modalElement) => {
+ onshow(modalElement) {
modalElement.querySelector("#milestoneAdd--workOrderId").value = workOrderId;
const milestoneTypeElement = modalElement.querySelector("#milestoneAdd--workOrderMilestoneTypeId");
for (const milestoneType of exports.workOrderMilestoneTypes) {
@@ -1130,7 +1136,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
modalElement.querySelector("#milestoneAdd--workOrderMilestoneDateString").valueAsDate = new Date();
},
- onshown: (modalElement, closeModalFunction) => {
+ onshown(modalElement, closeModalFunction) {
addModalElement = modalElement;
addCloseModalFunction = closeModalFunction;
los.initializeDatePickers(modalElement);
@@ -1139,7 +1145,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
addFormElement = modalElement.querySelector("form");
addFormElement.addEventListener("submit", doAdd);
},
- onremoved: () => {
+ onremoved() {
bulmaJS.toggleHtmlClipped();
}
});
diff --git a/public-typescript/workOrderEdit/workOrderEdit.js b/public-typescript/workOrderEdit/workOrderEdit.js
index 2613f3e1..d0953003 100644
--- a/public-typescript/workOrderEdit/workOrderEdit.js
+++ b/public-typescript/workOrderEdit/workOrderEdit.js
@@ -41,25 +41,41 @@ Object.defineProperty(exports, "__esModule", { value: true });
/*
* Work Order Options
*/
+ function doClose() {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doCloseWorkOrder", {
+ workOrderId
+ }, (responseJSON) => {
+ if (responseJSON.success) {
+ window.location.href =
+ los.urlPrefix + "/workOrders/" + encodeURIComponent(workOrderId);
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Closing Work Order",
+ message: responseJSON.errorMessage || "",
+ contextualColorName: "danger"
+ });
+ }
+ });
+ }
+ function doDelete() {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrder", {
+ workOrderId
+ }, (responseJSON) => {
+ if (responseJSON.success) {
+ window.location.href = los.urlPrefix + "/workOrders";
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Deleting Work Order",
+ message: responseJSON.errorMessage || "",
+ contextualColorName: "danger"
+ });
+ }
+ });
+ }
let workOrderMilestones;
if (!isCreate) {
- const doClose = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doCloseWorkOrder", {
- workOrderId
- }, (responseJSON) => {
- if (responseJSON.success) {
- window.location.href =
- los.urlPrefix + "/workOrders/" + encodeURIComponent(workOrderId);
- }
- else {
- bulmaJS.alert({
- title: "Error Closing Work Order",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- });
- };
document.querySelector("#button--closeWorkOrder").addEventListener("click", () => {
const hasOpenMilestones = workOrderMilestones.some((milestone) => {
return !milestone.workOrderMilestoneCompletionDate;
@@ -72,17 +88,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
contextualColorName: "warning"
});
/*
- // Disable closing work orders with open milestones
- bulmaJS.confirm({
- title: "Close Work Order with Outstanding Milestones",
- message:
- "Are you sure you want to close this work order with outstanding milestones?",
- contextualColorName: "danger",
- okButton: {
- text: "Yes, Close Work Order",
- callbackFunction: doClose
- }
- });
+ // Disable closing work orders with open milestones
+ bulmaJS.confirm({
+ title: "Close Work Order with Outstanding Milestones",
+ message:
+ "Are you sure you want to close this work order with outstanding milestones?",
+ contextualColorName: "danger",
+ okButton: {
+ text: "Yes, Close Work Order",
+ callbackFunction: doClose
+ }
+ });
*/
}
else {
@@ -97,23 +113,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
});
}
});
- const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrder", {
- workOrderId
- }, (responseJSON) => {
- if (responseJSON.success) {
- window.location.href = los.urlPrefix + "/workOrders";
- }
- else {
- bulmaJS.alert({
- title: "Error Deleting Work Order",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- });
- };
- document.querySelector("#button--deleteWorkOrder").addEventListener("click", (clickEvent) => {
+ document
+ .querySelector("#button--deleteWorkOrder")
+ .addEventListener("click", (clickEvent) => {
clickEvent.preventDefault();
bulmaJS.confirm({
title: "Delete Work Order",
@@ -139,228 +141,227 @@ Object.defineProperty(exports, "__esModule", { value: true });
/*
* Milestones
*/
+ function processMilestoneResponse(responseJSON) {
+ if (responseJSON.success) {
+ workOrderMilestones = responseJSON.workOrderMilestones;
+ renderMilestones();
+ }
+ else {
+ bulmaJS.alert({
+ title: "Error Reopening Milestone",
+ message: responseJSON.errorMessage || "",
+ contextualColorName: "danger"
+ });
+ }
+ }
+ function completeMilestone(clickEvent) {
+ clickEvent.preventDefault();
+ const currentDateString = cityssm.dateToString(new Date());
+ const workOrderMilestoneId = Number.parseInt(clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId, 10);
+ const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
+ return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
+ });
+ const doComplete = () => {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doCompleteWorkOrderMilestone", {
+ workOrderId,
+ workOrderMilestoneId
+ }, processMilestoneResponse);
+ };
+ bulmaJS.confirm({
+ title: "Complete Milestone",
+ message: "Are you sure you want to complete this milestone?" +
+ (workOrderMilestone.workOrderMilestoneDateString > currentDateString
+ ? "Note that this milestone is expected to be completed in the future. "
+ : ""),
+ messageIsHtml: true,
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Complete Milestone",
+ callbackFunction: doComplete
+ }
+ });
+ }
+ function reopenMilestone(clickEvent) {
+ clickEvent.preventDefault();
+ const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
+ const doReopen = () => {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doReopenWorkOrderMilestone", {
+ workOrderId,
+ workOrderMilestoneId
+ }, processMilestoneResponse);
+ };
+ bulmaJS.confirm({
+ title: "Reopen Milestone",
+ message: "Are you sure you want to remove the completion status from this milestone, and reopen it?",
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Reopen Milestone",
+ callbackFunction: doReopen
+ }
+ });
+ }
+ function deleteMilestone(clickEvent) {
+ clickEvent.preventDefault();
+ const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
+ const doDelete = () => {
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderMilestone", {
+ workOrderMilestoneId,
+ workOrderId
+ }, processMilestoneResponse);
+ };
+ bulmaJS.confirm({
+ title: "Delete Milestone",
+ message: "Are you sure you want to delete this milestone?",
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Delete Milestone",
+ callbackFunction: doDelete
+ }
+ });
+ }
+ function editMilestone(clickEvent) {
+ clickEvent.preventDefault();
+ const workOrderMilestoneId = Number.parseInt(clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId, 10);
+ const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
+ return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
+ });
+ let editCloseModalFunction;
+ const doEdit = (submitEvent) => {
+ submitEvent.preventDefault();
+ cityssm.postJSON(los.urlPrefix + "/workOrders/doUpdateWorkOrderMilestone", submitEvent.currentTarget, (responseJSON) => {
+ processMilestoneResponse(responseJSON);
+ if (responseJSON.success) {
+ editCloseModalFunction();
+ }
+ });
+ };
+ cityssm.openHtmlModal("workOrder-editMilestone", {
+ onshow: (modalElement) => {
+ modalElement.querySelector("#milestoneEdit--workOrderId").value = workOrderId;
+ modalElement.querySelector("#milestoneEdit--workOrderMilestoneId").value = workOrderMilestone.workOrderMilestoneId.toString();
+ const milestoneTypeElement = modalElement.querySelector("#milestoneEdit--workOrderMilestoneTypeId");
+ let milestoneTypeFound = false;
+ for (const milestoneType of exports.workOrderMilestoneTypes) {
+ const optionElement = document.createElement("option");
+ optionElement.value = milestoneType.workOrderMilestoneTypeId.toString();
+ optionElement.textContent = milestoneType.workOrderMilestoneType;
+ if (milestoneType.workOrderMilestoneTypeId ===
+ workOrderMilestone.workOrderMilestoneTypeId) {
+ optionElement.selected = true;
+ milestoneTypeFound = true;
+ }
+ milestoneTypeElement.append(optionElement);
+ }
+ if (!milestoneTypeFound && workOrderMilestone.workOrderMilestoneTypeId) {
+ const optionElement = document.createElement("option");
+ optionElement.value = workOrderMilestone.workOrderMilestoneTypeId.toString();
+ optionElement.textContent = workOrderMilestone.workOrderMilestoneType;
+ optionElement.selected = true;
+ milestoneTypeElement.append(optionElement);
+ }
+ modalElement.querySelector("#milestoneEdit--workOrderMilestoneDateString").value = workOrderMilestone.workOrderMilestoneDateString;
+ if (workOrderMilestone.workOrderMilestoneTime) {
+ modalElement.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value = workOrderMilestone.workOrderMilestoneTimeString;
+ }
+ modalElement.querySelector("#milestoneEdit--workOrderMilestoneDescription").value = workOrderMilestone.workOrderMilestoneDescription;
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ editCloseModalFunction = closeModalFunction;
+ bulmaJS.toggleHtmlClipped();
+ los.initializeDatePickers(modalElement);
+ // los.initializeTimePickers(modalElement);
+ modalElement.querySelector("form").addEventListener("submit", doEdit);
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped();
+ }
+ });
+ }
+ function renderMilestones() {
+ // Clear milestones panel
+ const milestonesPanelElement = document.querySelector("#panel--milestones");
+ const panelBlockElementsToDelete = milestonesPanelElement.querySelectorAll(".panel-block");
+ for (const panelBlockToDelete of panelBlockElementsToDelete) {
+ panelBlockToDelete.remove();
+ }
+ for (const milestone of workOrderMilestones) {
+ const panelBlockElement = document.createElement("div");
+ panelBlockElement.className = "panel-block is-block container--milestone";
+ panelBlockElement.dataset.workOrderMilestoneId =
+ milestone.workOrderMilestoneId.toString();
+ panelBlockElement.innerHTML =
+ '' +
+ ('
' +
+ (milestone.workOrderMilestoneCompletionDate
+ ? '' +
+ ' ' +
+ " "
+ : '' +
+ ' ' +
+ " ") +
+ "
") +
+ ('
' +
+ (milestone.workOrderMilestoneTypeId
+ ? "" +
+ cityssm.escapeHTML(milestone.workOrderMilestoneType || "") +
+ " "
+ : "") +
+ milestone.workOrderMilestoneDateString +
+ (milestone.workOrderMilestoneTime
+ ? " " + milestone.workOrderMilestoneTimeString
+ : "") +
+ " " +
+ '' +
+ cityssm.escapeHTML(milestone.workOrderMilestoneDescription || "") +
+ " " +
+ "
") +
+ ('
' +
+ '
' +
+ ('
' +
+ '' +
+ ' ' +
+ " " +
+ "
") +
+ ('") +
+ "
" +
+ "
") +
+ "
";
+ if (milestone.workOrderMilestoneCompletionDate) {
+ panelBlockElement.querySelector(".button--reopenMilestone").addEventListener("click", reopenMilestone);
+ }
+ else {
+ panelBlockElement.querySelector(".button--editMilestone").addEventListener("click", editMilestone);
+ panelBlockElement.querySelector(".button--completeMilestone").addEventListener("click", completeMilestone);
+ }
+ panelBlockElement.querySelector(".button--deleteMilestone").addEventListener("click", deleteMilestone);
+ milestonesPanelElement.append(panelBlockElement);
+ }
+ bulmaJS.init(milestonesPanelElement);
+ }
if (!isCreate) {
workOrderMilestones = exports.workOrderMilestones;
delete exports.workOrderMilestones;
- const processMilestoneResponse = (responseJSON) => {
- if (responseJSON.success) {
- workOrderMilestones = responseJSON.workOrderMilestones;
- renderMilestones();
- }
- else {
- bulmaJS.alert({
- title: "Error Reopening Milestone",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- };
- const completeMilestone = (clickEvent) => {
- clickEvent.preventDefault();
- const currentDateString = cityssm.dateToString(new Date());
- const workOrderMilestoneId = Number.parseInt(clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId, 10);
- const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
- return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
- });
- const doComplete = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doCompleteWorkOrderMilestone", {
- workOrderId,
- workOrderMilestoneId
- }, processMilestoneResponse);
- };
- bulmaJS.confirm({
- title: "Complete Milestone",
- message: "Are you sure you want to complete this milestone?" +
- (workOrderMilestone.workOrderMilestoneDateString > currentDateString
- ? "Note that this milestone is expected to be completed in the future. "
- : ""),
- messageIsHtml: true,
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Complete Milestone",
- callbackFunction: doComplete
- }
- });
- };
- const reopenMilestone = (clickEvent) => {
- clickEvent.preventDefault();
- const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
- const doReopen = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doReopenWorkOrderMilestone", {
- workOrderId,
- workOrderMilestoneId
- }, processMilestoneResponse);
- };
- bulmaJS.confirm({
- title: "Reopen Milestone",
- message: "Are you sure you want to remove the completion status from this milestone, and reopen it?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Reopen Milestone",
- callbackFunction: doReopen
- }
- });
- };
- const deleteMilestone = (clickEvent) => {
- clickEvent.preventDefault();
- const workOrderMilestoneId = clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;
- const doDelete = () => {
- cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderMilestone", {
- workOrderMilestoneId,
- workOrderId
- }, processMilestoneResponse);
- };
- bulmaJS.confirm({
- title: "Delete Milestone",
- message: "Are you sure you want to delete this milestone?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Milestone",
- callbackFunction: doDelete
- }
- });
- };
- const editMilestone = (clickEvent) => {
- clickEvent.preventDefault();
- const workOrderMilestoneId = Number.parseInt(clickEvent.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId, 10);
- const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
- return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
- });
- let editCloseModalFunction;
- const doEdit = (submitEvent) => {
- submitEvent.preventDefault();
- cityssm.postJSON(los.urlPrefix + "/workOrders/doUpdateWorkOrderMilestone", submitEvent.currentTarget, (responseJSON) => {
- processMilestoneResponse(responseJSON);
- if (responseJSON.success) {
- editCloseModalFunction();
- }
- });
- };
- cityssm.openHtmlModal("workOrder-editMilestone", {
- onshow: (modalElement) => {
- modalElement.querySelector("#milestoneEdit--workOrderId").value = workOrderId;
- modalElement.querySelector("#milestoneEdit--workOrderMilestoneId").value = workOrderMilestone.workOrderMilestoneId.toString();
- const milestoneTypeElement = modalElement.querySelector("#milestoneEdit--workOrderMilestoneTypeId");
- let milestoneTypeFound = false;
- for (const milestoneType of exports.workOrderMilestoneTypes) {
- const optionElement = document.createElement("option");
- optionElement.value = milestoneType.workOrderMilestoneTypeId.toString();
- optionElement.textContent = milestoneType.workOrderMilestoneType;
- if (milestoneType.workOrderMilestoneTypeId ===
- workOrderMilestone.workOrderMilestoneTypeId) {
- optionElement.selected = true;
- milestoneTypeFound = true;
- }
- milestoneTypeElement.append(optionElement);
- }
- if (!milestoneTypeFound && workOrderMilestone.workOrderMilestoneTypeId) {
- const optionElement = document.createElement("option");
- optionElement.value =
- workOrderMilestone.workOrderMilestoneTypeId.toString();
- optionElement.textContent = workOrderMilestone.workOrderMilestoneType;
- optionElement.selected = true;
- milestoneTypeElement.append(optionElement);
- }
- modalElement.querySelector("#milestoneEdit--workOrderMilestoneDateString").value = workOrderMilestone.workOrderMilestoneDateString;
- if (workOrderMilestone.workOrderMilestoneTime) {
- modalElement.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value = workOrderMilestone.workOrderMilestoneTimeString;
- }
- modalElement.querySelector("#milestoneEdit--workOrderMilestoneDescription").value = workOrderMilestone.workOrderMilestoneDescription;
- },
- onshown: (modalElement, closeModalFunction) => {
- editCloseModalFunction = closeModalFunction;
- bulmaJS.toggleHtmlClipped();
- los.initializeDatePickers(modalElement);
- // los.initializeTimePickers(modalElement);
- modalElement.querySelector("form").addEventListener("submit", doEdit);
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
- }
- });
- };
- const renderMilestones = () => {
- // Clear milestones panel
- const milestonesPanelElement = document.querySelector("#panel--milestones");
- const panelBlockElementsToDelete = milestonesPanelElement.querySelectorAll(".panel-block");
- for (const panelBlockToDelete of panelBlockElementsToDelete) {
- panelBlockToDelete.remove();
- }
- for (const milestone of workOrderMilestones) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--milestone";
- panelBlockElement.dataset.workOrderMilestoneId =
- milestone.workOrderMilestoneId.toString();
- panelBlockElement.innerHTML =
- '' +
- ('
' +
- (milestone.workOrderMilestoneCompletionDate
- ? '' +
- ' ' +
- " "
- : '' +
- ' ' +
- " ") +
- "
") +
- ('
' +
- (milestone.workOrderMilestoneTypeId
- ? "" +
- cityssm.escapeHTML(milestone.workOrderMilestoneType || "") +
- " "
- : "") +
- milestone.workOrderMilestoneDateString +
- (milestone.workOrderMilestoneTime
- ? " " + milestone.workOrderMilestoneTimeString
- : "") +
- " " +
- '' +
- cityssm.escapeHTML(milestone.workOrderMilestoneDescription || "") +
- " " +
- "
") +
- ('
' +
- '
' +
- ('
' +
- '' +
- ' ' +
- " " +
- "
") +
- ('") +
- "
" +
- "
") +
- "
";
- if (milestone.workOrderMilestoneCompletionDate) {
- panelBlockElement.querySelector(".button--reopenMilestone").addEventListener("click", reopenMilestone);
- }
- else {
- panelBlockElement.querySelector(".button--editMilestone").addEventListener("click", editMilestone);
- panelBlockElement.querySelector(".button--completeMilestone").addEventListener("click", completeMilestone);
- }
- panelBlockElement.querySelector(".button--deleteMilestone").addEventListener("click", deleteMilestone);
- milestonesPanelElement.append(panelBlockElement);
- }
- bulmaJS.init(milestonesPanelElement);
- };
renderMilestones();
document.querySelector("#button--addMilestone").addEventListener("click", () => {
let addModalElement;
@@ -371,14 +372,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
submitEvent.preventDefault();
}
const currentDateString = cityssm.dateToString(new Date());
- const _doAdd = () => {
+ function _doAdd() {
cityssm.postJSON(los.urlPrefix + "/workOrders/doAddWorkOrderMilestone", addFormElement, (responseJSON) => {
processMilestoneResponse(responseJSON);
if (responseJSON.success) {
addCloseModalFunction();
}
});
- };
+ }
if (addModalElement.querySelector("#milestoneAdd--workOrderMilestoneDateString").value < currentDateString) {
bulmaJS.confirm({
title: "Milestone Date in the Past",
@@ -395,7 +396,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
};
cityssm.openHtmlModal("workOrder-addMilestone", {
- onshow: (modalElement) => {
+ onshow(modalElement) {
modalElement.querySelector("#milestoneAdd--workOrderId").value = workOrderId;
const milestoneTypeElement = modalElement.querySelector("#milestoneAdd--workOrderMilestoneTypeId");
for (const milestoneType of exports.workOrderMilestoneTypes) {
@@ -406,7 +407,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
}
modalElement.querySelector("#milestoneAdd--workOrderMilestoneDateString").valueAsDate = new Date();
},
- onshown: (modalElement, closeModalFunction) => {
+ onshown(modalElement, closeModalFunction) {
addModalElement = modalElement;
addCloseModalFunction = closeModalFunction;
los.initializeDatePickers(modalElement);
@@ -415,7 +416,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
addFormElement = modalElement.querySelector("form");
addFormElement.addEventListener("submit", doAdd);
},
- onremoved: () => {
+ onremoved() {
bulmaJS.toggleHtmlClipped();
}
});
diff --git a/public-typescript/workOrderEdit/workOrderEdit.ts b/public-typescript/workOrderEdit/workOrderEdit.ts
index 7d968bf9..2a015359 100644
--- a/public-typescript/workOrderEdit/workOrderEdit.ts
+++ b/public-typescript/workOrderEdit/workOrderEdit.ts
@@ -70,47 +70,65 @@ declare const bulmaJS: BulmaJS;
* Work Order Options
*/
+ function doClose() {
+ cityssm.postJSON(
+ los.urlPrefix + "/workOrders/doCloseWorkOrder",
+ {
+ workOrderId
+ },
+ (responseJSON: { success: boolean; errorMessage?: string }) => {
+ if (responseJSON.success) {
+ window.location.href =
+ los.urlPrefix + "/workOrders/" + encodeURIComponent(workOrderId);
+ } else {
+ bulmaJS.alert({
+ title: "Error Closing Work Order",
+ message: responseJSON.errorMessage || "",
+ contextualColorName: "danger"
+ });
+ }
+ }
+ );
+ }
+
+ function doDelete() {
+ cityssm.postJSON(
+ los.urlPrefix + "/workOrders/doDeleteWorkOrder",
+ {
+ workOrderId
+ },
+ (responseJSON: { success: boolean; errorMessage?: string }) => {
+ if (responseJSON.success) {
+ window.location.href = los.urlPrefix + "/workOrders";
+ } else {
+ bulmaJS.alert({
+ title: "Error Deleting Work Order",
+ message: responseJSON.errorMessage || "",
+ contextualColorName: "danger"
+ });
+ }
+ }
+ );
+ }
+
let workOrderMilestones: recordTypes.WorkOrderMilestone[];
if (!isCreate) {
- const doClose = () => {
- cityssm.postJSON(
- los.urlPrefix + "/workOrders/doCloseWorkOrder",
- {
- workOrderId
- },
- (responseJSON: { success: boolean; errorMessage?: string }) => {
- if (responseJSON.success) {
- window.location.href =
- los.urlPrefix + "/workOrders/" + encodeURIComponent(workOrderId);
- } else {
- bulmaJS.alert({
- title: "Error Closing Work Order",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- }
- );
- };
+ document.querySelector("#button--closeWorkOrder")!.addEventListener("click", () => {
+ const hasOpenMilestones = workOrderMilestones.some((milestone) => {
+ return !milestone.workOrderMilestoneCompletionDate;
+ });
- (document.querySelector("#button--closeWorkOrder") as HTMLButtonElement).addEventListener(
- "click",
- () => {
- const hasOpenMilestones = workOrderMilestones.some((milestone) => {
- return !milestone.workOrderMilestoneCompletionDate;
+ if (hasOpenMilestones) {
+ bulmaJS.alert({
+ title: "Outstanding Milestones",
+ message:
+ "You cannot close a work order with outstanding milestones." +
+ " Either complete the outstanding milestones, or remove them from the work order.",
+ contextualColorName: "warning"
});
- if (hasOpenMilestones) {
- bulmaJS.alert({
- title: "Outstanding Milestones",
- message:
- "You cannot close a work order with outstanding milestones." +
- " Either complete the outstanding milestones, or remove them from the work order.",
- contextualColorName: "warning"
- });
-
- /*
+ /*
// Disable closing work orders with open milestones
bulmaJS.confirm({
title: "Close Work Order with Outstanding Milestones",
@@ -122,44 +140,23 @@ declare const bulmaJS: BulmaJS;
callbackFunction: doClose
}
});
- */
- } else {
- bulmaJS.confirm({
- title: "Close Work Order",
- message: "Are you sure you want to close this work order?",
- contextualColorName: "info",
- okButton: {
- text: "Yes, Close Work Order",
- callbackFunction: doClose
- }
- });
- }
- }
- );
-
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/workOrders/doDeleteWorkOrder",
- {
- workOrderId
- },
- (responseJSON: { success: boolean; errorMessage?: string }) => {
- if (responseJSON.success) {
- window.location.href = los.urlPrefix + "/workOrders";
- } else {
- bulmaJS.alert({
- title: "Error Deleting Work Order",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
+ */
+ } else {
+ bulmaJS.confirm({
+ title: "Close Work Order",
+ message: "Are you sure you want to close this work order?",
+ contextualColorName: "info",
+ okButton: {
+ text: "Yes, Close Work Order",
+ callbackFunction: doClose
}
- }
- );
- };
+ });
+ }
+ });
- (document.querySelector("#button--deleteWorkOrder") as HTMLButtonElement).addEventListener(
- "click",
- (clickEvent: Event) => {
+ document
+ .querySelector("#button--deleteWorkOrder")!
+ .addEventListener("click", (clickEvent: Event) => {
clickEvent.preventDefault();
bulmaJS.confirm({
@@ -171,8 +168,7 @@ declare const bulmaJS: BulmaJS;
callbackFunction: doDelete
}
});
- }
- );
+ });
}
/*
@@ -193,464 +189,447 @@ declare const bulmaJS: BulmaJS;
* Milestones
*/
+ function processMilestoneResponse(responseJSON: {
+ success: boolean;
+ errorMessage?: string;
+ workOrderMilestones?: recordTypes.WorkOrderMilestone[];
+ }) {
+ if (responseJSON.success) {
+ workOrderMilestones = responseJSON.workOrderMilestones!;
+ renderMilestones();
+ } else {
+ bulmaJS.alert({
+ title: "Error Reopening Milestone",
+ message: responseJSON.errorMessage || "",
+ contextualColorName: "danger"
+ });
+ }
+ }
+
+ function completeMilestone(clickEvent: Event) {
+ clickEvent.preventDefault();
+
+ const currentDateString = cityssm.dateToString(new Date());
+
+ const workOrderMilestoneId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ ".container--milestone"
+ ) as HTMLElement
+ ).dataset.workOrderMilestoneId!,
+ 10
+ );
+
+ const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
+ return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
+ })!;
+
+ const doComplete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + "/workOrders/doCompleteWorkOrderMilestone",
+ {
+ workOrderId,
+ workOrderMilestoneId
+ },
+ processMilestoneResponse
+ );
+ };
+
+ bulmaJS.confirm({
+ title: "Complete Milestone",
+ message:
+ "Are you sure you want to complete this milestone?" +
+ (workOrderMilestone.workOrderMilestoneDateString! > currentDateString
+ ? "Note that this milestone is expected to be completed in the future. "
+ : ""),
+ messageIsHtml: true,
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Complete Milestone",
+ callbackFunction: doComplete
+ }
+ });
+ }
+
+ function reopenMilestone(clickEvent: Event) {
+ clickEvent.preventDefault();
+
+ const workOrderMilestoneId = (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ ".container--milestone"
+ ) as HTMLElement
+ ).dataset.workOrderMilestoneId;
+
+ const doReopen = () => {
+ cityssm.postJSON(
+ los.urlPrefix + "/workOrders/doReopenWorkOrderMilestone",
+ {
+ workOrderId,
+ workOrderMilestoneId
+ },
+ processMilestoneResponse
+ );
+ };
+
+ bulmaJS.confirm({
+ title: "Reopen Milestone",
+ message:
+ "Are you sure you want to remove the completion status from this milestone, and reopen it?",
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Reopen Milestone",
+ callbackFunction: doReopen
+ }
+ });
+ }
+
+ function deleteMilestone(clickEvent: Event) {
+ clickEvent.preventDefault();
+
+ const workOrderMilestoneId = (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ ".container--milestone"
+ ) as HTMLElement
+ ).dataset.workOrderMilestoneId;
+
+ const doDelete = () => {
+ cityssm.postJSON(
+ los.urlPrefix + "/workOrders/doDeleteWorkOrderMilestone",
+ {
+ workOrderMilestoneId,
+ workOrderId
+ },
+ processMilestoneResponse
+ );
+ };
+
+ bulmaJS.confirm({
+ title: "Delete Milestone",
+ message: "Are you sure you want to delete this milestone?",
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Delete Milestone",
+ callbackFunction: doDelete
+ }
+ });
+ }
+
+ function editMilestone(clickEvent: Event) {
+ clickEvent.preventDefault();
+
+ const workOrderMilestoneId = Number.parseInt(
+ (
+ (clickEvent.currentTarget as HTMLElement).closest(
+ ".container--milestone"
+ ) as HTMLElement
+ ).dataset.workOrderMilestoneId!,
+ 10
+ );
+
+ const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
+ return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
+ })!;
+
+ let editCloseModalFunction: () => void;
+
+ const doEdit = (submitEvent: SubmitEvent) => {
+ submitEvent.preventDefault();
+
+ cityssm.postJSON(
+ los.urlPrefix + "/workOrders/doUpdateWorkOrderMilestone",
+ submitEvent.currentTarget,
+ (responseJSON: {
+ success: boolean;
+ errorMessage?: string;
+ workOrderMilestones?: recordTypes.WorkOrderMilestone[];
+ }) => {
+ processMilestoneResponse(responseJSON);
+ if (responseJSON.success) {
+ editCloseModalFunction();
+ }
+ }
+ );
+ };
+
+ cityssm.openHtmlModal("workOrder-editMilestone", {
+ onshow: (modalElement) => {
+ (
+ modalElement.querySelector("#milestoneEdit--workOrderId") as HTMLInputElement
+ ).value = workOrderId;
+
+ (
+ modalElement.querySelector(
+ "#milestoneEdit--workOrderMilestoneId"
+ ) as HTMLInputElement
+ ).value = workOrderMilestone.workOrderMilestoneId!.toString();
+
+ const milestoneTypeElement = modalElement.querySelector(
+ "#milestoneEdit--workOrderMilestoneTypeId"
+ ) as HTMLSelectElement;
+
+ let milestoneTypeFound = false;
+
+ for (const milestoneType of exports.workOrderMilestoneTypes as recordTypes.WorkOrderMilestoneType[]) {
+ const optionElement = document.createElement("option");
+
+ optionElement.value = milestoneType.workOrderMilestoneTypeId.toString();
+ optionElement.textContent = milestoneType.workOrderMilestoneType;
+
+ if (
+ milestoneType.workOrderMilestoneTypeId ===
+ workOrderMilestone.workOrderMilestoneTypeId
+ ) {
+ optionElement.selected = true;
+ milestoneTypeFound = true;
+ }
+
+ milestoneTypeElement.append(optionElement);
+ }
+
+ if (!milestoneTypeFound && workOrderMilestone.workOrderMilestoneTypeId) {
+ const optionElement = document.createElement("option");
+ optionElement.value = workOrderMilestone.workOrderMilestoneTypeId.toString();
+ optionElement.textContent = workOrderMilestone.workOrderMilestoneType!;
+ optionElement.selected = true;
+ milestoneTypeElement.append(optionElement);
+ }
+
+ (
+ modalElement.querySelector(
+ "#milestoneEdit--workOrderMilestoneDateString"
+ ) as HTMLInputElement
+ ).value = workOrderMilestone.workOrderMilestoneDateString!;
+
+ if (workOrderMilestone.workOrderMilestoneTime) {
+ (
+ modalElement.querySelector(
+ "#milestoneEdit--workOrderMilestoneTimeString"
+ ) as HTMLInputElement
+ ).value = workOrderMilestone.workOrderMilestoneTimeString!;
+ }
+
+ (
+ modalElement.querySelector(
+ "#milestoneEdit--workOrderMilestoneDescription"
+ ) as HTMLTextAreaElement
+ ).value = workOrderMilestone.workOrderMilestoneDescription!;
+ },
+ onshown: (modalElement, closeModalFunction) => {
+ editCloseModalFunction = closeModalFunction;
+
+ bulmaJS.toggleHtmlClipped();
+
+ los.initializeDatePickers(modalElement);
+ // los.initializeTimePickers(modalElement);
+ modalElement.querySelector("form")!.addEventListener("submit", doEdit);
+ },
+ onremoved: () => {
+ bulmaJS.toggleHtmlClipped();
+ }
+ });
+ }
+
+ function renderMilestones() {
+ // Clear milestones panel
+ const milestonesPanelElement = document.querySelector("#panel--milestones") as HTMLElement;
+
+ const panelBlockElementsToDelete = milestonesPanelElement.querySelectorAll(".panel-block");
+
+ for (const panelBlockToDelete of panelBlockElementsToDelete) {
+ panelBlockToDelete.remove();
+ }
+
+ for (const milestone of workOrderMilestones) {
+ const panelBlockElement = document.createElement("div");
+ panelBlockElement.className = "panel-block is-block container--milestone";
+
+ panelBlockElement.dataset.workOrderMilestoneId =
+ milestone.workOrderMilestoneId!.toString();
+
+ panelBlockElement.innerHTML =
+ '' +
+ ('
' +
+ (milestone.workOrderMilestoneCompletionDate
+ ? '' +
+ ' ' +
+ " "
+ : '' +
+ ' ' +
+ " ") +
+ "
") +
+ ('
' +
+ (milestone.workOrderMilestoneTypeId
+ ? "" +
+ cityssm.escapeHTML(milestone.workOrderMilestoneType || "") +
+ " "
+ : "") +
+ milestone.workOrderMilestoneDateString +
+ (milestone.workOrderMilestoneTime
+ ? " " + milestone.workOrderMilestoneTimeString
+ : "") +
+ " " +
+ '' +
+ cityssm.escapeHTML(milestone.workOrderMilestoneDescription || "") +
+ " " +
+ "
") +
+ ('
' +
+ '
' +
+ ('
' +
+ '' +
+ ' ' +
+ " " +
+ "
") +
+ ('") +
+ "
" +
+ "
") +
+ "
";
+
+ if (milestone.workOrderMilestoneCompletionDate) {
+ (
+ panelBlockElement.querySelector(".button--reopenMilestone") as HTMLButtonElement
+ ).addEventListener("click", reopenMilestone);
+ } else {
+ (
+ panelBlockElement.querySelector(".button--editMilestone") as HTMLButtonElement
+ ).addEventListener("click", editMilestone);
+
+ (
+ panelBlockElement.querySelector(
+ ".button--completeMilestone"
+ ) as HTMLButtonElement
+ ).addEventListener("click", completeMilestone);
+ }
+
+ (
+ panelBlockElement.querySelector(".button--deleteMilestone") as HTMLButtonElement
+ ).addEventListener("click", deleteMilestone);
+
+ milestonesPanelElement.append(panelBlockElement);
+ }
+
+ bulmaJS.init(milestonesPanelElement);
+ }
+
if (!isCreate) {
workOrderMilestones = exports.workOrderMilestones as recordTypes.WorkOrderMilestone[];
delete exports.workOrderMilestones;
- const processMilestoneResponse = (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderMilestones?: recordTypes.WorkOrderMilestone[];
- }) => {
- if (responseJSON.success) {
- workOrderMilestones = responseJSON.workOrderMilestones!;
- renderMilestones();
- } else {
- bulmaJS.alert({
- title: "Error Reopening Milestone",
- message: responseJSON.errorMessage || "",
- contextualColorName: "danger"
- });
- }
- };
+ renderMilestones();
- const completeMilestone = (clickEvent: Event) => {
- clickEvent.preventDefault();
+ document.querySelector("#button--addMilestone")!.addEventListener("click", () => {
+ let addModalElement: HTMLElement;
+ let addFormElement: HTMLFormElement;
+ let addCloseModalFunction: () => void;
- const currentDateString = cityssm.dateToString(new Date());
-
- const workOrderMilestoneId = Number.parseInt(
- (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--milestone"
- ) as HTMLElement
- ).dataset.workOrderMilestoneId!,
- 10
- );
-
- const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
- return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
- })!;
-
- const doComplete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/workOrders/doCompleteWorkOrderMilestone",
- {
- workOrderId,
- workOrderMilestoneId
- },
- processMilestoneResponse
- );
- };
-
- bulmaJS.confirm({
- title: "Complete Milestone",
- message:
- "Are you sure you want to complete this milestone?" +
- (workOrderMilestone.workOrderMilestoneDateString! > currentDateString
- ? "Note that this milestone is expected to be completed in the future. "
- : ""),
- messageIsHtml: true,
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Complete Milestone",
- callbackFunction: doComplete
+ const doAdd = (submitEvent: SubmitEvent) => {
+ if (submitEvent) {
+ submitEvent.preventDefault();
}
- });
- };
- const reopenMilestone = (clickEvent: Event) => {
- clickEvent.preventDefault();
+ const currentDateString = cityssm.dateToString(new Date());
- const workOrderMilestoneId = (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--milestone"
- ) as HTMLElement
- ).dataset.workOrderMilestoneId;
+ function _doAdd() {
+ cityssm.postJSON(
+ los.urlPrefix + "/workOrders/doAddWorkOrderMilestone",
+ addFormElement,
+ (responseJSON: {
+ success: boolean;
+ errorMessage?: string;
+ workOrderMilestones?: recordTypes.WorkOrderMilestone[];
+ }) => {
+ processMilestoneResponse(responseJSON);
- const doReopen = () => {
- cityssm.postJSON(
- los.urlPrefix + "/workOrders/doReopenWorkOrderMilestone",
- {
- workOrderId,
- workOrderMilestoneId
- },
- processMilestoneResponse
- );
- };
-
- bulmaJS.confirm({
- title: "Reopen Milestone",
- message:
- "Are you sure you want to remove the completion status from this milestone, and reopen it?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Reopen Milestone",
- callbackFunction: doReopen
- }
- });
- };
-
- const deleteMilestone = (clickEvent: Event) => {
- clickEvent.preventDefault();
-
- const workOrderMilestoneId = (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--milestone"
- ) as HTMLElement
- ).dataset.workOrderMilestoneId;
-
- const doDelete = () => {
- cityssm.postJSON(
- los.urlPrefix + "/workOrders/doDeleteWorkOrderMilestone",
- {
- workOrderMilestoneId,
- workOrderId
- },
- processMilestoneResponse
- );
- };
-
- bulmaJS.confirm({
- title: "Delete Milestone",
- message: "Are you sure you want to delete this milestone?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Delete Milestone",
- callbackFunction: doDelete
- }
- });
- };
-
- const editMilestone = (clickEvent: Event) => {
- clickEvent.preventDefault();
-
- const workOrderMilestoneId = Number.parseInt(
- (
- (clickEvent.currentTarget as HTMLElement).closest(
- ".container--milestone"
- ) as HTMLElement
- ).dataset.workOrderMilestoneId!,
- 10
- );
-
- const workOrderMilestone = workOrderMilestones.find((currentMilestone) => {
- return currentMilestone.workOrderMilestoneId === workOrderMilestoneId;
- })!;
-
- let editCloseModalFunction: () => void;
-
- const doEdit = (submitEvent: SubmitEvent) => {
- submitEvent.preventDefault();
-
- cityssm.postJSON(
- los.urlPrefix + "/workOrders/doUpdateWorkOrderMilestone",
- submitEvent.currentTarget,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderMilestones?: recordTypes.WorkOrderMilestone[];
- }) => {
- processMilestoneResponse(responseJSON);
- if (responseJSON.success) {
- editCloseModalFunction();
+ if (responseJSON.success) {
+ addCloseModalFunction();
+ }
}
- }
- );
+ );
+ }
+
+ if (
+ (
+ addModalElement.querySelector(
+ "#milestoneAdd--workOrderMilestoneDateString"
+ ) as HTMLInputElement
+ ).value < currentDateString
+ ) {
+ bulmaJS.confirm({
+ title: "Milestone Date in the Past",
+ message:
+ "Are you sure you want to create a milestone with a date in the past?",
+ contextualColorName: "warning",
+ okButton: {
+ text: "Yes, Create a Past Milestone",
+ callbackFunction: _doAdd
+ }
+ });
+ } else {
+ _doAdd();
+ }
};
- cityssm.openHtmlModal("workOrder-editMilestone", {
- onshow: (modalElement) => {
+ cityssm.openHtmlModal("workOrder-addMilestone", {
+ onshow(modalElement) {
(
- modalElement.querySelector(
- "#milestoneEdit--workOrderId"
- ) as HTMLInputElement
+ modalElement.querySelector("#milestoneAdd--workOrderId") as HTMLInputElement
).value = workOrderId;
- (
- modalElement.querySelector(
- "#milestoneEdit--workOrderMilestoneId"
- ) as HTMLInputElement
- ).value = workOrderMilestone.workOrderMilestoneId!.toString();
-
const milestoneTypeElement = modalElement.querySelector(
- "#milestoneEdit--workOrderMilestoneTypeId"
+ "#milestoneAdd--workOrderMilestoneTypeId"
) as HTMLSelectElement;
- let milestoneTypeFound = false;
-
for (const milestoneType of exports.workOrderMilestoneTypes as recordTypes.WorkOrderMilestoneType[]) {
const optionElement = document.createElement("option");
optionElement.value = milestoneType.workOrderMilestoneTypeId.toString();
optionElement.textContent = milestoneType.workOrderMilestoneType;
- if (
- milestoneType.workOrderMilestoneTypeId ===
- workOrderMilestone.workOrderMilestoneTypeId
- ) {
- optionElement.selected = true;
- milestoneTypeFound = true;
- }
-
- milestoneTypeElement.append(optionElement);
- }
-
- if (!milestoneTypeFound && workOrderMilestone.workOrderMilestoneTypeId) {
- const optionElement = document.createElement("option");
- optionElement.value =
- workOrderMilestone.workOrderMilestoneTypeId.toString();
- optionElement.textContent = workOrderMilestone.workOrderMilestoneType!;
- optionElement.selected = true;
milestoneTypeElement.append(optionElement);
}
(
modalElement.querySelector(
- "#milestoneEdit--workOrderMilestoneDateString"
+ "#milestoneAdd--workOrderMilestoneDateString"
) as HTMLInputElement
- ).value = workOrderMilestone.workOrderMilestoneDateString!;
-
- if (workOrderMilestone.workOrderMilestoneTime) {
- (
- modalElement.querySelector(
- "#milestoneEdit--workOrderMilestoneTimeString"
- ) as HTMLInputElement
- ).value = workOrderMilestone.workOrderMilestoneTimeString!;
- }
-
- (
- modalElement.querySelector(
- "#milestoneEdit--workOrderMilestoneDescription"
- ) as HTMLTextAreaElement
- ).value = workOrderMilestone.workOrderMilestoneDescription!;
+ ).valueAsDate = new Date();
},
- onshown: (modalElement, closeModalFunction) => {
- editCloseModalFunction = closeModalFunction;
-
- bulmaJS.toggleHtmlClipped();
+ onshown(modalElement, closeModalFunction) {
+ addModalElement = modalElement;
+ addCloseModalFunction = closeModalFunction;
los.initializeDatePickers(modalElement);
// los.initializeTimePickers(modalElement);
- modalElement.querySelector("form")!.addEventListener("submit", doEdit);
+ bulmaJS.toggleHtmlClipped();
+
+ addFormElement = modalElement.querySelector("form")!;
+ addFormElement.addEventListener("submit", doAdd);
},
- onremoved: () => {
+ onremoved() {
bulmaJS.toggleHtmlClipped();
}
});
- };
-
- const renderMilestones = () => {
- // Clear milestones panel
-
- const milestonesPanelElement = document.querySelector(
- "#panel--milestones"
- ) as HTMLElement;
-
- const panelBlockElementsToDelete =
- milestonesPanelElement.querySelectorAll(".panel-block");
-
- for (const panelBlockToDelete of panelBlockElementsToDelete) {
- panelBlockToDelete.remove();
- }
-
- for (const milestone of workOrderMilestones) {
- const panelBlockElement = document.createElement("div");
- panelBlockElement.className = "panel-block is-block container--milestone";
-
- panelBlockElement.dataset.workOrderMilestoneId =
- milestone.workOrderMilestoneId!.toString();
-
- panelBlockElement.innerHTML =
- '' +
- ('
' +
- (milestone.workOrderMilestoneCompletionDate
- ? '' +
- ' ' +
- " "
- : '' +
- ' ' +
- " ") +
- "
") +
- ('
' +
- (milestone.workOrderMilestoneTypeId
- ? "" +
- cityssm.escapeHTML(milestone.workOrderMilestoneType || "") +
- " "
- : "") +
- milestone.workOrderMilestoneDateString +
- (milestone.workOrderMilestoneTime
- ? " " + milestone.workOrderMilestoneTimeString
- : "") +
- " " +
- '' +
- cityssm.escapeHTML(milestone.workOrderMilestoneDescription || "") +
- " " +
- "
") +
- ('
' +
- '
' +
- ('
' +
- '' +
- ' ' +
- " " +
- "
") +
- ('") +
- "
" +
- "
") +
- "
";
-
- if (milestone.workOrderMilestoneCompletionDate) {
- (
- panelBlockElement.querySelector(
- ".button--reopenMilestone"
- ) as HTMLButtonElement
- ).addEventListener("click", reopenMilestone);
- } else {
- (
- panelBlockElement.querySelector(
- ".button--editMilestone"
- ) as HTMLButtonElement
- ).addEventListener("click", editMilestone);
-
- (
- panelBlockElement.querySelector(
- ".button--completeMilestone"
- ) as HTMLButtonElement
- ).addEventListener("click", completeMilestone);
- }
-
- (
- panelBlockElement.querySelector(".button--deleteMilestone") as HTMLButtonElement
- ).addEventListener("click", deleteMilestone);
-
- milestonesPanelElement.append(panelBlockElement);
- }
-
- bulmaJS.init(milestonesPanelElement);
- };
-
- renderMilestones();
-
- (document.querySelector("#button--addMilestone") as HTMLButtonElement).addEventListener(
- "click",
- () => {
- let addModalElement: HTMLElement;
- let addFormElement: HTMLFormElement;
- let addCloseModalFunction: () => void;
-
- const doAdd = (submitEvent: SubmitEvent) => {
- if (submitEvent) {
- submitEvent.preventDefault();
- }
-
- const currentDateString = cityssm.dateToString(new Date());
-
- const _doAdd = () => {
- cityssm.postJSON(
- los.urlPrefix + "/workOrders/doAddWorkOrderMilestone",
- addFormElement,
- (responseJSON: {
- success: boolean;
- errorMessage?: string;
- workOrderMilestones?: recordTypes.WorkOrderMilestone[];
- }) => {
- processMilestoneResponse(responseJSON);
-
- if (responseJSON.success) {
- addCloseModalFunction();
- }
- }
- );
- };
-
- if (
- (
- addModalElement.querySelector(
- "#milestoneAdd--workOrderMilestoneDateString"
- ) as HTMLInputElement
- ).value < currentDateString
- ) {
- bulmaJS.confirm({
- title: "Milestone Date in the Past",
- message:
- "Are you sure you want to create a milestone with a date in the past?",
- contextualColorName: "warning",
- okButton: {
- text: "Yes, Create a Past Milestone",
- callbackFunction: _doAdd
- }
- });
- } else {
- _doAdd();
- }
- };
-
- cityssm.openHtmlModal("workOrder-addMilestone", {
- onshow: (modalElement) => {
- (
- modalElement.querySelector(
- "#milestoneAdd--workOrderId"
- ) as HTMLInputElement
- ).value = workOrderId;
-
- const milestoneTypeElement = modalElement.querySelector(
- "#milestoneAdd--workOrderMilestoneTypeId"
- ) as HTMLSelectElement;
-
- for (const milestoneType of exports.workOrderMilestoneTypes as recordTypes.WorkOrderMilestoneType[]) {
- const optionElement = document.createElement("option");
-
- optionElement.value = milestoneType.workOrderMilestoneTypeId.toString();
- optionElement.textContent = milestoneType.workOrderMilestoneType;
-
- milestoneTypeElement.append(optionElement);
- }
-
- (
- modalElement.querySelector(
- "#milestoneAdd--workOrderMilestoneDateString"
- ) as HTMLInputElement
- ).valueAsDate = new Date();
- },
- onshown: (modalElement, closeModalFunction) => {
- addModalElement = modalElement;
- addCloseModalFunction = closeModalFunction;
-
- los.initializeDatePickers(modalElement);
- // los.initializeTimePickers(modalElement);
-
- bulmaJS.toggleHtmlClipped();
-
- addFormElement = modalElement.querySelector("form")!;
- addFormElement.addEventListener("submit", doAdd);
- },
- onremoved: () => {
- bulmaJS.toggleHtmlClipped();
- }
- });
- }
- );
+ });
}
})();
diff --git a/public-typescript/workOrderEdit/workOrderEditComments.js b/public-typescript/workOrderEdit/workOrderEditComments.js
index 56699840..62becc8f 100644
--- a/public-typescript/workOrderEdit/workOrderEditComments.js
+++ b/public-typescript/workOrderEdit/workOrderEditComments.js
@@ -10,7 +10,7 @@ const openEditWorkOrderComment = (clickEvent) => {
});
let editFormElement;
let editCloseModalFunction;
- const editComment = (submitEvent) => {
+ function editComment(submitEvent) {
submitEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + "/workOrders/doUpdateWorkOrderComment", editFormElement, (responseJSON) => {
if (responseJSON.success) {
@@ -26,15 +26,14 @@ const openEditWorkOrderComment = (clickEvent) => {
});
}
});
- };
+ }
cityssm.openHtmlModal("workOrder-editComment", {
- onshow: (modalElement) => {
+ onshow(modalElement) {
modalElement.querySelector("#workOrderCommentEdit--workOrderId").value = workOrderId;
modalElement.querySelector("#workOrderCommentEdit--workOrderCommentId").value = workOrderCommentId.toString();
modalElement.querySelector("#workOrderCommentEdit--workOrderComment").value = workOrderComment.workOrderComment;
const workOrderCommentDateStringElement = modalElement.querySelector("#workOrderCommentEdit--workOrderCommentDateString");
- workOrderCommentDateStringElement.value =
- workOrderComment.workOrderCommentDateString;
+ workOrderCommentDateStringElement.value = workOrderComment.workOrderCommentDateString;
const currentDateString = cityssm.dateToString(new Date());
workOrderCommentDateStringElement.max =
workOrderComment.workOrderCommentDateString <= currentDateString
@@ -42,7 +41,7 @@ const openEditWorkOrderComment = (clickEvent) => {
: workOrderComment.workOrderCommentDateString;
modalElement.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value = workOrderComment.workOrderCommentTimeString;
},
- onshown: (modalElement, closeModalFunction) => {
+ onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped();
los.initializeDatePickers(modalElement);
// los.initializeTimePickers(modalElement);
@@ -51,14 +50,14 @@ const openEditWorkOrderComment = (clickEvent) => {
editFormElement.addEventListener("submit", editComment);
editCloseModalFunction = closeModalFunction;
},
- onremoved: () => {
+ onremoved() {
bulmaJS.toggleHtmlClipped();
}
});
};
-const deleteWorkOrderComment = (clickEvent) => {
+function deleteWorkOrderComment(clickEvent) {
const workOrderCommentId = Number.parseInt(clickEvent.currentTarget.closest("tr").dataset.workOrderCommentId, 10);
- const doDelete = () => {
+ function doDelete() {
cityssm.postJSON(los.urlPrefix + "/workOrders/doDeleteWorkOrderComment", {
workOrderId,
workOrderCommentId
@@ -75,7 +74,7 @@ const deleteWorkOrderComment = (clickEvent) => {
});
}
});
- };
+ }
bulmaJS.confirm({
title: "Remove Comment?",
message: "Are you sure you want to remove this comment?",
@@ -85,8 +84,8 @@ const deleteWorkOrderComment = (clickEvent) => {
},
contextualColorName: "warning"
});
-};
-const renderWorkOrderComments = () => {
+}
+function renderWorkOrderComments() {
const containerElement = document.querySelector("#container--workOrderComments");
if (workOrderComments.length === 0) {
containerElement.innerHTML =
@@ -133,16 +132,20 @@ const renderWorkOrderComments = () => {
"") +
"" +
"");
- tableRowElement.querySelector(".button--edit").addEventListener("click", openEditWorkOrderComment);
- tableRowElement.querySelector(".button--delete").addEventListener("click", deleteWorkOrderComment);
+ tableRowElement
+ .querySelector(".button--edit")
+ .addEventListener("click", openEditWorkOrderComment);
+ tableRowElement
+ .querySelector(".button--delete")
+ .addEventListener("click", deleteWorkOrderComment);
tableElement.querySelector("tbody").append(tableRowElement);
}
containerElement.innerHTML = "";
containerElement.append(tableElement);
-};
-const openAddCommentModal = () => {
+}
+function openAddCommentModal() {
let addCommentCloseModalFunction;
- const doAddComment = (formEvent) => {
+ function doAddComment(formEvent) {
formEvent.preventDefault();
cityssm.postJSON(los.urlPrefix + "/workOrders/doAddWorkOrderComment", formEvent.currentTarget, (responseJSON) => {
if (responseJSON.success) {
@@ -151,7 +154,7 @@ const openAddCommentModal = () => {
addCommentCloseModalFunction();
}
});
- };
+ }
cityssm.openHtmlModal("workOrder-addComment", {
onshow(modalElement) {
los.populateAliases(modalElement);
@@ -168,8 +171,10 @@ const openAddCommentModal = () => {
document.querySelector("#workOrderComments--add").focus();
}
});
-};
+}
if (!isCreate) {
- document.querySelector("#workOrderComments--add").addEventListener("click", openAddCommentModal);
+ document
+ .querySelector("#workOrderComments--add")
+ .addEventListener("click", openAddCommentModal);
renderWorkOrderComments();
}
diff --git a/public-typescript/workOrderEdit/workOrderEditComments.ts b/public-typescript/workOrderEdit/workOrderEditComments.ts
index 09ccfef8..f4403b1b 100644
--- a/public-typescript/workOrderEdit/workOrderEditComments.ts
+++ b/public-typescript/workOrderEdit/workOrderEditComments.ts
@@ -30,7 +30,7 @@ const openEditWorkOrderComment = (clickEvent: Event) => {
let editFormElement: HTMLFormElement;
let editCloseModalFunction: () => void;
- const editComment = (submitEvent: SubmitEvent) => {
+ function editComment(submitEvent: SubmitEvent): void {
submitEvent.preventDefault();
cityssm.postJSON(
@@ -54,14 +54,12 @@ const openEditWorkOrderComment = (clickEvent: Event) => {
}
}
);
- };
+ }
cityssm.openHtmlModal("workOrder-editComment", {
- onshow: (modalElement) => {
+ onshow(modalElement) {
(
- modalElement.querySelector(
- "#workOrderCommentEdit--workOrderId"
- ) as HTMLInputElement
+ modalElement.querySelector("#workOrderCommentEdit--workOrderId") as HTMLInputElement
).value = workOrderId;
(
modalElement.querySelector(
@@ -79,8 +77,7 @@ const openEditWorkOrderComment = (clickEvent: Event) => {
"#workOrderCommentEdit--workOrderCommentDateString"
) as HTMLInputElement;
- workOrderCommentDateStringElement.value =
- workOrderComment.workOrderCommentDateString!;
+ workOrderCommentDateStringElement.value = workOrderComment.workOrderCommentDateString!;
const currentDateString = cityssm.dateToString(new Date());
@@ -95,7 +92,7 @@ const openEditWorkOrderComment = (clickEvent: Event) => {
) as HTMLInputElement
).value = workOrderComment.workOrderCommentTimeString!;
},
- onshown: (modalElement, closeModalFunction) => {
+ onshown(modalElement, closeModalFunction) {
bulmaJS.toggleHtmlClipped();
los.initializeDatePickers(modalElement);
@@ -112,19 +109,19 @@ const openEditWorkOrderComment = (clickEvent: Event) => {
editCloseModalFunction = closeModalFunction;
},
- onremoved: () => {
+ onremoved() {
bulmaJS.toggleHtmlClipped();
}
});
};
-const deleteWorkOrderComment = (clickEvent: Event) => {
+function deleteWorkOrderComment(clickEvent: Event): void {
const workOrderCommentId = Number.parseInt(
(clickEvent.currentTarget as HTMLElement).closest("tr")!.dataset.workOrderCommentId!,
10
);
- const doDelete = () => {
+ function doDelete() {
cityssm.postJSON(
los.urlPrefix + "/workOrders/doDeleteWorkOrderComment",
{
@@ -148,7 +145,7 @@ const deleteWorkOrderComment = (clickEvent: Event) => {
}
}
);
- };
+ }
bulmaJS.confirm({
title: "Remove Comment?",
@@ -159,12 +156,10 @@ const deleteWorkOrderComment = (clickEvent: Event) => {
},
contextualColorName: "warning"
});
-};
+}
-const renderWorkOrderComments = () => {
- const containerElement = document.querySelector(
- "#container--workOrderComments"
- ) as HTMLElement;
+function renderWorkOrderComments() {
+ const containerElement = document.querySelector("#container--workOrderComments") as HTMLElement;
if (workOrderComments.length === 0) {
containerElement.innerHTML =
@@ -215,26 +210,25 @@ const renderWorkOrderComments = () => {
"" +
"");
- (tableRowElement.querySelector(".button--edit") as HTMLButtonElement).addEventListener(
- "click",
- openEditWorkOrderComment
- );
+ tableRowElement
+ .querySelector(".button--edit")!
+ .addEventListener("click", openEditWorkOrderComment);
- (
- tableRowElement.querySelector(".button--delete") as HTMLButtonElement
- ).addEventListener("click", deleteWorkOrderComment);
+ tableRowElement
+ .querySelector(".button--delete")!
+ .addEventListener("click", deleteWorkOrderComment);
tableElement.querySelector("tbody")!.append(tableRowElement);
}
containerElement.innerHTML = "";
containerElement.append(tableElement);
-};
+}
-const openAddCommentModal = () => {
+function openAddCommentModal() {
let addCommentCloseModalFunction: () => void;
- const doAddComment = (formEvent: SubmitEvent) => {
+ function doAddComment(formEvent: SubmitEvent) {
formEvent.preventDefault();
cityssm.postJSON(
@@ -251,15 +245,13 @@ const openAddCommentModal = () => {
}
}
);
- };
+ }
cityssm.openHtmlModal("workOrder-addComment", {
onshow(modalElement) {
los.populateAliases(modalElement);
(
- modalElement.querySelector(
- "#workOrderCommentAdd--workOrderId"
- ) as HTMLInputElement
+ modalElement.querySelector("#workOrderCommentAdd--workOrderId") as HTMLInputElement
).value = workOrderId;
modalElement.querySelector("form")!.addEventListener("submit", doAddComment);
},
@@ -277,12 +269,12 @@ const openAddCommentModal = () => {
(document.querySelector("#workOrderComments--add") as HTMLButtonElement).focus();
}
});
-};
+}
if (!isCreate) {
- (document.querySelector("#workOrderComments--add") as HTMLButtonElement).addEventListener(
- "click",
- openAddCommentModal
- );
+ document
+ .querySelector("#workOrderComments--add")!
+ .addEventListener("click", openAddCommentModal);
+
renderWorkOrderComments();
-}
\ No newline at end of file
+}
diff --git a/public/javascripts/workOrderEdit.min.js b/public/javascripts/workOrderEdit.min.js
index 36de7332..6bfb7aef 100644
--- a/public/javascripts/workOrderEdit.min.js
+++ b/public/javascripts/workOrderEdit.min.js
@@ -1 +1 @@
-"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#workOrderEdit--workOrderId").value,o=""===t,r=document.querySelector("#form--workOrderEdit");e.initializeDatePickers(r.querySelector("#workOrderEdit--workOrderOpenDateString").closest(".field")),e.initializeUnlockFieldButtons(r),r.addEventListener("submit",t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/"+(o?"doCreateWorkOrder":"doUpdateWorkOrder"),t.currentTarget,t=>{t.success?(cityssm.disableNavBlocker(),o?window.location.href=e.urlPrefix+"/workOrders/"+t.workOrderId+"/edit":bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating Work Order",message:t.errorMessage||"",contextualColorName:"danger"})})});const s=r.querySelectorAll("input, select");for(const e of s)e.addEventListener("change",cityssm.enableNavBlocker);let a;if(!o){const o=()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doCloseWorkOrder",{workOrderId:t},o=>{o.success?window.location.href=e.urlPrefix+"/workOrders/"+encodeURIComponent(t):bulmaJS.alert({title:"Error Closing Work Order",message:o.errorMessage||"",contextualColorName:"danger"})})};document.querySelector("#button--closeWorkOrder").addEventListener("click",()=>{a.some(e=>!e.workOrderMilestoneCompletionDate)?bulmaJS.alert({title:"Outstanding Milestones",message:"You cannot close a work order with outstanding milestones. Either complete the outstanding milestones, or remove them from the work order.",contextualColorName:"warning"}):bulmaJS.confirm({title:"Close Work Order",message:"Are you sure you want to close this work order?",contextualColorName:"info",okButton:{text:"Yes, Close Work Order",callbackFunction:o}})});const r=()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrder",{workOrderId:t},t=>{t.success?window.location.href=e.urlPrefix+"/workOrders":bulmaJS.alert({title:"Error Deleting Work Order",message:t.errorMessage||"",contextualColorName:"danger"})})};document.querySelector("#button--deleteWorkOrder").addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:"Delete Work Order",message:"Are you sure you want to delete this work order?",contextualColorName:"warning",okButton:{text:"Yes, Delete Work Order",callbackFunction:r}})})}if(!o){Object.defineProperty(exports,"__esModule",{value:!0});let o=exports.workOrderLots;delete exports.workOrderLots;let r=exports.workOrderLotOccupancies;function n(o){const s=o.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:`Delete ${exports.aliases.occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${exports.aliases.occupancy.toLowerCase()} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrderLotOccupancy",{workOrderId:t,lotOccupancyId:s},e=>{e.success?(r=e.workOrderLotOccupancies,u()):bulmaJS.alert({title:"Error Deleting Relationship",message:e.errorMessage||"",contextualColorName:"danger"})})}}})}function l(r,s){cityssm.postJSON(e.urlPrefix+"/workOrders/doAddWorkOrderLot",{workOrderId:t,lotId:r},e=>{e.success?(o=e.workOrderLots,u()):bulmaJS.alert({title:"Error Adding "+exports.aliases.lot,message:e.errorMessage||"",contextualColorName:"danger"}),s&&s(e.success)})}function c(e){l(e.currentTarget.dataset.lotId)}function i(r){const s=Number.parseInt(r.currentTarget.closest(".container--lot").dataset.lotId,10),a=o.find(e=>e.lotId===s);let n;function l(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/doUpdateLotStatus",t.currentTarget,e=>{e.success?(o=e.workOrderLots,u(),n()):bulmaJS.alert({title:"Error Deleting Relationship",message:e.errorMessage||"",contextualColorName:"danger"})})}cityssm.openHtmlModal("lot-editLotStatus",{onshow(o){e.populateAliases(o),o.querySelector("#lotStatusEdit--lotId").value=s.toString(),o.querySelector("#lotStatusEdit--lotName").value=a.lotName;const r=o.querySelector("#lotStatusEdit--lotStatusId");let n=!1;for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,e.lotStatusId===a.lotStatusId&&(n=!0),r.append(t)}if(!n&&a.lotStatusId){const e=document.createElement("option");e.value=a.lotStatusId.toString(),e.textContent=a.lotStatus,r.append(e)}a.lotStatusId&&(r.value=a.lotStatusId.toString()),o.querySelector("form").insertAdjacentHTML("beforeend",' ')},onshown(e,t){n=t,bulmaJS.toggleHtmlClipped(),e.querySelector("form").addEventListener("submit",l)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function d(r){const s=r.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:`Delete ${e.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${e.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrderLot",{workOrderId:t,lotId:s},e=>{e.success?(o=e.workOrderLots,u()):bulmaJS.alert({title:"Error Deleting Relationship",message:e.errorMessage||"",contextualColorName:"danger"})})}}})}function u(){!function(){var t;const s=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=r.length.toString(),0===r.length)return void(s.innerHTML=`\n
There are no ${exports.aliases.occupancies.toLowerCase()} associated with this work order.
\n
`);s.innerHTML=`\n \n ${e.escapedAliases.Occupancy} Type \n ${e.escapedAliases.Lot} ${e.escapedAliases.OccupancyStartDate} \n End Date ${e.escapedAliases.Occupants} \n \n \n \n
`;const a=cityssm.dateToString(new Date);for(const l of r){const r=document.createElement("tr");r.className="container--lotOccupancy",r.dataset.lotOccupancyId=l.lotOccupancyId.toString();const i=!(l.occupancyEndDate&&l.occupancyEndDateStringl.lotId===e.lotId);r.innerHTML=' '+(i?' ':' ')+' '+cityssm.escapeHTML(l.occupancyType||"")+" ",l.lotId?r.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(l.lotName||"")+(d?"":' ')+" "):r.insertAdjacentHTML("beforeend",`(No ${exports.aliases.lot}) `),r.insertAdjacentHTML("beforeend",""+l.occupancyStartDateString+" "+(l.occupancyEndDate?l.occupancyEndDateString:'(No End Date) ')+" "+(0===l.lotOccupancyOccupants.length?'(No '+cityssm.escapeHTML(exports.aliases.occupants)+") ":null===(t=l.lotOccupancyOccupants)||void 0===t?void 0:t.reduce((e,t)=>e+' '+cityssm.escapeHTML(t.occupantName)+" ",""))+' '),l.lotId&&!d&&r.querySelector(".button--addLot").addEventListener("click",c),r.querySelector(".button--deleteLotOccupancy").addEventListener("click",n),s.querySelector("tbody").append(r)}}(),function(){const t=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=o.length.toString(),0!==o.length){t.innerHTML=`\n \n ${e.escapedAliases.Lot} \n ${e.escapedAliases.Map} \n ${e.escapedAliases.Lot} Type \n Status \n \n \n \n
`;for(const r of o){const o=document.createElement("tr");o.className="container--lot",o.dataset.lotId=r.lotId.toString(),o.innerHTML=''+cityssm.escapeHTML(r.lotName||"")+" "+cityssm.escapeHTML(r.mapName||"")+" "+cityssm.escapeHTML(r.lotType||"")+" "+(r.lotStatusId?cityssm.escapeHTML(r.lotStatus||""):'(No Status) ')+' ',o.querySelector(".button--editLotStatus").addEventListener("click",i),o.querySelector(".button--deleteLot").addEventListener("click",d),t.querySelector("tbody").append(o)}}else t.innerHTML=`\n
There are no ${e.escapedAliases.lots} associated with this work order.
\n
`}()}function m(o){const s=o.currentTarget.closest("tr");!function(o,s){cityssm.postJSON(e.urlPrefix+"/workOrders/doAddWorkOrderLotOccupancy",{workOrderId:t,lotOccupancyId:o},e=>{e.success?(r=e.workOrderLotOccupancies,u()):bulmaJS.alert({title:"Error Adding "+exports.aliases.occupancy,message:e.errorMessage||"",contextualColorName:"danger"}),s&&s(e.success)})}(s.dataset.lotOccupancyId,e=>{e&&s.remove()})}function p(e){const t=e.currentTarget.closest("tr");l(t.dataset.lotId,e=>{e&&t.remove()})}delete exports.workOrderLotOccupancies,u(),document.querySelector("#button--addLotOccupancy").addEventListener("click",()=>{let o,r;function s(t){t&&t.preventDefault(),r.innerHTML=' Searching...
',cityssm.postJSON(e.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",o,t=>{if(0!==t.lotOccupancies.length){r.innerHTML=`\n \n \n ${e.escapedAliases.Occupancy} Type \n ${e.escapedAliases.Lot} \n ${e.escapedAliases.OccupancyStartDate} \n End Date \n ${e.escapedAliases.Occupants} \n \n \n
`;for(const o of t.lotOccupancies){const t=document.createElement("tr");t.className="container--lotOccupancy",t.dataset.lotOccupancyId=o.lotOccupancyId.toString(),t.innerHTML=''+cityssm.escapeHTML(o.occupancyType||"")+" ",o.lotId?t.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(o.lotName||"")+" "):t.insertAdjacentHTML("beforeend",`(No ${e.escapedAliases.Lot}) `),t.insertAdjacentHTML("beforeend",""+o.occupancyStartDateString+" "+(o.occupancyEndDate?o.occupancyEndDateString:'(No End Date) ')+" "+(0===o.lotOccupancyOccupants.length?'(No '+cityssm.escapeHTML(exports.aliases.occupants)+") ":cityssm.escapeHTML(o.lotOccupancyOccupants[0].occupantName)+(o.lotOccupancyOccupants.length>1?" plus "+(o.lotOccupancyOccupants.length-1):""))+" "),t.querySelector(".button--addLotOccupancy").addEventListener("click",m),r.querySelector("tbody").append(t)}}else r.innerHTML='There are no records that meet the search criteria.
'})}cityssm.openHtmlModal("workOrder-addLotOccupancy",{onshow(a){e.populateAliases(a),o=a.querySelector("form"),r=a.querySelector("#resultsContainer--lotOccupancyAdd"),a.querySelector("#lotOccupancySearch--notWorkOrderId").value=t,a.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,s()},onshown(e){bulmaJS.toggleHtmlClipped(),e.querySelector("#lotOccupancySearch--occupantName").addEventListener("change",s),e.querySelector("#lotOccupancySearch--lotName").addEventListener("change",s),o.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped()}})}),document.querySelector("#button--addLot").addEventListener("click",()=>{let o,r;function s(t){t&&t.preventDefault(),r.innerHTML=' Searching...
',cityssm.postJSON(e.urlPrefix+"/lots/doSearchLots",o,t=>{if(0!==t.lots.length){r.innerHTML=`\n \n \n ${e.escapedAliases.Lot} \n ${e.escapedAliases.Map} \n ${e.escapedAliases.Lot} Type \n Status \n \n \n
`;for(const e of t.lots){const t=document.createElement("tr");t.className="container--lot",t.dataset.lotId=e.lotId.toString(),t.innerHTML=''+cityssm.escapeHTML(e.lotName||"")+" "+cityssm.escapeHTML(e.mapName||"")+" "+cityssm.escapeHTML(e.lotType||"")+" "+cityssm.escapeHTML(e.lotStatus||"")+" ",t.querySelector(".button--addLot").addEventListener("click",p),r.querySelector("tbody").append(t)}}else r.innerHTML='There are no records that meet the search criteria.
'})}cityssm.openHtmlModal("workOrder-addLot",{onshow(a){e.populateAliases(a),o=a.querySelector("form"),r=a.querySelector("#resultsContainer--lotAdd"),a.querySelector("#lotSearch--notWorkOrderId").value=t;const n=a.querySelector("#lotSearch--lotStatusId");for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,n.append(t)}s()},onshown(e){bulmaJS.toggleHtmlClipped(),e.querySelector("#lotSearch--lotName").addEventListener("change",s),e.querySelector("#lotSearch--lotStatusId").addEventListener("change",s),o.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped()}})})}Object.defineProperty(exports,"__esModule",{value:!0});let y=exports.workOrderComments;delete exports.workOrderComments;const O=o=>{const r=Number.parseInt(o.currentTarget.closest("tr").dataset.workOrderCommentId,10),s=y.find(e=>e.workOrderCommentId===r);let a,n;const l=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/doUpdateWorkOrderComment",a,e=>{e.success?(y=e.workOrderComments,n(),w()):bulmaJS.alert({title:"Error Updating Comment",message:e.errorMessage||"",contextualColorName:"danger"})})};cityssm.openHtmlModal("workOrder-editComment",{onshow:e=>{e.querySelector("#workOrderCommentEdit--workOrderId").value=t,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=r.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=s.workOrderComment;const o=e.querySelector("#workOrderCommentEdit--workOrderCommentDateString");o.value=s.workOrderCommentDateString;const a=cityssm.dateToString(new Date);o.max=s.workOrderCommentDateString<=a?a:s.workOrderCommentDateString,e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=s.workOrderCommentTimeString},onshown:(t,o)=>{bulmaJS.toggleHtmlClipped(),e.initializeDatePickers(t),t.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(a=t.querySelector("form")).addEventListener("submit",l),n=o},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})},h=o=>{const r=Number.parseInt(o.currentTarget.closest("tr").dataset.workOrderCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrderComment",{workOrderId:t,workOrderCommentId:r},e=>{e.success?(y=e.workOrderComments,w()):bulmaJS.alert({title:"Error Removing Comment",message:e.errorMessage||"",contextualColorName:"danger"})})}},contextualColorName:"warning"})},w=()=>{const e=document.querySelector("#container--workOrderComments");if(0===y.length)return void(e.innerHTML='There are no comments to display.
');const t=document.createElement("table");t.className="table is-fullwidth is-striped is-hoverable",t.innerHTML='Commentor Comment Date Comment Options ';for(const e of y){const o=document.createElement("tr");o.dataset.workOrderCommentId=e.workOrderCommentId.toString(),o.innerHTML=""+cityssm.escapeHTML(e.recordCreate_userName||"")+" "+e.workOrderCommentDateString+(0===e.workOrderCommentTime?"":" "+e.workOrderCommentTimeString)+" "+cityssm.escapeHTML(e.workOrderComment||"")+' Edit
',o.querySelector(".button--edit").addEventListener("click",O),o.querySelector(".button--delete").addEventListener("click",h),t.querySelector("tbody").append(o)}e.innerHTML="",e.append(t)},k=()=>{let o;const r=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/doAddWorkOrderComment",t.currentTarget,e=>{e.success&&(y=e.workOrderComments,w(),o())})};cityssm.openHtmlModal("workOrder-addComment",{onshow(o){e.populateAliases(o),o.querySelector("#workOrderCommentAdd--workOrderId").value=t,o.querySelector("form").addEventListener("submit",r)},onshown(e,t){bulmaJS.toggleHtmlClipped(),o=t,e.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})};if(o||(document.querySelector("#workOrderComments--add").addEventListener("click",k),w()),!o){a=exports.workOrderMilestones,delete exports.workOrderMilestones;const o=e=>{e.success?(a=e.workOrderMilestones,c()):bulmaJS.alert({title:"Error Reopening Milestone",message:e.errorMessage||"",contextualColorName:"danger"})},r=r=>{r.preventDefault();const s=cityssm.dateToString(new Date),n=Number.parseInt(r.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),l=a.find(e=>e.workOrderMilestoneId===n);bulmaJS.confirm({title:"Complete Milestone",message:"Are you sure you want to complete this milestone?"+(l.workOrderMilestoneDateString>s?"Note that this milestone is expected to be completed in the future. ":""),messageIsHtml:!0,contextualColorName:"warning",okButton:{text:"Yes, Complete Milestone",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doCompleteWorkOrderMilestone",{workOrderId:t,workOrderMilestoneId:n},o)}}})},s=r=>{r.preventDefault();const s=r.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Reopen Milestone",message:"Are you sure you want to remove the completion status from this milestone, and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Milestone",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doReopenWorkOrderMilestone",{workOrderId:t,workOrderMilestoneId:s},o)}}})},n=r=>{r.preventDefault();const s=r.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Delete Milestone",message:"Are you sure you want to delete this milestone?",contextualColorName:"warning",okButton:{text:"Yes, Delete Milestone",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrderMilestone",{workOrderMilestoneId:s,workOrderId:t},o)}}})},l=r=>{r.preventDefault();const s=Number.parseInt(r.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),n=a.find(e=>e.workOrderMilestoneId===s);let l;const c=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/doUpdateWorkOrderMilestone",t.currentTarget,e=>{o(e),e.success&&l()})};cityssm.openHtmlModal("workOrder-editMilestone",{onshow:e=>{e.querySelector("#milestoneEdit--workOrderId").value=t,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=n.workOrderMilestoneId.toString();const o=e.querySelector("#milestoneEdit--workOrderMilestoneTypeId");let r=!1;for(const e of exports.workOrderMilestoneTypes){const t=document.createElement("option");t.value=e.workOrderMilestoneTypeId.toString(),t.textContent=e.workOrderMilestoneType,e.workOrderMilestoneTypeId===n.workOrderMilestoneTypeId&&(t.selected=!0,r=!0),o.append(t)}if(!r&&n.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=n.workOrderMilestoneTypeId.toString(),e.textContent=n.workOrderMilestoneType,e.selected=!0,o.append(e)}e.querySelector("#milestoneEdit--workOrderMilestoneDateString").value=n.workOrderMilestoneDateString,n.workOrderMilestoneTime&&(e.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value=n.workOrderMilestoneTimeString),e.querySelector("#milestoneEdit--workOrderMilestoneDescription").value=n.workOrderMilestoneDescription},onshown:(t,o)=>{l=o,bulmaJS.toggleHtmlClipped(),e.initializeDatePickers(t),t.querySelector("form").addEventListener("submit",c)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})},c=()=>{const e=document.querySelector("#panel--milestones"),t=e.querySelectorAll(".panel-block");for(const e of t)e.remove();for(const t of a){const o=document.createElement("div");o.className="panel-block is-block container--milestone",o.dataset.workOrderMilestoneId=t.workOrderMilestoneId.toString(),o.innerHTML=''+(t.workOrderMilestoneCompletionDate?' ':' ')+'
'+(t.workOrderMilestoneTypeId?""+cityssm.escapeHTML(t.workOrderMilestoneType||"")+" ":"")+t.workOrderMilestoneDateString+(t.workOrderMilestoneTime?" "+t.workOrderMilestoneTimeString:"")+''+cityssm.escapeHTML(t.workOrderMilestoneDescription||"")+'
',t.workOrderMilestoneCompletionDate?o.querySelector(".button--reopenMilestone").addEventListener("click",s):(o.querySelector(".button--editMilestone").addEventListener("click",l),o.querySelector(".button--completeMilestone").addEventListener("click",r)),o.querySelector(".button--deleteMilestone").addEventListener("click",n),e.append(o)}bulmaJS.init(e)};c(),document.querySelector("#button--addMilestone").addEventListener("click",()=>{let r,s,a;const n=t=>{t&&t.preventDefault();const n=cityssm.dateToString(new Date),l=()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doAddWorkOrderMilestone",s,e=>{o(e),e.success&&a()})};r.querySelector("#milestoneAdd--workOrderMilestoneDateString").value{e.querySelector("#milestoneAdd--workOrderId").value=t;const o=e.querySelector("#milestoneAdd--workOrderMilestoneTypeId");for(const e of exports.workOrderMilestoneTypes){const t=document.createElement("option");t.value=e.workOrderMilestoneTypeId.toString(),t.textContent=e.workOrderMilestoneType,o.append(t)}e.querySelector("#milestoneAdd--workOrderMilestoneDateString").valueAsDate=new Date},onshown:(t,o)=>{r=t,a=o,e.initializeDatePickers(t),bulmaJS.toggleHtmlClipped(),(s=t.querySelector("form")).addEventListener("submit",n)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})})}})();
\ No newline at end of file
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("#workOrderEdit--workOrderId").value,o=""===t,r=document.querySelector("#form--workOrderEdit");e.initializeDatePickers(r.querySelector("#workOrderEdit--workOrderOpenDateString").closest(".field")),e.initializeUnlockFieldButtons(r),r.addEventListener("submit",t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/"+(o?"doCreateWorkOrder":"doUpdateWorkOrder"),t.currentTarget,t=>{t.success?(cityssm.disableNavBlocker(),o?window.location.href=e.urlPrefix+"/workOrders/"+t.workOrderId+"/edit":bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating Work Order",message:t.errorMessage||"",contextualColorName:"danger"})})});const s=r.querySelectorAll("input, select");for(const e of s)e.addEventListener("change",cityssm.enableNavBlocker);function n(){cityssm.postJSON(e.urlPrefix+"/workOrders/doCloseWorkOrder",{workOrderId:t},o=>{o.success?window.location.href=e.urlPrefix+"/workOrders/"+encodeURIComponent(t):bulmaJS.alert({title:"Error Closing Work Order",message:o.errorMessage||"",contextualColorName:"danger"})})}function a(){cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrder",{workOrderId:t},t=>{t.success?window.location.href=e.urlPrefix+"/workOrders":bulmaJS.alert({title:"Error Deleting Work Order",message:t.errorMessage||"",contextualColorName:"danger"})})}let l;if(o||(document.querySelector("#button--closeWorkOrder").addEventListener("click",()=>{l.some(e=>!e.workOrderMilestoneCompletionDate)?bulmaJS.alert({title:"Outstanding Milestones",message:"You cannot close a work order with outstanding milestones. Either complete the outstanding milestones, or remove them from the work order.",contextualColorName:"warning"}):bulmaJS.confirm({title:"Close Work Order",message:"Are you sure you want to close this work order?",contextualColorName:"info",okButton:{text:"Yes, Close Work Order",callbackFunction:n}})}),document.querySelector("#button--deleteWorkOrder").addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({title:"Delete Work Order",message:"Are you sure you want to delete this work order?",contextualColorName:"warning",okButton:{text:"Yes, Delete Work Order",callbackFunction:a}})})),!o){Object.defineProperty(exports,"__esModule",{value:!0});let o=exports.workOrderLots;delete exports.workOrderLots;let r=exports.workOrderLotOccupancies;function c(o){const s=o.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:`Delete ${exports.aliases.occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${exports.aliases.occupancy.toLowerCase()} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrderLotOccupancy",{workOrderId:t,lotOccupancyId:s},e=>{e.success?(r=e.workOrderLotOccupancies,p()):bulmaJS.alert({title:"Error Deleting Relationship",message:e.errorMessage||"",contextualColorName:"danger"})})}}})}function i(r,s){cityssm.postJSON(e.urlPrefix+"/workOrders/doAddWorkOrderLot",{workOrderId:t,lotId:r},e=>{e.success?(o=e.workOrderLots,p()):bulmaJS.alert({title:"Error Adding "+exports.aliases.lot,message:e.errorMessage||"",contextualColorName:"danger"}),s&&s(e.success)})}function d(e){i(e.currentTarget.dataset.lotId)}function u(r){const s=Number.parseInt(r.currentTarget.closest(".container--lot").dataset.lotId,10),n=o.find(e=>e.lotId===s);let a;function l(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/doUpdateLotStatus",t.currentTarget,e=>{e.success?(o=e.workOrderLots,p(),a()):bulmaJS.alert({title:"Error Deleting Relationship",message:e.errorMessage||"",contextualColorName:"danger"})})}cityssm.openHtmlModal("lot-editLotStatus",{onshow(o){e.populateAliases(o),o.querySelector("#lotStatusEdit--lotId").value=s.toString(),o.querySelector("#lotStatusEdit--lotName").value=n.lotName;const r=o.querySelector("#lotStatusEdit--lotStatusId");let a=!1;for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,e.lotStatusId===n.lotStatusId&&(a=!0),r.append(t)}if(!a&&n.lotStatusId){const e=document.createElement("option");e.value=n.lotStatusId.toString(),e.textContent=n.lotStatus,r.append(e)}n.lotStatusId&&(r.value=n.lotStatusId.toString()),o.querySelector("form").insertAdjacentHTML("beforeend",' ')},onshown(e,t){a=t,bulmaJS.toggleHtmlClipped(),e.querySelector("form").addEventListener("submit",l)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function m(r){const s=r.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:`Delete ${e.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${e.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrderLot",{workOrderId:t,lotId:s},e=>{e.success?(o=e.workOrderLots,p()):bulmaJS.alert({title:"Error Deleting Relationship",message:e.errorMessage||"",contextualColorName:"danger"})})}}})}function p(){!function(){var t;const s=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=r.length.toString(),0===r.length)return void(s.innerHTML=`\n
There are no ${exports.aliases.occupancies.toLowerCase()} associated with this work order.
\n
`);s.innerHTML=`\n \n ${e.escapedAliases.Occupancy} Type \n ${e.escapedAliases.Lot} ${e.escapedAliases.OccupancyStartDate} \n End Date ${e.escapedAliases.Occupants} \n \n \n \n
`;const n=cityssm.dateToString(new Date);for(const a of r){const r=document.createElement("tr");r.className="container--lotOccupancy",r.dataset.lotOccupancyId=a.lotOccupancyId.toString();const l=!(a.occupancyEndDate&&a.occupancyEndDateStringa.lotId===e.lotId);r.innerHTML=''+(l?' ':' ')+' '+cityssm.escapeHTML(a.occupancyType||"")+" ",a.lotId?r.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(a.lotName||"")+(i?"":' ')+" "):r.insertAdjacentHTML("beforeend",`(No ${exports.aliases.lot}) `),r.insertAdjacentHTML("beforeend",""+a.occupancyStartDateString+" "+(a.occupancyEndDate?a.occupancyEndDateString:'(No End Date) ')+" "+(0===a.lotOccupancyOccupants.length?'(No '+cityssm.escapeHTML(exports.aliases.occupants)+") ":null===(t=a.lotOccupancyOccupants)||void 0===t?void 0:t.reduce((e,t)=>e+' '+cityssm.escapeHTML(t.occupantName)+" ",""))+' '),a.lotId&&!i&&r.querySelector(".button--addLot").addEventListener("click",d),r.querySelector(".button--deleteLotOccupancy").addEventListener("click",c),s.querySelector("tbody").append(r)}}(),function(){const t=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=o.length.toString(),0!==o.length){t.innerHTML=`\n \n ${e.escapedAliases.Lot} \n ${e.escapedAliases.Map} \n ${e.escapedAliases.Lot} Type \n Status \n \n \n \n
`;for(const r of o){const o=document.createElement("tr");o.className="container--lot",o.dataset.lotId=r.lotId.toString(),o.innerHTML=''+cityssm.escapeHTML(r.lotName||"")+" "+cityssm.escapeHTML(r.mapName||"")+" "+cityssm.escapeHTML(r.lotType||"")+" "+(r.lotStatusId?cityssm.escapeHTML(r.lotStatus||""):'(No Status) ')+' ',o.querySelector(".button--editLotStatus").addEventListener("click",u),o.querySelector(".button--deleteLot").addEventListener("click",m),t.querySelector("tbody").append(o)}}else t.innerHTML=`\n
There are no ${e.escapedAliases.lots} associated with this work order.
\n
`}()}function y(o){const s=o.currentTarget.closest("tr");!function(o,s){cityssm.postJSON(e.urlPrefix+"/workOrders/doAddWorkOrderLotOccupancy",{workOrderId:t,lotOccupancyId:o},e=>{e.success?(r=e.workOrderLotOccupancies,p()):bulmaJS.alert({title:"Error Adding "+exports.aliases.occupancy,message:e.errorMessage||"",contextualColorName:"danger"}),s&&s(e.success)})}(s.dataset.lotOccupancyId,e=>{e&&s.remove()})}function O(e){const t=e.currentTarget.closest("tr");i(t.dataset.lotId,e=>{e&&t.remove()})}delete exports.workOrderLotOccupancies,p(),document.querySelector("#button--addLotOccupancy").addEventListener("click",()=>{let o,r;function s(t){t&&t.preventDefault(),r.innerHTML=' Searching...
',cityssm.postJSON(e.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",o,t=>{if(0!==t.lotOccupancies.length){r.innerHTML=`\n \n \n ${e.escapedAliases.Occupancy} Type \n ${e.escapedAliases.Lot} \n ${e.escapedAliases.OccupancyStartDate} \n End Date \n ${e.escapedAliases.Occupants} \n \n \n
`;for(const o of t.lotOccupancies){const t=document.createElement("tr");t.className="container--lotOccupancy",t.dataset.lotOccupancyId=o.lotOccupancyId.toString(),t.innerHTML=''+cityssm.escapeHTML(o.occupancyType||"")+" ",o.lotId?t.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(o.lotName||"")+" "):t.insertAdjacentHTML("beforeend",`(No ${e.escapedAliases.Lot}) `),t.insertAdjacentHTML("beforeend",""+o.occupancyStartDateString+" "+(o.occupancyEndDate?o.occupancyEndDateString:'(No End Date) ')+" "+(0===o.lotOccupancyOccupants.length?'(No '+cityssm.escapeHTML(exports.aliases.occupants)+") ":cityssm.escapeHTML(o.lotOccupancyOccupants[0].occupantName)+(o.lotOccupancyOccupants.length>1?" plus "+(o.lotOccupancyOccupants.length-1):""))+" "),t.querySelector(".button--addLotOccupancy").addEventListener("click",y),r.querySelector("tbody").append(t)}}else r.innerHTML='There are no records that meet the search criteria.
'})}cityssm.openHtmlModal("workOrder-addLotOccupancy",{onshow(n){e.populateAliases(n),o=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotOccupancyAdd"),n.querySelector("#lotOccupancySearch--notWorkOrderId").value=t,n.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,s()},onshown(e){bulmaJS.toggleHtmlClipped(),e.querySelector("#lotOccupancySearch--occupantName").addEventListener("change",s),e.querySelector("#lotOccupancySearch--lotName").addEventListener("change",s),o.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped()}})}),document.querySelector("#button--addLot").addEventListener("click",()=>{let o,r;function s(t){t&&t.preventDefault(),r.innerHTML=' Searching...
',cityssm.postJSON(e.urlPrefix+"/lots/doSearchLots",o,t=>{if(0!==t.lots.length){r.innerHTML=`\n \n \n ${e.escapedAliases.Lot} \n ${e.escapedAliases.Map} \n ${e.escapedAliases.Lot} Type \n Status \n \n \n
`;for(const e of t.lots){const t=document.createElement("tr");t.className="container--lot",t.dataset.lotId=e.lotId.toString(),t.innerHTML=''+cityssm.escapeHTML(e.lotName||"")+" "+cityssm.escapeHTML(e.mapName||"")+" "+cityssm.escapeHTML(e.lotType||"")+" "+cityssm.escapeHTML(e.lotStatus||"")+" ",t.querySelector(".button--addLot").addEventListener("click",O),r.querySelector("tbody").append(t)}}else r.innerHTML='There are no records that meet the search criteria.
'})}cityssm.openHtmlModal("workOrder-addLot",{onshow(n){e.populateAliases(n),o=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotAdd"),n.querySelector("#lotSearch--notWorkOrderId").value=t;const a=n.querySelector("#lotSearch--lotStatusId");for(const e of exports.lotStatuses){const t=document.createElement("option");t.value=e.lotStatusId.toString(),t.textContent=e.lotStatus,a.append(t)}s()},onshown(e){bulmaJS.toggleHtmlClipped(),e.querySelector("#lotSearch--lotName").addEventListener("change",s),e.querySelector("#lotSearch--lotStatusId").addEventListener("change",s),o.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped()}})})}Object.defineProperty(exports,"__esModule",{value:!0});let h=exports.workOrderComments;delete exports.workOrderComments;const w=o=>{const r=Number.parseInt(o.currentTarget.closest("tr").dataset.workOrderCommentId,10),s=h.find(e=>e.workOrderCommentId===r);let n,a;function l(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/doUpdateWorkOrderComment",n,e=>{e.success?(h=e.workOrderComments,a(),S()):bulmaJS.alert({title:"Error Updating Comment",message:e.errorMessage||"",contextualColorName:"danger"})})}cityssm.openHtmlModal("workOrder-editComment",{onshow(e){e.querySelector("#workOrderCommentEdit--workOrderId").value=t,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=r.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=s.workOrderComment;const o=e.querySelector("#workOrderCommentEdit--workOrderCommentDateString");o.value=s.workOrderCommentDateString;const n=cityssm.dateToString(new Date);o.max=s.workOrderCommentDateString<=n?n:s.workOrderCommentDateString,e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=s.workOrderCommentTimeString},onshown(t,o){bulmaJS.toggleHtmlClipped(),e.initializeDatePickers(t),t.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(n=t.querySelector("form")).addEventListener("submit",l),a=o},onremoved(){bulmaJS.toggleHtmlClipped()}})};function k(o){const r=Number.parseInt(o.currentTarget.closest("tr").dataset.workOrderCommentId,10);bulmaJS.confirm({title:"Remove Comment?",message:"Are you sure you want to remove this comment?",okButton:{text:"Yes, Remove Comment",callbackFunction:function(){cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrderComment",{workOrderId:t,workOrderCommentId:r},e=>{e.success?(h=e.workOrderComments,S()):bulmaJS.alert({title:"Error Removing Comment",message:e.errorMessage||"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function S(){const e=document.querySelector("#container--workOrderComments");if(0===h.length)return void(e.innerHTML='There are no comments to display.
');const t=document.createElement("table");t.className="table is-fullwidth is-striped is-hoverable",t.innerHTML='Commentor Comment Date Comment Options ';for(const e of h){const o=document.createElement("tr");o.dataset.workOrderCommentId=e.workOrderCommentId.toString(),o.innerHTML=""+cityssm.escapeHTML(e.recordCreate_userName||"")+" "+e.workOrderCommentDateString+(0===e.workOrderCommentTime?"":" "+e.workOrderCommentTimeString)+" "+cityssm.escapeHTML(e.workOrderComment||"")+' Edit
',o.querySelector(".button--edit").addEventListener("click",w),o.querySelector(".button--delete").addEventListener("click",k),t.querySelector("tbody").append(o)}e.innerHTML="",e.append(t)}function g(e){e.success?(l=e.workOrderMilestones,L()):bulmaJS.alert({title:"Error Reopening Milestone",message:e.errorMessage||"",contextualColorName:"danger"})}function f(o){o.preventDefault();const r=cityssm.dateToString(new Date),s=Number.parseInt(o.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),n=l.find(e=>e.workOrderMilestoneId===s);bulmaJS.confirm({title:"Complete Milestone",message:"Are you sure you want to complete this milestone?"+(n.workOrderMilestoneDateString>r?"Note that this milestone is expected to be completed in the future. ":""),messageIsHtml:!0,contextualColorName:"warning",okButton:{text:"Yes, Complete Milestone",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doCompleteWorkOrderMilestone",{workOrderId:t,workOrderMilestoneId:s},g)}}})}function b(o){o.preventDefault();const r=o.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Reopen Milestone",message:"Are you sure you want to remove the completion status from this milestone, and reopen it?",contextualColorName:"warning",okButton:{text:"Yes, Reopen Milestone",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doReopenWorkOrderMilestone",{workOrderId:t,workOrderMilestoneId:r},g)}}})}function M(o){o.preventDefault();const r=o.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId;bulmaJS.confirm({title:"Delete Milestone",message:"Are you sure you want to delete this milestone?",contextualColorName:"warning",okButton:{text:"Yes, Delete Milestone",callbackFunction:()=>{cityssm.postJSON(e.urlPrefix+"/workOrders/doDeleteWorkOrderMilestone",{workOrderMilestoneId:r,workOrderId:t},g)}}})}function v(o){o.preventDefault();const r=Number.parseInt(o.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),s=l.find(e=>e.workOrderMilestoneId===r);let n;const a=t=>{t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/doUpdateWorkOrderMilestone",t.currentTarget,e=>{g(e),e.success&&n()})};cityssm.openHtmlModal("workOrder-editMilestone",{onshow:e=>{e.querySelector("#milestoneEdit--workOrderId").value=t,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=s.workOrderMilestoneId.toString();const o=e.querySelector("#milestoneEdit--workOrderMilestoneTypeId");let r=!1;for(const e of exports.workOrderMilestoneTypes){const t=document.createElement("option");t.value=e.workOrderMilestoneTypeId.toString(),t.textContent=e.workOrderMilestoneType,e.workOrderMilestoneTypeId===s.workOrderMilestoneTypeId&&(t.selected=!0,r=!0),o.append(t)}if(!r&&s.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=s.workOrderMilestoneTypeId.toString(),e.textContent=s.workOrderMilestoneType,e.selected=!0,o.append(e)}e.querySelector("#milestoneEdit--workOrderMilestoneDateString").value=s.workOrderMilestoneDateString,s.workOrderMilestoneTime&&(e.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value=s.workOrderMilestoneTimeString),e.querySelector("#milestoneEdit--workOrderMilestoneDescription").value=s.workOrderMilestoneDescription},onshown:(t,o)=>{n=o,bulmaJS.toggleHtmlClipped(),e.initializeDatePickers(t),t.querySelector("form").addEventListener("submit",a)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}function L(){const e=document.querySelector("#panel--milestones"),t=e.querySelectorAll(".panel-block");for(const e of t)e.remove();for(const t of l){const o=document.createElement("div");o.className="panel-block is-block container--milestone",o.dataset.workOrderMilestoneId=t.workOrderMilestoneId.toString(),o.innerHTML=''+(t.workOrderMilestoneCompletionDate?' ':' ')+'
'+(t.workOrderMilestoneTypeId?""+cityssm.escapeHTML(t.workOrderMilestoneType||"")+" ":"")+t.workOrderMilestoneDateString+(t.workOrderMilestoneTime?" "+t.workOrderMilestoneTimeString:"")+''+cityssm.escapeHTML(t.workOrderMilestoneDescription||"")+'
',t.workOrderMilestoneCompletionDate?o.querySelector(".button--reopenMilestone").addEventListener("click",b):(o.querySelector(".button--editMilestone").addEventListener("click",v),o.querySelector(".button--completeMilestone").addEventListener("click",f)),o.querySelector(".button--deleteMilestone").addEventListener("click",M),e.append(o)}bulmaJS.init(e)}o||(document.querySelector("#workOrderComments--add").addEventListener("click",function(){let o;function r(t){t.preventDefault(),cityssm.postJSON(e.urlPrefix+"/workOrders/doAddWorkOrderComment",t.currentTarget,e=>{e.success&&(h=e.workOrderComments,S(),o())})}cityssm.openHtmlModal("workOrder-addComment",{onshow(o){e.populateAliases(o),o.querySelector("#workOrderCommentAdd--workOrderId").value=t,o.querySelector("form").addEventListener("submit",r)},onshown(e,t){bulmaJS.toggleHtmlClipped(),o=t,e.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})}),S()),o||(l=exports.workOrderMilestones,delete exports.workOrderMilestones,L(),document.querySelector("#button--addMilestone").addEventListener("click",()=>{let o,r,s;const n=t=>{t&&t.preventDefault();const n=cityssm.dateToString(new Date);function a(){cityssm.postJSON(e.urlPrefix+"/workOrders/doAddWorkOrderMilestone",r,e=>{g(e),e.success&&s()})}o.querySelector("#milestoneAdd--workOrderMilestoneDateString").value