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