From b6bb1fe7673c26726e8511dda3b5a668e7560f4b Mon Sep 17 00:00:00 2001 From: Sean Date: Thu, 14 May 2020 15:07:59 +0200 Subject: [PATCH] Add tags for agenda items Adds tags for agnda items, adds tag filter in agenda list view, server changes, client relations, adjust agenda csv exporter --- .../agenda/item-repository.service.ts | 7 ++++ client/src/app/shared/models/agenda/item.ts | 1 + .../agenda-list/agenda-list.component.html | 27 ++++++++++++- .../item-info-dialog.component.html | 9 +++++ .../item-info-dialog.component.ts | 38 +++++++++++++++---- .../src/app/site/agenda/models/view-item.ts | 6 ++- .../services/agenda-csv-export.service.ts | 3 +- .../services/agenda-filter-list.service.ts | 27 ++++++++++--- .../agenda/migrations/0009_item_tags.py | 19 ++++++++++ openslides/agenda/models.py | 9 ++++- openslides/agenda/serializers.py | 1 + tests/integration/agenda/test_viewset.py | 3 +- tests/integration/motions/test_motions.py | 3 +- 13 files changed, 132 insertions(+), 21 deletions(-) create mode 100644 openslides/agenda/migrations/0009_item_tags.py diff --git a/client/src/app/core/repositories/agenda/item-repository.service.ts b/client/src/app/core/repositories/agenda/item-repository.service.ts index b02ffaeae..0299bf2e4 100644 --- a/client/src/app/core/repositories/agenda/item-repository.service.ts +++ b/client/src/app/core/repositories/agenda/item-repository.service.ts @@ -20,6 +20,7 @@ import { } from 'app/site/base/base-view-model-with-agenda-item'; import { ViewMotion } from 'app/site/motions/models/view-motion'; import { ViewMotionBlock } from 'app/site/motions/models/view-motion-block'; +import { ViewTag } from 'app/site/tags/models/view-tag'; import { ViewTopic } from 'app/site/topics/models/view-topic'; import { BaseHasContentObjectRepository } from '../base-has-content-object-repository'; import { BaseIsAgendaItemContentObjectRepository } from '../base-is-agenda-item-content-object-repository'; @@ -34,6 +35,12 @@ const ItemRelations: RelationDefinition[] = [ VForeignVerbose: 'BaseViewModelWithAgendaItem', ownContentObjectDataKey: 'contentObjectData', ownKey: 'contentObject' + }, + { + type: 'M2M', + ownIdKey: 'tags_id', + ownKey: 'tags', + foreignViewModel: ViewTag } ]; diff --git a/client/src/app/shared/models/agenda/item.ts b/client/src/app/shared/models/agenda/item.ts index 80c8ff6ae..433d2d80e 100644 --- a/client/src/app/shared/models/agenda/item.ts +++ b/client/src/app/shared/models/agenda/item.ts @@ -49,6 +49,7 @@ export class Item extends BaseModelWithContentObject { public weight: number; public parent_id: number; public level: number; + public tags_id: number[]; public constructor(input?: any) { super(Item.COLLECTIONSTRING, input); diff --git a/client/src/app/site/agenda/components/agenda-list/agenda-list.component.html b/client/src/app/site/agenda/components/agenda-list/agenda-list.component.html index d184fb5be..1b0afdf33 100644 --- a/client/src/app/site/agenda/components/agenda-list/agenda-list.component.html +++ b/client/src/app/site/agenda/components/agenda-list/agenda-list.component.html @@ -33,7 +33,6 @@
-
@@ -64,9 +63,22 @@
-
+ +
+ + + {{ tag.getTitle() }} + + + +
+ + +
{{ item.verboseType | translate }}
+ +
{{ durationService.durationToString(item.duration, 'h') }} @@ -98,6 +110,8 @@ {{ 'Multiselect' | translate }} + + + + + + + +