UNPKG

pm4js

Version:

Process Mining for Javascript

99 lines (86 loc) 2.38 kB
class Ocel20FormatFixer { static apply(ocel) { if (!("ocel:objectChanges" in ocel)) { ocel["ocel:objectChanges"] = []; } for (let evId in ocel["ocel:events"]) { let ev = ocel["ocel:events"][evId]; if (!("ocel:typedOmap" in ev)) { let typedOmap = []; for (let objId of ev["ocel:omap"]) { typedOmap.push({"ocel:oid": objId, "ocel:qualifier": "EMPTY"}); } ev["ocel:typedOmap"] = typedOmap; } } for (let objId in ocel["ocel:objects"]) { let obj = ocel["ocel:objects"][objId]; if (!("ocel:o2o" in obj)) { obj["ocel:o2o"] = []; } } if (!("ocel:objectTypes" in ocel)) { let objectTypes = {}; for (let objId in ocel["ocel:objects"]) { let obj = ocel["ocel:objects"][objId]; let type = obj["ocel:type"]; if (!(type in objectTypes)) { objectTypes[type] = {}; } for (let att in obj["ocel:ovmap"]) { let attValue = obj["ocel:ovmap"][att]; let transf = Ocel20FormatFixer.transformAttValue(attValue); objectTypes[type][att] = transf[0]; } } ocel["ocel:objectTypes"] = objectTypes; } if (!("ocel:eventTypes" in ocel)) { let eventTypes = {}; for (let evId in ocel["ocel:events"]) { let eve = ocel["ocel:events"][evId]; let type = eve["ocel:activity"]; if (!(type in eventTypes)) { eventTypes[type] = {}; } for (let att in eve["ocel:vmap"]) { let attValue = eve["ocel:vmap"][att]; let transf = Ocel20FormatFixer.transformAttValue(attValue); eventTypes[type][att] = transf[0]; } } ocel["ocel:eventTypes"] = eventTypes; } return ocel; } static transformAttValue(attValue) { let xmlTag = null; let value = null; if (typeof attValue == "string") { xmlTag = "string"; value = attValue; } else if (typeof attValue == "object") { return "date"; xmlTag = "date"; value = attValue.toISOString(); } else if (typeof attValue == "number") { xmlTag = "float"; value = ""+attValue; } else { xmlTag = "string"; value = attValue; } return [xmlTag, value]; } } try { module.exports = {Ocel20FormatFixer: Ocel20FormatFixer}; global.Ocel20FormatFixer = Ocel20FormatFixer; } catch (err) { // not in node //console.log(err); }