Skip to content

Commit 74156cc

Browse files
author
Antonio Vivace
authored
Fix #22: when trying to load a new program, if there are unsaved edits, ask for saving then proceed (#33)
* aggiunta possibilità di salvare workspace in caso di carica di un programma * stessa roba di prima ma con i callback per poter usare funzioni generali
1 parent a8d5fc1 commit 74156cc

File tree

1 file changed

+58
-4
lines changed

1 file changed

+58
-4
lines changed

src/components/Blockly.vue

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@
100100
</v-card-title>
101101
<v-list>
102102
<v-list-tile v-for="program in programList" :key="program.el" avatar @click="">
103-
<v-list-tile-title ripple @click="loadProgram(program.name)">
103+
<v-list-tile-title ripple @click="
104+
checkAction(loadProgram, program.name)">
104105
{{ program.name }}
105106
</v-list-tile-title>
106107
<v-btn v-if="program.default != 'True'" flat icon color="grey darken-1" ripple @click="deleteProgramDlg(program.name)">
@@ -184,6 +185,25 @@
184185
</v-card>
185186
</v-dialog>
186187
<!-- -->
188+
<v-dialog v-model="saveWorkspace" max-width="500">
189+
<v-card>
190+
<v-card-title class="headline">
191+
Salvare workspace
192+
</v-card-title>
193+
<v-card-actions>
194+
<v-card-text>
195+
La workspace non è vuota, vuoi salvare il tuo programma?
196+
</v-card-text>
197+
<v-btn color="red darken-1" flat="flat" @click="saveWorkspace = false, clearWorkspace = true, checkAction(callBack, generalParameter)">
198+
No
199+
</v-btn>
200+
<v-btn color="green darken-1" flat="flat" @click="saveWorkspace = false, salva = true">
201+
Si
202+
</v-btn>
203+
</v-card-actions>
204+
</v-card>
205+
</v-dialog>
206+
<!-- -->
187207
<v-dialog v-model="del" max-width="500">
188208
<v-card>
189209
<v-card-title class="headline">
@@ -304,6 +324,11 @@ export default {
304324
defaultProgramName: '',
305325
overwrite: 0,
306326
overwriteDialog: false,
327+
saveWorkspace: false,
328+
clearWorkspace: false,
329+
generalParameter: '',
330+
callBack: '',
331+
programCode: '',
307332
}),
308333
computed: {
309334
statusText: function() {
@@ -395,6 +420,30 @@ export default {
395420
396421
return { name: name, dom_code: dom_code, code: code, default: isDefault };
397422
},
423+
checkAction(functionToCall, parameter) {
424+
if(this.clearWorkspace){
425+
let workspace = this.workspace
426+
workspace.clear()
427+
this.clearWorkspace = false
428+
}
429+
let data = this.getProgramData()
430+
let code = data.code
431+
if (code == '' || code == this.programCode){
432+
if(parameter != null){
433+
console.log("ho il parametro")
434+
functionToCall(parameter)
435+
}
436+
else{
437+
console.log("non ho il parametro")
438+
functionToCall()
439+
}
440+
}
441+
else{
442+
this.callBack = functionToCall
443+
this.generalParameter = parameter
444+
this.$data.saveWorkspace = true
445+
}
446+
},
398447
exportProgram() {
399448
let data = JSON.stringify(this.getProgramData())
400449
const blob = new Blob([data], { type: 'text/json' })
@@ -473,11 +522,16 @@ export default {
473522
this.$data.isDefault = ''
474523
this.$data.overwrite = 0
475524
console.log("salvato")
525+
this.programCode = data.code
526+
if(this.callBack != ''){
527+
this.callBack(this.generalParameter)
528+
this.callBack = ''
529+
}
476530
}
477531
}.bind(this))
478532
} else {
479533
this.unvalidName = true
480-
}
534+
}
481535
},
482536
loadProgramList() {
483537
let axios = this.$axios
@@ -502,11 +556,11 @@ export default {
502556
}
503557
})
504558
.then(function(data) {
505-
console.log(data)
506559
workspace.clear();
507560
var xml = Blockly.Xml.textToDom(data.data.dom_code);
561+
this.programCode = data.data.code;
508562
Blockly.Xml.domToWorkspace(xml, workspace);
509-
this.$data.isDefault = data.data.default
563+
this.$data.isDefault = data.data.default;
510564
}.bind(this))
511565
},
512566
deleteProgramDlg(program) {

0 commit comments

Comments
 (0)