import { Component, Injector, OnInit, ViewChild, ViewEncapsulation, Output ,Input} from '@angular/core'; import { ActivatedRoute,Router } from '@angular/router'; import { appModuleAnimation } from '@shared/animations/routerTransition'; import { AppComponentBase } from '@shared/common/app-component-base'; import { ControllerRouteDetailServiceProxy,ShippingPackageServiceProxy,ControllerScheduleDetailDto,GetCompaniesListItemDto,OrderPackageListDto,OrderStatusAttachmentServiceProxy, UpdateOrderSorting, UpdateOrderSortingInput, OrderServiceProxy} from '@shared/service-proxies/service-proxies'; import { AppSessionService } from '@shared/common/session/app-session.service'; import { ClinicNotes } from './clinic-notes.component'; import { RouteDetailAttachment } from './route-detail-attachment.component'; import { Table } from "primeng/table"; import { LazyLoadEvent } from "primeng/primeng"; import { Paginator } from 'primeng/components/paginator/paginator'; import { finalize, repeat } from 'rxjs/operators'; import * as _ from 'lodash'; import * as moment from 'moment'; declare var $: any; declare var jquery:any; @Component({ selector:'lab-route-detail', templateUrl: 'lab-route-detail.component.html', encapsulation: ViewEncapsulation.None, styleUrls: ['./route-detail.component.less'], animations: [appModuleAnimation()] }) export class LabRouteDetailComponent extends AppComponentBase implements OnInit { routeId:number = null; packages: Array<{id: number, name: string}> = new Array(); data:any; packageCount: Array<{id: number, quantity: number}> = new Array(); filterText = ''; statusFilter: any; clinicFilter: any; advancedFiltersAreShown = false; now:Date; arrayNotes: Array = new Array(); dNote:string; resultCount: number // data: Array []; @ViewChild("dataTable", {static: true}) dataTable:Table @ViewChild("paginator", {static: true}) paginator: Paginator @ViewChild('clinicNotes', { static: true }) clinicNotes: ClinicNotes; @ViewChild('routeDetailAttachment', { static: true }) routeDetailAttachment: RouteDetailAttachment; @Input() labRouteDetails : any; newDto : ControllerScheduleDetailDto = new ControllerScheduleDetailDto(); newPackage :OrderPackageListDto = new OrderPackageListDto(); packagesList:Array = new Array(); totalCount: any; flag=false; tbodyHolder: any; orderList: Array = []; public getRouteDetailFunction: Function; constructor( injector: Injector, private id:ActivatedRoute, private _controllerRouteDetails: ControllerRouteDetailServiceProxy, private _controllerRoutePackages: ShippingPackageServiceProxy, private _appSessionService :AppSessionService, private router: Router, private _orderAppService: OrderServiceProxy, ) { super(injector); // this.primengTableHelper.showLoadingIndicator(); this.spinnerService.show(); } ngOnInit(){ this.id.paramMap.subscribe(params => { this.routeId = Number(params.get('id')); }); // setInterval(()=>{ // this.getRouteDetails() // // console.log("refreshed") // }, 180000); this.getLabPackages(); this.getRouteDetails(); this.now = new Date(); } ngAfterViewInit(){ this.getRouteDetailFunction = this.getRouteDetails.bind(this) } // ngOnChanges(){ // if(this.flag==true){ // console.log("changes") // this.ngOnInit(); // this.flag=false // } // } getLabPackages(){ this.packages = []; this._controllerRoutePackages.getShippingPackage(undefined,undefined,undefined,undefined,undefined,undefined).subscribe(result=>{ result.items.forEach(element => { if(element.name !== 'Default'){ this.packages.push(element); } }); }); } getTotal(array){ var data = array.map(i=>i.quantity); data.reduce((a, b) => a + b, 0); return data; } getRouteDetails(event?: LazyLoadEvent) { let maxcount = 700 // if (this.primengTableHelper.shouldResetPaging(event)) { // this.paginator.changePage(0); // return; // } //this.getLabPackages(); this.spinnerService.show(); this._controllerRouteDetails.getRouteSchedDetails( undefined, this.routeId, this.filterText, this.statusFilter, this.clinicFilter, this.primengTableHelper.getSorting(this.dataTable), maxcount, undefined // this.primengTableHelper.getMaxResultCount(this.paginator, event), // this.primengTableHelper.getSkipCount(this.paginator, event) ) .pipe(finalize(() => this.spinnerService.hide() )) .subscribe(result => { let sampleCount = 0 let status = []; let eta = []; let packageCount = []; let attachment = []; for (let index = 0; index < result.items.length; index++) { console.log(result.items[index]['clinic']['clinicVisibleToDriver']) for (let key = 0; key < result.items[index].orderPackages.length; key++) { if(result.items[index].orderPackages[key].package.name != "Default"){ result.items[index].packageCount += result.items[index].orderPackages[key].quantity; } } if(result.items[index].deliveryNote !== null){ this.dNote = result.items[index].deliveryNote; } eta.push(result.items[index].estimatedTimeOfArrival); status.push(result.items[index].orderStatus); packageCount.push(result.items[index].packageCount); attachment.push(result.items[index].orderStatusAttachment); } result.items.push(this.newDto); var lastKey = result.items.length - 1; result.items[lastKey].id = 1; result.items[lastKey].action = "Delivery"; result.items[lastKey].company = new GetCompaniesListItemDto(); result.items[lastKey].company.name = result.items[0].deliveryDetail.contact.company.name; result.items[lastKey].company.accountNo = result.items[0].deliveryDetail.contact.company.name; result.items[lastKey].pickupDetail = result.items[0].deliveryDetail; result.items[lastKey].deliveryDetail = result.items[0].deliveryDetail; status.sort((a,b) => a.time-b.time); eta.sort((a,b) => a-b); packageCount.reduce((a,b)=>a+b); // console.log(attachment); result.items[lastKey].orderStatus = status[status.length - 1]; result.items[lastKey].estimatedTimeOfArrival = eta[eta.length - 1] // console.log(status); result.items[lastKey].willCall = null; result.items[lastKey].automatic = null; result.items[lastKey].orderPackages = null; result.items[lastKey].completion = result.items[0].completion; result.items[lastKey].orderExtras = result.items[0].orderExtras; result.items[lastKey].orderStatusAttachment = attachment; result.items[lastKey].arrivalTime = status[status.length - 1].time; result.items[lastKey].deliveryNote = this.dNote; result.items[lastKey].pickUp = result.items[0].pickUp; result.items[lastKey].packageCount = packageCount.reduce((a,b)=>a+b); this.primengTableHelper.totalRecordsCount = result.totalCount; this.primengTableHelper.records = result.items; // this.spinnerService.hide(); // console.log(result.items) this.resultCount = this.primengTableHelper.totalRecordsCount console.log("total Count"+this.primengTableHelper.totalRecordsCount) console.log("total Length" + this.primengTableHelper.records.length) }); } toggleMoreInfo(event){ var element = event.currentTarget.nextSibling; var selector = document.querySelectorAll('.more-info-container.active'); var hover = document.querySelectorAll('.more-btn.hover'); if(element.classList.contains('active')){ event.currentTarget.classList.remove('hover'); element.classList.remove('active'); } else { if(selector.length > 0){ selector[0].classList.remove('active'); hover[0].classList.remove('hover'); // event.currentTarget.classList.remove('hover'); } element.classList.add('active'); event.currentTarget.classList.add('hover'); } } ConvertToInt(val){ return parseInt(val); } navOrder(id){ this.router.navigate(['/app/sprintship/controller-order-details/', id]); } orderAttachments(id:number){ this.routeDetailAttachment.show(id); } onShown(){ } rowReorder() { this.tbodyHolder = null this.tableRow(); console.log("table helper id"+this.primengTableHelper.records[0].id) this.orderList = []; for (let index = 0; index < this.primengTableHelper.records.length -1; index++) { var element = this.primengTableHelper.records[index]; // console.log(element) let a = new UpdateOrderSorting({ id: parseInt(element.id), sortOrder: index }) this.orderList.push(a); } console.log(this.orderList) let input = new UpdateOrderSortingInput({ sortingOrderInput: this.orderList, }) this._orderAppService.updateOrderSorting( input ).pipe().subscribe(result => { this.notify.info(this.l('SavedSuccessfully')); }) } tableRow() { this.tbodyHolder = document.getElementsByTagName('tbody')[0].rows; } }