@aggdirect/coolmap 2.0.8 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/README.md +34 -1
  2. package/esm2020/aggdirect-coolmap.mjs +5 -0
  3. package/esm2020/lib/component/add-route/add-route.component.mjs +317 -0
  4. package/esm2020/lib/component/job-code/job-code.component.mjs +174 -0
  5. package/esm2020/lib/component/map/map.component.mjs +37 -0
  6. package/esm2020/lib/component/nav/layout/add-route-nav/add-route-nav.component.mjs +145 -0
  7. package/esm2020/lib/component/nav/layout/job-code-nav/job-code-nav.component.mjs +114 -0
  8. package/esm2020/lib/component/nav/nav.component.mjs +52 -0
  9. package/esm2020/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.mjs +72 -0
  10. package/esm2020/lib/component/route-jobcode-list/route-jobcode-list.component.mjs +314 -0
  11. package/esm2020/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.mjs +19 -0
  12. package/esm2020/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.mjs +29 -0
  13. package/esm2020/lib/component/shared/dialog/dialog.component.mjs +29 -0
  14. package/esm2020/lib/component/shared/estimation-display/estimation-display.component.mjs +19 -0
  15. package/esm2020/lib/component/shared/job-route-list/job-route-list.component.mjs +71 -0
  16. package/esm2020/lib/component/shared/jobcode-overview/jobcode-overview.component.mjs +19 -0
  17. package/esm2020/lib/component/shared/jobcode-status/jobcode-status.component.mjs +14 -0
  18. package/esm2020/lib/coolmap.module.mjs +182 -0
  19. package/esm2020/public-api.mjs +19 -0
  20. package/fesm2015/aggdirect-coolmap.mjs +1524 -0
  21. package/fesm2015/aggdirect-coolmap.mjs.map +1 -0
  22. package/fesm2020/aggdirect-coolmap.mjs +1490 -0
  23. package/fesm2020/aggdirect-coolmap.mjs.map +1 -0
  24. package/index.d.ts +5 -0
  25. package/lib/component/add-route/add-route.component.d.ts +61 -60
  26. package/lib/component/job-code/job-code.component.d.ts +40 -29
  27. package/lib/component/map/map.component.d.ts +15 -12
  28. package/lib/component/nav/layout/add-route-nav/add-route-nav.component.d.ts +49 -36
  29. package/lib/component/nav/layout/job-code-nav/job-code-nav.component.d.ts +42 -34
  30. package/lib/component/nav/nav.component.d.ts +31 -28
  31. package/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.d.ts +20 -16
  32. package/lib/component/route-jobcode-list/route-jobcode-list.component.d.ts +42 -39
  33. package/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.d.ts +9 -6
  34. package/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.d.ts +11 -8
  35. package/lib/component/shared/dialog/dialog.component.d.ts +13 -10
  36. package/lib/component/shared/estimation-display/estimation-display.component.d.ts +9 -6
  37. package/lib/component/shared/job-route-list/job-route-list.component.d.ts +26 -21
  38. package/lib/component/shared/jobcode-overview/jobcode-overview.component.d.ts +9 -6
  39. package/lib/component/shared/jobcode-status/jobcode-status.component.d.ts +8 -5
  40. package/lib/coolmap.module.d.ts +43 -2
  41. package/package.json +40 -15
  42. package/public-api.d.ts +15 -16
  43. package/bundles/coolmap.umd.js +0 -1383
  44. package/bundles/coolmap.umd.js.map +0 -1
  45. package/bundles/coolmap.umd.min.js +0 -2
  46. package/bundles/coolmap.umd.min.js.map +0 -1
  47. package/coolmap.d.ts +0 -5
  48. package/coolmap.metadata.json +0 -1
  49. package/esm2015/coolmap.js +0 -6
  50. package/esm2015/coolmap.ngsummary.json +0 -1
  51. package/esm2015/lib/component/add-route/add-route.component.js +0 -309
  52. package/esm2015/lib/component/add-route/add-route.component.ngfactory.js +0 -304
  53. package/esm2015/lib/component/add-route/add-route.component.ngsummary.json +0 -1
  54. package/esm2015/lib/component/job-code/job-code.component.js +0 -116
  55. package/esm2015/lib/component/job-code/job-code.component.ngfactory.js +0 -77
  56. package/esm2015/lib/component/job-code/job-code.component.ngsummary.json +0 -1
  57. package/esm2015/lib/component/map/map.component.js +0 -39
  58. package/esm2015/lib/component/map/map.component.ngfactory.js +0 -23
  59. package/esm2015/lib/component/map/map.component.ngsummary.json +0 -1
  60. package/esm2015/lib/component/nav/layout/add-route-nav/add-route-nav.component.js +0 -79
  61. package/esm2015/lib/component/nav/layout/add-route-nav/add-route-nav.component.ngfactory.js +0 -142
  62. package/esm2015/lib/component/nav/layout/add-route-nav/add-route-nav.component.ngsummary.json +0 -1
  63. package/esm2015/lib/component/nav/layout/job-code-nav/job-code-nav.component.js +0 -82
  64. package/esm2015/lib/component/nav/layout/job-code-nav/job-code-nav.component.ngfactory.js +0 -194
  65. package/esm2015/lib/component/nav/layout/job-code-nav/job-code-nav.component.ngsummary.json +0 -1
  66. package/esm2015/lib/component/nav/nav.component.js +0 -54
  67. package/esm2015/lib/component/nav/nav.component.ngfactory.js +0 -43
  68. package/esm2015/lib/component/nav/nav.component.ngsummary.json +0 -1
  69. package/esm2015/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.js +0 -66
  70. package/esm2015/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ngfactory.js +0 -46
  71. package/esm2015/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ngsummary.json +0 -1
  72. package/esm2015/lib/component/route-jobcode-list/route-jobcode-list.component.js +0 -301
  73. package/esm2015/lib/component/route-jobcode-list/route-jobcode-list.component.ngfactory.js +0 -99
  74. package/esm2015/lib/component/route-jobcode-list/route-jobcode-list.component.ngsummary.json +0 -1
  75. package/esm2015/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.js +0 -20
  76. package/esm2015/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ngfactory.js +0 -21
  77. package/esm2015/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ngsummary.json +0 -1
  78. package/esm2015/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.js +0 -30
  79. package/esm2015/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ngfactory.js +0 -30
  80. package/esm2015/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ngsummary.json +0 -1
  81. package/esm2015/lib/component/shared/dialog/dialog.component.js +0 -29
  82. package/esm2015/lib/component/shared/dialog/dialog.component.ngfactory.js +0 -24
  83. package/esm2015/lib/component/shared/dialog/dialog.component.ngsummary.json +0 -1
  84. package/esm2015/lib/component/shared/estimation-display/estimation-display.component.js +0 -20
  85. package/esm2015/lib/component/shared/estimation-display/estimation-display.component.ngfactory.js +0 -23
  86. package/esm2015/lib/component/shared/estimation-display/estimation-display.component.ngsummary.json +0 -1
  87. package/esm2015/lib/component/shared/job-route-list/job-route-list.component.js +0 -63
  88. package/esm2015/lib/component/shared/job-route-list/job-route-list.component.ngfactory.js +0 -134
  89. package/esm2015/lib/component/shared/job-route-list/job-route-list.component.ngsummary.json +0 -1
  90. package/esm2015/lib/component/shared/jobcode-overview/jobcode-overview.component.js +0 -20
  91. package/esm2015/lib/component/shared/jobcode-overview/jobcode-overview.component.ngfactory.js +0 -19
  92. package/esm2015/lib/component/shared/jobcode-overview/jobcode-overview.component.ngsummary.json +0 -1
  93. package/esm2015/lib/component/shared/jobcode-status/jobcode-status.component.js +0 -16
  94. package/esm2015/lib/component/shared/jobcode-status/jobcode-status.component.ngfactory.js +0 -17
  95. package/esm2015/lib/component/shared/jobcode-status/jobcode-status.component.ngsummary.json +0 -1
  96. package/esm2015/lib/coolmap.component.js +0 -18
  97. package/esm2015/lib/coolmap.component.ngfactory.js +0 -16
  98. package/esm2015/lib/coolmap.component.ngsummary.json +0 -1
  99. package/esm2015/lib/coolmap.module.js +0 -108
  100. package/esm2015/lib/coolmap.module.ngfactory.js +0 -46
  101. package/esm2015/lib/coolmap.module.ngsummary.json +0 -1
  102. package/esm2015/public-api.js +0 -20
  103. package/esm2015/public-api.ngsummary.json +0 -1
  104. package/fesm2015/coolmap.js +0 -1317
  105. package/fesm2015/coolmap.js.map +0 -1
  106. package/lib/component/add-route/add-route.component.ngfactory.d.ts +0 -1
  107. package/lib/component/job-code/job-code.component.ngfactory.d.ts +0 -1
  108. package/lib/component/map/map.component.ngfactory.d.ts +0 -1
  109. package/lib/component/nav/layout/add-route-nav/add-route-nav.component.ngfactory.d.ts +0 -1
  110. package/lib/component/nav/layout/job-code-nav/job-code-nav.component.ngfactory.d.ts +0 -1
  111. package/lib/component/nav/nav.component.ngfactory.d.ts +0 -1
  112. package/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ngfactory.d.ts +0 -1
  113. package/lib/component/route-jobcode-list/route-jobcode-list.component.ngfactory.d.ts +0 -1
  114. package/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ngfactory.d.ts +0 -1
  115. package/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ngfactory.d.ts +0 -1
  116. package/lib/component/shared/dialog/dialog.component.ngfactory.d.ts +0 -1
  117. package/lib/component/shared/estimation-display/estimation-display.component.ngfactory.d.ts +0 -1
  118. package/lib/component/shared/job-route-list/job-route-list.component.ngfactory.d.ts +0 -1
  119. package/lib/component/shared/jobcode-overview/jobcode-overview.component.ngfactory.d.ts +0 -1
  120. package/lib/component/shared/jobcode-status/jobcode-status.component.ngfactory.d.ts +0 -1
  121. package/lib/coolmap.component.d.ts +0 -5
  122. package/lib/coolmap.component.ngfactory.d.ts +0 -1
  123. package/lib/coolmap.module.ngfactory.d.ts +0 -3
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../projects/coolmap/src/lib/coolmap.component.ts","../../../projects/coolmap/src/lib/component/map/map.component.ts","../../../projects/coolmap/src/lib/component/nav/nav.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/route-jobcode-list.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ts","../../../projects/coolmap/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ts","../../../projects/coolmap/src/lib/component/job-code/job-code.component.ts","../../../projects/coolmap/src/lib/component/shared/jobcode-status/jobcode-status.component.ts","../../../projects/coolmap/src/lib/component/shared/job-route-list/job-route-list.component.ts","../../../projects/coolmap/src/lib/component/shared/jobcode-overview/jobcode-overview.component.ts","../../../projects/coolmap/src/lib/component/shared/dialog/dialog.component.ts","../../../projects/coolmap/src/lib/component/add-route/add-route.component.ts","../../../projects/coolmap/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.ts","../../../projects/coolmap/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.ts","../../../projects/coolmap/src/lib/component/shared/estimation-display/estimation-display.component.ts","../../../projects/coolmap/src/lib/coolmap.module.ts"],"names":["CoolmapComponent","prototype","ngOnInit","Component","args","selector","template","MapComponent","coolmapService","this","enableProgress","destroyer$","Subject","ngAfterViewInit","_this","reintiatecoolmap","pipe","takeUntil","subscribe","res","initiateMapForAddRoute","mapDiv","nativeElement","then","ngOnDestroy","next","unsubscribe","CoolmapService","ViewChild","static","NavComponent","utils","coolMap","drawer","EventEmitter","changeNav","navValue","isnavChange","paddinForJobCode","top","bottom","left","right","paddinForViewRoute","navChangeObserve","setPadding","openDrawer","emit","chnageNav","name","clearBound","clearOptions","UtilsService","Output","RouteJobCodeListComponent","loader","type","data","currentNav","emitroute","showAllRoute","preventMouseout","filterList","isDriverList","selectedRoute","SelectionModel","preventListSelect","clearJobDetailsFromList","preventDetailsClose","messageLoader","driverMessage","FormControl","Validators","maxLength","isSmsList","driverList","getpreVentJobdetailclose","removeMapEntityUtility","passRoute","job","forEach","each","ele","filterRoute","selectRoute","route","toggle","preVentJobdetailclose","clearList","selected","index","length","checkroutes","map","ngOnChanges","changes","setTimeout","findIndex","isActive","indexForData","id","plotRoute","searchTerm","getSearchResults","activeRoute_1","find","item","route_id","removeJobFromMap","clear","preventnavChange","removeRouteAndMarker","clearBoundWithCordinates","toggleFilterRoute","showRoute","toggleDrivermenu","event","mouseevntType","isHoverOut","getdictValue","visiblesection","value","filterItem","ele1","extendBound","sendMessage","valid","order_number","date","message","postdata","reset","openSnackBar","err","Input","ViewRouteListCardComponent","detailsDict","setdictValue","JSON","stringify","emitrouteevent","routeDetailsUtility","label","DriversmsCardKey","overViewEnum","DriverSmsCardEnum","JobCodeListCardComponent","routeSeletion","toggleDriverlist","toggleJobCodeDetails","mouseEventType","emitJobdetails","preventCloseDetails","calculateStatusPercentage","total","Math","round","setRouteItem","JobCodeComponent","isVisible","routes","clearJobDetails","isOverlapRouteSection","clearViewRouteforJobCodeObserve","getRouteList","getData","masterRoutes","preventListUpdate","makeOptions","toggleSidemenu","detailsCardEnable","clearJob","isSelected","extendReBound","masterToggle","row","select","togglerouteDetails","eventType","mouseOut","routeCardDetail","getDateFormat","Date","JobRouteListComponent","filterForm","FormGroup","search","changeRoutes","changeSelectedRoute","filters","filteredOptions","_a","get","valueChanges","startWith","filter","filterSearch","e","controls","setValue","source","filteredRoutes","x","removeFromFilter","indexOf","JobCodeOverviewData","JobCodeOverviewEnum","DialogComponent","dialogRef","body","positive","negative","elem","undefined","onClose","result","close","MatDialogRef","Inject","MAT_DIALOG_DATA","AddRouteComponent","coolMapService","dialog","updateRouteList","pickupOptions","deliveryOptions","requestParmsForRouteDetails","pickup_lat_lng","delivery_lat_lng","customersList","unitsList","materialsList","preventSave","preventInitialSave","enablePopUp","prevantPopupClose","enableForm","formInit","getrouteDetailsUtility","popupDetails","filterCustomerList","customersList$","addRouteForm","_filter","filterValue","toLowerCase","option","includes","inIt","openDialog","open","afterClosed","deleteRoute","editEvent","removeMapEntity","formControlValue","patchFormValue","checkAndFetchRouteInformation","fetchCustomersList","fetchUnitsList","fetchMaterialsList","fromEvent","filterPickup","distinctUntilChanged","debounceTime","fetchAutoCompleteLocations","features","filterDelivery","pickup_location","patchValue","markAsTouched","_b","delivery_location","route_name","required","customer_name","disabled","materials_id","unit_id","path","estimated_distance","estimated_time","note","routeId","routeDetails","portalName","enable","sort","a","b","material","localeCompare","selectedLongLat","geometry","coordinates","toString","isinitial","_d","_c","unit","param","dist","time","split","formateLatLong","element_1","properties","materialDetails","material_id","loadMapProperty","latlong","reverse","saveRoute","url","success","markAllAsTouched","uuid","MatDialog","AddRouteNavComponent","loaderVal","addemit","showAddForm","getRoute","resetSearch","JobCodeNavComponent","listData","dateValue","jobemit","loadData","clearViewRouteforJobCode","getDate","ev","updateValueAndValidity","EstinationData","Estinationlabel","EstinationEnum","NgModule","declarations","SmsCardDetailsOverviewComponent","JobcodeStatusComponent","JobcodeOverviewComponent","EstimationDisplayComponent","imports","CommonModule","MatSnackBarModule","MatSidenavModule","DragDropModule","FormsModule","MatInputModule","MatSelectModule","MatIconModule","ReactiveFormsModule","MatAutocompleteModule","MatFormFieldModule","MatProgressSpinnerModule","MatChipsModule","MatDialogModule","MatTooltipModule","MatDatepickerModule","MatNativeDateModule","PerfectScrollbarModule","MatPseudoCheckboxModule","MatButtonModule","MatProgressBarModule","exports","entryComponents","providers"],"mappings":"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","sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'lib-coolmap',\n template: `\n <p>\n coolmap works!\n </p>\n `,\n styles: [\n ]\n})\nexport class CoolmapComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\r\nimport { CoolmapService } from '@aggdirect/coolmap-services';\r\nimport { Subject } from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n selector: 'app-map',\r\n templateUrl: './map.component.html',\r\n styleUrls: ['./map.component.css']\r\n})\r\nexport class MapComponent implements OnDestroy {\r\n @ViewChild('map', { static: true }) public mapDiv!: ElementRef;\r\n enableProgress: boolean = true;\r\n public destroyer$ = new Subject<boolean>();\r\n\r\n constructor( public coolmapService: CoolmapService ) { }\r\n\r\n ngAfterViewInit() {\r\n this.coolmapService.reintiatecoolmap.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n this.enableProgress = true;\r\n if (res) {\r\n this.coolmapService.initiateMapForAddRoute(this.mapDiv.nativeElement).then((res) => {\r\n this.enableProgress = false;\r\n })\r\n }\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyer$.next(true);\r\n this.destroyer$.unsubscribe();\r\n }\r\n}\r\n","import { Component, EventEmitter, Output, OnDestroy } from '@angular/core';\r\nimport { CoolmapService, UtilsService } from '@aggdirect/coolmap-services';\r\nimport { Subject } from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n selector: 'app-nav',\r\n templateUrl: './nav.component.html',\r\n styleUrls: ['./nav.component.scss']\r\n})\r\nexport class NavComponent implements OnDestroy {\r\n @Output() public drawer = new EventEmitter<boolean>();\r\n @Output() public changeNav = new EventEmitter<string>();\r\n navValue: string = 'Jobcode';\r\n isnavChange: boolean = true;\r\n paddinForJobCode = { top: 0, bottom: 250, left: 500, right: 400 };\r\n paddinForViewRoute = { top: 0, bottom: 400, left: 400, right: 0 };\r\n public destroyer$ = new Subject<boolean>();\r\n\r\n constructor(public utils: UtilsService, public coolMap: CoolmapService) {\r\n this.utils.navChangeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => { this.isnavChange = res })\r\n this.coolMap.setPadding(this.paddinForJobCode);\r\n }\r\n\r\n openDrawer() { this.drawer.emit(true) }\r\n chnageNav(name: string): void {\r\n if (this.isnavChange) {\r\n this.changeNav.emit(name); this.navValue = name; this.coolMap.clearBound();\r\n if (name === 'Addroute') { this.coolMap.setPadding(this.paddinForViewRoute) }\r\n else { this.coolMap.setPadding(this.paddinForJobCode) }\r\n this.utils.clearOptions();\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.destroyer$.next(true);\r\n this.destroyer$.unsubscribe();\r\n }\r\n}\r\n","import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { SelectionModel } from '@angular/cdk/collections';\r\nimport { FormControl, Validators } from '@angular/forms';\r\nimport { CoolmapService, Route, UtilsService } from '@aggdirect/coolmap-services';\r\n\r\n@Component({\r\n selector: 'app-route-jobcode-list',\r\n templateUrl: './route-jobcode-list.component.html',\r\n styleUrls: ['./route-jobcode-list.component.scss']\r\n})\r\nexport class RouteJobCodeListComponent implements OnInit, OnChanges {\r\n @Input() public loader = true;\r\n @Input() public type: string = '';\r\n @Input() public data: Route[] = [];\r\n @Input() public currentNav: string = ''\r\n @Output() public emitroute = new EventEmitter();\r\n @Output() public showAllRoute = new EventEmitter();\r\n preventMouseout: boolean = false;\r\n filterList: Route[] = this.data;\r\n @Input() public searchTerm!: any;\r\n isDriverList: boolean = false;\r\n public selectedRoute = new SelectionModel<any>(true, [])\r\n driverList!: any;\r\n preventListSelect: boolean = false;\r\n @Output() public clearJobDetailsFromList = new EventEmitter();\r\n preventDetailsClose = false;\r\n messageLoader: boolean = false;\r\n driverMessage = new FormControl('', [Validators.maxLength(256)]);\r\n @Input() public clearListSeletion: boolean;\r\n isSmsList: boolean = false;\r\n constructor(public coolMap: CoolmapService, public utils: UtilsService) { this.driverList = [] }\r\n ngOnInit(): void {\r\n this.utils.getpreVentJobdetailclose.subscribe(res => { this.preventDetailsClose = res });\r\n this.utils.removeMapEntityUtility.subscribe((res: Route) => {this.passRoute(res)});\r\n }\r\n passRoute(job: Route) {\r\n this.data.forEach((each) => { if (each['route_id'] !== job['route_id']) { each['isActive'] = false } else { each['isActive'] = true } });\r\n if (this.type == 'addroute') this.filterList.forEach(ele => this.coolMap.filterRoute(ele['route_id'], 'none'));\r\n }\r\n selectRoute(route: any) {\r\n if (!this.preventListSelect) {\r\n this.preventListSelect = true;\r\n this.selectedRoute.toggle(route);\r\n this.clearJobDetailsFromList.emit(true);\r\n this.utils.preVentJobdetailclose.next(false);\r\n this.filterList.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'none'));\r\n this.clearList();\r\n this.selectedRoute.selected.forEach((ele, index) => {\r\n this.coolMap.filterRoute(ele['job_id'], 'visible', ((this.selectedRoute.selected.length - 1) === index)).then(() => {\r\n this.preventListSelect = false;\r\n })\r\n });\r\n if (!this.selectedRoute.selected.length) {\r\n this.preventListSelect = false\r\n this.data.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'visible'));\r\n };\r\n }\r\n }\r\n checkroutes(route: Route) {\r\n const selectedRoute = this.selectedRoute.selected;\r\n this.filterList = this.filterList.map(ele => { ele['isSelected'] = false; return ele })\r\n if (selectedRoute.length > 0) {\r\n selectedRoute.forEach(ele => {\r\n if (route['order_number'] === ele['order_number']) { ele['isSelected'] = true }\r\n });\r\n } return route\r\n }\r\n ngOnChanges(changes: SimpleChanges) {\r\n setTimeout(() => {\r\n if (this.currentNav === 'Addroute' && (this.data.length < this.filterList.length)) {\r\n const index = this.filterList.findIndex(ele => ele.isActive);\r\n if (index > 0) this.filterList[index].isActive = false;\r\n this.data.forEach((ele: Route, indexForData: number) => {\r\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id'])\r\n this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {\r\n });\r\n });\r\n }\r\n }, 500);\r\n if (changes['data'] && changes['data']['currentValue']) {\r\n this.filterList = changes['data']['currentValue'];\r\n if (this.searchTerm) {\r\n if (this.searchTerm.length > 0) {\r\n\r\n this.data = this.utils.getSearchResults(changes['data']['currentValue'], this.searchTerm);\r\n this.filterList = this.data;\r\n } else {\r\n this.filterList = changes['data']['currentValue'];\r\n }\r\n }\r\n\r\n if (this.type === 'jobcode') {\r\n this.loader = true; this.clearList();\r\n if (this.filterList.length === 0) this.loader = false;\r\n }\r\n\r\n if (this.type !== 'jobcode') {\r\n if (changes['data']['previousValue'] && this.currentNav === 'addForm') {\r\n const activeRoute = changes['data']['previousValue'].find((ele: Route) => ele.isActive);\r\n if (activeRoute) {\r\n this.filterList.map((item: any) => {\r\n if (item.route_id === activeRoute.route_id) {\r\n item.isActive = true;\r\n }\r\n })\r\n }\r\n }\r\n }\r\n if (changes['data']['previousValue'] && this.currentNav !== 'addForm') {\r\n this.coolMap.removeJobFromMap(changes['data']['previousValue']);\r\n this.selectedRoute.clear();\r\n };\r\n if (this.currentNav !== 'addForm') {\r\n changes['data']['currentValue'].forEach((ele: Route, indexForData: number) => {\r\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id'])\r\n this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {\r\n if (indexForData === (this.data.length - 1)) {\r\n this.loader = false;\r\n this.utils.preventnavChange.next(true);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n if (changes['searchTerm']) {\r\n if (this.filterList) {\r\n this.data = this.filterList;\r\n this.clearList();\r\n if (changes['searchTerm']['currentValue'].length > 0) {\r\n this.coolMap.removeRouteAndMarker(1);\r\n this.data = this.utils.getSearchResults(this.data, changes['searchTerm']['currentValue']);\r\n } else { this.data = this.filterList; }\r\n setTimeout(() => {\r\n this.coolMap.clearBoundWithCordinates();\r\n if (this.currentNav !== 'addForm' && !this.selectedRoute['selected'].length) {\r\n this.coolMap.removeRouteAndMarker(1);\r\n this.toggleFilterRoute(this.filterList);\r\n }\r\n }, 500);\r\n if (this.currentNav !== 'addForm' && this.selectedRoute['selected'].length) {\r\n if (this.data && this.data.length > 0) {\r\n this.clearList();\r\n this.clearJobDetailsFromList.emit(true)\r\n this.coolMap.removeJobFromMap(this.selectedRoute.selected);\r\n setTimeout(() => {\r\n this.data.forEach((ele, indexForData) => {\r\n this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === (this.data.length - 1))).then(() => {\r\n if (indexForData === (this.data.length - 1)) { this.loader = false; this.utils.preventnavChange.next(true) }\r\n if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {\r\n this.selectedRoute.clear()\r\n }\r\n });\r\n })\r\n }, 500);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n showRoute() {\r\n this.utils.preventnavChange.next(false);\r\n this.loader = true; this.clearList();\r\n this.showAllRoute.emit(true);\r\n if (this.filterList && this.filterList.length > 0) {\r\n this.coolMap.removeJobFromMap(this.selectedRoute.selected);\r\n setTimeout(() => {\r\n this.filterList.forEach((ele, indexForData) => {\r\n this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === this.filterList.length - 1)).then(() => {\r\n if (indexForData === this.filterList.length - 1) { this.loader = false; this.utils.preventnavChange.next(true) }\r\n if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {\r\n this.selectedRoute.clear();\r\n }\r\n });\r\n })\r\n }, 500);\r\n }\r\n }\r\n toggleDrivermenu(event: any) {\r\n const mouseevntType = event.mouseevntType; let route = event.route;\r\n const isHoverOut = event.isHoverOut;\r\n if(typeof(mouseevntType) === 'string') {if(this.preventMouseout){this.isDriverList = !this.isDriverList}; this.preventMouseout = true}\r\n if (typeof(mouseevntType) === 'boolean' &&!mouseevntType && !this.preventMouseout) { this.isDriverList = mouseevntType };\r\n if (typeof(mouseevntType) === 'boolean' && mouseevntType && !this.preventMouseout) { this.isDriverList = mouseevntType };\r\n if(this.preventMouseout && !this.isDriverList) this.preventMouseout = false;\r\n if (isHoverOut) {\r\n if (this.preventMouseout) {\r\n route = this.utils.getdictValue('driver-details');\r\n this.driverList = route;\r\n }\r\n if (!this.preventMouseout) {\r\n this.driverList = route\r\n }\r\n } else {\r\n this.driverList = route\r\n }\r\n }\r\n visiblesection(value: string) { if (this.type === value) { return true } else return false }\r\n toggleFilterRoute(filterList: Route[]) {\r\n filterList.forEach((ele) => {\r\n const filterItem = (this.type === 'jobcode') ? 'job_id' : 'route_id';\r\n const index = this.data.findIndex((ele1) => { return (ele1[`${filterItem}`] === ele[`${filterItem}`]) });\r\n const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);\r\n if (id && index < 0) this.coolMap.filterRoute(id, 'none');\r\n if (id && index >= 0) {\r\n this.data[index].isActive = false;\r\n this.coolMap.filterRoute(id, 'visible');\r\n this.coolMap.extendBound(ele['path'], (index === (this.data.length - 1)));\r\n };\r\n });\r\n }\r\n clearList() {\r\n this.isDriverList = false; this.driverList = null; this.preventMouseout = false; this.isSmsList = false;\r\n }\r\n sendMessage() {\r\n this.messageLoader = true\r\n if (this.driverMessage.valid) {\r\n const data = {\r\n order_number: this.driverList['order_number'],\r\n date: this.driverList['date'],\r\n message: this.driverMessage.value,\r\n }\r\n this.utils.postdata('coolmap/jobs_report_chat', data).subscribe((res: any) => {\r\n if (res['data']['status'] === 'Success.') {\r\n this.messageLoader = false;\r\n this.driverMessage.reset();\r\n this.utils.openSnackBar('Message Sent', 'success');\r\n } else {\r\n this.messageLoader = false;\r\n this.utils.openSnackBar('Message not sent', 'error');\r\n }\r\n }, err => {if(err) {this.messageLoader = false}})\r\n }\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { Route, UtilsService } from '@aggdirect/coolmap-services';\r\n\r\n@Component({\r\n selector: 'app-view-route-list-card',\r\n templateUrl: './view-route-list-card.component.html',\r\n styleUrls: ['./view-route-list-card.component.scss']\r\n})\r\nexport class ViewRouteListCardComponent {\r\n @Input() public route!: Route;\r\n @Input() public emitrouteevent: any;\r\n constructor(public utils: UtilsService) { }\r\n\r\n detailsDict(event: boolean | string, route: Route) {\r\n if(event === 'click') this.utils.setdictValue('route-detailsv2', JSON.stringify(route));\r\n route['type'] = 'editroute'; route['prevent'] = true; this.emitrouteevent.emit(route);\r\n this.utils.routeDetailsUtility.next({ event, route });\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { DriverSmsCardEnum, DriversmsCardKey } from '@aggdirect/coolmap-services';\r\n\r\n@Component({\r\n selector: 'app-sms-card-details-overview',\r\n templateUrl: './sms-card-details-overview.component.html',\r\n styleUrls: ['./sms-card-details-overview.component.scss']\r\n})\r\nexport class SmsCardDetailsOverviewComponent {\r\n @Input() public jobValue: any;\r\n label = DriversmsCardKey;\r\n overViewEnum: any = DriverSmsCardEnum;\r\n constructor() { }\r\n\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { Route, UtilsService } from '@aggdirect/coolmap-services';\r\n\r\n@Component({\r\n selector: 'app-job-code-list-card',\r\n templateUrl: './job-code-list-card.component.html',\r\n styleUrls: ['./job-code-list-card.component.scss']\r\n})\r\nexport class JobCodeListCardComponent {\r\n @Input() public route!: Route;\r\n @Output() public routeSeletion = new EventEmitter();\r\n @Output() public toggleDrivermenu = new EventEmitter();\r\n @Input() public emitJobdetails: any;\r\n @Input() public preventCloseDetails!: boolean;\r\n constructor(public utils: UtilsService) { }\r\n\r\n selectRoute(route: Route) { this.routeSeletion.emit(route) }\r\n toggleDriverlist(mouseevntType: boolean | string, route: Route, isHoverOut?: boolean) {\r\n const data = { mouseevntType, route, isHoverOut }\r\n this.toggleDrivermenu.emit(data);\r\n if (mouseevntType === 'click') this.utils.setdictValue('driver-details', JSON.stringify(this.route));\r\n }\r\n toggleJobCodeDetails(mouseEventType: boolean, route: Route) {\r\n if (mouseEventType) { route['type'] = 'jobcode'; this.emitJobdetails.emitroute.emit(route) }\r\n else if(!mouseEventType && this.preventCloseDetails){\r\n route = this.utils.getdictValue('route-details');\r\n route['type'] = 'jobcode'; this.emitJobdetails.emitroute.emit(route)\r\n }\r\n else if (!mouseEventType && !this.preventCloseDetails) this.emitJobdetails.clearJobDetailsFromList.emit(true);\r\n }\r\n calculateStatusPercentage(type: string, route: any) {\r\n const total = route['Done'] + route['Ongoing'] + route['Open'];\r\n if (type === 'done') { return Math.round((100 * route['Done']) / total) }\r\n else if (type === 'ongoing') { return Math.round((100 * route['Ongoing']) / total) }\r\n else if (type === 'open') { return Math.round((100 * route['Open']) / total) }\r\n else { return null }\r\n }\r\n setRouteItem(){\r\n this.utils.preVentJobdetailclose.next(true);\r\n this.utils.setdictValue('route-details', JSON.stringify(this.route));\r\n }\r\n}\r\n","import { SelectionModel } from '@angular/cdk/collections';\r\nimport { Component, OnInit, Input, Output, EventEmitter, OnDestroy } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport {takeUntil} from 'rxjs/operators';\r\nimport { CoolmapService, Route, UtilsService } from '@aggdirect/coolmap-services';\r\n\r\n@Component({\r\n selector: 'app-job-code',\r\n templateUrl: './job-code.component.html',\r\n styleUrls: ['./job-code.component.scss']\r\n})\r\nexport class JobCodeComponent implements OnInit, OnDestroy {\r\n @Input() public jobdetail!: any;\r\n isVisible: boolean = false;\r\n routes: Route[] = [];\r\n public selectedRoute = new SelectionModel<any>(true, [])\r\n @Output() public clearJobDetails = new EventEmitter(); isOverlapRouteSection = false;\r\n public destroyer$ = new Subject<boolean>();\r\n detailsCardEnable: boolean | string;\r\n preventMouseout: boolean = false;\r\n routeCardDetail: Route;\r\n preventListUpdate: boolean;\r\n masterRoutes: any;\r\n\r\n constructor(public utils: UtilsService, public coolMap: CoolmapService) {\r\n this.utils.clearViewRouteforJobCodeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => {\r\n if (res) this.coolMap.removeJobFromMap(this.selectedRoute.selected); this.selectedRoute.clear();\r\n });\r\n }\r\n\r\n ngOnInit(): void { this.getRouteList() }\r\n getRouteList() {\r\n this.utils.getData('coolmap/routes/all').pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n if (res) {\r\n this.routes = res.data;\r\n this.masterRoutes = res.data;\r\n this.preventListUpdate = false;\r\n this.utils.clearOptions();\r\n this.routes.forEach((ele: Route) => { this.utils.makeOptions(ele) });\r\n }\r\n })\r\n }\r\n toggleSidemenu() {\r\n this.isVisible = !this.isVisible;\r\n this.detailsCardEnable = false;\r\n this.preventMouseout = false\r\n }\r\n clearJob() { this.clearJobDetails.emit(true); this.utils.preVentJobdetailclose.next(false) }\r\n selectRoute(event: Route) {\r\n const i = this.selectedRoute.selected.findIndex(ele => ele['order_number'] === event['order_number']);\r\n this.selectedRoute.toggle(event);\r\n if (!this.selectedRoute.isSelected(event) && event['route_id']) {\r\n this.coolMap.removeRouteAndMarker(event['route_id']).then((res: any) => {\r\n this.coolMap.extendReBound();\r\n });\r\n } else {\r\n this.coolMap.plotRoute(event, event['route_id'], 'jobrouteList', false, true);\r\n }\r\n }\r\n masterToggle() {\r\n if (this.routes.length === this.selectedRoute.selected.length) {\r\n this.selectedRoute.clear();\r\n this.routes.forEach(row => {\r\n this.coolMap.removeRouteAndMarker(row['route_id']).then((res: any) => { this.coolMap.extendReBound() })\r\n });\r\n } else {\r\n this.routes.forEach(row => {\r\n this.selectedRoute.select(row);\r\n this.coolMap.plotRoute(row, row['route_id'], 'jobrouteList', false, true);\r\n });\r\n }\r\n }\r\n togglerouteDetails(eventType: string | boolean, route: Route, mouseOut?: boolean) {\r\n if (typeof (eventType) === 'string') {\r\n this.preventMouseout = true; this.utils.setdictValue('route-details', JSON.stringify(route));\r\n }\r\n if (typeof (eventType) === 'boolean' && eventType && !this.preventMouseout) { this.detailsCardEnable = eventType };\r\n if (typeof (eventType) === 'boolean' && !eventType && !this.preventMouseout) { this.detailsCardEnable = eventType };\r\n if (this.preventMouseout && !this.detailsCardEnable) this.preventMouseout = false;\r\n if (mouseOut) {\r\n if (this.preventMouseout) {\r\n route = this.utils.getdictValue('route-details');\r\n this.routeCardDetail = route;\r\n }\r\n if (!this.preventMouseout) {\r\n this.routeCardDetail = route\r\n }\r\n } else {\r\n this.routeCardDetail = route\r\n }\r\n this.routeCardDetail['created_at'] = this.utils.getDateFormat(new Date(this.routeCardDetail['created_at']), '/');\r\n }\r\n ngOnDestroy(): void {\r\n this.destroyer$.next(true);\r\n this.destroyer$.unsubscribe();\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { Route } from '@aggdirect/coolmap-services';\r\n\r\n@Component({\r\n selector: 'app-jobcode-status',\r\n templateUrl: './jobcode-status.component.html',\r\n styleUrls: ['./jobcode-status.component.scss']\r\n})\r\nexport class JobcodeStatusComponent {\r\n @Input() public jobValue!: Route\r\n constructor() { }\r\n}\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { CoolmapService, Route, UtilsService } from '@aggdirect/coolmap-services';\r\nimport { Observable } from 'rxjs';\r\nimport {startWith, map} from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n selector: 'app-job-route-list',\r\n templateUrl: './job-route-list.component.html',\r\n styleUrls: ['./job-route-list.component.scss']\r\n})\r\nexport class JobRouteListComponent {\r\n @Output() public changeNav = new EventEmitter<string | any>();\r\n filteredOptions!: Observable<any[]> | undefined;\r\n preventListUpdate: boolean;\r\n filterForm = new FormGroup({ search: new FormControl() });\r\n filters: any[];\r\n @Input() public routes: Route[];\r\n @Input() public selectedRoute;\r\n @Output() public changeRoutes = new EventEmitter<string | any>();\r\n @Output() public changeSelectedRoute = new EventEmitter<string | any>();\r\n @Input() public masterRoutes: Route[];\r\n\r\n constructor(public utils: UtilsService, public coolMap: CoolmapService) {\r\n this.filters = [];\r\n this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(startWith(''),\r\n map(value => this.utils.filter(value, this.filters)));\r\n }\r\n\r\n filterSearch(e: any): void {\r\n this.changeNav.emit({ type: 'Addroute' });\r\n this.preventListUpdate = true;\r\n this.filterForm.controls.search.setValue(null);\r\n this.filters = [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value }];\r\n const filteredRoutes = this.utils.getSearchResults(this.masterRoutes, [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value }]);\r\n this.changeRoutes.emit(filteredRoutes);\r\n this.selectedRoute.selected.forEach((item: any) => {\r\n const routeData = filteredRoutes.find(x => x.route_id === item.route_id);\r\n if (!routeData) {\r\n this.selectedRoute.toggle(item);\r\n this.changeSelectedRoute.emit(this.selectedRoute);\r\n this.coolMap.removeRouteAndMarker(item['route_id']).then((res: any) => {\r\n this.coolMap.extendReBound();\r\n });\r\n }\r\n })\r\n }\r\n\r\n removeFromFilter(filter: any): void {\r\n this.changeNav.emit({ type: 'Addroute' });\r\n const index = this.filters.indexOf(filter);\r\n if (index >= 0) { this.filters = []; this.changeRoutes.emit(this.masterRoutes); }\r\n }\r\n}\r\n\r\n","import { Component, Input } from '@angular/core';\r\nimport { JobCodeOverviewData, JobCodeOverviewEnum } from '@aggdirect/coolmap-services';\r\n\r\n@Component({\r\n selector: 'app-jobcode-overview',\r\n templateUrl: './jobcode-overview.component.html',\r\n styleUrls: ['./jobcode-overview.component.scss']\r\n})\r\nexport class JobcodeOverviewComponent {\r\n @Input() public jobValue: any;\r\n label = JobCodeOverviewData;\r\n overViewEnum: any = JobCodeOverviewEnum;\r\n constructor() { }\r\n\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport {MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog';\r\n@Component({\r\n selector: 'app-dialog',\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss']\r\n})\r\nexport class DialogComponent {\r\n body = 'Are you sure you want to delete?';\r\n positive = 'Delete';\r\n negative = 'Cancel';\r\n constructor(public dialogRef: MatDialogRef<DialogComponent>, @Inject(MAT_DIALOG_DATA) public data: any) {\r\n ['body', 'positive', 'negative'].map(elem => {\r\n if (this.data[elem] !== undefined) { this[elem] = this.data[elem] }\r\n });\r\n }\r\n onClose(result: boolean) { this.dialogRef.close(result) }\r\n}\r\n","import { Component, ElementRef, OnInit, ViewChild, Output, EventEmitter, SimpleChanges, OnChanges, Input, OnDestroy } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { fromEvent, Observable, Subject } from 'rxjs';\r\nimport {startWith, map, debounceTime, distinctUntilChanged, takeUntil} from 'rxjs/operators';\r\n\r\nimport {MatDialog} from '@angular/material/dialog';\r\nimport { CoolmapService, Route, UtilsService } from '@aggdirect/coolmap-services';\r\nimport { DialogComponent } from '../shared/dialog/dialog.component';\r\n\r\n\r\n@Component({\r\n selector: 'app-add-route',\r\n templateUrl: './add-route.component.html',\r\n styleUrls: ['./add-route.component.scss']\r\n})\r\nexport class AddRouteComponent implements OnInit, OnChanges, OnDestroy {\r\n @ViewChild('filterPickup') public filterPickup!: ElementRef;\r\n @ViewChild('filterDelivery') public filterDelivery!: ElementRef;\r\n @Output() public changeNav = new EventEmitter<string>();\r\n @Output() public updateRouteList = new EventEmitter<boolean>();\r\n pickupOptions: any = [];\r\n deliveryOptions: any = [];\r\n requestParmsForRouteDetails = { pickup_lat_lng: '', delivery_lat_lng: '' }\r\n customersList: any = [];\r\n unitsList: any = [];\r\n materialsList: any = [];\r\n addRouteForm!: FormGroup;\r\n @Input() public routeData!: Route;\r\n @Input() public portalName!: string;\r\n routeId: string | null | undefined;\r\n preventSave: boolean = false;\r\n preventInitialSave: boolean = false;\r\n customersList$!: Observable<any>;\r\n routeDetails!: { pickup_location: string | null | undefined; delivery_location: string | null | undefined; } | null;\r\n public destroyer$ = new Subject<boolean>();\r\n popupDetails: Route;\r\n enablePopUp: boolean = false;\r\n prevantPopupClose = false;\r\n enableForm: boolean = false;\r\n\r\n constructor(public coolMapService: CoolmapService, public utils: UtilsService, public dialog: MatDialog) { \r\n this.formInit();\r\n this.utils.getrouteDetailsUtility.subscribe(res => {\r\n if (res) {\r\n if (res['event'] !== 'click' && !this.prevantPopupClose) { this.enablePopUp = res['event'] }\r\n else if (this.enablePopUp && !this.prevantPopupClose) { this.prevantPopupClose = true; }\r\n if (res['event'] !== 'click' && !res['event'] && this.prevantPopupClose) {\r\n this.popupDetails = this.utils.getdictValue('route-detailsv2');\r\n } else { this.popupDetails = res['route'] }\r\n if (this.enablePopUp) this.popupDetails['created_at'] = this.utils.getDateFormat(new Date(this.popupDetails['created_at']), '/');\r\n }\r\n });\r\n }\r\n filterCustomerList() {\r\n this.customersList$ = this.addRouteForm.controls['customer_name'].valueChanges.pipe(\r\n startWith(''),\r\n map(value => this._filter(value || '')),\r\n );\r\n }\r\n public _filter(value: string): string[] {\r\n const filterValue = value.toLowerCase();\r\n return this.customersList.filter((option: any) => option['customer_name'].toLowerCase().includes(filterValue));\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['routeData'] && !changes['routeData']['currentValue']) this.inIt(null);\r\n }\r\n openDialog(): void {\r\n const dialogRef = this.dialog.open(DialogComponent, {\r\n data: { body: 'Are you sure you want to delete this route?' },\r\n });\r\n dialogRef.afterClosed().subscribe(res => { if (res) { this.deleteRoute() } });\r\n }\r\n editEvent(){\r\n this.prevantPopupClose = false;\r\n this.enableForm = true; this.enablePopUp = false;\r\n this.popupDetails['prevent'] = false;\r\n this.utils.removeMapEntity.next(this.popupDetails);\r\n this.inIt(this.popupDetails);\r\n }\r\n inIt(changes: Route) {\r\n if (changes) {\r\n if (!changes['prevent']) {\r\n this.preventSave = false;\r\n this.formControlValue();\r\n this.patchFormValue(changes); this.checkAndFetchRouteInformation(true)\r\n }\r\n }\r\n if (!changes) { this.enableForm = true; this.preventSave = true; this.patchFormValue(); this.checkAndFetchRouteInformation() }\r\n }\r\n ngOnInit(): void {\r\n this.fetchCustomersList();\r\n this.fetchUnitsList();\r\n this.fetchMaterialsList();\r\n this.formControlValue();\r\n }\r\n\r\n ngAfterViewInit() {\r\n fromEvent(this.filterPickup.nativeElement, 'keyup').pipe(\r\n distinctUntilChanged(), debounceTime(150)).pipe(takeUntil(this.destroyer$)).subscribe(() => {\r\n this.utils.fetchAutoCompleteLocations(this.filterPickup.nativeElement.value).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n this.pickupOptions = res.features;\r\n });\r\n });\r\n\r\n fromEvent(this.filterDelivery.nativeElement, 'keyup').pipe(\r\n distinctUntilChanged(), debounceTime(150)).pipe(takeUntil(this.destroyer$)).subscribe(() => {\r\n this.utils.fetchAutoCompleteLocations(this.filterDelivery.nativeElement.value).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n this.deliveryOptions = res.features;\r\n });\r\n });\r\n }\r\n\r\n formControlValue() {\r\n this.addRouteForm.controls['pickup_location']?.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n if (this.addRouteForm.value.pickup_location && res !== this.addRouteForm.value.pickup_location) {\r\n this.addRouteForm.patchValue({\r\n pickup_lat_lng: '',\r\n });\r\n this.addRouteForm.controls['pickup_lat_lng'].markAsTouched();\r\n }\r\n });\r\n\r\n this.addRouteForm.controls['delivery_location']?.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n if (this.addRouteForm.value.delivery_location && res !== this.addRouteForm.value.delivery_location) {\r\n this.addRouteForm.patchValue({\r\n delivery_lat_lng: '',\r\n });\r\n this.addRouteForm.controls['delivery_lat_lng'].markAsTouched();\r\n }\r\n });\r\n }\r\n\r\n formInit() {\r\n this.addRouteForm = new FormGroup({\r\n route_name: new FormControl('', [Validators.required]),\r\n customer_name: new FormControl({value: '', disabled: true}, [Validators.required]),\r\n materials_id: new FormControl('', [Validators.required]),\r\n unit_id: new FormControl('', [Validators.required]),\r\n path: new FormControl('', [Validators.required]),\r\n pickup_location: new FormControl('', [Validators.required]),\r\n pickup_lat_lng: new FormControl('', [Validators.required]),\r\n delivery_location: new FormControl('', [Validators.required]),\r\n delivery_lat_lng: new FormControl('', [Validators.required]),\r\n estimated_distance: new FormControl('', [Validators.required]),\r\n estimated_time: new FormControl('', [Validators.required]),\r\n note: new FormControl('', [Validators.maxLength(2048)]),\r\n });\r\n }\r\n\r\n patchFormValue(data?: Route) {\r\n this.addRouteForm.reset();\r\n this.addRouteForm.patchValue(data!);\r\n this.routeId = data?.route_id;\r\n this.routeDetails = data ? { pickup_location: data.pickup_location, delivery_location: data.delivery_location } : null;\r\n this.addRouteForm.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe(res => {\r\n if (res) { if (this.preventInitialSave) this.preventInitialSave = false }\r\n });\r\n this.filterCustomerList();\r\n }\r\n\r\n fetchCustomersList() {\r\n this.utils.getData(`${this.portalName}/company/list/view`).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n if (res) { this.customersList = res.data; this.filterCustomerList(); this.addRouteForm.controls['customer_name'].enable(); }\r\n })\r\n }\r\n\r\n fetchUnitsList() {\r\n this.utils.getData(`${this.portalName}/unit/list/view`).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n if (res) { this.unitsList = res.data }\r\n })\r\n }\r\n\r\n fetchMaterialsList() {\r\n this.utils.getData(`${this.portalName}/material/list/view`).pipe(takeUntil(this.destroyer$)).subscribe(((res: any) => {\r\n res.data.sort((a: any, b: any) => a.material.localeCompare(b.material))\r\n this.materialsList = res.data\r\n }))\r\n }\r\n\r\n selectedLongLat(type: string, event: any) {\r\n if (type === 'pickup') {\r\n this.addRouteForm.patchValue({\r\n pickup_lat_lng: (event.geometry.coordinates[1] + ',' + event.geometry.coordinates[0]).toString()\r\n });\r\n this.coolMapService.clearBoundWithCordinates();\r\n } else if (type === 'delivery') {\r\n this.addRouteForm.patchValue({\r\n delivery_lat_lng: (event.geometry.coordinates[1] + ',' + event.geometry.coordinates[0]).toString()\r\n })\r\n }\r\n this.checkAndFetchRouteInformation();\r\n }\r\n\r\n checkAndFetchRouteInformation(isinitial?: boolean) {\r\n if (this.addRouteForm.value?.delivery_lat_lng?.length > 0 && this.addRouteForm.value?.pickup_lat_lng?.length > 0 && this.addRouteForm.value.unit_id) {\r\n let unit = this.unitsList.find((x: any) => x.id === this.addRouteForm.value.unit_id);\r\n const param = {\r\n delivery_lat_lng: this.addRouteForm.value.delivery_lat_lng,\r\n pickup_lat_lng: this.addRouteForm.value.pickup_lat_lng,\r\n unit: unit?.type\r\n };\r\n this.utils.postdata('coolmap/calculate/routes/estimation', param).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n if (res && res['path']) {\r\n this.addRouteForm.patchValue({\r\n estimated_distance: res.dist, estimated_time: res.time, path: res.path\r\n });\r\n let path = res['path'].split(';');\r\n path = path.map((ele: string | any) => { return ele = this.formateLatLong(ele) });\r\n res['path'] = path;\r\n const element: any = {\r\n type: 'FeatureCollection',\r\n features: [{ type: 'Feature', properties: {}, geometry: { type: 'LineString', coordinates: res['path'] } }]\r\n }\r\n this.coolMapService.removeRouteAndMarker(1).then(() => {\r\n const unit = this.unitsList.find((x: any) => x.id === this.addRouteForm.value.unit_id);\r\n const materialDetails = this.materialsList.find((x: any) => x.material_id === this.addRouteForm.value.materials_id);\r\n this.coolMapService.loadMapProperty(element, 1, unit?.type,\r\n {\r\n pickup_location: this.addRouteForm.get('pickup_location')?.value,\r\n delivery_location: this.addRouteForm.get('delivery_location')?.value,\r\n route_name: this.addRouteForm.get('route_name')?.value,\r\n material: materialDetails?.material, unit: unit?.type\r\n }).then((res) =>{this.preventSave = true});\r\n });\r\n } else {\r\n this.coolMapService.removeRouteAndMarker(1);\r\n this.utils.openSnackBar(res['status'], 'error');\r\n }\r\n if (this.routeId && isinitial) this.preventInitialSave = true;\r\n });\r\n } else { this.coolMapService.removeRouteAndMarker(1) }\r\n }\r\n\r\n formateLatLong(latlong: string) { return latlong ? latlong.split(',').map(x => +x).reverse() : null }\r\n saveRoute() {\r\n if (this.addRouteForm.valid) {\r\n this.preventSave = false;\r\n const data = this.addRouteForm.value;\r\n data['trucker_pay_estimate'] = null;\r\n data['customer_price_estimate'] = null;\r\n const url = this.routeId ? this.utils.postdata('coolmap/update/routes', data) : this.utils.postdata('coolmap/add/routes', data)\r\n if (this.routeId) data['id'] = this.routeId;\r\n url.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n if (res.success) {\r\n this.updateRouteList.emit(true);\r\n this.utils.openSnackBar(res.message, 'success');\r\n this.preventInitialSave = true;\r\n this.preventSave = true;\r\n if(!this.routeId)this.changeNav.next('Addroute');\r\n } else {\r\n this.utils.openSnackBar(res.message, 'error');\r\n this.preventSave = true;\r\n }\r\n }, (err) => { if (err) { this.preventSave = true; } });\r\n } else {\r\n this.addRouteForm.markAllAsTouched();\r\n }\r\n }\r\n deleteRoute() {\r\n this.preventSave = false;\r\n this.utils.postdata('coolmap/delete/routes', { uuid: this.routeId }).subscribe(res => {\r\n if (res['data']['success']) {\r\n this.utils.openSnackBar(res['data']['message'], 'success');\r\n this.updateRouteList.emit(true);\r\n this.changeNav.next('Addroute');\r\n this.preventInitialSave = true;\r\n this.preventSave = true;\r\n } else {\r\n this.utils.openSnackBar('Somthing went wrong', 'error');\r\n this.preventSave = true;\r\n }\r\n }, (err) =>{this.preventSave = true})\r\n }\r\n ngOnDestroy(): void {\r\n this.destroyer$.next(true);\r\n this.destroyer$.unsubscribe();\r\n }\r\n}\r\n","import { Component, EventEmitter, Output, Input, SimpleChanges, OnDestroy } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { Route, UtilsService } from '@aggdirect/coolmap-services';\r\nimport { Observable } from 'rxjs';\r\ninterface Filter {\r\n name?: string;\r\n type: string;\r\n value: any;\r\n label?: string;\r\n}\r\nimport { Subject } from 'rxjs';\r\nimport {startWith, map, takeUntil} from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n selector: 'app-add-route-nav',\r\n templateUrl: './add-route-nav.component.html',\r\n styleUrls: ['./add-route-nav.component.scss']\r\n})\r\n\r\nexport class AddRouteNavComponent implements OnDestroy {\r\n filterForm = new FormGroup({ search: new FormControl() });\r\n filteredOptions!: Observable<any[]> | undefined;\r\n filters: Filter[] = [];\r\n loaderVal = false;\r\n routes: Route[] = [];\r\n @Output() public changeNav = new EventEmitter<string | any>();\r\n @Input() public navValue: string = '';\r\n @Output() public addemit = new EventEmitter();\r\n @Input() public updateRouteList: boolean = false;\r\n public destroyer$ = new Subject<boolean>();\r\n preventListUpdate: boolean = false;\r\n constructor(public utils: UtilsService) {\r\n this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(startWith(''),\r\n map(value => this.utils.filter(value, this.filters)));\r\n }\r\n\r\n showAddForm() { this.changeNav.emit('addForm'); this.addemit.emit('') }\r\n filterSearch(e: any): void {\r\n this.changeNav.emit({type: 'Addroute'});\r\n this.preventListUpdate = true;\r\n this.filterForm.controls.search.setValue(null);\r\n this.filters = [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value }]\r\n }\r\n removeFromFilter(filter: any): void {\r\n this.changeNav.emit({type: 'Addroute'});\r\n const index = this.filters.indexOf(filter);\r\n if (index >= 0) { this.filters = [] }\r\n }\r\n ngAfterViewInit(): void { this.getRouteList() }\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['updateRouteList'] && changes['updateRouteList']['currentValue']) this.getRouteList();\r\n if(changes['navValue'] && (changes['navValue']['previousValue'] === 'addForm') && !this.preventListUpdate) this.getRouteList();\r\n }\r\n getRoute(event: Route) { if (event['type'] === 'editroute') { this.addemit.emit(event) } }\r\n getRouteList() {\r\n this.utils.getData('coolmap/routes/all').pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n if (res) {\r\n this.filters = [];\r\n this.routes = res['data']\r\n this.preventListUpdate = false;\r\n this.utils.clearOptions();\r\n this.routes.forEach((ele: Route) => { this.utils.makeOptions(ele) });\r\n }\r\n });\r\n }\r\n resetSearch() { this.changeNav.emit('Addroute') }\r\n ngOnDestroy(): void {\r\n this.destroyer$.next(true);\r\n this.destroyer$.unsubscribe();\r\n }\r\n}\r\n","import { Component, OnInit, EventEmitter, Output, OnDestroy } from '@angular/core';\r\nimport { MatDatepickerInputEvent } from '@angular/material/datepicker';\r\nimport { Observable } from 'rxjs';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\ninterface Filter { name?: string; type: string; value: any; label?: string; }\r\nimport { Subject } from 'rxjs';\r\nimport { Route, UtilsService } from '@aggdirect/coolmap-services';\r\nimport {startWith, map, takeUntil} from 'rxjs/operators';\r\n\r\n\r\n@Component({\r\n selector: 'app-job-code-nav',\r\n templateUrl: './job-code-nav.component.html',\r\n styleUrls: ['./job-code-nav.component.scss']\r\n})\r\nexport class JobCodeNavComponent implements OnInit, OnDestroy {\r\n filterForm = new FormGroup({ search: new FormControl() });\r\n listData: Route[] = [];\r\n loaderVal: boolean = false;\r\n dateValue = new Date();\r\n @Output() public jobemit = new EventEmitter();\r\n value = '';\r\n filteredOptions!: Observable<any[]> | undefined;\r\n filters: Filter[] = [];\r\n @Output() public clearJobDetails = new EventEmitter();\r\n public destroyer$ = new Subject<boolean>();\r\n\r\n constructor(public utils: UtilsService) {\r\n utils.navChangeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => {\r\n if (res) { this.loaderVal = false } else this.loaderVal = true\r\n });\r\n }\r\n ngOnInit(): void { this.loadData(this.utils.getDateFormat(new Date())) }\r\n loadData(value: string) {\r\n this.filteredOptions = this.filterForm.get('search')?.valueChanges.pipe(startWith(''),\r\n map(value => this.utils.filter(value, this.filters)),\r\n );\r\n this.utils.preventnavChange.next(false);\r\n this.loaderVal = true;\r\n this.utils.postdata('coolmap/jobs_report_v2', { date: value }).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {\r\n if (typeof res['data'] !== 'string') {\r\n if (res['data'].length > 0) this.listData = res['data'].map((ele: Route) => {ele['date'] = value; return ele});\r\n this.listData.forEach((ele: Route) => { this.utils.makeOptions(ele) });\r\n } else this.listData = [];\r\n this.clearJobDetails.emit(true);\r\n this.utils.clearViewRouteforJobCode.next(true);\r\n this.filters = [];\r\n if (typeof res['data'] === 'string') this.utils.preventnavChange.next(true);\r\n }, (err) => { if (err) this.utils.preventnavChange.next(true) });\r\n }\r\n getRoute(job: Route) { if(job['type'] === 'jobcode'){ this.jobemit.emit(job)} }\r\n getDate(ev: MatDatepickerInputEvent<Date>){this.loadData(this.utils.getDateFormat(ev.value))}\r\n filterSearch(e: any): void {\r\n this.filterForm.controls.search.setValue(null);\r\n this.filterForm.controls.search.updateValueAndValidity();\r\n this.filters = [{ name: e.source.value.label, type: e.source.value.type, value: e.source.value}]\r\n }\r\n removeFromFilter(filter: any): void {\r\n const index = this.filters.indexOf(filter);\r\n if (index >= 0) { this.filters = [] }\r\n }\r\n ngOnDestroy(): void {\r\n this.destroyer$.next(true);\r\n this.destroyer$.unsubscribe();\r\n }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { EstinationEnum, EstinationData } from '@aggdirect/coolmap-services';\r\n\r\n@Component({\r\n selector: 'app-estimation-display',\r\n templateUrl: './estimation-display.component.html',\r\n styleUrls: ['./estimation-display.component.scss']\r\n})\r\nexport class EstimationDisplayComponent {\r\n @Input() value!: any;\r\n label = EstinationData;\r\n Estinationlabel: any = EstinationEnum;\r\n constructor() { }\r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CoolmapComponent } from './coolmap.component';\r\nimport { MapComponent } from './component/map/map.component';\r\nimport { NavComponent } from './component/nav/nav.component';\r\n\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { CommonModule } from '@angular/common';\r\nimport {MatTooltipModule} from '@angular/material/tooltip';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatNativeDateModule, MatPseudoCheckboxModule } from '@angular/material/core';\r\nimport { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport {MatProgressBarModule} from '@angular/material/progress-bar';\r\nimport { RouteJobCodeListComponent } from './component/route-jobcode-list/route-jobcode-list.component';\r\nimport { ViewRouteListCardComponent } from './component/route-jobcode-list/view-route-list-card/view-route-list-card.component';\r\nimport { SmsCardDetailsOverviewComponent } from './component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component';\r\nimport { JobCodeListCardComponent } from './component/route-jobcode-list/job-code-list-card/job-code-list-card.component';\r\nimport { JobCodeComponent } from './component/job-code/job-code.component';\r\nimport { JobcodeStatusComponent } from './component/shared/jobcode-status/jobcode-status.component';\r\nimport { JobRouteListComponent } from './component/shared/job-route-list/job-route-list.component';\r\nimport { JobcodeOverviewComponent } from './component/shared/jobcode-overview/jobcode-overview.component';\r\nimport { DialogComponent } from './component/shared/dialog/dialog.component';\r\nimport { AddRouteComponent } from './component/add-route/add-route.component';\r\nimport { AddRouteNavComponent } from './component/nav/layout/add-route-nav/add-route-nav.component';\r\nimport { JobCodeNavComponent } from './component/nav/layout/job-code-nav/job-code-nav.component';\r\nimport { EstimationDisplayComponent } from './component/shared/estimation-display/estimation-display.component';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n CoolmapComponent,\r\n MapComponent,\r\n NavComponent,\r\n AddRouteNavComponent,\r\n JobCodeNavComponent,\r\n RouteJobCodeListComponent,\r\n ViewRouteListCardComponent,\r\n SmsCardDetailsOverviewComponent,\r\n JobCodeListCardComponent,\r\n JobCodeComponent,\r\n JobRouteListComponent,\r\n JobcodeStatusComponent,\r\n JobcodeOverviewComponent,\r\n DialogComponent,\r\n AddRouteComponent,\r\n EstimationDisplayComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n MatSnackBarModule,\r\n MatSidenavModule,\r\n DragDropModule,\r\n FormsModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatIconModule,\r\n ReactiveFormsModule,\r\n MatAutocompleteModule,\r\n MatFormFieldModule,\r\n MatProgressSpinnerModule,\r\n MatChipsModule,\r\n MatDialogModule,\r\n MatTooltipModule,\r\n MatDatepickerModule,\r\n MatNativeDateModule,\r\n PerfectScrollbarModule,\r\n MatPseudoCheckboxModule,\r\n MatButtonModule,\r\n MatProgressBarModule,\r\n ],\r\n exports: [\r\n CoolmapComponent,\r\n MapComponent,\r\n NavComponent,\r\n AddRouteNavComponent,\r\n JobCodeNavComponent,\r\n RouteJobCodeListComponent,\r\n ViewRouteListCardComponent,\r\n SmsCardDetailsOverviewComponent,\r\n JobCodeListCardComponent,\r\n JobCodeComponent,\r\n JobRouteListComponent,\r\n JobcodeStatusComponent,\r\n JobcodeOverviewComponent,\r\n DialogComponent,\r\n AddRouteComponent,\r\n EstimationDisplayComponent\r\n ],\r\n entryComponents: [\r\n DialogComponent,\r\n JobCodeComponent,\r\n AddRouteComponent\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class CoolmapModule { }\r\n"]}
package/coolmap.d.ts DELETED
@@ -1,5 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- export { EstimationDisplayComponent as ɵa } from './lib/component/shared/estimation-display/estimation-display.component';
@@ -1 +0,0 @@
1
- {"__symbolic":"module","version":4,"metadata":{"CoolmapComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"lib-coolmap","template":"\n <p>\n coolmap works!\n </p>\n ","styles":[]}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"CoolmapModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":40,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"CoolmapComponent"},{"__symbolic":"reference","name":"MapComponent"},{"__symbolic":"reference","name":"NavComponent"},{"__symbolic":"reference","name":"AddRouteNavComponent"},{"__symbolic":"reference","name":"JobCodeNavComponent"},{"__symbolic":"reference","name":"RouteJobCodeListComponent"},{"__symbolic":"reference","name":"ViewRouteListCardComponent"},{"__symbolic":"reference","name":"SmsCardDetailsOverviewComponent"},{"__symbolic":"reference","name":"JobCodeListCardComponent"},{"__symbolic":"reference","name":"JobCodeComponent"},{"__symbolic":"reference","name":"JobRouteListComponent"},{"__symbolic":"reference","name":"JobcodeStatusComponent"},{"__symbolic":"reference","name":"JobcodeOverviewComponent"},{"__symbolic":"reference","name":"DialogComponent"},{"__symbolic":"reference","name":"AddRouteComponent"},{"__symbolic":"reference","name":"ɵa"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":60,"character":4},{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MatSnackBarModule","line":61,"character":4},{"__symbolic":"reference","module":"@angular/material/sidenav","name":"MatSidenavModule","line":62,"character":4},{"__symbolic":"reference","module":"@angular/cdk/drag-drop","name":"DragDropModule","line":63,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":64,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":65,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":66,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":67,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":68,"character":4},{"__symbolic":"reference","module":"@angular/material/autocomplete","name":"MatAutocompleteModule","line":69,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":70,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":71,"character":4},{"__symbolic":"reference","module":"@angular/material/chips","name":"MatChipsModule","line":72,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":73,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":74,"character":4},{"__symbolic":"reference","module":"@angular/material/datepicker","name":"MatDatepickerModule","line":75,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatNativeDateModule","line":76,"character":4},{"__symbolic":"reference","module":"ngx-perfect-scrollbar","name":"PerfectScrollbarModule","line":77,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatPseudoCheckboxModule","line":78,"character":4},{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":79,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-bar","name":"MatProgressBarModule","line":80,"character":4}],"exports":[{"__symbolic":"reference","name":"CoolmapComponent"},{"__symbolic":"reference","name":"MapComponent"},{"__symbolic":"reference","name":"NavComponent"},{"__symbolic":"reference","name":"AddRouteNavComponent"},{"__symbolic":"reference","name":"JobCodeNavComponent"},{"__symbolic":"reference","name":"RouteJobCodeListComponent"},{"__symbolic":"reference","name":"ViewRouteListCardComponent"},{"__symbolic":"reference","name":"SmsCardDetailsOverviewComponent"},{"__symbolic":"reference","name":"JobCodeListCardComponent"},{"__symbolic":"reference","name":"JobCodeComponent"},{"__symbolic":"reference","name":"JobRouteListComponent"},{"__symbolic":"reference","name":"JobcodeStatusComponent"},{"__symbolic":"reference","name":"JobcodeOverviewComponent"},{"__symbolic":"reference","name":"DialogComponent"},{"__symbolic":"reference","name":"AddRouteComponent"},{"__symbolic":"reference","name":"ɵa"}],"entryComponents":[{"__symbolic":"reference","name":"DialogComponent"},{"__symbolic":"reference","name":"JobCodeComponent"},{"__symbolic":"reference","name":"AddRouteComponent"}],"providers":[]}]}],"members":{}},"MapComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-map","template":"<div>\r\n <mat-progress-bar *ngIf=\"enableProgress\" mode=\"indeterminate\"></mat-progress-bar>\r\n <div #map class=\"coolmap\" style=\"height: 100vh;\"></div>\r\n</div>\r\n","styles":[""]}]}],"members":{"mapDiv":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":12,"character":3},"arguments":["map",{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"CoolmapService","line":16,"character":38}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"NavComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-nav","template":"<div class=\"nav\">\r\n <button (click)=\"openDrawer()\" class=\"toggle\">\r\n <img src=\"assets/images/toggle.svg\" alt=\"\" />\r\n </button>\r\n\r\n <ul class=\"m-100\">\r\n <li [ngClass]=\"{'active': navValue === 'Jobcode'}\">\r\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Job Code\" aria-label=\"Job-code\" (click)=\"chnageNav('Jobcode')\">\r\n <img src=\"assets/images/job-code.svg\" alt=\"\" />\r\n </a>\r\n </li>\r\n\r\n <li [ngClass]=\"{'active': navValue === 'Addroute', 'disabled': !isnavChange }\">\r\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"View Route\" aria-label=\"View-route\" (click)=\"chnageNav('Addroute')\">\r\n <img src=\"assets/images/route.svg\" alt=\"\" />\r\n </a>\r\n </li>\r\n </ul>\r\n</div>\r\n","styles":[".nav{background:#e8e8e8;height:100vh;padding:15px 0;display:flex;align-items:center;flex-direction:column}.nav button{background:#fff;border-radius:15px;padding:5px 6px}.nav button img{width:28px}.nav ul{display:flex;flex-direction:column;align-items:center}.nav ul li{margin:10px 0;padding:0 5px;border-right:2px solid #e8e8e8}.nav ul li:hover{border-right:2px solid #326ad3;padding:0 5px}.nav ul li.disabled a{pointer-events:none;opacity:.5}.nav ul li.disabled:hover{border-right:2px solid #e8e8e8}.nav ul li a{padding:6px 0;display:block;border-radius:15px;min-width:42px;box-shadow:none;line-height:30px}.nav ul li a img{width:27px}.nav ul li a:hover{background:#fff}.nav ul li a:hover img{filter:invert(.2) sepia(1) saturate(8) hue-rotate(180deg)}.nav ul li.active{border-right:2px solid #326ad3}.nav ul li.active a{background:#fff}"]}]}],"members":{"drawer":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":12,"character":3}}]}],"changeNav":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":13,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"UtilsService","line":20,"character":28},{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"CoolmapService","line":20,"character":58}]}],"openDrawer":[{"__symbolic":"method"}],"chnageNav":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"AddRouteNavComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"app-add-route-nav","template":"<div class=\"nav_body\">\r\n <div class=\"logo\">\r\n <img src=\"assets/images/logo.png\" alt=\"logo\" />\r\n </div>\r\n <div class=\"heading m-20\">\r\n <h1>View Route</h1>\r\n <button mat-raised-button color=\"primary\" (click)=\"showAddForm()\">\r\n <mat-icon>add_circle_outline</mat-icon> Add route\r\n </button>\r\n </div>\r\n\r\n <div class=\"search-panel\">\r\n <div class=\"w-100\">\r\n <form [formGroup]=\"filterForm\">\r\n <mat-form-field class=\"full-width\" [class.disabled]=\"loaderVal\">\r\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\"\r\n [disabled]=\"loaderVal\" placeholder=\"Search\">\r\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\r\n <button mat-button matSuffix mat-icon-button aria-label=\"Clear\" *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\"\r\n (click)=\"filterForm.reset()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\r\n [value]=\"option\">\r\n {{option.type | titlecase }}: {{option['label']}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </form>\r\n <div class=\"chip-list\">\r\n <mat-chip-list #chipList aria-label=\"Filter selection\">\r\n <mat-chip *ngFor=\"let filter of filters\" (removed)=\"removeFromFilter(filter)\">\r\n {{filter.type | titlecase }}: {{filter.name}}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n </div>\r\n </div>\r\n <app-route-jobcode-list [type]=\"'addroute'\" [currentNav]=\"navValue\" [searchTerm]=\"filters\" [data]=\"routes\" [loader]=\"loaderVal\" (emitroute)=\"getRoute($event)\"></app-route-jobcode-list>\r\n</div>\r\n","styles":[""]}]}],"members":{"changeNav":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":26,"character":3}}]}],"navValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"addemit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":28,"character":3}}]}],"updateRouteList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"UtilsService","line":32,"character":28}]}],"showAddForm":[{"__symbolic":"method"}],"filterSearch":[{"__symbolic":"method"}],"removeFromFilter":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"getRoute":[{"__symbolic":"method"}],"getRouteList":[{"__symbolic":"method"}],"resetSearch":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"JobCodeNavComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-job-code-nav","template":"<div class=\"nav_body\">\r\n <div class=\"search-panel\">\r\n <div class=\"datepicker\">\r\n <mat-form-field>\r\n <mat-label>Choose a date</mat-label>\r\n <input readonly matInput (click)=\"picker.open()\" [disabled]=\"loaderVal\" [(ngModel)]=\"dateValue\" [matDatepicker]=\"picker\" (dateChange)=\"getDate($event)\">\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"search\">\r\n <form [formGroup]=\"filterForm\">\r\n <mat-form-field class=\"full-width\" [class.disabled]=\"loaderVal\">\r\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\"\r\n [disabled]=\"loaderVal\" placeholder=\"Search\">\r\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\r\n <button mat-button matSuffix mat-icon-button aria-label=\"Clear\" *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\" (click)=\"filterForm.reset()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\r\n [value]=\"option\">\r\n {{option.type | titlecase }}: {{option['label']}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n </form>\r\n\r\n </div>\r\n\r\n <div class=\"chip-list\">\r\n <mat-chip-list #chipList aria-label=\"Filter selection\">\r\n <mat-chip *ngFor=\"let filter of filters\" (removed)=\"removeFromFilter(filter)\">\r\n {{filter.type | titlecase }}: {{filter.name}}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n </mat-chip-list>\r\n </div>\r\n </div>\r\n <app-route-jobcode-list [type]=\"'jobcode'\" [searchTerm]=\"filters\" [data]=\"listData\" [loader]=\"loaderVal\" (clearJobDetailsFromList)=\"clearJobDetails.emit(true)\" (showAllRoute)=\"filters = []; clearJobDetails.emit(true)\" (emitroute)=\"getRoute($event)\"></app-route-jobcode-list>\r\n</div>\r\n","styles":[".search-panel .datepicker,.search-panel .search{width:47%}"]}]}],"members":{"jobemit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":3}}]}],"clearJobDetails":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":24,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"UtilsService","line":27,"character":28}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"getRoute":[{"__symbolic":"method"}],"getDate":[{"__symbolic":"method"}],"filterSearch":[{"__symbolic":"method"}],"removeFromFilter":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"RouteJobCodeListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-route-jobcode-list","template":"<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\r\n [class.jobList]=\"visiblesection('jobcode')\">\r\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\r\n route</button>\r\n <perfect-scrollbar [class.jobscroll]=\"visiblesection('jobcode')\">\r\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\r\n <ul *ngIf=\"!loader && data.length > 0\">\r\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\r\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" (toggleDrivermenu)=\"toggleDrivermenu($event)\"\r\n (routeSeletion)=\"selectRoute($event)\" [preventCloseDetails]=\"preventDetailsClose\"\r\n [emitJobdetails]=\"{'emitroute': emitroute, 'clearJobDetailsFromList':clearJobDetailsFromList}\" [route]=\"checkroutes(route)\"></app-job-code-list-card>\r\n <app-view-route-list-card [emitrouteevent]=\"emitroute\" *ngIf=\"visiblesection('addroute')\"\r\n [route]=\"route\"></app-view-route-list-card>\r\n </li>\r\n </ul>\r\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\r\n </perfect-scrollbar>\r\n</div>\r\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\r\n <div class=\"driver_headingprt\">\r\n <h2>Driver List</h2>\r\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\r\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\r\n <mat-icon>clear</mat-icon>\r\n </div>\r\n </div>\r\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\r\n <li *ngFor=\"let driver of driverList?.driver_list\">\r\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\r\n <div class=\"driver_detail\">\r\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\r\n <div class=\"cont_del\">\r\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\r\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] :\r\n 'N/A'}}</b></small>\r\n </div>\r\n </div>\r\n </li>\r\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\r\n No Driver found\r\n </p>\r\n </ul>\r\n <div class=\"smslist\" *ngIf=\"isSmsList\">\r\n <div class=\"heading\">\r\n <h2>SMS All Drivers</h2>\r\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\r\n <mat-icon>clear</mat-icon>\r\n </div>\r\n </div>\r\n <div class=\"detailprt\">\r\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\r\n <div class=\"form_input\">\r\n <mat-form-field class=\"example-full-width\">\r\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\r\n [formControl]=\"driverMessage\"></textarea>\r\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\r\n </mat-form-field>\r\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\"\r\n (click)=\"sendMessage()\">\r\n Send SMS\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"loader\">\r\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\r\n </div>\r\n </div>\r\n</div>","styles":[".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid #fff;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";bottom:-9px;width:100%}.driver_list:after,.smslist{background:#fff;position:absolute}.smslist{width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px 0 rgba(0,0,0,.11);border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;border-radius:5%;position:absolute;top:8px;right:10px;background-color:initial;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 15px 0 10px;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left-width:3px;cursor:pointer;height:inherit}@media (min-width:2500px){.jobList ul li{height:7.65vh}}@media (min-width:3300px){.jobList ul li{height:5.61vh}}.viewroute ul{margin:0 15px;width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left-width:3px;cursor:pointer;height:16.4vh}@media (min-width:1600px){.viewroute ul li{height:12.4vh}}.viewroute ul li.active{border:1px solid #39c471;border-left-width:3px}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}"]}]}],"members":{"loader":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"currentNav":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"emitroute":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":15,"character":3}}]}],"showAllRoute":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":16,"character":3}}]}],"searchTerm":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"clearJobDetailsFromList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":24,"character":3}}]}],"clearListSeletion":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"CoolmapService","line":30,"character":30},{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"UtilsService","line":30,"character":60}]}],"ngOnInit":[{"__symbolic":"method"}],"passRoute":[{"__symbolic":"method"}],"selectRoute":[{"__symbolic":"method"}],"checkroutes":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"showRoute":[{"__symbolic":"method"}],"toggleDrivermenu":[{"__symbolic":"method"}],"visiblesection":[{"__symbolic":"method"}],"toggleFilterRoute":[{"__symbolic":"method"}],"clearList":[{"__symbolic":"method"}],"sendMessage":[{"__symbolic":"method"}]}},"ViewRouteListCardComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-view-route-list-card","template":"<div class=\"routebox\">\r\n <span>\r\n <mat-icon>directions</mat-icon>\r\n <h2 [ngClass]=\"{'routeheading': route['route_name']}\">\r\n {{route['route_name']}}\r\n </h2>\r\n </span>\r\n <h3>{{route['customer_name']}} | {{route['material']}}</h3>\r\n\r\n <div class=\"pickdropprt\">\r\n <div class=\"pickprt\">\r\n <b>\r\n <h4>{{route['pickup_location']}}</h4>\r\n </b>\r\n </div>\r\n <div class=\"dropprt\">\r\n <b>\r\n <h4>{{route['delivery_location']}}</h4>\r\n </b>\r\n </div>\r\n </div>\r\n <div class=\"infoicon\" (click)=\"detailsDict('click', route)\" (mouseover)=\"detailsDict(true, route)\"\r\n (mouseleave)=\"detailsDict(false, route)\">\r\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\r\n </div>\r\n <div class=\"status routestatus\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\r\n</div>\r\n\r\n\r\n\r\n","styles":[".routebox span{display:flex;align-items:center}.routebox span h2{margin-left:5px;max-width:180px;margin-bottom:5px;margin-top:5px;font-size:.95rem}.routebox h3,.routebox span h2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.routebox h3{font-size:.85rem;color:#767676;font-weight:400;margin-top:0;max-width:325px;margin-bottom:10px}.routebox .pickdropprt{font-size:.8125rem}.routebox .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:6px}.routebox .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.routebox .pickdropprt .pickprt b{position:relative;font-weight:400}.routebox .pickdropprt .pickprt b:after{background:#000;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.routebox .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:215px}@media (min-width:1600px){.routebox .pickdropprt .pickprt h4{max-width:265px}}.routebox .pickdropprt .pickprt h4:before{background:#000;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.routebox .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.routebox .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.routebox .pickdropprt .dropprt b{position:relative;font-weight:400}.routebox .pickdropprt .dropprt b:after{background:#000;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.routebox .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;max-width:215px}.routebox .pickdropprt .dropprt h4:before{background:#000;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.routebox .infoicon{position:absolute;right:10px;bottom:10px}.routebox .infoicon img{width:20px;height:20px}.routebox .status{position:absolute;border-radius:30px;top:12px;right:40px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;padding:3px 10px}.routebox .status.routestatus{right:10px;width:20px;height:20px;text-align:center;line-height:20px;padding:0 0 0 1px}.routebox .status.routestatus:first-letter{font-size:.8rem}@media (min-width:1600px){.routebox .status.routestatus{padding:0;line-height:22px}}.routebox .status.Ton{background:#ff7272}.routebox .status.Load{background:#a3c52e}.routebox .status.Hourly{background:#ae23d1}"]}]}],"members":{"route":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"emitrouteevent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"UtilsService","line":11,"character":28}]}],"detailsDict":[{"__symbolic":"method"}]}},"SmsCardDetailsOverviewComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-sms-card-details-overview","template":"<ng-container *ngFor=\"let item of label\">\r\n <span>\r\n <label>{{overViewEnum[item]}}</label>\r\n <ng-container *ngIf=\"item !== 'values'\">{{jobValue[item] ? jobValue[item] : 'N/A'}}</ng-container>\r\n <ng-container *ngIf=\"item === 'values'\">{{jobValue[item]['Done'] + jobValue[item]['Ongoing'] + jobValue[item]['Open']}}</ng-container>\r\n </span>\r\n</ng-container>\r\n","styles":["span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}span label{font-weight:600;width:37%}"]}]}],"members":{"jobValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}]}},"JobCodeListCardComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-job-code-list-card","template":"<div class=\"innerbox\">\r\n <div class=\"inputarea\">\r\n <input type=\"checkbox\" name=\"selectroute\" [checked]=\"route['isSelected']\" (change)=\"$event ? selectRoute(route) : null\" />\r\n <label>&nbsp;</label>\r\n <div class=\"border\"></div>\r\n </div>\r\n <div class=\"job_intro\">\r\n <div class=\"heading\">\r\n <h2>\r\n {{route['order_number'] ? route['order_number'] : ''}}\r\n </h2>\r\n |\r\n <span>\r\n {{route['customer_name']}}\r\n </span>\r\n |\r\n <span>\r\n {{route['project']}}\r\n </span>\r\n </div>\r\n <div class=\"destinationprt\">\r\n <span style=\"padding-left: 0;\">\r\n {{route['pickup_location']}}\r\n </span>\r\n <b>></b>\r\n <span>\r\n {{route['delivery_location']}}\r\n </span>\r\n </div>\r\n <div class=\"mat_cat\">\r\n <span>\r\n {{route['material']}}\r\n </span>\r\n </div>\r\n\r\n <div class=\"statusbar\">\r\n <div class=\"status_percent\">\r\n <span class=\"done\" [style]=\"'width:'+calculateStatusPercentage('done',route['values'])+'%'\"></span>\r\n <span class=\"ongoing\" [style]=\"'width:'+calculateStatusPercentage('ongoing', route['values'])+'%'\"> </span>\r\n <span class=\"open\" [style]=\"'width:'+calculateStatusPercentage('open', route['values'])+'%'\"> </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"statusarea\">\r\n <div class=\"statusunit\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\r\n <div class=\"driver_icon\" (mouseover)=\"toggleDriverlist(true, route)\" (mouseout)=\"toggleDriverlist(false, route, true)\"\r\n mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Click on icon to show the driver list\" matTooltipPosition=\"above\"\r\n (click)=\"toggleDriverlist('click', route)\">\r\n <img src=\"assets/images/driver_icon.png\" [alt]=\"\" />\r\n </div>\r\n <div class=\"infoicon\" (click)=\"setRouteItem()\" (mouseover)=\"toggleJobCodeDetails(true, route)\"\r\n (mouseout)=\"toggleJobCodeDetails(false, route)\">\r\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\r\n </div>\r\n </div>\r\n</div>\r\n","styles":[".innerbox{display:flex;justify-content:space-between}.innerbox .inputarea{display:flex;align-items:center;width:6%}.innerbox .inputarea input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.innerbox .inputarea input[type=checkbox]:checked+label{background:url(../../../../../assets/images/fill-radio.png) 10px 11px no-repeat}.innerbox .inputarea label{background:url(../../../../../assets/images/blank-radio.png) 10px 11px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.innerbox .inputarea .border{position:absolute;width:100%;height:100%;left:0;right:0;top:-1px;border-radius:15px}.innerbox .inputarea input:checked~.border{border:1px solid #39c471;border-left-width:3px}.innerbox .inputarea h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:214px;padding-left:16px;margin-bottom:5px;margin-top:0}.innerbox .job_intro{width:80%}.innerbox .job_intro .heading{display:flex;font-size:.8rem}.innerbox .job_intro .heading h2{margin:0 4px 0 0;font-size:.8rem}.innerbox .job_intro .heading span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100px;padding:0 3px;display:block}.innerbox .job_intro .destinationprt{display:flex;margin-top:10px;font-size:.8rem}.innerbox .job_intro .destinationprt span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:132px;padding:0 5px;display:block}.innerbox .job_intro .mat_cat{margin-top:10px;font-size:.8rem}.innerbox .job_intro .statusbar{width:100%;position:relative;height:5px;margin-top:10px}.innerbox .job_intro .statusbar .status_percent{position:absolute;left:0;display:flex;width:100%;height:100%}.innerbox .job_intro .statusbar .status_percent span{display:block}.innerbox .job_intro .statusbar .status_percent .done{background:green}.innerbox .job_intro .statusbar .status_percent .ongoing{background:#fc0}.innerbox .job_intro .statusbar .status_percent .open{background:#bfbfbf}.innerbox .statusarea{display:flex;flex-direction:column;align-items:center;width:10%}.innerbox .statusarea .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px}.innerbox .statusarea .statusunit:first-letter{font-size:.8rem}.innerbox .statusarea .statusunit.routestatus{right:10px}.innerbox .statusarea .statusunit.Ton{background:#39c471}.innerbox .statusarea .statusunit.Load{background:#326ad3}.innerbox .statusarea .statusunit.Hourly{background:#ffad56}.innerbox .statusarea .driver_icon,.innerbox .statusarea .infoicon{z-index:9999}.innerbox .statusarea .driver_icon img,.innerbox .statusarea .infoicon img{width:20px;height:20px}.innerbox .statusarea .driver_icon{margin:5px 0}"]}]}],"members":{"route":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"routeSeletion":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":10,"character":3}}]}],"toggleDrivermenu":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":11,"character":3}}]}],"emitJobdetails":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"preventCloseDetails":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"UtilsService","line":14,"character":28}]}],"selectRoute":[{"__symbolic":"method"}],"toggleDriverlist":[{"__symbolic":"method"}],"toggleJobCodeDetails":[{"__symbolic":"method"}],"calculateStatusPercentage":[{"__symbolic":"method"}],"setRouteItem":[{"__symbolic":"method"}]}},"JobCodeComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-job-code","template":"<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\r\n <div class=\"topheadingprt\" *ngIf=\"jobdetail['order_number']\">\r\n <h2>{{jobdetail['order_number']}}</h2>\r\n </div>\r\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\r\n <div class=\"job_details_area\">\r\n <div class=\"detailnameprt\">\r\n <span> <b> {{jobdetail.customer_name}} </b> Customer </span>\r\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\r\n </div>\r\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\r\n </div>\r\n</div>\r\n\r\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\r\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\r\n <img src=\"assets/images/route.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"listing_box\">\r\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\r\n <mat-icon>clear</mat-icon>\r\n </div>\r\n\r\n <div class=\"btnprt\">\r\n <h2> List of Routes </h2>\r\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\r\n </div>\r\n\r\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\r\n\r\n <perfect-scrollbar>\r\n <ul *ngIf=\"routes['length'] > 0\">\r\n <li *ngFor=\"let list of routes\">\r\n <div class=\"iconprt\">\r\n <span>\r\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\r\n (change)=\"$event ? selectRoute(list) : null\" /><label>&nbsp;</label>\r\n <div class=\"border\"></div>\r\n </span>\r\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\r\n <div class=\"infoicon\">\r\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\r\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"pickprtbox\">\r\n <h2> {{list['route_name']}} </h2>\r\n <h3>{{list['customer_name']}} | {{list['material']}}</h3>\r\n <div class=\"pickdropprt\">\r\n <div class=\"pickprt\">\r\n <b>\r\n <h4>{{list['pickup_location']}}</h4>\r\n </b>\r\n </div>\r\n <div class=\"dropprt\">\r\n <b>\r\n <h4>{{list['delivery_location']}}</h4>\r\n </b>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\r\n </perfect-scrollbar>\r\n </div>\r\n\r\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\r\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\r\n <mat-icon>clear</mat-icon>\r\n </div>\r\n <div class=\"destination\">\r\n <div class=\"duration\">\r\n <p class=\"pickprt\"><b>Pickup:</b> {{routeCardDetail?.pickup_location}}</p>\r\n <p class=\"dropprt\"><b>Delivery:</b> {{routeCardDetail?.delivery_location}} </p>\r\n </div>\r\n <span><b>Name:</b> {{routeCardDetail?.route_name}}</span>\r\n <span><b>Customer:</b> {{routeCardDetail?.customer_name}}</span>\r\n <span><b>Material:</b> {{routeCardDetail?.material}}</span>\r\n <span><b>Type:</b> {{routeCardDetail?.unit}}</span>\r\n <span><b>Distance:</b> {{routeCardDetail?.estimated_distance}}</span>\r\n <span><b>Travel Time:</b> {{routeCardDetail?.estimated_time}}</span>\r\n <span class=\"notes\"><b>Notes:</b> {{routeCardDetail?.note}}</span>\r\n </div>\r\n\r\n <div class=\"createTxt\">\r\n <small>\r\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\r\n </small>\r\n </div>\r\n </div>\r\n</div>\r\n","styles":[".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:#fff;padding:10px 20px;border-radius:20px;width:calc(100% - 315px);z-index:999;box-shadow:0 0 5px 0 rgba(0,0,0,.1);height:250px;cursor:move}@media (min-width:1600px){.jobcode_detailprt{left:307px;width:calc(100% - 325px)}}.jobcode_detailprt .topheadingprt .driver_list ul{display:flex;width:450px;justify-content:flex-end}.jobcode_detailprt .topheadingprt .driver_list ul li{position:relative;margin:0 -6px 2px 0;cursor:pointer}.jobcode_detailprt .topheadingprt .driver_list ul li img{width:30px;height:30px;border-radius:100%;border:1px solid #fff}.jobcode_detailprt .topheadingprt .driver_list ul li:hover .driver_detail{display:flex}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail{position:absolute;top:-70px;left:-50px;display:none;will-change:transform;pointer-events:none;border-radius:10px;box-shadow:0 4px 4px 0 rgba(0,0,0,.14);width:133px;background:#fff;text-align:center;padding:10px;flex-direction:column;font-size:.8125rem}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:117px;display:block}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail:after{width:0;height:0;border-top:15px solid #fff;border-left:10px solid transparent;border-right:10px solid transparent;z-index:1;content:\"\";position:absolute;filter:drop-shadow(0 3px 1px rgba(0,0,0,.2));bottom:-14px;left:50%;transform:translateX(-50%)}.jobcode_detailprt .topheadingprt .driver_list ul li.extraicon{background:#fff;width:30px;height:30px;border-radius:100%;display:flex;justify-content:center;align-items:center;margin:0 0 0 10px;border:1px solid #eee}.jobcode_detailprt .close{position:absolute;top:10px;right:20px;background:#e8e8e8;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer}@keyframes autoslide{to{transform:translateX(calc(90vw - 100%))}0%{transform:translateX(0)}}.jobcode_detailprt .job_details_area{padding:15px 0}.jobcode_detailprt .job_details_area .detailnameprt{display:flex;justify-content:space-between}.jobcode_detailprt .job_details_area .detailnameprt span{display:flex;flex-direction:column;font-size:.875rem;color:#767676}.jobcode_detailprt .job_details_area .detailnameprt span b{font-size:.9375rem;font-weight:500;color:#000}.route_listprt .listing_toggle{background:#fff;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px 0 hsla(0,0%,100%,.08);transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width:1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border:1px solid #fff}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width:1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px 0 hsla(0,0%,100%,.08);display:block}.overlap{z-index:9999}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;border-radius:5%;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px 0 hsla(0,0%,100%,.21)}.route_detail .destination .duration{background:#444343;border:1px solid #918e8e;padding:10px;color:#fff}.route_detail .destination .duration b{color:#fff}.route_detail .destination .dropprt:before,.route_detail .destination .dropprt b:before,.route_detail .destination .pickprt:before,.route_detail .destination .pickprt b:before{background:#fff}.route_detail .destination span{line-height:20px;color:#fff;padding:3px 0}.route_detail .destination span b{color:#fff}.route_detail .destination span.notes{max-height:200px;overflow:auto}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{box-shadow:0 0 5px 0 rgba(0,0,0,.11);border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5;position:absolute;top:-7px;left:-11px}"]}]}],"members":{"jobdetail":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"clearJobDetails":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":16,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"UtilsService","line":24,"character":28},{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"CoolmapService","line":24,"character":58}]}],"ngOnInit":[{"__symbolic":"method"}],"getRouteList":[{"__symbolic":"method"}],"toggleSidemenu":[{"__symbolic":"method"}],"clearJob":[{"__symbolic":"method"}],"selectRoute":[{"__symbolic":"method"}],"masterToggle":[{"__symbolic":"method"}],"togglerouteDetails":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"AddRouteComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"app-add-route","template":"<div class=\"addroutebox\">\r\n <div class=\"routedetailbox\" *ngIf=\"enablePopUp\">\r\n <div class=\"closebtnroutedetail\">\r\n <mat-icon (click)=\"prevantPopupClose = false; enablePopUp = false;\">clear</mat-icon>\r\n </div>\r\n <div class=\"destination\">\r\n <div class=\"duration\">\r\n <p class=\"pickprt\"><b>Pickup:</b>{{popupDetails['pickup_location']}}</p>\r\n <p class=\"dropprt\"><b>Delivery:</b>{{popupDetails['delivery_location']}}</p>\r\n </div>\r\n <span><b>Name:</b> {{popupDetails['route_name']}}</span>\r\n <span><b>Customer:</b> {{popupDetails['customer_name']}}</span>\r\n <span><b>Material:</b> {{popupDetails['material']}}</span>\r\n <span><b>Type:</b> {{popupDetails['unit']}}</span>\r\n <span><b>Distance:</b> {{popupDetails['estimated_distance']}}</span>\r\n <span><b>Travel Time:</b> {{popupDetails['estimated_time']}}</span>\r\n\r\n <span class=\"routenotes\"><b>Notes:</b> {{popupDetails['note']}}</span>\r\n </div>\r\n <div class=\"createTxt\">\r\n <small>\r\n Created by {{popupDetails['created_by_name']}} on {{popupDetails['created_at']}}\r\n </small>\r\n <button class=\"editbtn\" (click)=\"editEvent()\">Edit</button>\r\n </div>\r\n </div>\r\n <div class=\"add_add_route_box\" cdkDrag [style.visibility]=\"!enableForm ? 'hidden' : 'visible'\">\r\n <div class=\"topheadingprt\">\r\n <h2> {{routeId? 'EDIT' : 'ADD'}} ROUTE </h2>\r\n <div class=\"buttonprt\">\r\n <button *ngIf=\"routeId\" class=\"delbtn\" (click)=\"openDialog()\">Delete</button>\r\n <button mat-raised-button type=\"submit\" class=\"closebtn\" (click)=\"changeNav.next('Addroute')\">Close</button>\r\n </div>\r\n </div>\r\n <form [formGroup]=\"addRouteForm\">\r\n <div class=\"route_form_area\">\r\n <div class=\"col-6\">\r\n <mat-form-field>\r\n <mat-label>Route Name</mat-label>\r\n <input matInput formControlName=\"route_name\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\">\r\n <mat-error *ngIf=\"addRouteForm.controls['route_name'].hasError('required')\">\r\n Route Name is required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-6\">\r\n <mat-form-field>\r\n <input type=\"text\" placeholder=\"Customer Name\" matInput formControlName=\"customer_name\" [matAutocomplete]=\"auto\" (mousedown)=\"$event.stopPropagation()\">\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let customer of customersList$ | async\" [value]=\"customer['customer_name']\">\r\n {{customer['customer_name']}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n <mat-error *ngIf=\"addRouteForm.controls['customer_name'].hasError('required')\">\r\n Customer name is required.\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n <div class=\"col-6\">\r\n <mat-form-field>\r\n <mat-label>Pickup</mat-label>\r\n <input type=\"text\" placeholder=\"Search...\" matInput #filterPickup [matAutocomplete]=\"pickupAutocomplete\"\r\n formControlName=\"pickup_location\" (mousedown)=\"$event.stopPropagation()\">\r\n\r\n <mat-autocomplete #pickupAutocomplete=\"matAutocomplete\">\r\n <mat-option (click)=\"selectedLongLat('pickup', option)\" *ngFor=\"let option of pickupOptions\"\r\n [value]=\"option?.place_name\">\r\n {{option?.place_name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <mat-error *ngIf=\"addRouteForm.controls['pickup_lat_lng'].touched && addRouteForm.controls['pickup_lat_lng'].hasError('required')\">\r\n Please select pickup location from the list.\r\n </mat-error>\r\n </div>\r\n <div class=\"col-6\">\r\n <mat-form-field>\r\n <mat-label>Delivery</mat-label>\r\n <input type=\"text\" placeholder=\"Search...\" matInput #filterDelivery [matAutocomplete]=\"deliveryAutocomplete\"\r\n formControlName=\"delivery_location\" (mousedown)=\"$event.stopPropagation()\">\r\n <mat-autocomplete #deliveryAutocomplete=\"matAutocomplete\">\r\n <mat-option (click)=\"selectedLongLat('delivery', option)\" *ngFor=\"let option of deliveryOptions\"\r\n [value]=\"option?.place_name\">\r\n {{option?.place_name}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n <mat-error *ngIf=\"addRouteForm.controls['delivery_lat_lng'].touched && addRouteForm.controls['delivery_lat_lng'].hasError('required')\">\r\n Please select delivery location from the list.\r\n </mat-error>\r\n </div>\r\n <div class=\"col-6\">\r\n <mat-form-field>\r\n <mat-label>Notes</mat-label>\r\n <textarea style=\"height: 18px; resize: none;\" matInput name=\"\" id=\"\" cols=\"30\" rows=\"10\" formControlName=\"note\" autocomplete=\"nope\" (mousedown)=\"$event.stopPropagation()\"></textarea>\r\n <mat-error *ngIf=\"addRouteForm.controls['note'].hasError('maxlength')\">\r\n Notes should be within 2048 characters.\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"col-6 d-flex\">\r\n <div class=\"inputbox m-0\">\r\n <mat-form-field>\r\n <mat-label>Unit type</mat-label>\r\n <mat-select formControlName=\"unit_id\" (selectionChange)=\"checkAndFetchRouteInformation()\" (mousedown)=\"$event.stopPropagation()\">\r\n <mat-option *ngFor=\"let unit of unitsList\" [value]=\"unit?.id\"> {{unit?.type}} </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"addRouteForm.controls['unit_id'].hasError('required')\">\r\n Unit is required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <div class=\"inputbox m-0\">\r\n <mat-form-field>\r\n <mat-label>Material</mat-label>\r\n <mat-select formControlName=\"materials_id\" (mousedown)=\"$event.stopPropagation()\">\r\n <mat-option *ngFor=\"let material of materialsList\" [value]=\"material?.material_id\"> {{material?.material}}\r\n </mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"addRouteForm.controls['materials_id'].hasError('required')\">\r\n Meterial is required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n </div>\r\n <div class=\"col-6\">\r\n <app-estimation-display *ngIf=\"addRouteForm?.value?.pickup_lat_lng && addRouteForm?.value?.delivery_lat_lng\" [value]=\"addRouteForm['value']\"></app-estimation-display>\r\n </div>\r\n <button mat-raised-button type=\"submit\" (click)=\"saveRoute()\" *ngIf=\"preventSave\"\r\n [disabled]=\"addRouteForm.invalid && preventSave || preventInitialSave\">{{routeId? 'Update' : 'Save'}}\r\n </button>\r\n <div class=\"loader\">\r\n <mat-spinner *ngIf=\"!preventSave\"></mat-spinner>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n</div>\r\n","styles":[".addroutebox{width:calc(100% - 315px);position:absolute;left:300px;bottom:10px;z-index:999;display:flex;justify-content:space-between;align-items:flex-start}.addroutebox .routedetailbox{max-width:300px;padding:10px;background-color:#fff;border-radius:20px;margin-right:20px}@media (min-width:1600px){.addroutebox .routedetailbox{max-width:280px}}.addroutebox .editbtn{background:#326ad3;padding:10px 25px;color:#fff;font-size:.8125rem;border-radius:30px;float:right}.add_add_route_box{background:#fff;padding:10px 20px;border-radius:20px;box-shadow:2px 4px 4px 2px rgba(0,0,0,.14);height:370px;width:100%;position:relative;cursor:move}.add_add_route_box .route_form_area{display:flex;flex-wrap:wrap;justify-content:space-between}.add_add_route_box .route_form_area .col-6{width:48%;margin-top:15px;justify-content:space-between}.add_add_route_box .route_form_area .col-6 .inputbox{width:47%}.add_add_route_box .route_form_area .col-6 span{font-size:.875rem}.add_add_route_box .route_form_area button{background:#326ad3;padding:0 18px;color:#fff;font-size:.8125rem;border-radius:30px;position:absolute;right:18px;top:20px}.closebtn{background:#000;padding:0 18px;margin-left:10px}.closebtn,.delbtn{color:#fff;border-radius:30px}.delbtn{background:red;padding:10px 18px}.add_route_listingpart .listing_toggle{background:#fff;border-radius:15px;padding:8px 10px;position:absolute;right:10px;top:30px;cursor:pointer}.listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px 0 hsla(0,0%,100%,.08);transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0 40px;opacity:0}.listing_box .closebtn{display:none}.show .listing_box{width:250px;max-width:250px;flex:0 0 250px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}@media (min-width:1600px){.show .listing_box{width:320px;max-width:320px;flex:0 0 320px}}.show .listing_box h2{color:#fff;white-space:nowrap}.show .listing_box ul{padding:0 20px 0 0}.show .listing_box ul li{background:#4a4a4a;padding:15px;border-radius:15px;display:flex;margin-bottom:15px}.show .listing_box ul li .companayIcon{width:40px;height:40px;border-radius:10px;background:#fff;margin-right:10px;display:flex;justify-content:center;align-items:center}.show .listing_box ul li .company_cont{width:calc(100% - 50px)}.show .listing_box ul li .company_cont h3{color:#fff;font-size:15px;font-weight:400;margin:0;text-overflow:ellipsis;max-width:129px;-webkit-box-orient:vertical;white-space:nowrap;overflow:hidden}@media (min-width:1600px){.show .listing_box ul li .company_cont h3{max-width:170px}}.show .listing_box ul li .company_cont p{color:#bcbcbc;font-size:12px;margin:5px 0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:16px}.show .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px 0 hsla(0,0%,100%,.08);display:block}.loader{position:absolute;width:95%;height:100%;display:flex;justify-content:center;align-items:center;pointer-events:none}.buttonprt{margin-right:83px}.destination .duration{padding:10px}.destination span{padding:5px 0}.closebtnroutedetail{box-shadow:0 0 5px 0 rgba(0,0,0,.11);border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#fff;position:absolute;top:-11px;left:-11px}.routenotes{max-height:170px;overflow:auto}"]}]}],"members":{"filterPickup":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":16,"character":3},"arguments":["filterPickup"]}]}],"filterDelivery":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":17,"character":3},"arguments":["filterDelivery"]}]}],"changeNav":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":18,"character":3}}]}],"updateRouteList":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":19,"character":3}}]}],"routeData":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"portalName":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"CoolmapService","line":40,"character":37},{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"UtilsService","line":40,"character":67},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":40,"character":96}]}],"filterCustomerList":[{"__symbolic":"method"}],"_filter":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"openDialog":[{"__symbolic":"method"}],"editEvent":[{"__symbolic":"method"}],"inIt":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"formControlValue":[{"__symbolic":"method"}],"formInit":[{"__symbolic":"method"}],"patchFormValue":[{"__symbolic":"method"}],"fetchCustomersList":[{"__symbolic":"method"}],"fetchUnitsList":[{"__symbolic":"method"}],"fetchMaterialsList":[{"__symbolic":"method"}],"selectedLongLat":[{"__symbolic":"method"}],"checkAndFetchRouteInformation":[{"__symbolic":"method"}],"formateLatLong":[{"__symbolic":"method"}],"saveRoute":[{"__symbolic":"method"}],"deleteRoute":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"JobcodeStatusComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-jobcode-status","template":"<div class=\"statusprt\">\r\n <span class=\"done\"> Done - {{jobValue['values']['Done']}} </span>\r\n <span class=\"ongoing\"> Ongoing - {{jobValue['values']['Ongoing']}} </span>\r\n <span class=\"open\"> Open - {{jobValue['values']['Open']}} </span>\r\n</div>\r\n","styles":[".statusprt span{padding:10px;font-size:.9rem}.statusprt span.done{border:2px solid #0b843c;color:#0b843c}.statusprt span.done:hover{background:#0b843c;color:#fff}.statusprt span.ongoing{border:2px solid #eecb27;color:#eecb27}.statusprt span.ongoing:hover{background:#eecb27;color:#fff}.statusprt span.open{border:2px solid #12afcb;color:#12afcb}.statusprt span.open:hover{background:#12afcb;color:#fff}"]}]}],"members":{"jobValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}]}},"JobRouteListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-job-route-list","template":"<div class=\"searchprt\">\r\n <form [formGroup]=\"filterForm\">\r\n <mat-form-field class=\"full-width\">\r\n <input matInput [matChipInputFor]=\"chipList\" formControlName=\"search\" [matAutocomplete]=\"auto\" placeholder=\"Search\">\r\n <mat-icon matSuffix *ngIf=\"!utils.conveySearchIcon(filterForm.value.search)\">search</mat-icon>\r\n <button mat-button matSuffix mat-icon-button aria-label=\"Clear\" (click)=\"filterForm.reset()\" *ngIf=\"utils.conveySearchIcon(filterForm.value.search)\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n <mat-autocomplete autoActiveFirstOption #auto=\"matAutocomplete\">\r\n <mat-option *ngFor=\"let option of filteredOptions | async\" (onSelectionChange)=\"filterSearch($event)\"\r\n [value]=\"option\">\r\n {{option.type | titlecase }}: {{option['label']}}\r\n </mat-option>\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n</form>\r\n</div>\r\n<div class=\"chip-list\">\r\n <mat-chip-list #chipList aria-label=\"Filter selection\">\r\n <mat-chip *ngFor=\"let filter of filters\" (removed)=\"removeFromFilter(filter)\">\r\n {{filter.type | titlecase }}: {{filter.name}}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip>\r\n </mat-chip-list>\r\n</div>\r\n","styles":[".searchprt{padding-right:20px}"]}]}],"members":{"changeNav":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":13,"character":3}}]}],"routes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"selectedRoute":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"changeRoutes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":3}}]}],"changeSelectedRoute":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":21,"character":3}}]}],"masterRoutes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"UtilsService","line":24,"character":28},{"__symbolic":"reference","module":"@aggdirect/coolmap-services","name":"CoolmapService","line":24,"character":58}]}],"filterSearch":[{"__symbolic":"method"}],"removeFromFilter":[{"__symbolic":"method"}]}},"JobcodeOverviewComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-jobcode-overview","template":"<div class=\"detail_view m-40\">\r\n <ng-container *ngFor=\"let item of label\">\r\n <span [class.pickprt]=\"item === 'pickup_location'\" [class.dropprt]=\"item === 'delivery_location'\">\r\n <label>{{overViewEnum[item]}}</label>\r\n <b> {{jobValue[item] ? jobValue[item] : 'N/A'}} </b>\r\n </span>\r\n </ng-container>\r\n</div>\r\n","styles":[".detail_view{display:flex;flex-direction:row;justify-content:space-between}.detail_view span{display:flex;flex-direction:column;font-size:.8125rem;width:15%;margin:0 7px 0 0}.detail_view span.dropprt,.detail_view span.pickprt{width:20%}.detail_view span label{font-size:.8125rem;font-weight:400;color:#767676;padding-bottom:8px}.detail_view span b{font-weight:500}"]}]}],"members":{"jobValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}]}},"DialogComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-dialog","template":"<div class=\"dialogbox\">\r\n <h2>{{body}}</h2>\r\n <div class=\"twobtnprt\">\r\n <button class=\"delbtn\" (click)=\"onClose(true)\">{{positive}}</button>\r\n <button class=\"closebtn\" (click)=\"onClose(false)\">{{negative}}</button>\r\n </div>\r\n</div>\r\n","styles":[".dialogbox{display:flex;flex-direction:column}.dialogbox h2{font-size:1.5rem}.dialogbox .twobtnprt{display:flex;justify-content:center;margin-top:10px}.closebtn{background:#000}.closebtn,.delbtn{color:#fff;border-radius:30px;padding:10px 18px;margin:0 10px;font-size:1rem}.delbtn{background:red}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":11,"character":64},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":11,"character":71}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"DialogComponent"}]},{"__symbolic":"reference","name":"any"}]}],"onClose":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-estimation-display","template":"<div class=\"d-flex\">\r\n <ng-container *ngFor=\"let item of label\">\r\n <span *ngIf=\"value[item]\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\r\n Estimation of {{Estinationlabel[item]}} - <b>{{value[item]}}</b>\r\n </span>\r\n </ng-container>\r\n</div>\r\n","styles":[".estimate{margin-right:20px;font-size:.7rem}@media (min-width:1600px){.estimate{font-size:.95rem}}"]}]}],"members":{"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}]}}},"origins":{"CoolmapComponent":"./lib/coolmap.component","CoolmapModule":"./lib/coolmap.module","MapComponent":"./lib/component/map/map.component","NavComponent":"./lib/component/nav/nav.component","AddRouteNavComponent":"./lib/component/nav/layout/add-route-nav/add-route-nav.component","JobCodeNavComponent":"./lib/component/nav/layout/job-code-nav/job-code-nav.component","RouteJobCodeListComponent":"./lib/component/route-jobcode-list/route-jobcode-list.component","ViewRouteListCardComponent":"./lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component","SmsCardDetailsOverviewComponent":"./lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component","JobCodeListCardComponent":"./lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component","JobCodeComponent":"./lib/component/job-code/job-code.component","AddRouteComponent":"./lib/component/add-route/add-route.component","JobcodeStatusComponent":"./lib/component/shared/jobcode-status/jobcode-status.component","JobRouteListComponent":"./lib/component/shared/job-route-list/job-route-list.component","JobcodeOverviewComponent":"./lib/component/shared/jobcode-overview/jobcode-overview.component","DialogComponent":"./lib/component/shared/dialog/dialog.component","ɵa":"./lib/component/shared/estimation-display/estimation-display.component"},"importAs":"coolmap"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Generated bundle index. Do not edit.
3
- */
4
- export * from './public-api';
5
- export { EstimationDisplayComponent as ɵa } from './lib/component/shared/estimation-display/estimation-display.component';
6
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29vbG1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2Nvb2xtYXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQztBQUU3QixPQUFPLEVBQUMsMEJBQTBCLElBQUksRUFBRSxFQUFDLE1BQU0sd0VBQXdFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG5cbmV4cG9ydCB7RXN0aW1hdGlvbkRpc3BsYXlDb21wb25lbnQgYXMgybVhfSBmcm9tICcuL2xpYi9jb21wb25lbnQvc2hhcmVkL2VzdGltYXRpb24tZGlzcGxheS9lc3RpbWF0aW9uLWRpc3BsYXkuY29tcG9uZW50JzsiXX0=
@@ -1 +0,0 @@
1
- {"moduleName":null,"summaries":[{"symbol":{"__symbol":0,"members":[]},"metadata":{"__symbol":1,"members":[]}},{"symbol":{"__symbol":2,"members":[]},"metadata":{"__symbol":3,"members":[]}},{"symbol":{"__symbol":4,"members":[]},"metadata":{"__symbol":5,"members":[]}},{"symbol":{"__symbol":6,"members":[]},"metadata":{"__symbol":7,"members":[]}},{"symbol":{"__symbol":8,"members":[]},"metadata":{"__symbol":9,"members":[]}},{"symbol":{"__symbol":10,"members":[]},"metadata":{"__symbol":11,"members":[]}},{"symbol":{"__symbol":12,"members":[]},"metadata":{"__symbol":13,"members":[]}},{"symbol":{"__symbol":14,"members":[]},"metadata":{"__symbol":15,"members":[]}},{"symbol":{"__symbol":16,"members":[]},"metadata":{"__symbol":17,"members":[]}},{"symbol":{"__symbol":18,"members":[]},"metadata":{"__symbol":19,"members":[]}},{"symbol":{"__symbol":20,"members":[]},"metadata":{"__symbol":21,"members":[]}},{"symbol":{"__symbol":22,"members":[]},"metadata":{"__symbol":23,"members":[]}},{"symbol":{"__symbol":24,"members":[]},"metadata":{"__symbol":25,"members":[]}},{"symbol":{"__symbol":26,"members":[]},"metadata":{"__symbol":27,"members":[]}},{"symbol":{"__symbol":28,"members":[]},"metadata":{"__symbol":29,"members":[]}},{"symbol":{"__symbol":30,"members":[]},"metadata":{"__symbol":31,"members":[]}},{"symbol":{"__symbol":32,"members":[]},"metadata":{"__symbol":33,"members":[]}}],"symbols":[{"__symbol":0,"name":"CoolmapComponent","filePath":"./coolmap"},{"__symbol":1,"name":"CoolmapComponent","filePath":"./public-api"},{"__symbol":2,"name":"CoolmapModule","filePath":"./coolmap"},{"__symbol":3,"name":"CoolmapModule","filePath":"./public-api"},{"__symbol":4,"name":"MapComponent","filePath":"./coolmap"},{"__symbol":5,"name":"MapComponent","filePath":"./public-api"},{"__symbol":6,"name":"NavComponent","filePath":"./coolmap"},{"__symbol":7,"name":"NavComponent","filePath":"./public-api"},{"__symbol":8,"name":"AddRouteNavComponent","filePath":"./coolmap"},{"__symbol":9,"name":"AddRouteNavComponent","filePath":"./public-api"},{"__symbol":10,"name":"JobCodeNavComponent","filePath":"./coolmap"},{"__symbol":11,"name":"JobCodeNavComponent","filePath":"./public-api"},{"__symbol":12,"name":"RouteJobCodeListComponent","filePath":"./coolmap"},{"__symbol":13,"name":"RouteJobCodeListComponent","filePath":"./public-api"},{"__symbol":14,"name":"ViewRouteListCardComponent","filePath":"./coolmap"},{"__symbol":15,"name":"ViewRouteListCardComponent","filePath":"./public-api"},{"__symbol":16,"name":"SmsCardDetailsOverviewComponent","filePath":"./coolmap"},{"__symbol":17,"name":"SmsCardDetailsOverviewComponent","filePath":"./public-api"},{"__symbol":18,"name":"JobCodeListCardComponent","filePath":"./coolmap"},{"__symbol":19,"name":"JobCodeListCardComponent","filePath":"./public-api"},{"__symbol":20,"name":"JobCodeComponent","filePath":"./coolmap"},{"__symbol":21,"name":"JobCodeComponent","filePath":"./public-api"},{"__symbol":22,"name":"AddRouteComponent","filePath":"./coolmap"},{"__symbol":23,"name":"AddRouteComponent","filePath":"./public-api"},{"__symbol":24,"name":"JobcodeStatusComponent","filePath":"./coolmap"},{"__symbol":25,"name":"JobcodeStatusComponent","filePath":"./public-api"},{"__symbol":26,"name":"JobRouteListComponent","filePath":"./coolmap"},{"__symbol":27,"name":"JobRouteListComponent","filePath":"./public-api"},{"__symbol":28,"name":"JobcodeOverviewComponent","filePath":"./coolmap"},{"__symbol":29,"name":"JobcodeOverviewComponent","filePath":"./public-api"},{"__symbol":30,"name":"DialogComponent","filePath":"./coolmap"},{"__symbol":31,"name":"DialogComponent","filePath":"./public-api"},{"__symbol":32,"name":"ɵa","filePath":"./coolmap"},{"__symbol":33,"name":"EstimationDisplayComponent","filePath":"./lib/component/shared/estimation-display/estimation-display.component"}]}