diff --git a/client/src/components/Chapter.vue b/client/src/components/Chapter.vue index ab037d82..ee65f38f 100644 --- a/client/src/components/Chapter.vue +++ b/client/src/components/Chapter.vue @@ -4,7 +4,8 @@ - + @@ -21,6 +22,17 @@ AddContentBlockButton }, + computed: { + filteredContentBlocks() { + return this.chapter && this.chapter.contentBlocks + ? this.chapter.contentBlocks.filter(contentBlock => this.visibleFor(contentBlock, this.currentFilter)) + : []; + }, + currentFilter() { + return this.$store.state.filterForGroup; + } + }, + methods: { visibleFor(contentBlock, userGroup) { return !contentBlock.hiddenFor.map(entry => entry.id).includes(userGroup); diff --git a/client/src/components/FilterBar.vue b/client/src/components/FilterBar.vue index 83648ed2..f5e887cb 100644 --- a/client/src/components/FilterBar.vue +++ b/client/src/components/FilterBar.vue @@ -1,19 +1,26 @@ diff --git a/client/src/store/index.js b/client/src/store/index.js index ab39ade7..49740265 100644 --- a/client/src/store/index.js +++ b/client/src/store/index.js @@ -13,7 +13,8 @@ export default new Vuex.Store({ contentBlockPosition: {}, scrollPosition: 0, moduleSlug: 'mein-neues-umfeld', - updateContentBlocks: false + updateContentBlocks: false, + filterForGroup: false }, getters: {}, @@ -48,6 +49,9 @@ export default new Vuex.Store({ }, resetUpdateContentBlocksFlag({commit}) { commit('updateContentBlocks', false); + }, + setFilterForGroup({commit}, payload) { + commit('setFilterForGroup', payload); } }, @@ -72,6 +76,9 @@ export default new Vuex.Store({ }, setContentBlockPosition(state, payload) { state.contentBlockPosition = payload; + }, + setFilterForGroup(state, payload) { + state.filterForGroup = payload; } } })