import { Component, OnInit } from '@angular/core'; import {TabMenuModule} from 'primeng/tabmenu'; import {MenuItem} from 'primeng/api'; import { CommonService } from '../shared/service/common.service'; import { IFilterOption } from '../shared/core/IFilterOption'; import { IFilterType } from '../shared/core/IFilterType'; import { OrganisationService } from '../shared/service/organisation.service'; import { IOrganisation } from '../shared/core/IOrganisation'; import { StaffService } from '../shared/service/staff.service'; import { IStaff } from '../shared/core/IStaff'; import { IFilterKey } from '../shared/core/IFilterKey'; declare var $ :any @Component({ selector: 'app-stakeholder-access-dashboard', templateUrl: './stakeholder-access-dashboard.component.html', styleUrls: ['./stakeholder-access-dashboard.component.css'] }) export class StakeholderAccessDashboardComponent implements OnInit { items: MenuItem[]; showbar:boolean= true; filterTypes:IFilterType[] = []; organisations: IOrganisation[]; industryList : IOrganisation[]; typeList : IOrganisation[]; staffList:IStaff[]=[]; filterSection:string = 'ORG'; componentReference: any; constructor(private commonService:CommonService, private organisationService:OrganisationService, private staffService:StaffService) { } ngOnInit() { // show page tab list this.items = [ {label: 'Organisations', routerLink:'/Dashboard/Organisation'}, {label: 'Staff',routerLink:'/Dashboard/Staff'}, {label: 'Login history', routerLink:'/Dashboard/History'}, ]; // Get organisation list this.geOrganisations("0"); // Get staff list this.getStaffList("0"); // $(".card").removeClass("width1785"); } onSinenavToggle(){ this.showbar = false; // $(".card").addClass("width1785"); } onSinenavToggled(){ this.showbar = true; // $(".card").removeClass("width1785"); } // get available filter list based on the selected tab getFilterList(section:string){ this.commonService.getFilterTypes(section).subscribe(data=>{ this.filterTypes = data; }) } // Call this funxtion when initialize the routine onActivate(componentReference) { console.log(componentReference) this.componentReference = componentReference; if(componentReference!=undefined && componentReference !=null){ this.filterSection = componentReference.section; // Get filter list this.getFilterList(componentReference.section); } } // Call wehen check the filter type checkboxes onChangeFilterType(filter:IFilterType){ filter.IsChecked = ! filter.IsChecked; filter.selectedFilterOption = filter.FilterOptions[0]; if(filter.Code == 'COMPANY' && this.filterSection == 'ORG'){ filter.multiSelectList = this.organisations.map(x=>({label:x.CompanyName,value:x.CompanyName})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'COMPANY' && this.filterSection == 'STAFF'){ filter.multiSelectList = this.staffList.map(x=>({label:x.Company.CompanyName,value:x.Company.CompanyName})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'ORG$TYPE'){ filter.multiSelectList = this.typeList.map(x=>({label:x.Type,value:x.TypeId})); } else if(filter.Code == 'INDUSTRY'){ filter.multiSelectList = this.industryList.map(x=>({label:x.Industry,value:x.IndustryId})); } else if(filter.Code == 'COUNTRY' && this.filterSection == 'ORG'){ filter.multiSelectList = this.organisations.map(x=>({label:x.Country,value:x.Country})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'COUNTRY' && this.filterSection == 'STAFF'){ filter.multiSelectList = this.staffList.map(x=>({label:x.Country,value:x.Country})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'STATE' && this.filterSection == 'ORG'){ filter.multiSelectList = this.organisations.map(x=>({label:x.State,value:x.State})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'STATE' && this.filterSection == 'STAFF'){ filter.multiSelectList = this.staffList.map(x=>({label:x.State,value:x.State})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'CITY' && this.filterSection == 'ORG'){ filter.multiSelectList = this.organisations.map(x=>({label:x.City,value:x.City})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'CITY' && this.filterSection == 'STAFF'){ filter.multiSelectList = this.staffList.map(x=>({label:x.City,value:x.City})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'PHONE'){ filter.multiSelectList = this.organisations.map(x=>({label:x.Phone,value:x.Phone})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'EMAIL' && this.filterSection == 'ORG'){ filter.multiSelectList = this.organisations.map(x=>({label:x.Email,value:x.Email})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'EMAIL' && this.filterSection == 'STAFF'){ filter.multiSelectList = this.staffList.map(x=>({label:x.Email,value:x.Email})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'MOBILE'){ filter.multiSelectList = this.staffList.map(x=>({label:x.Mobile,value:x.Mobile})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'OFFICE'){ filter.multiSelectList = this.staffList.map(x=>({label:x.Office,value:x.Office})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'FNAME'){ filter.multiSelectList = this.staffList.map(x=>({label:x.FirstName,value:x.FirstName})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'LNAME'){ filter.multiSelectList = this.staffList.map(x=>({label:x.LastName,value:x.LastName})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } else if(filter.Code == 'ROLE'){ filter.multiSelectList = this.staffList.map(x=>({label:x.RoleName,value:x.Role.Id})); // remove empty filter.multiSelectList = filter.multiSelectList.filter(x=>x.label != ""); //remove duplicates filter.multiSelectList = filter.multiSelectList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.label === test.label )); } } // Call when select a filter option onChangeFilterOption(filter:IFilterType){ if(filter.selectedFilterOption.Code == 'IS'|| filter.selectedFilterOption.Code == 'IS$NOT'){ filter.textFieldValue = ''; } else if(filter.selectedFilterOption.Code == 'CONTAINS'|| filter.selectedFilterOption.Code == 'NOT$CONTAINS' || filter.selectedFilterOption.Code == 'START'|| filter.selectedFilterOption.Code == 'END' ){ filter.selectedMultiSelectList = []; } else if(filter.selectedFilterOption.Code == 'EMPTY'|| filter.selectedFilterOption.Code == 'NOT$EMPTY'){ filter.selectedMultiSelectList = []; filter.textFieldValue = 'null'; } } // get organisations from the backend geOrganisations(id:string){ this.organisationService.getOrganisations(id,null).subscribe(companies=> { // get organisation list this.organisations = companies; // get industry list this.industryList = this.organisations.filter(x =>x.Industry !=""); // get organisation type list this.typeList = this.organisations.filter(x=>x.Type != ""); //remove duplicates this.industryList = this.industryList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.Industry === test.Industry )); this.typeList = this.typeList.filter((test, index, array) => index === array.findIndex((findTest) => findTest.Type === test.Type )); }) } // get organisations from the backend getStaffList(id:string){ this.staffService.getStaffList(id,null).subscribe(staffList=> { // bind organisation list this.staffList = staffList; }); } // filter button click filterList(){ var filterKeys: IFilterKey[] = []; // set filter keys this.filterTypes.forEach(filterType => { if(filterType.IsChecked){ var filterKey:IFilterKey={ Code:'',Option: '',Values:[] }; // for multi select conditions if(filterType.selectedFilterOption.Code == 'IS'|| filterType.selectedFilterOption.Code == 'IS$NOT'){ if(filterType.selectedMultiSelectList!=undefined && filterType.selectedMultiSelectList != null && filterType.selectedMultiSelectList.length >0){ filterKey.Code = filterType.Code; filterKey.Option = filterType.selectedFilterOption.Code; // bind selected values to the 'Values' array list filterType.selectedMultiSelectList.forEach(element => { var value = encodeURIComponent(element.value) filterKey.Values.push(value) }); filterKeys.push(filterKey); } } // for single value conditions else{ filterKey.Code = filterType.Code; filterKey.Option = filterType.selectedFilterOption.Code; filterKey.Values.push(filterType.textFieldValue); filterKeys.push(filterKey); } } }); // filter organisation list if(this.filterSection == 'ORG'){ if(this.componentReference!=undefined){ this.componentReference.filterOrganisation(filterKeys); } } // filter staff list else if(this.filterSection == 'STAFF'){ if(this.componentReference!=undefined){ this.componentReference.filterStaffs(filterKeys); } } } // clear button click clearFilter(){ if(this.filterSection!=undefined && this.filterSection !=null){ // Get filter list this.getFilterList(this.filterSection); } // filter organisation list if(this.filterSection == 'ORG'){ if(this.componentReference!=undefined){ this.componentReference.filterOrganisation(null); } } // filter staff list else if(this.filterSection == 'STAFF'){ if(this.componentReference!=undefined){ this.componentReference.filterStaffs(null); } } } }