104 lines
3.5 KiB
TypeScript
104 lines
3.5 KiB
TypeScript
import { Component, OnInit, OnDestroy } from '@angular/core';
|
|
import { environment } from 'environments/environment';
|
|
import { SelectedRouteService } from 'app/services/selected-route/selected-route';
|
|
import { Subscription } from 'rxjs/Subscription';
|
|
import { DomainService } from 'app/services/domain/domain.service';
|
|
import { BusinessAdminGuard } from 'app/guards/business-admin-guard';
|
|
import { MonitorGuard } from 'app/guards/monitor-guard';
|
|
import { WindowRefService } from 'app/services/window/window.service';
|
|
import { UserGuard } from 'app/guards/user-guard';
|
|
import { TaskanaEngineService } from '../../services/taskana-engine/taskana-engine.service';
|
|
import { expandRight } from 'app/shared/animations/expand.animation';
|
|
@Component({
|
|
selector: 'taskana-nav-bar',
|
|
templateUrl: './nav-bar.component.html',
|
|
styleUrls: ['./nav-bar.component.scss'],
|
|
animations: [expandRight],
|
|
})
|
|
export class NavBarComponent implements OnInit, OnDestroy {
|
|
|
|
selectedRoute = '';
|
|
route: string;
|
|
title = '';
|
|
|
|
titleAdministration = 'Administration';
|
|
titleWorkbaskets = 'Workbaskets';
|
|
titleClassifications = 'Classifications';
|
|
titleMonitor = 'Monitor';
|
|
titleWorkplace = 'Workplace';
|
|
showNavbar = false;
|
|
domains: Array<string> = [];
|
|
selectedDomain: string;
|
|
|
|
adminUrl = './administration';
|
|
monitorUrl = './monitor';
|
|
workplaceUrl = './workplace';
|
|
|
|
administrationAccess = false;
|
|
monitorAccess = false;
|
|
workplaceAccess = false;
|
|
|
|
selectedRouteSubscription: Subscription;
|
|
getDomainsSubscription: Subscription;
|
|
|
|
constructor(
|
|
private selectedRouteService: SelectedRouteService,
|
|
private domainService: DomainService,
|
|
private taskanaEngineService: TaskanaEngineService,
|
|
private window: WindowRefService) { }
|
|
|
|
ngOnInit() {
|
|
this.selectedRouteSubscription = this.selectedRouteService.getSelectedRoute().subscribe((value: string) => {
|
|
this.selectedRoute = value;
|
|
this.setTitle(value);
|
|
});
|
|
this.getDomainsSubscription = this.domainService.getDomains().subscribe(domains => {
|
|
this.domains = domains;
|
|
});
|
|
|
|
this.domainService.getSelectedDomain().subscribe(domain => {
|
|
this.selectedDomain = domain;
|
|
});
|
|
|
|
this.administrationAccess = this.taskanaEngineService.hasRole(BusinessAdminGuard.roles);
|
|
this.monitorAccess = this.taskanaEngineService.hasRole(MonitorGuard.roles);
|
|
this.workplaceAccess = this.taskanaEngineService.hasRole(UserGuard.roles);
|
|
}
|
|
|
|
switchDomain(domain) {
|
|
this.domainService.switchDomain(domain);
|
|
}
|
|
|
|
toogleNavBar() {
|
|
this.showNavbar = !this.showNavbar;
|
|
}
|
|
|
|
|
|
logout() {
|
|
this.window.nativeWindow.location.href = environment.taskanaRestUrl + '/logout';
|
|
}
|
|
|
|
showDomainSelector(): boolean {
|
|
return this.selectedRoute.indexOf('administration') !== -1
|
|
|| this.selectedRoute.indexOf('workbaskets') !== -1
|
|
|| this.selectedRoute.indexOf('classifications') !== -1
|
|
}
|
|
|
|
private setTitle(value: string = 'workbaskets') {
|
|
if (value.indexOf('workbaskets') === 0) {
|
|
this.title = this.titleWorkbaskets;
|
|
} else if (value.indexOf('classifications') === 0) {
|
|
this.title = this.titleClassifications;
|
|
} else if (value.indexOf('monitor') === 0) {
|
|
this.title = this.titleMonitor;
|
|
} else if (value.indexOf('workplace') === 0) {
|
|
this.title = this.titleWorkplace;
|
|
}
|
|
}
|
|
|
|
ngOnDestroy(): void {
|
|
if (this.selectedRouteSubscription) { this.selectedRouteSubscription.unsubscribe(); }
|
|
if (this.getDomainsSubscription) { this.getDomainsSubscription.unsubscribe(); }
|
|
}
|
|
}
|