UNPKG

@gmetrixr/rjson

Version:
254 lines (253 loc) 10.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.migrateElement = void 0; const r_1 = require("../../../r"); const gdash_1 = require("@gmetrixr/gdash"); /** * @description Converts t type project json to r type project json */ class Migration { execute(projectJson) { return migrateProject(projectJson); } } const migration = new Migration(); exports.default = migration; const migrateProject = (tProject) => { var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r; const projectJson = (0, r_1.createRecord)(r_1.RT.project, r_1.R.SINGLE_RECORD_ID); const projectF = r_1.r.record(projectJson); if (tProject.scenes === undefined) { const sceneR = (0, r_1.createRecord)(r_1.RT.scene, 100111); projectF.addRecord(sceneR); } if (tProject.pp !== undefined) { if (((_a = tProject.pp) === null || _a === void 0 ? void 0 : _a.scenes_order) !== undefined) { const scenes_order = (_b = tProject.pp) === null || _b === void 0 ? void 0 : _b.scenes_order; for (const sceneId of scenes_order) { const tScene = tProject === null || tProject === void 0 ? void 0 : tProject.scenes[sceneId]; if (tScene !== undefined) { const scene = migrateScene(tScene); projectF.addRecord(scene); } } (_c = tProject === null || tProject === void 0 ? void 0 : tProject.pp) === null || _c === void 0 ? true : delete _c.scenes_order; } if (((_d = tProject.pp) === null || _d === void 0 ? void 0 : _d.vars_order) !== undefined) { const vars_order = (_e = tProject === null || tProject === void 0 ? void 0 : tProject.pp) === null || _e === void 0 ? void 0 : _e.vars_order; for (const varId of vars_order) { const tVar = tProject === null || tProject === void 0 ? void 0 : tProject.vars[varId]; if (tVar !== undefined) { const varJson = migrateVar(tVar); projectF.addRecord(varJson); } } delete tProject.pp.vars_order; } if (((_f = tProject.pp) === null || _f === void 0 ? void 0 : _f.menu_structure) !== undefined) { const menu_structure = (_g = tProject === null || tProject === void 0 ? void 0 : tProject.pp) === null || _g === void 0 ? void 0 : _g.menu_structure; for (const tMenu of menu_structure) { const menu = migrateMenu(tMenu); projectF.addRecord(menu); } (_h = tProject === null || tProject === void 0 ? void 0 : tProject.pp) === null || _h === void 0 ? true : delete _h.menu_structure; } if (tProject.shopping !== undefined) { const shopping = migrateShopping(tProject === null || tProject === void 0 ? void 0 : tProject.shopping); projectF.addRecord(shopping); } if (((_j = tProject.pp.lead_gen_fields) === null || _j === void 0 ? void 0 : _j.heading) !== undefined) { projectF.set(r_1.rtp.project.lead_gen_heading, (_k = tProject.pp.lead_gen_fields) === null || _k === void 0 ? void 0 : _k.heading); } if (((_l = tProject.pp.lead_gen_fields) === null || _l === void 0 ? void 0 : _l.termsOfServiceLink) !== undefined) { projectF.set(r_1.rtp.project.lead_gen_tos, (_m = tProject.pp.lead_gen_fields) === null || _m === void 0 ? void 0 : _m.termsOfServiceLink); } if (((_o = tProject.pp.lead_gen_fields) === null || _o === void 0 ? void 0 : _o.order) !== undefined) { const order = (_q = (_p = tProject === null || tProject === void 0 ? void 0 : tProject.pp) === null || _p === void 0 ? void 0 : _p.lead_gen_fields) === null || _q === void 0 ? void 0 : _q.order; for (const leadGenFieldId of order) { const tLeadGenField = tProject.pp.lead_gen_fields.map[leadGenFieldId]; const leadGenField = migrateLeadGenField(tLeadGenField); projectF.addRecord(leadGenField); } } (_r = tProject.pp) === null || _r === void 0 ? true : delete _r.lead_gen_fields; projectJson.props = { ...projectJson === null || projectJson === void 0 ? void 0 : projectJson.props, ...tProject === null || tProject === void 0 ? void 0 : tProject.pp }; } projectF.set(r_1.rtp.project.version, 100); return projectJson; }; const migrateLeadGenField = (tLeadGenField) => { const leadGenField = (0, r_1.createRecord)(r_1.RT.lead_gen_field, tLeadGenField.id, tLeadGenField.name); delete tLeadGenField.id; delete tLeadGenField.name; leadGenField.props = tLeadGenField; return leadGenField; }; // export interface Menu { // name: string, // show: boolean, // scene_no: number // } const migrateMenu = (tMenu) => { //ids kept deterministic (but unique) for test cases const menu = (0, r_1.createRecord)(r_1.RT.menu, tMenu.scene_no + 100000); menu.props.menu_scene_id = tMenu.scene_no; if (tMenu.name !== undefined) menu.props.menu_display_name = tMenu.name; if (tMenu.show !== undefined) menu.props.menu_show = tMenu.show; return menu; }; const migrateVar = (tVar) => { const id = tVar.var_id; const name = tVar.var_name; delete tVar.var_id; delete tVar.var_name; const varJson = (0, r_1.createRecord)(r_1.RT.variable, id, name); varJson.props = tVar; return varJson; }; const migrateShopping = (tShopping) => { const shoppingJson = (0, r_1.createRecord)(r_1.RT.shopping, r_1.R.SINGLE_RECORD_ID); const shoppingF = r_1.r.record(shoppingJson); for (const productId of tShopping.products.order) { const tProduct = tShopping.products.map[productId]; const product = (0, r_1.createRecord)(r_1.RT.product, productId); delete tProduct.id; tProduct.scene_id = tProduct.scene_no; delete tProduct.scene_no; product.props = tProduct; shoppingF.addRecord(product); } delete tShopping.id; shoppingJson.props = tShopping.shp; return shoppingJson; }; const migrateScene = (tScene) => { const id = tScene.sp.scene_no; const name = tScene.sp.scene_name; delete tScene.sp.scene_no; delete tScene.sp.scene_name; const sceneJson = (0, r_1.createRecord)(r_1.RT.scene, id, name); const sceneF = r_1.r.record(sceneJson); for (const elementId of tScene.sp.elements_order) { const tElement = tScene.elements[elementId]; const element = (0, exports.migrateElement)(tElement); sceneF.addRecord(element); } delete tScene.sp.elements_order; for (const ruleId of tScene.sp.connections_order) { const tRule = tScene.connections[ruleId]; const rule = migrateRule(tRule); sceneF.addRecord(rule); } delete tScene.sp.connections_order; sceneJson.props = tScene.sp; return sceneJson; }; const migrateElement = (tElement) => { const id = tElement.ep.element_id; const name = tElement.ep.element_name; delete tElement.ep.element_id; delete tElement.ep.element_name; const element = (0, r_1.createRecord)(r_1.RT.element, id, name); const elementF = r_1.r.record(element); if (tElement.ep.elements_order) { for (const subElementId of tElement.ep.elements_order) { const subtElement = tElement.ep.elements[subElementId]; if (subtElement !== undefined) { const subElement = (0, exports.migrateElement)(subtElement); elementF.addRecord(subElement); } } delete tElement.ep.elements_order; delete tElement.ep.elements; } if (tElement.ep.items_order) { for (const itemId of tElement.ep.items_order) { const tItem = tElement.ep.items[itemId]; if (tItem !== undefined) { const item = migrateItem(tItem); elementF.addRecord(item); } } delete tElement.ep.items_order; delete tElement.ep.items; } //const elementF = new NodeFactory(element); element.props = tElement.ep; return element; }; exports.migrateElement = migrateElement; const migrateItem = (tItem) => { const id = tItem.id; const name = tItem.name; const item = (0, r_1.createRecord)(r_1.RT.item, id, name); const itemF = r_1.r.record(item); delete tItem.id; delete tItem.name; if (tItem.options_order) { for (const optionId of tItem.options_order) { const tOption = tItem.options[optionId]; if (tOption !== undefined) { const option = (0, r_1.createRecord)(r_1.RT.option, optionId); option.props.is_checked = tOption.is_checked; option.props.option_text = tOption.text; itemF.addRecord(option); } } delete tItem.options_order; delete tItem.options; } item.props = tItem; // * if item props contain `source` prop, rename to `item_source` if ("source" in item.props) { item.props["item_source"] = gdash_1.jsUtils.deepClone(item.props.source); delete item.props.source; } return item; }; const migrateRule = (tRule) => { const id = tRule.cp.connection_id; const name = tRule.cp.connection_name; delete tRule.cp.connection_id; delete tRule.cp.connection_name; const rule = (0, r_1.createRecord)(r_1.RT.rule, id, name); const ruleF = r_1.r.record(rule); for (const id of tRule.cp.we_order) { const tWhenEvent = tRule.when_events[id]; if (tWhenEvent === undefined) { console.log(`Data was corrupt. Couldn't find when event with id ${id}. Skipping it.`); continue; } const whenEvent = migrateWhenEvent(tWhenEvent); ruleF.addRecord(whenEvent); } delete tRule.cp.we_order; for (const id of tRule.cp.ta_order) { const tThenAction = tRule.then_actions[id]; if (tThenAction === undefined) { console.log(`Data was corrupt. Couldn't find then action with id ${id}. Skipping it.`); continue; } const thenAction = migrateThenAction(tThenAction); ruleF.addRecord(thenAction); } delete tRule.cp.ta_order; rule.props = tRule.cp; return rule; }; const migrateWhenEvent = (tWhenEvent) => { const id = tWhenEvent.event_id; delete tWhenEvent.event_id; const whenEvent = (0, r_1.createRecord)(r_1.RT.when_event, id); whenEvent.props = tWhenEvent; return whenEvent; }; const migrateThenAction = (tThenAction) => { const id = tThenAction.action_id; delete tThenAction.action_id; const thenAction = (0, r_1.createRecord)(r_1.RT.then_action, id); thenAction.props = tThenAction; return thenAction; };