You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
317 lines
9.5 KiB
TypeScript
317 lines
9.5 KiB
TypeScript
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';
|
|
import { Body } from '@angular/http/src/body';
|
|
@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 = 50;
|
|
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 totalEmployees = 0;
|
|
public pageFirstVisit = false;
|
|
myColor: string = 'secondary';
|
|
public EmpTotal = [];
|
|
public EmployeeTotal: any;
|
|
public direction:any;
|
|
|
|
public options = {
|
|
cutoutPercentage: 80,
|
|
tooltips: { enabled: false },
|
|
legend: { display: false }
|
|
};
|
|
public data = {
|
|
datasets: [
|
|
{
|
|
data: [100],
|
|
backgroundColor: [
|
|
'#024d71'
|
|
],
|
|
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 searchUserName = '';
|
|
public searchEmail = '';
|
|
public showEmailInput = false;
|
|
public showUserNameOrNameInput = true;
|
|
public showUserNameInput = false;
|
|
arrList: any[];
|
|
|
|
constructor(
|
|
public ts: TranslatorService,
|
|
public authService: AuthenticationService,
|
|
public common: CommonService,
|
|
public myTeamService: MyTeamService,
|
|
public modalController: ModalController,
|
|
private location: Location
|
|
) {
|
|
|
|
this.direction = TranslatorService.getCurrentLanguageName();
|
|
}
|
|
|
|
ngOnInit() {
|
|
this.common.sharedService.setSharedData( [], DetailsComponent.opendEmployeesARR);
|
|
this.setIntitial();
|
|
|
|
// this.getSuborinatesAttStatus();
|
|
}
|
|
toggleColor() {
|
|
this.myColor = 'secondary';
|
|
// this.myColor = '#024d71'
|
|
}
|
|
|
|
// 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(event) {
|
|
// this.isSearch = true;
|
|
// this.empSubordinate = [];
|
|
// this.getEmpSubordinate();
|
|
const val = event.target.value;
|
|
console.log(this.searchKeySelect)
|
|
if (val === '') {
|
|
this.empSubordinate = this.arrList;
|
|
this.isSearch = false;
|
|
}
|
|
if(this.searchKeySelect === 'Name'){
|
|
this.empSubordinate = this.arrList.filter((item) => {
|
|
this.isSearch = true;
|
|
return (item.EMPLOYEE_NAME.toLowerCase().indexOf(val.toLowerCase()) > -1);
|
|
});
|
|
} else if(this.searchKeySelect === 'User Name'){
|
|
this.empSubordinate = this.arrList.filter((item) => {
|
|
this.isSearch = true;
|
|
return (item.EMPLOYEE_NUMBER.toLowerCase().indexOf(val.toLowerCase()) > -1);
|
|
});
|
|
} else if(this.searchKeySelect === 'Email'){
|
|
this.empSubordinate = this.arrList.filter((item) => {
|
|
this.isSearch = true;
|
|
return (item.EMPLOYEE_EMAIL_ADDRESS.toLowerCase().indexOf(val.toLowerCase()) > -1);
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
getEmpSubordinate() {
|
|
this.pageNum = 1;
|
|
this.isReachEnd = false;
|
|
const searchEmpNum = (this.searchKeySelect === 'User Name') ? this.searchUserName : '';
|
|
const searchEmpName = (this.searchKeySelect === 'Name') ? this.searchNameOrUserName : '';
|
|
const searchEmpEmail = (this.searchKeySelect === 'Email') ? this.searchEmail : '';
|
|
|
|
if (this.isSearch) {
|
|
this.selEmpNo = null;
|
|
} else {
|
|
this.selEmpNo = this.selMenu.userid;
|
|
}
|
|
|
|
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) => {
|
|
if (this.common.validResponse(result)) {
|
|
if (!this.pageFirstVisit) {
|
|
this.pageFirstVisit = true;
|
|
this.totalEmployees = result.P_NUM_OF_SUBORDINATES;
|
|
}
|
|
this.handleEmpResult(result.GetEmployeeSubordinatesList);
|
|
}
|
|
});
|
|
}
|
|
|
|
handleEmpResult(result) {
|
|
this.EmployeeTotal = result.length;
|
|
const lastItemIndex = result.length - 1;
|
|
const lastItem = result[lastItemIndex];
|
|
if (lastItem) {
|
|
if (lastItem.NO_OF_ROWS === lastItem.ROW_NUM) {
|
|
this.isReachEnd = true;
|
|
if (this.infiniteScroll) {
|
|
this.infiniteScroll.complete();
|
|
}
|
|
} else {
|
|
this.isReachEnd = false;
|
|
if (this.infiniteScroll) {
|
|
this.infiniteScroll.complete();
|
|
}
|
|
}
|
|
}
|
|
if (this.common.hasData(result)) {
|
|
this.getEmployeeSubordinatesRequestObject.P_PAGE_NUM++;
|
|
if (this.empSubordinate.length === 0) {
|
|
this.empSubordinate = result;
|
|
} else {
|
|
this.empSubordinate = this.empSubordinate.concat(result);
|
|
}
|
|
} else {
|
|
this.empSubordinate = [];
|
|
}
|
|
this.arrList = this.empSubordinate;
|
|
}
|
|
|
|
doInfinite(infiniteScroll) {
|
|
if (!this.isReachEnd) {
|
|
this.myTeamService.getEmployeeSubordinates(this.getEmployeeSubordinatesRequestObject).subscribe((result: any) => {
|
|
if (this.common.validResponse(result)) {
|
|
this.handleEmpResult(result.GetEmployeeSubordinatesList);
|
|
}
|
|
this.infiniteScroll.complete();
|
|
});
|
|
} else {
|
|
if (this.infiniteScroll) {
|
|
this.infiniteScroll.complete();
|
|
}
|
|
}
|
|
}
|
|
|
|
clearSearch() {
|
|
this.isSearch = false;
|
|
this.empSubordinate = this.arrList;
|
|
this.searchNameOrUserName = '';
|
|
this.searchUserName = '';
|
|
this.searchEmail = '';
|
|
// this.isSearch = false;
|
|
// this.getEmployeeSubordinatesRequestObject.P_PAGE_NUM = 1;
|
|
// this.empSubordinate = [];
|
|
// this.isReachEnd = false;
|
|
// this.searchNameOrUserName = '';
|
|
// this.searchUserName = '';
|
|
// this.searchEmail = '';
|
|
// this.getEmpSubordinate();
|
|
}
|
|
|
|
getDetails(index) {
|
|
this.common.sharedService.setSharedData(this.empSubordinate[index], MyTeamService.EMPLOYEE_SHARED_DATA);
|
|
this.common.sharedService.setSharedData(this.selMenu, MenuResponse.SHARED_DATA);
|
|
this.common.openMyTeamDetails();
|
|
}
|
|
|
|
goToSubordinate() {
|
|
// this.presentModal();
|
|
}
|
|
|
|
showSelectedField(value: any) {
|
|
if (this.searchKeySelect === 'Name') {
|
|
this.showEmailInput = false;
|
|
this.showUserNameInput = false;
|
|
this.showUserNameOrNameInput = true;
|
|
} else if (this.searchKeySelect === 'Email') {
|
|
this.showUserNameOrNameInput = false;
|
|
this.showUserNameInput = false;
|
|
this.showEmailInput = true;
|
|
} else if (this.searchKeySelect === 'User Name') {
|
|
this.showUserNameOrNameInput = false;
|
|
this.showEmailInput = false;
|
|
this.showUserNameInput = true;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// getSuborinatesAttStatus(){
|
|
// const request = {
|
|
// // SearchMonth:"January",
|
|
// SearchYear:Number,
|
|
|
|
// };
|
|
// // this.myTeamService.getSuborinatesAttStatus().subscribe((result: any) =>
|
|
// this.myTeamService.getSuborinatesAttStatus(request, ()=> {} , this.ts.trPK('general', 'retry')).subscribe((result)=>
|
|
// {
|
|
// this.handleRespondSuborinatesAttStatusResult(result);
|
|
|
|
// })
|
|
// }
|
|
|
|
// handleRespondSuborinatesAttStatusResult(result){
|
|
// // this.EmpTotal = result.GetSubordinatesAttdStatusList.length;
|
|
// this.EmpTotal = result.GetSubordinatesAttdStatusList[0].NUMBER_OF_EMPLOYEES;
|
|
// console.log("total no "+this.EmpTotal)
|
|
// }
|
|
filterList(event) {
|
|
const val = event.target.value;
|
|
if (val === '') {
|
|
this.arrList = this.empSubordinate;
|
|
}
|
|
this.arrList = this.empSubordinate.filter((item) => {
|
|
return (item.title_EN.toLowerCase().indexOf(val.toLowerCase()) > -1);
|
|
});
|
|
}
|
|
}
|