From 0caa6af372630437c16f1e55bd78753dd8f25dc3 Mon Sep 17 00:00:00 2001 From: Dan Gowans Date: Thu, 23 Mar 2023 09:28:10 -0400 Subject: [PATCH] format work order milestone times --- .../lotOccupancyDB/getWorkOrderMilestones.js | 11 +++-- .../lotOccupancyDB/getWorkOrderMilestones.ts | 12 +++-- public-typescript/workOrderEdit.js | 2 +- .../workOrderEdit/workOrderEdit.js | 2 +- .../workOrderEdit/workOrderEdit.ts | 2 +- .../workOrderMilestoneCalendar.js | 2 +- .../workOrderMilestoneCalendar.ts | 2 +- public/javascripts/workOrderEdit.min.js | 2 +- .../workOrderMilestoneCalendar.min.js | 2 +- types/recordTypes.d.ts | 2 + types/recordTypes.ts | 2 + views/dashboard.ejs | 2 +- views/print/pdf/workOrder.ejs | 48 +++++++++---------- views/workOrder-view.ejs | 26 +++++----- 14 files changed, 66 insertions(+), 51 deletions(-) diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.js b/helpers/lotOccupancyDB/getWorkOrderMilestones.js index 62f68cd0..1c8479b5 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestones.js +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.js @@ -1,5 +1,5 @@ import { acquireConnection } from './pool.js'; -import { dateIntegerToString, dateStringToInteger, dateToInteger, timeIntegerToString } from '@cityssm/utils-datetime'; +import { dateIntegerToString, dateStringToInteger, dateToInteger, timeIntegerToString, timeIntegerToPeriodString } from '@cityssm/utils-datetime'; import * as configFunctions from '../functions.config.js'; import { getLots } from './getLots.js'; import { getLotOccupancies } from './getLotOccupancies.js'; @@ -67,6 +67,7 @@ export async function getWorkOrderMilestones(filters, options, connectedDatabase const database = connectedDatabase ?? (await acquireConnection()); database.function('userFn_dateIntegerToString', dateIntegerToString); database.function('userFn_timeIntegerToString', timeIntegerToString); + database.function('userFn_timeIntegerToPeriodString', timeIntegerToPeriodString); const { sqlWhereClause, sqlParameters } = buildWhereClause(filters); let orderByClause = ''; switch (options.orderBy) { @@ -88,10 +89,14 @@ export async function getWorkOrderMilestones(filters, options, connectedDatabase const sql = 'select m.workOrderMilestoneId,' + ' m.workOrderMilestoneTypeId, t.workOrderMilestoneType,' + ' m.workOrderMilestoneDate, userFn_dateIntegerToString(m.workOrderMilestoneDate) as workOrderMilestoneDateString,' + - ' m.workOrderMilestoneTime, userFn_timeIntegerToString(m.workOrderMilestoneTime) as workOrderMilestoneTimeString,' + + ' m.workOrderMilestoneTime,' + + ' userFn_timeIntegerToString(m.workOrderMilestoneTime) as workOrderMilestoneTimeString,' + + ' userFn_timeIntegerToPeriodString(m.workOrderMilestoneTime) as workOrderMilestoneTimePeriodString,' + ' m.workOrderMilestoneDescription,' + ' m.workOrderMilestoneCompletionDate, userFn_dateIntegerToString(m.workOrderMilestoneCompletionDate) as workOrderMilestoneCompletionDateString,' + - ' m.workOrderMilestoneCompletionTime, userFn_timeIntegerToString(m.workOrderMilestoneCompletionTime) as workOrderMilestoneCompletionTimeString,' + + ' m.workOrderMilestoneCompletionTime,' + + ' userFn_timeIntegerToString(m.workOrderMilestoneCompletionTime) as workOrderMilestoneCompletionTimeString,' + + ' userFn_timeIntegerToPeriodString(m.workOrderMilestoneCompletionTime) as workOrderMilestoneCompletionTimePeriodString,' + (options.includeWorkOrders ?? false ? ' m.workOrderId, w.workOrderNumber, wt.workOrderType, w.workOrderDescription,' + ' w.workOrderOpenDate, userFn_dateIntegerToString(w.workOrderOpenDate) as workOrderOpenDateString,' + diff --git a/helpers/lotOccupancyDB/getWorkOrderMilestones.ts b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts index d8cfd981..f4a9239d 100644 --- a/helpers/lotOccupancyDB/getWorkOrderMilestones.ts +++ b/helpers/lotOccupancyDB/getWorkOrderMilestones.ts @@ -5,7 +5,8 @@ import { dateIntegerToString, dateStringToInteger, dateToInteger, - timeIntegerToString + timeIntegerToString, + timeIntegerToPeriodString } from '@cityssm/utils-datetime' import * as configFunctions from '../functions.config.js' @@ -133,6 +134,7 @@ export async function getWorkOrderMilestones( database.function('userFn_dateIntegerToString', dateIntegerToString) database.function('userFn_timeIntegerToString', timeIntegerToString) + database.function('userFn_timeIntegerToPeriodString', timeIntegerToPeriodString) // Filters const { sqlWhereClause, sqlParameters } = buildWhereClause(filters) @@ -163,10 +165,14 @@ export async function getWorkOrderMilestones( 'select m.workOrderMilestoneId,' + ' m.workOrderMilestoneTypeId, t.workOrderMilestoneType,' + ' m.workOrderMilestoneDate, userFn_dateIntegerToString(m.workOrderMilestoneDate) as workOrderMilestoneDateString,' + - ' m.workOrderMilestoneTime, userFn_timeIntegerToString(m.workOrderMilestoneTime) as workOrderMilestoneTimeString,' + + ' m.workOrderMilestoneTime,' + + ' userFn_timeIntegerToString(m.workOrderMilestoneTime) as workOrderMilestoneTimeString,' + + ' userFn_timeIntegerToPeriodString(m.workOrderMilestoneTime) as workOrderMilestoneTimePeriodString,' + ' m.workOrderMilestoneDescription,' + ' m.workOrderMilestoneCompletionDate, userFn_dateIntegerToString(m.workOrderMilestoneCompletionDate) as workOrderMilestoneCompletionDateString,' + - ' m.workOrderMilestoneCompletionTime, userFn_timeIntegerToString(m.workOrderMilestoneCompletionTime) as workOrderMilestoneCompletionTimeString,' + + ' m.workOrderMilestoneCompletionTime,' + + ' userFn_timeIntegerToString(m.workOrderMilestoneCompletionTime) as workOrderMilestoneCompletionTimeString,' + + ' userFn_timeIntegerToPeriodString(m.workOrderMilestoneCompletionTime) as workOrderMilestoneCompletionTimePeriodString,' + (options.includeWorkOrders ?? false ? ' m.workOrderId, w.workOrderNumber, wt.workOrderType, w.workOrderDescription,' + ' w.workOrderOpenDate, userFn_dateIntegerToString(w.workOrderOpenDate) as workOrderOpenDateString,' + diff --git a/public-typescript/workOrderEdit.js b/public-typescript/workOrderEdit.js index 169a0ee8..68edf257 100644 --- a/public-typescript/workOrderEdit.js +++ b/public-typescript/workOrderEdit.js @@ -1106,7 +1106,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); ? '(No Set Date)' : milestone.workOrderMilestoneDateString) + (milestone.workOrderMilestoneTime - ? ' ' + milestone.workOrderMilestoneTimeString + ? ' ' + milestone.workOrderMilestoneTimePeriodString : '') + '
' + '' + diff --git a/public-typescript/workOrderEdit/workOrderEdit.js b/public-typescript/workOrderEdit/workOrderEdit.js index 9b68bebd..21a937a6 100644 --- a/public-typescript/workOrderEdit/workOrderEdit.js +++ b/public-typescript/workOrderEdit/workOrderEdit.js @@ -348,7 +348,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); ? '(No Set Date)' : milestone.workOrderMilestoneDateString) + (milestone.workOrderMilestoneTime - ? ' ' + milestone.workOrderMilestoneTimeString + ? ' ' + milestone.workOrderMilestoneTimePeriodString : '') + '
' + '' + diff --git a/public-typescript/workOrderEdit/workOrderEdit.ts b/public-typescript/workOrderEdit/workOrderEdit.ts index c93c4a9e..47ac5636 100644 --- a/public-typescript/workOrderEdit/workOrderEdit.ts +++ b/public-typescript/workOrderEdit/workOrderEdit.ts @@ -521,7 +521,7 @@ declare const bulmaJS: BulmaJS ? '(No Set Date)' : milestone.workOrderMilestoneDateString) + (milestone.workOrderMilestoneTime - ? ' ' + milestone.workOrderMilestoneTimeString! + ? ' ' + milestone.workOrderMilestoneTimePeriodString! : '') + '
' + '' + diff --git a/public-typescript/workOrderMilestoneCalendar.js b/public-typescript/workOrderMilestoneCalendar.js index 48e9ea63..0224c6c0 100644 --- a/public-typescript/workOrderMilestoneCalendar.js +++ b/public-typescript/workOrderMilestoneCalendar.js @@ -81,7 +81,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); ('
' + (milestone.workOrderMilestoneTime === 0 ? '' - : milestone.workOrderMilestoneTimeString + '
') + + : milestone.workOrderMilestoneTimePeriodString + '
') + (milestone.workOrderMilestoneTypeId ? '' + cityssm.escapeHTML(milestone.workOrderMilestoneType) + diff --git a/public-typescript/workOrderMilestoneCalendar.ts b/public-typescript/workOrderMilestoneCalendar.ts index 3dabe1be..f278ef1d 100644 --- a/public-typescript/workOrderMilestoneCalendar.ts +++ b/public-typescript/workOrderMilestoneCalendar.ts @@ -119,7 +119,7 @@ declare const cityssm: cityssmGlobal ('
' + (milestone.workOrderMilestoneTime === 0 ? '' - : milestone.workOrderMilestoneTimeString + '
') + + : milestone.workOrderMilestoneTimePeriodString! + '
') + (milestone.workOrderMilestoneTypeId ? '' + cityssm.escapeHTML(milestone.workOrderMilestoneType!) + diff --git a/public/javascripts/workOrderEdit.min.js b/public/javascripts/workOrderEdit.min.js index 5ae889d1..970a3d1f 100644 --- a/public/javascripts/workOrderEdit.min.js +++ b/public/javascripts/workOrderEdit.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e;const t=exports.los,o=document.querySelector("#workOrderEdit--workOrderId").value,r=""===o,s=document.querySelector("#form--workOrderEdit");function n(){var e;t.setUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.remove("is-light")}function a(){var e;t.clearUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.add("is-light")}t.initializeDatePickers(s.querySelector("#workOrderEdit--workOrderOpenDateString").closest(".field")),t.initializeUnlockFieldButtons(s),s.addEventListener("submit",e=>{e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/"+(r?"doCreateWorkOrder":"doUpdateWorkOrder"),e.currentTarget,e=>{var o;const s=e;s.success?(a(),r?window.location.href=t.getWorkOrderURL(s.workOrderId,!0):bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating Work Order",message:null!==(o=s.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})});const l=s.querySelectorAll("input, select, textarea");for(const e of l)e.addEventListener("change",n);function c(){cityssm.postJSON(t.urlPrefix+"/workOrders/doCloseWorkOrder",{workOrderId:o},e=>{var r;const s=e;s.success?(a(),window.location.href=t.getWorkOrderURL(o)):bulmaJS.alert({title:"Error Closing Work Order",message:null!==(r=s.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"})})}function i(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrder",{workOrderId:o},e=>{var o;const r=e;r.success?(a(),window.location.href=t.urlPrefix+"/workOrders"):bulmaJS.alert({title:"Error Deleting Work Order",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}let d;if(null===(k=document.querySelector("#button--closeWorkOrder"))||void 0===k||k.addEventListener("click",()=>{d.some(e=>!e.workOrderMilestoneCompletionDate)?bulmaJS.alert({title:"Outstanding Milestones",message:"You cannot close a work order with outstanding milestones.\n Either complete the outstanding milestones, or remove them from the work order.",contextualColorName:"warning"}):bulmaJS.confirm({title:"Close Work Order",message:t.hasUnsavedChanges()?"Are you sure you want to close this work order with unsaved changes?":"Are you sure you want to close this work order?",contextualColorName:t.hasUnsavedChanges()?"warning":"info",okButton:{text:"Yes, Close Work Order",callbackFunction:c}})}),null===(u=document.querySelector("#button--deleteWorkOrder"))||void 0===u||u.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:i}})}),!r){var u;Object.defineProperty(exports,"__esModule",{value:!0});let e=exports.workOrderLots;delete exports.workOrderLots;let r=exports.workOrderLotOccupancies;function m(e){const s=e.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:`Delete ${t.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${t.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:s},e=>{var t;const o=e;o.success?(r=o.workOrderLotOccupancies,g()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(t=o.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}}})}function p(r,s){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderLot",{workOrderId:o,lotId:r},o=>{var r;const n=o;n.success?(e=n.workOrderLots,g()):bulmaJS.alert({title:`Error Adding ${t.escapedAliases.Lot}`,message:null!==(r=n.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"}),void 0!==s&&s(n.success)})}function y(e){p(e.currentTarget.dataset.lotId)}function O(r){const s=Number.parseInt(r.currentTarget.closest(".container--lot").dataset.lotId,10),n=e.find(e=>e.lotId===s);let a;function l(o){o.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateLotStatus",o.currentTarget,t=>{var o;const r=t;r.success?(e=r.workOrderLots,g(),a()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("lot-editLotStatus",{onshow(e){t.populateAliases(e),e.querySelector("#lotStatusEdit--lotId").value=s.toString(),e.querySelector("#lotStatusEdit--lotName").value=n.lotName;const r=e.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()),e.querySelector("form").insertAdjacentHTML("beforeend",``)},onshown(e,t){a=t,bulmaJS.toggleHtmlClipped(),e.querySelector("form").addEventListener("submit",l)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function h(r){const s=r.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:`Delete ${t.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${t.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderLot",{workOrderId:o,lotId:s},t=>{var o;const r=t;r.success?(e=r.workOrderLots,g()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function g(){!function(){var o,s,n,a;const l=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=r.length.toString(),0===r.length)return void(l.innerHTML=`
\n

There are no ${t.escapedAliases.occupancies} associated with this work order.

\n
`);l.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}
`;const c=cityssm.dateToString(new Date);for(const i of r){const r=document.createElement("tr");r.className="container--lotOccupancy",r.dataset.lotOccupancyId=i.lotOccupancyId.toString();const d=!(i.occupancyEndDate&&i.occupancyEndDateStringi.lotId===e.lotId);r.innerHTML=''+(d?'':'')+''+cityssm.escapeHTML(null!==(o=i.occupancyType)&&void 0!==o?o:"")+"
"+`#${i.lotOccupancyId}`+"",i.lotId?r.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=i.lotName)&&void 0!==s?s:"")+(u?"":' ')+""):r.insertAdjacentHTML("beforeend",`(No ${t.escapedAliases.Lot})`),r.insertAdjacentHTML("beforeend",""+i.occupancyStartDateString+""+(i.occupancyEndDate?i.occupancyEndDateString:'(No End Date)')+""+(0===i.lotOccupancyOccupants.length?'(No '+t.escapedAliases.Occupants+")":null===(n=i.lotOccupancyOccupants)||void 0===n?void 0:n.reduce((e,o)=>{var r;return e+' '+cityssm.escapeHTML(o.occupantName)+" "+cityssm.escapeHTML(o.occupantFamilyName)+"
"},""))+''),null===(a=r.querySelector(".button--addLot"))||void 0===a||a.addEventListener("click",y),r.querySelector(".button--deleteLotOccupancy").addEventListener("click",m),l.querySelector("tbody").append(r)}}(),function(){var o,r,s,n;const a=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=e.length.toString(),0!==e.length){a.innerHTML=`\n \n \n \n \n \n \n \n \n
${t.escapedAliases.Lot}${t.escapedAliases.Map}${t.escapedAliases.Lot} TypeStatus
`;for(const l of e){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=l.lotId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(o=l.lotName)&&void 0!==o?o:"")+""+`${cityssm.escapeHTML(null!==(r=l.mapName)&&void 0!==r?r:"")}`+`${cityssm.escapeHTML(null!==(s=l.lotType)&&void 0!==s?s:"")}`+""+(l.lotStatusId?cityssm.escapeHTML(null!==(n=l.lotStatus)&&void 0!==n?n:""):'(No Status)')+'\n \n \n ',e.querySelector(".button--editLotStatus").addEventListener("click",O),e.querySelector(".button--deleteLot").addEventListener("click",h),a.querySelector("tbody").append(e)}}else a.innerHTML=`
\n

There are no ${t.escapedAliases.lots} associated with this work order.

\n
`}()}function w(e){const s=e.currentTarget.closest("tr");!function(e,s){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:e},e=>{var o;const n=e;n.success?(r=n.workOrderLotOccupancies,g()):bulmaJS.alert({title:"Error Adding "+t.escapedAliases.Occupancy,message:null!==(o=n.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"}),void 0!==s&&s(n.success)})}(s.dataset.lotOccupancyId,e=>{e&&s.remove()})}function S(e){const t=e.currentTarget.closest("tr");p(t.dataset.lotId,e=>{e&&t.remove()})}delete exports.workOrderLotOccupancies,g(),null===(k=document.querySelector("#button--addLotOccupancy"))||void 0===k||k.addEventListener("click",()=>{let e,r;function s(o){o&&o.preventDefault(),r.innerHTML=t.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(t.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,e=>{var o,s;const n=e;if(0!==n.lotOccupancies.length){r.innerHTML=`\n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}
`;for(const e of n.lotOccupancies){const n=document.createElement("tr");n.className="container--lotOccupancy",n.dataset.lotOccupancyId=e.lotOccupancyId.toString(),n.innerHTML=`\n \n \n \n ${cityssm.escapeHTML(null!==(o=e.occupancyType)&&void 0!==o?o:"")}\n `,e.lotId?n.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=e.lotName)&&void 0!==s?s:"")+""):n.insertAdjacentHTML("beforeend",`(No ${t.escapedAliases.Lot})`),n.insertAdjacentHTML("beforeend",`${e.occupancyStartDateString}`+""+(e.occupancyEndDate?e.occupancyEndDateString:'(No End Date)')+""+(0===e.lotOccupancyOccupants.length?`(No ${cityssm.escapeHTML(t.escapedAliases.Occupants)})`:cityssm.escapeHTML(e.lotOccupancyOccupants[0].occupantName+" "+e.lotOccupancyOccupants[0].occupantFamilyName)+(e.lotOccupancyOccupants.length>1?" plus "+(e.lotOccupancyOccupants.length-1):""))+""),n.querySelector(".button--addLotOccupancy").addEventListener("click",w),r.querySelector("tbody").append(n)}}else r.innerHTML='
\n

There are no records that meet the search criteria.

\n
'})}cityssm.openHtmlModal("workOrder-addLotOccupancy",{onshow(n){t.populateAliases(n),e=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotOccupancyAdd"),n.querySelector("#lotOccupancySearch--notWorkOrderId").value=o,n.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotOccupancySearch--occupantName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotOccupancySearch--lotName").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLotOccupancy").focus()}})}),null===(u=document.querySelector("#button--addLot"))||void 0===u||u.addEventListener("click",()=>{let e,r;function s(o){o&&o.preventDefault(),r.innerHTML=t.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(t.urlPrefix+"/lots/doSearchLots",e,e=>{var o,s,n,a;const l=e;if(0!==l.lots.length){r.innerHTML=`\n \n \n \n \n \n \n \n \n
${t.escapedAliases.Lot}${t.escapedAliases.Map}${t.escapedAliases.Lot} TypeStatus
`;for(const e of l.lots){const t=document.createElement("tr");t.className="container--lot",t.dataset.lotId=e.lotId.toString(),t.innerHTML=''+cityssm.escapeHTML(null!==(o=e.lotName)&&void 0!==o?o:"")+""+cityssm.escapeHTML(null!==(s=e.mapName)&&void 0!==s?s:"")+""+cityssm.escapeHTML(null!==(n=e.lotType)&&void 0!==n?n:"")+""+cityssm.escapeHTML(null!==(a=e.lotStatus)&&void 0!==a?a:"")+"",t.querySelector(".button--addLot").addEventListener("click",S),r.querySelector("tbody").append(t)}}else r.innerHTML='

There are no records that meet the search criteria.

'})}cityssm.openHtmlModal("workOrder-addLot",{onshow(n){t.populateAliases(n),e=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotAdd"),n.querySelector("#lotSearch--notWorkOrderId").value=o;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(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotSearch--lotName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotSearch--lotStatusId").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLot").focus()}})})}var k;Object.defineProperty(exports,"__esModule",{value:!0});let f=exports.workOrderComments;function b(e){const r=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10),s=f.find(e=>e.workOrderCommentId===r);let n,a;function l(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateWorkOrderComment",n,e=>{var t;e.success?(f=e.workOrderComments,a(),M()):bulmaJS.alert({title:"Error Updating Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("workOrder-editComment",{onshow(e){e.querySelector("#workOrderCommentEdit--workOrderId").value=o,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=r.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=s.workOrderComment;const t=e.querySelector("#workOrderCommentEdit--workOrderCommentDateString");t.value=s.workOrderCommentDateString;const n=cityssm.dateToString(new Date);t.max=s.workOrderCommentDateString<=n?n:s.workOrderCommentDateString,e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=s.workOrderCommentTimeString},onshown(e,o){bulmaJS.toggleHtmlClipped(),t.initializeDatePickers(e),e.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(n=e.querySelector("form")).addEventListener("submit",l),a=o},onremoved(){bulmaJS.toggleHtmlClipped()}})}function v(e){const r=Number.parseInt(e.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(t.urlPrefix+"/workOrders/doDeleteWorkOrderComment",{workOrderId:o,workOrderCommentId:r},e=>{var t;e.success?(f=e.workOrderComments,M()):bulmaJS.alert({title:"Error Removing Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function M(){var e,t;const o=document.querySelector("#container--workOrderComments");if(0===f.length)return void(o.innerHTML='
\n

There are no comments to display.

\n
');const r=document.createElement("table");r.className="table is-fullwidth is-striped is-hoverable",r.innerHTML='\n Commentor\n Comment Date\n Comment\n Options';for(const o of f){const s=document.createElement("tr");s.dataset.workOrderCommentId=o.workOrderCommentId.toString(),s.innerHTML=""+cityssm.escapeHTML(null!==(e=o.recordCreate_userName)&&void 0!==e?e:"")+""+o.workOrderCommentDateString+(0===o.workOrderCommentTime?"":" "+o.workOrderCommentTimePeriodString)+""+cityssm.escapeHTML(null!==(t=o.workOrderComment)&&void 0!==t?t:"")+'
',s.querySelector(".button--edit").addEventListener("click",b),s.querySelector(".button--delete").addEventListener("click",v),r.querySelector("tbody").append(s)}o.innerHTML="",o.append(r)}function L(e){var t;const o=e;o.success?(d=o.workOrderMilestones,E()):bulmaJS.alert({title:"Error Reopening Milestone",message:null!==(t=o.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})}function C(e){e.preventDefault();const r=cityssm.dateToString(new Date),s=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),n=d.find(e=>e.workOrderMilestoneId===s);bulmaJS.confirm({title:"Complete Milestone",message:"Are you sure you want to complete this milestone?"+(""!==n.workOrderMilestoneDateString&&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:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doCompleteWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:s},L)}}})}function T(e){e.preventDefault();const r=e.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:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doReopenWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:r},L)}}})}function I(e){e.preventDefault();const r=e.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:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderMilestone",{workOrderMilestoneId:r,workOrderId:o},L)}}})}function x(e){e.preventDefault();const r=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),s=d.find(e=>e.workOrderMilestoneId===r);let n;function a(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateWorkOrderMilestone",e.currentTarget,e=>{const t=e;L(t),t.success&&n()})}cityssm.openHtmlModal("workOrder-editMilestone",{onshow(e){e.querySelector("#milestoneEdit--workOrderId").value=o,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=s.workOrderMilestoneId.toString();const t=e.querySelector("#milestoneEdit--workOrderMilestoneTypeId");let r=!1;for(const e of exports.workOrderMilestoneTypes){const o=document.createElement("option");o.value=e.workOrderMilestoneTypeId.toString(),o.textContent=e.workOrderMilestoneType,e.workOrderMilestoneTypeId===s.workOrderMilestoneTypeId&&(o.selected=!0,r=!0),t.append(o)}if(!r&&s.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=s.workOrderMilestoneTypeId.toString(),e.textContent=s.workOrderMilestoneType,e.selected=!0,t.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(e,o){n=o,bulmaJS.toggleHtmlClipped(),t.initializeDatePickers(e),e.querySelector("form").addEventListener("submit",a)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function E(){var e,t,o,r,s;const n=document.querySelector("#panel--milestones"),a=n.querySelectorAll(".panel-block");for(const e of a)e.remove();for(const a of d){const l=document.createElement("div");l.className="panel-block is-block container--milestone",l.dataset.workOrderMilestoneId=a.workOrderMilestoneId.toString(),l.innerHTML='
'+(a.workOrderMilestoneCompletionDate?'':'')+'
'+(a.workOrderMilestoneTypeId?""+cityssm.escapeHTML(null!==(e=a.workOrderMilestoneType)&&void 0!==e?e:"")+"
":"")+(0===a.workOrderMilestoneDate?'(No Set Date)':a.workOrderMilestoneDateString)+(a.workOrderMilestoneTime?" "+a.workOrderMilestoneTimeString:"")+'
'+cityssm.escapeHTML(null!==(t=a.workOrderMilestoneDescription)&&void 0!==t?t:"")+'
',null===(o=l.querySelector(".button--reopenMilestone"))||void 0===o||o.addEventListener("click",T),null===(r=l.querySelector(".button--editMilestone"))||void 0===r||r.addEventListener("click",x),null===(s=l.querySelector(".button--completeMilestone"))||void 0===s||s.addEventListener("click",C),l.querySelector(".button--deleteMilestone").addEventListener("click",I),n.append(l)}bulmaJS.init(n)}delete exports.workOrderComments,null===(k=document.querySelector("#workOrderComments--add"))||void 0===k||k.addEventListener("click",function(){let e;function r(o){o.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderComment",o.currentTarget,t=>{t.success&&(f=t.workOrderComments,M(),e())})}cityssm.openHtmlModal("workOrder-addComment",{onshow(e){t.populateAliases(e),e.querySelector("#workOrderCommentAdd--workOrderId").value=o,e.querySelector("form").addEventListener("submit",r)},onshown(t,o){bulmaJS.toggleHtmlClipped(),e=o,t.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})}),r||M(),r||(d=exports.workOrderMilestones,delete exports.workOrderMilestones,E(),null===(e=document.querySelector("#button--addMilestone"))||void 0===e||e.addEventListener("click",()=>{let e,r,s;function n(o){o&&o.preventDefault();const n=cityssm.dateToString(new Date);function a(){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderMilestone",r,e=>{const t=e;L(t),t.success&&s()})}const l=e.querySelector("#milestoneAdd--workOrderMilestoneDateString").value;""!==l&&l{var e;const t=exports.los,o=document.querySelector("#workOrderEdit--workOrderId").value,r=""===o,s=document.querySelector("#form--workOrderEdit");function n(){var e;t.setUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.remove("is-light")}function a(){var e;t.clearUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.add("is-light")}t.initializeDatePickers(s.querySelector("#workOrderEdit--workOrderOpenDateString").closest(".field")),t.initializeUnlockFieldButtons(s),s.addEventListener("submit",e=>{e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/"+(r?"doCreateWorkOrder":"doUpdateWorkOrder"),e.currentTarget,e=>{var o;const s=e;s.success?(a(),r?window.location.href=t.getWorkOrderURL(s.workOrderId,!0):bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating Work Order",message:null!==(o=s.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})});const l=s.querySelectorAll("input, select, textarea");for(const e of l)e.addEventListener("change",n);function c(){cityssm.postJSON(t.urlPrefix+"/workOrders/doCloseWorkOrder",{workOrderId:o},e=>{var r;const s=e;s.success?(a(),window.location.href=t.getWorkOrderURL(o)):bulmaJS.alert({title:"Error Closing Work Order",message:null!==(r=s.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"})})}function i(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrder",{workOrderId:o},e=>{var o;const r=e;r.success?(a(),window.location.href=t.urlPrefix+"/workOrders"):bulmaJS.alert({title:"Error Deleting Work Order",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}let d;if(null===(k=document.querySelector("#button--closeWorkOrder"))||void 0===k||k.addEventListener("click",()=>{d.some(e=>!e.workOrderMilestoneCompletionDate)?bulmaJS.alert({title:"Outstanding Milestones",message:"You cannot close a work order with outstanding milestones.\n Either complete the outstanding milestones, or remove them from the work order.",contextualColorName:"warning"}):bulmaJS.confirm({title:"Close Work Order",message:t.hasUnsavedChanges()?"Are you sure you want to close this work order with unsaved changes?":"Are you sure you want to close this work order?",contextualColorName:t.hasUnsavedChanges()?"warning":"info",okButton:{text:"Yes, Close Work Order",callbackFunction:c}})}),null===(u=document.querySelector("#button--deleteWorkOrder"))||void 0===u||u.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:i}})}),!r){var u;Object.defineProperty(exports,"__esModule",{value:!0});let e=exports.workOrderLots;delete exports.workOrderLots;let r=exports.workOrderLotOccupancies;function m(e){const s=e.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:`Delete ${t.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${t.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:s},e=>{var t;const o=e;o.success?(r=o.workOrderLotOccupancies,g()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(t=o.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}}})}function p(r,s){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderLot",{workOrderId:o,lotId:r},o=>{var r;const n=o;n.success?(e=n.workOrderLots,g()):bulmaJS.alert({title:`Error Adding ${t.escapedAliases.Lot}`,message:null!==(r=n.errorMessage)&&void 0!==r?r:"",contextualColorName:"danger"}),void 0!==s&&s(n.success)})}function y(e){p(e.currentTarget.dataset.lotId)}function O(r){const s=Number.parseInt(r.currentTarget.closest(".container--lot").dataset.lotId,10),n=e.find(e=>e.lotId===s);let a;function l(o){o.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateLotStatus",o.currentTarget,t=>{var o;const r=t;r.success?(e=r.workOrderLots,g(),a()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("lot-editLotStatus",{onshow(e){t.populateAliases(e),e.querySelector("#lotStatusEdit--lotId").value=s.toString(),e.querySelector("#lotStatusEdit--lotName").value=n.lotName;const r=e.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()),e.querySelector("form").insertAdjacentHTML("beforeend",``)},onshown(e,t){a=t,bulmaJS.toggleHtmlClipped(),e.querySelector("form").addEventListener("submit",l)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function h(r){const s=r.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:`Delete ${t.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${t.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderLot",{workOrderId:o,lotId:s},t=>{var o;const r=t;r.success?(e=r.workOrderLots,g()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=r.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function g(){!function(){var o,s,n,a;const l=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=r.length.toString(),0===r.length)return void(l.innerHTML=`
\n

There are no ${t.escapedAliases.occupancies} associated with this work order.

\n
`);l.innerHTML=`\n \n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}
`;const c=cityssm.dateToString(new Date);for(const i of r){const r=document.createElement("tr");r.className="container--lotOccupancy",r.dataset.lotOccupancyId=i.lotOccupancyId.toString();const d=!(i.occupancyEndDate&&i.occupancyEndDateStringi.lotId===e.lotId);r.innerHTML=''+(d?'':'')+''+cityssm.escapeHTML(null!==(o=i.occupancyType)&&void 0!==o?o:"")+"
"+`#${i.lotOccupancyId}`+"",i.lotId?r.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=i.lotName)&&void 0!==s?s:"")+(u?"":' ')+""):r.insertAdjacentHTML("beforeend",`(No ${t.escapedAliases.Lot})`),r.insertAdjacentHTML("beforeend",""+i.occupancyStartDateString+""+(i.occupancyEndDate?i.occupancyEndDateString:'(No End Date)')+""+(0===i.lotOccupancyOccupants.length?'(No '+t.escapedAliases.Occupants+")":null===(n=i.lotOccupancyOccupants)||void 0===n?void 0:n.reduce((e,o)=>{var r;return e+' '+cityssm.escapeHTML(o.occupantName)+" "+cityssm.escapeHTML(o.occupantFamilyName)+"
"},""))+''),null===(a=r.querySelector(".button--addLot"))||void 0===a||a.addEventListener("click",y),r.querySelector(".button--deleteLotOccupancy").addEventListener("click",m),l.querySelector("tbody").append(r)}}(),function(){var o,r,s,n;const a=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=e.length.toString(),0!==e.length){a.innerHTML=`\n \n \n \n \n \n \n \n \n
${t.escapedAliases.Lot}${t.escapedAliases.Map}${t.escapedAliases.Lot} TypeStatus
`;for(const l of e){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=l.lotId.toString(),e.innerHTML=''+cityssm.escapeHTML(null!==(o=l.lotName)&&void 0!==o?o:"")+""+`${cityssm.escapeHTML(null!==(r=l.mapName)&&void 0!==r?r:"")}`+`${cityssm.escapeHTML(null!==(s=l.lotType)&&void 0!==s?s:"")}`+""+(l.lotStatusId?cityssm.escapeHTML(null!==(n=l.lotStatus)&&void 0!==n?n:""):'(No Status)')+'\n \n \n ',e.querySelector(".button--editLotStatus").addEventListener("click",O),e.querySelector(".button--deleteLot").addEventListener("click",h),a.querySelector("tbody").append(e)}}else a.innerHTML=`
\n

There are no ${t.escapedAliases.lots} associated with this work order.

\n
`}()}function w(e){const s=e.currentTarget.closest("tr");!function(e,s){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:e},e=>{var o;const n=e;n.success?(r=n.workOrderLotOccupancies,g()):bulmaJS.alert({title:"Error Adding "+t.escapedAliases.Occupancy,message:null!==(o=n.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"}),void 0!==s&&s(n.success)})}(s.dataset.lotOccupancyId,e=>{e&&s.remove()})}function S(e){const t=e.currentTarget.closest("tr");p(t.dataset.lotId,e=>{e&&t.remove()})}delete exports.workOrderLotOccupancies,g(),null===(k=document.querySelector("#button--addLotOccupancy"))||void 0===k||k.addEventListener("click",()=>{let e,r;function s(o){o&&o.preventDefault(),r.innerHTML=t.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(t.urlPrefix+"/lotOccupancies/doSearchLotOccupancies",e,e=>{var o,s;const n=e;if(0!==n.lotOccupancies.length){r.innerHTML=`\n \n \n \n \n \n \n \n \n \n
${t.escapedAliases.Occupancy} Type${t.escapedAliases.Lot}${t.escapedAliases.OccupancyStartDate}End Date${t.escapedAliases.Occupants}
`;for(const e of n.lotOccupancies){const n=document.createElement("tr");n.className="container--lotOccupancy",n.dataset.lotOccupancyId=e.lotOccupancyId.toString(),n.innerHTML=`\n \n \n \n ${cityssm.escapeHTML(null!==(o=e.occupancyType)&&void 0!==o?o:"")}\n `,e.lotId?n.insertAdjacentHTML("beforeend",""+cityssm.escapeHTML(null!==(s=e.lotName)&&void 0!==s?s:"")+""):n.insertAdjacentHTML("beforeend",`(No ${t.escapedAliases.Lot})`),n.insertAdjacentHTML("beforeend",`${e.occupancyStartDateString}`+""+(e.occupancyEndDate?e.occupancyEndDateString:'(No End Date)')+""+(0===e.lotOccupancyOccupants.length?`(No ${cityssm.escapeHTML(t.escapedAliases.Occupants)})`:cityssm.escapeHTML(e.lotOccupancyOccupants[0].occupantName+" "+e.lotOccupancyOccupants[0].occupantFamilyName)+(e.lotOccupancyOccupants.length>1?" plus "+(e.lotOccupancyOccupants.length-1):""))+""),n.querySelector(".button--addLotOccupancy").addEventListener("click",w),r.querySelector("tbody").append(n)}}else r.innerHTML='
\n

There are no records that meet the search criteria.

\n
'})}cityssm.openHtmlModal("workOrder-addLotOccupancy",{onshow(n){t.populateAliases(n),e=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotOccupancyAdd"),n.querySelector("#lotOccupancySearch--notWorkOrderId").value=o,n.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,s()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotOccupancySearch--occupantName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotOccupancySearch--lotName").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLotOccupancy").focus()}})}),null===(u=document.querySelector("#button--addLot"))||void 0===u||u.addEventListener("click",()=>{let e,r;function s(o){o&&o.preventDefault(),r.innerHTML=t.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(t.urlPrefix+"/lots/doSearchLots",e,e=>{var o,s,n,a;const l=e;if(0!==l.lots.length){r.innerHTML=`\n \n \n \n \n \n \n \n \n
${t.escapedAliases.Lot}${t.escapedAliases.Map}${t.escapedAliases.Lot} TypeStatus
`;for(const e of l.lots){const t=document.createElement("tr");t.className="container--lot",t.dataset.lotId=e.lotId.toString(),t.innerHTML=''+cityssm.escapeHTML(null!==(o=e.lotName)&&void 0!==o?o:"")+""+cityssm.escapeHTML(null!==(s=e.mapName)&&void 0!==s?s:"")+""+cityssm.escapeHTML(null!==(n=e.lotType)&&void 0!==n?n:"")+""+cityssm.escapeHTML(null!==(a=e.lotStatus)&&void 0!==a?a:"")+"",t.querySelector(".button--addLot").addEventListener("click",S),r.querySelector("tbody").append(t)}}else r.innerHTML='

There are no records that meet the search criteria.

'})}cityssm.openHtmlModal("workOrder-addLot",{onshow(n){t.populateAliases(n),e=n.querySelector("form"),r=n.querySelector("#resultsContainer--lotAdd"),n.querySelector("#lotSearch--notWorkOrderId").value=o;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(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotSearch--lotName");o.addEventListener("change",s),o.focus(),t.querySelector("#lotSearch--lotStatusId").addEventListener("change",s),e.addEventListener("submit",s)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLot").focus()}})})}var k;Object.defineProperty(exports,"__esModule",{value:!0});let f=exports.workOrderComments;function b(e){const r=Number.parseInt(e.currentTarget.closest("tr").dataset.workOrderCommentId,10),s=f.find(e=>e.workOrderCommentId===r);let n,a;function l(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateWorkOrderComment",n,e=>{var t;e.success?(f=e.workOrderComments,a(),M()):bulmaJS.alert({title:"Error Updating Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("workOrder-editComment",{onshow(e){e.querySelector("#workOrderCommentEdit--workOrderId").value=o,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=r.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=s.workOrderComment;const t=e.querySelector("#workOrderCommentEdit--workOrderCommentDateString");t.value=s.workOrderCommentDateString;const n=cityssm.dateToString(new Date);t.max=s.workOrderCommentDateString<=n?n:s.workOrderCommentDateString,e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=s.workOrderCommentTimeString},onshown(e,o){bulmaJS.toggleHtmlClipped(),t.initializeDatePickers(e),e.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(n=e.querySelector("form")).addEventListener("submit",l),a=o},onremoved(){bulmaJS.toggleHtmlClipped()}})}function v(e){const r=Number.parseInt(e.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(t.urlPrefix+"/workOrders/doDeleteWorkOrderComment",{workOrderId:o,workOrderCommentId:r},e=>{var t;e.success?(f=e.workOrderComments,M()):bulmaJS.alert({title:"Error Removing Comment",message:null!==(t=e.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function M(){var e,t;const o=document.querySelector("#container--workOrderComments");if(0===f.length)return void(o.innerHTML='
\n

There are no comments to display.

\n
');const r=document.createElement("table");r.className="table is-fullwidth is-striped is-hoverable",r.innerHTML='\n Commentor\n Comment Date\n Comment\n Options';for(const o of f){const s=document.createElement("tr");s.dataset.workOrderCommentId=o.workOrderCommentId.toString(),s.innerHTML=""+cityssm.escapeHTML(null!==(e=o.recordCreate_userName)&&void 0!==e?e:"")+""+o.workOrderCommentDateString+(0===o.workOrderCommentTime?"":" "+o.workOrderCommentTimePeriodString)+""+cityssm.escapeHTML(null!==(t=o.workOrderComment)&&void 0!==t?t:"")+'
',s.querySelector(".button--edit").addEventListener("click",b),s.querySelector(".button--delete").addEventListener("click",v),r.querySelector("tbody").append(s)}o.innerHTML="",o.append(r)}function L(e){var t;const o=e;o.success?(d=o.workOrderMilestones,E()):bulmaJS.alert({title:"Error Reopening Milestone",message:null!==(t=o.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})}function C(e){e.preventDefault();const r=cityssm.dateToString(new Date),s=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),n=d.find(e=>e.workOrderMilestoneId===s);bulmaJS.confirm({title:"Complete Milestone",message:"Are you sure you want to complete this milestone?"+(""!==n.workOrderMilestoneDateString&&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:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doCompleteWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:s},L)}}})}function T(e){e.preventDefault();const r=e.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:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doReopenWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:r},L)}}})}function I(e){e.preventDefault();const r=e.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:function(){cityssm.postJSON(t.urlPrefix+"/workOrders/doDeleteWorkOrderMilestone",{workOrderMilestoneId:r,workOrderId:o},L)}}})}function x(e){e.preventDefault();const r=Number.parseInt(e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),s=d.find(e=>e.workOrderMilestoneId===r);let n;function a(e){e.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doUpdateWorkOrderMilestone",e.currentTarget,e=>{const t=e;L(t),t.success&&n()})}cityssm.openHtmlModal("workOrder-editMilestone",{onshow(e){e.querySelector("#milestoneEdit--workOrderId").value=o,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=s.workOrderMilestoneId.toString();const t=e.querySelector("#milestoneEdit--workOrderMilestoneTypeId");let r=!1;for(const e of exports.workOrderMilestoneTypes){const o=document.createElement("option");o.value=e.workOrderMilestoneTypeId.toString(),o.textContent=e.workOrderMilestoneType,e.workOrderMilestoneTypeId===s.workOrderMilestoneTypeId&&(o.selected=!0,r=!0),t.append(o)}if(!r&&s.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=s.workOrderMilestoneTypeId.toString(),e.textContent=s.workOrderMilestoneType,e.selected=!0,t.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(e,o){n=o,bulmaJS.toggleHtmlClipped(),t.initializeDatePickers(e),e.querySelector("form").addEventListener("submit",a)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function E(){var e,t,o,r,s;const n=document.querySelector("#panel--milestones"),a=n.querySelectorAll(".panel-block");for(const e of a)e.remove();for(const a of d){const l=document.createElement("div");l.className="panel-block is-block container--milestone",l.dataset.workOrderMilestoneId=a.workOrderMilestoneId.toString(),l.innerHTML='
'+(a.workOrderMilestoneCompletionDate?'':'')+'
'+(a.workOrderMilestoneTypeId?""+cityssm.escapeHTML(null!==(e=a.workOrderMilestoneType)&&void 0!==e?e:"")+"
":"")+(0===a.workOrderMilestoneDate?'(No Set Date)':a.workOrderMilestoneDateString)+(a.workOrderMilestoneTime?" "+a.workOrderMilestoneTimePeriodString:"")+'
'+cityssm.escapeHTML(null!==(t=a.workOrderMilestoneDescription)&&void 0!==t?t:"")+'
',null===(o=l.querySelector(".button--reopenMilestone"))||void 0===o||o.addEventListener("click",T),null===(r=l.querySelector(".button--editMilestone"))||void 0===r||r.addEventListener("click",x),null===(s=l.querySelector(".button--completeMilestone"))||void 0===s||s.addEventListener("click",C),l.querySelector(".button--deleteMilestone").addEventListener("click",I),n.append(l)}bulmaJS.init(n)}delete exports.workOrderComments,null===(k=document.querySelector("#workOrderComments--add"))||void 0===k||k.addEventListener("click",function(){let e;function r(o){o.preventDefault(),cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderComment",o.currentTarget,t=>{t.success&&(f=t.workOrderComments,M(),e())})}cityssm.openHtmlModal("workOrder-addComment",{onshow(e){t.populateAliases(e),e.querySelector("#workOrderCommentAdd--workOrderId").value=o,e.querySelector("form").addEventListener("submit",r)},onshown(t,o){bulmaJS.toggleHtmlClipped(),e=o,t.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})}),r||M(),r||(d=exports.workOrderMilestones,delete exports.workOrderMilestones,E(),null===(e=document.querySelector("#button--addMilestone"))||void 0===e||e.addEventListener("click",()=>{let e,r,s;function n(o){o&&o.preventDefault();const n=cityssm.dateToString(new Date);function a(){cityssm.postJSON(t.urlPrefix+"/workOrders/doAddWorkOrderMilestone",r,e=>{const t=e;L(t),t.success&&s()})}const l=e.querySelector("#milestoneAdd--workOrderMilestoneDateString").value;""!==l&&l{const e=exports.los,s=document.querySelector("#form--searchFilters"),r=s.querySelector("#searchFilter--workOrderMilestoneDateFilter"),a=s.querySelector("#searchFilter--workOrderMilestoneDateString"),t=document.querySelector("#container--milestoneCalendar");function i(r){r&&r.preventDefault(),t.innerHTML=e.getLoadingParagraphHTML("Loading Milestones..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{!function(s){var r,a,i,o,n,l,c,d;if(0===s.length)return void(t.innerHTML='
\n

There are no milestones that meet the search criteria.

\n
');t.innerHTML="";const p=cityssm.dateToString(new Date);let m,u="x";for(const M of s){u!==M.workOrderMilestoneDateString&&(m&&t.append(m),(m=document.createElement("div")).className="panel",m.innerHTML=`

\n ${0===M.workOrderMilestoneDate?"No Set Date":M.workOrderMilestoneDateString}\n

`,u=M.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!M.workOrderMilestoneCompletionDate&&""!==M.workOrderMilestoneDateString&&M.workOrderMilestoneDateString '+cityssm.escapeHTML(null!==(a=s.lotName)&&void 0!==a?a:"")+"
";for(const s of M.workOrderLotOccupancies)for(const r of s.lotOccupancyOccupants)O+=' '+cityssm.escapeHTML(null!==(o=r.occupantName)&&void 0!==o?o:"")+" "+cityssm.escapeHTML(null!==(n=r.occupantFamilyName)&&void 0!==n?n:"")+"
";s.innerHTML='
'+(M.workOrderMilestoneCompletionDate?'':'')+'
'+(0===M.workOrderMilestoneTime?"":M.workOrderMilestoneTimeString+"
")+(M.workOrderMilestoneTypeId?""+cityssm.escapeHTML(M.workOrderMilestoneType)+"
":"")+''+cityssm.escapeHTML(M.workOrderMilestoneDescription)+'
'+cityssm.escapeHTML(null!==(c=M.workOrderNumber)&&void 0!==c?c:"")+'
'+cityssm.escapeHTML(null!==(d=M.workOrderDescription)&&void 0!==d?d:"")+'
'+O+"
",m.append(s)}t.append(m)}(s.workOrderMilestones)})}r.addEventListener("change",()=>{a.closest("fieldset").disabled="date"!==r.value,i()}),e.initializeDatePickers(s),a.addEventListener("change",i),s.addEventListener("submit",i),i()})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,s=document.querySelector("#form--searchFilters"),r=s.querySelector("#searchFilter--workOrderMilestoneDateFilter"),a=s.querySelector("#searchFilter--workOrderMilestoneDateString"),t=document.querySelector("#container--milestoneCalendar");function i(r){r&&r.preventDefault(),t.innerHTML=e.getLoadingParagraphHTML("Loading Milestones..."),cityssm.postJSON(e.urlPrefix+"/workOrders/doGetWorkOrderMilestones",s,s=>{!function(s){var r,a,i,o,n,l,c,d;if(0===s.length)return void(t.innerHTML='
\n

There are no milestones that meet the search criteria.

\n
');t.innerHTML="";const p=cityssm.dateToString(new Date);let m,u="x";for(const M of s){u!==M.workOrderMilestoneDateString&&(m&&t.append(m),(m=document.createElement("div")).className="panel",m.innerHTML=`

\n ${0===M.workOrderMilestoneDate?"No Set Date":M.workOrderMilestoneDateString}\n

`,u=M.workOrderMilestoneDateString);const s=document.createElement("div");s.className="panel-block is-block",!M.workOrderMilestoneCompletionDate&&""!==M.workOrderMilestoneDateString&&M.workOrderMilestoneDateString '+cityssm.escapeHTML(null!==(a=s.lotName)&&void 0!==a?a:"")+"
";for(const s of M.workOrderLotOccupancies)for(const r of s.lotOccupancyOccupants)O+=' '+cityssm.escapeHTML(null!==(o=r.occupantName)&&void 0!==o?o:"")+" "+cityssm.escapeHTML(null!==(n=r.occupantFamilyName)&&void 0!==n?n:"")+"
";s.innerHTML='
'+(M.workOrderMilestoneCompletionDate?'':'')+'
'+(0===M.workOrderMilestoneTime?"":M.workOrderMilestoneTimePeriodString+"
")+(M.workOrderMilestoneTypeId?""+cityssm.escapeHTML(M.workOrderMilestoneType)+"
":"")+''+cityssm.escapeHTML(M.workOrderMilestoneDescription)+'
'+cityssm.escapeHTML(null!==(c=M.workOrderNumber)&&void 0!==c?c:"")+'
'+cityssm.escapeHTML(null!==(d=M.workOrderDescription)&&void 0!==d?d:"")+'
'+O+"
",m.append(s)}t.append(m)}(s.workOrderMilestones)})}r.addEventListener("change",()=>{a.closest("fieldset").disabled="date"!==r.value,i()}),e.initializeDatePickers(s),a.addEventListener("change",i),s.addEventListener("submit",i),i()})(); \ No newline at end of file diff --git a/types/recordTypes.d.ts b/types/recordTypes.d.ts index 49f7da06..797136b7 100644 --- a/types/recordTypes.d.ts +++ b/types/recordTypes.d.ts @@ -240,11 +240,13 @@ export interface WorkOrderMilestone extends Record, WorkOrder { workOrderMilestoneDateString?: string; workOrderMilestoneTime?: number; workOrderMilestoneTimeString?: string; + workOrderMilestoneTimePeriodString?: string; workOrderMilestoneDescription?: string; workOrderMilestoneCompletionDate?: number; workOrderMilestoneCompletionDateString?: string; workOrderMilestoneCompletionTime?: number; workOrderMilestoneCompletionTimeString?: string; + workOrderMilestoneCompletionTimePeriodString?: string; workOrderRecordUpdate_timeMillis?: number; } export interface WorkOrder extends Record { diff --git a/types/recordTypes.ts b/types/recordTypes.ts index 0e4958f8..107c0f82 100644 --- a/types/recordTypes.ts +++ b/types/recordTypes.ts @@ -319,6 +319,7 @@ export interface WorkOrderMilestone extends Record, WorkOrder { workOrderMilestoneTime?: number workOrderMilestoneTimeString?: string + workOrderMilestoneTimePeriodString?: string workOrderMilestoneDescription?: string @@ -327,6 +328,7 @@ export interface WorkOrderMilestone extends Record, WorkOrder { workOrderMilestoneCompletionTime?: number workOrderMilestoneCompletionTimeString?: string + workOrderMilestoneCompletionTimePeriodString?: string workOrderRecordUpdate_timeMillis?: number } diff --git a/views/dashboard.ejs b/views/dashboard.ejs index fb0a1a7f..dc81309e 100644 --- a/views/dashboard.ejs +++ b/views/dashboard.ejs @@ -48,7 +48,7 @@ <% } %> <% if (milestone.workOrderMilestoneTime) { %> - <%= milestone.workOrderMilestoneTimeString %>
+ <%= milestone.workOrderMilestoneTimePeriodString %>
<% } %> <% if (milestone.workOrderMilestoneTypeId) { %> <%= milestone.workOrderMilestoneType %>
diff --git a/views/print/pdf/workOrder.ejs b/views/print/pdf/workOrder.ejs index 6385639d..445c5356 100644 --- a/views/print/pdf/workOrder.ejs +++ b/views/print/pdf/workOrder.ejs @@ -46,22 +46,22 @@ - <% for (const occupancy of workOrder.workOrderLotOccupancies) { %> - - <%= occupancy.occupancyType %> - <%= occupancy.lotName %> - <%= occupancy.occupancyStartDateString %> - <%= occupancy.occupancyStartEndString %> - - <% for (const occupant of occupancy.lotOccupancyOccupants) { %> - <%= occupant.lotOccupantType %>: - <%= occupant.occupantName %> - <%= occupant.occupantFamilyName %> -
- <% } %> - - - <% } %> + <% for (const occupancy of workOrder.workOrderLotOccupancies) { %> + + <%= occupancy.occupancyType %> + <%= occupancy.lotName %> + <%= occupancy.occupancyStartDateString %> + <%= occupancy.occupancyStartEndString %> + + <% for (const occupant of occupancy.lotOccupancyOccupants) { %> + <%= occupant.lotOccupantType %>: + <%= occupant.occupantName %> + <%= occupant.occupantFamilyName %> +
+ <% } %> + + + <% } %> <% } %> @@ -71,11 +71,11 @@ - - - - - + + + + + <% for (const milestone of workOrder.workOrderMilestones) { %> @@ -100,7 +100,7 @@ <%= milestone.workOrderMilestoneDateString %> <% } %> <% if (milestone.workOrderMilestoneTime) { %> - <%= milestone.workOrderMilestoneTimeString %> + <%= milestone.workOrderMilestoneTimePeriodString %> <% } %> @@ -116,8 +116,8 @@ const recordCreateDate = new Date(workOrder.recordCreate_timeMillis); const currentDate = new Date(); %> - Work order created <%= dateTimeFunctions.dateToString(recordCreateDate) %> at <%= dateTimeFunctions.dateToTimeString(recordCreateDate) %>. - Printed <%= dateTimeFunctions.dateToString(currentDate) %> at <%= dateTimeFunctions.dateToTimeString(currentDate) %>.
+ Work order created <%= dateTimeFunctions.dateToString(recordCreateDate) %> at <%= dateTimeFunctions.dateToTimePeriodString(recordCreateDate) %>. + Printed <%= dateTimeFunctions.dateToString(currentDate) %> at <%= dateTimeFunctions.dateToTimePeriodString(currentDate) %>.
workOrderId = <%= workOrder.workOrderId %>

diff --git a/views/workOrder-view.ejs b/views/workOrder-view.ejs index ccc7f38d..2e5bda2d 100644 --- a/views/workOrder-view.ejs +++ b/views/workOrder-view.ejs @@ -340,19 +340,19 @@ <% } %>
- <% if (milestone.workOrderMilestoneTypeId) { %> - <%= milestone.workOrderMilestoneType %>
- <% } %> - <% if (milestone.workOrderMilestoneDate === 0) { %> - (No Set Date) - <% } else { %> - <%= milestone.workOrderMilestoneDateString %> - <% } %> - <% if (milestone.workOrderMilestoneTime !== 0) { %> - <%= milestone.workOrderMilestoneTimeString %> - <% } %> -
- <%= milestone.workOrderMilestoneDescription %> + <% if (milestone.workOrderMilestoneTypeId) { %> + <%= milestone.workOrderMilestoneType %>
+ <% } %> + <% if (milestone.workOrderMilestoneDate === 0) { %> + (No Set Date) + <% } else { %> + <%= milestone.workOrderMilestoneDateString %> + <% } %> + <% if (milestone.workOrderMilestoneTime !== 0) { %> + <%= milestone.workOrderMilestoneTimePeriodString %> + <% } %> +
+ <%= milestone.workOrderMilestoneDescription %>
Milestone DescriptionDue Date
Milestone DescriptionDue Date