@@ -12,20 +12,33 @@ div(v-if="view")
1212 icon( name ="plus" )
1313 span Add visualization
1414
15- div.d-flex.flex-row-reverse.mt-2
16- div( v-if ="editing" )
17- b-button( variant ="success" @click ="save(); editing = !editing;" )
18- icon( name ="save" )
19- span Save
20- b-button.ml-2 ( variant ="outline-dark" @click ="discard(); editing = !editing;" )
15+ div( v-if ="editing" ) .mt-2
16+ div.d-flex.flex-row-reverse
17+ b-button( variant ="outline-dark" @click ="discard(); editing = !editing;" )
2118 icon( name ="times" )
2219 span Cancel
23- b-button( v-else variant ="outline-dark" size ="sm" @click ="editing = !editing" )
20+ b-button.mr-2 ( variant ="success" @click ="save(); editing = !editing;" )
21+ icon( name ="save" )
22+ span Save
23+ div.mt-2.d-flex.flex-row-reverse
24+ b-button( variant ="warning" size ="sm" @click ="restoreDefaults();" )
25+ icon( name ="undo" )
26+ span Restore defaults
27+ b-button.mr-2 ( variant ="danger" size ="sm" @click ="remove();" )
28+ icon( name ="trash" )
29+ span Remove
30+ div( v-else ) .d-flex.flex-row-reverse.mt-2
31+ b-button( variant ="outline-dark" size ="sm" @click ="editing = !editing" )
2432 icon( name ="edit" )
2533 span Edit view
2634</template >
2735
2836<script >
37+ import ' vue-awesome/icons/save' ;
38+ import ' vue-awesome/icons/times' ;
39+ import ' vue-awesome/icons/trash' ;
40+ import ' vue-awesome/icons/undo' ;
41+
2942import ActivityEditor from ' ~/views/activity/ActivityEditor' ;
3043
3144export default {
@@ -57,21 +70,31 @@ export default {
5770 discard () {
5871 this .$store .dispatch (' views/load' );
5972 },
73+ remove () {
74+ this .$store .commit (' views/removeView' , { view_id: this .view .id });
75+ // If we're on an URL that'll be invalid after removing the view, navigate to the main/default view
76+ if (! this .$route .path .includes (' default' )) {
77+ this .$router .replace (' ./default' );
78+ }
79+ },
80+ restoreDefaults () {
81+ this .$store .commit (' views/restoreDefaults' );
82+ alert (
83+ " All views have been restored to defaults. Changes won't be saved until you click 'Save'."
84+ );
85+ // If we're on an URL that might become invalid, navigate to the main/default view
86+ if (! this .$route .path .includes (' default' )) {
87+ this .$router .replace (' ./default' );
88+ }
89+ },
6090 addVisualization : function () {
61- const view_id =
62- this .view_id == ' default' ? this .$store .state .views .views [0 ].id : this .view_id ;
63- this .$store .commit (' views/addVisualization' , { view_id, type: ' top_apps' });
91+ this .$store .commit (' views/addVisualization' , { view_id: this .view .id , type: ' top_apps' });
6492 },
6593 async onTypeChange (id , type ) {
66- const view_id =
67- this .view_id == ' default' ? this .$store .state .views .views [0 ].id : this .view_id ;
68- await this .$store .commit (' views/editView' , { view_id: view_id, el_id: id, type });
94+ await this .$store .commit (' views/editView' , { view_id: this .view .id , el_id: id, type });
6995 },
7096 async onRemove (id ) {
71- console .log (' rem' );
72- const view_id =
73- this .view_id == ' default' ? this .$store .state .views .views [0 ].id : this .view_id ;
74- await this .$store .commit (' views/removeVisualization' , { view_id: view_id, el_id: id });
97+ await this .$store .commit (' views/removeVisualization' , { view_id: this .view .id , el_id: id });
7598 },
7699 },
77100};
0 commit comments