import { Component, ViewEncapsulation, Injector, OnInit, AfterViewInit, ViewChild, ElementRef } from "@angular/core"; import { appModuleAnimation } from "@shared/animations/routerTransition"; import { AppComponentBase } from "@shared/common/app-component-base"; import { LocationServiceProxy, DriverProximityServiceProxy } from "@shared/service-proxies/service-proxies"; import { LazyLoadEvent } from "primeng/api"; import * as moment from 'moment'; import { Table } from "primeng/table"; import { Paginator } from 'primeng/components/paginator/paginator'; import { DriverProximityFlyOutComponent } from "@app/shared/layout/flyout/driver-proximity/driver-proximity-filter.component"; declare var $: any; @Component({ templateUrl: './driver-proximities.component.html', animations: [appModuleAnimation()], styleUrls: ['./driver-proximities.component.less'], providers: [DriverProximityServiceProxy] }) export class DriverProximitiesComponent extends AppComponentBase { @ViewChild('dataTable', { static: true }) dataTable: Table; @ViewChild('paginator', { static: true }) paginator: Paginator; @ViewChild('driverProximityFlyOutComponent', {static: false}) driverProximityFlyOutComponent: DriverProximityFlyOutComponent; @ViewChild('controllerHeader', {read: ElementRef,static: true}) cHeader: ElementRef; locations: any; txtFilter: string; filters: { locationFilter: number, filterText: string, startDate: Date, endDate: Date, } = {}; locationName; // packageList: Array = []; routeIds = []; DriverProximityData = []; todaysDate: Date; constructor( injector: Injector, private _locationServiceProxy: LocationServiceProxy, private _driverProximityServiceProxys: DriverProximityServiceProxy ) { super(injector); } ngOnInit(): void { let that = this; $('.kt-select2').select2(); this.todaysDate = new Date(Date.now()); // $("#kt_datetimepicker_6").val(moment(that.todaysDate).format('MM/DD/YYYY')); that.filters.startDate = that.todaysDate; that.filters.endDate = that.todaysDate; this.getLocationsOnLoad().then(function(result) { if (localStorage.getItem('locationInDriverProximity') == null) { localStorage.setItem('locationInDriverProximity', "" +result); }else{ that.filters.locationFilter = parseInt(localStorage.getItem('locationInDriverProximity')); } if (localStorage.getItem('dateInDriverproximity') == null) { localStorage.setItem('dateInDriverproximity', moment(that.todaysDate).format('YYYY-MM-DD')); that.filters.startDate = moment(localStorage.getItem('dateInDriverproximity')).toDate(); } else { that.filters.startDate = moment(localStorage.getItem('dateInDriverproximity')).toDate(); that.filters.endDate = moment(localStorage.getItem('dateInDriverproximity')).toDate(); // $(".datePicker").text(localStorage.getItem('dateInDriverproximity')); } // if (localStorage.getItem('dateInDriverproximity') != null) { // $(".datePicker").text(moment(localStorage.getItem('dateInDriverproximity')).format('dddd, MMMM DD, YYYY')); // } // if(localStorage.getItem('locationInDriverProximity') == null){ // this.filters.locationFilter = localStorage.getItem('locationInDriverProximity'); // console.log("Hindi null") // } that.filter(); }); } getDriverProximity(event?: LazyLoadEvent) { this.spinnerService.show(); let locationFilter = this.filters.locationFilter; this.DriverProximityData = []; this.routeIds = []; this._driverProximityServiceProxys.getDriverProximity(this.filters.filterText, undefined, undefined, undefined, undefined, locationFilter, undefined, undefined, moment(this.filters.endDate), undefined, 1000, undefined ).subscribe(result => { console.log(result); let key, x = 1, DriverProximityDataArray = {}, initialDataArray = {}, lat1, long1, lat2, long2, distance; for (key in result.items) { lat1 = result.items[key].deliveryDetail.contact.address.geocode.latitude; long1 = result.items[key].deliveryDetail.contact.address.geocode.longitude; lat2 = result.items[key].proximityCode.geocode.latitude; long2 = result.items[key].proximityCode.geocode.longitude; distance = this.distance(lat1, long1, lat2, long2, "M"); DriverProximityDataArray = { 'RouteId': result.items[key].route.id, 'OrderId': result.items[key].id, 'VehicleId': result.items[key].route.vehicle.id, 'VehicleName': result.items[key].route.vehicle.name, 'UserId': result.items[key].route.vehicle.user.id, 'DriverName': result.items[key].route.vehicle.user.name + " " + result.items[key].route.vehicle.user.surname, 'ProximityCode': result.items[key].proximityCode.value, 'Address': result.items[key].deliveryDetail.contact.firstName + " " + result.items[key].deliveryDetail.contact.lastName + ", " + result.items[key].deliveryDetail.contact.address.addressLine1 + ", " + result.items[key].deliveryDetail.contact.address.postalCode.city + ", " + result.items[key].deliveryDetail.contact.address.postalCode.state + ", " + result.items[key].deliveryDetail.contact.address.postalCode.value + ", " + result.items[key].deliveryDetail.contact.address.postalCode.country, 'Distance': Number(distance).toFixed(4), 'TimeCreated': result.items[key].proximityCode.creationTime, 'DeliveryDate': result.items[key].deliveryDetail.etaEnd } this.DriverProximityData.push(DriverProximityDataArray); } var routeIds = this.DriverProximityData.map(item => item.RouteId).filter((value, index, self) => self.indexOf(value) === index); var GetOneData = true; for (let key in routeIds) { for (var _i = 0; _i < this.DriverProximityData.length && GetOneData; _i++) { if (this.DriverProximityData[_i].RouteId == routeIds[key]) { initialDataArray = { 'RouteId': routeIds[key], 'DriverName': this.DriverProximityData[_i].DriverName, 'VehicleName': this.DriverProximityData[_i].VehicleName } this.routeIds.push(initialDataArray); GetOneData = false; } } GetOneData = true; } this.spinnerService.hide(); this.primengTableHelper.records = this.DriverProximityData; console.log(this.primengTableHelper.records); this.primengTableHelper.totalRecordsCount = 10; console.log(this.DriverProximityData); }); } ngAfterViewInit(): void { } onChange(event) { console.log(event); } getLocationsOnLoad() { let that = this; return new Promise(function (resolve, reject) { that._locationServiceProxy.getLocation(undefined, undefined, undefined, undefined, undefined, undefined, undefined) .subscribe(result => { that.locations = result.items; // that.filters.locationFilter = result.items["0"].id; if (localStorage.getItem('locationInDriverProximity') == null) { that.locationName = 'Please Select Location '; } else { that.locationName = that.locations['0']['name']; } that.txtFilter = null; null; null; resolve(result.items["0"].id); }); }); } filter() { let key; console.log(this.locations); for (key in this.locations) { if (this.locations[key].id == this.filters.locationFilter) { $(".location").text(this.locations[key].name + " - "); } } this.getDriverProximity(); // $(".datePicker").text(localStorage.getItem('dateInDriverproximity')); this.filters.startDate = moment(localStorage.getItem('dateInDriverproximity')).toDate(); } distance(lat1, lon1, lat2, lon2, unit) { if ((lat1 == lat2) && (lon1 == lon2)) { return 0; } else { var radlat1 = Math.PI * lat1 / 180; var radlat2 = Math.PI * lat2 / 180; var theta = lon1 - lon2; var radtheta = Math.PI * theta / 180; var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta); if (dist > 1) { dist = 1; } dist = Math.acos(dist); dist = dist * 180 / Math.PI; dist = dist * 60 * 1.1515; if (unit == "K") { dist = dist * 1.609344 } if (unit == "N") { dist = dist * 0.8684 } return dist; } } showFlyOut(): void { this.driverProximityFlyOutComponent.showFlyout(this.locations); } }