Refactored VisibilityPopover for new SchoolClass

This commit is contained in:
Daniel Egger 2018-10-05 11:51:41 +02:00
parent 41d6e87f81
commit f3bcea7528
3 changed files with 19 additions and 17 deletions

View File

@ -1,10 +1,10 @@
<template>
<div class="visibility-menu" v-if="show">
<h3 class="visibility-menu__title">Sichtbarkeit</h3>
<div v-for="group in userGroupsWithVisibilityInfo" :key="group.id" class="visibility-menu__item">
<checkbox :checked="!group.hidden"
:item="group"
:label="group.name"
<div v-for="schoolClass in schoolClassVisibility" :key="schoolClass.id" class="visibility-menu__item">
<checkbox :checked="!schoolClass.hidden"
:item="schoolClass"
:label="schoolClass.name"
v-on:input="updateVisibility"
></checkbox>
</div>
@ -48,9 +48,9 @@
input: {
id: this.contentBlock.id,
contentBlock: {
visibility: this.userGroupsWithVisibilityInfo.map(g => {
visibility: this.schoolClassVisibility.map(g => {
return {
userGroupId: g.id,
schoolClassId: g.id,
hidden: g.hidden || false
}
})
@ -62,11 +62,15 @@
},
computed: {
userGroupsWithVisibilityInfo() {
return this.userGroups.map(userGroup => {
schoolClasses() {
return this.$getRidOfEdges(this.me.schoolclassSet);
},
schoolClassVisibility() {
return this.schoolClasses.map(schoolClass => {
return {
...userGroup,
hidden: !!this.contentBlock.hiddenFor.find(el => el.id === userGroup.id)
...schoolClass,
hidden: !!this.contentBlock.hiddenFor.find(el => el.id === schoolClass.id)
}
});
}

View File

@ -30,7 +30,7 @@ class ContentElementInput(InputObjectType):
class UserGroupContentBlockVisibility(InputObjectType):
user_group_id = graphene.ID(required=True)
school_class_id = graphene.ID(required=True)
hidden = graphene.Boolean(required=True)
@ -38,4 +38,4 @@ class ContentBlockInput(InputObjectType):
title = graphene.String()
type = graphene.String()
contents = graphene.List(ContentElementInput)
visibility = graphene.List(UserGroupContentBlockVisibility)
visibility = graphene.List(UserGroupContentBlockVisibility)

View File

@ -8,7 +8,6 @@ from api.utils import get_object, get_errors
from books.models import ContentBlock, Chapter, SchoolClass
from books.schema.inputs import ContentBlockInput
from books.schema.queries import ContentBlockNode
from .utils import handle_content_block
@ -32,14 +31,13 @@ class MutateContentBlock(relay.ClientIDMutation):
content_block = get_object(ContentBlock, id_param)
# FIXME: usergroup
if visibility_list is not None:
for v in visibility_list:
user_group = get_object(SchoolClass, v.user_group_id)
school_class = get_object(SchoolClass, v.school_class_id)
if v.hidden:
content_block.hidden_for.add(user_group)
content_block.hidden_for.add(school_class)
else:
content_block.hidden_for.remove(user_group)
content_block.hidden_for.remove(school_class)
if title is not None:
content_block.title = title