This commit is contained in:
2020-08-31 18:44:50 +00:00
parent 465cb4c0f5
commit 1a8bd23d5e

View File

@@ -22,11 +22,11 @@
Style Style
</v-btn> </v-btn>
<v-btn value="jsprerender"> <v-btn value="jsPrerender">
JSPrerender JSPrerender
</v-btn> </v-btn>
<v-btn value="jshelpers"> <v-btn value="jsHelpers">
JSHelpers JSHelpers
</v-btn> </v-btn>
</v-btn-toggle> </v-btn-toggle>
@@ -123,22 +123,28 @@ export default {
// language: "javascript" // language: "javascript"
// }; // };
let vm = this; let vm = this;
//Created editor models for each type of report element that can be edited
vm.editData.template.model = monaco.editor.createModel( vm.editData.template.model = monaco.editor.createModel(
vm.template, vm.obj.template,
"javascript" "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.editData.jsPrerender.model = monaco.editor.createModel(
vm.jsPrerender, vm.obj.jsPrerender,
"javascript" "javascript"
); );
vm.editData.jsHelpers.model = monaco.editor.createModel( vm.editData.jsHelpers.model = monaco.editor.createModel(
vm.jsHelpers, vm.obj.jsHelpers,
"javascript" "javascript"
); );
//Create the editor itself
vm.editor = monaco.editor.create(document.getElementById("editContainer"), { vm.editor = monaco.editor.create(document.getElementById("editContainer"), {
model: vm.editData.template.model 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; vm.showEditor = false;
}, },
beforeDestroy() { beforeDestroy() {
@@ -158,6 +164,7 @@ export default {
editAreaHeight: 300, editAreaHeight: 300,
activeTab: "properties", activeTab: "properties",
lastTab: "properties", lastTab: "properties",
lastEditTab: "template",
showEditor: true, showEditor: true,
editData: { editData: {
template: { template: {
@@ -186,9 +193,15 @@ export default {
roles: null, roles: null,
objectType: 0, objectType: 0,
template: `console.log('hello world');`, template: `console.log('hello world');`,
style: "", style: `.example {
jsPrerender: "", color: blue;
jsHelpers: "", }`,
jsPrerender: `function pre(reportdata){
return reportData;
}`,
jsHelpers: `Handlebars.registerHelper('loud', function (aString) {
return aString.toUpperCase()
})`,
renderType: 0 renderType: 0
}, },
formState: { formState: {
@@ -214,7 +227,7 @@ export default {
// //
onViewChange() { onViewChange() {
let vm = this; 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(`Switching from ${vm.lastTab} to ${vm.activeTab}`);
// console.log("editor", editor); // 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 //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 //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) { switch (vm.lastTab) {
case "properties": case "properties":
//no state to save here
break; break;
case "template": case "template":
vm.editData.template.state = currentState;
break; break;
case "style": case "style":
vm.editData.style.state = currentState;
break; break;
case "jsprerender": case "jsPrerender":
vm.editData.jsPrerender.state = currentState;
break; break;
case "jshelpers": case "jsHelpers":
vm.editData.jsHelpers.state = currentState;
break; break;
} }
@@ -242,16 +263,28 @@ export default {
vm.showEditor = false; vm.showEditor = false;
break; break;
case "template": case "template":
vm.editor.setModel(vm.editData.template.model);
vm.editor.restoreViewState(vm.editData.template.state);
vm.showEditor = true; vm.showEditor = true;
vm.editor.focus();
break; break;
case "style": case "style":
vm.editor.setModel(vm.editData.style.model);
vm.editor.restoreViewState(vm.editData.style.state);
vm.showEditor = true; vm.showEditor = true;
vm.editor.focus();
break; break;
case "jsprerender": case "jsPrerender":
vm.editor.setModel(vm.editData.jsPrerender.model);
vm.editor.restoreViewState(vm.editData.jsPrerender.state);
vm.showEditor = true; vm.showEditor = true;
vm.editor.focus();
break; break;
case "jshelpers": case "jsHelpers":
vm.editor.setModel(vm.editData.jsHelpers.model);
vm.editor.restoreViewState(vm.editData.jsHelpers.state);
vm.showEditor = true; vm.showEditor = true;
vm.editor.focus();
break; break;
} }
vm.lastTab = vm.activeTab; vm.lastTab = vm.activeTab;