import { Component, ChangeDetectorRef, EventEmitter, Input, Inject, Output, QueryList, ViewChildren } from '@angular/core'; import { FormControl } from '@angular/forms'; import { MatExpansionPanel } from '@angular/material'; import { Subject } from "rxjs/Rx"; import { transformMenu } from '@angular/material/menu/typings/menu-animations'; import { ManageRoleListService } from "./manage-role-list.service"; import { Profile_CONSTANTS } from '../shared/profile.constants'; @Component({ selector: 'rss-manage-role-list', templateUrl: './manage-role-list.component.html', styleUrls: ['../shared/shared.component.scss', './manage-role-list.scss'], providers: [ManageRoleListService] }) export class ManageRoleListComponent { @Input('environment') environment: any; @Input('loggedInUser') loggedInUser: any; @Output() switchUser: EventEmitter = new EventEmitter(); @ViewChildren('mep') mepcomponents: QueryList; constructor(private cdRef: ChangeDetectorRef, public manageRoleListService: ManageRoleListService, @Inject(Profile_CONSTANTS) public constants) { } public tenantURL: string; public campusURL: string; public dropdownTenantControl: FormControl = new FormControl(); public dropdownTenantConfig = { valueKey: "code", displayKey: "name", label: "select Tenant" }; public dropdownCampusControl: FormControl = new FormControl(); public dropdownCampusConfig = { valueKey: "campusCd", displayKey: "campusNm", label: "select Campus" } public unsubscribe: Subject = new Subject(); // public proceduresAdminRoleConfig: any; // public proceduresTemplateAdminRoleConfig: any; public profileAdminRoleConfig: any; public serviceDeskRoleConfig: any; public collectionsAdminRoleConfig: any; public facilitiesManagerRoleConfig: any; public RadiationAdminRoleConfig: any; public RadiationInspectorRoleConfig: any; public RadiationEmailListRoleConfig: any; public ControlAreaAdminRoleConfig: any; public ChemicalAdminRoleConfig: any; public DeveloperRoleConfig: any; public CLIAdminRoleConfig: any; public ChemicalInformaticsRoleConfig: any; public BiosafetyAdminRoleConfig: any; public IBCMemberConfig: any; public ChemicalAdminReadOnlyRoleConfig: any; public BSASAdminRoleConfig: any; public NotificationManagerRoleConfig: any; public NFPAAdminRoleConfig: any; public campusChange: Subject = new Subject(); ngOnInit() { this.bindTenantAndCampus(); } ngAfterViewChecked() { if (this.mepcomponents.length === 1) { this.mepcomponents.first.expanded = true; } this.cdRef.detectChanges(); } public bindTenantAndCampus() { // this.proceduresAdminRoleConfig = this.manageRoleListService.getProceduresAdminRoleConfig(this.loggedInUser.campus); // this.proceduresTemplateAdminRoleConfig = this.manageRoleListService.getProceduresTemplateAdminRoleConfig(this.loggedInUser.campus); this.profileAdminRoleConfig = this.manageRoleListService.getProfileAdminConfig(this.loggedInUser.campus); this.serviceDeskRoleConfig = this.manageRoleListService.getServiceDeskConfig(this.loggedInUser.campus); this.collectionsAdminRoleConfig = this.manageRoleListService.getCollectionsAdminConfig(this.loggedInUser.campus); this.facilitiesManagerRoleConfig = this.manageRoleListService.getFacilitiesManagerConfig(this.loggedInUser.campus); this.RadiationAdminRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.RadiationAdmin); this.RadiationInspectorRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.RadiationInspector); this.RadiationEmailListRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.RadiationEmailList); this.ControlAreaAdminRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.ControlAreaAdmin); this.ChemicalAdminRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.ChemicalAdmin); this.ChemicalInformaticsRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.ChemicalInformatics); this.DeveloperRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.Developer); this.CLIAdminRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.CLIAdmin); this.BiosafetyAdminRoleConfig= this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.BiosafetyAdmin); this.IBCMemberConfig= this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.IBCMember); this.ChemicalAdminReadOnlyRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.ChemicalAdminReadOnly); this.BSASAdminRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.BSASAdmin); this.NotificationManagerRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.NotificationManager); this.NFPAAdminRoleConfig = this.manageRoleListService.getManageRolesConfig(this.loggedInUser.campus, this.constants.roles.NFPAAdmin); this.manageRoleListService.setEnvironment(this.environment); this.tenantURL = this.manageRoleListService.getTenantUrl(); this.campusURL = this.manageRoleListService.getCampusUrl(this.loggedInUser.tenant); this.dropdownTenantControl.setValue({ code: this.loggedInUser.tenant }); this.dropdownCampusControl.setValue({ campusCd: this.loggedInUser.campus }); this.dropdownTenantControl.valueChanges .takeUntil(this.unsubscribe) .filter(tenant => !!tenant) .subscribe(tenant => { this.campusURL = this.manageRoleListService.getCampusUrl(tenant.code); }); this.dropdownCampusControl.valueChanges.debounceTime(800) .takeUntil(this.unsubscribe) .filter(campus => !!campus) .subscribe(campus => { if (campus) { // this.proceduresAdminRoleConfig.campus = campus.campusCd; // this.proceduresTemplateAdminRoleConfig.campus = campus.campusCd; this.profileAdminRoleConfig.campus = campus.campusCd; this.collectionsAdminRoleConfig.campus = campus.campusCd; this.facilitiesManagerRoleConfig.campus = campus.campusCd; this.RadiationAdminRoleConfig.campus = campus.campusCd; this.RadiationInspectorRoleConfig.campus = campus.campusCd; this.RadiationEmailListRoleConfig.campus = campus.campusCd; this.ChemicalAdminRoleConfig.campus = campus.campusCd; this.ChemicalInformaticsRoleConfig.campus = campus.campusCd; this.ControlAreaAdminRoleConfig.campus = campus.campusCd; this.CLIAdminRoleConfig.campus = campus.campusCd; this.BiosafetyAdminRoleConfig.campus = campus.campusCd; this.IBCMemberConfig.campus = campus.campusCd; this.ChemicalAdminReadOnlyRoleConfig.campus = campus.campusCd; this.BSASAdminRoleConfig.campus = campus.campusCd; this.NotificationManagerRoleConfig.campus = campus.campusCd; this.NFPAAdminRoleConfig.campus = campus.campusCd; this.campusChange.next(campus.campusCd); } }); } public switchPerson = (user: any) => { user.campus = this.dropdownCampusControl.value.campusCd; user.tenant = this.dropdownTenantControl.value.code; this.switchUser.emit(user); } }