diff --git a/src/app/components/fragments/header/header.component.html b/src/app/components/fragments/header/header.component.html index d4ef907110c1ba91af3daa1b23869b4b4e019cd1..f7d6889ff5de5063f1e25e40f5978e231a729e7e 100644 --- a/src/app/components/fragments/header/header.component.html +++ b/src/app/components/fragments/header/header.component.html @@ -1,6 +1,9 @@ <mat-toolbar color="primary"> <mat-toolbar-row> - <span>ARSnova</span> + <button *ngIf="router.url !== '/home'" (click)="goBack()" mat-icon-button> + <mat-icon aria-label="Go back">keyboard_arrow_left</mat-icon> + </button> + <span class="app-title" (click)="goToHomepage()">ARSnova</span> <span class="fill-remaining-space"></span> <mat-menu #appMenu="matMenu" [overlapTrigger]="false"> <button mat-menu-item (click)="logout()"> diff --git a/src/app/components/fragments/header/header.component.scss b/src/app/components/fragments/header/header.component.scss index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..939288c18f62ad57cd71c091830ce6273d75608e 100644 --- a/src/app/components/fragments/header/header.component.scss +++ b/src/app/components/fragments/header/header.component.scss @@ -0,0 +1,3 @@ +.app-title { + cursor: pointer; +} diff --git a/src/app/components/fragments/header/header.component.ts b/src/app/components/fragments/header/header.component.ts index 557177d444db5557e0e48f82b83b9085eee2c894..222744b119fc8911eb8c7cf77a96195b03603114 100644 --- a/src/app/components/fragments/header/header.component.ts +++ b/src/app/components/fragments/header/header.component.ts @@ -3,6 +3,8 @@ import { AuthenticationService } from '../../../services/http/authentication.ser import { NotificationService } from '../../../services/util/notification.service'; import { Router } from '@angular/router'; import { User } from '../../../models/user'; +import { UserRole } from '../../../models/user-roles.enum'; +import { Location } from '@angular/common'; @Component({ selector: 'app-header', @@ -12,13 +14,14 @@ import { User } from '../../../models/user'; export class HeaderComponent implements OnInit { user: User; - constructor(private authenticationService: AuthenticationService, + constructor(public location: Location, + private authenticationService: AuthenticationService, private notification: NotificationService, public router: Router) { } ngOnInit() { - // Subscribe to user data + // Subscribe to user data (update component's user when user data changes: e.g. login, logout) this.authenticationService.watchUser.subscribe(newUser => this.user = newUser); } @@ -27,4 +30,25 @@ export class HeaderComponent implements OnInit { this.notification.show(`Logged out`); this.router.navigate(['/']); } + + goBack() { + this.location.back(); + } + + goToHomepage() { + const role: UserRole = this.user !== undefined ? this.user.role : undefined; + let route: string; + + switch (role) { + case UserRole.PARTICIPANT: + route = '/participant'; + break; + case UserRole.CREATOR: + route = '/creator'; + break; + default: + route = '/'; + } + this.router.navigate([route]); + } }