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)" >
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