fix broken ical export
parent
e45cd6b931
commit
69cba312f9
|
|
@ -76,7 +76,7 @@ function buildEventDescriptionHTML_occupancies(request, milestone) {
|
||||||
</td>
|
</td>
|
||||||
<td>`;
|
<td>`;
|
||||||
for (const occupant of occupancy.lotOccupancyOccupants ?? []) {
|
for (const occupant of occupancy.lotOccupancyOccupants ?? []) {
|
||||||
descriptionHTML += `${escapeHTML(occupant.lotOccupantType)}: ${escapeHTML(occupant.occupantName ?? '')} ${escapeHTML(occupant.occupantFamilyName ?? '')}<br />`;
|
descriptionHTML += `${escapeHTML(occupant.lotOccupantType ?? '')}: ${escapeHTML(occupant.occupantName ?? '')} ${escapeHTML(occupant.occupantFamilyName ?? '')}<br />`;
|
||||||
}
|
}
|
||||||
descriptionHTML += '</td></tr>';
|
descriptionHTML += '</td></tr>';
|
||||||
}
|
}
|
||||||
|
|
@ -155,7 +155,7 @@ function buildEventDescriptionHTML(request, milestone) {
|
||||||
function buildEventCategoryList(milestone) {
|
function buildEventCategoryList(milestone) {
|
||||||
const categories = [];
|
const categories = [];
|
||||||
if (milestone.workOrderMilestoneTypeId) {
|
if (milestone.workOrderMilestoneTypeId) {
|
||||||
categories.push(milestone.workOrderMilestoneType, milestone.workOrderType ?? '');
|
categories.push(milestone.workOrderMilestoneType ?? '', milestone.workOrderType ?? '');
|
||||||
}
|
}
|
||||||
if (milestone.workOrderMilestoneCompletionDate) {
|
if (milestone.workOrderMilestoneCompletionDate) {
|
||||||
categories.push('Completed');
|
categories.push('Completed');
|
||||||
|
|
@ -200,7 +200,7 @@ export default async function handler(request, response) {
|
||||||
});
|
});
|
||||||
if (request.query.workOrderId && workOrderMilestones.length > 0) {
|
if (request.query.workOrderId && workOrderMilestones.length > 0) {
|
||||||
calendar.name(`Work Order #${workOrderMilestones[0].workOrderNumber}`);
|
calendar.name(`Work Order #${workOrderMilestones[0].workOrderNumber}`);
|
||||||
calendar.url(`${urlRoot}/workOrders/${workOrderMilestones[0].workOrderId.toString()}`);
|
calendar.url(`${urlRoot}/workOrders/${workOrderMilestones[0].workOrderId?.toString()}`);
|
||||||
}
|
}
|
||||||
calendar.prodId({
|
calendar.prodId({
|
||||||
company: calendarCompany,
|
company: calendarCompany,
|
||||||
|
|
@ -221,9 +221,9 @@ export default async function handler(request, response) {
|
||||||
// Create event
|
// Create event
|
||||||
const eventData = {
|
const eventData = {
|
||||||
start: milestoneDate,
|
start: milestoneDate,
|
||||||
created: new Date(milestone.recordCreate_timeMillis),
|
created: new Date(milestone.recordCreate_timeMillis ?? 0),
|
||||||
stamp: new Date(milestone.recordCreate_timeMillis),
|
stamp: new Date(milestone.recordCreate_timeMillis ?? 0),
|
||||||
lastModified: new Date(Math.max(milestone.recordUpdate_timeMillis, milestone.workOrderRecordUpdate_timeMillis)),
|
lastModified: new Date(Math.max(milestone.recordUpdate_timeMillis ?? 0, milestone.workOrderRecordUpdate_timeMillis ?? 0)),
|
||||||
allDay: !milestone.workOrderMilestoneTime,
|
allDay: !milestone.workOrderMilestoneTime,
|
||||||
summary,
|
summary,
|
||||||
url: workOrderUrl
|
url: workOrderUrl
|
||||||
|
|
@ -275,10 +275,12 @@ export default async function handler(request, response) {
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
calendarEvent.organizer({
|
calendarEvent.organizer({
|
||||||
name: milestone.recordCreate_userName,
|
name: milestone.recordCreate_userName ?? '',
|
||||||
email: getConfigProperty('settings.workOrders.calendarEmailAddress')
|
email: getConfigProperty('settings.workOrders.calendarEmailAddress')
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
calendar.serve(response);
|
response.setHeader('Content-Disposition', `inline; filename=calendar.ics`);
|
||||||
|
response.setHeader('Content-Type', 'text/calendar; charset=utf-8');
|
||||||
|
response.send(calendar.toString());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,7 @@ function buildEventDescriptionHTML_occupancies(
|
||||||
|
|
||||||
for (const occupant of occupancy.lotOccupancyOccupants ?? []) {
|
for (const occupant of occupancy.lotOccupancyOccupants ?? []) {
|
||||||
descriptionHTML += `${escapeHTML(
|
descriptionHTML += `${escapeHTML(
|
||||||
occupant.lotOccupantType!
|
occupant.lotOccupantType ?? ''
|
||||||
)}: ${escapeHTML(occupant.occupantName ?? '')} ${escapeHTML(
|
)}: ${escapeHTML(occupant.occupantName ?? '')} ${escapeHTML(
|
||||||
occupant.occupantFamilyName ?? ''
|
occupant.occupantFamilyName ?? ''
|
||||||
)}<br />`
|
)}<br />`
|
||||||
|
|
@ -196,7 +196,7 @@ function buildEventDescriptionHTML_prints(
|
||||||
if (printConfig) {
|
if (printConfig) {
|
||||||
descriptionHTML += `<p>
|
descriptionHTML += `<p>
|
||||||
${escapeHTML(printConfig.title)}<br />
|
${escapeHTML(printConfig.title)}<br />
|
||||||
${urlRoot}/print/${printName}/?workOrderId=${milestone.workOrderId!.toString()}
|
${urlRoot}/print/${printName}/?workOrderId=${milestone.workOrderId.toString()}
|
||||||
</p>`
|
</p>`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -229,7 +229,7 @@ function buildEventCategoryList(milestone: WorkOrderMilestone): string[] {
|
||||||
|
|
||||||
if (milestone.workOrderMilestoneTypeId) {
|
if (milestone.workOrderMilestoneTypeId) {
|
||||||
categories.push(
|
categories.push(
|
||||||
milestone.workOrderMilestoneType!,
|
milestone.workOrderMilestoneType ?? '',
|
||||||
milestone.workOrderType ?? ''
|
milestone.workOrderType ?? ''
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
@ -292,7 +292,7 @@ export default async function handler(
|
||||||
if (request.query.workOrderId && workOrderMilestones.length > 0) {
|
if (request.query.workOrderId && workOrderMilestones.length > 0) {
|
||||||
calendar.name(`Work Order #${workOrderMilestones[0].workOrderNumber}`)
|
calendar.name(`Work Order #${workOrderMilestones[0].workOrderNumber}`)
|
||||||
calendar.url(
|
calendar.url(
|
||||||
`${urlRoot}/workOrders/${workOrderMilestones[0].workOrderId!.toString()}`
|
`${urlRoot}/workOrders/${workOrderMilestones[0].workOrderId?.toString()}`
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -330,12 +330,12 @@ export default async function handler(
|
||||||
// Create event
|
// Create event
|
||||||
const eventData: ICalEventData = {
|
const eventData: ICalEventData = {
|
||||||
start: milestoneDate,
|
start: milestoneDate,
|
||||||
created: new Date(milestone.recordCreate_timeMillis!),
|
created: new Date(milestone.recordCreate_timeMillis ?? 0),
|
||||||
stamp: new Date(milestone.recordCreate_timeMillis!),
|
stamp: new Date(milestone.recordCreate_timeMillis ?? 0),
|
||||||
lastModified: new Date(
|
lastModified: new Date(
|
||||||
Math.max(
|
Math.max(
|
||||||
milestone.recordUpdate_timeMillis!,
|
milestone.recordUpdate_timeMillis ?? 0,
|
||||||
milestone.workOrderRecordUpdate_timeMillis!
|
milestone.workOrderRecordUpdate_timeMillis ?? 0
|
||||||
)
|
)
|
||||||
),
|
),
|
||||||
allDay: !milestone.workOrderMilestoneTime,
|
allDay: !milestone.workOrderMilestoneTime,
|
||||||
|
|
@ -403,11 +403,15 @@ export default async function handler(
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
calendarEvent.organizer({
|
calendarEvent.organizer({
|
||||||
name: milestone.recordCreate_userName!,
|
name: milestone.recordCreate_userName ?? '',
|
||||||
email: getConfigProperty('settings.workOrders.calendarEmailAddress')
|
email: getConfigProperty('settings.workOrders.calendarEmailAddress')
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
calendar.serve(response)
|
response.setHeader('Content-Disposition', `inline; filename=calendar.ics`)
|
||||||
|
|
||||||
|
response.setHeader('Content-Type', 'text/calendar; charset=utf-8')
|
||||||
|
|
||||||
|
response.send(calendar.toString())
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue