From 4f347cfbcb339264b23cd0a9d3a2433dcaf6ed5f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=20K=C3=A4sler?= <tom.kaesler@mni.thm.de>
Date: Mon, 11 Nov 2019 14:09:37 +0100
Subject: [PATCH] Add tag to comment

Add select menu on creating a comment
Add small section in comment mat card for displaying the comments
---
 .../create-comment/create-comment.component.html    | 13 +++++++++++--
 .../create-comment/create-comment.component.scss    |  5 +++++
 .../create-comment/create-comment.component.ts      |  7 +++++++
 .../shared/comment-list/comment-list.component.ts   |  1 +
 .../shared/comment/comment.component.html           | 13 +++++++++++--
 .../shared/comment/comment.component.scss           |  8 ++++++++
 .../websockets/ws-comment-service.service.ts        |  2 +-
 src/assets/i18n/creator/de.json                     |  1 +
 src/assets/i18n/creator/en.json                     |  1 +
 src/assets/i18n/participant/de.json                 |  1 +
 src/assets/i18n/participant/en.json                 |  1 +
 11 files changed, 48 insertions(+), 5 deletions(-)

diff --git a/src/app/components/shared/_dialogs/create-comment/create-comment.component.html b/src/app/components/shared/_dialogs/create-comment/create-comment.component.html
index 93a93e4ee..f6bf1e6e0 100644
--- a/src/app/components/shared/_dialogs/create-comment/create-comment.component.html
+++ b/src/app/components/shared/_dialogs/create-comment/create-comment.component.html
@@ -1,9 +1,18 @@
 <div fxLayout="column" fxLayoutAlign="center" fxLayoutGap="20px">
-  <mat-form-field class="input-block">
+  <mat-form-field>
     <textarea (focus)="eventService.makeFocusOnInputTrue()" (blur)="eventService.makeFocusOnInputFalse()" matInput #commentBody matTextareaAutosize matAutosizeMinRows=5 matAutosizeMaxRows=10  maxlength="250"
               [formControl]="bodyForm" aria-labelledby="ask-question-description"></textarea>
-    <mat-placeholder class="placeholder">{{ 'comment-page.enter-comment' | translate}}</mat-placeholder>
+    <mat-placeholder class="placeholder">{{ 'comment-page.enter-comment' | translate }}</mat-placeholder>
     <mat-hint align="end"><span aria-hidden="true">{{commentBody.value.length}} / 250</span></mat-hint>
+
+  </mat-form-field>
+  <mat-form-field *ngIf="tags !== null">
+
+    <mat-label>{{ 'comment-page.tag' || translate }}</mat-label>
+    <mat-select [(ngModel)]="selectedTag" class="comment-tag">
+      <mat-option *ngFor="let tag of tags" value="{{tag}}">{{tag}}</mat-option>
+    </mat-select>
+
   </mat-form-field>
 </div>
 <app-dialog-action-buttons
diff --git a/src/app/components/shared/_dialogs/create-comment/create-comment.component.scss b/src/app/components/shared/_dialogs/create-comment/create-comment.component.scss
index 2cf078505..980812d8b 100644
--- a/src/app/components/shared/_dialogs/create-comment/create-comment.component.scss
+++ b/src/app/components/shared/_dialogs/create-comment/create-comment.component.scss
@@ -29,6 +29,11 @@ mat-hint {
   color: var(--on-surface) !important;
 }
 
+.mat-select-value-text {
+  color: var(--on-surface);
+  caret-color: var(--on-surface);
+}
+
 .placeholder {
   color: var(--on-surface);
 }
diff --git a/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts b/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts
index f48f539b3..769c05d39 100644
--- a/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts
+++ b/src/app/components/shared/_dialogs/create-comment/create-comment.component.ts
@@ -19,6 +19,8 @@ export class CreateCommentComponent implements OnInit {
 
   user: User;
   roomId: string;
+  tags: string[];
+  selectedTag: string;
 
   bodyForm = new FormControl('', [Validators.required]);
 
@@ -58,6 +60,11 @@ export class CreateCommentComponent implements OnInit {
       comment.body = body;
       comment.creatorId = this.user.id;
       comment.createdFromLecturer = this.user.role === 1;
+      if (this.selectedTag !== null) {
+        console.log("FUCK YOU");
+        console.log(this.selectedTag);
+        comment.tag = this.selectedTag;
+      }
       this.dialogRef.close(comment);
     }
   }
diff --git a/src/app/components/shared/comment-list/comment-list.component.ts b/src/app/components/shared/comment-list/comment-list.component.ts
index 04399c86b..ce1dd93a3 100644
--- a/src/app/components/shared/comment-list/comment-list.component.ts
+++ b/src/app/components/shared/comment-list/comment-list.component.ts
@@ -247,6 +247,7 @@ export class CommentListComponent implements OnInit {
     });
     dialogRef.componentInstance.user = this.user;
     dialogRef.componentInstance.roomId = this.roomId;
+    dialogRef.componentInstance.tags = this.room.extensions['tags'].tags;
     dialogRef.afterClosed()
       .subscribe(result => {
         if (result) {
diff --git a/src/app/components/shared/comment/comment.component.html b/src/app/components/shared/comment/comment.component.html
index c1834f3f1..ef428be7e 100644
--- a/src/app/components/shared/comment/comment.component.html
+++ b/src/app/components/shared/comment/comment.component.html
@@ -79,9 +79,18 @@
           <mat-icon class="voting-icon" [ngClass]="{'downVoted' : hasVoted === -1}">keyboard_arrow_down</mat-icon>
         </button>
       </div>
-    <div *ngIf="!isStudent" fxLayout="column" fxLayoutAlign="center">
-      <span class="scoreCreator">{{comment.score}}</span>
+      <div *ngIf="!isStudent" fxLayout="column" fxLayoutAlign="center">
+        <span class="scoreCreator">{{comment.score}}</span>
+      </div>
+
     </div>
+    <div *ngIf="comment.tag !== null && comment.tag !== ''" class="comment-tags">
+      <span class="comment-tag-icon">
+        <mat-icon svgIcon="comment_tag"></mat-icon>
+      </span>
+      <span class="comment-tag">
+        {{comment.tag}}
+      </span>
     </div>
   </div>
 </mat-card>
diff --git a/src/app/components/shared/comment/comment.component.scss b/src/app/components/shared/comment/comment.component.scss
index 3aaa73bcb..8eaeaa156 100644
--- a/src/app/components/shared/comment/comment.component.scss
+++ b/src/app/components/shared/comment/comment.component.scss
@@ -107,3 +107,11 @@ user.role
 .moderator {
   background-color: var(--moderator)!important;
 }
+
+.comment-tags {
+  margin-top: 1rem;
+}
+
+.comment-tag {
+  vertical-align: 5px;
+}
diff --git a/src/app/services/websockets/ws-comment-service.service.ts b/src/app/services/websockets/ws-comment-service.service.ts
index 4333dc741..f4b0ea9e1 100644
--- a/src/app/services/websockets/ws-comment-service.service.ts
+++ b/src/app/services/websockets/ws-comment-service.service.ts
@@ -20,7 +20,7 @@ export class WsCommentServiceService {
   constructor(private wsConnector: WsConnectorService) { }
 
   add(comment: Comment): void {
-    const message = new CreateComment(comment.roomId, comment.creatorId, comment.body);
+    const message = new CreateComment(comment.roomId, comment.creatorId, comment.body, comment.tag);
     this.wsConnector.send(`/queue/comment.command.create`, JSON.stringify(message));
   }
 
diff --git a/src/assets/i18n/creator/de.json b/src/assets/i18n/creator/de.json
index 1b999d7d6..05f22db33 100644
--- a/src/assets/i18n/creator/de.json
+++ b/src/assets/i18n/creator/de.json
@@ -95,6 +95,7 @@
     "semicolon": "CSV-Format",
     "send": "Senden",
     "send-description": "Frage abschicken",
+    "tag": "Kategorie",
     "vote-down": "Frage abwerten",
     "vote-up": "Frage aufwerten"
   },
diff --git a/src/assets/i18n/creator/en.json b/src/assets/i18n/creator/en.json
index 589ad3e3b..a765fb322 100644
--- a/src/assets/i18n/creator/en.json
+++ b/src/assets/i18n/creator/en.json
@@ -96,6 +96,7 @@
     "semicolon": "CSV format",
     "send": "Send",
     "send-description": "Send question",
+    "tag": "Tag",
     "vote-down": "Vote down",
     "vote-up": "Vote up"
   },
diff --git a/src/assets/i18n/participant/de.json b/src/assets/i18n/participant/de.json
index 0846e41c1..d5c5baf72 100644
--- a/src/assets/i18n/participant/de.json
+++ b/src/assets/i18n/participant/de.json
@@ -85,6 +85,7 @@
     "search-box-input-description": "Hier kannst du nach Fragen suchen.",
     "send": "Senden",
     "send-description": "Frage abschicken",
+    "tag": "Kategorie",
     "vote-down": "Frage abwerten",
     "vote-up": "Frage aufwerten"
   },
diff --git a/src/assets/i18n/participant/en.json b/src/assets/i18n/participant/en.json
index 85d49a006..d1e10e926 100644
--- a/src/assets/i18n/participant/en.json
+++ b/src/assets/i18n/participant/en.json
@@ -85,6 +85,7 @@
     "search-box-input-description": "Here you can search for questions.",
     "send": "Send",
     "send-description": "Send question",
+    "tag": "Tag",
     "vote-down": "Vote down",
     "vote-up": "Vote up"
   },
-- 
GitLab