@aggdirect/coolmap-services 1.0.7 → 1.0.9

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.
@@ -1,702 +1,761 @@
1
1
  import { __awaiter } from 'tslib';
2
- import { ɵɵdefineInjectable, ɵɵinject, Injectable } from '@angular/core';
3
- import { LngLatBounds, Map as Map$1, Marker, Popup } from 'mapbox-gl';
4
- import { length, along } from '@turf/turf';
2
+ import * as i0 from '@angular/core';
3
+ import { Injectable, Inject } from '@angular/core';
4
+ import * as mapboxgl from 'mapbox-gl';
5
+ import * as turf from '@turf/turf';
5
6
  import { BehaviorSubject } from 'rxjs';
6
- import { HttpClient } from '@angular/common/http';
7
- import { MatSnackBar } from '@angular/material/snack-bar';
8
- import { EventManager } from '@angular/platform-browser';
9
7
  import { MapboxLayer } from '@deck.gl/mapbox';
10
8
  import { ArcLayer } from '@deck.gl/layers';
9
+ import * as i1 from '@angular/common/http';
10
+ import * as i2 from '@angular/material/snack-bar';
11
+ import * as i2$1 from '@angular/platform-browser';
11
12
 
12
- class UtilsService {
13
- constructor(http, snackBar) {
14
- this.http = http;
15
- this.snackBar = snackBar;
16
- this.analyticsRESTURL = '';
17
- this.RESTURLPrefix = '';
18
- this.pickupOptions = [];
19
- this.destOptions = [];
20
- this.ownerOptions = [];
21
- this.customerOptions = [];
22
- this.unitOptions = [];
23
- this.materialOptions = [];
24
- this.jcodeOptions = [];
25
- this.driverOption = [];
26
- this.truckingCompanayOption = [];
27
- this.routeNameOptions = [];
28
- this.preventnavChange = new BehaviorSubject(false);
29
- this.navChangeObserve = this.preventnavChange.asObservable();
30
- this.clearViewRouteforJobCode = new BehaviorSubject(false);
31
- this.clearViewRouteforJobCodeObserve = this.clearViewRouteforJobCode.asObservable();
32
- this.preVentJobdetailclose = new BehaviorSubject(false);
33
- this.getpreVentJobdetailclose = this.preVentJobdetailclose.asObservable();
34
- this.routeDetailsUtility = new BehaviorSubject({});
35
- this.getrouteDetailsUtility = this.routeDetailsUtility.asObservable();
36
- this.removeMapEntity = new BehaviorSubject({});
37
- this.removeMapEntityUtility = this.removeMapEntity.asObservable();
38
- this.dict = new Map();
39
- this.analyticsRESTURL = 'https://test-analytics.aggdirect.com/REST/';
40
- this.RESTURLPrefix = 'https://test-server.aggdirect.com/REST/';
41
- }
42
- getDateFormat(strVal, seprater) {
43
- seprater = seprater ? seprater : '-';
44
- const mydate = strVal;
45
- return (mydate === null || mydate === void 0 ? void 0 : mydate.getFullYear()) + seprater + ((mydate ? mydate.getMonth() : 0) + 1) + seprater + (mydate === null || mydate === void 0 ? void 0 : mydate.getDate());
46
- }
47
- getData(path) { return this.http.get(`${this.analyticsRESTURL}${path}`); }
48
- postdata(path, data) { return this.http.post(`${this.analyticsRESTURL}${path}`, data); }
49
- postDataWithRestUrl(path, data) { return this.http.post(`${this.RESTURLPrefix}${path}`, data); }
50
- fetchAutoCompleteLocations(keyword) {
51
- return this.http.get(`https://api.mapbox.com/geocoding/v5/mapbox.places/${keyword}.json?access_token=pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ&country=US`);
52
- }
53
- openSnackBar(message, className) {
54
- this.snackBar.open(message, '', {
55
- duration: 5000, verticalPosition: 'top', horizontalPosition: 'center', panelClass: [className ? className : 'default']
56
- });
57
- }
58
- makeOptions(item) {
59
- var _a;
60
- if (item.order_number) {
61
- (this.jcodeOptions.findIndex((elem) => elem.job_id === item.job_id) === -1) ? this.jcodeOptions.push({ job_code: item.order_number, job_id: item.job_id }) : null;
62
- if (item.driver_list && ((_a = item.driver_list) === null || _a === void 0 ? void 0 : _a.length) > 0) {
63
- item.driver_list.forEach((driver) => {
64
- this.driverOption.findIndex(elem => elem === driver['driver_name']) === -1 ? this.driverOption.push(driver['driver_name']) : null;
65
- this.truckingCompanayOption.findIndex(elem => elem === driver['trucking_company']) === -1 ? this.truckingCompanayOption.push(driver['trucking_company']) : null;
66
- });
67
- }
68
- }
69
- ((this.pickupOptions.findIndex((elem) => elem === item.pickup_location)) === -1) ? this.pickupOptions.push(item.pickup_location) : null;
70
- ((this.destOptions.findIndex((elem) => elem === item.delivery_location)) === -1) ? this.destOptions.push(item.delivery_location) : null;
71
- (this.customerOptions.findIndex((customer) => customer === item.customer_name) === -1) ? this.customerOptions.push(item.customer_name) : null;
72
- (this.unitOptions.findIndex((elem) => elem === item.unit) === -1) ? this.unitOptions.push(item.unit) : null;
73
- (this.materialOptions.findIndex((elem) => elem === item.material) === -1) ? this.materialOptions.push(item.material) : null;
74
- if (item.route_name)
75
- this.routeNameOptions.findIndex(elem => elem === item.route_name) === -1 ? this.routeNameOptions.push(item.route_name) : null;
76
- }
77
- filter(value, filters) {
78
- if (typeof value !== 'string') {
79
- return [];
80
- }
81
- const filterValue = value.toLowerCase();
82
- if (filterValue === '') {
83
- return [];
84
- }
85
- const searchResults = [];
86
- this.unitOptions.map(unit => {
87
- if (unit.toLowerCase().includes(filterValue)) {
88
- searchResults.push({ "type": "unit", "label": unit, "value": unit });
89
- }
90
- });
91
- this.customerOptions.map(unit => {
92
- if (unit.toLowerCase().includes(filterValue)) {
93
- searchResults.push({ "type": "customer", "label": unit, "value": unit });
94
- }
95
- });
96
- this.materialOptions.map(unit => {
97
- if (unit.toLowerCase().includes(filterValue)) {
98
- searchResults.push({ "type": "material", "label": unit, "value": unit });
99
- }
100
- });
101
- this.pickupOptions.map(unit => {
102
- if (unit.toLowerCase().includes(filterValue)) {
103
- searchResults.push({ "type": "pickup location", "label": unit, "value": unit });
104
- }
105
- });
106
- this.destOptions.map(unit => {
107
- if (unit.toLowerCase().includes(filterValue)) {
108
- searchResults.push({ "type": "destination location", "label": unit, "value": unit });
109
- }
110
- });
111
- this.jcodeOptions.map(unit => {
112
- if (unit.job_code.toLowerCase().includes(filterValue)) {
113
- searchResults.push({ "type": "job", "label": unit['job_code'], "value": unit });
114
- }
115
- });
116
- this.driverOption.map(unit => {
117
- if (unit.toLowerCase().includes(filterValue)) {
118
- searchResults.push({ "type": "Driver", "label": unit, "value": unit });
119
- }
120
- });
121
- this.truckingCompanayOption.map(unit => {
122
- if (unit.toLowerCase().includes(filterValue)) {
123
- searchResults.push({ "type": "Trucking Company", "label": unit, "value": unit });
124
- }
125
- });
126
- this.routeNameOptions.map(unit => {
127
- if (unit.toLowerCase().includes(filterValue)) {
128
- searchResults.push({ "type": "Route name", "label": unit, "value": unit });
129
- }
130
- });
131
- const searchDict = {};
132
- filters.map((filter) => {
133
- searchDict[filter['name'] + filter['type']] = filter;
134
- });
135
- const furtherFilter = [];
136
- searchResults.map(search => {
137
- if ((search['label'] + search['type']) in searchDict) { }
138
- else {
139
- furtherFilter.push(search);
140
- }
141
- });
142
- return furtherFilter;
143
- }
144
- getSearchResults(list, filterval) {
145
- return list.filter(element => {
146
- var _a, _b;
147
- const result_list_boolean = [];
148
- if (filterval.length > 0) {
149
- if (filterval[0]['type'] === 'unit') {
150
- result_list_boolean.push(filterval[0]['name'] === element[filterval[0]['type']]);
151
- }
152
- if (filterval[0]['type'] === 'customer') {
153
- result_list_boolean.push(filterval[0]['name'] === element['customer_name']);
154
- }
155
- if (filterval[0]['type'] === 'material') {
156
- result_list_boolean.push(filterval[0]['name'] === element[filterval[0]['type']]);
157
- }
158
- if (filterval[0]['type'] === 'pickup location') {
159
- result_list_boolean.push(filterval[0]['name'] === element['pickup_location']);
160
- }
161
- if (filterval[0]['type'] === 'destination location') {
162
- result_list_boolean.push(filterval[0]['name'] === element['delivery_location']);
163
- }
164
- if (filterval[0]['type'] === 'job') {
165
- result_list_boolean.push(filterval[0]['name'] === element['order_number']);
166
- }
167
- if (filterval[0]['type'] === 'Route name') {
168
- result_list_boolean.push(filterval[0]['name'] === element['route_name']);
169
- }
170
- if (filterval[0]['type'] === 'Driver') {
171
- const index = (_a = element.driver_list) === null || _a === void 0 ? void 0 : _a.findIndex(ele => { return filterval[0]['name'] === ele['driver_name']; });
172
- if (index !== -1)
173
- result_list_boolean.push(true);
174
- }
175
- if (filterval[0]['type'] === 'Trucking Company') {
176
- const index = (_b = element.driver_list) === null || _b === void 0 ? void 0 : _b.findIndex(ele => { return filterval[0]['name'] === ele['trucking_company']; });
177
- if (index !== -1)
178
- result_list_boolean.push(true);
179
- }
180
- }
181
- if (result_list_boolean.length > 0) {
182
- return result_list_boolean.reduce((prev, curr) => prev && curr);
183
- }
184
- return false;
185
- });
186
- }
187
- clearOptions() {
188
- this.pickupOptions = [];
189
- this.destOptions = [];
190
- this.ownerOptions = [];
191
- this.customerOptions = [];
192
- this.unitOptions = [];
193
- this.materialOptions = [];
194
- this.jcodeOptions = [];
195
- this.routeNameOptions = [];
196
- }
197
- setdictValue(key, value) {
198
- this.dict.set(key, value);
199
- }
200
- getdictValue(key) {
201
- return JSON.parse(this.dict.get(key));
202
- }
203
- removedictValue(key) {
204
- this.dict.delete(key);
205
- }
206
- conveySearchIcon(value) {
207
- if (value && typeof (value) !== 'object')
208
- return true;
209
- return false;
210
- }
211
- }
212
- UtilsService.ɵprov = ɵɵdefineInjectable({ factory: function UtilsService_Factory() { return new UtilsService(ɵɵinject(HttpClient), ɵɵinject(MatSnackBar)); }, token: UtilsService, providedIn: "root" });
213
- UtilsService.decorators = [
214
- { type: Injectable, args: [{ providedIn: 'root' },] }
215
- ];
216
- UtilsService.ctorParameters = () => [
217
- { type: HttpClient },
218
- { type: MatSnackBar }
219
- ];
13
+ class Route {
14
+ constructor() {
15
+ this.index = 0;
16
+ }
17
+ }
18
+ const EstinationData = ['estimated_distance', 'estimated_time'];
19
+ var EstinationEnum;
20
+ (function (EstinationEnum) {
21
+ EstinationEnum["estimated_distance"] = "miles";
22
+ EstinationEnum["estimated_time"] = "time";
23
+ })(EstinationEnum || (EstinationEnum = {}));
24
+ const JobCodeOverviewData = ['customer_contact', 'delivery_contact', 'pickup_location', 'delivery_location', 'project', 'unit'];
25
+ var JobCodeOverviewEnum;
26
+ (function (JobCodeOverviewEnum) {
27
+ JobCodeOverviewEnum["customer_contact"] = "Customer Contact";
28
+ JobCodeOverviewEnum["delivery_contact"] = "Delivery Contact";
29
+ JobCodeOverviewEnum["pickup_location"] = "Pickup";
30
+ JobCodeOverviewEnum["delivery_location"] = "Delivery";
31
+ JobCodeOverviewEnum["project"] = "Project Name";
32
+ JobCodeOverviewEnum["unit"] = "Job Type";
33
+ })(JobCodeOverviewEnum || (JobCodeOverviewEnum = {}));
34
+ const DriversmsCardKey = ['order_number', 'date', 'values', 'material', 'unit', 'pickup_location', 'delivery_location'];
35
+ var DriverSmsCardEnum;
36
+ (function (DriverSmsCardEnum) {
37
+ DriverSmsCardEnum["order_number"] = "Jobcode";
38
+ DriverSmsCardEnum["date"] = "Date";
39
+ DriverSmsCardEnum["values"] = "Total tasks";
40
+ DriverSmsCardEnum["material"] = "Material";
41
+ DriverSmsCardEnum["unit"] = "Unit";
42
+ DriverSmsCardEnum["pickup_location"] = "Pickup Address";
43
+ DriverSmsCardEnum["delivery_location"] = "Delivery Address";
44
+ })(DriverSmsCardEnum || (DriverSmsCardEnum = {}));
45
+ class PopupData {
46
+ }
47
+ class CoolmapConfigModel {
48
+ }
220
49
 
221
- class CoolmapService {
222
- constructor(utils, eventManager) {
223
- this.utils = utils;
224
- this.eventManager = eventManager;
225
- this.markerOriginList = [];
226
- this.markerDestinationList = [];
227
- this.initiatecoolmap = new BehaviorSubject(true);
228
- this.reintiatecoolmap = this.initiatecoolmap.asObservable();
229
- this.bounds = new LngLatBounds();
230
- this.originDestinationCordinates = [];
231
- this.eventManager.addGlobalEventListener('window', 'resize', this.onResize.bind(this));
232
- this.windowActualHeightWidth = { availHeight: 0 };
233
- }
234
- initiateMapForAddRoute(el) {
235
- return new Promise((resolve, reject) => {
236
- this.map ? this.map.remove() : '';
237
- this.map = new Map$1({
238
- accessToken: 'pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ',
239
- container: el,
240
- style: 'mapbox://styles/santanu-ogma/cl8ep33uz003414n1twlosz9d',
241
- center: [-77.036873, 38.907192],
242
- zoom: 10, bearing: 0, pitch: 65, interactive: true,
243
- });
244
- this.map.once('load', (res) => {
245
- resolve(res);
246
- });
247
- });
248
- }
249
- // Below method Load route with animation
250
- loadMapProperty(pinRouteGeojson, index, unit, route, bottom) {
251
- return new Promise((resolve, reject) => {
252
- let origin = pinRouteGeojson.features[0].geometry.coordinates[0];
253
- const linecolor = (unit === 'Ton') ? '#ff7272' : (unit === 'Load') ? '#a3c52e' : '#ae23d1';
254
- let destination = pinRouteGeojson.features[0].geometry.coordinates[pinRouteGeojson.features[0].geometry.coordinates.length - 1];
255
- this.extendBound(pinRouteGeojson.features[0].geometry.coordinates, true).then((res) => {
256
- const point = {
257
- 'type': 'FeatureCollection',
258
- 'features': [
259
- { 'type': 'Feature', 'properties': {}, 'geometry': { 'type': 'Point', 'coordinates': origin } }
260
- ]
261
- };
262
- const lineDistance = length(pinRouteGeojson.features[0]);
263
- const arc = [];
264
- const steps = 10 * pinRouteGeojson.features[0].geometry.coordinates.length;
265
- for (let i = 0; i < lineDistance; i += lineDistance / steps) {
266
- const segment = along(pinRouteGeojson.features[0], i);
267
- arc.push(segment.geometry.coordinates);
268
- }
269
- pinRouteGeojson.features[0].geometry.coordinates = arc;
270
- const pinRoute = pinRouteGeojson.features[0].geometry.coordinates;
271
- const marker = new Marker(document.createElement('div'))
272
- .setLngLat(pinRoute[0]).addTo(this.map).togglePopup();
273
- if (this.map.getSource(`line${index}`)) {
274
- this.removeRouteAndMarker(index).then(() => { });
275
- }
276
- this.map.addSource(`line${index}`, { type: 'geojson', lineMetrics: true, data: pinRouteGeojson });
277
- this.map.addLayer({
278
- type: 'line',
279
- source: `line${index}`,
280
- id: `line${index}`,
281
- paint: {
282
- 'line-width': 2,
283
- 'line-gradient': [
284
- 'interpolate',
285
- ['linear'],
286
- ['line-progress'],
287
- 0, unit === 'Ton' ? '#d7f7e4' : unit === 'Load' ? '#c9d8f5' : '#f5dcc1',
288
- 1, unit === 'Ton' ? '#ff7272' : unit === 'Load' ? '#a3c52e' : '#ae23d1',
289
- ]
290
- },
291
- layout: { 'line-cap': 'round', 'line-join': 'round' }
292
- });
293
- const dataSetForMap = {
294
- counter: 0, pinRouteGeojson, steps,
295
- point, pointId: `point${index}`,
296
- marker, pinRoute, lineId: `line${index}`, index,
297
- origin, destination, lineDistance,
298
- linecolor, route, isViewRoute: true
299
- };
300
- this.createMarker(dataSetForMap);
301
- this.map.on('mouseenter', `line${index}`, (e) => {
302
- this.map.setPaintProperty(`line${index}`, 'line-width', 5);
303
- this.map.setPaintProperty(`line${index}`, 'line-opacity', 1);
304
- const datasetForPopup = {
305
- coordinate: [e.lngLat.lng, e.lngLat.lat],
306
- pickup: route.pickup_location ? route.pickup_location : '',
307
- drop: route.delivery_location ? route.delivery_location : '',
308
- routeType: route.project ? 'Project' : 'Route',
309
- title: route.project ? route.project : route.route_name ? route.route_name : '',
310
- material: route.material ? route.material : '',
311
- type: route.unit ? route.unit : ''
312
- };
313
- this.createPopup(datasetForPopup);
314
- });
315
- this.map.on('mouseleave', `line${index}`, (e) => {
316
- this.map.setPaintProperty(`line${index}`, 'line-width', 2);
317
- if (this.popup) {
318
- this.popup.remove();
319
- }
320
- });
321
- });
322
- this.map.once('idle', (res) => {
323
- resolve(true);
324
- });
325
- });
326
- }
327
- // Below method Load route without animation
328
- drawLine(cordinates, index, route, enablefitbound, routeType) {
329
- let linecolor;
330
- let origin = cordinates[0];
331
- let destination = cordinates[cordinates.length - 1];
332
- if (origin[0] && origin[1] && destination && destination[0] && destination[1]) {
333
- linecolor = this.provideLineColor(route['unit'], routeType);
334
- if (enablefitbound) {
335
- const padding = {
336
- top: this.padding.top, bottom: this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65)),
337
- left: this.padding.left, right: this.padding.right
338
- };
339
- this.map.fitBounds([origin, destination], { padding }, { fitboundCompleteJob: true });
340
- }
341
- if (this.map.getSource(`route-source-for-job-code${index}`)) {
342
- this.removeRouteAndMarker(index).then(() => { });
343
- }
344
- this.map.addSource(`route-source-for-job-code${index}`, {
345
- 'type': 'geojson',
346
- 'data': { 'type': 'Feature', 'properties': {}, 'geometry': { 'type': 'LineString', 'coordinates': cordinates } }
347
- });
348
- this.map.addLayer({
349
- 'id': `route-for-job-code${index}`, 'type': 'line', 'source': `route-source-for-job-code${index}`,
350
- paint: { 'line-color': linecolor, 'line-width': 2 },
351
- layout: { 'line-cap': 'round', 'line-join': 'round' }
352
- });
353
- const dataSetForMap = {
354
- origin, destination, index, linecolor, route
355
- };
356
- this.createMarker(dataSetForMap);
357
- this.map.on('mouseenter', `route-for-job-code${index}`, (e) => {
358
- if (this.popup) {
359
- this.popup.remove();
360
- }
361
- this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 5);
362
- this.map.setPaintProperty(`route-for-job-code${index}`, 'line-opacity', 1);
363
- const datasetForPopup = {
364
- coordinate: [e.lngLat.lng, e.lngLat.lat],
365
- pickup: route.pickup_location ? route.pickup_location : '',
366
- drop: route.delivery_location ? route.delivery_location : '',
367
- jobCode: route.project ? route.order_number : null,
368
- customer: route.project ? route.customer_name : null,
369
- routeType: route.project ? 'Project' : 'Route',
370
- title: route.project ? route.project : route.route_name ? route.route_name : '',
371
- material: route.material ? route.material : '',
372
- type: route.unit ? route.unit : ''
373
- };
374
- this.createPopup(datasetForPopup);
375
- });
376
- this.map.on('mouseleave', `route-for-job-code${index}`, (e) => {
377
- this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 2);
378
- if (this.popup) {
379
- this.popup.remove();
380
- }
381
- });
382
- }
383
- }
384
- provideLineColor(unitType, type) {
385
- let checkType = (type && !['jobrouteList', 'addroute'].includes(type)) ? true : false;
386
- let color;
387
- switch (unitType) {
388
- case "Ton":
389
- color = checkType ? '#39c471' : '#ff7272';
390
- break;
391
- case "Load":
392
- color = checkType ? '#326ad3' : '#a3c52e';
393
- break;
394
- case "Hourly":
395
- color = checkType ? '#ffad56' : '#ae23d1';
396
- break;
397
- }
398
- return color;
399
- }
400
- showRoutePopup(arcDetails, event, isViewRoute) {
401
- if (this.popup) {
402
- this.popup.remove();
403
- this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-width', 2);
404
- }
405
- if (arcDetails.color && this.map.getLayoutProperty(arcDetails.layer.id, 'visibility') !== 'none') {
406
- this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-width', 5);
407
- this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-opacity', 1);
408
- const datasetForPopup = {
409
- coordinate: arcDetails.coordinate,
410
- pickup: arcDetails.layer.props.data.route.pickup_location ? arcDetails.layer.props.data.route.pickup_location : '',
411
- drop: arcDetails.layer.props.data.route.delivery_location ? arcDetails.layer.props.data.route.delivery_location : '',
412
- jobCode: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.order_number : '',
413
- customer: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.customer_name : '',
414
- routeType: arcDetails.layer.props.data.route.project ? 'Project' : 'Route',
415
- title: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.project : arcDetails.layer.props.data.route.route_name ? arcDetails.layer.props.data.route.route_name : '',
416
- material: arcDetails.layer.props.data.route.material ? arcDetails.layer.props.data.route.material : '',
417
- type: arcDetails.layer.props.data.route.unit ? arcDetails.layer.props.data.route.unit : ''
418
- };
419
- this.createPopup(datasetForPopup);
420
- }
421
- }
422
- createPopup(datasetForPopup) {
423
- this.popup = new Popup({
424
- closeButton: false,
425
- closeOnClick: false,
426
- closeOnMove: true,
427
- anchor: 'bottom-left'
428
- });
429
- this.popup.setLngLat(datasetForPopup.coordinate)
430
- .setHTML(`
431
- <div class="destination">
432
- <div class="duration">
433
- <p class="pickprt"><b>Pickup Location:</b> ${datasetForPopup.pickup}</p>
434
- <p class="dropprt"><b>Drop Location:</b> ${datasetForPopup.drop}</p>
435
- </div>
436
- ${datasetForPopup.jobCode ? '<span><b>Job Code:</b> ' + datasetForPopup.jobCode + '</span>' : ''}
437
- ${datasetForPopup.customer ? '<span><b>Customer:</b> ' + datasetForPopup.customer + '</span>' : ''}
438
- <span><b>${datasetForPopup.routeType} Name:</b> ${datasetForPopup.title}</span>
439
- <span><b>Material:</b> ${datasetForPopup.material}</span>
440
- <span><b>Type:</b> ${datasetForPopup.type}</span>
441
- </div>
442
- `)
443
- .addTo(this.map);
444
- }
445
- hexToRGB(hex) {
446
- return hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (m, r, g, b) => '#' + r + r + g + g + b + b)
447
- .substring(1).match(/.{2}/g)
448
- .map(x => parseInt(x, 16));
449
- }
450
- createMarker(routeDetails) {
451
- var _a, _b;
452
- if (routeDetails.origin[0] && routeDetails.origin[1] && routeDetails.destination[0] && routeDetails.destination[1]) {
453
- const popup = new Popup({ closeButton: false }).setHTML('<b>Pickup: </b>' + ((_a = routeDetails.route) === null || _a === void 0 ? void 0 : _a.pickup_location));
454
- const popupForDestination = new Popup({ closeButton: false })
455
- .setHTML('<b>Delivery: </b>' + ((_b = routeDetails.route) === null || _b === void 0 ? void 0 : _b.delivery_location));
456
- const el = document.createElement('div');
457
- el.className = 'marker';
458
- el.innerHTML = `<span class='markerPointer' style='background:${routeDetails.linecolor}'><b>P</b><span class='markerSpan' style='border-top: 10px solid ${routeDetails.linecolor}'></span></span>`;
459
- const originMarker = new Marker(el)
460
- .setPopup(popup).setLngLat(routeDetails.origin).addTo(this.map);
461
- originMarker.getElement().addEventListener('mouseenter', () => originMarker.togglePopup());
462
- originMarker.getElement().addEventListener('mouseleave', () => originMarker.togglePopup());
463
- const elementForDestination = document.createElement('div');
464
- elementForDestination.className = 'marker';
465
- elementForDestination.innerHTML = `<span class='markerPointer' style='background:${routeDetails.linecolor}'><b>D</b><span class='markerSpan' style='border-top: 10px solid ${routeDetails.linecolor}'></span></span>`;
466
- const destinationMarker = new Marker(elementForDestination).setPopup(popupForDestination).setLngLat(routeDetails.destination).addTo(this.map);
467
- destinationMarker.getElement().addEventListener('mouseenter', () => destinationMarker.togglePopup());
468
- destinationMarker.getElement().addEventListener('mouseleave', () => destinationMarker.togglePopup());
469
- this.markerOriginList[routeDetails.index] = originMarker;
470
- this.markerDestinationList[routeDetails.index] = destinationMarker;
471
- const colorArray = this.hexToRGB(routeDetails.linecolor);
472
- const arcLayer = new MapboxLayer({
473
- id: 'arc-layer' + routeDetails.index,
474
- type: ArcLayer,
475
- pickable: true,
476
- data: { route: routeDetails.route, index: routeDetails.index },
477
- getWidth: 1,
478
- getSourcePosition: routeDetails.origin,
479
- getTargetPosition: routeDetails.destination,
480
- getTargetColor: [255, 255, 255],
481
- getSourceColor: [colorArray[0], colorArray[1], colorArray[2]],
482
- onHover: (info, event) => this.showRoutePopup(info, event, routeDetails.isViewRoute),
483
- });
484
- this.map.addLayer(arcLayer);
485
- }
486
- }
487
- removeRouteAndMarker(index) {
488
- return __awaiter(this, void 0, void 0, function* () {
489
- if (this.map) {
490
- this.map.getLayer(`arc-layer${index}`) ? this.map.removeLayer(`arc-layer${index}`) : '';
491
- this.map.getLayer(`line${index}`) ? this.map.removeLayer(`line${index}`) : '';
492
- this.map.getLayer(`custom_layer${index}`) ? this.map.removeLayer(`custom_layer${index}`) : '';
493
- this.map.getSource(`line${index}`) ? this.map.removeSource(`line${index}`) : '';
494
- this.map.getLayer(`route-for-job-code${index}`) ? this.map.removeLayer(`route-for-job-code${index}`) : '';
495
- this.map.getSource(`route-source-for-job-code${index}`) ? this.map.removeSource(`route-source-for-job-code${index}`) : '';
496
- this.findMarkerBound(index);
497
- this.markerOriginList[index] ? this.markerOriginList[index].remove() : '';
498
- this.markerDestinationList[index] ? this.markerDestinationList[index].remove() : '';
499
- yield true;
500
- }
501
- });
502
- }
503
- findMarkerBound(index) {
504
- const indexOfCordinates = this.originDestinationCordinates.findIndex((x) => { var _a, _b, _c, _d; return (x[0][0].toFixed(6) == ((_b = (_a = this.markerOriginList[index]) === null || _a === void 0 ? void 0 : _a.getLngLat()) === null || _b === void 0 ? void 0 : _b.lng.toFixed(6))) && (x[0][1].toFixed(6) == ((_d = (_c = this.markerOriginList[index]) === null || _c === void 0 ? void 0 : _c.getLngLat()) === null || _d === void 0 ? void 0 : _d.lat.toFixed(6))); });
505
- if (indexOfCordinates >= 0) {
506
- this.originDestinationCordinates.splice(indexOfCordinates, 1);
507
- }
508
- }
509
- filterRoute(ID, visibility, showAllFitbound) {
510
- return __awaiter(this, void 0, void 0, function* () {
511
- if (ID) {
512
- if (this.map.getLayer(`route-for-job-code${ID}`)) {
513
- this.map.setLayoutProperty(`route-for-job-code${ID}`, 'visibility', visibility);
514
- const originM = this.markerOriginList[ID].getElement();
515
- originM.style.display = ((visibility === 'visible') ? 'block' : visibility);
516
- const destinationM = this.markerDestinationList[ID].getElement();
517
- destinationM.style.display = ((visibility === 'visible') ? 'block' : visibility);
518
- if (visibility === 'none' && showAllFitbound) {
519
- this.findMarkerBound(ID);
520
- this.extendReBound();
521
- }
522
- }
523
- if (this.map.getLayer(`arc-layer${ID}`)) {
524
- this.map.setLayoutProperty(`arc-layer${ID}`, 'visibility', visibility);
525
- }
526
- }
527
- yield true;
528
- });
529
- }
530
- extendBound(route, showAllFitbound) {
531
- return new Promise((resolve, reject) => {
532
- if (route) {
533
- if (typeof route === 'string') {
534
- let path = route.split(';');
535
- path = path.map((ele) => { return ele = this.formateLatLong(ele); });
536
- path.forEach((ele, index) => { if (ele.length === 1)
537
- path.splice(index, 1); });
538
- route = path;
539
- }
540
- if (route[0][0] && route[0][1] && route[route.length - 1][0] && route[route.length - 1][1]) {
541
- this.originDestinationCordinates.push(route);
542
- route.map((item) => {
543
- this.bounds.extend(item);
544
- });
545
- }
546
- }
547
- if (showAllFitbound) {
548
- const padding = { top: this.padding.top, bottom: (this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65))), left: this.padding.left, right: this.padding.right };
549
- setTimeout(() => {
550
- if (showAllFitbound && (Object.keys(this.bounds).length > 0))
551
- this.map.fitBounds(this.bounds, { padding }, { fitboundComplete: true });
552
- }, 100);
553
- this.map.once('moveend', (event) => { if (event.fitboundComplete) {
554
- resolve(true);
555
- } });
556
- }
557
- });
558
- }
559
- extendReBound(bottom) {
560
- return new Promise((resolve, reject) => {
561
- this.bounds = new LngLatBounds();
562
- if (this.originDestinationCordinates.length >= 0) {
563
- this.originDestinationCordinates.map((item, index) => {
564
- item.map((route) => {
565
- this.bounds.extend(route);
566
- });
567
- if (index === (this.originDestinationCordinates.length - 1)) {
568
- const padding = { top: this.padding.top, bottom: (this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65))), left: this.padding.left, right: this.padding.right };
569
- setTimeout(() => {
570
- if (this.originDestinationCordinates.length > 0)
571
- this.map.fitBounds(this.bounds, { padding });
572
- }, 500);
573
- resolve(true);
574
- }
575
- });
576
- }
577
- else {
578
- resolve(true);
579
- }
580
- });
581
- }
582
- plotRoute(route, i, type, enablefitbound, showAllFitbound) {
583
- return new Promise((resolve, reject) => {
584
- let param = {};
585
- if (['jobcode'].includes(type)) {
586
- param['job'] = route['job_id'];
587
- this.utils.postDataWithRestUrl('schedule/job/path', param).subscribe((res) => {
588
- if (res['data']['route']) {
589
- let path = res['data']['route'].split(';');
590
- path = path.map((ele) => { return ele = this.formateLatLong(ele); });
591
- path.forEach((ele, index) => { if (ele.length === 1)
592
- path.splice(index, 1); });
593
- route['path'] = path;
594
- this.extendBound(route['path'], showAllFitbound);
595
- if (route['path'] && route['path'].length > 0)
596
- this.drawLine(route['path'], i, route, enablefitbound, type);
597
- route['index'] = i;
598
- }
599
- else {
600
- this.extendBound(null, showAllFitbound);
601
- }
602
- resolve(true);
603
- }, (err) => { if (err) {
604
- reject(false);
605
- } });
606
- }
607
- else if (['jobrouteList', 'addroute'].includes(type)) {
608
- if (route['path'] && route['path'].length > 0) {
609
- let path = route['path'].split(';');
610
- path = path.map((ele) => { return ele = this.formateLatLong(ele); });
611
- path.forEach((ele, index) => { if (ele.length === 1)
612
- path.splice(index, 1); });
613
- this.extendBound(path, showAllFitbound);
614
- this.drawLine(path, i, route, enablefitbound, type);
615
- }
616
- ;
617
- }
618
- });
619
- }
620
- clearBound() { this.bounds = new LngLatBounds(); this.originDestinationCordinates = []; this.clearPadding(); }
621
- formateLatLong(latlong) { return latlong ? latlong.split(',').map(x => +x).reverse() : null; }
622
- clearBoundWithCordinates() {
623
- this.bounds = new LngLatBounds();
624
- this.originDestinationCordinates = [];
625
- }
626
- onResize(event) {
627
- if (!this.bounds.isEmpty()) {
628
- this.windowActualHeightWidth.availHeight = (window.innerHeight > window.screen.availHeight) ? window.innerHeight : window.screen.availHeight;
629
- setTimeout(() => {
630
- this.map.fitBounds(this.bounds, { padding: { top: this.padding.top, bottom: this.padding.bottom + (this.windowActualHeightWidth.availHeight - (event.target.innerHeight - 65)), left: this.padding.left, right: this.padding.right } });
631
- }, 500);
632
- }
633
- }
634
- setWindowHeight(screen) {
635
- this.windowActualHeightWidth.availHeight = screen;
636
- }
637
- setPadding(padding) { this.padding = padding; }
638
- clearPadding() { this.padding = null; }
639
- removeJobFromMap(data) {
640
- data.map((ele, index) => {
641
- const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);
642
- this.removeRouteAndMarker(id);
643
- if (index === (data.length - 1)) {
644
- this.extendReBound();
645
- }
646
- });
647
- }
648
- }
649
- CoolmapService.ɵprov = ɵɵdefineInjectable({ factory: function CoolmapService_Factory() { return new CoolmapService(ɵɵinject(UtilsService), ɵɵinject(EventManager)); }, token: CoolmapService, providedIn: "root" });
650
- CoolmapService.decorators = [
651
- { type: Injectable, args: [{ providedIn: 'root' },] }
652
- ];
653
- CoolmapService.ctorParameters = () => [
654
- { type: UtilsService },
655
- { type: EventManager }
656
- ];
50
+ class UtilsService {
51
+ constructor(http, snackBar, config) {
52
+ this.http = http;
53
+ this.snackBar = snackBar;
54
+ this.config = config;
55
+ this.analyticsRESTURL = '';
56
+ this.RESTURLPrefix = '';
57
+ this.pickupOptions = [];
58
+ this.destOptions = [];
59
+ this.ownerOptions = [];
60
+ this.customerOptions = [];
61
+ this.unitOptions = [];
62
+ this.materialOptions = [];
63
+ this.jcodeOptions = [];
64
+ this.driverOption = [];
65
+ this.truckingCompanayOption = [];
66
+ this.routeNameOptions = [];
67
+ this.preventnavChange = new BehaviorSubject(false);
68
+ this.navChangeObserve = this.preventnavChange.asObservable();
69
+ this.clearViewRouteforJobCode = new BehaviorSubject(false);
70
+ this.clearViewRouteforJobCodeObserve = this.clearViewRouteforJobCode.asObservable();
71
+ this.preVentJobdetailclose = new BehaviorSubject(false);
72
+ this.getpreVentJobdetailclose = this.preVentJobdetailclose.asObservable();
73
+ this.routeDetailsUtility = new BehaviorSubject({});
74
+ this.getrouteDetailsUtility = this.routeDetailsUtility.asObservable();
75
+ this.removeMapEntity = new BehaviorSubject({});
76
+ this.removeMapEntityUtility = this.removeMapEntity.asObservable();
77
+ this.dict = new Map();
78
+ this.analyticsRESTURL = config.analyticsRESTURL;
79
+ this.RESTURLPrefix = config.RESTURLPrefix;
80
+ }
81
+ getDateFormat(strVal, seprater) {
82
+ seprater = seprater ? seprater : '-';
83
+ const mydate = strVal;
84
+ return (mydate === null || mydate === void 0 ? void 0 : mydate.getFullYear()) + seprater + ((mydate ? mydate.getMonth() : 0) + 1) + seprater + (mydate === null || mydate === void 0 ? void 0 : mydate.getDate());
85
+ }
86
+ getData(path) { return this.http.get(`${this.analyticsRESTURL}${this.config.repository}/${path}`); }
87
+ postdata(path, data) { return this.http.post(`${this.analyticsRESTURL}${this.config.repository}/${path}`, data); }
88
+ postDataWithRestUrl(path, data) { return this.http.post(`${this.RESTURLPrefix}${path}`, data); }
89
+ fetchAutoCompleteLocations(keyword) {
90
+ return this.http.get(`https://api.mapbox.com/geocoding/v5/mapbox.places/${keyword}.json?access_token=pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ&country=US`);
91
+ }
92
+ openSnackBar(message, className) {
93
+ this.snackBar.open(message, '', {
94
+ duration: 5000, verticalPosition: 'top', horizontalPosition: 'center', panelClass: [className ? className : 'default']
95
+ });
96
+ }
97
+ makeOptions(item) {
98
+ var _a;
99
+ if (item.order_number) {
100
+ (this.jcodeOptions.findIndex((elem) => elem.job_id === item.job_id) === -1) ? this.jcodeOptions.push({ job_code: item.order_number, job_id: item.job_id }) : null;
101
+ if (item.driver_list && ((_a = item.driver_list) === null || _a === void 0 ? void 0 : _a.length) > 0) {
102
+ item.driver_list.forEach((driver) => {
103
+ this.driverOption.findIndex(elem => elem === driver['driver_name']) === -1 ? this.driverOption.push(driver['driver_name']) : null;
104
+ this.truckingCompanayOption.findIndex(elem => elem === driver['trucking_company']) === -1 ? this.truckingCompanayOption.push(driver['trucking_company']) : null;
105
+ });
106
+ }
107
+ }
108
+ ((this.pickupOptions.findIndex((elem) => elem === item.pickup_location)) === -1) ? this.pickupOptions.push(item.pickup_location) : null;
109
+ ((this.destOptions.findIndex((elem) => elem === item.delivery_location)) === -1) ? this.destOptions.push(item.delivery_location) : null;
110
+ (this.customerOptions.findIndex((customer) => customer === item.customer_name) === -1) ? this.customerOptions.push(item.customer_name) : null;
111
+ (this.unitOptions.findIndex((elem) => elem === item.unit) === -1) ? this.unitOptions.push(item.unit) : null;
112
+ (this.materialOptions.findIndex((elem) => elem === item.material) === -1) ? this.materialOptions.push(item.material) : null;
113
+ if (item.route_name)
114
+ this.routeNameOptions.findIndex(elem => elem === item.route_name) === -1 ? this.routeNameOptions.push(item.route_name) : null;
115
+ }
116
+ filter(value, filters) {
117
+ if (typeof value !== 'string') {
118
+ return [];
119
+ }
120
+ const filterValue = value.toLowerCase();
121
+ if (filterValue === '') {
122
+ return [];
123
+ }
124
+ const searchResults = [];
125
+ this.unitOptions.map(unit => {
126
+ if (unit.toLowerCase().includes(filterValue)) {
127
+ searchResults.push({ "type": "unit", "label": unit, "value": unit });
128
+ }
129
+ });
130
+ this.customerOptions.map(unit => {
131
+ if (unit.toLowerCase().includes(filterValue)) {
132
+ searchResults.push({ "type": "customer", "label": unit, "value": unit });
133
+ }
134
+ });
135
+ this.materialOptions.map(unit => {
136
+ if (unit.toLowerCase().includes(filterValue)) {
137
+ searchResults.push({ "type": "material", "label": unit, "value": unit });
138
+ }
139
+ });
140
+ this.pickupOptions.map(unit => {
141
+ if (unit.toLowerCase().includes(filterValue)) {
142
+ searchResults.push({ "type": "pickup location", "label": unit, "value": unit });
143
+ }
144
+ });
145
+ this.destOptions.map(unit => {
146
+ if (unit.toLowerCase().includes(filterValue)) {
147
+ searchResults.push({ "type": "destination location", "label": unit, "value": unit });
148
+ }
149
+ });
150
+ this.jcodeOptions.map(unit => {
151
+ if (unit.job_code.toLowerCase().includes(filterValue)) {
152
+ searchResults.push({ "type": "job", "label": unit['job_code'], "value": unit });
153
+ }
154
+ });
155
+ this.driverOption.map(unit => {
156
+ if (unit.toLowerCase().includes(filterValue)) {
157
+ searchResults.push({ "type": "Driver", "label": unit, "value": unit });
158
+ }
159
+ });
160
+ this.truckingCompanayOption.map(unit => {
161
+ if (unit.toLowerCase().includes(filterValue)) {
162
+ searchResults.push({ "type": "Trucking Company", "label": unit, "value": unit });
163
+ }
164
+ });
165
+ this.routeNameOptions.map(unit => {
166
+ if (unit.toLowerCase().includes(filterValue)) {
167
+ searchResults.push({ "type": "Route name", "label": unit, "value": unit });
168
+ }
169
+ });
170
+ const searchDict = {};
171
+ filters.map((filter) => {
172
+ searchDict[filter['name'] + filter['type']] = filter;
173
+ });
174
+ const furtherFilter = [];
175
+ searchResults.map(search => {
176
+ if ((search['label'] + search['type']) in searchDict) { }
177
+ else {
178
+ furtherFilter.push(search);
179
+ }
180
+ });
181
+ return furtherFilter;
182
+ }
183
+ getSearchResults(list, filterval) {
184
+ return list.filter(element => {
185
+ var _a, _b;
186
+ const result_list_boolean = [];
187
+ if (filterval.length > 0) {
188
+ if (filterval[0]['type'] === 'unit') {
189
+ result_list_boolean.push(filterval[0]['name'] === element[filterval[0]['type']]);
190
+ }
191
+ if (filterval[0]['type'] === 'customer') {
192
+ result_list_boolean.push(filterval[0]['name'] === element['customer_name']);
193
+ }
194
+ if (filterval[0]['type'] === 'material') {
195
+ result_list_boolean.push(filterval[0]['name'] === element[filterval[0]['type']]);
196
+ }
197
+ if (filterval[0]['type'] === 'pickup location') {
198
+ result_list_boolean.push(filterval[0]['name'] === element['pickup_location']);
199
+ }
200
+ if (filterval[0]['type'] === 'destination location') {
201
+ result_list_boolean.push(filterval[0]['name'] === element['delivery_location']);
202
+ }
203
+ if (filterval[0]['type'] === 'job') {
204
+ result_list_boolean.push(filterval[0]['name'] === element['order_number']);
205
+ }
206
+ if (filterval[0]['type'] === 'Route name') {
207
+ result_list_boolean.push(filterval[0]['name'] === element['route_name']);
208
+ }
209
+ if (filterval[0]['type'] === 'Driver') {
210
+ const index = (_a = element.driver_list) === null || _a === void 0 ? void 0 : _a.findIndex(ele => { return filterval[0]['name'] === ele['driver_name']; });
211
+ if (index !== -1)
212
+ result_list_boolean.push(true);
213
+ }
214
+ if (filterval[0]['type'] === 'Trucking Company') {
215
+ const index = (_b = element.driver_list) === null || _b === void 0 ? void 0 : _b.findIndex(ele => { return filterval[0]['name'] === ele['trucking_company']; });
216
+ if (index !== -1)
217
+ result_list_boolean.push(true);
218
+ }
219
+ }
220
+ if (result_list_boolean.length > 0) {
221
+ return result_list_boolean.reduce((prev, curr) => prev && curr);
222
+ }
223
+ return false;
224
+ });
225
+ }
226
+ clearOptions() {
227
+ this.pickupOptions = [];
228
+ this.destOptions = [];
229
+ this.ownerOptions = [];
230
+ this.customerOptions = [];
231
+ this.unitOptions = [];
232
+ this.materialOptions = [];
233
+ this.jcodeOptions = [];
234
+ this.routeNameOptions = [];
235
+ }
236
+ setdictValue(key, value) {
237
+ this.dict.set(key, value);
238
+ }
239
+ getdictValue(key) {
240
+ return JSON.parse(this.dict.get(key));
241
+ }
242
+ removedictValue(key) {
243
+ this.dict.delete(key);
244
+ }
245
+ conveySearchIcon(value) {
246
+ if (value && typeof (value) !== 'object')
247
+ return true;
248
+ return false;
249
+ }
250
+ fetchUnitsList() {
251
+ return new Promise((resolve, reject) => {
252
+ if (!this.unitsList) {
253
+ this.getData('unit/list/view').subscribe((res) => {
254
+ if (res) {
255
+ this.unitsList = res.data;
256
+ resolve(this.unitsList);
257
+ }
258
+ });
259
+ }
260
+ else {
261
+ resolve(this.unitsList);
262
+ }
263
+ });
264
+ }
265
+ fetchMaterialsList() {
266
+ return new Promise((resolve, reject) => {
267
+ if (!this.materialsList) {
268
+ this.getData('material/list/view').subscribe(((res) => {
269
+ res.data.sort((a, b) => a.material.localeCompare(b.material));
270
+ this.materialsList = res.data;
271
+ resolve(this.materialsList);
272
+ }));
273
+ }
274
+ else {
275
+ resolve(this.materialsList);
276
+ }
277
+ });
278
+ }
279
+ fetchCustomersList() {
280
+ return new Promise((resolve, reject) => {
281
+ if (!this.customersList) {
282
+ this.getData('company/list/view').subscribe((res) => {
283
+ if (res) {
284
+ this.customersList = res.data;
285
+ }
286
+ });
287
+ }
288
+ else {
289
+ resolve(this.customersList);
290
+ }
291
+ });
292
+ }
293
+ }
294
+ UtilsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilsService, deps: [{ token: i1.HttpClient }, { token: i2.MatSnackBar }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Injectable });
295
+ UtilsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilsService, providedIn: 'root' });
296
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: UtilsService, decorators: [{
297
+ type: Injectable,
298
+ args: [{ providedIn: 'root' }]
299
+ }], ctorParameters: function () {
300
+ return [{ type: i1.HttpClient }, { type: i2.MatSnackBar }, { type: CoolmapConfigModel, decorators: [{
301
+ type: Inject,
302
+ args: ['memberData']
303
+ }] }];
304
+ } });
657
305
 
658
- class Route {
659
- constructor() {
660
- this.index = 0;
661
- }
662
- }
663
- const EstinationData = ['estimated_distance', 'estimated_time'];
664
- var EstinationEnum;
665
- (function (EstinationEnum) {
666
- EstinationEnum["estimated_distance"] = "miles";
667
- EstinationEnum["estimated_time"] = "time";
668
- })(EstinationEnum || (EstinationEnum = {}));
669
- const JobCodeOverviewData = ['customer_contact', 'delivery_contact', 'pickup_location', 'delivery_location', 'project', 'unit'];
670
- var JobCodeOverviewEnum;
671
- (function (JobCodeOverviewEnum) {
672
- JobCodeOverviewEnum["customer_contact"] = "Customer Contact";
673
- JobCodeOverviewEnum["delivery_contact"] = "Delivery Contact";
674
- JobCodeOverviewEnum["pickup_location"] = "Pickup";
675
- JobCodeOverviewEnum["delivery_location"] = "Delivery";
676
- JobCodeOverviewEnum["project"] = "Project Name";
677
- JobCodeOverviewEnum["unit"] = "Job Type";
678
- })(JobCodeOverviewEnum || (JobCodeOverviewEnum = {}));
679
- const DriversmsCardKey = ['order_number', 'date', 'values', 'material', 'unit', 'pickup_location', 'delivery_location'];
680
- var DriverSmsCardEnum;
681
- (function (DriverSmsCardEnum) {
682
- DriverSmsCardEnum["order_number"] = "Jobcode";
683
- DriverSmsCardEnum["date"] = "Date";
684
- DriverSmsCardEnum["values"] = "Total tasks";
685
- DriverSmsCardEnum["material"] = "Material";
686
- DriverSmsCardEnum["unit"] = "Unit";
687
- DriverSmsCardEnum["pickup_location"] = "Pickup Address";
688
- DriverSmsCardEnum["delivery_location"] = "Delivery Address";
689
- })(DriverSmsCardEnum || (DriverSmsCardEnum = {}));
690
- class PopupData {
306
+ class CoolmapService {
307
+ constructor(utils, eventManager) {
308
+ this.utils = utils;
309
+ this.eventManager = eventManager;
310
+ this.markerOriginList = [];
311
+ this.markerDestinationList = [];
312
+ this.initiatecoolmap = new BehaviorSubject(true);
313
+ this.reintiatecoolmap = this.initiatecoolmap.asObservable();
314
+ this.bounds = new mapboxgl.LngLatBounds();
315
+ this.originDestinationCordinates = [];
316
+ this.eventManager.addGlobalEventListener('window', 'resize', this.onResize.bind(this));
317
+ this.windowActualHeightWidth = { availHeight: 0 };
318
+ }
319
+ initiateMapForAddRoute(el) {
320
+ return new Promise((resolve, reject) => {
321
+ if (this.map)
322
+ this.map.remove();
323
+ this.map = new mapboxgl.Map({
324
+ accessToken: 'pk.eyJ1Ijoic2FudGFudS1vZ21hIiwiYSI6ImNsOGQ0cDVrNjAweTMzb3RmdG9ieTU5ZDkifQ.I6ZS7mViZYSvBo4zz-mGQQ',
325
+ container: el,
326
+ style: 'mapbox://styles/santanu-ogma/cl8ep33uz003414n1twlosz9d',
327
+ center: [-77.036873, 38.907192],
328
+ zoom: 10, bearing: 0, pitch: 65, interactive: true,
329
+ });
330
+ this.map.once('load', (res) => {
331
+ resolve(res);
332
+ });
333
+ });
334
+ }
335
+ // Below method Load route with animation
336
+ loadMapProperty(pinRouteGeojson, index, unit, route, bottom) {
337
+ return new Promise((resolve, reject) => {
338
+ let origin = pinRouteGeojson.features[0].geometry.coordinates[0];
339
+ const linecolor = (unit === 'Ton') ? '#ff7272' : (unit === 'Load') ? '#a3c52e' : '#ae23d1';
340
+ let destination = pinRouteGeojson.features[0].geometry.coordinates[pinRouteGeojson.features[0].geometry.coordinates.length - 1];
341
+ this.extendBound(pinRouteGeojson.features[0].geometry.coordinates, true).then((res) => {
342
+ const point = {
343
+ 'type': 'FeatureCollection',
344
+ 'features': [
345
+ { 'type': 'Feature', 'properties': {}, 'geometry': { 'type': 'Point', 'coordinates': origin } }
346
+ ]
347
+ };
348
+ const lineDistance = turf.length(pinRouteGeojson.features[0]);
349
+ const arc = [];
350
+ const steps = 10 * pinRouteGeojson.features[0].geometry.coordinates.length;
351
+ for (let i = 0; i < lineDistance; i += lineDistance / steps) {
352
+ const segment = turf.along(pinRouteGeojson.features[0], i);
353
+ arc.push(segment.geometry.coordinates);
354
+ }
355
+ pinRouteGeojson.features[0].geometry.coordinates = arc;
356
+ const pinRoute = pinRouteGeojson.features[0].geometry.coordinates;
357
+ const marker = new mapboxgl.Marker(document.createElement('div'))
358
+ .setLngLat(pinRoute[0]).addTo(this.map).togglePopup();
359
+ if (this.map.getSource(`line${index}`)) {
360
+ this.removeRouteAndMarker(index).then(() => { });
361
+ }
362
+ this.map.addSource(`line${index}`, { type: 'geojson', lineMetrics: true, data: pinRouteGeojson });
363
+ this.map.addLayer({
364
+ type: 'line',
365
+ source: `line${index}`,
366
+ id: `line${index}`,
367
+ paint: {
368
+ 'line-width': 2,
369
+ 'line-gradient': [
370
+ 'interpolate',
371
+ ['linear'],
372
+ ['line-progress'],
373
+ 0, unit === 'Ton' ? '#d7f7e4' : unit === 'Load' ? '#c9d8f5' : '#f5dcc1',
374
+ 1, unit === 'Ton' ? '#ff7272' : unit === 'Load' ? '#a3c52e' : '#ae23d1',
375
+ ]
376
+ },
377
+ layout: { 'line-cap': 'round', 'line-join': 'round' }
378
+ });
379
+ const dataSetForMap = {
380
+ counter: 0, pinRouteGeojson, steps,
381
+ point, pointId: `point${index}`,
382
+ marker, pinRoute, lineId: `line${index}`, index,
383
+ origin, destination, lineDistance,
384
+ linecolor, route, isViewRoute: true
385
+ };
386
+ this.createMarker(dataSetForMap);
387
+ this.map.on('mouseenter', `line${index}`, (e) => {
388
+ this.map.setPaintProperty(`line${index}`, 'line-width', 5);
389
+ this.map.setPaintProperty(`line${index}`, 'line-opacity', 1);
390
+ const datasetForPopup = {
391
+ coordinate: [e.lngLat.lng, e.lngLat.lat],
392
+ pickup: route.pickup_location ? route.pickup_location : '',
393
+ drop: route.delivery_location ? route.delivery_location : '',
394
+ routeType: route.project ? 'Project' : 'Route',
395
+ title: route.project ? route.project : route.route_name ? route.route_name : '',
396
+ material: route.material ? route.material : '',
397
+ type: route.unit ? route.unit : ''
398
+ };
399
+ this.createPopup(datasetForPopup);
400
+ });
401
+ this.map.on('mouseleave', `line${index}`, (e) => {
402
+ this.map.setPaintProperty(`line${index}`, 'line-width', 2);
403
+ if (this.popup) {
404
+ this.popup.remove();
405
+ }
406
+ });
407
+ });
408
+ this.map.once('idle', (res) => {
409
+ resolve(true);
410
+ });
411
+ });
412
+ }
413
+ // Below method Load route without animation
414
+ drawLine(cordinates, index, route, enablefitbound, routeType) {
415
+ let linecolor;
416
+ let origin = cordinates[0];
417
+ let destination = cordinates[cordinates.length - 1];
418
+ if (origin[0] && origin[1] && destination && destination[0] && destination[1]) {
419
+ linecolor = this.provideLineColor(route['unit'], routeType);
420
+ if (enablefitbound) {
421
+ const padding = {
422
+ top: this.padding.top, bottom: this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65)),
423
+ left: this.padding.left, right: this.padding.right
424
+ };
425
+ this.map.fitBounds([origin, destination], { padding }, { fitboundCompleteJob: true });
426
+ }
427
+ if (this.map.getSource(`route-source-for-job-code${index}`)) {
428
+ this.removeRouteAndMarker(index).then(() => { });
429
+ }
430
+ this.map.addSource(`route-source-for-job-code${index}`, {
431
+ 'type': 'geojson',
432
+ 'data': { 'type': 'Feature', 'properties': {}, 'geometry': { 'type': 'LineString', 'coordinates': cordinates } }
433
+ });
434
+ this.map.addLayer({
435
+ 'id': `route-for-job-code${index}`, 'type': 'line', 'source': `route-source-for-job-code${index}`,
436
+ paint: { 'line-color': linecolor, 'line-width': 2 },
437
+ layout: { 'line-cap': 'round', 'line-join': 'round' }
438
+ });
439
+ const dataSetForMap = {
440
+ origin, destination, index, linecolor, route
441
+ };
442
+ this.createMarker(dataSetForMap);
443
+ this.map.on('mouseenter', `route-for-job-code${index}`, (e) => {
444
+ if (this.popup) {
445
+ this.popup.remove();
446
+ }
447
+ this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 5);
448
+ this.map.setPaintProperty(`route-for-job-code${index}`, 'line-opacity', 1);
449
+ const datasetForPopup = {
450
+ coordinate: [e.lngLat.lng, e.lngLat.lat],
451
+ pickup: route.pickup_location ? route.pickup_location : '',
452
+ drop: route.delivery_location ? route.delivery_location : '',
453
+ jobCode: route.project ? route.order_number : null,
454
+ customer: route.project ? route.customer_name : null,
455
+ routeType: route.project ? 'Project' : 'Route',
456
+ title: route.project ? route.project : route.route_name ? route.route_name : '',
457
+ material: route.material ? route.material : '',
458
+ type: route.unit ? route.unit : ''
459
+ };
460
+ this.createPopup(datasetForPopup);
461
+ });
462
+ this.map.on('mouseleave', `route-for-job-code${index}`, (e) => {
463
+ this.map.setPaintProperty(`route-for-job-code${index}`, 'line-width', 2);
464
+ if (this.popup) {
465
+ this.popup.remove();
466
+ }
467
+ });
468
+ }
469
+ }
470
+ provideLineColor(unitType, type) {
471
+ let checkType = (type && !['jobrouteList', 'addroute'].includes(type)) ? true : false;
472
+ let color;
473
+ switch (unitType) {
474
+ case "Ton":
475
+ color = checkType ? '#39c471' : '#ff7272';
476
+ break;
477
+ case "Load":
478
+ color = checkType ? '#326ad3' : '#a3c52e';
479
+ break;
480
+ case "Hourly":
481
+ color = checkType ? '#ffad56' : '#ae23d1';
482
+ break;
483
+ }
484
+ return color;
485
+ }
486
+ showRoutePopup(arcDetails, event, isViewRoute) {
487
+ if (this.popup) {
488
+ this.popup.remove();
489
+ this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-width', 2);
490
+ }
491
+ if (arcDetails.color && this.map.getLayoutProperty(arcDetails.layer.id, 'visibility') !== 'none') {
492
+ this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-width', 5);
493
+ this.map.setPaintProperty(`${isViewRoute ? 'line' : 'route-for-job-code'}${arcDetails.layer.props.data.index}`, 'line-opacity', 1);
494
+ const datasetForPopup = {
495
+ coordinate: arcDetails.coordinate,
496
+ pickup: arcDetails.layer.props.data.route.pickup_location ? arcDetails.layer.props.data.route.pickup_location : '',
497
+ drop: arcDetails.layer.props.data.route.delivery_location ? arcDetails.layer.props.data.route.delivery_location : '',
498
+ jobCode: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.order_number : '',
499
+ customer: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.customer_name : '',
500
+ routeType: arcDetails.layer.props.data.route.project ? 'Project' : 'Route',
501
+ title: arcDetails.layer.props.data.route.project ? arcDetails.layer.props.data.route.project : arcDetails.layer.props.data.route.route_name ? arcDetails.layer.props.data.route.route_name : '',
502
+ material: arcDetails.layer.props.data.route.material ? arcDetails.layer.props.data.route.material : '',
503
+ type: arcDetails.layer.props.data.route.unit ? arcDetails.layer.props.data.route.unit : ''
504
+ };
505
+ this.createPopup(datasetForPopup);
506
+ }
507
+ }
508
+ createPopup(datasetForPopup) {
509
+ this.popup = new mapboxgl.Popup({
510
+ closeButton: false,
511
+ closeOnClick: false,
512
+ closeOnMove: true,
513
+ anchor: 'bottom-left'
514
+ });
515
+ this.popup.setLngLat(datasetForPopup.coordinate)
516
+ .setHTML(`
517
+ <div class="destination">
518
+ <div class="duration">
519
+ <p class="pickprt"><b>Pickup Location:</b> ${datasetForPopup.pickup}</p>
520
+ <p class="dropprt"><b>Drop Location:</b> ${datasetForPopup.drop}</p>
521
+ </div>
522
+ ${datasetForPopup.jobCode ? '<span><b>Job Code:</b> ' + datasetForPopup.jobCode + '</span>' : ''}
523
+ ${datasetForPopup.customer ? '<span><b>Customer:</b> ' + datasetForPopup.customer + '</span>' : ''}
524
+ <span><b>${datasetForPopup.routeType} Name:</b> ${datasetForPopup.title}</span>
525
+ <span><b>Material:</b> ${datasetForPopup.material}</span>
526
+ <span><b>Type:</b> ${datasetForPopup.type}</span>
527
+ </div>
528
+ `)
529
+ .addTo(this.map);
530
+ }
531
+ hexToRGB(hex) {
532
+ return hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (m, r, g, b) => '#' + r + r + g + g + b + b)
533
+ .substring(1).match(/.{2}/g)
534
+ .map(x => parseInt(x, 16));
535
+ }
536
+ createMarker(routeDetails) {
537
+ var _a, _b;
538
+ if (routeDetails.origin[0] && routeDetails.origin[1] && routeDetails.destination[0] && routeDetails.destination[1]) {
539
+ const popup = new mapboxgl.Popup({ closeButton: false }).setHTML('<b>Pickup: </b>' + ((_a = routeDetails.route) === null || _a === void 0 ? void 0 : _a.pickup_location));
540
+ const popupForDestination = new mapboxgl.Popup({ closeButton: false })
541
+ .setHTML('<b>Delivery: </b>' + ((_b = routeDetails.route) === null || _b === void 0 ? void 0 : _b.delivery_location));
542
+ const el = document.createElement('div');
543
+ el.className = 'marker';
544
+ el.innerHTML = `<span class='markerPointer' style='background:${routeDetails.linecolor}'><b>P</b><span class='markerSpan' style='border-top: 10px solid ${routeDetails.linecolor}'></span></span>`;
545
+ const originMarker = new mapboxgl.Marker(el)
546
+ .setPopup(popup).setLngLat(routeDetails.origin).addTo(this.map);
547
+ originMarker.getElement().addEventListener('mouseenter', () => originMarker.togglePopup());
548
+ originMarker.getElement().addEventListener('mouseleave', () => originMarker.togglePopup());
549
+ const elementForDestination = document.createElement('div');
550
+ elementForDestination.className = 'marker';
551
+ elementForDestination.innerHTML = `<span class='markerPointer' style='background:${routeDetails.linecolor}'><b>D</b><span class='markerSpan' style='border-top: 10px solid ${routeDetails.linecolor}'></span></span>`;
552
+ const destinationMarker = new mapboxgl.Marker(elementForDestination).setPopup(popupForDestination).setLngLat(routeDetails.destination).addTo(this.map);
553
+ destinationMarker.getElement().addEventListener('mouseenter', () => destinationMarker.togglePopup());
554
+ destinationMarker.getElement().addEventListener('mouseleave', () => destinationMarker.togglePopup());
555
+ this.markerOriginList[routeDetails.index] = originMarker;
556
+ this.markerDestinationList[routeDetails.index] = destinationMarker;
557
+ const colorArray = this.hexToRGB(routeDetails.linecolor);
558
+ const arcLayer = new MapboxLayer({
559
+ id: 'arc-layer' + routeDetails.index,
560
+ type: ArcLayer,
561
+ pickable: true,
562
+ data: { route: routeDetails.route, index: routeDetails.index },
563
+ getWidth: 1,
564
+ getSourcePosition: routeDetails.origin,
565
+ getTargetPosition: routeDetails.destination,
566
+ getTargetColor: [255, 255, 255],
567
+ getSourceColor: [colorArray[0], colorArray[1], colorArray[2]],
568
+ onHover: (info, event) => this.showRoutePopup(info, event, routeDetails.isViewRoute),
569
+ });
570
+ this.map.addLayer(arcLayer);
571
+ }
572
+ }
573
+ removeRouteAndMarker(index) {
574
+ return __awaiter(this, void 0, void 0, function* () {
575
+ if (this.map) {
576
+ this.map.getLayer(`arc-layer${index}`) ? this.map.removeLayer(`arc-layer${index}`) : '';
577
+ this.map.getLayer(`line${index}`) ? this.map.removeLayer(`line${index}`) : '';
578
+ this.map.getLayer(`custom_layer${index}`) ? this.map.removeLayer(`custom_layer${index}`) : '';
579
+ this.map.getSource(`line${index}`) ? this.map.removeSource(`line${index}`) : '';
580
+ this.map.getLayer(`route-for-job-code${index}`) ? this.map.removeLayer(`route-for-job-code${index}`) : '';
581
+ this.map.getSource(`route-source-for-job-code${index}`) ? this.map.removeSource(`route-source-for-job-code${index}`) : '';
582
+ this.findMarkerBound(index);
583
+ this.markerOriginList[index] ? this.markerOriginList[index].remove() : '';
584
+ this.markerDestinationList[index] ? this.markerDestinationList[index].remove() : '';
585
+ yield true;
586
+ }
587
+ });
588
+ }
589
+ findMarkerBound(index) {
590
+ const indexOfCordinates = this.originDestinationCordinates.findIndex((x) => { var _a, _b, _c, _d; return (x[0][0].toFixed(6) == ((_b = (_a = this.markerOriginList[index]) === null || _a === void 0 ? void 0 : _a.getLngLat()) === null || _b === void 0 ? void 0 : _b.lng.toFixed(6))) && (x[0][1].toFixed(6) == ((_d = (_c = this.markerOriginList[index]) === null || _c === void 0 ? void 0 : _c.getLngLat()) === null || _d === void 0 ? void 0 : _d.lat.toFixed(6))); });
591
+ if (indexOfCordinates >= 0) {
592
+ this.originDestinationCordinates.splice(indexOfCordinates, 1);
593
+ }
594
+ }
595
+ filterRoute(ID, visibility, showAllFitbound) {
596
+ return __awaiter(this, void 0, void 0, function* () {
597
+ if (ID) {
598
+ if (this.map.getLayer(`route-for-job-code${ID}`)) {
599
+ this.map.setLayoutProperty(`route-for-job-code${ID}`, 'visibility', visibility);
600
+ const originM = this.markerOriginList[ID].getElement();
601
+ originM.style.display = ((visibility === 'visible') ? 'block' : visibility);
602
+ const destinationM = this.markerDestinationList[ID].getElement();
603
+ destinationM.style.display = ((visibility === 'visible') ? 'block' : visibility);
604
+ if (visibility === 'none' && showAllFitbound) {
605
+ this.findMarkerBound(ID);
606
+ this.extendReBound();
607
+ }
608
+ }
609
+ if (this.map.getLayer(`arc-layer${ID}`)) {
610
+ this.map.setLayoutProperty(`arc-layer${ID}`, 'visibility', visibility);
611
+ }
612
+ }
613
+ yield true;
614
+ });
615
+ }
616
+ extendBound(route, showAllFitbound) {
617
+ return new Promise((resolve, reject) => {
618
+ if (route) {
619
+ if (typeof route === 'string') {
620
+ let path = route.split(';');
621
+ path = path.map((ele) => { return ele = this.formateLatLong(ele); });
622
+ path.forEach((ele, index) => {
623
+ if (ele.length === 1)
624
+ path.splice(index, 1);
625
+ });
626
+ route = path;
627
+ }
628
+ if (route[0][0] && route[0][1] && route[route.length - 1][0] && route[route.length - 1][1]) {
629
+ this.originDestinationCordinates.push(route);
630
+ route.map((item) => {
631
+ this.bounds.extend(item);
632
+ });
633
+ }
634
+ }
635
+ if (showAllFitbound) {
636
+ const padding = { top: this.padding.top, bottom: (this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65))), left: this.padding.left, right: this.padding.right };
637
+ setTimeout(() => {
638
+ if (showAllFitbound && (Object.keys(this.bounds).length > 0))
639
+ this.map.fitBounds(this.bounds, { padding }, { fitboundComplete: true });
640
+ }, 100);
641
+ this.map.once('moveend', (event) => {
642
+ if (event.fitboundComplete) {
643
+ resolve(true);
644
+ }
645
+ });
646
+ }
647
+ });
648
+ }
649
+ extendReBound(bottom) {
650
+ return new Promise((resolve, reject) => {
651
+ this.bounds = new mapboxgl.LngLatBounds();
652
+ if (this.originDestinationCordinates.length >= 0) {
653
+ this.originDestinationCordinates.map((item, index) => {
654
+ item.map((route) => {
655
+ this.bounds.extend(route);
656
+ });
657
+ if (index === (this.originDestinationCordinates.length - 1)) {
658
+ const padding = { top: this.padding.top, bottom: (this.padding.bottom + (this.windowActualHeightWidth.availHeight - (window.innerHeight - 65))), left: this.padding.left, right: this.padding.right };
659
+ setTimeout(() => {
660
+ if (this.originDestinationCordinates.length > 0)
661
+ this.map.fitBounds(this.bounds, { padding });
662
+ }, 500);
663
+ resolve(true);
664
+ }
665
+ });
666
+ }
667
+ else {
668
+ resolve(true);
669
+ }
670
+ });
671
+ }
672
+ plotRoute(route, i, type, enablefitbound, showAllFitbound) {
673
+ return new Promise((resolve, reject) => {
674
+ let param = {};
675
+ if (['jobcode'].includes(type)) {
676
+ param['job'] = route['job_id'];
677
+ this.utils.postDataWithRestUrl('schedule/job/path', param).subscribe((res) => {
678
+ if (res['data']['route']) {
679
+ let path = res['data']['route'].split(';');
680
+ path = path.map((ele) => { return ele = this.formateLatLong(ele); });
681
+ path.forEach((ele, index) => {
682
+ if (ele.length === 1)
683
+ path.splice(index, 1);
684
+ });
685
+ route['path'] = path;
686
+ this.extendBound(route['path'], showAllFitbound);
687
+ if (route['path'] && route['path'].length > 0)
688
+ this.drawLine(route['path'], i, route, enablefitbound, type);
689
+ route['index'] = i;
690
+ }
691
+ else {
692
+ this.extendBound(null, showAllFitbound);
693
+ }
694
+ resolve(true);
695
+ }, (err) => {
696
+ if (err) {
697
+ reject(false);
698
+ }
699
+ });
700
+ }
701
+ else if (['jobrouteList', 'addroute'].includes(type)) {
702
+ if (route['path'] && route['path'].length > 0) {
703
+ let path = route['path'].split(';');
704
+ path = path.map((ele) => { return ele = this.formateLatLong(ele); });
705
+ path.forEach((ele, index) => {
706
+ if (ele.length === 1)
707
+ path.splice(index, 1);
708
+ });
709
+ this.extendBound(path, showAllFitbound);
710
+ this.drawLine(path, i, route, enablefitbound, type);
711
+ }
712
+ ;
713
+ }
714
+ });
715
+ }
716
+ clearBound() { this.bounds = new mapboxgl.LngLatBounds(); this.originDestinationCordinates = []; this.clearPadding(); }
717
+ formateLatLong(latlong) { return latlong ? latlong.split(',').map(x => +x).reverse() : null; }
718
+ clearBoundWithCordinates() {
719
+ this.bounds = new mapboxgl.LngLatBounds();
720
+ this.originDestinationCordinates = [];
721
+ }
722
+ onResize(event) {
723
+ if (!this.bounds.isEmpty()) {
724
+ this.windowActualHeightWidth.availHeight = (window.innerHeight > window.screen.availHeight) ? window.innerHeight : window.screen.availHeight;
725
+ setTimeout(() => {
726
+ this.map.fitBounds(this.bounds, { padding: { top: this.padding.top, bottom: this.padding.bottom + (this.windowActualHeightWidth.availHeight - (event.target.innerHeight - 65)), left: this.padding.left, right: this.padding.right } });
727
+ }, 500);
728
+ }
729
+ }
730
+ setWindowHeight(screen) {
731
+ this.windowActualHeightWidth.availHeight = screen;
732
+ }
733
+ setPadding(padding) { this.padding = padding; }
734
+ clearPadding() { this.padding = null; }
735
+ removeJobFromMap(data) {
736
+ data.map((ele, index) => {
737
+ const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);
738
+ this.removeRouteAndMarker(id);
739
+ if (index === (data.length - 1)) {
740
+ this.extendReBound();
741
+ }
742
+ });
743
+ }
691
744
  }
745
+ CoolmapService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CoolmapService, deps: [{ token: UtilsService }, { token: i2$1.EventManager }], target: i0.ɵɵFactoryTarget.Injectable });
746
+ CoolmapService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CoolmapService, providedIn: 'root' });
747
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: CoolmapService, decorators: [{
748
+ type: Injectable,
749
+ args: [{ providedIn: 'root' }]
750
+ }], ctorParameters: function () { return [{ type: UtilsService }, { type: i2$1.EventManager }]; } });
692
751
 
693
- /*
694
- * Public API Surface of coolmap-services
752
+ /*
753
+ * Public API Surface of coolmap-services
695
754
  */
696
755
 
697
- /**
698
- * Generated bundle index. Do not edit.
756
+ /**
757
+ * Generated bundle index. Do not edit.
699
758
  */
700
759
 
701
- export { CoolmapService, DriverSmsCardEnum, DriversmsCardKey, EstinationData, EstinationEnum, JobCodeOverviewData, JobCodeOverviewEnum, PopupData, Route, UtilsService };
702
- //# sourceMappingURL=coolmap-services.js.map
760
+ export { CoolmapConfigModel, CoolmapService, DriverSmsCardEnum, DriversmsCardKey, EstinationData, EstinationEnum, JobCodeOverviewData, JobCodeOverviewEnum, PopupData, Route, UtilsService };
761
+ //# sourceMappingURL=coolmap-services.mjs.map