From b6aad3ebc592d07d881d6c6e4d9b46fcd24f514e Mon Sep 17 00:00:00 2001
From: Stefan Plociennik <stefan.plociennik@mni.thm.de>
Date: Sun, 6 Jun 2021 14:43:05 +0200
Subject: [PATCH] selected spacy labels are now written in topic cloud admin
 data for other groups

---
 .../TopicCloudAdminData.ts                    |  5 +++-
 .../topic-cloud-administration.component.html |  9 +++---
 .../topic-cloud-administration.component.ts   | 28 +++++++++++++------
 .../util/topic-cloud-admin.service.ts         |  5 +++-
 4 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/src/app/components/shared/_dialogs/topic-cloud-administration/TopicCloudAdminData.ts b/src/app/components/shared/_dialogs/topic-cloud-administration/TopicCloudAdminData.ts
index 6e59d66b4..5d0dbabc4 100644
--- a/src/app/components/shared/_dialogs/topic-cloud-administration/TopicCloudAdminData.ts
+++ b/src/app/components/shared/_dialogs/topic-cloud-administration/TopicCloudAdminData.ts
@@ -1,6 +1,9 @@
 export interface TopicCloudAdminData {
     blacklist: string[];
-    wantedLabels: Labels;
+    wantedLabels: {
+      de: string[];
+      en: string[];
+    };
     considerVotes: boolean;
     profanityFilter: boolean;
     blacklistIsActive: boolean;
diff --git a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.html b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.html
index f66b15f46..4a9869beb 100644
--- a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.html
+++ b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.html
@@ -114,15 +114,15 @@
 
           <mat-tab-group mat-align-tabs="center">
             <mat-tab label="German">
-              <mat-selection-list>
-                <mat-list-option selected=true class="color-on-surface" *ngFor="let label of wantedLabels.de">
+              <mat-selection-list [(ngModel)]="wantedLabels.de">
+                <mat-list-option selected=true [value]="label.tag" class="color-on-surface" *ngFor="let label of spacyLabels.de">
                   {{label.label + " (" + label.tag + ")"}}
                 </mat-list-option>
               </mat-selection-list>
             </mat-tab>
             <mat-tab label="English">
-              <mat-selection-list>
-                <mat-list-option selected=true class="color-on-surface" *ngFor="let label of wantedLabels.en">
+              <mat-selection-list [(ngModel)]="wantedLabels.en">
+                <mat-list-option selected=true [value]="label.tag" class="color-on-surface" *ngFor="let label of spacyLabels.en">
                   {{label.label + " (" + label.tag + ")"}}
                 </mat-list-option>
               </mat-selection-list>
@@ -130,7 +130,6 @@
           </mat-tab-group>
         </mat-expansion-panel>
       </mat-accordion>
-
     </mat-expansion-panel>
   </mat-accordion>
 
diff --git a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts
index 7a5d79514..fa7d19933 100644
--- a/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts
+++ b/src/app/components/shared/_dialogs/topic-cloud-administration/topic-cloud-administration.component.ts
@@ -43,9 +43,11 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
   keywordORfulltext: string = undefined;
   userRole: UserRole;
 
-  wantedLabels: Labels;
-  englishLabels = true;
-  germanLabels = true;
+  spacyLabels: Labels;
+  wantedLabels: {
+    de: string[];
+    en: string[];
+  };
 
   keywords: Keyword[] = [];
   private topicCloudAdminData: TopicCloudAdminData;
@@ -71,8 +73,12 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
     this.blacklistSubscription = this.topicCloudAdminService.getBlacklist().subscribe(list => this.blacklist = list);
     this.isCreatorOrMod = this.data ? (this.data.user.role !== UserRole.PARTICIPANT) : true;
     this.translateService.use(localStorage.getItem('currentLang'));
+    this.spacyLabels = spacyLabels;
+    this.wantedLabels = {
+      de: [],
+      en: []
+    };
     this.setDefaultAdminData();
-    this.wantedLabels = spacyLabels;
   }
 
   ngOnDestroy(){
@@ -108,10 +114,13 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
     });
   }
 
-  setAdminData(){
+  setAdminData() {
     this.topicCloudAdminData = {
       blacklist: [],
-      wantedLabels: this.wantedLabels,
+      wantedLabels: {
+        de: this.wantedLabels.de,
+        en: this.wantedLabels.en
+      },
       considerVotes: this.considerVotes,
       profanityFilter: this.profanityFilter,
       blacklistIsActive: this.blacklistIsActive,
@@ -127,7 +136,10 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
       this.profanityFilter = this.topicCloudAdminData.profanityFilter;
       this.blacklistIsActive = this.topicCloudAdminData.blacklistIsActive;
       this.keywordORfulltext = KeywordOrFulltext[this.topicCloudAdminData.keywordORfulltext];
-      this.wantedLabels = this.topicCloudAdminData.wantedLabels;
+      this.wantedLabels = {
+        de: this.topicCloudAdminData.wantedLabels.de,
+        en: this.topicCloudAdminData.wantedLabels.en
+      };
     }
   }
 
@@ -289,7 +301,7 @@ export class TopicCloudAdministrationComponent implements OnInit, OnDestroy {
     this.topicCloudAdminService.removeWordFromBlacklist(word);
   }
 
-  refreshAllLists(){
+  refreshAllLists() {
     this.searchKeyword();
   }
 }
diff --git a/src/app/services/util/topic-cloud-admin.service.ts b/src/app/services/util/topic-cloud-admin.service.ts
index 8e16a5f2b..43433ae5d 100644
--- a/src/app/services/util/topic-cloud-admin.service.ts
+++ b/src/app/services/util/topic-cloud-admin.service.ts
@@ -40,7 +40,10 @@ export class TopicCloudAdminService {
     if (!data) {
       data = {
         blacklist: [],
-        wantedLabels: new Labels([], []),
+        wantedLabelsDE: {
+          de: [],
+          en: []
+        },
         considerVotes: false,
         profanityFilter: true,
         blacklistIsActive: false,
-- 
GitLab