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

1 line
24 KiB
JavaScript

"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.los,t=document.querySelector("main").dataset.urlPrefix,o=document.querySelector("#workOrderEdit--workOrderId").value,r=""===o,s=document.querySelector("#form--workOrderEdit");let a;if(e.initializeDatePickers(s.querySelector("#workOrderEdit--workOrderOpenDateString").closest(".field")),e.initializeUnlockFieldButtons(s),s.addEventListener("submit",e=>{e.preventDefault(),cityssm.postJSON(t+"/workOrders/"+(r?"doCreateWorkOrder":"doUpdateWorkOrder"),e.currentTarget,e=>{e.success?r?window.location.href=t+"/workOrders/"+e.workOrderId+"/edit":bulmaJS.alert({message:"Work Order Updated Successfully",contextualColorName:"success"}):bulmaJS.alert({title:"Error Updating Work Order",message:e.errorMessage,contextualColorName:"danger"})})}),!r){const e=()=>{cityssm.postJSON(t+"/workOrders/doCloseWorkOrder",{workOrderId:o},e=>{e.success?window.location.href=t+"/workOrders/"+o:bulmaJS.alert({title:"Error Closing Work Order",message:e.errorMessage,contextualColorName:"danger"})})};document.querySelector("#button--closeWorkOrder").addEventListener("click",()=>{a.some(e=>!e.workOrderMilestoneCompletionDate)?bulmaJS.confirm({title:"Close Work Order with Outstanding Milestones",message:"Are you sure you want to close this work order with outstanding milestones?",contextualColorName:"danger",okButton:{text:"Yes, Close Work Order",callbackFunction:e}}):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:e}})});const r=()=>{cityssm.postJSON(t+"/workOrders/doDeleteWorkOrder",{workOrderId:o},e=>{e.success?window.location.href=t+"/workOrders":bulmaJS.alert({title:"Error Deleting Work Order",message:e.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(!r){let r=exports.workOrderLots;delete exports.workOrderLots;let s=exports.workOrderLotOccupancies;delete exports.workOrderLotOccupancies;const a=e=>{const r=e.currentTarget.closest(".container--lotOccupancy").dataset.lotOccupancyId;bulmaJS.confirm({title:"Delete "+exports.aliases.lot+" "+exports.aliases.occupancy+" Relationship",message:"Are you sure you want to remove the relationship to this "+exports.aliases.lot.toLowerCase()+" "+exports.aliases.occupancy.toLowerCase()+" record from this work order? Note that the record will remain.",contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:()=>{cityssm.postJSON(t+"/workOrders/doDeleteWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:r},e=>{e.success?(s=e.workOrderLotOccupancies,m()):bulmaJS.alert({title:"Error Deleting Relationship",message:e.errorMessage,contextualColorName:"danger"})})}}})},n=(e,s)=>{cityssm.postJSON(t+"/workOrders/doAddWorkOrderLot",{workOrderId:o,lotId:e},e=>{e.success?(r=e.workOrderLots,m()):bulmaJS.alert({title:"Error Adding "+exports.aliases.lot,message:e.errorMessage,contextualColorName:"danger"}),s&&s(e.success)})},l=(e,r)=>{cityssm.postJSON(t+"/workOrders/doAddWorkOrderLotOccupancy",{workOrderId:o,lotOccupancyId:e},e=>{e.success?(s=e.workOrderLotOccupancies,m()):bulmaJS.alert({title:"Error Adding "+exports.aliases.occupancy,message:e.errorMessage,contextualColorName:"danger"}),r&&r(e.success)})},c=e=>{const t=e.currentTarget.dataset.lotId;n(t)},i=()=>{const e=document.querySelector("#container--lotOccupancies");if(document.querySelector(".tabs a[href='#relatedTab--lotOccupancies'] .tag").textContent=s.length.toString(),0===s.length)return void(e.innerHTML='<div class="message is-info"><p class="message-body">There are no '+exports.aliases.occupancies.toLowerCase()+" associated with this work order.</p></div>");e.innerHTML='<table class="table is-fullwidth is-striped is-hoverable"><thead><tr><th class="has-width-1"></th><th>'+exports.aliases.occupancy+" Type</th><th>"+exports.aliases.lot+"</th><th>Start Date</th><th>End Date</th><th>"+exports.aliases.occupants+'</th><th class="has-width-1"></th></tr></thead><tbody></tbody></table>';const o=cityssm.dateToString(new Date);for(const n of s){const s=document.createElement("tr");s.className="container--lotOccupancy",s.dataset.lotOccupancyId=n.lotOccupancyId.toString();const l=!(n.occupancyEndDate&&n.occupancyEndDateString<o),i=n.lotId&&r.some(e=>n.lotId===e.lotId);s.innerHTML='<td class="has-text-centered">'+(l?'<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(t)+"/lotOccupancies/"+n.lotOccupancyId+'">'+cityssm.escapeHTML(n.occupancyType)+"</a></td>",n.lotId?s.insertAdjacentHTML("beforeend","<td>"+cityssm.escapeHTML(n.lotName)+(i?"":' <button class="button is-small is-light is-success button--addLot" data-lot-id="'+n.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>"):s.insertAdjacentHTML("beforeend",'<td><span class="has-text-grey">(No '+exports.aliases.lot+")</span></td>"),s.insertAdjacentHTML("beforeend","<td>"+n.occupancyStartDateString+"</td><td>"+(n.occupancyEndDate?n.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>')+"</td><td>"+(0===n.lotOccupancyOccupants.length?'<span class="has-text-grey">(No '+cityssm.escapeHTML(exports.aliases.occupants)+")</span>":cityssm.escapeHTML(n.lotOccupancyOccupants[0].occupantName)+(n.lotOccupancyOccupants.length>1?" plus "+(n.lotOccupancyOccupants.length-1):""))+'</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>'),n.lotId&&!i&&s.querySelector(".button--addLot").addEventListener("click",c),s.querySelector(".button--deleteLotOccupancy").addEventListener("click",a),e.querySelector("tbody").append(s)}},d=e=>{const s=e.currentTarget.closest(".container--lot").dataset.lotId;bulmaJS.confirm({title:"Delete "+exports.aliases.lot+" "+exports.aliases.occupancy+" Relationship",message:"Are you sure you want to remove the relationship to this "+exports.aliases.lot.toLowerCase()+" "+exports.aliases.occupancy.toLowerCase()+" record from this work order? Note that the record will remain.",contextualColorName:"warning",okButton:{text:"Yes, Delete Relationship",callbackFunction:()=>{cityssm.postJSON(t+"/workOrders/doDeleteWorkOrderLot",{workOrderId:o,lotId:s},e=>{e.success?(r=e.workOrderLots,m()):bulmaJS.alert({title:"Error Deleting Relationship",message:e.errorMessage,contextualColorName:"danger"})})}}})},u=()=>{const e=document.querySelector("#container--lots");if(document.querySelector(".tabs a[href='#relatedTab--lots'] .tag").textContent=r.length.toString(),0!==r.length){e.innerHTML='<table class="table is-fullwidth is-striped is-hoverable"><thead><tr><th>'+exports.aliases.lot+"</th><th>"+exports.aliases.map+"</th><th>"+exports.aliases.lot+' Type</th><th>Status</th><th class="has-width-1"></th></tr></thead><tbody></tbody></table>';for(const o of r){const r=document.createElement("tr");r.className="container--lot",r.dataset.lotId=o.lotId.toString(),r.innerHTML='<td><a class="has-text-weight-bold" href="'+cityssm.escapeHTML(t)+"/lots/"+o.lotId+'">'+cityssm.escapeHTML(o.lotName)+"</a></td><td>"+cityssm.escapeHTML(o.mapName)+"</td><td>"+cityssm.escapeHTML(o.lotType)+"</td><td>"+cityssm.escapeHTML(o.lotStatus)+'</td><td><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>',r.querySelector(".button--deleteLot").addEventListener("click",d),e.querySelector("tbody").append(r)}}else e.innerHTML='<div class="message is-info"><p class="message-body">There are no '+exports.aliases.lots.toLowerCase()+" associated with this work order.</p></div>"},m=()=>{i(),u()};m(),document.querySelector("#button--addLotOccupancy").addEventListener("click",()=>{let r,s;const a=e=>{const t=e.currentTarget.closest("tr"),o=t.dataset.lotOccupancyId;l(o,e=>{e&&t.remove()})},n=e=>{e&&e.preventDefault(),s.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(t+"/lotOccupancies/doSearchLotOccupancies",r,e=>{if(0!==e.lotOccupancies.length){s.innerHTML='<table class="table is-fullwidth is-striped is-hoverable"><thead><tr><th class="has-width-1"></th><th>'+exports.aliases.occupancy+" Type</th><th>"+exports.aliases.lot+"</th><th>Start Date</th><th>End Date</th><th>"+exports.aliases.occupants+"</th></tr></thead><tbody></tbody></table>";for(const t of e.lotOccupancies){const e=document.createElement("tr");e.className="container--lotOccupancy",e.dataset.lotOccupancyId=t.lotOccupancyId.toString(),e.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(t.occupancyType)+"</td>",t.lotId?e.insertAdjacentHTML("beforeend","<td>"+cityssm.escapeHTML(t.lotName)+"</td>"):e.insertAdjacentHTML("beforeend",'<td><span class="has-text-grey">(No '+exports.aliases.lot+")</span></td>"),e.insertAdjacentHTML("beforeend","<td>"+t.occupancyStartDateString+"</td><td>"+(t.occupancyEndDate?t.occupancyEndDateString:'<span class="has-text-grey">(No End Date)</span>')+"</td><td>"+(0===t.lotOccupancyOccupants.length?'<span class="has-text-grey">(No '+cityssm.escapeHTML(exports.aliases.occupants)+")</span>":cityssm.escapeHTML(t.lotOccupancyOccupants[0].occupantName)+(t.lotOccupancyOccupants.length>1?" plus "+(t.lotOccupancyOccupants.length-1):""))+"</td>"),e.querySelector(".button--addLotOccupancy").addEventListener("click",a),s.querySelector("tbody").append(e)}}else s.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:t=>{e.populateAliases(t),r=t.querySelector("form"),s=t.querySelector("#resultsContainer--lotOccupancyAdd"),t.querySelector("#lotOccupancySearch--notWorkOrderId").value=o,t.querySelector("#lotOccupancySearch--occupancyEffectiveDateString").value=document.querySelector("#workOrderEdit--workOrderOpenDateString").value,n()},onshown:e=>{bulmaJS.toggleHtmlClipped(),e.querySelector("#lotOccupancySearch--occupantName").addEventListener("change",n),e.querySelector("#lotOccupancySearch--lotName").addEventListener("change",n),r.addEventListener("submit",n)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})}),document.querySelector("#button--addLot").addEventListener("click",()=>{let r,s;const a=e=>{const t=e.currentTarget.closest("tr"),o=t.dataset.lotId;n(o,e=>{e&&t.remove()})},l=e=>{e&&e.preventDefault(),s.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(t+"/lots/doSearchLots",r,e=>{if(0!==e.lots.length){s.innerHTML='<table class="table is-fullwidth is-striped is-hoverable"><thead><tr><th class="has-width-1"></th><th>'+exports.aliases.lot+"</th><th>"+exports.aliases.map+"</th><th>"+exports.aliases.lot+" Type</th><th>Status</th></tr></thead><tbody></tbody></table>";for(const t of e.lots){const e=document.createElement("tr");e.className="container--lot",e.dataset.lotId=t.lotId.toString(),e.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(t.lotName)+"</td><td>"+cityssm.escapeHTML(t.mapName)+"</td><td>"+cityssm.escapeHTML(t.lotType)+"</td><td>"+cityssm.escapeHTML(t.lotStatus)+"</td>",e.querySelector(".button--addLot").addEventListener("click",a),s.querySelector("tbody").append(e)}}else s.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:t=>{e.populateAliases(t),r=t.querySelector("form"),s=t.querySelector("#resultsContainer--lotAdd"),t.querySelector("#lotSearch--notWorkOrderId").value=o;const a=t.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)}l()},onshown:e=>{bulmaJS.toggleHtmlClipped(),e.querySelector("#lotSearch--lotName").addEventListener("change",l),e.querySelector("#lotSearch--lotStatusId").addEventListener("change",l),r.addEventListener("submit",l)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})})}let n=exports.workOrderComments;delete exports.workOrderComments;const l=r=>{const s=Number.parseInt(r.currentTarget.closest("tr").dataset.workOrderCommentId,10),a=n.find(e=>e.workOrderCommentId===s);let l,c;console.log(n);const d=e=>{e.preventDefault(),cityssm.postJSON(t+"/workOrders/doUpdateWorkOrderComment",l,e=>{e.success?(n=e.workOrderComments,c(),i()):bulmaJS.alert({title:"Error Updating Comment",message:e.errorMessage,contextualColorName:"danger"})})};cityssm.openHtmlModal("workOrder-editComment",{onshow:e=>{e.querySelector("#workOrderCommentEdit--workOrderId").value=o,e.querySelector("#workOrderCommentEdit--workOrderCommentId").value=s.toString(),e.querySelector("#workOrderCommentEdit--workOrderComment").value=a.workOrderComment,e.querySelector("#workOrderCommentEdit--workOrderCommentDateString").value=a.workOrderCommentDateString,e.querySelector("#workOrderCommentEdit--workOrderCommentTimeString").value=a.workOrderCommentTimeString},onshown:(t,o)=>{bulmaJS.toggleHtmlClipped(),e.initializeDatePickers(t),e.initializeTimePickers(t),t.querySelector("#workOrderCommentEdit--workOrderComment").focus(),(l=t.querySelector("form")).addEventListener("submit",d),c=o},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})},c=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:()=>{cityssm.postJSON(t+"/workOrders/doDeleteWorkOrderComment",{workOrderId:o,workOrderCommentId:r},e=>{e.success?(n=e.workOrderComments,i()):bulmaJS.alert({title:"Error Removing Comment",message:e.errorMessage,contextualColorName:"danger"})})}},contextualColorName:"warning"})},i=()=>{const e=document.querySelector("#container--workOrderComments");if(0===n.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 n){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",l),o.querySelector(".button--delete").addEventListener("click",c),t.querySelector("tbody").append(o)}e.innerHTML="",e.append(t)},d=()=>{let r;const s=e=>{e.preventDefault(),cityssm.postJSON(t+"/workOrders/doAddWorkOrderComment",e.currentTarget,e=>{e.success&&(n=e.workOrderComments,i(),r())})};cityssm.openHtmlModal("workOrder-addComment",{onshow(t){e.populateAliases(t),t.querySelector("#workOrderCommentAdd--workOrderId").value=o,t.querySelector("form").addEventListener("submit",s)},onshown(e,t){bulmaJS.toggleHtmlClipped(),r=t,e.querySelector("#workOrderCommentAdd--workOrderComment").focus()},onremoved(){bulmaJS.toggleHtmlClipped(),document.querySelector("#workOrderComments--add").focus()}})};if(r||(document.querySelector("#workOrderComments--add").addEventListener("click",d),i()),!r){a=exports.workOrderMilestones,delete exports.workOrderMilestones;const r=e=>{e.success?(a=e.workOrderMilestones,i()):bulmaJS.alert({title:"Error Reopening Milestone",message:e.errorMessage,contextualColorName:"danger"})},s=e=>{e.preventDefault();const s=cityssm.dateToString(new Date),n=Number.parseInt(e.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(t+"/workOrders/doCompleteWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:n},r)}}})},n=e=>{e.preventDefault();const s=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:()=>{cityssm.postJSON(t+"/workOrders/doReopenWorkOrderMilestone",{workOrderId:o,workOrderMilestoneId:s},r)}}})},l=e=>{e.preventDefault();const s=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:()=>{cityssm.postJSON(t+"/workOrders/doDeleteWorkOrderMilestone",{workOrderMilestoneId:s,workOrderId:o},r)}}})},c=s=>{s.preventDefault();const n=Number.parseInt(s.currentTarget.closest(".container--milestone").dataset.workOrderMilestoneId,10),l=a.find(e=>e.workOrderMilestoneId===n);let c;const i=e=>{e.preventDefault(),cityssm.postJSON(t+"/workOrders/doUpdateWorkOrderMilestone",e.currentTarget,e=>{r(e),e.success&&c()})};cityssm.openHtmlModal("workOrder-editMilestone",{onshow:e=>{e.querySelector("#milestoneEdit--workOrderId").value=o,e.querySelector("#milestoneEdit--workOrderMilestoneId").value=l.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===l.workOrderMilestoneTypeId&&(o.selected=!0,r=!0),t.append(o)}if(!r&&l.workOrderMilestoneTypeId){const e=document.createElement("option");e.value=l.workOrderMilestoneTypeId.toString(),e.textContent=l.workOrderMilestoneType,e.selected=!0,t.append(e)}e.querySelector("#milestoneEdit--workOrderMilestoneDateString").value=l.workOrderMilestoneDateString,l.workOrderMilestoneTime&&(e.querySelector("#milestoneEdit--workOrderMilestoneTimeString").value=l.workOrderMilestoneTimeString),e.querySelector("#milestoneEdit--workOrderMilestoneDescription").value=l.workOrderMilestoneDescription},onshown:(t,o)=>{c=o,bulmaJS.toggleHtmlClipped(),e.initializeDatePickers(t),e.initializeTimePickers(t),t.querySelector("form").addEventListener("submit",i)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})},i=()=>{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",n):(o.querySelector(".button--editMilestone").addEventListener("click",c),o.querySelector(".button--completeMilestone").addEventListener("click",s)),o.querySelector(".button--deleteMilestone").addEventListener("click",l),e.append(o)}bulmaJS.init(e)};i(),document.querySelector("#button--addMilestone").addEventListener("click",()=>{let s,a;const n=e=>{e.preventDefault();const o=cityssm.dateToString(new Date),n=()=>{cityssm.postJSON(t+"/workOrders/doAddWorkOrderMilestone",e.currentTarget,e=>{r(e),e.success&&a()})};s.querySelector("#milestoneAdd--workOrderMilestoneDateString").value<o?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:n}}):n()};cityssm.openHtmlModal("workOrder-addMilestone",{onshow:e=>{e.querySelector("#milestoneAdd--workOrderId").value=o;const t=e.querySelector("#milestoneAdd--workOrderMilestoneTypeId");for(const e of exports.workOrderMilestoneTypes){const o=document.createElement("option");o.value=e.workOrderMilestoneTypeId.toString(),o.textContent=e.workOrderMilestoneType,t.append(o)}e.querySelector("#milestoneAdd--workOrderMilestoneDateString").valueAsDate=new Date},onshown:(t,o)=>{s=t,a=o,e.initializeDatePickers(t),e.initializeTimePickers(t),bulmaJS.toggleHtmlClipped(),t.querySelector("form").addEventListener("submit",n)},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})})}})();