Filter Modules by Id

This commit is contained in:
Lorenz Padberg 2023-08-08 11:30:28 +02:00
parent aa095ac7ea
commit f60f0d68da
4 changed files with 27 additions and 12 deletions

View File

@ -104,14 +104,14 @@
// filter by Lehrjahr // filter by Lehrjahr
if (selectedCategory.value.name !== '---') { if (selectedCategory.value.name !== '---') {
filteredModules = filteredModules.filter((module) => { filteredModules = filteredModules.filter((module) => {
return module.categoryName.includes(selectedCategory.value.name); return module.category.id == selectedCategory.value.id;
}); });
} }
//filter by Lernfeld //filter by Lernfeld
if (selectedLernfeld.value.name !== '---') { if (selectedLernfeld.value.name !== '---') {
filteredModules = filteredModules.filter((module) => { filteredModules = filteredModules.filter((module) => {
return module.categoryTypeName.includes(selectedLernfeld.value.name); return module.categoryType.id == selectedLernfeld.value.id;
}); });
} }

View File

@ -17,7 +17,7 @@
<p class="module-teaser__description"> <p class="module-teaser__description">
{{ teaser }} {{ teaser }}
</p> </p>
<span :value="attribute" v-for="attribute in [categoryName, categoryTypeName]"> <span :value="attribute" v-for="attribute in [category.name, categoryType.name]">
<div class="module-teaser__module-category" v-if="attribute">{{attribute}}</div> <div class="module-teaser__module-category" v-if="attribute">{{attribute}}</div>
</span> </span>
</div> </div>
@ -26,7 +26,7 @@
<script> <script>
export default { export default {
props: ['metaTitle', 'title', 'teaser', 'id', 'slug', 'heroImage', 'categoryName', 'categoryTypeName'], props: ['metaTitle', 'title', 'teaser', 'id', 'slug', 'heroImage', 'category', 'categoryType'],
computed: { computed: {
moduleLink() { moduleLink() {

View File

@ -9,8 +9,14 @@ fragment ModuleParts on ModuleNode {
heroSource heroSource
solutionsEnabled solutionsEnabled
inEditMode @client inEditMode @client
categoryName category {
categoryTypeName id
name
}
categoryType {
id
name
}
topic { topic {
slug slug
title title

View File

@ -6,9 +6,11 @@ from graphene_django.filter import DjangoFilterConnectionField
from assignments.models import StudentSubmission from assignments.models import StudentSubmission
from assignments.schema.types import AssignmentNode, StudentSubmissionNode from assignments.schema.types import AssignmentNode, StudentSubmissionNode
from books.models import Module, Chapter, ContentBlock, RecentModule from books.models import Module, Chapter, ContentBlock, RecentModule, ModuleCategory, ModuleType
from books.schema.interfaces.module import ModuleInterface from books.schema.interfaces.module import ModuleInterface
from books.schema.nodes.chapter import ChapterNode from books.schema.nodes.chapter import ChapterNode
from books.schema.nodes.module_category import ModuleCategoryNode
from books.schema.nodes.module_category_type import ModuleCategoryTypeNode
from notes.models import ModuleBookmark, ContentBlockBookmark, ChapterBookmark from notes.models import ModuleBookmark, ContentBlockBookmark, ChapterBookmark
from notes.schema import ( from notes.schema import (
ModuleBookmarkNode, ModuleBookmarkNode,
@ -34,8 +36,8 @@ class ModuleNode(DjangoObjectType):
"hero_image", "hero_image",
"hero_source", "hero_source",
"topic", "topic",
"category_name", "category",
"category_type_name", "category_type",
] ]
filter_fields = { filter_fields = {
"slug": ["exact", "icontains", "in"], "slug": ["exact", "icontains", "in"],
@ -54,8 +56,8 @@ class ModuleNode(DjangoObjectType):
snapshots = graphene.List("books.schema.nodes.SnapshotNode") snapshots = graphene.List("books.schema.nodes.SnapshotNode")
objective_groups = graphene.List(ObjectiveGroupNode) objective_groups = graphene.List(ObjectiveGroupNode)
assignments = graphene.List(AssignmentNode) assignments = graphene.List(AssignmentNode)
category_name = graphene.String() category = graphene.Field(ModuleCategoryNode)
category_type_name = graphene.String() category_type = graphene.Field(ModuleCategoryTypeNode)
def resolve_chapters(self, info, **kwargs): def resolve_chapters(self, info, **kwargs):
return Chapter.get_by_parent(self) return Chapter.get_by_parent(self)
@ -106,7 +108,13 @@ class ModuleNode(DjangoObjectType):
@staticmethod @staticmethod
def resolve_objective_groups(parent, info, **kwargs): def resolve_objective_groups(parent, info, **kwargs):
return parent.objective_groups.all().prefetch_related("hidden_for") return parent.objective_groups.all().prefetch_related("hidden_for") @ staticmethod
def resolve_category(self, info, **kwargs):
return ModuleCategory.objects.get(pk=self.category_id) if self.category_id else None
def resolve_category_type(self, info, **kwargs):
return ModuleType.objects.get(pk=self.category_type_id) if self.category_type_id else None
@staticmethod @staticmethod
def resolve_snapshots(parent, info, **kwargs): def resolve_snapshots(parent, info, **kwargs):
@ -119,6 +127,7 @@ class ModuleNode(DjangoObjectType):
def resolve_assignments(parent: Module, info, **kwargs): def resolve_assignments(parent: Module, info, **kwargs):
return parent.assignments.all() return parent.assignments.all()
class RecentModuleNode(DjangoObjectType): class RecentModuleNode(DjangoObjectType):
class Meta: class Meta:
model = RecentModule model = RecentModule