From 1a8bd23d5ec39d9627208c2992448dbfded07b08 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 31 Aug 2020 18:44:50 +0000 Subject: [PATCH] --- ayanova/src/views/ay-report-edit.vue | 63 +++++++++++++++++++++------- 1 file changed, 48 insertions(+), 15 deletions(-) diff --git a/ayanova/src/views/ay-report-edit.vue b/ayanova/src/views/ay-report-edit.vue index fd8dce2e..b1a20ea3 100644 --- a/ayanova/src/views/ay-report-edit.vue +++ b/ayanova/src/views/ay-report-edit.vue @@ -22,11 +22,11 @@ Style - + JSPrerender - + JSHelpers @@ -123,22 +123,28 @@ export default { // language: "javascript" // }; let vm = this; + + //Created editor models for each type of report element that can be edited vm.editData.template.model = monaco.editor.createModel( - vm.template, + vm.obj.template, "javascript" ); - vm.editData.style.model = monaco.editor.createModel(vm.style, "css"); + + vm.editData.style.model = monaco.editor.createModel(vm.obj.style, "css"); vm.editData.jsPrerender.model = monaco.editor.createModel( - vm.jsPrerender, + vm.obj.jsPrerender, "javascript" ); vm.editData.jsHelpers.model = monaco.editor.createModel( - vm.jsHelpers, + vm.obj.jsHelpers, "javascript" ); + //Create the editor itself vm.editor = monaco.editor.create(document.getElementById("editContainer"), { model: vm.editData.template.model }); + //save the initial state because we're going to move away from it immediately + vm.editData.template.state = vm.editor.saveViewState(); vm.showEditor = false; }, beforeDestroy() { @@ -158,6 +164,7 @@ export default { editAreaHeight: 300, activeTab: "properties", lastTab: "properties", + lastEditTab: "template", showEditor: true, editData: { template: { @@ -186,9 +193,15 @@ export default { roles: null, objectType: 0, template: `console.log('hello world');`, - style: "", - jsPrerender: "", - jsHelpers: "", + style: `.example { + color: blue; +}`, + jsPrerender: `function pre(reportdata){ + return reportData; +}`, + jsHelpers: `Handlebars.registerHelper('loud', function (aString) { + return aString.toUpperCase() +})`, renderType: 0 }, formState: { @@ -214,7 +227,7 @@ export default { // onViewChange() { let vm = this; - let editor = vm.$refs.editor ? vm.$refs.editor.getEditor() : null; + //let editor = vm.$refs.editor ? vm.$refs.editor.getEditor() : null; // console.log(`Switching from ${vm.lastTab} to ${vm.activeTab}`); // console.log("editor", editor); @@ -222,17 +235,25 @@ export default { //Note that properties tab doesn't mean need to dump editor as user could be switching back and forth //so really the lasttab needs to be the last edited tab because we don't need to save when going to properties from script and back again - //save last view stuff + let currentState = vm.editor.saveViewState(); + let currentModel = vm.editor.getModel(); + // debugger; + //save edit state before switching switch (vm.lastTab) { case "properties": + //no state to save here break; case "template": + vm.editData.template.state = currentState; break; case "style": + vm.editData.style.state = currentState; break; - case "jsprerender": + case "jsPrerender": + vm.editData.jsPrerender.state = currentState; break; - case "jshelpers": + case "jsHelpers": + vm.editData.jsHelpers.state = currentState; break; } @@ -242,16 +263,28 @@ export default { vm.showEditor = false; break; case "template": + vm.editor.setModel(vm.editData.template.model); + vm.editor.restoreViewState(vm.editData.template.state); vm.showEditor = true; + vm.editor.focus(); break; case "style": + vm.editor.setModel(vm.editData.style.model); + vm.editor.restoreViewState(vm.editData.style.state); vm.showEditor = true; + vm.editor.focus(); break; - case "jsprerender": + case "jsPrerender": + vm.editor.setModel(vm.editData.jsPrerender.model); + vm.editor.restoreViewState(vm.editData.jsPrerender.state); vm.showEditor = true; + vm.editor.focus(); break; - case "jshelpers": + case "jsHelpers": + vm.editor.setModel(vm.editData.jsHelpers.model); + vm.editor.restoreViewState(vm.editData.jsHelpers.state); vm.showEditor = true; + vm.editor.focus(); break; } vm.lastTab = vm.activeTab;