@aggdirect/coolmap 1.0.4 → 1.0.5

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 (23) hide show
  1. package/esm2020/lib/component/add-route/add-route.component.mjs +310 -0
  2. package/esm2020/lib/component/job-code/job-code.component.mjs +1 -1
  3. package/esm2020/lib/component/nav/layout/add-route-nav/add-route-nav.component.mjs +1 -1
  4. package/esm2020/lib/component/nav/layout/job-code-nav/job-code-nav.component.mjs +1 -1
  5. package/esm2020/lib/component/route-jobcode-list/route-jobcode-list.component.mjs +1 -1
  6. package/esm2020/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.mjs +1 -1
  7. package/esm2020/lib/component/shared/job-route-list/job-route-list.component.mjs +1 -1
  8. package/esm2020/lib/component/shared/jobcode-overview/jobcode-overview.component.mjs +1 -1
  9. package/esm2020/lib/component/shared/jobcode-status/jobcode-status.component.mjs +1 -1
  10. package/esm2020/lib/coolmap.module.mjs +13 -6
  11. package/esm2020/public-api.mjs +2 -1
  12. package/fesm2015/aggdirect-coolmap.mjs +316 -7
  13. package/fesm2015/aggdirect-coolmap.mjs.map +1 -1
  14. package/fesm2020/aggdirect-coolmap.mjs +306 -7
  15. package/fesm2020/aggdirect-coolmap.mjs.map +1 -1
  16. package/lib/component/add-route/add-route.component.d.ts +62 -0
  17. package/lib/component/nav/layout/add-route-nav/add-route-nav.component.d.ts +2 -1
  18. package/lib/component/nav/layout/job-code-nav/job-code-nav.component.d.ts +2 -1
  19. package/lib/component/route-jobcode-list/route-jobcode-list.component.d.ts +2 -2
  20. package/lib/component/shared/job-route-list/job-route-list.component.d.ts +1 -1
  21. package/lib/coolmap.module.d.ts +21 -20
  22. package/package.json +1 -1
  23. package/public-api.d.ts +1 -0
@@ -1,6 +1,6 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { Component, ViewChild, EventEmitter, Output, Input, Inject, NgModule } from '@angular/core';
3
- import { Subject, takeUntil, startWith, map } from 'rxjs';
3
+ import { Subject, takeUntil, startWith, map, fromEvent, distinctUntilChanged, debounceTime } from 'rxjs';
4
4
  import * as i1 from 'coolmap-services';
5
5
  import { DriversmsCardKey, DriverSmsCardEnum, JobCodeOverviewData, JobCodeOverviewEnum } from 'coolmap-services';
6
6
  import * as i2 from '@angular/common';
@@ -17,6 +17,7 @@ import * as i3$1 from '@angular/forms';
17
17
  import { FormControl, Validators, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';
18
18
  import * as i5 from '@angular/material/input';
19
19
  import { MatInputModule } from '@angular/material/input';
20
+ import * as i8$2 from '@angular/material/select';
20
21
  import { MatSelectModule } from '@angular/material/select';
21
22
  import * as i7 from '@angular/material/icon';
22
23
  import { MatIconModule } from '@angular/material/icon';
@@ -38,6 +39,7 @@ import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';
38
39
  import * as i10$1 from '@angular/material/datepicker';
39
40
  import { MatDatepickerModule } from '@angular/material/datepicker';
40
41
  import { MatProgressBarModule } from '@angular/material/progress-bar';
42
+ import { __awaiter } from 'tslib';
41
43
 
42
44
  class CoolmapComponent {
43
45
  constructor() { }
@@ -907,6 +909,307 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
907
909
  }] }];
908
910
  } });
909
911
 
912
+ class AddRouteComponent {
913
+ constructor(coolMapService, utils, dialog) {
914
+ this.coolMapService = coolMapService;
915
+ this.utils = utils;
916
+ this.dialog = dialog;
917
+ this.changeNav = new EventEmitter();
918
+ this.updateRouteList = new EventEmitter();
919
+ this.pickupOptions = [];
920
+ this.deliveryOptions = [];
921
+ this.requestParmsForRouteDetails = { pickup_lat_lng: '', delivery_lat_lng: '' };
922
+ this.customersList = [];
923
+ this.unitsList = [];
924
+ this.materialsList = [];
925
+ this.preventSave = false;
926
+ this.preventInitialSave = false;
927
+ this.destroyer$ = new Subject();
928
+ this.enablePopUp = false;
929
+ this.prevantPopupClose = false;
930
+ this.enableForm = false;
931
+ this.fetchCustomersList();
932
+ this.fetchUnitsList();
933
+ this.fetchMaterialsList();
934
+ this.formInit();
935
+ this.utils.getrouteDetailsUtility.subscribe(res => {
936
+ if (res) {
937
+ if (res['event'] !== 'click' && !this.prevantPopupClose) {
938
+ this.enablePopUp = res['event'];
939
+ }
940
+ else if (this.enablePopUp && !this.prevantPopupClose) {
941
+ this.prevantPopupClose = true;
942
+ }
943
+ if (res['event'] !== 'click' && !res['event'] && this.prevantPopupClose) {
944
+ this.popupDetails = this.utils.getdictValue('route-detailsv2');
945
+ }
946
+ else {
947
+ this.popupDetails = res['route'];
948
+ }
949
+ this.popupDetails['created_at'] = this.utils.getDateFormat(new Date(this.popupDetails['created_at']), '/');
950
+ }
951
+ });
952
+ }
953
+ filterCustomerList() {
954
+ this.customersList$ = this.addRouteForm.controls['customer_name'].valueChanges.pipe(startWith(''), map(value => this._filter(value || '')));
955
+ }
956
+ _filter(value) {
957
+ const filterValue = value.toLowerCase();
958
+ return this.customersList.filter((option) => option['customer_name'].toLowerCase().includes(filterValue));
959
+ }
960
+ ngOnChanges(changes) {
961
+ if (changes['routeData'] && !changes['routeData']['currentValue'])
962
+ this.inIt(null);
963
+ }
964
+ openDialog() {
965
+ const dialogRef = this.dialog.open(DialogComponent, {
966
+ data: { body: 'Are you sure you want to delete this route?' },
967
+ });
968
+ dialogRef.afterClosed().subscribe(res => {
969
+ if (res) {
970
+ this.deleteRoute();
971
+ }
972
+ });
973
+ }
974
+ editEvent() {
975
+ this.prevantPopupClose = false;
976
+ this.enableForm = true;
977
+ this.enablePopUp = false;
978
+ this.popupDetails['prevent'] = false;
979
+ this.utils.removeMapEntity.next(this.popupDetails);
980
+ this.inIt(this.popupDetails);
981
+ }
982
+ inIt(changes) {
983
+ if (changes) {
984
+ if (!changes['prevent']) {
985
+ this.preventSave = false;
986
+ this.formControlValue();
987
+ this.patchFormValue(changes);
988
+ this.checkAndFetchRouteInformation(true);
989
+ }
990
+ }
991
+ if (!changes) {
992
+ this.enableForm = true;
993
+ this.preventSave = true;
994
+ this.patchFormValue();
995
+ this.checkAndFetchRouteInformation();
996
+ }
997
+ }
998
+ ngOnInit() {
999
+ this.formControlValue();
1000
+ }
1001
+ ngAfterViewInit() {
1002
+ fromEvent(this.filterPickup.nativeElement, 'keyup').pipe(distinctUntilChanged(), debounceTime(150)).pipe(takeUntil(this.destroyer$)).subscribe(() => {
1003
+ this.utils.fetchAutoCompleteLocations(this.filterPickup.nativeElement.value).pipe(takeUntil(this.destroyer$)).subscribe((res) => {
1004
+ this.pickupOptions = res.features;
1005
+ });
1006
+ });
1007
+ fromEvent(this.filterDelivery.nativeElement, 'keyup').pipe(distinctUntilChanged(), debounceTime(150)).pipe(takeUntil(this.destroyer$)).subscribe(() => {
1008
+ this.utils.fetchAutoCompleteLocations(this.filterDelivery.nativeElement.value).pipe(takeUntil(this.destroyer$)).subscribe((res) => {
1009
+ this.deliveryOptions = res.features;
1010
+ });
1011
+ });
1012
+ }
1013
+ formControlValue() {
1014
+ var _a, _b;
1015
+ (_a = this.addRouteForm.controls['pickup_location']) === null || _a === void 0 ? void 0 : _a.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res) => {
1016
+ if (this.addRouteForm.value.pickup_location && res !== this.addRouteForm.value.pickup_location) {
1017
+ this.addRouteForm.patchValue({
1018
+ pickup_lat_lng: '',
1019
+ });
1020
+ this.addRouteForm.controls['pickup_lat_lng'].markAsTouched();
1021
+ }
1022
+ });
1023
+ (_b = this.addRouteForm.controls['delivery_location']) === null || _b === void 0 ? void 0 : _b.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe((res) => {
1024
+ if (this.addRouteForm.value.delivery_location && res !== this.addRouteForm.value.delivery_location) {
1025
+ this.addRouteForm.patchValue({
1026
+ delivery_lat_lng: '',
1027
+ });
1028
+ this.addRouteForm.controls['delivery_lat_lng'].markAsTouched();
1029
+ }
1030
+ });
1031
+ }
1032
+ formInit() {
1033
+ this.addRouteForm = new FormGroup({
1034
+ route_name: new FormControl('', [Validators.required]),
1035
+ customer_name: new FormControl({ value: '', disabled: true }, [Validators.required]),
1036
+ materials_id: new FormControl('', [Validators.required]),
1037
+ unit_id: new FormControl('', [Validators.required]),
1038
+ path: new FormControl('', [Validators.required]),
1039
+ pickup_location: new FormControl('', [Validators.required]),
1040
+ pickup_lat_lng: new FormControl('', [Validators.required]),
1041
+ delivery_location: new FormControl('', [Validators.required]),
1042
+ delivery_lat_lng: new FormControl('', [Validators.required]),
1043
+ estimated_distance: new FormControl('', [Validators.required]),
1044
+ estimated_time: new FormControl('', [Validators.required]),
1045
+ note: new FormControl('', [Validators.maxLength(2048)]),
1046
+ });
1047
+ }
1048
+ patchFormValue(data) {
1049
+ this.addRouteForm.reset();
1050
+ this.addRouteForm.patchValue(data);
1051
+ this.routeId = data === null || data === void 0 ? void 0 : data.route_id;
1052
+ this.routeDetails = data ? { pickup_location: data.pickup_location, delivery_location: data.delivery_location } : null;
1053
+ this.addRouteForm.valueChanges.pipe(takeUntil(this.destroyer$)).subscribe(res => {
1054
+ if (res) {
1055
+ if (this.preventInitialSave)
1056
+ this.preventInitialSave = false;
1057
+ }
1058
+ });
1059
+ this.filterCustomerList();
1060
+ }
1061
+ fetchCustomersList() {
1062
+ this.utils.getData('coolmap/company/list/view').pipe(takeUntil(this.destroyer$)).subscribe((res) => {
1063
+ if (res) {
1064
+ this.customersList = res.data;
1065
+ this.filterCustomerList();
1066
+ this.addRouteForm.controls['customer_name'].enable();
1067
+ }
1068
+ });
1069
+ }
1070
+ fetchUnitsList() {
1071
+ return __awaiter(this, void 0, void 0, function* () {
1072
+ yield this.utils.getData('coolmap/unit/list/view').pipe(takeUntil(this.destroyer$)).subscribe((res) => {
1073
+ if (res) {
1074
+ this.unitsList = res.data;
1075
+ }
1076
+ });
1077
+ });
1078
+ }
1079
+ fetchMaterialsList() {
1080
+ this.utils.getData('coolmap/material/list/view').pipe(takeUntil(this.destroyer$)).subscribe(((res) => {
1081
+ res.data.sort((a, b) => a.material.localeCompare(b.material));
1082
+ this.materialsList = res.data;
1083
+ }));
1084
+ }
1085
+ selectedLongLat(type, event) {
1086
+ if (type === 'pickup') {
1087
+ this.addRouteForm.patchValue({
1088
+ pickup_lat_lng: (event.geometry.coordinates[1] + ',' + event.geometry.coordinates[0]).toString()
1089
+ });
1090
+ this.coolMapService.clearBoundWithCordinates();
1091
+ }
1092
+ else if (type === 'delivery') {
1093
+ this.addRouteForm.patchValue({
1094
+ delivery_lat_lng: (event.geometry.coordinates[1] + ',' + event.geometry.coordinates[0]).toString()
1095
+ });
1096
+ }
1097
+ this.checkAndFetchRouteInformation();
1098
+ }
1099
+ checkAndFetchRouteInformation(isinitial) {
1100
+ var _a, _b, _c, _d;
1101
+ if (((_b = (_a = this.addRouteForm.value) === null || _a === void 0 ? void 0 : _a.delivery_lat_lng) === null || _b === void 0 ? void 0 : _b.length) > 0 && ((_d = (_c = this.addRouteForm.value) === null || _c === void 0 ? void 0 : _c.pickup_lat_lng) === null || _d === void 0 ? void 0 : _d.length) > 0) {
1102
+ const param = {
1103
+ delivery_lat_lng: this.addRouteForm.value.delivery_lat_lng,
1104
+ pickup_lat_lng: this.addRouteForm.value.pickup_lat_lng
1105
+ };
1106
+ this.utils.postdata('coolmap/calculate/routes/estimation', param).pipe(takeUntil(this.destroyer$)).subscribe((res) => {
1107
+ if (res && res['path']) {
1108
+ this.addRouteForm.patchValue({
1109
+ estimated_distance: res.dist, estimated_time: res.time, path: res.path
1110
+ });
1111
+ let path = res['path'].split(';');
1112
+ path = path.map((ele) => { return ele = this.formateLatLong(ele); });
1113
+ res['path'] = path;
1114
+ const element = {
1115
+ type: 'FeatureCollection',
1116
+ features: [{ type: 'Feature', properties: {}, geometry: { type: 'LineString', coordinates: res['path'] } }]
1117
+ };
1118
+ this.coolMapService.removeRouteAndMarker(1).then(() => {
1119
+ var _a, _b, _c;
1120
+ const unit = this.unitsList.find((x) => x.id === this.addRouteForm.value.unit_id);
1121
+ const materialDetails = this.materialsList.find((x) => x.material_id === this.addRouteForm.value.materials_id);
1122
+ this.coolMapService.loadMapProperty(element, 1, unit === null || unit === void 0 ? void 0 : unit.type, {
1123
+ pickup_location: (_a = this.addRouteForm.get('pickup_location')) === null || _a === void 0 ? void 0 : _a.value,
1124
+ delivery_location: (_b = this.addRouteForm.get('delivery_location')) === null || _b === void 0 ? void 0 : _b.value,
1125
+ route_name: (_c = this.addRouteForm.get('route_name')) === null || _c === void 0 ? void 0 : _c.value,
1126
+ material: materialDetails === null || materialDetails === void 0 ? void 0 : materialDetails.material, unit: unit === null || unit === void 0 ? void 0 : unit.type
1127
+ }).then((res) => { this.preventSave = true; });
1128
+ });
1129
+ }
1130
+ else {
1131
+ this.coolMapService.removeRouteAndMarker(1);
1132
+ this.utils.openSnackBar(res['status'], 'error');
1133
+ }
1134
+ if (this.routeId && isinitial)
1135
+ this.preventInitialSave = true;
1136
+ });
1137
+ }
1138
+ else {
1139
+ this.coolMapService.removeRouteAndMarker(1);
1140
+ }
1141
+ }
1142
+ formateLatLong(latlong) { return latlong ? latlong.split(',').map(x => +x).reverse() : null; }
1143
+ saveRoute() {
1144
+ if (this.addRouteForm.valid) {
1145
+ this.preventSave = false;
1146
+ const data = this.addRouteForm.value;
1147
+ const url = this.routeId ? this.utils.postdata('coolmap/update/routes', data) : this.utils.postdata('coolmap/add/routes', data);
1148
+ if (this.routeId)
1149
+ data['id'] = this.routeId;
1150
+ url.pipe(takeUntil(this.destroyer$)).subscribe((res) => {
1151
+ if (res.success) {
1152
+ this.updateRouteList.emit(true);
1153
+ this.utils.openSnackBar(res.message, 'success');
1154
+ this.preventInitialSave = true;
1155
+ this.preventSave = true;
1156
+ if (!this.routeId)
1157
+ this.changeNav.next('Addroute');
1158
+ }
1159
+ else {
1160
+ this.utils.openSnackBar(res.message, 'error');
1161
+ this.preventSave = true;
1162
+ }
1163
+ }, (err) => {
1164
+ if (err) {
1165
+ this.preventSave = true;
1166
+ }
1167
+ });
1168
+ }
1169
+ else {
1170
+ this.addRouteForm.markAllAsTouched();
1171
+ }
1172
+ }
1173
+ deleteRoute() {
1174
+ this.preventSave = false;
1175
+ this.utils.postdata('coolmap/delete/routes', { uuid: this.routeId }).subscribe(res => {
1176
+ if (res['data']['success']) {
1177
+ this.utils.openSnackBar(res['data']['message'], 'success');
1178
+ this.updateRouteList.emit(true);
1179
+ this.changeNav.next('Addroute');
1180
+ this.preventInitialSave = true;
1181
+ this.preventSave = true;
1182
+ }
1183
+ else {
1184
+ this.utils.openSnackBar('Somthing went wrong', 'error');
1185
+ this.preventSave = true;
1186
+ }
1187
+ }, (err) => { this.preventSave = true; });
1188
+ }
1189
+ ngOnDestroy() {
1190
+ this.destroyer$.next(true);
1191
+ this.destroyer$.unsubscribe();
1192
+ }
1193
+ }
1194
+ AddRouteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AddRouteComponent, deps: [{ token: i1.CoolmapService }, { token: i1.UtilsService }, { token: i1$1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
1195
+ AddRouteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: AddRouteComponent, selector: "app-add-route", inputs: { routeData: "routeData" }, outputs: { changeNav: "changeNav", updateRouteList: "updateRouteList" }, viewQueries: [{ propertyName: "filterPickup", first: true, predicate: ["filterPickup"], descendants: true }, { propertyName: "filterDelivery", first: true, predicate: ["filterDelivery"], descendants: true }], usesOnChanges: true, ngImport: i0, 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 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:white;padding:10px 20px;border-radius:20px;box-shadow:2px 4px 4px 2px #00000024;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:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;position:absolute;right:18px;top:20px}.closebtn{background:black;color:#fff;border-radius:30px;padding:10px 18px;margin-left:10px}.delbtn{background:red;color:#fff;border-radius:30px;padding:10px 18px}.add_route_listingpart .listing_toggle{background:white;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 #ffffff14;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:white;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 #ffffff14;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 #0000001c;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}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$2.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i3$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8$2.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i8$1.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i8$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i7$1.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] });
1196
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: AddRouteComponent, decorators: [{
1197
+ type: Component,
1198
+ args: [{ 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 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:white;padding:10px 20px;border-radius:20px;box-shadow:2px 4px 4px 2px #00000024;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:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;position:absolute;right:18px;top:20px}.closebtn{background:black;color:#fff;border-radius:30px;padding:10px 18px;margin-left:10px}.delbtn{background:red;color:#fff;border-radius:30px;padding:10px 18px}.add_route_listingpart .listing_toggle{background:white;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 #ffffff14;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:white;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 #ffffff14;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 #0000001c;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}\n"] }]
1199
+ }], ctorParameters: function () { return [{ type: i1.CoolmapService }, { type: i1.UtilsService }, { type: i1$1.MatDialog }]; }, propDecorators: { filterPickup: [{
1200
+ type: ViewChild,
1201
+ args: ['filterPickup']
1202
+ }], filterDelivery: [{
1203
+ type: ViewChild,
1204
+ args: ['filterDelivery']
1205
+ }], changeNav: [{
1206
+ type: Output
1207
+ }], updateRouteList: [{
1208
+ type: Output
1209
+ }], routeData: [{
1210
+ type: Input
1211
+ }] } });
1212
+
910
1213
  class CoolmapModule {
911
1214
  }
912
1215
  CoolmapModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CoolmapModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
@@ -923,7 +1226,8 @@ CoolmapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
923
1226
  JobRouteListComponent,
924
1227
  JobcodeStatusComponent,
925
1228
  JobcodeOverviewComponent,
926
- DialogComponent], imports: [CommonModule,
1229
+ DialogComponent,
1230
+ AddRouteComponent], imports: [CommonModule,
927
1231
  MatSnackBarModule,
928
1232
  MatSidenavModule,
929
1233
  DragDropModule,
@@ -956,7 +1260,8 @@ CoolmapModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version:
956
1260
  JobRouteListComponent,
957
1261
  JobcodeStatusComponent,
958
1262
  JobcodeOverviewComponent,
959
- DialogComponent] });
1263
+ DialogComponent,
1264
+ AddRouteComponent] });
960
1265
  CoolmapModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: CoolmapModule, imports: [CommonModule,
961
1266
  MatSnackBarModule,
962
1267
  MatSidenavModule,
@@ -995,7 +1300,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
995
1300
  JobRouteListComponent,
996
1301
  JobcodeStatusComponent,
997
1302
  JobcodeOverviewComponent,
998
- DialogComponent
1303
+ DialogComponent,
1304
+ AddRouteComponent
999
1305
  ],
1000
1306
  imports: [
1001
1307
  CommonModule,
@@ -1034,10 +1340,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
1034
1340
  JobRouteListComponent,
1035
1341
  JobcodeStatusComponent,
1036
1342
  JobcodeOverviewComponent,
1037
- DialogComponent
1343
+ DialogComponent,
1344
+ AddRouteComponent
1038
1345
  ],
1039
1346
  entryComponents: [
1040
- DialogComponent
1347
+ DialogComponent,
1348
+ JobCodeComponent,
1349
+ AddRouteComponent
1041
1350
  ],
1042
1351
  providers: []
1043
1352
  }]
@@ -1051,5 +1360,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
1051
1360
  * Generated bundle index. Do not edit.
1052
1361
  */
1053
1362
 
1054
- export { AddRouteNavComponent, CoolmapComponent, CoolmapModule, DialogComponent, JobCodeComponent, JobCodeListCardComponent, JobCodeNavComponent, JobRouteListComponent, JobcodeOverviewComponent, JobcodeStatusComponent, MapComponent, NavComponent, RouteJobCodeListComponent, SmsCardDetailsOverviewComponent, ViewRouteListCardComponent };
1363
+ export { AddRouteComponent, AddRouteNavComponent, CoolmapComponent, CoolmapModule, DialogComponent, JobCodeComponent, JobCodeListCardComponent, JobCodeNavComponent, JobRouteListComponent, JobcodeOverviewComponent, JobcodeStatusComponent, MapComponent, NavComponent, RouteJobCodeListComponent, SmsCardDetailsOverviewComponent, ViewRouteListCardComponent };
1055
1364
  //# sourceMappingURL=aggdirect-coolmap.mjs.map