UNPKG

ade-planning-api

Version:

An unofficial API wrapper for ADE Planning from Adesoft

93 lines (92 loc) 3.34 kB
"use strict"; 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; }); }