![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol-form/js/flexformeditor/FlexFormEditor.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _BaseEditor = _interopRequireDefault(require("../core/BaseEditor")); var _OOP = _interopRequireDefault(require("absol/src/HTML5/OOP")); var _FCore = require("../core/FCore"); require("../../css/flexformeditor.css"); var _LayoutEditor = _interopRequireDefault(require("../layouteditor/LayoutEditor")); var _BlockEditor = _interopRequireDefault(require("../ciruiteditor/blockeditor/BlockEditor")); var _R = _interopRequireDefault(require("../R")); var _utils = require("../core/utils"); var _CircuitDiagramEditor = _interopRequireDefault(require("../ciruiteditor/diagrameditor/CircuitDiagramEditor")); var _FlexFormEditorCmd = _interopRequireDefault(require("./FlexFormEditorCmd")); var _generator = require("absol/src/JSMaker/generator"); var _FOutline = require("../launcher/FOutline"); var _FDEditor = _interopRequireDefault(require("../fdeditor/FDEditor")); function FlexFormEditor() { _BaseEditor.default.call(this); this.cmdRunner.assign(_FlexFormEditorCmd.default); this._data = null; this._activatedEditorIdx = -1; this.setContext(_R.default.FLEX_FORM_EDITOR, this); this.layoutEditor = new _LayoutEditor.default(); this.blockEditor = new _BlockEditor.default(); this.diagramEditor = new _CircuitDiagramEditor.default(); this.fdEditor = new _FDEditor.default(); /*** * * @type {(LayoutEditor|BlockEditor|CircuitDiagramEditor)[]} */ this.subEditors = [this.layoutEditor, this.blockEditor, this.diagramEditor, this.fdEditor]; this.outlineDelegate = new FlexFormOutlineDelegate(this); this.setContext(_R.default.LAYOUT_EDITOR, this.layoutEditor); this.setContext(_R.default.DIAGRAM_EDITOR, this.diagramEditor); this.setContext(_R.default.BLOCK_EDITOR, this.blockEditor); this.setContext(_R.default.FD_EDITOR, this.fdEditor); } _OOP.default.mixClass(FlexFormEditor, _BaseEditor.default); FlexFormEditor.prototype.setData = function (data) { try { data = this.implicitData(data); this.getView(); this._data = data || {}; this.layoutEditor.setData(data.layout); this.blockEditor.setData(data.circuit.blocks); this.diagramEditor.setData(data.circuit.lines, data.circuit.diagram); this.outlineDelegate.notifyTreeChange(); } catch (err) { var dataBlob = new Blob(['data = ' + (0, _generator.generateJSVariable)(data)], { type: 'text/plain' }); console.error("Error data", [URL.createObjectURL(dataBlob), data]); console.error(err); } }; FlexFormEditor.prototype.getData = function () { this._data.layout = this.layoutEditor.getData(); this._data.circuit.blocks = this.blockEditor.getData(); this._data.circuit.lines = this.diagramEditor.getLineData(); this._data.circuit.diagram = this.diagramEditor.getDiagramData(); return this.explicitData(this._data); }; /*** * @typedef FDPermissions * @property {string} owner */ /*** * * @typedef FDAttributes * @property {string} id * @property {string} name * @property {FDPermissions} permissions * * */ /*** * @typedef FDStyle * @extends Object * * */ /*** * @typedef ComponentData * @property {string} tag * @property {FDAttributes} attributes * @property {FDStyle} style * @property {ComponentData[]} children * */ /*** * @typedef DiagramData * @property {string[]} includedBlocks * @property {{}} positions * */ /*** * @typedef BlockData * @property {string} tag * @property {FDAttributes} attributes */ /*** * @typedef LineData * @property {string} u * @property {string} uPin * @property {string} v * @property {string} vPin * @property {string} id * @property {FDPermissions} permissions */ /*** * @typedef CircuitData * @property {BlockData[]} blocks * @property {LineData[]} lines * @property {DiagramData} diagram */ /*** * * @typedef FormData * @property {string} app * @property {string} version * @property {ComponentData} layout * @property {CircuitData} circuit * * */ FlexFormEditor.prototype.implicitData = function (data) { data = (0, _generator.copyJSVariable)(data); var layout = data.layout || data; var version = '1.1.1'; var circuit = data.circuit || {}; circuit.blocks = circuit.blocks || []; circuit.lines = circuit.lines || []; circuit.diagram = circuit.diagram || {}; circuit.diagram.includedBlocks = circuit.diagram.includedBlocks || []; circuit.diagram.positions = circuit.diagram.positions || {}; circuit.blocks.forEach(function (block) { block.attributes.id = block.attributes.id || (0, _utils.randomUniqueIdent)(); block.attributes.name = block.attributes.name || block.attributes.id; }); var twoWayLines = []; circuit.lines.forEach(function (line) { line.id = line.id || (0, _utils.randomUniqueIdent)(); if (line.twoWay) { delete line.twoWay; twoWayLines.push(Object.assign({}, line, { u: line.v, v: line.u, uPin: line.vPin, vPin: line.uPin })); } }); circuit.lines.push.apply(circuit.lines, twoWayLines); var id2Name = {}; var name2Id = {}; var idList = {}; function visit(node) { var name = node.attributes && node.attributes.name; var id = node.attributes && node.attributes.id; //auto fix tag if (!node.tag && !node.class) { if (node.attributes && node.attributes.body && 'args' in node.attributes) { node.tag = 'function'; console.warn("Detect node without tag", 'fixed with tag = "function"'); } else { console.warn("Detect node without tag, can not be fixed", node); } } if (!id) { if (!node.attributes) { node.attributes = {}; } id = (0, _utils.randomUniqueIdent)(); node.attributes.id = id; } if (idList[id]) { id = (0, _utils.randomUniqueIdent)(); if (!node.attributes) { node.attributes = {}; } node.attributes.id = id; } idList[id] = true; if (id && name) { id2Name[id] = name; name2Id[name] = id; } var group = node.attributes && node.attributes.group; if (group && group.trim && group.trim().length > 0) { idList[group.trim()] = true; } if (node.children) node.children.forEach(visit); } visit(layout); circuit.blocks.forEach(visit); circuit.blocks.forEach(function (block) { delete block.id; //fix invalid data }); circuit.lines.forEach(function (line) { if (name2Id[line.u]) { line.u = name2Id[line.u]; } if (name2Id[line.v]) { line.v = name2Id[line.v]; } }); circuit.lines = circuit.lines.filter(function (line) { if (!idList[line.u] || !idList[line.v]) { if (window.ABSOL_DEBUG) console.error("invalid line ", line); } return idList[line.u] && idList[line.v]; }); circuit.diagram.includedBlocks = circuit.diagram.includedBlocks.filter(function (id) { return idList[id]; }); return { app: _R.default.APP, version: version, layout: layout, circuit: circuit }; }; FlexFormEditor.prototype.explicitData = function (data) { data = (0, _generator.replaceDateStringJSVariable)(data); var id2Name = {}; var nameList = {}; function visit(node) { var name = node.attributes && node.attributes.name; var id = node.attributes && node.attributes.id; if (id && name && !nameList[name]) { nameList[name] = true; id2Name[id] = name; } if (node.children) node.children.forEach(visit); } visit(data.layout); data.circuit && data.circuit.blocks && data.circuit.blocks.forEach(visit); data.circuit && data.circuit.lines && data.circuit.lines.forEach(function (line) { if (id2Name[line.u]) line.u = id2Name[line.u]; if (id2Name[line.v]) line.v = id2Name[line.v]; }); return data; }; FlexFormEditor.prototype.createView = function () { this.$tabFrames = [(0, _FCore._)({ tag: 'tabframe', child: this.layoutEditor.getView() }), (0, _FCore._)({ tag: 'tabframe', child: this.blockEditor.getView() }), (0, _FCore._)({ tag: 'tabframe', child: this.diagramEditor.getView() }), (0, _FCore._)({ tag: 'tabframe', child: this.fdEditor.getView() })]; this.$view = (0, _FCore._)({ class: 'as-flex-form-editor', child: [{ class: 'as-flex-form-editor-right-tab', child: [{ class: 'as-flex-form-editor-right-tab-top', child: [{ tag: 'button', class: 'as-form-editor-vertical-tab-btn', child: ['span.mdi.mdi-view-quilt[style="color:rgb(30, 100, 255)"]', { text: 'Layout' }], on: { click: this.activeEditorTab.bind(this, 0) } }, { tag: 'button', class: 'as-form-editor-vertical-tab-btn', child: ['mdi-shape', { text: 'Blocks' }], on: { click: this.activeEditorTab.bind(this, 1) } }, { tag: 'button', class: 'as-form-editor-vertical-tab-btn', child: ['span.mdi.mdi-transit-connection-variant[style="color:rgb(255, 100, 50)"]', { text: 'Lines' }], on: { click: this.activeEditorTab.bind(this, 2) } }, { tag: 'button', class: 'as-form-editor-vertical-tab-btn', style: !window['ABSOL_DEBUG'] ? { display: 'none' } : {}, child: ['span.mdi.mdi-text-recognition[style="color:rgb(50, 100, 255)"]', { text: 'Wysiwyg(Test)' }], on: { click: this.activeEditorTab.bind(this, 3) } }] }] }, { tag: 'frameview', class: 'as-flex-form-editor-frame-view', child: this.$tabFrames }] }); this.$tabBtns = (0, _FCore.$$)('.as-flex-form-editor-right-tab-top > button', this.$view); this.$frameView = (0, _FCore.$)('.as-flex-form-editor-frame-view', this.$view); // console.log(this.$tabFrames[0]); this.activeEditorTab(0); }; FlexFormEditor.prototype.activeEditorTab = function (idx) { if (this._activatedEditorIdx === idx) return; this._activatedEditorIdx = idx; for (var i = 0; i < this.$tabFrames.length; ++i) { if (i === idx) { this.$tabFrames[i].requestActive(); if (!this.$tabBtns[i].hasClass('active')) { this.$tabBtns[i].addClass('active'); if (this.state === "RUNNING") { this.subEditors[i].start(); } } } else { if (this.$tabBtns[i].hasClass('active')) { this.$tabBtns[i].removeClass('active'); if (this.state === "RUNNING") this.subEditors[i].pause(); } } } }; FlexFormEditor.prototype.onAttached = function () { this.layoutEditor.attach(this); this.blockEditor.attach(this); this.diagramEditor.attach(this); this.fdEditor.attach(this); }; FlexFormEditor.prototype.onStart = function () { /**** * * @type {FormEditor} */ this.formEditor = this.getContext(_R.default.FORM_EDITOR); this.selfHolder = this.formEditor.getEditorHolderByEditor(this); this.layoutEditor.start(true); this.blockEditor.start(true); this.diagramEditor.start(true); this.fdEditor.start(true); // this.flexFormOutline.start(); }; FlexFormEditor.prototype.onResume = function () { if (this._activatedEditorIdx >= 0) { this.subEditors[this._activatedEditorIdx].resume(); } this.outline = this.getContext(_R.default.COMPONENT_OUTLINE); if (this.outline) this.outline.delegate = this.outlineDelegate; }; FlexFormEditor.prototype.onPause = function () { if (this._activatedEditorIdx >= 0) this.subEditors[this._activatedEditorIdx].pause(); }; FlexFormEditor.prototype.onStop = function () { this.layoutEditor.stop(); this.blockEditor.stop(); this.diagramEditor.stop(); // this.flexFormOutline.stop(); }; FlexFormEditor.prototype.onDestroy = function () { this.layoutEditor.destroy(); this.blockEditor.destroy(); this.diagramEditor.destroy(); }; FlexFormEditor.prototype.notifyUnsaved = function () { this.selfHolder.$tab.modified = true; }; FlexFormEditor.prototype.notifySaved = function () { this.selfHolder.$tab.modified = false; }; var _default = FlexFormEditor; /*** * @extends OutlineDelegate * @param {FlexFormEditor} editor * @constructor */ exports.default = _default; function FlexFormOutlineDelegate(editor) { this.editor = editor; _FOutline.OutlineDelegate.call(this); this.layoutOutlineDelegate = this.editor.layoutEditor.outlineDelegate; this.layoutOutlineDelegate.partner = this; this.fdLayoutOutlineDelegate = this.editor.fdEditor.outlineDelegate; this.fdLayoutOutlineDelegate.partner = this; } _OOP.default.mixClass(FlexFormOutlineDelegate, _FOutline.OutlineDelegate); FlexFormOutlineDelegate.prototype.getTreeData = function () { return [this.layoutOutlineDelegate, this.fdLayoutOutlineDelegate].reduce((ac, d) => { var subTree = d.getTreeData(); if (subTree instanceof Array) { ac.push.apply(ac, subTree); subTree.forEach(it => it.ofDelegate = d); } else if (subTree) { ac.push(subTree); subTree.ofDelegate = d; } return ac; }, []); }; FlexFormOutlineDelegate.prototype._delegateOf = function (nodeElt) { var delegate; var c = nodeElt; while (c && !delegate) { delegate = c.data && c.data.ofDelegate; c = c.parentElement; } return delegate || null; }; FlexFormOutlineDelegate.prototype.getNodeContextMenu = function (nodeElt) { var delegate = this._delegateOf(nodeElt); if (delegate) { return delegate.getNodeContextMenu(nodeElt); } }; FlexFormOutlineDelegate.prototype.getSelectedIdList = function () { return this.layoutOutlineDelegate.getSelectedIdList(); }; FlexFormOutlineDelegate.prototype.onNodeSelectContextMenu = function (nodeElt, menuItem, event) { var delegate = this._delegateOf(nodeElt); if (delegate) { return delegate.onNodeSelectContextMenu(nodeElt, menuItem, event); } }; FlexFormOutlineDelegate.prototype.onClickNode = function (nodeElt, event) { if (nodeElt.data.id) { this.layoutOutlineDelegate.onClickNode(nodeElt, event); } };