import {
Component,
Injector,
OnInit,
ViewChild,
ViewEncapsulation,
Input,
OnDestroy,
ElementRef,
Renderer,
QueryList,
ViewChildren
} from '@angular/core';
import {
ActivatedRoute,
Router
} from '@angular/router';
import {
AppConsts
} from '@shared/AppConsts';
import {
appModuleAnimation
} from '@shared/animations/routerTransition';
import {
AppComponentBase
} from '@shared/common/app-component-base';
import {
RouteListDto,
RouteServiceProxy,
ControllerRouteServiceProxy,
ControllerKpiCountServiceProxy
} from '@shared/service-proxies/service-proxies';
import * as moment from 'moment';
import {
LazyLoadEvent
} from 'primeng/components/common/lazyloadevent';
import {
Paginator
} from 'primeng/components/paginator/paginator';
import {
Table
} from 'primeng/components/table/table';
import {
HttpClient
} from '@angular/common/http';
import {
finalize
} from 'rxjs/operators';
import {
Subscription
} from 'rxjs';
import {
CheckBoxComponent
} from '@app/sprintship/core-components/checkbox/checkbox.component.ts';
import {
StatusComponent
} from '@app/sprintship/controller/status/status.component.ts';
import {
ControllerRoutesService
} from './croutes.service';
import * as _ from 'lodash';
import { KPIBoxComponent } from '@app/sprintship/controller/kpi-box/kpi-box.component';
declare var $: any;
declare var jquery: any;
@Component({
selector: 'table-routes-details',
templateUrl: 'table-routes-details.component.html',
encapsulation: ViewEncapsulation.None,
styleUrls: ['./table-routes-details.component.less', './tables.checkbox.component.less'],
animations: [appModuleAnimation()]
})
export class TableRoutesComponents extends AppComponentBase implements OnInit, OnDestroy {
@ViewChild('dataTable', {
static: true
}) dataTable: Table;
@ViewChild('paginator', {
static: true
}) paginator: Paginator;
@ViewChildren('CheckBoxComponent') chkBoxList: QueryList < any > ;
@ViewChildren(KPIBoxComponent) tKpiBoxComponents: KPIBoxComponent;
@ViewChild(StatusComponent, {static: false}) statusDiv: StatusComponent;
@Input() filters: {
locationFilter: number;
statusFilter: number;
typeFilter: number;
startDate: Date;
endDate: Date
} = < any > {};
device_type: string;
routeIds: any;
attr: any;
respkey: any;
@Input('search_string') search: string;
subscription: Subscription;
private cBox: CheckBoxComponent;
constructor(
injector: Injector,
private _routeService: RouteServiceProxy,
private _controllerRouteService: ControllerRouteServiceProxy,
private _cRoutesService: ControllerRoutesService,
private _cKpiService : ControllerKpiCountServiceProxy,
private router: Router,
private renderer: Renderer,
private elem: ElementRef
) {
super(injector);
this.subscription = _cRoutesService.setStatisticsObj.subscribe(details => {
// console.log('RECEIVED');
// console.log(details);
});
}
ngOnInit(): void {
}
setFilter(value: string) {
this.search = value;
}
ngOnDestroy(): void {
}
populateTable(event ? : LazyLoadEvent): void {
var that = this;
var key, arrResult = [], resp;
this.attr = [];
that.routeIds = [];
if (this.filters.locationFilter !== undefined) {
this.device_type = 'IOS';
if (this.primengTableHelper.shouldResetPaging(event)) {
this.paginator.changePage(0);
return;
}
this.filters.startDate = new Date(this.filters.startDate.toString());
this.filters.endDate = new Date(this.filters.endDate.toString());
let startDate = moment(moment(this.filters.startDate).format('YYYY-MM-DD HH:mm:ss'));
let endDate = moment(moment(this.filters.endDate).format('YYYY-MM-DD HH:mm:ss'));
let startDateA = startDate['_i'].split(' ');
startDateA = startDateA[0] + ' ' + '00:00:00';
let endDateA = endDate['_i'].split(' ');
endDateA = endDateA[0] + ' ' + '23:59:59';
that.spinnerService.show();
this._controllerRouteService.getFullList(undefined, this.filters.locationFilter, undefined, this.search, moment.utc(moment(startDateA).toISOString()), moment.utc(moment(endDateA).toISOString()), this.primengTableHelper.getSorting(this.dataTable), this.primengTableHelper.getMaxResultCount(this.paginator, event), this.primengTableHelper.getSkipCount(this.paginator, event))
.subscribe(result => {
let finalResult = {};
let fResult = {
"result": "OK",
"total_vehicles": 0,
"total_packages": 0
};
let vehicles = [];
for (key in result.items) {
that.routeIds.push(result.items[key].routeId);
result.items[key]['Status'] = 'NONE';
result.items[key]['TotalPackages'] = 0;
result.items[key]['ETA'] = 'N/A';
vehicles[result.items[key].vehicleId] = result.items[key].vehicleId;
}
fResult.total_vehicles = Object.keys(vehicles).length;
that._controllerRouteService.getDetails(that.routeIds)
.subscribe(resultStatus => {
let total_packages = 0;
if (resultStatus == null) {
} else {
if (Object.keys(resultStatus).length > 0) {
var resp;
for (key in resultStatus) {
resp = that.filterArrayKeys(result.items, 'routeId', resultStatus[key].routeId.toString());
if(resp !== null)
{
result.items[resp]['Status'] = resultStatus[key].statusCode;
result.items[resp]['TotalPackages'] = resultStatus[key].totalPackages;
}
//$('#route' + resultStatus[key].routeId).html(resultStatus[key].totalPackages);
//$('#status' + resultStatus[key].routeId).attr('status_code', resultStatus[key].statusCode);
//$('#statusRow' + resultStatus[key].routeId).html('');
// $('#statusRow' + resultStatus[key].routeId).html('');
that.attr[resultStatus[key].routeId] = resultStatus[key].statusCode;
total_packages = total_packages + resultStatus[key].totalPackages;
}
}
console.log('RESULT ITEMS: ');
console.log(result.items);
}
that.primengTableHelper.totalRecordsCount = result.totalCount;
that.primengTableHelper.records = result.items;
fResult.total_packages = total_packages;
that._cRoutesService.getTableStatistics(fResult);
});
that.spinnerService.hide();
});
}
}
tickBox() {
this.cBox.tickBox();
}
getSelected() {
console.log(this.chkBoxList);
this.chkBoxList.forEach(chkBoxL => console.log(chkBoxL));
}
filterArray(array:any, key:any, value:any)
{
var i, arrList = [];
for(i in array)
{
console.log('SEARCH');
console.log(array[i][key]);
console.log(value);
if(array[i][key] == value)
{
arrList.push(array[i]);
}
}
return arrList;
}
filterArrayKeys(array:any, key:any, value:any)
{
var i, keys = 0;
for(i in array)
{
if(array[i][key] == value)
{
keys = i;
}
}
return keys;
}
openMap(routeId) {
// window.open('/app/sprintship/locator/'+routeId+'/'+this.filters);
this.router.navigate([]).then(result => {
window.open('/app/sprintship/locator/' + routeId + '/' + this.filters.locationFilter + '/' + moment(this.filters.startDate).format('YYYY-MM-DD') + '/' + moment(this.filters.endDate).format('YYYY-MM-DD'), '_blank');
});
}
}