@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
128 lines (127 loc) • 5.11 kB
JavaScript
"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);
});
}