From 6698157f85be91540ca3d18e1928f3522f39a01d Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Mon, 31 Aug 2020 23:22:07 +0000 Subject: [PATCH] --- ayanova/src/views/ay-report-edit.vue | 88 +++++++++++++++++++--------- 1 file changed, 61 insertions(+), 27 deletions(-) diff --git a/ayanova/src/views/ay-report-edit.vue b/ayanova/src/views/ay-report-edit.vue index 9bdbed43..e18373b0 100644 --- a/ayanova/src/views/ay-report-edit.vue +++ b/ayanova/src/views/ay-report-edit.vue @@ -29,6 +29,10 @@ Helpers + + + Data + @@ -86,6 +90,7 @@ > + {{ reportData }} @@ -150,6 +155,42 @@ export default { loading: false }); } + + //--------------- + //setup the editor and models + + //Created editor models for each type of report element that can be edited + vm.editData.template.model = monaco.editor.createModel( + vm.obj.template, + "javascript" + ); + + vm.editData.style.model = monaco.editor.createModel(vm.obj.style, "css"); + vm.editData.jsPrerender.model = monaco.editor.createModel( + vm.obj.jsPrerender, + "javascript" + ); + + vm.editData.rawData.model = monaco.editor.createModel( + JSON.stringify(vm.reportData, null, "\t"), + "json" + ); + + vm.editData.jsHelpers.model = monaco.editor.createModel( + vm.obj.jsHelpers, + "javascript" + ); + + //Create the editor itself + 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 = editor.saveViewState(); + vm.showEditor = false; + + //--------------- + window.$gz.form.setFormState({ vm: vm, dirty: false, @@ -163,40 +204,15 @@ export default { vm.formState.ready = true; } }, - mounted() { - let vm = this; - //Created editor models for each type of report element that can be edited - vm.editData.template.model = monaco.editor.createModel( - vm.obj.template, - "javascript" - ); - - vm.editData.style.model = monaco.editor.createModel(vm.obj.style, "css"); - vm.editData.jsPrerender.model = monaco.editor.createModel( - vm.obj.jsPrerender, - "javascript" - ); - vm.editData.jsHelpers.model = monaco.editor.createModel( - vm.obj.jsHelpers, - "javascript" - ); - //Create the editor itself - 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 = editor.saveViewState(); - vm.showEditor = false; - }, beforeDestroy() { - //dispose all models and editor + //TODO: dispose all models and editor editor && editor.dispose(); }, data() { return { - reportData: [], + reportData: null, editAreaHeight: 300, activeTab: "properties", lastTab: "properties", @@ -217,6 +233,10 @@ export default { jsHelpers: { model: null, state: null + }, + rawData: { + model: null, + state: null } }, obj: { @@ -287,6 +307,9 @@ Handlebars.registerHelper('loud', function (aString) { case "jsHelpers": vm.editData.jsHelpers.state = currentState; break; + case "rawData": + vm.editData.rawData.state = currentState; + break; } //set new view stuff @@ -297,24 +320,35 @@ Handlebars.registerHelper('loud', function (aString) { case "template": editor.setModel(vm.editData.template.model); editor.restoreViewState(vm.editData.template.state); + editor.updateOptions({ readOnly: false }); vm.showEditor = true; editor.focus(); break; case "style": editor.setModel(vm.editData.style.model); editor.restoreViewState(vm.editData.style.state); + editor.updateOptions({ readOnly: false }); vm.showEditor = true; editor.focus(); break; case "jsPrerender": editor.setModel(vm.editData.jsPrerender.model); editor.restoreViewState(vm.editData.jsPrerender.state); + editor.updateOptions({ readOnly: false }); vm.showEditor = true; editor.focus(); break; case "jsHelpers": editor.setModel(vm.editData.jsHelpers.model); editor.restoreViewState(vm.editData.jsHelpers.state); + editor.updateOptions({ readOnly: false }); + vm.showEditor = true; + editor.focus(); + break; + case "rawData": + editor.setModel(vm.editData.rawData.model); + editor.restoreViewState(vm.editData.rawData.state); + editor.updateOptions({ readOnly: true }); vm.showEditor = true; editor.focus(); break;