cityssm/contract-expiration-tracker

View on GitHub
public/javascripts/contracts.min.js

Summary

Maintainability
A
0 mins
Test Coverage
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const e=exports.urlPrefix,t=exports.canUpdate,a=document.querySelector("#filters--contractCategory"),o=document.querySelector("#filters--hasBeenReplaced"),s=document.querySelector("#filters--managingUserName"),c={csv:document.querySelector("#export--csv"),ical:document.querySelector("#export--ical"),"feed/atom":document.querySelector("#export--atom"),"feed/rss2":document.querySelector("#export--rss")},r=t=>{const r=window.location.protocol+"//"+window.location.host+e+"/export/"+t+"/"+exports.userName+"/"+exports.guidA+"/"+exports.guidB,n=new URL(r);""!==a.value&&n.searchParams.set("contractCategory",a.value),n.searchParams.set("searchString",document.querySelector("#filters--searchString").value),""!==o.value&&n.searchParams.set("hasBeenReplaced",o.value),""!==s.value&&n.searchParams.set("managingUserName",s.value),x.checked&&n.searchParams.set("includeExpired",x.value),c[t].href=n.href},n=()=>{r("csv"),r("ical"),r("feed/rss2"),r("feed/atom")},i=()=>{cityssm.postJSON(e+"/contracts/doResetUserAccessGUIDs",{},e=>{e.success&&(bulmaJS.alert({title:"Export Keys Reset Successfully",message:"Note that if your export links are used by any application like Microsoft Excel or Outlook, you will have to update those links."}),exports.guidA=e.guidA,exports.guidB=e.guidB,n())})};document.querySelector("#navbar--resetUserAccessGUIDs").addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({contextualColorName:"warning",title:"Are you sure you want to reset your export keys?",message:"This should definitely be done if you think your export keys have been compromised.",okButton:{text:"Yes, Reset the Keys",callbackFunction:i}})});const l=exports.customizations_contract_alias,d=exports.customizations_contract_aliasPlural,u=exports.customizations_contractCategory_alias,m=exports.customizations_contractCategory_aliasPlural,p=exports.customizations_contractParty_alias,g=e=>{const t=e.querySelectorAll("[data-customization='contract.alias']");for(const e of t)e.textContent=l;const a=e.querySelectorAll("[data-customization='contractCategory.alias']");for(const e of a)e.textContent=u;const o=e.querySelectorAll("[data-customization='contractParty.alias']");for(const e of o)e.textContent=p};let y=exports.contractCategories;const v=()=>{const e=a.value;let t=!1;a.innerHTML='<option value="">(All Available '+cityssm.escapeHTML(m)+")</option>";for(const o of y){const s=document.createElement("option");s.value=o,s.textContent=o,a.append(s),e===o&&(s.selected=!0,t=!0)}""===e||t||C()},f=()=>{cityssm.postJSON(e+"/contracts/doGetContractCategories",{},e=>{y=e.contractCategories,exports.contractCategories=e.contractCategories,v()})};v();const S=exports.dateDiff,h=document.querySelector("#form--filters"),x=h.querySelector("#filters--includeExpired"),b=document.querySelector("#container--results"),C=()=>{const t=new Date,a=cityssm.dateToString(t);b.innerHTML='<div class="has-text-centered p-4"><span class="icon"><i class="fas fa-4x fa-spinner fa-pulse" aria-hidden="true"></i></span></div>',cityssm.postJSON(e+"/contracts/doGetContracts",h,e=>{if(0===e.contracts.length)return void(b.innerHTML='<div class="message is-info"><p class="message-body">There are no '+d.toLowerCase()+" available.</p></div>");const o=document.createElement("div");o.className="panel";for(const s of e.contracts){const e=document.createElement("a");e.className="panel-block is-block",s.endDate&&s.endDateString<a&&e.classList.add("has-background-danger-light"),e.dataset.contractId=s.contractId.toString(),e.href="#",e.addEventListener("click",E),e.innerHTML='<div class="columns is-multiline is-mobile"><div class="column is-12-mobile is-8-tablet"><h2 class="title is-5 mb-1">'+cityssm.escapeHTML(s.contractTitle)+'</h2><div class="columns is-mobile"><div class="column">'+(s.hasBeenReplaced?'<span class="icon"><i class="fas fa-fast-forward" aria-hidden="true"></i></span> Replaced<br />':"")+(""!==s.contractCategory?'<span class="icon"><i class="fas fa-archive" aria-hidden="true"></i></span> '+cityssm.escapeHTML(s.contractCategory)+"<br />":"")+(""!==s.contractParty?'<span class="icon"><i class="fas fa-user-tie" aria-hidden="true"></i></span> '+cityssm.escapeHTML(s.contractParty)+"<br />":"")+"</div>"+(s.managingUserName&&""!==s.managingUserName?'<div class="column is-4"><span class="icon"><i class="fas fa-id-card" aria-hidden="true"></i></span> '+cityssm.escapeHTML(s.managingUserName)+"</div>":"")+'</div></div><div class="column is-6-mobile has-text-centered"><i class="fas fa-play'+(s.startDateString<=a?" has-text-success":"")+'" aria-hidden="true"></i><br />'+s.startDateString+(s.startDateString<=a?'<br /><span class="is-size-7">'+S(cityssm.dateStringToDate(s.startDateString),t).formatted+" ago":"")+'</div><div class="column is-6-mobile has-text-centered"><i class="fas fa-stop" aria-hidden="true"></i><br />'+(s.endDate?s.endDateString:'<span class="has-text-grey">No End Date</span>')+(s.extensionDate?'<br /><span class="is-size-7">Extend to '+s.extensionDateString+"</span>":"")+"</div></div>",o.append(e)}b.innerHTML="",b.append(o)}),n()},E=a=>{a.preventDefault();const o=a.currentTarget.dataset.contractId;cityssm.openHtmlModal("contractView",{onshow:e=>{g(e),t&&e.querySelector("#contractEdit--privateContractDescription").closest(".field").classList.remove("is-hidden")},onshown:(a,s)=>{if(bulmaJS.toggleHtmlClipped(),cityssm.postJSON(e+"/contracts/doGetContract",{contractId:o},e=>{const o=e.contract;if(!o||!o.contractId)return s(),cityssm.alertModal(l+" Not Found","Please try again.","OK","danger"),void C();a.querySelector("#contractEdit--contractId").value=o.contractId.toString(),a.querySelector("#contractEdit--contractTitle").value=o.contractTitle,a.querySelector("#contractEdit--contractCategory").value=o.contractCategory,a.querySelector("#contractEdit--contractParty").value=o.contractParty,o.hasBeenReplaced&&(a.querySelector("#contractEdit--hasBeenReplaced").checked=!0);const c=a.querySelector("#contractEdit--managingUserName");let r=!1;if(t)for(const e of exports.canUpdateUserNames){const t=document.createElement("option");t.textContent=e,t.value=e,c.append(t),o.managingUserName&&o.managingUserName===e&&(t.selected=!0,r=!0)}if(o.managingUserName&&""!==o.managingUserName&&!r){const e=document.createElement("option");e.textContent=o.managingUserName,e.value=o.managingUserName,c.append(e),e.selected=!0}a.querySelector("#contractEdit--contractDescription").value=o.contractDescription,t&&(a.querySelector("#contractEdit--privateContractDescription").value=o.privateContractDescription),a.querySelector("#contractEdit--startDateString").value=o.startDateString,a.querySelector("#contractEdit--endDateString").value=o.endDateString,a.querySelector("#contractEdit--extensionDateString").value=o.extensionDateString}),exports.docuShare_isEnabled&&(a.querySelector("#section--contractDocuShare").classList.remove("is-hidden"),cityssm.postJSON(e+"/docuShare/doGetContractDocuments",{contractId:o},e=>{const t=a.querySelector("#container--contractDocuShare");if(0===e.documents.length)t.innerHTML='<div class="message is-info"><p class="message-body">There are no related documents.</p></div>';else{const a=document.createElement("div");a.className="panel";for(const t of e.documents){const o=document.createElement("a");o.className="panel-block is-block",o.href=e.rootURL+"/dsweb/View/"+t.handle,o.target="_blank",o.rel="noopener",o.innerHTML="<strong>"+cityssm.escapeHTML(t.title)+"</strong><br />"+cityssm.escapeHTML(t.summary),a.append(o)}t.innerHTML="",t.append(a)}t.insertAdjacentHTML("afterbegin",'<a class="button is-fullwidth is-link is-light mb-2" href="'+e.rootURL+"/dsweb/View/"+e.handle+'" target="_blank" rel="noopener">Open Collection in DocuShare</a>')})),t){const e=a.querySelector("#button--switchToEditMode");e.classList.remove("is-hidden"),e.addEventListener("click",()=>{q(s)})}},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})};if(h.addEventListener("submit",e=>{e.preventDefault()}),a.addEventListener("change",C),document.querySelector("#filters--searchString").addEventListener("change",C),o.addEventListener("change",C),x.addEventListener("change",C),s.addEventListener("change",C),C(),!t)return;document.querySelector("#button--addContract").addEventListener("click",()=>{let t,a;const o=o=>{o.preventDefault(),cityssm.postJSON(e+"/contracts/doAddContract",a,e=>{e.success?(t(),"1"===a.querySelector("#contractAdd--contractCategoryIsNew").value&&f(),C()):cityssm.alertModal("Error Adding "+l,"Please try again","OK","danger")})};cityssm.openHtmlModal("contractAdd",{onshow:e=>{g(e);const t=e.querySelector("#contractAdd--contactCategory-existing");for(const e of y){const a=document.createElement("option");a.textContent=e,a.value=e,t.append(a)}const a=e.querySelector("#contractAdd--managingUserName");for(const e of exports.canUpdateUserNames){const t=document.createElement("option");t.textContent=e,t.value=e,a.append(t),e===exports.userName&&(t.selected=!0)}},onshown:(e,s)=>{bulmaJS.toggleHtmlClipped(),t=s,(a=e.querySelector("form")).addEventListener("submit",o);const c=e.querySelector("#contractAdd--contractCategoryIsNew");c.addEventListener("change",()=>{"1"===c.value?(e.querySelector("#field--contractAdd--contractCategory-existing").classList.add("is-hidden"),e.querySelector("#field--contractAdd--contractCategory-new").classList.remove("is-hidden")):(e.querySelector("#field--contractAdd--contractCategory-new").classList.add("is-hidden"),e.querySelector("#field--contractAdd--contractCategory-existing").classList.remove("is-hidden"))})},onremoved:()=>{bulmaJS.toggleHtmlClipped()}})});const q=t=>{bulmaJS.init();const a=document.querySelector("#form--contractEdit");a.querySelector("fieldset").disabled=!1,a.addEventListener("submit",o=>{o.preventDefault(),cityssm.postJSON(e+"/contracts/doUpdateContract",a,e=>{e.success&&(t(),C())})});const o=a.closest(".modal");o.querySelector("#button--switchToEditMode").remove(),o.querySelector("button[type='submit']").classList.remove("is-hidden"),o.querySelector("#contractEdit--optionsButton").classList.remove("is-hidden");const s=()=>{const o=a.querySelector("#contractEdit--contractId").value;cityssm.postJSON(e+"/contracts/doRemoveContract",{contractId:o},e=>{e.success&&(t(),f(),C())})};o.querySelector("#contractEdit--removeContractButton").addEventListener("click",e=>{e.preventDefault(),bulmaJS.confirm({message:"Are you sure you want to remove this contract record?",okButton:{text:"Yes, Remove the Contract",callbackFunction:s}})})}})();