@aggdirect/coolmap-services 4.0.8 → 10.2.3
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.
- package/README.md +18 -43
- package/esm2022/aggdirect-coolmap-services.mjs +5 -0
- package/esm2022/lib/service/coolmap.service.mjs +626 -0
- package/esm2022/lib/service/data-model.mjs +90 -0
- package/esm2022/lib/service/utils.service.mjs +363 -0
- package/esm2022/public-api.mjs +7 -0
- package/fesm2022/aggdirect-coolmap-services.mjs +708 -1140
- package/fesm2022/aggdirect-coolmap-services.mjs.map +1 -1
- package/index.d.ts +3 -265
- package/lib/service/coolmap.service.d.ts +47 -0
- package/lib/service/data-model.d.ts +92 -0
- package/lib/service/utils.service.d.ts +61 -0
- package/package.json +29 -6
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export class Route {
|
|
2
|
+
index = 0;
|
|
3
|
+
type;
|
|
4
|
+
// Job Code
|
|
5
|
+
customer_contact;
|
|
6
|
+
customer_name;
|
|
7
|
+
delivery_contact;
|
|
8
|
+
delivery_lat;
|
|
9
|
+
delivery_location;
|
|
10
|
+
delivery_lon;
|
|
11
|
+
driver_list;
|
|
12
|
+
material;
|
|
13
|
+
order_number;
|
|
14
|
+
pickup_lat;
|
|
15
|
+
pickup_location;
|
|
16
|
+
pickup_lon;
|
|
17
|
+
project;
|
|
18
|
+
total_count;
|
|
19
|
+
unit;
|
|
20
|
+
values;
|
|
21
|
+
job_id;
|
|
22
|
+
isSelected;
|
|
23
|
+
date;
|
|
24
|
+
// Add Route
|
|
25
|
+
created_at;
|
|
26
|
+
created_by_name;
|
|
27
|
+
customer_id;
|
|
28
|
+
delivery_lat_lng;
|
|
29
|
+
estimated_distance;
|
|
30
|
+
estimated_time;
|
|
31
|
+
materials_id;
|
|
32
|
+
path;
|
|
33
|
+
pickup_lat_lng;
|
|
34
|
+
route_id;
|
|
35
|
+
route_name;
|
|
36
|
+
unit_id;
|
|
37
|
+
note;
|
|
38
|
+
materialLabel;
|
|
39
|
+
isActive;
|
|
40
|
+
prevent;
|
|
41
|
+
}
|
|
42
|
+
export const EstinationData = ['estimated_distance', 'estimated_time'];
|
|
43
|
+
export var EstinationEnum;
|
|
44
|
+
(function (EstinationEnum) {
|
|
45
|
+
EstinationEnum["estimated_distance"] = "miles";
|
|
46
|
+
EstinationEnum["estimated_time"] = "time";
|
|
47
|
+
})(EstinationEnum || (EstinationEnum = {}));
|
|
48
|
+
export const JobCodeOverviewData = ['order_number', 'customer_name', 'project', 'unit', 'material', 'customer_contact', 'delivery_contact', 'pickup_location', 'delivery_location'];
|
|
49
|
+
export var JobCodeOverviewEnum;
|
|
50
|
+
(function (JobCodeOverviewEnum) {
|
|
51
|
+
JobCodeOverviewEnum["material"] = "Material";
|
|
52
|
+
JobCodeOverviewEnum["order_number"] = "Job Code";
|
|
53
|
+
JobCodeOverviewEnum["customer_name"] = "Customer";
|
|
54
|
+
JobCodeOverviewEnum["customer_contact"] = "Customer Contact";
|
|
55
|
+
JobCodeOverviewEnum["delivery_contact"] = "Delivery Contact";
|
|
56
|
+
JobCodeOverviewEnum["project"] = "Project Name";
|
|
57
|
+
JobCodeOverviewEnum["unit"] = "Job Type";
|
|
58
|
+
JobCodeOverviewEnum["pickup_location"] = "Pickup";
|
|
59
|
+
JobCodeOverviewEnum["delivery_location"] = "Delivery";
|
|
60
|
+
})(JobCodeOverviewEnum || (JobCodeOverviewEnum = {}));
|
|
61
|
+
export const DriversmsCardKey = ['order_number', 'date', 'values', 'material', 'unit', 'pickup_location', 'delivery_location'];
|
|
62
|
+
export var DriverSmsCardEnum;
|
|
63
|
+
(function (DriverSmsCardEnum) {
|
|
64
|
+
DriverSmsCardEnum["order_number"] = "Jobcode";
|
|
65
|
+
DriverSmsCardEnum["date"] = "Date";
|
|
66
|
+
DriverSmsCardEnum["values"] = "Total tasks";
|
|
67
|
+
DriverSmsCardEnum["material"] = "Material";
|
|
68
|
+
DriverSmsCardEnum["unit"] = "Unit";
|
|
69
|
+
DriverSmsCardEnum["pickup_location"] = "Pickup Address";
|
|
70
|
+
DriverSmsCardEnum["delivery_location"] = "Delivery Address";
|
|
71
|
+
})(DriverSmsCardEnum || (DriverSmsCardEnum = {}));
|
|
72
|
+
export class PopupData {
|
|
73
|
+
coordinate;
|
|
74
|
+
pickup;
|
|
75
|
+
jobCode;
|
|
76
|
+
customer;
|
|
77
|
+
drop;
|
|
78
|
+
routeType;
|
|
79
|
+
title;
|
|
80
|
+
material;
|
|
81
|
+
type;
|
|
82
|
+
}
|
|
83
|
+
export class CoolmapConfigModel {
|
|
84
|
+
analyticsRESTURL;
|
|
85
|
+
RESTURLPrefix;
|
|
86
|
+
repository;
|
|
87
|
+
mapboxStyle;
|
|
88
|
+
mapboxAccessToken;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL2xpYi9zZXJ2aWNlL2RhdGEtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLEtBQUs7SUFDaEIsS0FBSyxHQUFXLENBQUMsQ0FBQztJQUNsQixJQUFJLENBQWlCO0lBQ3JCLFdBQVc7SUFDWCxnQkFBZ0IsQ0FBaUI7SUFDakMsYUFBYSxDQUFpQjtJQUM5QixnQkFBZ0IsQ0FBaUI7SUFDakMsWUFBWSxDQUFpQjtJQUM3QixpQkFBaUIsQ0FBNkI7SUFDOUMsWUFBWSxDQUFpQjtJQUM3QixXQUFXLENBQWM7SUFDekIsUUFBUSxDQUFpQjtJQUN6QixZQUFZLENBQWlCO0lBQzdCLFVBQVUsQ0FBaUI7SUFDM0IsZUFBZSxDQUE2QjtJQUM1QyxVQUFVLENBQWlCO0lBQzNCLE9BQU8sQ0FBaUI7SUFDeEIsV0FBVyxDQUFVO0lBQ3JCLElBQUksQ0FBaUI7SUFDckIsTUFBTSxDQUFNO0lBQ1osTUFBTSxDQUFVO0lBQ2hCLFVBQVUsQ0FBVztJQUNyQixJQUFJLENBQVU7SUFDZCxZQUFZO0lBQ1osVUFBVSxDQUFpQjtJQUMzQixlQUFlLENBQWlCO0lBQ2hDLFdBQVcsQ0FBaUI7SUFDNUIsZ0JBQWdCLENBQWlCO0lBQ2pDLGtCQUFrQixDQUFpQjtJQUNuQyxjQUFjLENBQWlCO0lBQy9CLFlBQVksQ0FBaUI7SUFDN0IsSUFBSSxDQUFvQjtJQUN4QixjQUFjLENBQWlCO0lBQy9CLFFBQVEsQ0FBaUI7SUFDekIsVUFBVSxDQUFpQjtJQUMzQixPQUFPLENBQWlCO0lBQ3hCLElBQUksQ0FBaUI7SUFDckIsYUFBYSxDQUFpQjtJQUM5QixRQUFRLENBQVc7SUFDbkIsT0FBTyxDQUFXO0NBQ25CO0FBRUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsb0JBQW9CLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQTtBQUN0RSxNQUFNLENBQU4sSUFBWSxjQUdYO0FBSEQsV0FBWSxjQUFjO0lBQ3hCLDhDQUE0QixDQUFBO0lBQzVCLHlDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFIVyxjQUFjLEtBQWQsY0FBYyxRQUd6QjtBQUVELE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsY0FBYyxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxtQkFBbUIsQ0FBQyxDQUFBO0FBQ25MLE1BQU0sQ0FBTixJQUFZLG1CQVVYO0FBVkQsV0FBWSxtQkFBbUI7SUFDN0IsNENBQXFCLENBQUE7SUFDckIsZ0RBQXlCLENBQUE7SUFDekIsaURBQTBCLENBQUE7SUFDMUIsNERBQXFDLENBQUE7SUFDckMsNERBQXFDLENBQUE7SUFDckMsK0NBQXdCLENBQUE7SUFDeEIsd0NBQWlCLENBQUE7SUFDakIsaURBQTBCLENBQUE7SUFDMUIscURBQThCLENBQUE7QUFDaEMsQ0FBQyxFQVZXLG1CQUFtQixLQUFuQixtQkFBbUIsUUFVOUI7QUFFRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtBQUM5SCxNQUFNLENBQU4sSUFBWSxpQkFRWDtBQVJELFdBQVksaUJBQWlCO0lBQzNCLDZDQUF3QixDQUFBO0lBQ3hCLGtDQUFhLENBQUE7SUFDYiwyQ0FBc0IsQ0FBQTtJQUN0QiwwQ0FBcUIsQ0FBQTtJQUNyQixrQ0FBYSxDQUFBO0lBQ2IsdURBQWtDLENBQUE7SUFDbEMsMkRBQXNDLENBQUE7QUFDeEMsQ0FBQyxFQVJXLGlCQUFpQixLQUFqQixpQkFBaUIsUUFRNUI7QUFFRCxNQUFNLE9BQU8sU0FBUztJQUNwQixVQUFVLENBQW1CO0lBQzdCLE1BQU0sQ0FBZ0I7SUFDdEIsT0FBTyxDQUFpQjtJQUN4QixRQUFRLENBQWlCO0lBQ3pCLElBQUksQ0FBZ0I7SUFDcEIsU0FBUyxDQUFnQjtJQUN6QixLQUFLLENBQWdCO0lBQ3JCLFFBQVEsQ0FBZ0I7SUFDeEIsSUFBSSxDQUFnQjtDQUNyQjtBQUVELE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsZ0JBQWdCLENBQWdCO0lBQ2hDLGFBQWEsQ0FBZ0I7SUFDN0IsVUFBVSxDQUFnQjtJQUMxQixXQUFXLENBQWdCO0lBQzNCLGlCQUFpQixDQUFnQjtDQUNsQyIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0IGNsYXNzIFJvdXRlIHtcbiAgaW5kZXg6IG51bWJlciA9IDA7XG4gIHR5cGU/OiBzdHJpbmcgfCBudWxsO1xuICAvLyBKb2IgQ29kZVxuICBjdXN0b21lcl9jb250YWN0Pzogc3RyaW5nIHwgbnVsbDtcbiAgY3VzdG9tZXJfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIGRlbGl2ZXJ5X2NvbnRhY3Q/OiBzdHJpbmcgfCBudWxsO1xuICBkZWxpdmVyeV9sYXQ/OiBudW1iZXIgfCBudWxsO1xuICBkZWxpdmVyeV9sb2NhdGlvbj86IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQ7XG4gIGRlbGl2ZXJ5X2xvbj86IG51bWJlciB8IG51bGw7XG4gIGRyaXZlcl9saXN0PzogQXJyYXk8YW55PjtcbiAgbWF0ZXJpYWw/OiBzdHJpbmcgfCBudWxsO1xuICBvcmRlcl9udW1iZXI/OiBzdHJpbmcgfCBudWxsO1xuICBwaWNrdXBfbGF0PzogbnVtYmVyIHwgbnVsbDtcbiAgcGlja3VwX2xvY2F0aW9uPzogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgcGlja3VwX2xvbj86IG51bWJlciB8IG51bGw7XG4gIHByb2plY3Q/OiBzdHJpbmcgfCBudWxsO1xuICB0b3RhbF9jb3VudD86IG51bWJlcjtcbiAgdW5pdD86IHN0cmluZyB8IG51bGw7XG4gIHZhbHVlczogYW55O1xuICBqb2JfaWQ/OiBzdHJpbmc7XG4gIGlzU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBkYXRlPzogc3RyaW5nO1xuICAvLyBBZGQgUm91dGVcbiAgY3JlYXRlZF9hdD86IHN0cmluZyB8IG51bGw7XG4gIGNyZWF0ZWRfYnlfbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIGN1c3RvbWVyX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgZGVsaXZlcnlfbGF0X2xuZz86IHN0cmluZyB8IG51bGw7XG4gIGVzdGltYXRlZF9kaXN0YW5jZT86IHN0cmluZyB8IG51bGw7XG4gIGVzdGltYXRlZF90aW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgbWF0ZXJpYWxzX2lkPzogc3RyaW5nIHwgbnVsbDtcbiAgcGF0aD86IFtudW1iZXIsIG51bWJlcl07XG4gIHBpY2t1cF9sYXRfbG5nPzogc3RyaW5nIHwgbnVsbDtcbiAgcm91dGVfaWQ/OiBzdHJpbmcgfCBudWxsO1xuICByb3V0ZV9uYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgdW5pdF9pZD86IHN0cmluZyB8IG51bGw7XG4gIG5vdGU/OiBzdHJpbmcgfCBudWxsO1xuICBtYXRlcmlhbExhYmVsPzogc3RyaW5nIHwgbnVsbDtcbiAgaXNBY3RpdmU/OiBib29sZWFuO1xuICBwcmV2ZW50PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IEVzdGluYXRpb25EYXRhID0gWydlc3RpbWF0ZWRfZGlzdGFuY2UnLCAnZXN0aW1hdGVkX3RpbWUnXVxuZXhwb3J0IGVudW0gRXN0aW5hdGlvbkVudW0ge1xuICBlc3RpbWF0ZWRfZGlzdGFuY2UgPSBcIm1pbGVzXCIsXG4gIGVzdGltYXRlZF90aW1lID0gXCJ0aW1lXCJcbn1cblxuZXhwb3J0IGNvbnN0IEpvYkNvZGVPdmVydmlld0RhdGEgPSBbJ29yZGVyX251bWJlcicsICdjdXN0b21lcl9uYW1lJywgJ3Byb2plY3QnLCAndW5pdCcsICdtYXRlcmlhbCcsICdjdXN0b21lcl9jb250YWN0JywgJ2RlbGl2ZXJ5X2NvbnRhY3QnLCAncGlja3VwX2xvY2F0aW9uJywgJ2RlbGl2ZXJ5X2xvY2F0aW9uJ11cbmV4cG9ydCBlbnVtIEpvYkNvZGVPdmVydmlld0VudW0ge1xuICBtYXRlcmlhbCA9IFwiTWF0ZXJpYWxcIixcbiAgb3JkZXJfbnVtYmVyID0gXCJKb2IgQ29kZVwiLFxuICBjdXN0b21lcl9uYW1lID0gXCJDdXN0b21lclwiLFxuICBjdXN0b21lcl9jb250YWN0ID0gXCJDdXN0b21lciBDb250YWN0XCIsXG4gIGRlbGl2ZXJ5X2NvbnRhY3QgPSBcIkRlbGl2ZXJ5IENvbnRhY3RcIixcbiAgcHJvamVjdCA9IFwiUHJvamVjdCBOYW1lXCIsXG4gIHVuaXQgPSBcIkpvYiBUeXBlXCIsXG4gIHBpY2t1cF9sb2NhdGlvbiA9IFwiUGlja3VwXCIsXG4gIGRlbGl2ZXJ5X2xvY2F0aW9uID0gXCJEZWxpdmVyeVwiLFxufVxuXG5leHBvcnQgY29uc3QgRHJpdmVyc21zQ2FyZEtleSA9IFsnb3JkZXJfbnVtYmVyJywgJ2RhdGUnLCAndmFsdWVzJywgJ21hdGVyaWFsJywgJ3VuaXQnLCAncGlja3VwX2xvY2F0aW9uJywgJ2RlbGl2ZXJ5X2xvY2F0aW9uJ11cbmV4cG9ydCBlbnVtIERyaXZlclNtc0NhcmRFbnVtIHtcbiAgb3JkZXJfbnVtYmVyID0gJ0pvYmNvZGUnLFxuICBkYXRlID0gJ0RhdGUnLFxuICB2YWx1ZXMgPSAnVG90YWwgdGFza3MnLFxuICBtYXRlcmlhbCA9ICdNYXRlcmlhbCcsXG4gIHVuaXQgPSAnVW5pdCcsXG4gIHBpY2t1cF9sb2NhdGlvbiA9ICdQaWNrdXAgQWRkcmVzcycsXG4gIGRlbGl2ZXJ5X2xvY2F0aW9uID0gJ0RlbGl2ZXJ5IEFkZHJlc3MnXG59XG5cbmV4cG9ydCBjbGFzcyBQb3B1cERhdGEge1xuICBjb29yZGluYXRlOiBbbnVtYmVyLCBudW1iZXJdO1xuICBwaWNrdXA6IHN0cmluZyB8IG51bGw7XG4gIGpvYkNvZGU/OiBzdHJpbmcgfCBudWxsO1xuICBjdXN0b21lcj86IHN0cmluZyB8IG51bGw7XG4gIGRyb3A6IHN0cmluZyB8IG51bGw7XG4gIHJvdXRlVHlwZTogc3RyaW5nIHwgbnVsbDtcbiAgdGl0bGU6IHN0cmluZyB8IG51bGw7XG4gIG1hdGVyaWFsOiBzdHJpbmcgfCBudWxsO1xuICB0eXBlOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgY2xhc3MgQ29vbG1hcENvbmZpZ01vZGVsIHtcbiAgYW5hbHl0aWNzUkVTVFVSTDogc3RyaW5nIHwgbnVsbDtcbiAgUkVTVFVSTFByZWZpeDogc3RyaW5nIHwgbnVsbDtcbiAgcmVwb3NpdG9yeTogc3RyaW5nIHwgbnVsbDtcbiAgbWFwYm94U3R5bGU6IHN0cmluZyB8IG51bGw7XG4gIG1hcGJveEFjY2Vzc1Rva2VuOiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgZGVjbGFyZSBjbGFzcyBDdXN0b21lclJlcG9EZXRhaWxzTW9kZWwge1xuICBjdXN0b21lcjogQ3VzdG9tZXJEZXRhaWxzTW9kZWwgfCBudWxsO1xuICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBkZWNsYXJlIGNsYXNzIEN1c3RvbWVyRGV0YWlsc01vZGVsIHtcbiAgaWQ6IHN0cmluZyB8IG51bGw7XG4gIG5hbWU6IHN0cmluZyB8IG51bGw7XG59XG4iXX0=
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { Injectable, Inject } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common/http";
|
|
5
|
+
import * as i2 from "@angular/material/snack-bar";
|
|
6
|
+
import * as i3 from "./data-model";
|
|
7
|
+
export class UtilsService {
|
|
8
|
+
http;
|
|
9
|
+
snackBar;
|
|
10
|
+
config;
|
|
11
|
+
ngZone;
|
|
12
|
+
analyticsRESTURL = '';
|
|
13
|
+
RESTURLPrefix = '';
|
|
14
|
+
pickupOptions = [];
|
|
15
|
+
destOptions = [];
|
|
16
|
+
ownerOptions = [];
|
|
17
|
+
customerOptions = [];
|
|
18
|
+
unitOptions = [];
|
|
19
|
+
materialOptions = [];
|
|
20
|
+
jcodeOptions = [];
|
|
21
|
+
driverOption = [];
|
|
22
|
+
truckingCompanayOption = [];
|
|
23
|
+
routeNameOptions = [];
|
|
24
|
+
preventnavChange = new BehaviorSubject(false);
|
|
25
|
+
navChangeObserve = this.preventnavChange.asObservable();
|
|
26
|
+
clearViewRouteforJobCode = new BehaviorSubject(false);
|
|
27
|
+
clearViewRouteforJobCodeObserve = this.clearViewRouteforJobCode.asObservable();
|
|
28
|
+
preVentJobdetailclose = new BehaviorSubject(false);
|
|
29
|
+
getpreVentJobdetailclose = this.preVentJobdetailclose.asObservable();
|
|
30
|
+
routeDetailsUtility = new BehaviorSubject({});
|
|
31
|
+
getrouteDetailsUtility = this.routeDetailsUtility.asObservable();
|
|
32
|
+
removeMapEntity = new BehaviorSubject({});
|
|
33
|
+
removeMapEntityUtility = this.removeMapEntity.asObservable();
|
|
34
|
+
dict = new Map();
|
|
35
|
+
unitsList;
|
|
36
|
+
materialsList;
|
|
37
|
+
materialsListForCustomer;
|
|
38
|
+
customersList;
|
|
39
|
+
constructor(http, snackBar, config, ngZone) {
|
|
40
|
+
this.http = http;
|
|
41
|
+
this.snackBar = snackBar;
|
|
42
|
+
this.config = config;
|
|
43
|
+
this.ngZone = ngZone;
|
|
44
|
+
this.analyticsRESTURL = config.analyticsRESTURL;
|
|
45
|
+
this.RESTURLPrefix = config.RESTURLPrefix;
|
|
46
|
+
}
|
|
47
|
+
getDateFormat(strVal, seprater) {
|
|
48
|
+
seprater = seprater ? seprater : '-';
|
|
49
|
+
const mydate = strVal;
|
|
50
|
+
return (mydate?.getFullYear() +
|
|
51
|
+
seprater +
|
|
52
|
+
((mydate ? mydate.getMonth() : 0) + 1) +
|
|
53
|
+
seprater +
|
|
54
|
+
mydate?.getDate());
|
|
55
|
+
}
|
|
56
|
+
getData(path) {
|
|
57
|
+
return this.http.get(`${this.analyticsRESTURL}${this.config.repository}/${path}`);
|
|
58
|
+
}
|
|
59
|
+
postdata(path, data) {
|
|
60
|
+
return this.http.post(`${this.analyticsRESTURL}${this.config.repository}/${path}`, data);
|
|
61
|
+
}
|
|
62
|
+
postDataWithRestUrl(path, data) {
|
|
63
|
+
return this.http.post(`${this.RESTURLPrefix}${path}`, data);
|
|
64
|
+
}
|
|
65
|
+
autocomplete(searchElementRef, form) {
|
|
66
|
+
return new Promise((resolve, reject) => {
|
|
67
|
+
const autocomplete = new google.maps.places.Autocomplete(searchElementRef.nativeElement, {
|
|
68
|
+
types: ['address']
|
|
69
|
+
});
|
|
70
|
+
google.maps.event.addListener(autocomplete, 'place_changed', () => {
|
|
71
|
+
this.ngZone.run(() => {
|
|
72
|
+
const place = autocomplete.getPlace();
|
|
73
|
+
console.log(place.geometry.location.lat(), place.geometry.location.lng());
|
|
74
|
+
resolve({ lat: place.geometry.location.lat(), lng: place.geometry.location.lng() });
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
openSnackBar(message, className) {
|
|
80
|
+
this.snackBar.open(message, '', {
|
|
81
|
+
duration: 5000,
|
|
82
|
+
verticalPosition: 'top',
|
|
83
|
+
horizontalPosition: 'center',
|
|
84
|
+
panelClass: [className ? className : 'default'],
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
makeOptions(item) {
|
|
88
|
+
if (item.order_number) {
|
|
89
|
+
this.jcodeOptions.findIndex((elem) => elem.job_id === item.job_id) === -1
|
|
90
|
+
? this.jcodeOptions.push({
|
|
91
|
+
job_code: item.order_number,
|
|
92
|
+
job_id: item.job_id,
|
|
93
|
+
})
|
|
94
|
+
: null;
|
|
95
|
+
if (item.driver_list && item.driver_list?.length > 0) {
|
|
96
|
+
item.driver_list.forEach((driver) => {
|
|
97
|
+
this.driverOption.findIndex((elem) => elem === driver['driver_name']) === -1
|
|
98
|
+
? this.driverOption.push(driver['driver_name'])
|
|
99
|
+
: null;
|
|
100
|
+
this.truckingCompanayOption.findIndex((elem) => elem === driver['trucking_company']) === -1
|
|
101
|
+
? this.truckingCompanayOption.push(driver['trucking_company'])
|
|
102
|
+
: null;
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
this.pickupOptions.findIndex((elem) => elem === item.pickup_location) === -1
|
|
107
|
+
? this.pickupOptions.push(item.pickup_location)
|
|
108
|
+
: null;
|
|
109
|
+
this.destOptions.findIndex((elem) => elem === item.delivery_location) === -1
|
|
110
|
+
? this.destOptions.push(item.delivery_location)
|
|
111
|
+
: null;
|
|
112
|
+
this.customerOptions.findIndex((customer) => customer === item.customer_name) === -1
|
|
113
|
+
? this.customerOptions.push(item.customer_name)
|
|
114
|
+
: null;
|
|
115
|
+
this.unitOptions.findIndex((elem) => elem === item.unit) === -1
|
|
116
|
+
? this.unitOptions.push(item.unit)
|
|
117
|
+
: null;
|
|
118
|
+
this.materialOptions.findIndex((elem) => elem === item.material) === -1
|
|
119
|
+
? this.materialOptions.push(item.material)
|
|
120
|
+
: null;
|
|
121
|
+
if (item.route_name)
|
|
122
|
+
this.routeNameOptions.findIndex((elem) => elem === item.route_name) === -1
|
|
123
|
+
? this.routeNameOptions.push(item.route_name)
|
|
124
|
+
: null;
|
|
125
|
+
}
|
|
126
|
+
filter(value, filters) {
|
|
127
|
+
if (typeof value !== 'string') {
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
const filterValue = value.toLowerCase();
|
|
131
|
+
if (filterValue === '') {
|
|
132
|
+
return [];
|
|
133
|
+
}
|
|
134
|
+
const searchResults = [];
|
|
135
|
+
this.unitOptions.map((unit) => {
|
|
136
|
+
if (unit.toLowerCase().includes(filterValue)) {
|
|
137
|
+
searchResults.push({ type: 'unit', label: unit, value: unit });
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
this.customerOptions.map((unit) => {
|
|
141
|
+
if (unit.toLowerCase().includes(filterValue)) {
|
|
142
|
+
searchResults.push({ type: 'customer', label: unit, value: unit });
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
this.materialOptions.map((unit) => {
|
|
146
|
+
if (unit.toLowerCase().includes(filterValue)) {
|
|
147
|
+
searchResults.push({ type: 'material', label: unit, value: unit });
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
this.pickupOptions.map((unit) => {
|
|
151
|
+
if (unit.toLowerCase().includes(filterValue)) {
|
|
152
|
+
searchResults.push({
|
|
153
|
+
type: 'pickup location',
|
|
154
|
+
label: unit,
|
|
155
|
+
value: unit,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
this.destOptions.map((unit) => {
|
|
160
|
+
if (unit.toLowerCase().includes(filterValue)) {
|
|
161
|
+
searchResults.push({
|
|
162
|
+
type: 'destination location',
|
|
163
|
+
label: unit,
|
|
164
|
+
value: unit,
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
this.jcodeOptions.map((unit) => {
|
|
169
|
+
if (unit.job_code.toLowerCase().includes(filterValue)) {
|
|
170
|
+
searchResults.push({
|
|
171
|
+
type: 'job',
|
|
172
|
+
label: unit['job_code'],
|
|
173
|
+
value: unit,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
this.driverOption.map((unit) => {
|
|
178
|
+
if (unit.toLowerCase().includes(filterValue)) {
|
|
179
|
+
searchResults.push({ type: 'Driver', label: unit, value: unit });
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
this.truckingCompanayOption.map((unit) => {
|
|
183
|
+
if (unit.toLowerCase().includes(filterValue)) {
|
|
184
|
+
searchResults.push({
|
|
185
|
+
type: 'Trucking Company',
|
|
186
|
+
label: unit,
|
|
187
|
+
value: unit,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
this.routeNameOptions.map((unit) => {
|
|
192
|
+
if (unit.toLowerCase().includes(filterValue)) {
|
|
193
|
+
searchResults.push({ type: 'Route name', label: unit, value: unit });
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
const searchDict = {};
|
|
197
|
+
filters.map((filter) => {
|
|
198
|
+
searchDict[filter['name'] + filter['type']] = filter;
|
|
199
|
+
});
|
|
200
|
+
const furtherFilter = [];
|
|
201
|
+
searchResults.map((search) => {
|
|
202
|
+
if (search['label'] + search['type'] in searchDict) {
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
furtherFilter.push(search);
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
return furtherFilter;
|
|
209
|
+
}
|
|
210
|
+
getSearchResults(list, filterval) {
|
|
211
|
+
return list.filter((element) => {
|
|
212
|
+
const result_list_boolean = [];
|
|
213
|
+
if (filterval.length > 0) {
|
|
214
|
+
if (filterval[0]['type'] === 'unit') {
|
|
215
|
+
result_list_boolean.push(filterval[0]['name'] ===
|
|
216
|
+
element[filterval[0]['type']]);
|
|
217
|
+
}
|
|
218
|
+
if (filterval[0]['type'] === 'customer') {
|
|
219
|
+
result_list_boolean.push(filterval[0]['name'] === element['customer_name']);
|
|
220
|
+
}
|
|
221
|
+
if (filterval[0]['type'] === 'material') {
|
|
222
|
+
result_list_boolean.push(filterval[0]['name'] ===
|
|
223
|
+
element[filterval[0]['type']]);
|
|
224
|
+
}
|
|
225
|
+
if (filterval[0]['type'] === 'pickup location') {
|
|
226
|
+
result_list_boolean.push(filterval[0]['name'] === element['pickup_location']);
|
|
227
|
+
}
|
|
228
|
+
if (filterval[0]['type'] === 'destination location') {
|
|
229
|
+
result_list_boolean.push(filterval[0]['name'] === element['delivery_location']);
|
|
230
|
+
}
|
|
231
|
+
if (filterval[0]['type'] === 'job') {
|
|
232
|
+
result_list_boolean.push(filterval[0]['name'] === element['order_number']);
|
|
233
|
+
}
|
|
234
|
+
if (filterval[0]['type'] === 'Route name') {
|
|
235
|
+
result_list_boolean.push(filterval[0]['name'] === element['route_name']);
|
|
236
|
+
}
|
|
237
|
+
if (filterval[0]['type'] === 'Driver') {
|
|
238
|
+
const index = element.driver_list?.findIndex((ele) => {
|
|
239
|
+
return filterval[0]['name'] === ele['driver_name'];
|
|
240
|
+
});
|
|
241
|
+
if (index !== -1)
|
|
242
|
+
result_list_boolean.push(true);
|
|
243
|
+
}
|
|
244
|
+
if (filterval[0]['type'] === 'Trucking Company') {
|
|
245
|
+
const index = element.driver_list?.findIndex((ele) => {
|
|
246
|
+
return filterval[0]['name'] === ele['trucking_company'];
|
|
247
|
+
});
|
|
248
|
+
if (index !== -1)
|
|
249
|
+
result_list_boolean.push(true);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (result_list_boolean.length > 0) {
|
|
253
|
+
return result_list_boolean.reduce((prev, curr) => prev && curr);
|
|
254
|
+
}
|
|
255
|
+
return false;
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
clearOptions() {
|
|
259
|
+
this.pickupOptions = [];
|
|
260
|
+
this.destOptions = [];
|
|
261
|
+
this.ownerOptions = [];
|
|
262
|
+
this.customerOptions = [];
|
|
263
|
+
this.unitOptions = [];
|
|
264
|
+
this.materialOptions = [];
|
|
265
|
+
this.jcodeOptions = [];
|
|
266
|
+
this.routeNameOptions = [];
|
|
267
|
+
}
|
|
268
|
+
setdictValue(key, value) {
|
|
269
|
+
this.dict.set(key, value);
|
|
270
|
+
}
|
|
271
|
+
getdictValue(key) {
|
|
272
|
+
return JSON.parse(this.dict.get(key));
|
|
273
|
+
}
|
|
274
|
+
removedictValue(key) {
|
|
275
|
+
this.dict.delete(key);
|
|
276
|
+
}
|
|
277
|
+
conveySearchIcon(value) {
|
|
278
|
+
if (value && typeof value !== 'object')
|
|
279
|
+
return true;
|
|
280
|
+
return false;
|
|
281
|
+
}
|
|
282
|
+
fetchUnitsList() {
|
|
283
|
+
return new Promise((resolve, reject) => {
|
|
284
|
+
if (!this.unitsList) {
|
|
285
|
+
this.getData('unit/list/view').subscribe((res) => {
|
|
286
|
+
if (res) {
|
|
287
|
+
this.unitsList = res.data;
|
|
288
|
+
resolve(this.unitsList);
|
|
289
|
+
}
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
else {
|
|
293
|
+
resolve(this.unitsList);
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
fetchMaterialsList() {
|
|
298
|
+
return new Promise((resolve, reject) => {
|
|
299
|
+
if (!this.materialsList) {
|
|
300
|
+
this.getData('material/list/view').subscribe((res) => {
|
|
301
|
+
res.data.sort((a, b) => a.material.localeCompare(b.material));
|
|
302
|
+
this.materialsList = res.data;
|
|
303
|
+
resolve(this.materialsList);
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
resolve(this.materialsList);
|
|
308
|
+
}
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
fetchMaterialsListForCustomer() {
|
|
312
|
+
return new Promise((resolve, reject) => {
|
|
313
|
+
if (!this.materialsListForCustomer) {
|
|
314
|
+
this.getData('material/list/view').subscribe((res) => {
|
|
315
|
+
let meterialListDetails = [];
|
|
316
|
+
res.data.map((item) => {
|
|
317
|
+
if (item.sub.length > 0) {
|
|
318
|
+
item.sub.map((subItem) => {
|
|
319
|
+
if (subItem.add_to_marketplace) {
|
|
320
|
+
subItem.material = item.material;
|
|
321
|
+
subItem.material_id = item.material_id;
|
|
322
|
+
subItem.label = item.material + ' | ' + subItem.sub_material;
|
|
323
|
+
meterialListDetails.push(subItem);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
meterialListDetails.sort((a, b) => a.label.localeCompare(b.label));
|
|
329
|
+
this.materialsListForCustomer = meterialListDetails;
|
|
330
|
+
resolve(this.materialsListForCustomer);
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
resolve(this.materialsListForCustomer);
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
fetchCustomersList() {
|
|
339
|
+
return new Promise((resolve, reject) => {
|
|
340
|
+
if (!this.customersList) {
|
|
341
|
+
this.getData('company/list/view').subscribe((res) => {
|
|
342
|
+
if (res) {
|
|
343
|
+
this.customersList = res.data;
|
|
344
|
+
resolve(this.customersList);
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
resolve(this.customersList);
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
}
|
|
353
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, deps: [{ token: i1.HttpClient }, { token: i2.MatSnackBar }, { token: 'memberData' }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
354
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, providedIn: 'root' });
|
|
355
|
+
}
|
|
356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.1", ngImport: i0, type: UtilsService, decorators: [{
|
|
357
|
+
type: Injectable,
|
|
358
|
+
args: [{ providedIn: 'root' }]
|
|
359
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.MatSnackBar }, { type: i3.CoolmapConfigModel, decorators: [{
|
|
360
|
+
type: Inject,
|
|
361
|
+
args: ['memberData']
|
|
362
|
+
}] }, { type: i0.NgZone }] });
|
|
363
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL2xpYi9zZXJ2aWNlL3V0aWxzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7QUFNdkMsTUFBTSxPQUFPLFlBQVk7SUE4QmQ7SUFDQTtJQUN1QjtJQUN2QjtJQWhDVCxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7SUFDdEIsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNuQixhQUFhLEdBQVUsRUFBRSxDQUFDO0lBQzFCLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFDeEIsWUFBWSxHQUFVLEVBQUUsQ0FBQztJQUN6QixlQUFlLEdBQVUsRUFBRSxDQUFDO0lBQzVCLFdBQVcsR0FBVSxFQUFFLENBQUM7SUFDeEIsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixZQUFZLEdBQVUsRUFBRSxDQUFDO0lBQ3pCLFlBQVksR0FBVSxFQUFFLENBQUM7SUFDekIsc0JBQXNCLEdBQVUsRUFBRSxDQUFDO0lBQ25DLGdCQUFnQixHQUFVLEVBQUUsQ0FBQztJQUN0QixnQkFBZ0IsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDeEQsd0JBQXdCLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsK0JBQStCLEdBQzdCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMvQyxxQkFBcUIsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuRCx3QkFBd0IsR0FBRyxJ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Q0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDdkQsSUFBSSxHQUFHLEVBQUUsQ0FBQzt3QkFDUixJQUFJLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUM7d0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQzlCLENBQUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUM5QixDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQXZYVSxZQUFZLHVFQWdDYixZQUFZOzJHQWhDWCxZQUFZLGNBREMsTUFBTTs7MkZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFpQzdCLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3QsIE5nWm9uZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0U25hY2tCYXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbmFjay1iYXInO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb29sbWFwQ29uZmlnTW9kZWwsIFJvdXRlIH0gZnJvbSAnLi9kYXRhLW1vZGVsJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmRlY2xhcmUgdmFyIGdvb2dsZTogYW55O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFV0aWxzU2VydmljZSB7XG4gIGFuYWx5dGljc1JFU1RVUkwgPSAnJztcbiAgUkVTVFVSTFByZWZpeCA9ICcnO1xuICBwaWNrdXBPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBkZXN0T3B0aW9uczogYW55W10gPSBbXTtcbiAgb3duZXJPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBjdXN0b21lck9wdGlvbnM6IGFueVtdID0gW107XG4gIHVuaXRPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBtYXRlcmlhbE9wdGlvbnM6IGFueVtdID0gW107XG4gIGpjb2RlT3B0aW9uczogYW55W10gPSBbXTtcbiAgZHJpdmVyT3B0aW9uOiBhbnlbXSA9IFtdO1xuICB0cnVja2luZ0NvbXBhbmF5T3B0aW9uOiBhbnlbXSA9IFtdO1xuICByb3V0ZU5hbWVPcHRpb25zOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgcHJldmVudG5hdkNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBuYXZDaGFuZ2VPYnNlcnZlID0gdGhpcy5wcmV2ZW50bmF2Q2hhbmdlLmFzT2JzZXJ2YWJsZSgpO1xuICBjbGVhclZpZXdSb3V0ZWZvckpvYkNvZGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgY2xlYXJWaWV3Um91dGVmb3JKb2JDb2RlT2JzZXJ2ZSA9XG4gICAgdGhpcy5jbGVhclZpZXdSb3V0ZWZvckpvYkNvZGUuYXNPYnNlcnZhYmxlKCk7XG4gIHByZVZlbnRKb2JkZXRhaWxjbG9zZSA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuICBnZXRwcmVWZW50Sm9iZGV0YWlsY2xvc2UgPSB0aGlzLnByZVZlbnRKb2JkZXRhaWxjbG9zZS5hc09ic2VydmFibGUoKTtcbiAgcm91dGVEZXRhaWxzVXRpbGl0eSA9IG5ldyBCZWhhdmlvclN1YmplY3Qoe30pO1xuICBnZXRyb3V0ZURldGFpbHNVdGlsaXR5ID0gdGhpcy5yb3V0ZURldGFpbHNVdGlsaXR5LmFzT2JzZXJ2YWJsZSgpO1xuICByZW1vdmVNYXBFbnRpdHkgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KTtcbiAgcmVtb3ZlTWFwRW50aXR5VXRpbGl0eSA9IHRoaXMucmVtb3ZlTWFwRW50aXR5LmFzT2JzZXJ2YWJsZSgpO1xuICBkaWN0ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgdW5pdHNMaXN0OiBhbnk7XG4gIG1hdGVyaWFsc0xpc3Q6IGFueTtcbiAgbWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyOiBhbnk7XG4gIGN1c3RvbWVyc0xpc3Q6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHVibGljIHNuYWNrQmFyOiBNYXRTbmFja0JhcixcbiAgICBASW5qZWN0KCdtZW1iZXJEYXRhJykgcHJpdmF0ZSBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCxcbiAgICBwdWJsaWMgbmdab25lOiBOZ1pvbmUsXG4gICkge1xuICAgIHRoaXMuYW5hbHl0aWNzUkVTVFVSTCA9IGNvbmZpZy5hbmFseXRpY3NSRVNUVVJMO1xuICAgIHRoaXMuUkVTVFVSTFByZWZpeCA9IGNvbmZpZy5SRVNUVVJMUHJlZml4O1xuICB9XG4gIGdldERhdGVGb3JtYXQoc3RyVmFsOiBEYXRlIHwgbnVsbCwgc2VwcmF0ZXI/OiBzdHJpbmcpIHtcbiAgICBzZXByYXRlciA9IHNlcHJhdGVyID8gc2VwcmF0ZXIgOiAnLSc7XG4gICAgY29uc3QgbXlkYXRlID0gc3RyVmFsO1xuICAgIHJldHVybiAoXG4gICAgICBteWRhdGU/LmdldEZ1bGxZZWFyKCkgK1xuICAgICAgc2VwcmF0ZXIgK1xuICAgICAgKChteWRhdGUgPyBteWRhdGUuZ2V0TW9udGgoKSA6IDApICsgMSkgK1xuICAgICAgc2VwcmF0ZXIgK1xuICAgICAgbXlkYXRlPy5nZXREYXRlKClcbiAgICApO1xuICB9XG4gIGdldERhdGEocGF0aDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQoXG4gICAgICBgJHt0aGlzLmFuYWx5dGljc1JFU1RVUkx9JHt0aGlzLmNvbmZpZy5yZXBvc2l0b3J5fS8ke3BhdGh9YFxuICAgICk7XG4gIH1cbiAgcG9zdGRhdGEocGF0aDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoXG4gICAgICBgJHt0aGlzLmFuYWx5dGljc1JFU1RVUkx9JHt0aGlzLmNvbmZpZy5yZXBvc2l0b3J5fS8ke3BhdGh9YCxcbiAgICAgIGRhdGFcbiAgICApO1xuICB9XG4gIHBvc3REYXRhV2l0aFJlc3RVcmwocGF0aDogc3RyaW5nLCBkYXRhOiBhbnkpIHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5SRVNUVVJMUHJlZml4fSR7cGF0aH1gLCBkYXRhKTtcbiAgfVxuICBcbiAgYXV0b2NvbXBsZXRlKHNlYXJjaEVsZW1lbnRSZWYsIGZvcm0/OiBGb3JtR3JvdXApIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgYXV0b2NvbXBsZXRlID0gbmV3IGdvb2dsZS5tYXBzLnBsYWNlcy5BdXRvY29tcGxldGUoc2VhcmNoRWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCB7XG4gICAgICAgIHR5cGVzOiBbJ2FkZHJlc3MnXVxuICAgICAgfSk7XG4gICAgICBnb29nbGUubWFwcy5ldmVudC5hZGRMaXN0ZW5lcihhdXRvY29tcGxldGUsICdwbGFjZV9jaGFuZ2VkJywgKCkgPT4ge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IHBsYWNlID0gYXV0b2NvbXBsZXRlLmdldFBsYWNlKCk7XG4gICAgICAgICAgY29uc29sZS5sb2cocGxhY2UuZ2VvbWV0cnkubG9jYXRpb24ubGF0KCksIHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpKTtcbiAgICAgICAgICByZXNvbHZlKHtsYXQ6IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxhdCgpLCBsbmc6IHBsYWNlLmdlb21ldHJ5LmxvY2F0aW9uLmxuZygpfSlcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIG9wZW5TbmFja0JhcihtZXNzYWdlOiBzdHJpbmcsIGNsYXNzTmFtZT86IHN0cmluZykge1xuICAgIHRoaXMuc25hY2tCYXIub3BlbihtZXNzYWdlLCAnJywge1xuICAgICAgZHVyYXRpb246IDUwMDAsXG4gICAgICB2ZXJ0aWNhbFBvc2l0aW9uOiAndG9wJyxcbiAgICAgIGhvcml6b250YWxQb3NpdGlvbjogJ2NlbnRlcicsXG4gICAgICBwYW5lbENsYXNzOiBbY2xhc3NOYW1lID8gY2xhc3NOYW1lIDogJ2RlZmF1bHQnXSxcbiAgICB9KTtcbiAgfVxuXG4gIG1ha2VPcHRpb25zKGl0ZW06IFJvdXRlKSB7XG4gICAgaWYgKGl0ZW0ub3JkZXJfbnVtYmVyKSB7XG4gICAgICB0aGlzLmpjb2RlT3B0aW9ucy5maW5kSW5kZXgoKGVsZW0pID0+IGVsZW0uam9iX2lkID09PSBpdGVtLmpvYl9pZCkgPT09IC0xXG4gICAgICAgID8gdGhpcy5qY29kZU9wdGlvbnMucHVzaCh7XG4gICAgICAgICAgICBqb2JfY29kZTogaXRlbS5vcmRlcl9udW1iZXIsXG4gICAgICAgICAgICBqb2JfaWQ6IGl0ZW0uam9iX2lkLFxuICAgICAgICAgIH0pXG4gICAgICAgIDogbnVsbDtcbiAgICAgIGlmIChpdGVtLmRyaXZlcl9saXN0ICYmIGl0ZW0uZHJpdmVyX2xpc3Q/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgaXRlbS5kcml2ZXJfbGlzdC5mb3JFYWNoKChkcml2ZXIpID0+IHtcbiAgICAgICAgICB0aGlzLmRyaXZlck9wdGlvbi5maW5kSW5kZXgoXG4gICAgICAgICAgICAoZWxlbSkgPT4gZWxlbSA9PT0gZHJpdmVyWydkcml2ZXJfbmFtZSddXG4gICAgICAgICAgKSA9PT0gLTFcbiAgICAgICAgICAgID8gdGhpcy5kcml2ZXJPcHRpb24ucHVzaChkcml2ZXJbJ2RyaXZlcl9uYW1lJ10pXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgdGhpcy50cnVja2luZ0NvbXBhbmF5T3B0aW9uLmZpbmRJbmRleChcbiAgICAgICAgICAgIChlbGVtKSA9PiBlbGVtID09PSBkcml2ZXJbJ3RydWNraW5nX2NvbXBhbnknXVxuICAgICAgICAgICkgPT09IC0xXG4gICAgICAgICAgICA/IHRoaXMudHJ1Y2tpbmdDb21wYW5heU9wdGlvbi5wdXNoKGRyaXZlclsndHJ1Y2tpbmdfY29tcGFueSddKVxuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5waWNrdXBPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbSA9PT0gaXRlbS5waWNrdXBfbG9jYXRpb24pID09PSAtMVxuICAgICAgPyB0aGlzLnBpY2t1cE9wdGlvbnMucHVzaChpdGVtLnBpY2t1cF9sb2NhdGlvbilcbiAgICAgIDogbnVsbDtcbiAgICB0aGlzLmRlc3RPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbSA9PT0gaXRlbS5kZWxpdmVyeV9sb2NhdGlvbikgPT09IC0xXG4gICAgICA/IHRoaXMuZGVzdE9wdGlvbnMucHVzaChpdGVtLmRlbGl2ZXJ5X2xvY2F0aW9uKVxuICAgICAgOiBudWxsO1xuICAgIHRoaXMuY3VzdG9tZXJPcHRpb25zLmZpbmRJbmRleChcbiAgICAgIChjdXN0b21lcikgPT4gY3VzdG9tZXIgPT09IGl0ZW0uY3VzdG9tZXJfbmFtZVxuICAgICkgPT09IC0xXG4gICAgICA/IHRoaXMuY3VzdG9tZXJPcHRpb25zLnB1c2goaXRlbS5jdXN0b21lcl9uYW1lKVxuICAgICAgOiBudWxsO1xuICAgIHRoaXMudW5pdE9wdGlvbnMuZmluZEluZGV4KChlbGVtKSA9PiBlbGVtID09PSBpdGVtLnVuaXQpID09PSAtMVxuICAgICAgPyB0aGlzLnVuaXRPcHRpb25zLnB1c2goaXRlbS51bml0KVxuICAgICAgOiBudWxsO1xuICAgIHRoaXMubWF0ZXJpYWxPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbSA9PT0gaXRlbS5tYXRlcmlhbCkgPT09IC0xXG4gICAgICA/IHRoaXMubWF0ZXJpYWxPcHRpb25zLnB1c2goaXRlbS5tYXRlcmlhbClcbiAgICAgIDogbnVsbDtcbiAgICBpZiAoaXRlbS5yb3V0ZV9uYW1lKVxuICAgICAgdGhpcy5yb3V0ZU5hbWVPcHRpb25zLmZpbmRJbmRleCgoZWxlbSkgPT4gZWxlbSA9PT0gaXRlbS5yb3V0ZV9uYW1lKSA9PT0gLTFcbiAgICAgICAgPyB0aGlzLnJvdXRlTmFtZU9wdGlvbnMucHVzaChpdGVtLnJvdXRlX25hbWUpXG4gICAgICAgIDogbnVsbDtcbiAgfVxuXG4gIGZpbHRlcih2YWx1ZTogc3RyaW5nLCBmaWx0ZXJzOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgaWYgKGZpbHRlclZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgICBjb25zdCBzZWFyY2hSZXN1bHRzOiBhbnlbXSA9IFtdO1xuICAgIHRoaXMudW5pdE9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAndW5pdCcsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmN1c3RvbWVyT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7IHR5cGU6ICdjdXN0b21lcicsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm1hdGVyaWFsT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7IHR5cGU6ICdtYXRlcmlhbCcsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnBpY2t1cE9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdwaWNrdXAgbG9jYXRpb24nLFxuICAgICAgICAgIGxhYmVsOiB1bml0LFxuICAgICAgICAgIHZhbHVlOiB1bml0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRlc3RPcHRpb25zLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnZGVzdGluYXRpb24gbG9jYXRpb24nLFxuICAgICAgICAgIGxhYmVsOiB1bml0LFxuICAgICAgICAgIHZhbHVlOiB1bml0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmpjb2RlT3B0aW9ucy5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LmpvYl9jb2RlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2pvYicsXG4gICAgICAgICAgbGFiZWw6IHVuaXRbJ2pvYl9jb2RlJ10sXG4gICAgICAgICAgdmFsdWU6IHVuaXQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuZHJpdmVyT3B0aW9uLm1hcCgodW5pdCkgPT4ge1xuICAgICAgaWYgKHVuaXQudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgc2VhcmNoUmVzdWx0cy5wdXNoKHsgdHlwZTogJ0RyaXZlcicsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMudHJ1Y2tpbmdDb21wYW5heU9wdGlvbi5tYXAoKHVuaXQpID0+IHtcbiAgICAgIGlmICh1bml0LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyVmFsdWUpKSB7XG4gICAgICAgIHNlYXJjaFJlc3VsdHMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ1RydWNraW5nIENvbXBhbnknLFxuICAgICAgICAgIGxhYmVsOiB1bml0LFxuICAgICAgICAgIHZhbHVlOiB1bml0LFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJvdXRlTmFtZU9wdGlvbnMubWFwKCh1bml0KSA9PiB7XG4gICAgICBpZiAodW5pdC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlclZhbHVlKSkge1xuICAgICAgICBzZWFyY2hSZXN1bHRzLnB1c2goeyB0eXBlOiAnUm91dGUgbmFtZScsIGxhYmVsOiB1bml0LCB2YWx1ZTogdW5pdCB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzZWFyY2hEaWN0OiBhbnkgPSB7fTtcbiAgICBmaWx0ZXJzLm1hcCgoZmlsdGVyOiB7IFt4OiBzdHJpbmddOiBhbnkgfSkgPT4ge1xuICAgICAgc2VhcmNoRGljdFtmaWx0ZXJbJ25hbWUnXSArIGZpbHRlclsndHlwZSddXSA9IGZpbHRlcjtcbiAgICB9KTtcbiAgICBjb25zdCBmdXJ0aGVyRmlsdGVyOiBhbnlbXSA9IFtdO1xuICAgIHNlYXJjaFJlc3VsdHMubWFwKChzZWFyY2gpID0+IHtcbiAgICAgIGlmIChzZWFyY2hbJ2xhYmVsJ10gKyBzZWFyY2hbJ3R5cGUnXSBpbiBzZWFyY2hEaWN0KSB7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmdXJ0aGVyRmlsdGVyLnB1c2goc2VhcmNoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZnVydGhlckZpbHRlcjtcbiAgfVxuXG4gIGdldFNlYXJjaFJlc3VsdHMobGlzdDogUm91dGVbXSwgZmlsdGVydmFsOiBhbnkpOiBhbnkge1xuICAgIHJldHVybiBsaXN0LmZpbHRlcigoZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0X2xpc3RfYm9vbGVhbiA9IFtdO1xuICAgICAgaWYgKGZpbHRlcnZhbC5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ3VuaXQnKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09XG4gICAgICAgICAgICAgIGVsZW1lbnRbZmlsdGVydmFsWzBdWyd0eXBlJ10gYXMga2V5b2YgUm91dGVdXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdjdXN0b21lcicpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlbWVudFsnY3VzdG9tZXJfbmFtZSddXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdtYXRlcmlhbCcpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT1cbiAgICAgICAgICAgICAgZWxlbWVudFtmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSBhcyBrZXlvZiBSb3V0ZV1cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ3BpY2t1cCBsb2NhdGlvbicpIHtcbiAgICAgICAgICByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2goXG4gICAgICAgICAgICBmaWx0ZXJ2YWxbMF1bJ25hbWUnXSA9PT0gZWxlbWVudFsncGlja3VwX2xvY2F0aW9uJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ2Rlc3RpbmF0aW9uIGxvY2F0aW9uJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50WydkZWxpdmVyeV9sb2NhdGlvbiddXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdqb2InKSB7XG4gICAgICAgICAgcmVzdWx0X2xpc3RfYm9vbGVhbi5wdXNoKFxuICAgICAgICAgICAgZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZW1lbnRbJ29yZGVyX251bWJlciddXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmlsdGVydmFsWzBdWyd0eXBlJ10gPT09ICdSb3V0ZSBuYW1lJykge1xuICAgICAgICAgIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaChcbiAgICAgICAgICAgIGZpbHRlcnZhbFswXVsnbmFtZSddID09PSBlbGVtZW50Wydyb3V0ZV9uYW1lJ11cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmaWx0ZXJ2YWxbMF1bJ3R5cGUnXSA9PT0gJ0RyaXZlcicpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGVsZW1lbnQuZHJpdmVyX2xpc3Q/LmZpbmRJbmRleCgoZWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZVsnZHJpdmVyX25hbWUnXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSByZXN1bHRfbGlzdF9ib29sZWFuLnB1c2godHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZpbHRlcnZhbFswXVsndHlwZSddID09PSAnVHJ1Y2tpbmcgQ29tcGFueScpIHtcbiAgICAgICAgICBjb25zdCBpbmRleCA9IGVsZW1lbnQuZHJpdmVyX2xpc3Q/LmZpbmRJbmRleCgoZWxlKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gZmlsdGVydmFsWzBdWyduYW1lJ10gPT09IGVsZVsndHJ1Y2tpbmdfY29tcGFueSddO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHJlc3VsdF9saXN0X2Jvb2xlYW4ucHVzaCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHJlc3VsdF9saXN0X2Jvb2xlYW4ubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0X2xpc3RfYm9vbGVhbi5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHByZXYgJiYgY3Vycik7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBjbGVhck9wdGlvbnMoKSB7XG4gICAgdGhpcy5waWNrdXBPcHRpb25zID0gW107XG4gICAgdGhpcy5kZXN0T3B0aW9ucyA9IFtdO1xuICAgIHRoaXMub3duZXJPcHRpb25zID0gW107XG4gICAgdGhpcy5jdXN0b21lck9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLnVuaXRPcHRpb25zID0gW107XG4gICAgdGhpcy5tYXRlcmlhbE9wdGlvbnMgPSBbXTtcbiAgICB0aGlzLmpjb2RlT3B0aW9ucyA9IFtdO1xuICAgIHRoaXMucm91dGVOYW1lT3B0aW9ucyA9IFtdO1xuICB9XG4gIHNldGRpY3RWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuZGljdC5zZXQoa2V5LCB2YWx1ZSk7XG4gIH1cbiAgZ2V0ZGljdFZhbHVlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UodGhpcy5kaWN0LmdldChrZXkpKTtcbiAgfVxuICByZW1vdmVkaWN0VmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpY3QuZGVsZXRlKGtleSk7XG4gIH1cbiAgY29udmV5U2VhcmNoSWNvbih2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlICYmIHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHJldHVybiB0cnVlO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBmZXRjaFVuaXRzTGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnVuaXRzTGlzdCkge1xuICAgICAgICB0aGlzLmdldERhdGEoJ3VuaXQvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXMpIHtcbiAgICAgICAgICAgIHRoaXMudW5pdHNMaXN0ID0gcmVzLmRhdGE7XG4gICAgICAgICAgICByZXNvbHZlKHRoaXMudW5pdHNMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLnVuaXRzTGlzdCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmZXRjaE1hdGVyaWFsc0xpc3QoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGlmICghdGhpcy5tYXRlcmlhbHNMaXN0KSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSgnbWF0ZXJpYWwvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIHJlcy5kYXRhLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PlxuICAgICAgICAgICAgYS5tYXRlcmlhbC5sb2NhbGVDb21wYXJlKGIubWF0ZXJpYWwpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLm1hdGVyaWFsc0xpc3QgPSByZXMuZGF0YTtcbiAgICAgICAgICByZXNvbHZlKHRoaXMubWF0ZXJpYWxzTGlzdCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLm1hdGVyaWFsc0xpc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIGZldGNoTWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMubWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKSB7XG4gICAgICAgIHRoaXMuZ2V0RGF0YSgnbWF0ZXJpYWwvbGlzdC92aWV3Jykuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBtZXRlcmlhbExpc3REZXRhaWxzID0gW107XG4gICAgICAgICAgcmVzLmRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLnN1Yi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGl0ZW0uc3ViLm1hcCgoc3ViSXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdWJJdGVtLmFkZF90b19tYXJrZXRwbGFjZSkge1xuICAgICAgICAgICAgICAgICAgc3ViSXRlbS5tYXRlcmlhbCA9IGl0ZW0ubWF0ZXJpYWw7XG4gICAgICAgICAgICAgICAgICBzdWJJdGVtLm1hdGVyaWFsX2lkID0gaXRlbS5tYXRlcmlhbF9pZDtcbiAgICAgICAgICAgICAgICAgIHN1Ykl0ZW0ubGFiZWwgPSBpdGVtLm1hdGVyaWFsICsgJyB8ICcgKyBzdWJJdGVtLnN1Yl9tYXRlcmlhbDtcbiAgICAgICAgICAgICAgICAgIG1ldGVyaWFsTGlzdERldGFpbHMucHVzaChzdWJJdGVtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICAgIG1ldGVyaWFsTGlzdERldGFpbHMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+XG4gICAgICAgICAgICBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbClcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyID0gbWV0ZXJpYWxMaXN0RGV0YWlscztcbiAgICAgICAgICByZXNvbHZlKHRoaXMubWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNvbHZlKHRoaXMubWF0ZXJpYWxzTGlzdEZvckN1c3RvbWVyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZldGNoQ3VzdG9tZXJzTGlzdCgpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmN1c3RvbWVyc0xpc3QpIHtcbiAgICAgICAgdGhpcy5nZXREYXRhKCdjb21wYW55L2xpc3QvdmlldycpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICB0aGlzLmN1c3RvbWVyc0xpc3QgPSByZXMuZGF0YTtcbiAgICAgICAgICAgIHJlc29sdmUodGhpcy5jdXN0b21lcnNMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzb2x2ZSh0aGlzLmN1c3RvbWVyc0xpc3QpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of @aggdirect/coolmap-services
|
|
3
|
+
*/
|
|
4
|
+
export * from './lib/service/coolmap.service';
|
|
5
|
+
export * from './lib/service/utils.service';
|
|
6
|
+
export * from './lib/service/data-model';
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAtc2VydmljZXMvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYywwQkFBMEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgQGFnZ2RpcmVjdC9jb29sbWFwLXNlcnZpY2VzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvY29vbG1hcC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2UvdXRpbHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlL2RhdGEtbW9kZWwnO1xuIl19
|