Skip to content

Commit 129fdd9

Browse files
committed
feat: added delete view and restore views to default
1 parent ef52f1e commit 129fdd9

File tree

3 files changed

+50
-17
lines changed

3 files changed

+50
-17
lines changed

src/store/modules/views.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,17 @@ const mutations = {
6767
}
6868
console.log('Loaded views:', state.views);
6969
},
70+
restoreDefaults(state) {
71+
state.views = defaultViews;
72+
},
7073
addView(state, { view_id }) {
7174
state.views.push({ id: view_id, name: view_id, elements: [] });
7275
},
76+
removeView(state, { view_id }) {
77+
const idx = state.views.map(v => v.id).indexOf(view_id);
78+
console.log(idx);
79+
state.views.splice(idx, 1);
80+
},
7381
editView(state, { view_id, el_id, type }) {
7482
console.log(view_id, el_id, type);
7583
console.log(state.views);

src/views/activity/ActivityView.vue

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
2942
import ActivityEditor from '~/views/activity/ActivityEditor';
3043
3144
export 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
};

src/views/settings/CategorizationSettings.vue

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ div
44
div Categorization
55
div.float-right
66
b-btn.ml-1(@click="restoreDefaultClasses", variant="outline-warning" size="sm")
7+
icon(name="undo")
78
| Restore defaults
89
div
910
| Rules for categorizing events. An event can only have one category. If several categories match, the deepest one will be chosen.
@@ -30,6 +31,7 @@ div
3031
<script>
3132
import { mapState, mapGetters } from 'vuex';
3233
import CategoryEditTree from '~/components/CategoryEditTree.vue';
34+
import 'vue-awesome/icons/undo';
3335
3436
export default {
3537
name: 'CategorizationSettings',

0 commit comments

Comments
 (0)