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 } 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 { ControllerRoutesService } from './croutes.service'; import * as _ from 'lodash'; 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 > ; @Input() filters: { locationFilter: number; statusFilter: number; typeFilter: number; startDate: Date; endDate: Date } = < any > {}; device_type: string; routeIds: any; @Input('search_string') search: string; subscription: Subscription; private cBox: CheckBoxComponent; constructor( injector: Injector, private _routeService: RouteServiceProxy, private _controllerRouteService: ControllerRouteServiceProxy, private _cRoutesService: ControllerRoutesService, 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; 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.getControllerRoute(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 fResult = { "result": "OK", "total_vehicles": 0, "total_packages": 0 }; let vehicles = []; for (key in result.items) { that.routeIds.push(result.items[key].routeId); vehicles[result.items[key].vehicleId] = result.items[key].vehicleId; } fResult.total_vehicles = Object.keys(vehicles).length; that.primengTableHelper.totalRecordsCount = result.totalCount; that.primengTableHelper.records = result.items; that._controllerRouteService.getControllerRouteTotalOrder(that.routeIds) .subscribe(resultStatus => { let total_packages = 0; if (resultStatus == null) { } else { if (Object.keys(resultStatus).length > 0) { for (key in resultStatus) { $('#route' + resultStatus[key].routeId).html(resultStatus[key].totalPackages); total_packages = total_packages + resultStatus[key].totalPackages; } } } 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)); } 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'); }); } }