From d172e9a005e7eea59d4aa283d159d1c037cc04ea Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 13 Sep 2022 10:49:26 +0200 Subject: [PATCH 1/8] Add instrument category model --- .../migrations/0019_auto_20220913_0820.py | 31 +++++++++++++++++++ server/basicknowledge/models.py | 19 +++++++++++- server/basicknowledge/wagtail_hooks.py | 7 +++++ server/books/factories.py | 12 ++++++- server/schema.graphql | 7 +++++ 5 files changed, 74 insertions(+), 2 deletions(-) create mode 100644 server/basicknowledge/migrations/0019_auto_20220913_0820.py diff --git a/server/basicknowledge/migrations/0019_auto_20220913_0820.py b/server/basicknowledge/migrations/0019_auto_20220913_0820.py new file mode 100644 index 00000000..ddbe1094 --- /dev/null +++ b/server/basicknowledge/migrations/0019_auto_20220913_0820.py @@ -0,0 +1,31 @@ +# Generated by Django 3.2.13 on 2022-09-13 08:20 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('basicknowledge', '0018_alter_basicknowledge_contents'), + ] + + operations = [ + migrations.CreateModel( + name='InstrumentCategory', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255, unique=True)), + ('background', models.CharField(max_length=7, verbose_name='background color')), + ('foreground', models.CharField(max_length=7, verbose_name='foreground color')), + ], + options={ + 'verbose_name_plural': 'instrument categories', + }, + ), + migrations.AddField( + model_name='instrumenttype', + name='new_category', + field=models.ForeignKey(default=None, null=True, on_delete=django.db.models.deletion.PROTECT, to='basicknowledge.instrumentcategory'), + ), + ] diff --git a/server/basicknowledge/models.py b/server/basicknowledge/models.py index b0386d29..43ba6604 100644 --- a/server/basicknowledge/models.py +++ b/server/basicknowledge/models.py @@ -15,6 +15,18 @@ SOCIETY = 'society' INTERDISCIPLINARY = 'interdisciplinary' +class InstrumentCategory(models.Model): + name = models.CharField(max_length=255, unique=True) + background = models.CharField('background color', max_length=7) + foreground = models.CharField('foreground color', max_length=7) + + def __str__(self): + return self.name + + class Meta: + verbose_name_plural = 'instrument categories' + + class InstrumentType(models.Model): CATEGORY_CHOICES = ( (LANGUAGE_COMMUNICATION, 'Sprache & Kommunikation'), @@ -27,6 +39,12 @@ class InstrumentType(models.Model): max_length=100, choices=CATEGORY_CHOICES ) + new_category = models.ForeignKey( + InstrumentCategory, + on_delete=models.PROTECT, + null=True, + default=None + ) @property def type(self): @@ -36,7 +54,6 @@ class InstrumentType(models.Model): return self.type - class BasicKnowledge(StrictHierarchyPage): parent_page_types = ['books.book'] diff --git a/server/basicknowledge/wagtail_hooks.py b/server/basicknowledge/wagtail_hooks.py index d847d985..6c963a3b 100644 --- a/server/basicknowledge/wagtail_hooks.py +++ b/server/basicknowledge/wagtail_hooks.py @@ -8,5 +8,12 @@ class InstrumentAdmin(ModelAdmin): list_display = ('title', 'new_type', 'status_string') search_fields = ('title', 'new_type__name') +class InstrumentCategoryAdmin(ModelAdmin): + model = InstrumentCategory + +class InstrumentTypeAdmin(ModelAdmin): + model = InstrumentType modeladmin_register(InstrumentAdmin) +modeladmin_register(InstrumentCategoryAdmin) +modeladmin_register(InstrumentTypeAdmin) diff --git a/server/books/factories.py b/server/books/factories.py index 4e90311c..b18211ea 100644 --- a/server/books/factories.py +++ b/server/books/factories.py @@ -9,7 +9,8 @@ from wagtail.core.models import Page, Site from wagtail.core.rich_text import RichText from assignments.models import Assignment -from basicknowledge.models import BasicKnowledge, INTERDISCIPLINARY, InstrumentType, LANGUAGE_COMMUNICATION, SOCIETY +from basicknowledge.models import BasicKnowledge, INTERDISCIPLINARY, InstrumentCategory, InstrumentType, \ + LANGUAGE_COMMUNICATION, SOCIETY from books.blocks import AssignmentBlock, BasicKnowledgeBlock, ImageUrlBlock, LinkBlock, VideoBlock from books.models import Book, Chapter, ContentBlock, Module, TextBlock, Topic from core.factories import BasePageFactory, DummyImageFactory, fake, fake_paragraph, fake_title @@ -70,6 +71,15 @@ class TextBlockFactory(wagtail_factories.StructBlockFactory): model = TextBlock +class InstrumentCategoryFactory(factory.DjangoModelFactory): + class Meta: + model = InstrumentCategory + django_get_or_create = ('name',) + + name = factory.Iterator([LANGUAGE_COMMUNICATION, SOCIETY, INTERDISCIPLINARY]) + foreground = factory.Iterator(['FF0000', 'FFFFFF', '000000']) + background = factory.Iterator(['FF0000', 'FFFFFF', '000000']) + class InstrumentTypeFactory(factory.DjangoModelFactory): class Meta: model = InstrumentType diff --git a/server/schema.graphql b/server/schema.graphql index 98cd30bf..ab80e33d 100644 --- a/server/schema.graphql +++ b/server/schema.graphql @@ -511,6 +511,13 @@ type InstrumentBookmarkNode implements Node { instrument: InstrumentNode! } +type InstrumentCategoryNode { + id: ID! + name: String! + background: String! + foreground: String! +} + type InstrumentNode implements Node { title: String! slug: String! From d1c4d63179acd6d958bf1bde13f43e9c11ff3255 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 13 Sep 2022 11:22:46 +0200 Subject: [PATCH 2/8] Replace category string in instrument type with proper model --- .../migrations/0020_auto_20220908_1517.py | 31 +++++++++++++++++++ .../0021_remove_instrumenttype_category.py | 17 ++++++++++ ...me_new_category_instrumenttype_category.py | 18 +++++++++++ .../0023_alter_instrumenttype_category.py | 20 ++++++++++++ server/basicknowledge/models.py | 22 +++++++------ server/basicknowledge/queries.py | 9 +++++- .../tests/test_instrument_types_query.py | 7 ++++- server/basicknowledge/wagtail_hooks.py | 2 +- server/books/factories.py | 9 +++--- server/schema.graphql | 8 +---- 10 files changed, 119 insertions(+), 24 deletions(-) create mode 100644 server/basicknowledge/migrations/0020_auto_20220908_1517.py create mode 100644 server/basicknowledge/migrations/0021_remove_instrumenttype_category.py create mode 100644 server/basicknowledge/migrations/0022_rename_new_category_instrumenttype_category.py create mode 100644 server/basicknowledge/migrations/0023_alter_instrumenttype_category.py diff --git a/server/basicknowledge/migrations/0020_auto_20220908_1517.py b/server/basicknowledge/migrations/0020_auto_20220908_1517.py new file mode 100644 index 00000000..17a113fc --- /dev/null +++ b/server/basicknowledge/migrations/0020_auto_20220908_1517.py @@ -0,0 +1,31 @@ +# Generated by Django 3.2.13 on 2022-09-08 15:17 + +from django.db import migrations + +LANGUAGE_COMMUNICATION = 'language_communication' +SOCIETY = 'society' +INTERDISCIPLINARY = 'interdisciplinary' + +CATEGORY_CHOICES = ( + (LANGUAGE_COMMUNICATION, '#DAA009', '#FFF5D9', 'Sprache & Kommunikation'), + (SOCIETY, '#0F7CAC', '#DBEEF6', 'Gesellschaft'), + (INTERDISCIPLINARY, '#99B53E', '#F3F9E3', 'Überfachliches Instrument'), +) + +def create_categories(apps, schema_editor): + InstrumentCategory = apps.get_model('basicknowledge', 'InstrumentCategory') + InstrumentType = apps.get_model('basicknowledge', 'InstrumentType') + for code, foreground, background, category in CATEGORY_CHOICES: + instrument_category = InstrumentCategory.objects.create(name=category, background=background, foreground=foreground) + InstrumentType.objects.filter(category=code).update(new_category=instrument_category) + + +class Migration(migrations.Migration): + + dependencies = [ + ('basicknowledge', '0019_auto_20220913_0820'), + ] + + operations = [ + migrations.RunPython(create_categories, migrations.RunPython.noop) + ] diff --git a/server/basicknowledge/migrations/0021_remove_instrumenttype_category.py b/server/basicknowledge/migrations/0021_remove_instrumenttype_category.py new file mode 100644 index 00000000..0d74e617 --- /dev/null +++ b/server/basicknowledge/migrations/0021_remove_instrumenttype_category.py @@ -0,0 +1,17 @@ +# Generated by Django 3.2.13 on 2022-09-13 08:52 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('basicknowledge', '0020_auto_20220908_1517'), + ] + + operations = [ + migrations.RemoveField( + model_name='instrumenttype', + name='category', + ), + ] diff --git a/server/basicknowledge/migrations/0022_rename_new_category_instrumenttype_category.py b/server/basicknowledge/migrations/0022_rename_new_category_instrumenttype_category.py new file mode 100644 index 00000000..6c32e621 --- /dev/null +++ b/server/basicknowledge/migrations/0022_rename_new_category_instrumenttype_category.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.13 on 2022-09-13 08:52 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('basicknowledge', '0021_remove_instrumenttype_category'), + ] + + operations = [ + migrations.RenameField( + model_name='instrumenttype', + old_name='new_category', + new_name='category', + ), + ] diff --git a/server/basicknowledge/migrations/0023_alter_instrumenttype_category.py b/server/basicknowledge/migrations/0023_alter_instrumenttype_category.py new file mode 100644 index 00000000..a2c5dd6b --- /dev/null +++ b/server/basicknowledge/migrations/0023_alter_instrumenttype_category.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.13 on 2022-09-13 09:01 + +import basicknowledge.models +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('basicknowledge', '0022_rename_new_category_instrumenttype_category'), + ] + + operations = [ + migrations.AlterField( + model_name='instrumenttype', + name='category', + field=models.ForeignKey(default=basicknowledge.models.default_category, on_delete=django.db.models.deletion.PROTECT, to='basicknowledge.instrumentcategory'), + ), + ] diff --git a/server/basicknowledge/models.py b/server/basicknowledge/models.py index 43ba6604..94ca1684 100644 --- a/server/basicknowledge/models.py +++ b/server/basicknowledge/models.py @@ -13,6 +13,9 @@ from core.wagtail_utils import StrictHierarchyPage LANGUAGE_COMMUNICATION = 'language_communication' SOCIETY = 'society' INTERDISCIPLINARY = 'interdisciplinary' +LANGUAGE_COMMUNICATION_LABEL = 'Sprache & Kommunikation' +SOCIETY_LABEL = 'Gesellschaft' +INTERDISCIPLINARY_LABEL = 'Überfachliche Instrumente' class InstrumentCategory(models.Model): @@ -27,23 +30,22 @@ class InstrumentCategory(models.Model): verbose_name_plural = 'instrument categories' +def default_category(): + return InstrumentCategory.objects.first().pk + class InstrumentType(models.Model): CATEGORY_CHOICES = ( - (LANGUAGE_COMMUNICATION, 'Sprache & Kommunikation'), - (SOCIETY, 'Gesellschaft'), - (INTERDISCIPLINARY, 'Überfachliches Instrument'), + (LANGUAGE_COMMUNICATION, LANGUAGE_COMMUNICATION_LABEL), + (SOCIETY, SOCIETY_LABEL), + (INTERDISCIPLINARY, INTERDISCIPLINARY_LABEL), ) name = models.CharField(max_length=255, unique=True) - category = models.CharField( - max_length=100, - choices=CATEGORY_CHOICES - ) - new_category = models.ForeignKey( + category = models.ForeignKey( InstrumentCategory, on_delete=models.PROTECT, - null=True, - default=None + null=False, + default=default_category ) @property diff --git a/server/basicknowledge/queries.py b/server/basicknowledge/queries.py index 2a3e4f6f..7efe2e59 100644 --- a/server/basicknowledge/queries.py +++ b/server/basicknowledge/queries.py @@ -6,11 +6,18 @@ from api.graphene_wagtail import GenericStreamFieldType from api.utils import get_object from notes.models import InstrumentBookmark from notes.schema import InstrumentBookmarkNode -from .models import BasicKnowledge, InstrumentType +from .models import BasicKnowledge, InstrumentCategory, InstrumentType +class InstrumentCategoryNode(DjangoObjectType): + class Meta: + model = InstrumentCategory + only_fields = [ + 'name', 'foreground', 'background', 'id' + ] class InstrumentTypeNode(DjangoObjectType): type = graphene.String(required=True) + category = graphene.Field(InstrumentCategoryNode) class Meta: model = InstrumentType diff --git a/server/basicknowledge/tests/test_instrument_types_query.py b/server/basicknowledge/tests/test_instrument_types_query.py index 25e28b44..4435e08e 100644 --- a/server/basicknowledge/tests/test_instrument_types_query.py +++ b/server/basicknowledge/tests/test_instrument_types_query.py @@ -6,7 +6,12 @@ query InstrumentTypesQuery { instrumentTypes { name type - category + category { + id + name + foreground + background + } } } """ diff --git a/server/basicknowledge/wagtail_hooks.py b/server/basicknowledge/wagtail_hooks.py index 6c963a3b..3065391a 100644 --- a/server/basicknowledge/wagtail_hooks.py +++ b/server/basicknowledge/wagtail_hooks.py @@ -1,5 +1,5 @@ from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register -from .models import BasicKnowledge +from .models import BasicKnowledge, InstrumentCategory, InstrumentType class InstrumentAdmin(ModelAdmin): diff --git a/server/books/factories.py b/server/books/factories.py index b18211ea..53626e89 100644 --- a/server/books/factories.py +++ b/server/books/factories.py @@ -9,8 +9,9 @@ from wagtail.core.models import Page, Site from wagtail.core.rich_text import RichText from assignments.models import Assignment -from basicknowledge.models import BasicKnowledge, INTERDISCIPLINARY, InstrumentCategory, InstrumentType, \ - LANGUAGE_COMMUNICATION, SOCIETY +from basicknowledge.models import BasicKnowledge, INTERDISCIPLINARY, INTERDISCIPLINARY_LABEL, InstrumentCategory, \ + InstrumentType, \ + LANGUAGE_COMMUNICATION, LANGUAGE_COMMUNICATION_LABEL, SOCIETY, SOCIETY_LABEL from books.blocks import AssignmentBlock, BasicKnowledgeBlock, ImageUrlBlock, LinkBlock, VideoBlock from books.models import Book, Chapter, ContentBlock, Module, TextBlock, Topic from core.factories import BasePageFactory, DummyImageFactory, fake, fake_paragraph, fake_title @@ -76,7 +77,7 @@ class InstrumentCategoryFactory(factory.DjangoModelFactory): model = InstrumentCategory django_get_or_create = ('name',) - name = factory.Iterator([LANGUAGE_COMMUNICATION, SOCIETY, INTERDISCIPLINARY]) + name = factory.Iterator([LANGUAGE_COMMUNICATION_LABEL, SOCIETY_LABEL, INTERDISCIPLINARY_LABEL]) foreground = factory.Iterator(['FF0000', 'FFFFFF', '000000']) background = factory.Iterator(['FF0000', 'FFFFFF', '000000']) @@ -84,7 +85,7 @@ class InstrumentTypeFactory(factory.DjangoModelFactory): class Meta: model = InstrumentType - category = factory.Iterator([LANGUAGE_COMMUNICATION, SOCIETY, INTERDISCIPLINARY]) + category = factory.SubFactory(InstrumentCategoryFactory) name = factory.LazyAttribute(lambda x: fake.text(max_nb_chars=20)) diff --git a/server/schema.graphql b/server/schema.graphql index ab80e33d..46a1ba41 100644 --- a/server/schema.graphql +++ b/server/schema.graphql @@ -538,16 +538,10 @@ type InstrumentNodeEdge { cursor: String! } -enum InstrumentTypeCategory { - LANGUAGE_COMMUNICATION - SOCIETY - INTERDISCIPLINARY -} - type InstrumentTypeNode { id: ID! name: String! - category: InstrumentTypeCategory! + category: InstrumentCategoryNode type: String! } From 3810932cac0e6ea3728fbc68561011fa44e0aec6 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 13 Sep 2022 11:24:51 +0200 Subject: [PATCH 3/8] Replace old queries without subselection --- client/src/graphql/gql/fragments/instrumentParts.gql | 7 ++++++- client/src/graphql/gql/queries/instrumentTypesQuery.gql | 7 ++++++- client/src/graphql/gql/queries/instrumentsQuery.gql | 7 ++++++- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/client/src/graphql/gql/fragments/instrumentParts.gql b/client/src/graphql/gql/fragments/instrumentParts.gql index 26d3f5c3..9d90b65a 100644 --- a/client/src/graphql/gql/fragments/instrumentParts.gql +++ b/client/src/graphql/gql/fragments/instrumentParts.gql @@ -13,7 +13,12 @@ fragment InstrumentParts on InstrumentNode { type { id name - category + category { + id + name + foreground + background + } type } contents diff --git a/client/src/graphql/gql/queries/instrumentTypesQuery.gql b/client/src/graphql/gql/queries/instrumentTypesQuery.gql index 78b8b0db..3637fed8 100644 --- a/client/src/graphql/gql/queries/instrumentTypesQuery.gql +++ b/client/src/graphql/gql/queries/instrumentTypesQuery.gql @@ -2,6 +2,11 @@ query InstrumentTypesQuery { instrumentTypes { name type - category + category { + id + name + foreground + background + } } } diff --git a/client/src/graphql/gql/queries/instrumentsQuery.gql b/client/src/graphql/gql/queries/instrumentsQuery.gql index 290846b4..6d042b07 100644 --- a/client/src/graphql/gql/queries/instrumentsQuery.gql +++ b/client/src/graphql/gql/queries/instrumentsQuery.gql @@ -7,7 +7,12 @@ query InstrumentsQuery { type { id type - category + category { + id + name + foreground + background + } name } } From ac972c7196cc7368cdb2f4af81014a81d992dcfe Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 13 Sep 2022 16:22:35 +0200 Subject: [PATCH 4/8] Update instrument schema --- .../migrations/0020_auto_20220908_1517.py | 2 +- .../migrations/0024_auto_20220913_1055.py | 25 +++++++++++++++++++ server/basicknowledge/models.py | 4 ++- server/basicknowledge/queries.py | 14 +++++++++++ server/schema.graphql | 2 ++ 5 files changed, 45 insertions(+), 2 deletions(-) create mode 100644 server/basicknowledge/migrations/0024_auto_20220913_1055.py diff --git a/server/basicknowledge/migrations/0020_auto_20220908_1517.py b/server/basicknowledge/migrations/0020_auto_20220908_1517.py index 17a113fc..f61d0ebc 100644 --- a/server/basicknowledge/migrations/0020_auto_20220908_1517.py +++ b/server/basicknowledge/migrations/0020_auto_20220908_1517.py @@ -9,7 +9,7 @@ INTERDISCIPLINARY = 'interdisciplinary' CATEGORY_CHOICES = ( (LANGUAGE_COMMUNICATION, '#DAA009', '#FFF5D9', 'Sprache & Kommunikation'), (SOCIETY, '#0F7CAC', '#DBEEF6', 'Gesellschaft'), - (INTERDISCIPLINARY, '#99B53E', '#F3F9E3', 'Überfachliches Instrument'), + (INTERDISCIPLINARY, '#99B53E', '#F3F9E3', 'Überfachliche Instrumente'), ) def create_categories(apps, schema_editor): diff --git a/server/basicknowledge/migrations/0024_auto_20220913_1055.py b/server/basicknowledge/migrations/0024_auto_20220913_1055.py new file mode 100644 index 00000000..fdb1b91e --- /dev/null +++ b/server/basicknowledge/migrations/0024_auto_20220913_1055.py @@ -0,0 +1,25 @@ +# Generated by Django 3.2.13 on 2022-09-13 10:55 + +import basicknowledge.models +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('basicknowledge', '0023_alter_instrumenttype_category'), + ] + + operations = [ + migrations.AlterField( + model_name='basicknowledge', + name='old_type', + field=models.CharField(blank=True, choices=[('language_communication', 'Sprache & Kommunikation'), ('society', 'Gesellschaft'), ('interdisciplinary', 'Überfachliche Instrumente')], max_length=100), + ), + migrations.AlterField( + model_name='instrumenttype', + name='category', + field=models.ForeignKey(default=basicknowledge.models.default_category, on_delete=django.db.models.deletion.PROTECT, related_name='instrument_types', to='basicknowledge.instrumentcategory'), + ), + ] diff --git a/server/basicknowledge/models.py b/server/basicknowledge/models.py index 94ca1684..04c6f973 100644 --- a/server/basicknowledge/models.py +++ b/server/basicknowledge/models.py @@ -33,6 +33,7 @@ class InstrumentCategory(models.Model): def default_category(): return InstrumentCategory.objects.first().pk + class InstrumentType(models.Model): CATEGORY_CHOICES = ( (LANGUAGE_COMMUNICATION, LANGUAGE_COMMUNICATION_LABEL), @@ -45,7 +46,8 @@ class InstrumentType(models.Model): InstrumentCategory, on_delete=models.PROTECT, null=False, - default=default_category + default=default_category, + related_name='instrument_types' ) @property diff --git a/server/basicknowledge/queries.py b/server/basicknowledge/queries.py index 7efe2e59..1d592a6b 100644 --- a/server/basicknowledge/queries.py +++ b/server/basicknowledge/queries.py @@ -8,19 +8,29 @@ from notes.models import InstrumentBookmark from notes.schema import InstrumentBookmarkNode from .models import BasicKnowledge, InstrumentCategory, InstrumentType + class InstrumentCategoryNode(DjangoObjectType): + types = graphene.List('basicknowledge.queries.InstrumentTypeNode') + class Meta: model = InstrumentCategory + interfaces = (relay.Node,) only_fields = [ 'name', 'foreground', 'background', 'id' ] + @staticmethod + def resolve_types(root: InstrumentCategory, info, **kwargs): + return root.instrument_types.filter(instruments__isnull=False).order_by('name').distinct() + + class InstrumentTypeNode(DjangoObjectType): type = graphene.String(required=True) category = graphene.Field(InstrumentCategoryNode) class Meta: model = InstrumentType + interfaces = (relay.Node,) only_fields = [ 'name', 'category', 'type', 'id' ] @@ -58,6 +68,7 @@ class InstrumentQuery(object): instrument = graphene.Field(InstrumentNode, slug=graphene.String(), id=graphene.ID()) instruments = graphene.List(InstrumentNode) instrument_types = graphene.List(InstrumentTypeNode) + instrument_categories = graphene.List(InstrumentCategoryNode) def resolve_instrument(self, info, **kwargs): slug = kwargs.get('slug') @@ -74,3 +85,6 @@ class InstrumentQuery(object): def resolve_instrument_types(self, info, **kwargs): return InstrumentType.objects.filter(instruments__isnull=False).order_by('name').distinct() + + def resolve_instrument_categories(self, info, **kwargs): + return InstrumentCategory.objects.all() diff --git a/server/schema.graphql b/server/schema.graphql index 46a1ba41..cd8c68d8 100644 --- a/server/schema.graphql +++ b/server/schema.graphql @@ -516,6 +516,7 @@ type InstrumentCategoryNode { name: String! background: String! foreground: String! + types: [InstrumentTypeNode] } type InstrumentNode implements Node { @@ -875,6 +876,7 @@ type Query { instrument(slug: String, id: ID): InstrumentNode instruments: [InstrumentNode] instrumentTypes: [InstrumentTypeNode] + instrumentCategories: [InstrumentCategoryNode] studentSubmission(id: ID!): StudentSubmissionNode assignment(id: ID!): AssignmentNode assignments: [AssignmentNode] From 2b3f9c7ae038c0f4b3dbbd2eec6189e27e72f588 Mon Sep 17 00:00:00 2001 From: Ramon Wenger Date: Tue, 13 Sep 2022 16:28:56 +0200 Subject: [PATCH 5/8] Update filtering in client --- .../components/instruments/FilterEntry.vue | 10 +--- .../components/instruments/FilterGroup.vue | 12 ++-- .../instruments/InstrumentEntry.vue | 10 +++- .../instruments/InstrumentFilter.vue | 56 +++---------------- .../gql/queries/instrumentCategoriesQuery.gql | 17 ++++++ client/src/helpers/instrumentType.js | 2 +- client/src/pages/instrumentOverview.vue | 6 +- 7 files changed, 49 insertions(+), 64 deletions(-) create mode 100644 client/src/graphql/gql/queries/instrumentCategoriesQuery.gql diff --git a/client/src/components/instruments/FilterEntry.vue b/client/src/components/instruments/FilterEntry.vue index 1226bb46..4d3ef067 100644 --- a/client/src/components/instruments/FilterEntry.vue +++ b/client/src/components/instruments/FilterEntry.vue @@ -12,7 +12,6 @@