From 0ee8892190283563bc0705a29fa81503bd1229a2 Mon Sep 17 00:00:00 2001 From: "zude.hzd" Date: Mon, 31 Aug 2020 16:53:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9js=E9=9D=A2=E6=9D=BF?= =?UTF-8?q?=E7=9A=84=E4=BF=9D=E5=AD=98schema=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/demo/src/editor/plugins/saveload.tsx | 23 ++++++++----- packages/plugin-source-editor/src/index.tsx | 33 ++++++++++++++++--- .../plugin-source-editor/src/transform.ts | 7 ++-- 3 files changed, 47 insertions(+), 16 deletions(-) diff --git a/packages/demo/src/editor/plugins/saveload.tsx b/packages/demo/src/editor/plugins/saveload.tsx index eb8582bc6..75532802f 100644 --- a/packages/demo/src/editor/plugins/saveload.tsx +++ b/packages/demo/src/editor/plugins/saveload.tsx @@ -22,14 +22,21 @@ interface BasicSection { const Codeout = ({ editor }: PluginProps) => { const handleSaveClick = () => { - const designer = editor.get(Designer); - if (designer) { - const schema = designer.schema.componentsTree[designer.schema.componentsTree.length - 1]; // editor.get('schema'); - const schemaStr = JSON.stringify(schema); - window.localStorage.setItem('schema_data', schemaStr); - console.info('save schema:', schemaStr); - alert('保存成功'); - } + + debugger; + + let schema = editor.get('designer').project.getSchema(); + console.log(schema); + + + // const designer = editor.get(Designer); + // if (designer) { + // const schema = designer.schema.componentsTree[designer.schema.componentsTree.length - 1]; // editor.get('schema'); + // const schemaStr = JSON.stringify(schema); + // window.localStorage.setItem('schema_data', schemaStr); + // console.info('save schema:', schemaStr); + // alert('保存成功'); + // } }; const handleLoadClick = () => { diff --git a/packages/plugin-source-editor/src/index.tsx b/packages/plugin-source-editor/src/index.tsx index 4985679cc..dc384da98 100644 --- a/packages/plugin-source-editor/src/index.tsx +++ b/packages/plugin-source-editor/src/index.tsx @@ -71,6 +71,14 @@ export default class SourceEditor extends Component<{ this.callEditorEvent('sourceEditor.focusByFunction', params); }); + + // 插件面板关闭事件,监听规则同上 + editor.on('skeleton.panel-dock.unactive',(pluginName,dock)=>{ + if (pluginName == 'sourceEditor'){ + this.saveSchema(); + } + }) + let schema = editor.get('designer').project.getSchema(); this.initCode(schema); } @@ -231,12 +239,29 @@ export default class SourceEditor extends Component<{ }); } - let functionMap = transfrom.code2Schema(newCode); - let schema = editor.get('designer').project.getSchema(); - let newSchema = transfrom.setFunction2Schema(functionMap, schema); - editor.get('designer').project.load(newSchema); + // let functionMap = transfrom.code2Schema(newCode); + // let schema = editor.get('designer').project.getSchema(); + // let newSchema = transfrom.setFunction2Schema(functionMap, schema); + // if (newSchema!=''){ + // editor.get('designer').project.load(newSchema,true); + + }; + + saveSchema = () => { + const {jsCode} = this.state; + const {editor} = this.props; + let functionMap = transfrom.code2Schema(jsCode); + let schema = editor.get('designer').project.getSchema(); + let oldSchemaStr = JSON.stringify(schema); + let newSchema = transfrom.setFunction2Schema(functionMap, schema); + + if (newSchema!='' && JSON.stringify(newSchema) != oldSchemaStr){ + editor.get('designer').project.load(newSchema,true); + } + } + render() { const { selectTab, jsCode, css } = this.state; const tabs = [ diff --git a/packages/plugin-source-editor/src/transform.ts b/packages/plugin-source-editor/src/transform.ts index 1ff3c17b0..bdab46c1d 100644 --- a/packages/plugin-source-editor/src/transform.ts +++ b/packages/plugin-source-editor/src/transform.ts @@ -17,9 +17,7 @@ const transfrom = { }, code2Schema(code: String) { - let newCode = code.replace(/export default class/,'class A'); - let A,a; try { A = eval('('+newCode + ')'); @@ -28,7 +26,6 @@ const transfrom = { return '' } - let functionNameList = Object.getOwnPropertyNames(a.__proto__); let functionMap = {}; @@ -42,11 +39,11 @@ const transfrom = { } }) - if (a.state){ functionMap.state = a.state } + console.log(functionMap); return functionMap; }, @@ -56,7 +53,9 @@ const transfrom = { }, setFunction2Schema(functionMap,schema){ + let pageNode = schema.componentsTree[0]; + if (!pageNode) return ''; for (let key in functionMap){ if (key == 'state'){ pageNode.state = functionMap[key];