sunrise-cms/public/javascripts/workOrderEdit.min.js

1 line
35 KiB
JavaScript

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{var e,t;const o=exports.los,n=document.querySelector("#workOrderEdit--workOrderId").value,r=""===n,s=document.querySelector("#form--workOrderEdit");function a(){var e;o.setUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.remove("is-light")}function l(){var e;o.clearUnsavedChanges(),null===(e=document.querySelector("button[type='submit'][form='form--workOrderEdit']"))||void 0===e||e.classList.add("is-light")}o.initializeDatePickers(null===(S=s.querySelector("#workOrderEdit--workOrderOpenDateString"))||void 0===S?void 0:S.closest(".field")),o.initializeUnlockFieldButtons(s),s.addEventListener("submit",e=>{e.preventDefault(),cityssm.postJSON(`${o.urlPrefix}/workOrders/${r?"doCreateWorkOrder":"doUpdateWorkOrder"}`,e.currentTarget,e=>{var t;const n=e;n.success?(l(),r?window.location.href=o.getWorkOrderURL(n.workOrderId,!0):bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"})):bulmaJS.alert({title:"Error Updating Work Order",message:null!==(t=n.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})});const i=s.querySelectorAll("input, select, textarea");for(const e of i)e.addEventListener("change",a);function d(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doCloseWorkOrder`,{workOrderId:n},e=>{var t;const r=e;r.success?(l(),window.location.href=o.getWorkOrderURL(n)):bulmaJS.alert({title:"Error Closing Work Order",message:null!==(t=r.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}function c(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doDeleteWorkOrder`,{workOrderId:n},e=>{var t;const n=e;n.success?(l(),window.location.href=`${o.urlPrefix}/workOrders`):bulmaJS.alert({title:"Error Deleting Work Order",message:null!==(t=n.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}let u;if(null===(m=document.querySelector("#button--closeWorkOrder"))||void 0===m||m.addEventListener("click",()=>{u.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:o.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:o.hasUnsavedChanges()?"warning":"info",okButton:{text:"Yes, Close Work Order",callbackFunction:d}})}),null===(e=document.querySelector("#button--deleteWorkOrder"))||void 0===e||e.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:c}})}),!r){var m;Object.defineProperty(exports,"__esModule",{value:!0});let e=exports.workOrderLots;delete exports.workOrderLots;let t=exports.workOrderLotOccupancies;function p(e){const r=e.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:`Delete ${o.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${o.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doDeleteWorkOrderLotOccupancy`,{workOrderId:n,lotOccupancyId:r},e=>{var o;const n=e;n.success?(t=n.workOrderLotOccupancies,g()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=n.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function v(t,r){cityssm.postJSON(`${o.urlPrefix}/workOrders/doAddWorkOrderLot`,{workOrderId:n,lotId:t},t=>{var n;const s=t;s.success?(e=s.workOrderLots,g()):bulmaJS.alert({title:`Error Adding ${o.escapedAliases.Lot}`,message:null!==(n=s.errorMessage)&&void 0!==n?n:"",contextualColorName:"danger"}),void 0!==r&&r(s.success)})}function y(e){var t;v(null!==(t=e.currentTarget.dataset.lotId)&&void 0!==t?t:"")}function O(t){var r;const s=Number.parseInt(null!==(r=t.currentTarget.closest(".container--lot").dataset.lotId)&&void 0!==r?r:"",10),a=e.find(e=>e.lotId===s);let l;function i(t){t.preventDefault(),cityssm.postJSON(`${o.urlPrefix}/workOrders/doUpdateLotStatus`,t.currentTarget,t=>{var o;const n=t;n.success?(e=n.workOrderLots,g(),l()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=n.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("lot-editLotStatus",{onshow(e){var t,r,l;o.populateAliases(e),e.querySelector("#lotStatusEdit--lotId").value=s.toString(),e.querySelector("#lotStatusEdit--lotName").value=null!==(t=a.lotName)&&void 0!==t?t:"";const i=e.querySelector("#lotStatusEdit--lotStatusId");let d=!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&&(d=!0),i.append(t)}if(!d&&a.lotStatusId){const e=document.createElement("option");e.value=a.lotStatusId.toString(),e.textContent=null!==(r=a.lotStatus)&&void 0!==r?r:"",i.append(e)}a.lotStatusId&&(i.value=a.lotStatusId.toString()),null===(l=e.querySelector("form"))||void 0===l||l.insertAdjacentHTML("beforeend",`<input name="workOrderId" type="hidden" value="${n}" />`)},onshown(e,t){var o;l=t,bulmaJS.toggleHtmlClipped(),null===(o=e.querySelector("form"))||void 0===o||o.addEventListener("submit",i)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function h(t){const r=t.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:`Delete ${o.escapedAliases.Occupancy} Relationship`,message:`Are you sure you want to remove the relationship to this ${o.escapedAliases.occupancy} record from this work order? Note that the record will remain.`,contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:function(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doDeleteWorkOrderLot`,{workOrderId:n,lotId:r},t=>{var o;const n=t;n.success?(e=n.workOrderLots,g()):bulmaJS.alert({title:"Error Deleting Relationship",message:null!==(o=n.errorMessage)&&void 0!==o?o:"",contextualColorName:"danger"})})}}})}function g(){!function(){var n,r,s,a,l,i,d,c,u,m;const v=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=t.length.toString(),0===t.length)return void(v.innerHTML=`<div class="message is-info">\n <p class="message-body">There are no ${o.escapedAliases.occupancies} associated with this work order.</p>\n </div>`);v.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable">\n <thead><tr>\n <th class="has-width-1"></th>\n <th>${o.escapedAliases.Occupancy} Type</th>\n <th>${o.escapedAliases.Lot}</th>\n <th>${o.escapedAliases.OccupancyStartDate}</th>\n <th>End Date</th>\n <th>${o.escapedAliases.Occupants}</th>\n <th class="has-width-1"></th>\n </tr></thead>\n <tbody></tbody>\n </table>`;const O=cityssm.dateToString(new Date);for(const h of t){const t=document.createElement("tr");t.className="container--lotOccupancy",t.dataset.lotOccupancyId=h.lotOccupancyId.toString();const g=!(h.occupancyEndDate&&h.occupancyEndDateString<O),k=h.lotId&&e.some(e=>h.lotId===e.lotId);t.innerHTML=`<td class="is-width-1 has-text-centered">\n ${g?`<i class="fas fa-play" title="Current ${o.escapedAliases.Occupancy}"></i>`:`<i class="fas fa-stop" title="Previous ${o.escapedAliases.Occupancy}"></i>`}\n </td><td>\n <a class="has-text-weight-bold" href="${o.getLotOccupancyURL(h.lotOccupancyId)}">\n ${cityssm.escapeHTML(null!==(n=h.occupancyType)&&void 0!==n?n:"")}\n </a><br />\n <span class="is-size-7">#${h.lotOccupancyId}</span>\n </td>`,h.lotId?t.insertAdjacentHTML("beforeend",`<td>\n ${cityssm.escapeHTML(null!==(r=h.lotName)&&void 0!==r?r:"")}\n ${k?"":` <button class="button is-small is-light is-success button--addLot"\n data-lot-id="${h.lotId.toString()}"\n data-tooltip="Add ${o.escapedAliases.Lot}"\n aria-label="Add ${o.escapedAliases.Lot}" type="button">\n <i class="fas fa-plus" aria-hidden="true"></i>\n </button>`}\n </td>`):t.insertAdjacentHTML("beforeend",`<td><span class="has-text-grey">(No ${o.escapedAliases.Lot})</span></td>`);let w="";for(const e of h.lotOccupancyOccupants)w+=`<li class="has-tooltip-left"\n data-tooltip="${cityssm.escapeHTML(null!==(s=e.lotOccupantType)&&void 0!==s?s:"")}">\n <span class="fa-li">\n <i class="fas fa-fw fa-${cityssm.escapeHTML(""===(null!==(a=e.fontAwesomeIconClass)&&void 0!==a?a:"")?"user":null!==(l=e.fontAwesomeIconClass)&&void 0!==l?l:"")}" aria-label="${o.escapedAliases.Occupant}"></i>\n </span>\n ${cityssm.escapeHTML(null!==(i=e.occupantName)&&void 0!==i?i:"")}\n ${cityssm.escapeHTML(null!==(d=e.occupantFamilyName)&&void 0!==d?d:"")}\n </li>`;t.insertAdjacentHTML("beforeend",`<td>\n ${h.occupancyStartDateString}\n </td><td>\n ${h.occupancyEndDate?h.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>'}\n </td><td>\n ${0===h.lotOccupancyOccupants.length?`<span class="has-text-grey">(No ${o.escapedAliases.Occupants})</span>`:`<ul class="fa-ul ml-5">${w}</ul>`}\n </td><td>\n <button class="button is-small is-light is-danger button--deleteLotOccupancy" data-tooltip="Delete Relationship" type="button">\n <i class="fas fa-trash" aria-hidden="true"></i>\n </button>\n </td>`),null===(c=t.querySelector(".button--addLot"))||void 0===c||c.addEventListener("click",y),null===(u=t.querySelector(".button--deleteLotOccupancy"))||void 0===u||u.addEventListener("click",p),null===(m=v.querySelector("tbody"))||void 0===m||m.append(t)}}(),function(){var t,n,r,s,a,l,i;const d=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=e.length.toString(),0!==e.length){d.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable">\n <thead><tr>\n <th>${o.escapedAliases.Lot}</th>\n <th>${o.escapedAliases.Map}</th>\n <th>${o.escapedAliases.Lot} Type</th>\n <th>Status</th>\n <th class="has-width-1"></th>\n </tr></thead>\n <tbody></tbody>\n </table>`;for(const c of e){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=c.lotId.toString(),e.innerHTML=`<td>\n <a class="has-text-weight-bold" href="${o.getLotURL(c.lotId)}">\n ${cityssm.escapeHTML(null!==(t=c.lotName)&&void 0!==t?t:"")}\n </a>\n </td><td>\n ${cityssm.escapeHTML(null!==(n=c.mapName)&&void 0!==n?n:"")}\n </td><td>\n ${cityssm.escapeHTML(null!==(r=c.lotType)&&void 0!==r?r:"")}\n </td><td>\n ${c.lotStatusId?cityssm.escapeHTML(null!==(s=c.lotStatus)&&void 0!==s?s:""):'<span class="has-text-grey">(No Status)</span>'}\n </td><td class="is-nowrap">\n <button class="button is-small is-light is-info button--editLotStatus" data-tooltip="Update Status" type="button">\n <i class="fas fa-pencil-alt" aria-hidden="true"></i>\n </button>\n <button class="button is-small is-light is-danger button--deleteLot" data-tooltip="Delete Relationship" type="button">\n <i class="fas fa-trash" aria-hidden="true"></i>\n </button>\n </td>`,null===(a=e.querySelector(".button--editLotStatus"))||void 0===a||a.addEventListener("click",O),null===(l=e.querySelector(".button--deleteLot"))||void 0===l||l.addEventListener("click",h),null===(i=d.querySelector("tbody"))||void 0===i||i.append(e)}}else d.innerHTML=`<div class="message is-info">\n <p class="message-body">There are no ${o.escapedAliases.lots} associated with this work order.</p>\n </div>`}()}function k(e){var r;const s=e.currentTarget.closest("tr");!function(e,r){cityssm.postJSON(`${o.urlPrefix}/workOrders/doAddWorkOrderLotOccupancy`,{workOrderId:n,lotOccupancyId:e},e=>{var n;const s=e;s.success?(t=s.workOrderLotOccupancies,g()):bulmaJS.alert({title:`Error Adding ${o.escapedAliases.Occupancy}`,message:null!==(n=s.errorMessage)&&void 0!==n?n:"",contextualColorName:"danger"}),void 0!==r&&r(s.success)})}(null!==(r=s.dataset.lotOccupancyId)&&void 0!==r?r:"",e=>{e&&s.remove()})}function w(e){var t;const o=e.currentTarget.closest("tr");v(null!==(t=o.dataset.lotId)&&void 0!==t?t:"",e=>{e&&o.remove()})}delete exports.workOrderLotOccupancies,g(),null===(S=document.querySelector("#button--addLotOccupancy"))||void 0===S||S.addEventListener("click",()=>{let e,t;function r(n){n&&n.preventDefault(),t.innerHTML=o.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(`${o.urlPrefix}/lotOccupancies/doSearchLotOccupancies`,e,e=>{var n,r,s,a;const l=e;if(0!==l.lotOccupancies.length){t.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable">\n <thead><tr>\n <th class="has-width-1"></th>\n <th>${o.escapedAliases.Occupancy} Type</th>\n <th>${o.escapedAliases.Lot}</th>\n <th>${o.escapedAliases.OccupancyStartDate}</th>\n <th>End Date</th>\n <th>${o.escapedAliases.Occupants}</th>\n </tr></thead>\n <tbody></tbody>\n </table>`;for(const e of l.lotOccupancies){const l=document.createElement("tr");l.className="container--lotOccupancy",l.dataset.lotOccupancyId=e.lotOccupancyId.toString(),l.innerHTML=`<td class="has-text-centered">\n <button class="button is-small is-success button--addLotOccupancy" data-tooltip="Add" type="button" aria-label="Add">\n <i class="fas fa-plus" aria-hidden="true"></i>\n </button>\n </td>\n <td class="has-text-weight-bold">\n ${cityssm.escapeHTML(null!==(n=e.occupancyType)&&void 0!==n?n:"")}\n </td>`,e.lotId?l.insertAdjacentHTML("beforeend",`<td>${cityssm.escapeHTML(null!==(r=e.lotName)&&void 0!==r?r:"")}</td>`):l.insertAdjacentHTML("beforeend",`<td><span class="has-text-grey">(No ${o.escapedAliases.Lot})</span></td>`),l.insertAdjacentHTML("beforeend",`<td>\n ${e.occupancyStartDateString}\n </td><td>\n ${e.occupancyEndDate?e.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>'}\n </td><td>\n ${0===e.lotOccupancyOccupants.length?`<span class="has-text-grey">\n (No ${cityssm.escapeHTML(o.escapedAliases.Occupants)})\n </span>`:cityssm.escapeHTML(`${e.lotOccupancyOccupants[0].occupantName}\n ${e.lotOccupancyOccupants[0].occupantFamilyName}`)+(e.lotOccupancyOccupants.length>1?` plus\n ${(e.lotOccupancyOccupants.length-1).toString()}`:"")}</td>`),null===(s=l.querySelector(".button--addLotOccupancy"))||void 0===s||s.addEventListener("click",k),null===(a=t.querySelector("tbody"))||void 0===a||a.append(l)}}else t.innerHTML='<div class="message is-info">\n <p class="message-body">There are no records that meet the search criteria.</p>\n </div>'})}cityssm.openHtmlModal("workOrder-addLotOccupancy",{onshow(s){o.populateAliases(s),e=s.querySelector("form"),t=s.querySelector("#resultsContainer--lotOccupancyAdd"),s.querySelector("#lotOccupancySearch--notWorkOrderId").value=n,s.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,r()},onshown(t){bulmaJS.toggleHtmlClipped();const o=t.querySelector("#lotOccupancySearch--occupantName");o.addEventListener("change",r),o.focus(),t.querySelector("#lotOccupancySearch--lotName").addEventListener("change",r),e.addEventListener("submit",r)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLotOccupancy").focus()}})}),null===(m=document.querySelector("#button--addLot"))||void 0===m||m.addEventListener("click",()=>{let e,t;function r(n){n&&n.preventDefault(),t.innerHTML=o.getLoadingParagraphHTML("Searching..."),cityssm.postJSON(`${o.urlPrefix}/lots/doSearchLots`,e,e=>{var n,r,s,a,l,i;const d=e;if(0!==d.lots.length){t.innerHTML=`<table class="table is-fullwidth is-striped is-hoverable">\n <thead><tr>\n <th class="has-width-1"></th>\n <th>${o.escapedAliases.Lot}</th>\n <th>${o.escapedAliases.Map}</th>\n <th>${o.escapedAliases.Lot} Type</th>\n <th>Status</th>\n </tr></thead>\n <tbody></tbody>\n </table>`;for(const e of d.lots){const o=document.createElement("tr");o.className="container--lot",o.dataset.lotId=e.lotId.toString(),o.innerHTML=`<td class="has-text-centered">\n <button class="button is-small is-success button--addLot" data-tooltip="Add" type="button" aria-label="Add">\n <i class="fas fa-plus" aria-hidden="true"></i>\n </button>\n </td><td class="has-text-weight-bold">\n ${cityssm.escapeHTML(null!==(n=e.lotName)&&void 0!==n?n:"")}\n </td><td>\n ${cityssm.escapeHTML(null!==(r=e.mapName)&&void 0!==r?r:"")}\n </td><td>\n ${cityssm.escapeHTML(null!==(s=e.lotType)&&void 0!==s?s:"")}\n </td><td>\n ${cityssm.escapeHTML(null!==(a=e.lotStatus)&&void 0!==a?a:"")}\n </td>`,null===(l=o.querySelector(".button--addLot"))||void 0===l||l.addEventListener("click",w),null===(i=t.querySelector("tbody"))||void 0===i||i.append(o)}}else t.innerHTML='<div class="message is-info">\n <p class="message-body">There are no records that meet the search criteria.</p>\n </div>'})}cityssm.openHtmlModal("workOrder-addLot",{onshow(s){o.populateAliases(s),e=s.querySelector("form"),t=s.querySelector("#resultsContainer--lotAdd"),s.querySelector("#lotSearch--notWorkOrderId").value=n;const a=s.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)}r()},onshown(t){var o;bulmaJS.toggleHtmlClipped();const n=t.querySelector("#lotSearch--lotName");n.addEventListener("change",r),n.focus(),null===(o=t.querySelector("#lotSearch--lotStatusId"))||void 0===o||o.addEventListener("change",r),e.addEventListener("submit",r)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addLot").focus()}})})}var S;Object.defineProperty(exports,"__esModule",{value:!0});let f=exports.workOrderComments;function b(e){var t,r;const s=Number.parseInt(null!==(r=null===(t=e.currentTarget.closest("tr"))||void 0===t?void 0:t.dataset.workOrderCommentId)&&void 0!==r?r:"",10),a=f.find(e=>e.workOrderCommentId===s);let l,i;function d(e){e.preventDefault(),cityssm.postJSON(`${o.urlPrefix}/workOrders/doUpdateWorkOrderComment`,l,e=>{var t;const o=e;o.success?(f=o.workOrderComments,i(),L()):bulmaJS.alert({title:"Error Updating Comment",message:null!==(t=o.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}cityssm.openHtmlModal("workOrder-editComment",{onshow(e){var t,o,r,l;e.querySelector("#workOrderCommentEdit--workOrderId").value=n,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=s.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=null!==(t=a.workOrderComment)&&void 0!==t?t:"";const i=e.querySelector("#workOrderCommentEdit--workOrderCommentDateString");i.value=null!==(o=a.workOrderCommentDateString)&&void 0!==o?o:"";const d=cityssm.dateToString(new Date);i.max=a.workOrderCommentDateString<=d?d:null!==(r=a.workOrderCommentDateString)&&void 0!==r?r:"",e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=null!==(l=a.workOrderCommentTimeString)&&void 0!==l?l:""},onshown(e,t){bulmaJS.toggleHtmlClipped(),o.initializeDatePickers(e),e.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(l=e.querySelector("form")).addEventListener("submit",d),i=t},onremoved(){bulmaJS.toggleHtmlClipped()}})}function M(e){var t,r;const s=Number.parseInt(null!==(r=null===(t=e.currentTarget.closest("tr"))||void 0===t?void 0:t.dataset.workOrderCommentId)&&void 0!==r?r:"",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(`${o.urlPrefix}/workOrders/doDeleteWorkOrderComment`,{workOrderId:n,workOrderCommentId:s},e=>{var t;const o=e;o.success?(f=o.workOrderComments,L()):bulmaJS.alert({title:"Error Removing Comment",message:null!==(t=o.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})})}},contextualColorName:"warning"})}function L(){var e,t,o,n,r,s;const a=document.querySelector("#container--workOrderComments");if(0===f.length)return void(a.innerHTML='<div class="message is-info">\n <p class="message-body">There are no comments to display.</p>\n </div>');const l=document.createElement("table");l.className="table is-fullwidth is-striped is-hoverable",l.innerHTML='<thead><tr>\n <th>Commentor</th>\n <th>Comment Date</th>\n <th>Comment</th>\n <th class="is-hidden-print"><span class="is-sr-only">Options</span></th></tr></thead><tbody></tbody>';for(const a of f){const i=document.createElement("tr");i.dataset.workOrderCommentId=null===(e=a.workOrderCommentId)||void 0===e?void 0:e.toString(),i.innerHTML=`<td>\n ${cityssm.escapeHTML(null!==(t=a.recordCreate_userName)&&void 0!==t?t:"")}\n </td><td>\n ${a.workOrderCommentDateString}\n ${0===a.workOrderCommentTime?"":a.workOrderCommentTimePeriodString}\n </td><td>\n ${cityssm.escapeHTML(null!==(o=a.workOrderComment)&&void 0!==o?o:"")}\n </td><td class="is-hidden-print">\n <div class="buttons are-small is-justify-content-end">\n <button class="button is-primary button--edit" type="button">\n <span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>\n <span>Edit</span>\n </button>\n <button class="button is-light is-danger button--delete" data-tooltip="Delete Comment" type="button" aria-label="Delete">\n <i class="fas fa-trash" aria-hidden="true"></i>\n </button>\n </div>\n </td>`,null===(n=i.querySelector(".button--edit"))||void 0===n||n.addEventListener("click",b),null===(r=i.querySelector(".button--delete"))||void 0===r||r.addEventListener("click",M),null===(s=l.querySelector("tbody"))||void 0===s||s.append(i)}a.innerHTML="",a.append(l)}function T(e){for(const t of e.querySelectorAll(".panel-block"))t.remove()}function C(e,t){T(t),t.insertAdjacentHTML("beforeend",`<div class="panel-block is-block">\n ${o.getLoadingParagraphHTML("Loading conflicting milestones...")}\n </div>`),cityssm.postJSON(`${o.urlPrefix}/workOrders/doGetWorkOrderMilestones`,{workOrderMilestoneDateFilter:"date",workOrderMilestoneDateString:e},o=>{var r,s,a,l;const i=o.workOrderMilestones.filter(e=>e.workOrderId.toString()!==n);T(t);for(const e of i)t.insertAdjacentHTML("beforeend",`<div class="panel-block is-block">\n <div class="columns">\n <div class="column is-5">\n ${cityssm.escapeHTML(0===e.workOrderMilestoneTime?"No Time":null!==(r=e.workOrderMilestoneTimePeriodString)&&void 0!==r?r:"")}<br />\n <strong>${cityssm.escapeHTML(null!==(s=e.workOrderMilestoneType)&&void 0!==s?s:"")}</strong>\n </div>\n <div class="column">\n ${cityssm.escapeHTML(null!==(a=e.workOrderNumber)&&void 0!==a?a:"")}<br />\n <span class="is-size-7">\n ${cityssm.escapeHTML(null!==(l=e.workOrderDescription)&&void 0!==l?l:"")}\n </span>\n </div>\n </div>\n </div>`);0===i.length&&t.insertAdjacentHTML("beforeend",`<div class="panel-block is-block">\n <div class="message is-info">\n <p class="message-body">\n There are no milestones on other work orders scheduled for\n ${cityssm.escapeHTML(e)}.\n </p>\n </div>\n </div>`)})}function $(e){var t;const o=e;o.success?(u=o.workOrderMilestones,q()):bulmaJS.alert({title:"Error Reopening Milestone",message:null!==(t=o.errorMessage)&&void 0!==t?t:"",contextualColorName:"danger"})}function I(e){var t;e.preventDefault();const r=cityssm.dateToString(new Date),s=Number.parseInt(null!==(t=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId)&&void 0!==t?t:"",10),a=u.find(e=>e.workOrderMilestoneId===s);bulmaJS.confirm({title:"Complete Milestone",message:`Are you sure you want to complete this milestone?\n ${void 0!==a.workOrderMilestoneDateString&&""!==a.workOrderMilestoneDateString&&a.workOrderMilestoneDateString>r?"<br /><strong>Note that this milestone is expected to be completed in the future.</strong>":""}`,messageIsHtml:!0,contextualColorName:"warning",okButton:{text:"Yes, Complete Milestone",callbackFunction:function(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doCompleteWorkOrderMilestone`,{workOrderId:n,workOrderMilestoneId:s},$)}}})}function x(e){e.preventDefault();const t=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(`${o.urlPrefix}/workOrders/doReopenWorkOrderMilestone`,{workOrderId:n,workOrderMilestoneId:t},$)}}})}function E(e){e.preventDefault();const t=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(`${o.urlPrefix}/workOrders/doDeleteWorkOrderMilestone`,{workOrderMilestoneId:t,workOrderId:n},$)}}})}function D(e){var t;e.preventDefault();const r=Number.parseInt(null!==(t=e.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId)&&void 0!==t?t:"",10),s=u.find(e=>e.workOrderMilestoneId===r);let a,l;function i(e){e.preventDefault(),cityssm.postJSON(`${o.urlPrefix}/workOrders/doUpdateWorkOrderMilestone`,e.currentTarget,e=>{const t=e;$(t),t.success&&a()})}cityssm.openHtmlModal("workOrder-editMilestone",{onshow(e){var t,o,r,a,i,d;e.querySelector("#milestoneEdit--workOrderId").value=n,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=null!==(o=null===(t=s.workOrderMilestoneId)||void 0===t?void 0:t.toString())&&void 0!==o?o:"";const c=e.querySelector("#milestoneEdit--workOrderMilestoneTypeId");let u=!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,u=!0),c.append(t)}if(!u&&s.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=s.workOrderMilestoneTypeId.toString(),e.textContent=null!==(r=s.workOrderMilestoneType)&&void 0!==r?r:"",e.selected=!0,c.append(e)}(l=e.querySelector("#milestoneEdit--workOrderMilestoneDateString")).value=null!==(a=s.workOrderMilestoneDateString)&&void 0!==a?a:"",s.workOrderMilestoneTime&&(e.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value=null!==(i=s.workOrderMilestoneTimeString)&&void 0!==i?i:""),e.querySelector("#milestoneEdit--workOrderMilestoneDescription").value=null!==(d=s.workOrderMilestoneDescription)&&void 0!==d?d:""},onshown(e,t){var n;a=t,bulmaJS.toggleHtmlClipped(),o.initializeDatePickers(e),null===(n=e.querySelector("form"))||void 0===n||n.addEventListener("submit",i);const r=document.querySelector("#milestoneEdit--conflictingMilestonesPanel");l.addEventListener("change",()=>{C(l.value,r)}),C(l.value,r)},onremoved(){bulmaJS.toggleHtmlClipped()}})}function q(){var e,t,o,n,r,s,a;const l=document.querySelector("#panel--milestones"),i=l.querySelectorAll(".panel-block");for(const e of i)e.remove();for(const i of u){const d=document.createElement("div");d.className="panel-block is-block container--milestone",d.dataset.workOrderMilestoneId=null===(e=i.workOrderMilestoneId)||void 0===e?void 0:e.toString(),d.innerHTML=`<div class="columns is-mobile">\n <div class="column is-narrow">\n ${i.workOrderMilestoneCompletionDate?`<span class="button is-static"\n data-tooltip="Completed ${i.workOrderMilestoneCompletionDateString}"\n aria-label="Completed ${i.workOrderMilestoneCompletionDateString}">\n <span class="icon is-small"><i class="fas fa-check" aria-hidden="true"></i></span>\n </span>`:'<button class="button button--completeMilestone" data-tooltip="Incomplete" type="button" aria-label="Incomplete">\n <span class="icon is-small"><i class="far fa-square" aria-hidden="true"></i></span>\n </button>'}\n </div><div class="column">\n ${i.workOrderMilestoneTypeId?`<strong>${cityssm.escapeHTML(null!==(t=i.workOrderMilestoneType)&&void 0!==t?t:"")}</strong><br />`:""}\n ${0===i.workOrderMilestoneDate?'<span class="has-text-grey">(No Set Date)</span>':i.workOrderMilestoneDateString}\n ${i.workOrderMilestoneTime?` ${i.workOrderMilestoneTimePeriodString}`:""}<br />\n <span class="is-size-7">\n ${cityssm.escapeHTML(null!==(o=i.workOrderMilestoneDescription)&&void 0!==o?o:"")}\n </span>\n </div><div class="column is-narrow">\n <div class="dropdown is-right">\n <div class="dropdown-trigger">\n <button class="button is-small" data-tooltip="Options" type="button" aria-label="Options">\n <i class="fas fa-ellipsis-v" aria-hidden="true"></i>\n </button>\n </div>\n <div class="dropdown-menu">\n <div class="dropdown-content">\n ${i.workOrderMilestoneCompletionDate?'<a class="dropdown-item button--reopenMilestone" href="#">\n <span class="icon is-small"><i class="fas fa-times" aria-hidden="true"></i></span>\n <span>Reopen Milestone</span>\n </a>':'<a class="dropdown-item button--editMilestone" href="#">\n <span class="icon is-small"><i class="fas fa-pencil-alt" aria-hidden="true"></i></span>\n <span>Edit Milestone</span>\n </a>'}\n <hr class="dropdown-divider" />\n <a class="dropdown-item button--deleteMilestone" href="#">\n <span class="icon is-small"><i class="fas fa-trash has-text-danger" aria-hidden="true"></i></span>\n <span>Delete Milestone</span>\n </a>\n </div>\n </div>\n </div>\n </div></div>`,null===(n=d.querySelector(".button--reopenMilestone"))||void 0===n||n.addEventListener("click",x),null===(r=d.querySelector(".button--editMilestone"))||void 0===r||r.addEventListener("click",D),null===(s=d.querySelector(".button--completeMilestone"))||void 0===s||s.addEventListener("click",I),null===(a=d.querySelector(".button--deleteMilestone"))||void 0===a||a.addEventListener("click",E),l.append(d)}bulmaJS.init(l)}delete exports.workOrderComments,null===(S=document.querySelector("#workOrderComments--add"))||void 0===S||S.addEventListener("click",function(){let e;function t(t){t.preventDefault(),cityssm.postJSON(`${o.urlPrefix}/workOrders/doAddWorkOrderComment`,t.currentTarget,t=>{const o=t;o.success&&(f=o.workOrderComments,L(),e())})}cityssm.openHtmlModal("workOrder-addComment",{onshow(e){var r;o.populateAliases(e),e.querySelector("#workOrderCommentAdd--workOrderId").value=n,null===(r=e.querySelector("form"))||void 0===r||r.addEventListener("submit",t)},onshown(t,o){bulmaJS.toggleHtmlClipped(),e=o,t.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})}),r||L(),r||(u=exports.workOrderMilestones,delete exports.workOrderMilestones,q(),null===(t=document.querySelector("#button--addMilestone"))||void 0===t||t.addEventListener("click",()=>{let e,t,r;function s(n){n&&n.preventDefault();const s=cityssm.dateToString(new Date);function a(){cityssm.postJSON(`${o.urlPrefix}/workOrders/doAddWorkOrderMilestone`,e,e=>{const t=e;$(t),t.success&&r()})}const l=t.value;""!==l&&l<s?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:a}}):a()}cityssm.openHtmlModal("workOrder-addMilestone",{onshow(e){e.querySelector("#milestoneAdd--workOrderId").value=n;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)}(t=e.querySelector("#milestoneAdd--workOrderMilestoneDateString")).valueAsDate=new Date},onshown(n,a){r=a,o.initializeDatePickers(n),bulmaJS.toggleHtmlClipped(),n.querySelector("#milestoneAdd--workOrderMilestoneTypeId").focus(),(e=n.querySelector("form")).addEventListener("submit",s);const l=document.querySelector("#milestoneAdd--conflictingMilestonesPanel");t.addEventListener("change",()=>{C(t.value,l)}),C(t.value,l)},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#button--addMilestone").focus()}})}))})();