From ad084740497d5d221fe5a93b71bafb202f033451 Mon Sep 17 00:00:00 2001
From: Thomas Lenz <Thomas.Lenz@mni.thm.de>
Date: Thu, 8 Mar 2018 20:03:48 +0100
Subject: [PATCH] Add route for creator's room view

---
 src/app/app-routing.module.ts                    |  6 ++++++
 .../creator-home-screen.component.html           |  9 ++++++++-
 .../creator-home-screen.component.ts             | 10 ++++++++--
 src/app/creator-room/creator-room.component.html |  2 +-
 src/app/creator-room/creator-room.component.ts   | 16 +++++++++++++---
 src/app/room-list/room-list.component.ts         |  2 +-
 src/app/room/room.component.ts                   |  4 ++--
 7 files changed, 39 insertions(+), 10 deletions(-)

diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts
index 7e8c2ec26..6b23d40b2 100644
--- a/src/app/app-routing.module.ts
+++ b/src/app/app-routing.module.ts
@@ -9,6 +9,7 @@ import { ParticipantHomeScreenComponent } from './participant-home-screen/partic
 import { AuthenticationGuard } from './authentication.guard';
 import { UserRole } from './user-roles.enum';
 import { ParticipantRoomComponent } from './participant-room/participant-room.component';
+import { CreatorRoomComponent } from './creator-room/creator-room.component';
 import { CommentComponent } from './comment/comment.component';
 import { CommentListComponent } from './comment-list/comment-list.component';
 
@@ -32,6 +33,11 @@ const routes: Routes = [
     component: RoomComponent,
     canActivate: [AuthenticationGuard]
   },
+  {
+    path: 'creator/room/:roomId',
+    component: CreatorRoomComponent,
+    canActivate: [AuthenticationGuard]
+  },
   {
     path: 'room/:roomId/comments',
     component: CommentListComponent,
diff --git a/src/app/creator-home-screen/creator-home-screen.component.html b/src/app/creator-home-screen/creator-home-screen.component.html
index a126d73ea..0b5c3509d 100644
--- a/src/app/creator-home-screen/creator-home-screen.component.html
+++ b/src/app/creator-home-screen/creator-home-screen.component.html
@@ -3,6 +3,13 @@
     <button mat-raised-button color="primary" (click)="openCreateRoomDialog()">Create new room</button>
   </div>
   <div fxLayout="row" fxLayoutAlign="center">
-    <app-room-list></app-room-list>
+<!--    <app-room-list></app-room-list> -->
+    <mat-list>
+      <mat-list-item *ngFor="let room of rooms">
+        <button mat-button routerLink="room/{{room.id}}">
+          {{room.name}}
+        </button>
+      </mat-list-item>
+    </mat-list>
   </div>
 </div>
diff --git a/src/app/creator-home-screen/creator-home-screen.component.ts b/src/app/creator-home-screen/creator-home-screen.component.ts
index ee0b2aa26..874e0e586 100644
--- a/src/app/creator-home-screen/creator-home-screen.component.ts
+++ b/src/app/creator-home-screen/creator-home-screen.component.ts
@@ -1,17 +1,23 @@
 import { Component, OnInit } from '@angular/core';
 import { MatDialog } from '@angular/material';
 import { RoomCreationComponent } from '../room-creation/room-creation.component';
+import { RoomListComponent } from '../room-list/room-list.component';
+import { RoomService } from '../room.service';
 
 @Component({
   selector: 'app-creator-home-screen',
   templateUrl: './creator-home-screen.component.html',
   styleUrls: ['./creator-home-screen.component.scss']
 })
-export class CreatorHomeScreenComponent implements OnInit {
+export class CreatorHomeScreenComponent extends RoomListComponent implements OnInit {
 
-  constructor(public dialog: MatDialog) { }
+  constructor(public dialog: MatDialog,
+              protected roomService: RoomService) {
+    super(roomService);
+  }
 
   ngOnInit() {
+    this.getRooms();
   }
 
   openCreateRoomDialog(): void {
diff --git a/src/app/creator-room/creator-room.component.html b/src/app/creator-room/creator-room.component.html
index d641f8e45..cca53d81e 100644
--- a/src/app/creator-room/creator-room.component.html
+++ b/src/app/creator-room/creator-room.component.html
@@ -1,7 +1,7 @@
 <div fxLayout="column" fxLayoutAlign="center" fxLayoutGap="20px" fxFill>
   <div fxLayout="row" fxLayoutAlign="center">
     <div fxLayoutGap="20px">
-      <mat-list-item>Room: {{room}}</mat-list-item>
+      <mat-list-item>Room: {{room.name}}</mat-list-item>
       <mat-list-item>
         <button mat-raised-button color="primary">Create content</button>
       </mat-list-item>
diff --git a/src/app/creator-room/creator-room.component.ts b/src/app/creator-room/creator-room.component.ts
index c88fa779b..61a7984b9 100644
--- a/src/app/creator-room/creator-room.component.ts
+++ b/src/app/creator-room/creator-room.component.ts
@@ -1,15 +1,25 @@
 import { Component, OnInit } from '@angular/core';
+import { RoomService } from '../room.service';
+import { ActivatedRoute } from '@angular/router';
+import { RoomComponent } from '../room/room.component';
+import { Room } from '../room';
 
 @Component({
   selector: 'app-creator-room',
   templateUrl: './creator-room.component.html',
   styleUrls: ['./creator-room.component.scss']
 })
-export class CreatorRoomComponent implements OnInit {
-  room = '1';
-  constructor() { }
+export class CreatorRoomComponent extends RoomComponent implements OnInit {
+  room: Room;
+  constructor(protected roomService: RoomService,
+              protected route: ActivatedRoute) {
+    super(roomService, route);
+  }
 
   ngOnInit() {
+    this.route.params.subscribe(params => {
+      this.getRoom(params['roomId']);
+    });
   }
 
 }
diff --git a/src/app/room-list/room-list.component.ts b/src/app/room-list/room-list.component.ts
index 83597ea49..effcbed6c 100644
--- a/src/app/room-list/room-list.component.ts
+++ b/src/app/room-list/room-list.component.ts
@@ -11,7 +11,7 @@ export class RoomListComponent implements OnInit {
   rooms: Room[];
   closedRooms: Room[];
 
-  constructor(private roomService: RoomService) {
+  constructor(protected roomService: RoomService) {
   }
 
   ngOnInit() {
diff --git a/src/app/room/room.component.ts b/src/app/room/room.component.ts
index 582301e28..800b70b5b 100644
--- a/src/app/room/room.component.ts
+++ b/src/app/room/room.component.ts
@@ -11,8 +11,8 @@ import { ActivatedRoute } from '@angular/router';
 export class RoomComponent implements OnInit {
   room: Room = null;
 
-  constructor(private roomService: RoomService,
-              private route: ActivatedRoute) {
+  constructor(protected roomService: RoomService,
+              protected route: ActivatedRoute) {
   }
 
   ngOnInit() {
-- 
GitLab