update lot status from work order
parent
ccf3293c8c
commit
dfe8c546d0
|
|
@ -0,0 +1,3 @@
|
|||
import type { RequestHandler } from "express";
|
||||
export declare const handler: RequestHandler;
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
import { updateLotStatus } from "../../helpers/lotOccupancyDB/updateLot.js";
|
||||
import { getLots } from "../../helpers/lotOccupancyDB/getLots.js";
|
||||
export const handler = async (request, response) => {
|
||||
const success = updateLotStatus(request.body.lotId, request.body.lotStatusId, request.session);
|
||||
const workOrderLots = getLots({
|
||||
workOrderId: request.body.workOrderId
|
||||
}, {
|
||||
limit: -1,
|
||||
offset: 0
|
||||
}).lots;
|
||||
response.json({
|
||||
success,
|
||||
workOrderLots
|
||||
});
|
||||
};
|
||||
export default handler;
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
import type { RequestHandler } from "express";
|
||||
|
||||
import { updateLotStatus } from "../../helpers/lotOccupancyDB/updateLot.js";
|
||||
import { getLots } from "../../helpers/lotOccupancyDB/getLots.js";
|
||||
|
||||
export const handler: RequestHandler = async (request, response) => {
|
||||
|
||||
const success = updateLotStatus(request.body.lotId, request.body.lotStatusId, request.session);
|
||||
|
||||
const workOrderLots = getLots(
|
||||
{
|
||||
workOrderId: request.body.workOrderId
|
||||
},
|
||||
{
|
||||
limit: -1,
|
||||
offset: 0
|
||||
}
|
||||
).lots;
|
||||
|
||||
response.json({
|
||||
success,
|
||||
workOrderLots
|
||||
});
|
||||
};
|
||||
|
||||
export default handler;
|
||||
|
|
@ -66,7 +66,7 @@ export const getLots = (filters, options, connectedDatabase) => {
|
|||
.prepare("select l.lotId, l.lotName," +
|
||||
" t.lotType," +
|
||||
" l.mapId, m.mapName, l.mapKey," +
|
||||
" s.lotStatus," +
|
||||
" l.lotStatusId, s.lotStatus," +
|
||||
" ifnull(o.lotOccupancyCount, 0) as lotOccupancyCount" +
|
||||
" from Lots l" +
|
||||
" left join LotTypes t on l.lotTypeId = t.lotTypeId" +
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ export const getLots = (
|
|||
"select l.lotId, l.lotName," +
|
||||
" t.lotType," +
|
||||
" l.mapId, m.mapName, l.mapKey," +
|
||||
" s.lotStatus," +
|
||||
" l.lotStatusId, s.lotStatus," +
|
||||
" ifnull(o.lotOccupancyCount, 0) as lotOccupancyCount" +
|
||||
" from Lots l" +
|
||||
" left join LotTypes t on l.lotTypeId = t.lotTypeId" +
|
||||
|
|
|
|||
|
|
@ -318,6 +318,70 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
occupanciesContainerElement.querySelector("tbody").append(rowElement);
|
||||
}
|
||||
};
|
||||
const openEditLotStatus = (clickEvent) => {
|
||||
const lotId = Number.parseInt(clickEvent.currentTarget.closest(".container--lot").dataset.lotId, 10);
|
||||
const lot = workOrderLots.find((possibleLot) => {
|
||||
return possibleLot.lotId === lotId;
|
||||
});
|
||||
let editCloseModalFunction;
|
||||
const doUpdateLotStatus = (submitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
cityssm.postJSON(urlPrefix + "/workOrders/doUpdateLotStatus", submitEvent.currentTarget, (responseJSON) => {
|
||||
if (responseJSON.success) {
|
||||
workOrderLots = responseJSON.workOrderLots;
|
||||
renderRelatedLotsAndOccupancies();
|
||||
editCloseModalFunction();
|
||||
}
|
||||
else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Deleting Relationship",
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
cityssm.openHtmlModal("lot-editLotStatus", {
|
||||
onshow: (modalElement) => {
|
||||
los.populateAliases(modalElement);
|
||||
modalElement.querySelector("#lotStatusEdit--lotId").value = lotId.toString();
|
||||
modalElement.querySelector("#lotStatusEdit--lotName").value = lot.lotName;
|
||||
const lotStatusElement = modalElement.querySelector("#lotStatusEdit--lotStatusId");
|
||||
let lotStatusFound = false;
|
||||
for (const lotStatus of exports.lotStatuses) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value = lotStatus.lotStatusId.toString();
|
||||
optionElement.textContent = lotStatus.lotStatus;
|
||||
if (lotStatus.lotStatusId === lot.lotStatusId) {
|
||||
lotStatusFound = true;
|
||||
}
|
||||
lotStatusElement.append(optionElement);
|
||||
}
|
||||
if (!lotStatusFound && lot.lotStatusId) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value = lot.lotStatusId.toString();
|
||||
optionElement.textContent = lot.lotStatus;
|
||||
lotStatusElement.append(optionElement);
|
||||
}
|
||||
if (lot.lotStatusId) {
|
||||
lotStatusElement.value = lot.lotStatusId.toString();
|
||||
}
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.insertAdjacentHTML("beforeend", '<input name="workOrderId" type="hidden" value="' + workOrderId + '" />');
|
||||
},
|
||||
onshown: (modalElement, closeModalFunction) => {
|
||||
editCloseModalFunction = closeModalFunction;
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.addEventListener("submit", doUpdateLotStatus);
|
||||
},
|
||||
onremoved: () => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
}
|
||||
});
|
||||
};
|
||||
const deleteLot = (clickEvent) => {
|
||||
const lotId = clickEvent.currentTarget.closest(".container--lot").dataset.lotId;
|
||||
const doDelete = () => {
|
||||
|
|
@ -398,12 +462,18 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
"</td>" +
|
||||
("<td>" + cityssm.escapeHTML(lot.mapName) + "</td>") +
|
||||
("<td>" + cityssm.escapeHTML(lot.lotType) + "</td>") +
|
||||
("<td>" + cityssm.escapeHTML(lot.lotStatus) + "</td>") +
|
||||
("<td>" +
|
||||
("<td>" + (lot.lotStatusId ? cityssm.escapeHTML(lot.lotStatus) : "<span class=\"has-text-grey\">(No Status)</span>") + "</td>") +
|
||||
('<td class="is-nowrap">' +
|
||||
'<button class="button is-small is-light is-info button--editLotStatus" data-tooltip="Update Status" type="button">' +
|
||||
'<i class="fas fa-pencil-alt" aria-hidden="true"></i>' +
|
||||
"</button>" +
|
||||
' <button class="button is-small is-light is-danger button--deleteLot" data-tooltip="Delete Relationship" type="button">' +
|
||||
'<i class="fas fa-trash" aria-hidden="true"></i>' +
|
||||
"</button>" +
|
||||
"</td>");
|
||||
rowElement
|
||||
.querySelector(".button--editLotStatus")
|
||||
.addEventListener("click", openEditLotStatus);
|
||||
rowElement.querySelector(".button--deleteLot").addEventListener("click", deleteLot);
|
||||
lotsContainerElement.querySelector("tbody").append(rowElement);
|
||||
}
|
||||
|
|
@ -728,7 +798,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
"<tbody></tbody>";
|
||||
for (const workOrderComment of workOrderComments) {
|
||||
const tableRowElement = document.createElement("tr");
|
||||
tableRowElement.dataset.workOrderCommentId = workOrderComment.workOrderCommentId.toString();
|
||||
tableRowElement.dataset.workOrderCommentId =
|
||||
workOrderComment.workOrderCommentId.toString();
|
||||
tableRowElement.innerHTML =
|
||||
"<td>" +
|
||||
cityssm.escapeHTML(workOrderComment.recordCreate_userName) +
|
||||
|
|
@ -794,7 +865,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|||
});
|
||||
};
|
||||
if (!isCreate) {
|
||||
document.querySelector("#workOrderComments--add").addEventListener("click", openAddCommentModal);
|
||||
document
|
||||
.querySelector("#workOrderComments--add")
|
||||
.addEventListener("click", openAddCommentModal);
|
||||
renderWorkOrderComments();
|
||||
}
|
||||
if (!isCreate) {
|
||||
|
|
|
|||
|
|
@ -430,6 +430,110 @@ declare const bulmaJS: BulmaJS;
|
|||
}
|
||||
};
|
||||
|
||||
const openEditLotStatus = (clickEvent: Event) => {
|
||||
const lotId = Number.parseInt(
|
||||
(
|
||||
(clickEvent.currentTarget as HTMLElement).closest(
|
||||
".container--lot"
|
||||
) as HTMLElement
|
||||
).dataset.lotId,
|
||||
10
|
||||
);
|
||||
|
||||
const lot = workOrderLots.find((possibleLot) => {
|
||||
return possibleLot.lotId === lotId;
|
||||
});
|
||||
|
||||
let editCloseModalFunction: () => void;
|
||||
|
||||
const doUpdateLotStatus = (submitEvent: SubmitEvent) => {
|
||||
submitEvent.preventDefault();
|
||||
|
||||
cityssm.postJSON(
|
||||
urlPrefix + "/workOrders/doUpdateLotStatus",
|
||||
submitEvent.currentTarget,
|
||||
(responseJSON: {
|
||||
success: boolean;
|
||||
errorMessage?: string;
|
||||
workOrderLots?: recordTypes.Lot[];
|
||||
}) => {
|
||||
if (responseJSON.success) {
|
||||
workOrderLots = responseJSON.workOrderLots;
|
||||
renderRelatedLotsAndOccupancies();
|
||||
editCloseModalFunction();
|
||||
} else {
|
||||
bulmaJS.alert({
|
||||
title: "Error Deleting Relationship",
|
||||
message: responseJSON.errorMessage,
|
||||
contextualColorName: "danger"
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
cityssm.openHtmlModal("lot-editLotStatus", {
|
||||
onshow: (modalElement) => {
|
||||
los.populateAliases(modalElement);
|
||||
|
||||
(
|
||||
modalElement.querySelector("#lotStatusEdit--lotId") as HTMLInputElement
|
||||
).value = lotId.toString();
|
||||
(
|
||||
modalElement.querySelector("#lotStatusEdit--lotName") as HTMLInputElement
|
||||
).value = lot.lotName;
|
||||
|
||||
const lotStatusElement = modalElement.querySelector(
|
||||
"#lotStatusEdit--lotStatusId"
|
||||
) as HTMLSelectElement;
|
||||
|
||||
let lotStatusFound = false;
|
||||
|
||||
for (const lotStatus of exports.lotStatuses as recordTypes.LotStatus[]) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value = lotStatus.lotStatusId.toString();
|
||||
optionElement.textContent = lotStatus.lotStatus;
|
||||
|
||||
if (lotStatus.lotStatusId === lot.lotStatusId) {
|
||||
lotStatusFound = true;
|
||||
}
|
||||
|
||||
lotStatusElement.append(optionElement);
|
||||
}
|
||||
|
||||
if (!lotStatusFound && lot.lotStatusId) {
|
||||
const optionElement = document.createElement("option");
|
||||
optionElement.value = lot.lotStatusId.toString();
|
||||
optionElement.textContent = lot.lotStatus;
|
||||
lotStatusElement.append(optionElement);
|
||||
}
|
||||
|
||||
if (lot.lotStatusId) {
|
||||
lotStatusElement.value = lot.lotStatusId.toString();
|
||||
}
|
||||
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.insertAdjacentHTML(
|
||||
"beforeend",
|
||||
'<input name="workOrderId" type="hidden" value="' + workOrderId + '" />'
|
||||
);
|
||||
},
|
||||
onshown: (modalElement, closeModalFunction) => {
|
||||
editCloseModalFunction = closeModalFunction;
|
||||
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
|
||||
modalElement
|
||||
.querySelector("form")
|
||||
.addEventListener("submit", doUpdateLotStatus);
|
||||
},
|
||||
onremoved: () => {
|
||||
bulmaJS.toggleHtmlClipped();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const deleteLot = (clickEvent: Event) => {
|
||||
const lotId = (
|
||||
(clickEvent.currentTarget as HTMLElement).closest(".container--lot") as HTMLElement
|
||||
|
|
@ -531,13 +635,20 @@ declare const bulmaJS: BulmaJS;
|
|||
"</td>" +
|
||||
("<td>" + cityssm.escapeHTML(lot.mapName) + "</td>") +
|
||||
("<td>" + cityssm.escapeHTML(lot.lotType) + "</td>") +
|
||||
("<td>" + cityssm.escapeHTML(lot.lotStatus) + "</td>") +
|
||||
("<td>" +
|
||||
("<td>" + (lot.lotStatusId ? cityssm.escapeHTML(lot.lotStatus) : "<span class=\"has-text-grey\">(No Status)</span>") + "</td>") +
|
||||
('<td class="is-nowrap">' +
|
||||
'<button class="button is-small is-light is-info button--editLotStatus" data-tooltip="Update Status" type="button">' +
|
||||
'<i class="fas fa-pencil-alt" aria-hidden="true"></i>' +
|
||||
"</button>" +
|
||||
' <button class="button is-small is-light is-danger button--deleteLot" data-tooltip="Delete Relationship" type="button">' +
|
||||
'<i class="fas fa-trash" aria-hidden="true"></i>' +
|
||||
"</button>" +
|
||||
"</td>");
|
||||
|
||||
rowElement
|
||||
.querySelector(".button--editLotStatus")
|
||||
.addEventListener("click", openEditLotStatus);
|
||||
|
||||
rowElement.querySelector(".button--deleteLot").addEventListener("click", deleteLot);
|
||||
|
||||
lotsContainerElement.querySelector("tbody").append(rowElement);
|
||||
|
|
@ -865,7 +976,7 @@ declare const bulmaJS: BulmaJS;
|
|||
return currentComment.workOrderCommentId === workOrderCommentId;
|
||||
});
|
||||
|
||||
console.log(workOrderComments)
|
||||
console.log(workOrderComments);
|
||||
|
||||
let editFormElement: HTMLFormElement;
|
||||
let editCloseModalFunction: () => void;
|
||||
|
|
@ -1017,7 +1128,8 @@ declare const bulmaJS: BulmaJS;
|
|||
|
||||
for (const workOrderComment of workOrderComments) {
|
||||
const tableRowElement = document.createElement("tr");
|
||||
tableRowElement.dataset.workOrderCommentId = workOrderComment.workOrderCommentId.toString();
|
||||
tableRowElement.dataset.workOrderCommentId =
|
||||
workOrderComment.workOrderCommentId.toString();
|
||||
|
||||
tableRowElement.innerHTML =
|
||||
"<td>" +
|
||||
|
|
@ -1094,7 +1206,9 @@ declare const bulmaJS: BulmaJS;
|
|||
bulmaJS.toggleHtmlClipped();
|
||||
addCommentCloseModalFunction = closeModalFunction;
|
||||
(
|
||||
modalElement.querySelector("#workOrderCommentAdd--workOrderComment") as HTMLTextAreaElement
|
||||
modalElement.querySelector(
|
||||
"#workOrderCommentAdd--workOrderComment"
|
||||
) as HTMLTextAreaElement
|
||||
).focus();
|
||||
},
|
||||
onremoved() {
|
||||
|
|
@ -1105,7 +1219,9 @@ declare const bulmaJS: BulmaJS;
|
|||
};
|
||||
|
||||
if (!isCreate) {
|
||||
document.querySelector("#workOrderComments--add").addEventListener("click", openAddCommentModal);
|
||||
document
|
||||
.querySelector("#workOrderComments--add")
|
||||
.addEventListener("click", openAddCommentModal);
|
||||
renderWorkOrderComments();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
<div class="modal">
|
||||
<div class="modal-background"></div>
|
||||
<div class="modal-card">
|
||||
<header class="modal-card-head">
|
||||
<h3 class="modal-card-title">
|
||||
Edit <span class="alias" data-alias="Lot"></span> Status
|
||||
</h3>
|
||||
<button class="delete is-close-modal-button" aria-label="close" type="button"></button>
|
||||
</header>
|
||||
<section class="modal-card-body">
|
||||
<form id="form--lotStatusEdit">
|
||||
<input id="lotStatusEdit--lotId" name="lotId" type="hidden" value="" />
|
||||
|
||||
<div class="field">
|
||||
<label class="label" for="lotStatusEdit--lotName"><span class="alias" data-alias="Lot"></span> Name</label>
|
||||
<div class="control">
|
||||
<input class="input is-readonly" id="lotStatusEdit--lotName" readonly/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label class="label" for="lotStatusEdit--lotStatusId">Status</label>
|
||||
<div class="control">
|
||||
<div class="select is-fullwidth">
|
||||
<select id="lotStatusEdit--lotStatusId" name="lotStatusId">
|
||||
<option value="">(No Status)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
</section>
|
||||
<footer class="modal-card-foot justify-right">
|
||||
<button class="button is-success" type="submit" form="form--lotStatusEdit">
|
||||
<span class="icon"><i class="fas fa-save" aria-hidden="true"></i></span>
|
||||
<span>Update Status</span>
|
||||
</button>
|
||||
<button class="button is-close-modal-button" type="button">Cancel</button>
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -16,6 +16,7 @@ import handler_doDeleteWorkOrder from "../handlers/workOrders-post/doDeleteWorkO
|
|||
import handler_doAddWorkOrderLotOccupancy from "../handlers/workOrders-post/doAddWorkOrderLotOccupancy.js";
|
||||
import handler_doDeleteWorkOrderLotOccupancy from "../handlers/workOrders-post/doDeleteWorkOrderLotOccupancy.js";
|
||||
import handler_doAddWorkOrderLot from "../handlers/workOrders-post/doAddWorkOrderLot.js";
|
||||
import handler_doUpdateLotStatus from "../handlers/workOrders-post/doUpdateLotStatus.js";
|
||||
import handler_doDeleteWorkOrderLot from "../handlers/workOrders-post/doDeleteWorkOrderLot.js";
|
||||
import handler_doAddWorkOrderComment from "../handlers/workOrders-post/doAddWorkOrderComment.js";
|
||||
import handler_doUpdateWorkOrderComment from "../handlers/workOrders-post/doUpdateWorkOrderComment.js";
|
||||
|
|
@ -42,6 +43,7 @@ router.post("/doDeleteWorkOrder", permissionHandlers.updatePostHandler, handler_
|
|||
router.post("/doAddWorkOrderLotOccupancy", permissionHandlers.updatePostHandler, handler_doAddWorkOrderLotOccupancy);
|
||||
router.post("/doDeleteWorkOrderLotOccupancy", permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderLotOccupancy);
|
||||
router.post("/doAddWorkOrderLot", permissionHandlers.updatePostHandler, handler_doAddWorkOrderLot);
|
||||
router.post("/doUpdateLotStatus", permissionHandlers.updatePostHandler, handler_doUpdateLotStatus);
|
||||
router.post("/doDeleteWorkOrderLot", permissionHandlers.updatePostHandler, handler_doDeleteWorkOrderLot);
|
||||
router.post("/doAddWorkOrderComment", permissionHandlers.updatePostHandler, handler_doAddWorkOrderComment);
|
||||
router.post("/doUpdateWorkOrderComment", permissionHandlers.updatePostHandler, handler_doUpdateWorkOrderComment);
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import handler_doAddWorkOrderLotOccupancy from "../handlers/workOrders-post/doAd
|
|||
import handler_doDeleteWorkOrderLotOccupancy from "../handlers/workOrders-post/doDeleteWorkOrderLotOccupancy.js";
|
||||
|
||||
import handler_doAddWorkOrderLot from "../handlers/workOrders-post/doAddWorkOrderLot.js";
|
||||
import handler_doUpdateLotStatus from "../handlers/workOrders-post/doUpdateLotStatus.js";
|
||||
import handler_doDeleteWorkOrderLot from "../handlers/workOrders-post/doDeleteWorkOrderLot.js";
|
||||
|
||||
import handler_doAddWorkOrderComment from "../handlers/workOrders-post/doAddWorkOrderComment.js";
|
||||
|
|
@ -121,6 +122,12 @@ router.post(
|
|||
handler_doAddWorkOrderLot
|
||||
);
|
||||
|
||||
router.post(
|
||||
"/doUpdateLotStatus",
|
||||
permissionHandlers.updatePostHandler,
|
||||
handler_doUpdateLotStatus
|
||||
);
|
||||
|
||||
router.post(
|
||||
"/doDeleteWorkOrderLot",
|
||||
permissionHandlers.updatePostHandler,
|
||||
|
|
|
|||
Loading…
Reference in New Issue