From 63003bc504eb7effc056b90646a32985cc5301ab Mon Sep 17 00:00:00 2001 From: bino3112 Date: Mon, 3 Dec 2018 13:52:44 +0100 Subject: [PATCH 1/2] =?UTF-8?q?aggiunta=20possibilit=C3=A0=20di=20salvare?= =?UTF-8?q?=20workspace=20in=20caso=20di=20carica=20di=20un=20programma?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Blockly.vue | 71 ++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 15 deletions(-) diff --git a/src/components/Blockly.vue b/src/components/Blockly.vue index 671860b..506dd14 100644 --- a/src/components/Blockly.vue +++ b/src/components/Blockly.vue @@ -100,7 +100,8 @@ - + {{ program.name }} @@ -184,6 +185,25 @@ + + + + Salvare workspace + + + + La workspace non è vuota, vuoi salvare il tuo programma? + + + No + + + Si + + + + + @@ -304,6 +324,9 @@ export default { defaultProgramName: '', overwrite: 0, overwriteDialog: false, + saveWorkspace: false, + programToLoad: '', + toBeLoaded: false, }), computed: { statusText: function() { @@ -395,6 +418,14 @@ export default { return { name: name, dom_code: dom_code, code: code, default: isDefault }; }, + checkAction() { + let data = this.getProgramData() + let code = data.code + if (code == '') + return true + else + return false + }, exportProgram() { let data = JSON.stringify(this.getProgramData()) const blob = new Blob([data], { type: 'text/json' }) @@ -478,6 +509,10 @@ export default { } else { this.unvalidName = true } + if(this.$data.toBeLoaded) + this.loadProgram(this.$data.programToLoad) + this.$data.programToLoad = '' + this.$data.toBeLoaded = false }, loadProgramList() { let axios = this.$axios @@ -489,25 +524,31 @@ export default { this.$data.programList = response.data; }.bind(this)) }, + tryLoadProgram(program){ + this.$data.programToLoad = program + if (this.checkAction()) + this.loadProgram(program) + else + this.$data.saveWorkspace = true + }, loadProgram(program) { let axios = this.$axios let CB = this.$data.CB let workspace = this.$data.workspace let isDefault = this.$data.isDefault - this.$data.carica = false; - this.$data.programName = program - axios.get(CB + '/load', { - params: { - name: program, - } - }) - .then(function(data) { - console.log(data) - workspace.clear(); - var xml = Blockly.Xml.textToDom(data.data.dom_code); - Blockly.Xml.domToWorkspace(xml, workspace); - this.$data.isDefault = data.data.default - }.bind(this)) + this.$data.carica = false; + this.$data.programName = program + axios.get(CB + '/load', { + params: { + name: program, + } + }) + .then(function(data) { + workspace.clear(); + var xml = Blockly.Xml.textToDom(data.data.dom_code); + Blockly.Xml.domToWorkspace(xml, workspace); + this.$data.isDefault = data.data.default + }.bind(this)) }, deleteProgramDlg(program) { this.$data.newProgramName = program From da9d0add2b05dc22f1e437fef0e8b5277333b25f Mon Sep 17 00:00:00 2001 From: bino3112 Date: Mon, 3 Dec 2018 15:04:13 +0100 Subject: [PATCH 2/2] stessa roba di prima ma con i callback per poter usare funzioni generali --- src/components/Blockly.vue | 87 ++++++++++++++++++++++---------------- 1 file changed, 50 insertions(+), 37 deletions(-) diff --git a/src/components/Blockly.vue b/src/components/Blockly.vue index 506dd14..404b38e 100644 --- a/src/components/Blockly.vue +++ b/src/components/Blockly.vue @@ -101,7 +101,7 @@ + checkAction(loadProgram, program.name)"> {{ program.name }} @@ -194,10 +194,10 @@ La workspace non è vuota, vuoi salvare il tuo programma? - + No - + Si @@ -325,8 +325,10 @@ export default { overwrite: 0, overwriteDialog: false, saveWorkspace: false, - programToLoad: '', - toBeLoaded: false, + clearWorkspace: false, + generalParameter: '', + callBack: '', + programCode: '', }), computed: { statusText: function() { @@ -418,13 +420,29 @@ export default { return { name: name, dom_code: dom_code, code: code, default: isDefault }; }, - checkAction() { - let data = this.getProgramData() - let code = data.code - if (code == '') - return true - else - return false + checkAction(functionToCall, parameter) { + if(this.clearWorkspace){ + let workspace = this.workspace + workspace.clear() + this.clearWorkspace = false + } + let data = this.getProgramData() + let code = data.code + if (code == '' || code == this.programCode){ + if(parameter != null){ + console.log("ho il parametro") + functionToCall(parameter) + } + else{ + console.log("non ho il parametro") + functionToCall() + } + } + else{ + this.callBack = functionToCall + this.generalParameter = parameter + this.$data.saveWorkspace = true + } }, exportProgram() { let data = JSON.stringify(this.getProgramData()) @@ -504,15 +522,16 @@ export default { this.$data.isDefault = '' this.$data.overwrite = 0 console.log("salvato") + this.programCode = data.code + if(this.callBack != ''){ + this.callBack(this.generalParameter) + this.callBack = '' + } } }.bind(this)) } else { this.unvalidName = true - } - if(this.$data.toBeLoaded) - this.loadProgram(this.$data.programToLoad) - this.$data.programToLoad = '' - this.$data.toBeLoaded = false + } }, loadProgramList() { let axios = this.$axios @@ -524,31 +543,25 @@ export default { this.$data.programList = response.data; }.bind(this)) }, - tryLoadProgram(program){ - this.$data.programToLoad = program - if (this.checkAction()) - this.loadProgram(program) - else - this.$data.saveWorkspace = true - }, loadProgram(program) { let axios = this.$axios let CB = this.$data.CB let workspace = this.$data.workspace let isDefault = this.$data.isDefault - this.$data.carica = false; - this.$data.programName = program - axios.get(CB + '/load', { - params: { - name: program, - } - }) - .then(function(data) { - workspace.clear(); - var xml = Blockly.Xml.textToDom(data.data.dom_code); - Blockly.Xml.domToWorkspace(xml, workspace); - this.$data.isDefault = data.data.default - }.bind(this)) + this.$data.carica = false; + this.$data.programName = program + axios.get(CB + '/load', { + params: { + name: program, + } + }) + .then(function(data) { + workspace.clear(); + var xml = Blockly.Xml.textToDom(data.data.dom_code); + this.programCode = data.data.code; + Blockly.Xml.domToWorkspace(xml, workspace); + this.$data.isDefault = data.data.default; + }.bind(this)) }, deleteProgramDlg(program) { this.$data.newProgramName = program