diff --git a/handlers/api-get/milestoneICS.ts b/handlers/api-get/milestoneICS.ts index cdf033b7..539deb05 100644 --- a/handlers/api-get/milestoneICS.ts +++ b/handlers/api-get/milestoneICS.ts @@ -27,6 +27,10 @@ export const handler: RequestHandler = (request, response) => { : ":" + configFunctions.getProperty("application.httpPort")) + configFunctions.getProperty("reverseProxy.urlPrefix"); + /* + * Get work order milestones + */ + const workOrderMilestoneFilters: WorkOrderMilestoneFilters = { workOrderTypeIds: request.query.workOrderTypeIds as string, workOrderMilestoneTypeIds: request.query.workOrderMilestoneTypeIds as string @@ -43,6 +47,10 @@ export const handler: RequestHandler = (request, response) => { orderBy: "date" }); + /* + * Create calendar object + */ + const calendar = ical({ name: "Work Order Milestone Calendar", url: urlRoot + "/workOrders" @@ -58,6 +66,10 @@ export const handler: RequestHandler = (request, response) => { product: configFunctions.getProperty("application.applicationName") }); + /* + * Loop through milestones + */ + for (const milestone of workOrderMilestones) { const milestoneTimePieces = ( milestone.workOrderMilestoneDateString + diff --git a/public-scss/style.scss b/public-scss/style.scss index 0e6164dd..50fa950d 100644 --- a/public-scss/style.scss +++ b/public-scss/style.scss @@ -185,8 +185,8 @@ span.button.is-static { margin-right: 0.25rem; margin-top: 0.15rem; } -} +} .datetimepicker.is-active { z-index: 10; -} \ No newline at end of file +} diff --git a/public-typescript/lotOccupancySearch.js b/public-typescript/lotOccupancySearch.js index 080aeab5..26f13304 100644 --- a/public-typescript/lotOccupancySearch.js +++ b/public-typescript/lotOccupancySearch.js @@ -84,18 +84,22 @@ Object.defineProperty(exports, "__esModule", { value: true }); "") + ("" + (lotOccupancy.lotName - ? '' + cityssm.escapeHTML(lotOccupancy.lotName) + - "" + "" : '(No ' + cityssm.escapeHTML(exports.aliases.lot) + ")") + "
" + - '' + - cityssm.escapeHTML(lotOccupancy.mapName || "") + - "" + + ('' + + cityssm.escapeHTML(lotOccupancy.mapName || "") + + "") + "") + ("" + lotOccupancy.occupancyStartDateString + "") + ("" + @@ -103,9 +107,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); ? lotOccupancy.occupancyEndDateString : '(No End Date)') + "") + - "" + - occupantsHTML + - "" + + ("" + occupantsHTML + "") + (lotOccupancyPrints.length > 0 ? "" + '' + ("" + cityssm.escapeHTML(exports.aliases.occupancy) + " Type") + ("" + cityssm.escapeHTML(exports.aliases.lot) + "") + - "" + - cityssm.escapeHTML(exports.aliases.occupancyStartDate) + - "" + + ("" + cityssm.escapeHTML(exports.aliases.occupancyStartDate) + "") + "End Date" + ("" + cityssm.escapeHTML(exports.aliases.occupants) + "") + - (lotOccupancyPrints.length > 0 ? '' : "") + + (lotOccupancyPrints.length > 0 ? 'Print' : "") + "" + "" + '
' + diff --git a/public-typescript/lotOccupancySearch.ts b/public-typescript/lotOccupancySearch.ts index a677e5ef..0cfc62a6 100644 --- a/public-typescript/lotOccupancySearch.ts +++ b/public-typescript/lotOccupancySearch.ts @@ -117,18 +117,22 @@ declare const cityssm: cityssmGlobal; "") + ("
") + ("") + ("") + - "" + + ("") + (lotOccupancyPrints.length > 0 ? "") + ("") + - "" + + ("") + "" + ("") + - (lotOccupancyPrints.length > 0 ? '' : "") + + (lotOccupancyPrints.length > 0 ? '' : "") + "" + "
" + (lotOccupancy.lotName - ? '' + cityssm.escapeHTML(lotOccupancy.lotName) + - "" + "" : '(No ' + cityssm.escapeHTML(exports.aliases.lot) + ")") + "
" + - '' + - cityssm.escapeHTML(lotOccupancy.mapName || "") + - "" + + ('' + + cityssm.escapeHTML(lotOccupancy.mapName || "") + + "") + "
" + lotOccupancy.occupancyStartDateString + "" + @@ -136,9 +140,7 @@ declare const cityssm: cityssmGlobal; ? lotOccupancy.occupancyEndDateString : '(No End Date)') + "" + - occupantsHTML + - "" + occupantsHTML + "" + '' + ("" + cityssm.escapeHTML(exports.aliases.occupancy) + " Type" + cityssm.escapeHTML(exports.aliases.lot) + "" + - cityssm.escapeHTML(exports.aliases.occupancyStartDate) + - "" + cityssm.escapeHTML(exports.aliases.occupancyStartDate) + "End Date" + cityssm.escapeHTML(exports.aliases.occupants) + "Print
" + '
' + diff --git a/public/javascripts/lotOccupancySearch.min.js b/public/javascripts/lotOccupancySearch.min.js index b9f42812..61609b25 100644 --- a/public/javascripts/lotOccupancySearch.min.js +++ b/public/javascripts/lotOccupancySearch.min.js @@ -1 +1 @@ -"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=document.querySelector("main").dataset.urlPrefix,a=exports.lotOccupancyPrints,e=document.querySelector("#form--searchFilters"),s=document.querySelector("#container--searchResults"),c=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),i=document.querySelector("#searchFilter--offset"),n=()=>{const n=Number.parseInt(i.value,10);s.innerHTML='

Loading '+exports.aliases.occupancies+"...
",cityssm.postJSON(t+"/lotOccupancies/doSearchLotOccupancies",e,e=>{if(0===e.lotOccupancies.length)return void(s.innerHTML='

There are no '+cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase())+" records that meet the search criteria.

");const i=document.createElement("tbody"),o=cityssm.dateToString(new Date);for(const s of e.lotOccupancies){let e="";e=s.occupancyStartDateString<=o&&(""===s.occupancyEndDateString||s.occupancyEndDateString>=o)?'':s.occupancyStartDateString>o?'':'';let c="";for(const t of s.lotOccupancyOccupants)c+=''+cityssm.escapeHTML(t.occupantName)+"
";i.insertAdjacentHTML("beforeend",'
"+(a.length>0?'':"")+"")}s.innerHTML='
'+e+''+cityssm.escapeHTML(s.occupancyType)+""+(s.lotName?''+cityssm.escapeHTML(s.lotName)+"":'(No '+cityssm.escapeHTML(exports.aliases.lot)+")")+'
'+cityssm.escapeHTML(s.mapName||"")+"
"+s.occupancyStartDateString+""+(s.occupancyEndDate?s.occupancyEndDateString:'(No End Date)')+""+c+"
"+(a.length>0?'':"")+'
'+cityssm.escapeHTML(exports.aliases.occupancy)+" Type"+cityssm.escapeHTML(exports.aliases.lot)+""+cityssm.escapeHTML(exports.aliases.occupancyStartDate)+"End Date"+cityssm.escapeHTML(exports.aliases.occupants)+"
Displaying '+(n+1).toString()+" to "+Math.min(e.count,c+n)+" of "+e.count+'
'+(n>0?'
':"")+(c+n
':"")+"
",s.querySelector("table").append(i),n>0&&s.querySelector("button[data-page='previous']").addEventListener("click",l),c+n{i.value="0",n()},l=()=>{i.value=Math.max(Number.parseInt(i.value,10)-c,0).toString(),n()},r=()=>{i.value=(Number.parseInt(i.value,10)+c).toString(),n()},p=e.querySelectorAll("input, select");for(const t of p)t.addEventListener("change",o);e.addEventListener("submit",t=>{t.preventDefault(),o()}),n()})(); \ No newline at end of file +"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),(()=>{const t=document.querySelector("main").dataset.urlPrefix,a=exports.lotOccupancyPrints,e=document.querySelector("#form--searchFilters"),s=document.querySelector("#container--searchResults"),c=Number.parseInt(document.querySelector("#searchFilter--limit").value,10),i=document.querySelector("#searchFilter--offset"),n=()=>{const n=Number.parseInt(i.value,10);s.innerHTML='

Loading '+exports.aliases.occupancies+"...
",cityssm.postJSON(t+"/lotOccupancies/doSearchLotOccupancies",e,e=>{if(0===e.lotOccupancies.length)return void(s.innerHTML='

There are no '+cityssm.escapeHTML(exports.aliases.occupancy.toLowerCase())+" records that meet the search criteria.

");const i=document.createElement("tbody"),o=cityssm.dateToString(new Date);for(const s of e.lotOccupancies){let e="";e=s.occupancyStartDateString<=o&&(""===s.occupancyEndDateString||s.occupancyEndDateString>=o)?'':s.occupancyStartDateString>o?'':'';let c="";for(const t of s.lotOccupancyOccupants)c+=''+cityssm.escapeHTML(t.occupantName)+"
";i.insertAdjacentHTML("beforeend",'
"+(a.length>0?'':"")+"")}s.innerHTML='
'+e+''+cityssm.escapeHTML(s.occupancyType)+""+(s.lotName?''+cityssm.escapeHTML(s.lotName)+"":'(No '+cityssm.escapeHTML(exports.aliases.lot)+")")+'
'+cityssm.escapeHTML(s.mapName||"")+"
"+s.occupancyStartDateString+""+(s.occupancyEndDate?s.occupancyEndDateString:'(No End Date)')+""+c+"
"+(a.length>0?'':"")+'
'+cityssm.escapeHTML(exports.aliases.occupancy)+" Type"+cityssm.escapeHTML(exports.aliases.lot)+""+cityssm.escapeHTML(exports.aliases.occupancyStartDate)+"End Date"+cityssm.escapeHTML(exports.aliases.occupants)+"Print
Displaying '+(n+1).toString()+" to "+Math.min(e.count,c+n)+" of "+e.count+'
'+(n>0?'
':"")+(c+n
':"")+"
",s.querySelector("table").append(i),n>0&&s.querySelector("button[data-page='previous']").addEventListener("click",l),c+n{i.value="0",n()},l=()=>{i.value=Math.max(Number.parseInt(i.value,10)-c,0).toString(),n()},r=()=>{i.value=(Number.parseInt(i.value,10)+c).toString(),n()},p=e.querySelectorAll("input, select");for(const t of p)t.addEventListener("change",o);e.addEventListener("submit",t=>{t.preventDefault(),o()}),n()})(); \ No newline at end of file