Filter user created blocks based on classes

This commit is contained in:
Christian Cueni 2018-10-18 10:38:54 +02:00
parent 90dac6b7e5
commit 7a2f8c91e4
5 changed files with 38 additions and 11 deletions

View File

@ -40,7 +40,14 @@
methods: { methods: {
visibleFor(contentBlock, schoolClassId) { visibleFor(contentBlock, schoolClassId) {
return !contentBlock.hiddenFor.map(entry => entry.id).includes(schoolClassId); if (contentBlock.userCreated) {
if (schoolClassId === '') {
return true;
}
return contentBlock.visibleFor.map(entry => entry.id).includes(schoolClassId);
} else {
return !contentBlock.hiddenFor.map(entry => entry.id).includes(schoolClassId);
}
} }
} }
} }

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="filter-bar" v-if="isTeacher"> <div class="filter-bar" v-if="isTeacher">
<radiobutton label="Alles" :checked="!currentFilter" v-on:input="updateFilter(false)"></radiobutton> <radiobutton label="Alles" :checked="!currentFilter" v-on:input="updateFilter('')"></radiobutton>
<radiobutton <radiobutton
v-for="schoolClass in schoolClasses" v-for="schoolClass in schoolClasses"
:key="schoolClass.id" :key="schoolClass.id"

View File

@ -61,8 +61,12 @@
}, },
hidePopover() { hidePopover() {
this.$emit('hide-me'); this.$emit('hide-me');
},
isSchoolClassHidden(schoolClass) {
return this.contentBlock.userCreated
? this.contentBlock.visibleFor.findIndex(el => el.id === schoolClass.id) === -1
: !!this.contentBlock.hiddenFor.find(el => el.id === schoolClass.id);
} }
}, },
computed: { computed: {
@ -74,7 +78,7 @@
return this.schoolClasses.map(schoolClass => { return this.schoolClasses.map(schoolClass => {
return { return {
...schoolClass, ...schoolClass,
hidden: !!this.contentBlock.hiddenFor.find(el => el.id === schoolClass.id) hidden: this.isSchoolClassHidden(schoolClass)
} }
}); });
} }

View File

@ -12,7 +12,7 @@ export default new Vuex.Store({
contentBlockPosition: {}, contentBlockPosition: {},
scrollPosition: 0, scrollPosition: 0,
moduleSlug: 'geld', moduleSlug: 'geld',
filterForSchoolClass: false, filterForSchoolClass: '',
currentContentBlock: '', currentContentBlock: '',
parentRoom: null parentRoom: null
}, },

View File

@ -35,12 +35,10 @@ class MutateContentBlock(relay.ClientIDMutation):
module = content_block.get_parent().get_parent().specific module = content_block.get_parent().get_parent().specific
if visibility_list is not None: if visibility_list is not None:
for v in visibility_list: if content_block.user_created:
school_class = get_object(SchoolClass, v.school_class_id) cls.set_visible_for(content_block, visibility_list)
if v.hidden: else:
content_block.hidden_for.add(school_class) cls.set_hidden_for(content_block, visibility_list)
else:
content_block.hidden_for.remove(school_class)
if title is not None: if title is not None:
content_block.title = title content_block.title = title
@ -61,6 +59,24 @@ class MutateContentBlock(relay.ClientIDMutation):
return cls(content_block=None, errors=errors) return cls(content_block=None, errors=errors)
@classmethod
def set_hidden_for(cls, content_block, visibility_list):
for v in visibility_list:
school_class = get_object(SchoolClass, v.school_class_id)
if v.hidden:
content_block.hidden_for.add(school_class)
else:
content_block.hidden_for.remove(school_class)
@classmethod
def set_visible_for(cls, content_block, visibility_list):
for v in visibility_list:
school_class = get_object(SchoolClass, v.school_class_id)
if v.hidden:
content_block.visible_for.remove(school_class)
else:
content_block.visible_for.add(school_class)
class AddContentBlock(relay.ClientIDMutation): class AddContentBlock(relay.ClientIDMutation):
class Input: class Input: