diff --git a/src/app/users/users.component.html b/src/app/users/users.component.html index 265afc1..550c584 100644 --- a/src/app/users/users.component.html +++ b/src/app/users/users.component.html @@ -5,8 +5,8 @@ diff --git a/src/app/users/users.component.ts b/src/app/users/users.component.ts index 4618e42..5619be8 100644 --- a/src/app/users/users.component.ts +++ b/src/app/users/users.component.ts @@ -5,33 +5,44 @@ import {Subscriber} from "rxjs"; import {Title} from "@angular/platform-browser"; import {Composer} from "../openaireLibrary/utils/email/composer"; import {Email} from "../openaireLibrary/utils/email/email"; +import {ActivatedRoute} from "@angular/router"; + +type Tab = 'member' | 'manager'; @Component({ selector: 'users', templateUrl: 'users.component.html' }) -export class UsersComponent implements OnInit{ +export class UsersComponent implements OnInit { public alias: string; public name: string; public type: string; public link: string; public loading: boolean; - public messages: Map<"member" | "manager", string> = new Map<"member"|"manager", string>(); - public tab: "manager" | "member" = 'manager'; - private subscription; - public emailComposer: Function = (name, recipient, role):Email => { + public messages: Map = new Map(); + public tab: Tab = 'manager'; + private subscriptions = []; + public emailComposer: Function = (name, recipient, role): Email => { return Composer.composeEmailForMonitorDashboard(name, recipient, role); } constructor(private stakeholderService: StakeholderService, + private route: ActivatedRoute, private title: Title) { } ngOnInit() { this.loading = true; - this.subscription = this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { - if(stakeholder) { + this.subscriptions.push(this.route.fragment.subscribe((fragment: Tab) => { + if (this.isTab(fragment)) { + this.tab = fragment; + } else { + this.tab = 'manager'; + } + })); + this.subscriptions.push(this.stakeholderService.getStakeholderAsObservable().subscribe(stakeholder => { + if (stakeholder) { this.alias = stakeholder.alias; this.name = stakeholder.name; this.title.setTitle(this.name + " | Users"); @@ -43,17 +54,26 @@ export class UsersComponent implements OnInit{ 'where he is able to customize and manage indicators, and invite other users as members.'); this.loading = false; } - }) + })); } ngOnDestroy() { - if (this.subscription instanceof Subscriber) { - this.subscription.unsubscribe(); - } + this.subscriptions.forEach(value => { + if (value instanceof Subscriber) { + value.unsubscribe(); + } + }); } - changeTab(tab: "manager" | "member") { - this.tab = tab; + private isTab(tab: Tab): boolean { + switch (tab) { + case "manager": + return true; + case "member": + return true; + default: + return false; + } } private getURL(id: string): string { diff --git a/src/app/users/users.module.ts b/src/app/users/users.module.ts index e03ef98..292b19a 100644 --- a/src/app/users/users.module.ts +++ b/src/app/users/users.module.ts @@ -6,9 +6,10 @@ import {AdminDashboardGuard} from "../utils/adminDashboard.guard"; import {LoadingModule} from "../openaireLibrary/utils/loading/loading.module"; import {PageContentModule} from "../openaireLibrary/dashboard/sharedComponents/page-content/page-content.module"; import {RoleUsersModule} from "../openaireLibrary/dashboard/users/role-users/role-users.module"; +import {RouterModule} from "@angular/router"; @NgModule({ - imports: [CommonModule, UsersRoutingModule, LoadingModule, PageContentModule, RoleUsersModule], + imports: [CommonModule, UsersRoutingModule, LoadingModule, PageContentModule, RoleUsersModule, RouterModule], declarations: [UsersComponent], exports: [UsersComponent], providers: [AdminDashboardGuard]