@@ -90,7 +90,7 @@ define([
90
90
let menu = $ ( this ) . data ( 'menu' ) ;
91
91
switch ( menu ) {
92
92
case 'new' :
93
- that . createNewNote ( ) ;
93
+ that . createNewNoteWithChecking ( ) ;
94
94
break ;
95
95
case 'open' :
96
96
that . openNote ( ) ;
@@ -111,7 +111,7 @@ define([
111
111
that . exportCode ( ) ;
112
112
break ;
113
113
case 'clear' :
114
- that . clearBoard ( ) ;
114
+ that . clearBoardWithChecking ( ) ;
115
115
break ;
116
116
}
117
117
} ) ;
@@ -429,9 +429,51 @@ define([
429
429
//========================================================================
430
430
// Note control
431
431
//========================================================================
432
- createNewNote ( ) {
433
- // TODO: alert before closing
432
+ /**
433
+ * Check if note has changes to save
434
+ */
435
+ checkNote ( ) {
436
+ if ( this . blockList . length > 0 ) {
437
+ return true ;
438
+ }
439
+ return false ;
440
+ }
441
+ createNewNoteWithChecking ( ) {
442
+ // alert before closing
443
+ let that = this ;
444
+ if ( this . checkNote ( ) ) {
445
+ // render update modal
446
+ com_util . renderModal ( {
447
+ title : 'Save changes' ,
448
+ message : 'Do you want to save changes?' ,
449
+ buttons : [ 'Cancel' , "No" , 'Save' ] ,
450
+ defaultButtonIdx : 0 ,
451
+ buttonClass : [ 'cancel' , '' , 'activated' ] ,
452
+ finish : function ( clickedBtnIdx ) {
453
+ switch ( clickedBtnIdx ) {
454
+ case 0 :
455
+ // cancel - do nothing
456
+ return ;
457
+ case 1 :
458
+ // don't save
459
+ that . createNewNote ( ) ;
460
+ break ;
461
+ case 2 :
462
+ // save
463
+ that . saveAsNote ( function ( ) {
464
+ that . createNewNote ( ) ;
465
+ } ) ;
466
+ break ;
467
+ }
468
+ }
469
+ } ) ;
434
470
471
+ return ;
472
+ }
473
+
474
+ this . createNewNote ( ) ;
475
+ }
476
+ createNewNote ( ) {
435
477
// clear board before create new note
436
478
this . clearBoard ( ) ;
437
479
@@ -502,7 +544,7 @@ define([
502
544
503
545
this . saveAsNote ( ) ;
504
546
}
505
- saveAsNote ( ) {
547
+ saveAsNote ( callback ) {
506
548
let that = this ;
507
549
// save file navigation
508
550
let fileNavi = new FileNavigation ( {
@@ -525,6 +567,8 @@ define([
525
567
that . tmpState . boardTitle = boardTitle ;
526
568
that . tmpState . boardPath = boardPath ;
527
569
$ ( '#vp_boardTitle' ) . val ( boardTitle ) ;
570
+
571
+ callback ( ) ;
528
572
}
529
573
} ) ;
530
574
fileNavi . open ( ) ;
@@ -625,6 +669,41 @@ define([
625
669
// // reloadBlockList
626
670
// this.reloadBlockList();
627
671
// }
672
+ clearBoardWithChecking ( ) {
673
+ // alert before closing
674
+ let that = this ;
675
+ if ( this . checkNote ( ) ) {
676
+ // render update modal
677
+ com_util . renderModal ( {
678
+ title : 'Save changes' ,
679
+ message : 'Do you want to save changes?' ,
680
+ buttons : [ 'Cancel' , "No" , 'Save' ] ,
681
+ defaultButtonIdx : 0 ,
682
+ buttonClass : [ 'cancel' , '' , 'activated' ] ,
683
+ finish : function ( clickedBtnIdx ) {
684
+ switch ( clickedBtnIdx ) {
685
+ case 0 :
686
+ // cancel - do nothing
687
+ return ;
688
+ case 1 :
689
+ // don't save
690
+ that . clearBoard ( ) ;
691
+ break ;
692
+ case 2 :
693
+ // save
694
+ that . saveAsNote ( function ( ) {
695
+ that . clearBoard ( ) ;
696
+ } ) ;
697
+ break ;
698
+ }
699
+ }
700
+ } ) ;
701
+
702
+ return ;
703
+ }
704
+
705
+ this . clearBoard ( ) ;
706
+ }
628
707
clearBoard ( ) {
629
708
// TODO: alert before clearing
630
709
let that = this ;
0 commit comments