ade-planning-api
Version:
An unofficial API wrapper for ADE Planning from Adesoft
93 lines (92 loc) • 3.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getEvents = getEvents;
const color_1 = require("../utils/color");
const date_1 = require("../utils/date");
/**
* Get the events resources
* @param resource The resource to parse
* @returns A list of event resources (EventResource[])
*/
function parseEventsResource(resource) {
if (!resource[0].resource) {
return [];
}
return resource[0].resource.map(e => ({
fromWorkflow: Boolean(e.$.fromWorkflow),
nodeId: parseInt(e.$.nodeId, 10),
nodeOrId: parseInt(e.$.nodeOrId, 10),
quantity: parseInt(e.$.quantity, 10),
category: e.$.category,
name: e.$.name,
id: parseInt(e.$.id, 10),
}));
}
/**
* Get the events list
* @param fetcher ADEFetcher instance
* @param params The parameters to pass to the API.
* @returns A list of events (Event[])
*/
async function getEvents(fetcher, params) {
const data = await fetcher.get({ function: "getEvents", ...params });
if (!data.events) { // Single event
data.events = { event: [data.event] };
}
if (!data.events.event[0]) { // No events
return [];
}
return data.events.event.map(event => {
const baseEvent = {
id: parseInt(event.$.id, 10),
activityId: parseInt(event.$.activityId, 10),
session: event.$.session,
repetition: parseInt(event.$.repetition, 10),
};
if (params.detail >= 2) {
Object.assign(baseEvent, { name: event.$.name });
}
if (params.detail >= 3) {
Object.assign(baseEvent, {
endHour: event.$.endHour,
startHour: event.$.startHour,
date: (0, date_1.parseDateFromDDMMYYYY)(event.$.date),
absoluteSlot: parseInt(event.$.absoluteSlot, 10),
slot: parseInt(event.$.slot, 10),
day: parseInt(event.$.day, 10),
week: parseInt(event.$.week, 10),
});
}
if (params.detail >= 4) {
Object.assign(baseEvent, {
additionalResources: parseInt(event.$.additionalResources, 10),
duration: parseInt(event.$.duration, 10),
});
}
if (params.detail >= 5) {
Object.assign(baseEvent, {
info: event.$.info,
note: event.$.note,
color: (0, color_1.parseRGBColor)(event.$.color),
});
}
if (params.detail >= 6) {
Object.assign(baseEvent, { isLockPosition: Boolean(event.$.isLockPosition) });
}
if (params.detail >= 7) {
Object.assign(baseEvent, {
lastUpdate: (0, date_1.parseDateFromDDMMYYYYHHMM)(event.$.lastUpdate),
creation: (0, date_1.parseDateFromDDMMYYYYHHMM)(event.$.creation),
isLockResources: Boolean(event.$.isLockResources),
isSoftKeepResources: Boolean(event.$.isSoftKeepResources),
});
}
if (params.detail >= 8) {
Object.assign(baseEvent, {
resources: parseEventsResource(event.resources),
additional: event.additional, // TODO: Parse additional
});
}
return baseEvent;
});
}