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: {
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>
<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
v-for="schoolClass in schoolClasses"
:key="schoolClass.id"

View File

@ -61,8 +61,12 @@
},
hidePopover() {
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: {
@ -74,7 +78,7 @@
return this.schoolClasses.map(schoolClass => {
return {
...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: {},
scrollPosition: 0,
moduleSlug: 'geld',
filterForSchoolClass: false,
filterForSchoolClass: '',
currentContentBlock: '',
parentRoom: null
},

View File

@ -35,12 +35,10 @@ class MutateContentBlock(relay.ClientIDMutation):
module = content_block.get_parent().get_parent().specific
if visibility_list is not None:
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)
if content_block.user_created:
cls.set_visible_for(content_block, visibility_list)
else:
cls.set_hidden_for(content_block, visibility_list)
if title is not None:
content_block.title = title
@ -61,6 +59,24 @@ class MutateContentBlock(relay.ClientIDMutation):
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 Input: