diff --git a/handlers/api-get/milestoneICS.js b/handlers/api-get/milestoneICS.js index 293405d1..71ff5d6f 100644 --- a/handlers/api-get/milestoneICS.js +++ b/handlers/api-get/milestoneICS.js @@ -43,20 +43,11 @@ function buildEventSummary(milestone) { } return summary; } -function buildEventDescriptionHTML(request, milestone) { - const urlRoot = getUrlRoot(request); - const workOrderUrl = getWorkOrderUrl(request, milestone); - let descriptionHTML = "
" + - escapeHTML(milestone.workOrderMilestoneDescription) + - "
" + - "" + escapeHTML(milestone.workOrderDescription) + "
") + - ("" + workOrderUrl + "
"); +function buildEventDescriptionHTML_occupancies(request, milestone) { + let descriptionHTML = ""; if (milestone.workOrderLotOccupancies.length > 0) { - descriptionHTML += + const urlRoot = getUrlRoot(request); + descriptionHTML = "" + + escapeHTML(milestone.workOrderMilestoneDescription) + + "
" + + "" + escapeHTML(milestone.workOrderDescription) + "
") + + ("" + workOrderUrl + "
"); + descriptionHTML += buildEventDescriptionHTML_occupancies(request, milestone); + descriptionHTML += buildEventDescriptionHTML_lots(request, milestone); + descriptionHTML += buildEventDescriptionHTML_prints(request, milestone); + return descriptionHTML; +} +function buildEventCategoryList(milestone) { + const categories = []; + if (milestone.workOrderMilestoneTypeId) { + categories.push(milestone.workOrderMilestoneType, milestone.workOrderType); + } + if (milestone.workOrderMilestoneCompletionDate) { + categories.push("Completed"); + } + return categories; +} +function buildEventLocation(milestone) { + const lotNames = []; + if (milestone.workOrderLots.length > 0) { + for (const lot of milestone.workOrderLots) { + lotNames.push(lot.mapName + ": " + lot.lotName); + } + } + return lotNames.join(", "); +} export const handler = (request, response) => { const urlRoot = getUrlRoot(request); const workOrderMilestoneFilters = { @@ -203,26 +239,14 @@ export const handler = (request, response) => { if (milestone.workOrderMilestoneCompletionDate) { calendarEvent.status(ICalEventStatus.CONFIRMED); } - if (milestone.workOrderMilestoneTypeId) { + const categories = buildEventCategoryList(milestone); + for (const category of categories) { calendarEvent.createCategory({ - name: milestone.workOrderMilestoneType - }); - calendarEvent.createCategory({ - name: milestone.workOrderType + name: category }); } - if (milestone.workOrderMilestoneCompletionDate) { - calendarEvent.createCategory({ - name: "Completed" - }); - } - if (milestone.workOrderLots.length > 0) { - const lotNames = []; - for (const lot of milestone.workOrderLots) { - lotNames.push(lot.mapName + ": " + lot.lotName); - } - calendarEvent.location(lotNames.join(", ")); - } + const location = buildEventLocation(milestone); + calendarEvent.location(location); if (milestone.workOrderLotOccupancies.length > 0) { let organizerSet = false; for (const lotOccupancy of milestone.workOrderLotOccupancies) { diff --git a/handlers/api-get/milestoneICS.ts b/handlers/api-get/milestoneICS.ts index b4026167..08faf237 100644 --- a/handlers/api-get/milestoneICS.ts +++ b/handlers/api-get/milestoneICS.ts @@ -71,26 +71,16 @@ function buildEventSummary(milestone: recordTypes.WorkOrderMilestone): string { return summary; } -function buildEventDescriptionHTML( +function buildEventDescriptionHTML_occupancies( request: Request, milestone: recordTypes.WorkOrderMilestone ): string { - const urlRoot = getUrlRoot(request); - const workOrderUrl = getWorkOrderUrl(request, milestone); - - let descriptionHTML = - "" + - escapeHTML(milestone.workOrderMilestoneDescription) + - "
" + - "" + escapeHTML(milestone.workOrderDescription) + "
") + - ("" + workOrderUrl + "
"); + let descriptionHTML = ""; if (milestone.workOrderLotOccupancies.length > 0) { - descriptionHTML += + const urlRoot = getUrlRoot(request); + + descriptionHTML = "" + + escapeHTML(milestone.workOrderMilestoneDescription) + + "
" + + "" + escapeHTML(milestone.workOrderDescription) + "
") + + ("" + workOrderUrl + "
"); + + descriptionHTML += buildEventDescriptionHTML_occupancies(request, milestone); + descriptionHTML += buildEventDescriptionHTML_lots(request, milestone); + descriptionHTML += buildEventDescriptionHTML_prints(request, milestone); + + return descriptionHTML; +} + +function buildEventCategoryList(milestone: recordTypes.WorkOrderMilestone): string[] { + const categories: string[] = []; + + if (milestone.workOrderMilestoneTypeId) { + categories.push(milestone.workOrderMilestoneType, milestone.workOrderType); + } + + if (milestone.workOrderMilestoneCompletionDate) { + categories.push("Completed"); + } + + return categories; +} + +function buildEventLocation(milestone: recordTypes.WorkOrderMilestone): string { + const lotNames = []; + + if (milestone.workOrderLots.length > 0) { + for (const lot of milestone.workOrderLots) { + lotNames.push(lot.mapName + ": " + lot.lotName); + } + } + return lotNames.join(", "); +} + export const handler: RequestHandler = (request, response) => { const urlRoot = getUrlRoot(request); @@ -304,33 +365,17 @@ export const handler: RequestHandler = (request, response) => { // Add categories - if (milestone.workOrderMilestoneTypeId) { + const categories = buildEventCategoryList(milestone); + for (const category of categories) { calendarEvent.createCategory({ - name: milestone.workOrderMilestoneType - }); - - calendarEvent.createCategory({ - name: milestone.workOrderType - }); - } - - if (milestone.workOrderMilestoneCompletionDate) { - calendarEvent.createCategory({ - name: "Completed" + name: category }); } // Set location - if (milestone.workOrderLots.length > 0) { - const lotNames = []; - - for (const lot of milestone.workOrderLots) { - lotNames.push(lot.mapName + ": " + lot.lotName); - } - - calendarEvent.location(lotNames.join(", ")); - } + const location = buildEventLocation(milestone); + calendarEvent.location(location); // Set organizer / attendees