Filter user created blocks based on classes
This commit is contained in:
parent
90dac6b7e5
commit
7a2f8c91e4
|
|
@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue