import { Component, OnInit, ViewChild } from '@angular/core'; import { Location } from '@angular/common'; import { TranslatorService } from 'src/app/hmg-common/services/translator/translator.service'; import { CommonService } from 'src/app/hmg-common/services/common/common.service'; import { AuthenticationService } from 'src/app/hmg-common/services/authentication/authentication.service'; import { MenuResponse } from 'src/app/hmg-common/services/menu/models/menu-response'; import { MyTeamService } from '../service/my-team.service'; import { ModalController, IonInfiniteScroll } from '@ionic/angular'; import { DetailsComponent } from '../details/details.component'; @Component({ selector: 'app-home', templateUrl: './home.component.html', styleUrls: ['./home.component.scss'] }) export class HomeComponent implements OnInit { @ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll; public pageNum = 1; public pageLimit = 5; public empSubordinate = []; public employee: any; public isReachEnd = false; public searchKey: any; public isSearch = false; public searchKeySelect = 'Name'; public getEmployeeSubordinatesRequestObject: any; public selMenu: any; public selEmpNo: any; public options = { cutoutPercentage: 80, tooltips: { enabled: false }, legend: { display: false } }; public data = { datasets: [ { data: [30, 30, 40], backgroundColor: [ '#18a169', '#38c9b3', '#114475', ], borderWidth: 5 }] }; public filters = [ { value: 0, name: 'All', active: true, color: '#124375' }, { value: 0, name: 'Present', active: false, color: '#18a169' }, { value: 0, name: 'Absent', active: false, color: '#38c9b3' }, { value: 0, name: 'Late', active: false, color: '#114475' } ]; public slideOptsOne = { slidesPerView: 4, spaceBetween: 10 }; public previousActiveIndex = 0; public currentActiveIndex = 0; public searchNameOrUserName = ''; public searchEmail = ''; public showEmailInput = false; public showUserNameOrNameInput = true; constructor( public ts: TranslatorService, public authService: AuthenticationService, public common: CommonService, public myTeamService: MyTeamService, public modalController: ModalController, private location: Location ) {} ngOnInit() { // this.common.sharedService.setSharedData( [], DetailsComponent.opendEmployeesARR); this.setIntitial(); } activeFilter(index: number) { this.previousActiveIndex = this.currentActiveIndex; this.currentActiveIndex = index; this.filters[this.previousActiveIndex].active = false; this.filters[this.currentActiveIndex].active = true; } goback() { this.location.back(); } setIntitial() { this.selMenu = this.common.sharedService.getSharedData(MenuResponse.SHARED_DATA, false); this.selEmpNo = this.selMenu.userid; this.isSearch = this.selMenu.search ? this.selMenu.search : this.isSearch; if (!this.isSearch) { this.getEmpSubordinate(); } } searchEmployee() { // this.isSearch = true; // this.getEmpSubordinate(); } getEmpSubordinate() { this.pageNum = 1; this.isReachEnd = false; const searchEmpNum = (this.searchKeySelect === 'User Name') ? this.searchNameOrUserName : ''; const searchEmpName = (this.searchKeySelect === 'Name') ? this.searchNameOrUserName : ''; const searchEmpEmail = (this.searchKeySelect === 'Email') ? this.searchEmail : ''; if (this.isSearch) { this.selEmpNo = null; } const body = { P_SELECTED_EMPLOYEE_NUMBER: this.selEmpNo, P_SEARCH_EMPLOYEE_NUMBER: searchEmpNum, P_SEARCH_EMPLOYEE_DISPLAY_NAME: searchEmpName, P_SEARCH_EMAIL_ADDRESS: searchEmpEmail, P_PAGE_NUM: this.pageNum, P_PAGE_LIMIT: this.pageLimit }; this.getEmployeeSubordinatesRequestObject = body; this.myTeamService.getEmployeeSubordinates(body).subscribe((result: any) => { this.handleEmpResult(result); }); } handleEmpResult(result) { if (this.common.validResponse(result)) { if (this.common.hasData(result.GetEmployeeSubordinatesList)) { this.empSubordinate = result.GetEmployeeSubordinatesList; this.getEmployeeSubordinatesRequestObject.P_PAGE_NUM++; const lastItemIndex = this.empSubordinate.length - 1; if (result.GetEmployeeSubordinatesList[lastItemIndex]) { const lastitem = result.GetEmployeeSubordinatesList[lastItemIndex]; if (lastitem.NO_OF_ROWS === lastitem.ROW_NUM) { this.isReachEnd = true; } else { this.isReachEnd = false; } } } else { this.empSubordinate = []; } } } doInfinite(infiniteScroll) { if (!this.isReachEnd) { this.myTeamService.getEmployeeSubordinates(this.getEmployeeSubordinatesRequestObject).subscribe((result: any) => { if (this.common.validResponse(result)) { this.getEmployeeSubordinatesRequestObject.P_PAGE_NUM++; if (this.common.hasData(result.GetEmployeeSubordinatesList)) { result.GetEmployeeSubordinatesList.forEach(element => { if (element.ROW_NUM === element.NO_OF_ROWS) { this.isReachEnd = true; } else { this.isReachEnd = false; } this.empSubordinate.push(element); }); } else { this.isReachEnd = true; } } this.infiniteScroll.complete(); } ); } else { if (this.infiniteScroll) { this.infiniteScroll.complete(); } } } getDetails(index) { this.common.sharedService.setSharedData(this.empSubordinate[index], MyTeamService.EMPLOYEE_SHARED_DATA); this.common.sharedService.setSharedData(this.selMenu, MenuResponse.SHARED_DATA); // this.close().then(() => { // this.common.openMyTeamDetails(); // }); } goToSubordinate() { // this.presentModal(); } showSelectedField(value: any) { if (this.searchKeySelect === 'User Name' || this.searchKeySelect === 'User Name') { this.showEmailInput = false; this.showUserNameOrNameInput = true; } else if (this.searchKeySelect === 'Email') { this.showUserNameOrNameInput = false; this.showEmailInput = true; } } }