UNPKG

@openinc/parse-server-opendash

Version:
128 lines (127 loc) 5.11 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.init = init; const __1 = require(".."); const openware_1 = require("../features/openware"); const types_1 = require("../types"); async function init() { (0, __1.beforeSaveHook)(types_1.BDE_Result, async (request) => { const { object, original, user } = request; // await defaultHandler(request); // TODO }); (0, __1.afterSaveHook)(types_1.BDE_Result, async (request) => { const { object, original, user } = request; const data = object.get("result"); const saveDateTimestamp = data.saveDate; const values = []; const valueTypes = []; Object.keys(data.form?.form || data.pages) //Nur Steps Objekte .filter((page) => page.startsWith("step")) // die steps sortieren .sort((a, b) => { return (parseInt(a.replace("step", "")) - parseInt(b.replace("step", ""))); }) //die Steps auswerten .forEach((key) => { const fields = data.form.form[key].fields; fields.forEach((field) => { if (field.type.toLowerCase() === "text" || field.type.toLowerCase() === "select" || field.type.toLowerCase() === "number" || field.type.toLowerCase() === "autocomplete" || field.type.toLowerCase() === "duration") { const vtUnit = field.options.unit || ""; const vtName = field.title || ""; const vtType = field.od_type || "String"; let value = field.value || ""; if (vtType.toLowerCase() === "number") { try { value = parseFloat(field.value); } catch (e) { // Provided value was not a number! Defaulting to NaN as error indication value = "NaN"; } } values.push(value); valueTypes.push({ name: vtName.substring(0, 50), unit: vtUnit, type: vtType, }); } if (field.type === "choose_image") { values.push(field.value); valueTypes.push({ name: "Media", unit: "", type: "String", }); } if (field.type === "check_box") { let unit = ""; field.items .sort((a, b) => { if (a.value < b.value) return -1; if (a.value > b.value) return 1; return 0; }) .forEach((item) => { let boolVal = false; if (Array.isArray(field.value)) { boolVal = field.value.includes(item.value); } else { boolVal = field.value === item.value; } values.push(boolVal); valueTypes.push({ name: item.label.substring(0, 50), unit: unit, type: "Boolean", }); }); } if (field.type === "startstop") { values.push(field.value[0]); valueTypes.push({ name: field.title + " Start-Stop", unit: "", type: "Boolean", }); values.push(field.value[1]); valueTypes.push({ name: field.title + " Dauer", unit: "ms", type: "Number", }); } if (field.type === "info") { } //FIELD }); //STEP }); if (data.form?.storeUserInfo || false) { values.push(data.user.username + " (" + data.user.objectId + ")"); valueTypes.push({ name: "Nutzer", unit: "", type: "String", }); } await (0, openware_1.publishDataItem)({ id: data.form?.RID || data.formID, source: data.source.source || data.source, reference: data.reference !== null ? data.reference : undefined, meta: {}, name: data.form.name || data.title, valueTypes: valueTypes, values: [{ date: saveDateTimestamp, value: values }], }, data.user.email); }); }