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 = "

Milestone Description

" + - "

" + - escapeHTML(milestone.workOrderMilestoneDescription) + - "

" + - "

Work Order #" + - milestone.workOrderNumber + - "

" + - ("

" + escapeHTML(milestone.workOrderDescription) + "

") + - ("

" + workOrderUrl + "

"); +function buildEventDescriptionHTML_occupancies(request, milestone) { + let descriptionHTML = ""; if (milestone.workOrderLotOccupancies.length > 0) { - descriptionHTML += + const urlRoot = getUrlRoot(request); + descriptionHTML = "

Related " + escapeHTML(configFunctions.getProperty("aliases.occupancies")) + "

" + @@ -98,7 +89,12 @@ function buildEventDescriptionHTML(request, milestone) { } descriptionHTML += ""; } + return descriptionHTML; +} +function buildEventDescriptionHTML_lots(request, milestone) { + let descriptionHTML = ""; if (milestone.workOrderLots.length > 0) { + const urlRoot = getUrlRoot(request); descriptionHTML += "

Related " + escapeHTML(configFunctions.getProperty("aliases.lots")) + @@ -128,8 +124,13 @@ function buildEventDescriptionHTML(request, milestone) { } descriptionHTML += ""; } + return descriptionHTML; +} +function buildEventDescriptionHTML_prints(request, milestone) { + let descriptionHTML = ""; const prints = configFunctions.getProperty("settings.workOrders.prints"); if (prints.length > 0) { + const urlRoot = getUrlRoot(request); descriptionHTML += "

Prints

"; for (const printName of prints) { const printConfig = getPrintConfig(printName); @@ -145,6 +146,41 @@ function buildEventDescriptionHTML(request, milestone) { } return descriptionHTML; } +function buildEventDescriptionHTML(request, milestone) { + const workOrderUrl = getWorkOrderUrl(request, milestone); + let descriptionHTML = "

Milestone Description

" + + "

" + + escapeHTML(milestone.workOrderMilestoneDescription) + + "

" + + "

Work Order #" + + milestone.workOrderNumber + + "

" + + ("

" + 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 = - "

Milestone Description

" + - "

" + - escapeHTML(milestone.workOrderMilestoneDescription) + - "

" + - "

Work Order #" + - milestone.workOrderNumber + - "

" + - ("

" + escapeHTML(milestone.workOrderDescription) + "

") + - ("

" + workOrderUrl + "

"); + let descriptionHTML = ""; if (milestone.workOrderLotOccupancies.length > 0) { - descriptionHTML += + const urlRoot = getUrlRoot(request); + + descriptionHTML = "

Related " + escapeHTML(configFunctions.getProperty("aliases.occupancies")) + "

" + @@ -137,7 +127,18 @@ function buildEventDescriptionHTML( descriptionHTML += ""; } + return descriptionHTML; +} + +function buildEventDescriptionHTML_lots( + request: Request, + milestone: recordTypes.WorkOrderMilestone +): string { + let descriptionHTML = ""; + if (milestone.workOrderLots.length > 0) { + const urlRoot = getUrlRoot(request); + descriptionHTML += "

Related " + escapeHTML(configFunctions.getProperty("aliases.lots")) + @@ -170,9 +171,20 @@ function buildEventDescriptionHTML( descriptionHTML += ""; } + return descriptionHTML; +} + +function buildEventDescriptionHTML_prints( + request: Request, + milestone: recordTypes.WorkOrderMilestone +): string { + let descriptionHTML = ""; + const prints = configFunctions.getProperty("settings.workOrders.prints"); if (prints.length > 0) { + const urlRoot = getUrlRoot(request); + descriptionHTML += "

Prints

"; for (const printName of prints) { @@ -192,6 +204,55 @@ function buildEventDescriptionHTML( return descriptionHTML; } +function buildEventDescriptionHTML( + request: Request, + milestone: recordTypes.WorkOrderMilestone +): string { + const workOrderUrl = getWorkOrderUrl(request, milestone); + + let descriptionHTML = + "

Milestone Description

" + + "

" + + escapeHTML(milestone.workOrderMilestoneDescription) + + "

" + + "

Work Order #" + + milestone.workOrderNumber + + "

" + + ("

" + 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