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
if (selectedCategory.value.name !== '---') {
filteredModules = filteredModules.filter((module) => {
return module.categoryName.includes(selectedCategory.value.name);
return module.category.id == selectedCategory.value.id;
});
}
//filter by Lernfeld
if (selectedLernfeld.value.name !== '---') {
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">
{{ teaser }}
</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>
</span>
</div>
@ -26,7 +26,7 @@
<script>
export default {
props: ['metaTitle', 'title', 'teaser', 'id', 'slug', 'heroImage', 'categoryName', 'categoryTypeName'],
props: ['metaTitle', 'title', 'teaser', 'id', 'slug', 'heroImage', 'category', 'categoryType'],
computed: {
moduleLink() {

View File

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

View File

@ -6,9 +6,11 @@ from graphene_django.filter import DjangoFilterConnectionField
from assignments.models import StudentSubmission
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.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.schema import (
ModuleBookmarkNode,
@ -34,8 +36,8 @@ class ModuleNode(DjangoObjectType):
"hero_image",
"hero_source",
"topic",
"category_name",
"category_type_name",
"category",
"category_type",
]
filter_fields = {
"slug": ["exact", "icontains", "in"],
@ -54,8 +56,8 @@ class ModuleNode(DjangoObjectType):
snapshots = graphene.List("books.schema.nodes.SnapshotNode")
objective_groups = graphene.List(ObjectiveGroupNode)
assignments = graphene.List(AssignmentNode)
category_name = graphene.String()
category_type_name = graphene.String()
category = graphene.Field(ModuleCategoryNode)
category_type = graphene.Field(ModuleCategoryTypeNode)
def resolve_chapters(self, info, **kwargs):
return Chapter.get_by_parent(self)
@ -106,7 +108,13 @@ class ModuleNode(DjangoObjectType):
@staticmethod
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
def resolve_snapshots(parent, info, **kwargs):
@ -119,6 +127,7 @@ class ModuleNode(DjangoObjectType):
def resolve_assignments(parent: Module, info, **kwargs):
return parent.assignments.all()
class RecentModuleNode(DjangoObjectType):
class Meta:
model = RecentModule