import { Component, OnInit } from '@angular/core'; import { IStaffActivity } from '../shared/core/IStaffActivity'; import { StaffActivityService } from '../shared/service/staff-activity.service'; import { SelectItem } from 'primeng/api'; import { LoginHistoryService } from '../shared/service/login-history.service'; import { ISelectedFilter } from '../shared/core/ISelectedFilter'; import { ActivatedRoute } from '@angular/router'; @Component({ selector: 'app-staff-activity-list', templateUrl: './staff-activity-list.component.html', styleUrls: ['./staff-activity-list.component.css'] }) export class StaffActivityListComponent implements OnInit { type = "SAL"; //table column object columns: { field: string; header: string; }[]; //list of activies bind to this var staffActivityList: IStaffActivity[]=[]; //this list use for filtering filterdStaffActivityList: IStaffActivity[]=[]; //list of filters bind to these vars dateRangeFilterList: SelectItem[] =[]; modulesFilterList: SelectItem[] =[]; personTypeFilterList: SelectItem[] =[]; OrganisationId = "0"; constructor(private staffActivityService: StaffActivityService, private loginHistoryService: LoginHistoryService, private route: ActivatedRoute) { } ngOnInit() { //getting org id from url this.OrganisationId = this.route.snapshot.paramMap.get("id"); // list of columns for table this.columns = [ { field: 'Type', header: 'Type' }, { field: 'Client', header: 'Client' }, { field: 'Stage', header: 'Stage' }, { field: 'Subject', header: 'Subject' }, { field: 'DueDateValue', header: 'Due date' } ]; //calling the method to get staff activity data this.getStaffActivity(); //calling to get filters this.getDateRangeFilters(); this.getModuleListFilters(); this.getPerosonTypeFilters(this.OrganisationId ); } //this method call service and bind response to the table getStaffActivity(id?: string){ this.staffActivityService.getStaffActivity(id).subscribe(act =>{ this.staffActivityList = act; this.filterdStaffActivityList = act; }) } //this method call service for date range filters list getDateRangeFilters(){ this.staffActivityService.getDateRangeFilters().subscribe(f =>{ //filters list as a response from service this.dateRangeFilterList = f; }) } //this method call service for module filters list getModuleListFilters(){ this.staffActivityService.getModulesList().subscribe(f =>{ //filters list as a response from service this.modulesFilterList = f; }) } //this method call service for person type filters list getPerosonTypeFilters(id){ this.loginHistoryService.getPersonTypeFilters(id).subscribe(f =>{ //filters list as a response from service this.personTypeFilterList = f; }) } //this method get selectd filters list from search n filter component and filter data bindFilter(value : ISelectedFilter){ console.log(value); this.clearAllFilters(); // if all values are null, all the data will bind if(!value.DateRange && !value.Module && !value.PersonType){ this.staffActivityList = this.filterdStaffActivityList; }else{ //filter by date range, if any selected. if(value.DateRange){ //convert selected date to Date format var dt = new Date(value.DateRange); this.staffActivityList = this.staffActivityList.filter(x => x.DueDateValue <= dt); } //filter by module, if any module selected. if(value.Module){ if(value.Module !==""){ this.staffActivityList = this.staffActivityList.filter(x => x.module == value.Module); } } //filter by person type, if any selected. if(value.PersonType){ var columnType = value.PersonType.replace(/:\S+/, ''); // get filter column type var columnValue = value.PersonType.replace(/[A-z]+:/, ''); // get filter value if(columnType=="Role"){ this.staffActivityList = this.staffActivityList.filter(x => x.Staff.RoleName == columnValue); } if(columnValue === columnType){ this.staffActivityList = this.staffActivityList.filter(x =>columnValue.includes(x.Staff.FirstName)); } } } } //this method clear all filters and reset data clearAllFilters(){ this.staffActivityList = this.filterdStaffActivityList; } }