@aggdirect/coolmap 2.9.7 → 2.9.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/karma.conf.js +44 -0
  2. package/ng-package.json +7 -0
  3. package/package.json +4 -21
  4. package/src/assets/mixin.scss +28 -0
  5. package/src/assets/palette.scss +24 -0
  6. package/src/assets/variable.scss +15 -0
  7. package/src/lib/component/add-route/add-route.component.html +172 -0
  8. package/src/lib/component/add-route/add-route.component.scss +243 -0
  9. package/src/lib/component/add-route/add-route.component.spec.ts +23 -0
  10. package/src/lib/component/add-route/add-route.component.ts +394 -0
  11. package/src/lib/component/job-code/job-code.component.html +79 -0
  12. package/src/lib/component/job-code/job-code.component.scss +396 -0
  13. package/src/lib/component/job-code/job-code.component.ts +146 -0
  14. package/src/lib/component/map/map.component.css +0 -0
  15. package/src/lib/component/map/map.component.html +4 -0
  16. package/src/lib/component/map/map.component.spec.ts +23 -0
  17. package/src/lib/component/map/map.component.ts +34 -0
  18. package/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.html +46 -0
  19. package/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.scss +18 -0
  20. package/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.spec.ts +23 -0
  21. package/src/lib/component/nav/layout/add-route-nav/add-route-nav.component.ts +130 -0
  22. package/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.html +48 -0
  23. package/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.scss +24 -0
  24. package/src/lib/component/nav/layout/job-code-nav/job-code-nav.component.ts +143 -0
  25. package/src/lib/component/nav/nav.component.html +19 -0
  26. package/src/lib/component/nav/nav.component.scss +67 -0
  27. package/src/lib/component/nav/nav.component.ts +38 -0
  28. package/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.html +56 -0
  29. package/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.scss +168 -0
  30. package/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.spec.ts +23 -0
  31. package/src/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ts +43 -0
  32. package/src/lib/component/route-jobcode-list/route-jobcode-list.component.html +73 -0
  33. package/src/lib/component/route-jobcode-list/route-jobcode-list.component.scss +227 -0
  34. package/src/lib/component/route-jobcode-list/route-jobcode-list.component.ts +233 -0
  35. package/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.html +7 -0
  36. package/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.scss +10 -0
  37. package/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.spec.ts +23 -0
  38. package/src/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ts +15 -0
  39. package/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.html +28 -0
  40. package/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.scss +172 -0
  41. package/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.spec.ts +23 -0
  42. package/src/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ts +20 -0
  43. package/src/lib/component/shared/dialog/dialog.component.html +7 -0
  44. package/src/lib/component/shared/dialog/dialog.component.scss +30 -0
  45. package/src/lib/component/shared/dialog/dialog.component.ts +18 -0
  46. package/src/lib/component/shared/estimation-display/estimation-display.component.html +7 -0
  47. package/src/lib/component/shared/estimation-display/estimation-display.component.scss +7 -0
  48. package/src/lib/component/shared/estimation-display/estimation-display.component.ts +13 -0
  49. package/src/lib/component/shared/job-route-list/job-route-list.component.html +46 -0
  50. package/src/lib/component/shared/job-route-list/job-route-list.component.scss +15 -0
  51. package/src/lib/component/shared/job-route-list/job-route-list.component.spec.ts +23 -0
  52. package/src/lib/component/shared/job-route-list/job-route-list.component.ts +54 -0
  53. package/src/lib/component/shared/jobcode-overview/jobcode-overview.component.html +11 -0
  54. package/src/lib/component/shared/jobcode-overview/jobcode-overview.component.scss +13 -0
  55. package/src/lib/component/shared/jobcode-overview/jobcode-overview.component.spec.ts +23 -0
  56. package/src/lib/component/shared/jobcode-overview/jobcode-overview.component.ts +19 -0
  57. package/src/lib/component/shared/jobcode-status/jobcode-status.component.html +5 -0
  58. package/src/lib/component/shared/jobcode-status/jobcode-status.component.scss +40 -0
  59. package/src/lib/component/shared/jobcode-status/jobcode-status.component.spec.ts +23 -0
  60. package/src/lib/component/shared/jobcode-status/jobcode-status.component.ts +11 -0
  61. package/src/lib/component/shared/route-info-card/route-info-card.component.html +19 -0
  62. package/src/lib/component/shared/route-info-card/route-info-card.component.scss +50 -0
  63. package/src/lib/component/shared/route-info-card/route-info-card.component.spec.ts +23 -0
  64. package/src/lib/component/shared/route-info-card/route-info-card.component.ts +74 -0
  65. package/src/lib/component/shared/searchoptiongroup/searchoptiongroup.component.css +3 -0
  66. package/src/lib/component/shared/searchoptiongroup/searchoptiongroup.component.html +6 -0
  67. package/src/lib/component/shared/searchoptiongroup/searchoptiongroup.component.spec.ts +23 -0
  68. package/src/lib/component/shared/searchoptiongroup/searchoptiongroup.component.ts +21 -0
  69. package/src/lib/coolmap.module.ts +120 -0
  70. package/{public-api.d.ts → src/public-api.ts} +8 -0
  71. package/src/test.ts +27 -0
  72. package/tsconfig.lib.json +15 -0
  73. package/tsconfig.lib.prod.json +10 -0
  74. package/tsconfig.spec.json +17 -0
  75. package/esm2022/aggdirect-coolmap.mjs +0 -5
  76. package/esm2022/lib/component/add-route/add-route.component.mjs +0 -433
  77. package/esm2022/lib/component/job-code/job-code.component.mjs +0 -181
  78. package/esm2022/lib/component/map/map.component.mjs +0 -39
  79. package/esm2022/lib/component/nav/layout/add-route-nav/add-route-nav.component.mjs +0 -151
  80. package/esm2022/lib/component/nav/layout/job-code-nav/job-code-nav.component.mjs +0 -150
  81. package/esm2022/lib/component/nav/nav.component.mjs +0 -54
  82. package/esm2022/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.mjs +0 -77
  83. package/esm2022/lib/component/route-jobcode-list/route-jobcode-list.component.mjs +0 -319
  84. package/esm2022/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.mjs +0 -19
  85. package/esm2022/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.mjs +0 -37
  86. package/esm2022/lib/component/shared/dialog/dialog.component.mjs +0 -31
  87. package/esm2022/lib/component/shared/estimation-display/estimation-display.component.mjs +0 -18
  88. package/esm2022/lib/component/shared/job-route-list/job-route-list.component.mjs +0 -79
  89. package/esm2022/lib/component/shared/jobcode-overview/jobcode-overview.component.mjs +0 -24
  90. package/esm2022/lib/component/shared/jobcode-status/jobcode-status.component.mjs +0 -15
  91. package/esm2022/lib/component/shared/route-info-card/route-info-card.component.mjs +0 -62
  92. package/esm2022/lib/component/shared/searchoptiongroup/searchoptiongroup.component.mjs +0 -25
  93. package/esm2022/lib/coolmap.module.mjs +0 -193
  94. package/esm2022/public-api.mjs +0 -19
  95. package/fesm2022/aggdirect-coolmap.mjs +0 -1778
  96. package/fesm2022/aggdirect-coolmap.mjs.map +0 -1
  97. package/index.d.ts +0 -5
  98. package/lib/component/add-route/add-route.component.d.ts +0 -73
  99. package/lib/component/job-code/job-code.component.d.ts +0 -41
  100. package/lib/component/map/map.component.d.ts +0 -15
  101. package/lib/component/nav/layout/add-route-nav/add-route-nav.component.d.ts +0 -49
  102. package/lib/component/nav/layout/job-code-nav/job-code-nav.component.d.ts +0 -42
  103. package/lib/component/nav/nav.component.d.ts +0 -31
  104. package/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.d.ts +0 -20
  105. package/lib/component/route-jobcode-list/route-jobcode-list.component.d.ts +0 -42
  106. package/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.d.ts +0 -9
  107. package/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.d.ts +0 -12
  108. package/lib/component/shared/dialog/dialog.component.d.ts +0 -13
  109. package/lib/component/shared/estimation-display/estimation-display.component.d.ts +0 -8
  110. package/lib/component/shared/job-route-list/job-route-list.component.d.ts +0 -26
  111. package/lib/component/shared/jobcode-overview/jobcode-overview.component.d.ts +0 -10
  112. package/lib/component/shared/jobcode-status/jobcode-status.component.d.ts +0 -7
  113. package/lib/component/shared/route-info-card/route-info-card.component.d.ts +0 -32
  114. package/lib/component/shared/searchoptiongroup/searchoptiongroup.component.d.ts +0 -14
  115. package/lib/coolmap.module.d.ts +0 -46
@@ -1,319 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { SelectionModel } from '@angular/cdk/collections';
3
- import { FormControl, Validators } from '@angular/forms';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@aggdirect/coolmap-services";
6
- import * as i2 from "@angular/common";
7
- import * as i3 from "@angular/forms";
8
- import * as i4 from "@angular/material/input";
9
- import * as i5 from "@angular/material/form-field";
10
- import * as i6 from "@angular/material/icon";
11
- import * as i7 from "@angular/material/progress-spinner";
12
- import * as i8 from "@angular/cdk/scrolling";
13
- import * as i9 from "./view-route-list-card/view-route-list-card.component";
14
- import * as i10 from "./sms-card-details-overview/sms-card-details-overview.component";
15
- import * as i11 from "./job-code-list-card/job-code-list-card.component";
16
- export class RouteJobCodeListComponent {
17
- coolMap;
18
- utils;
19
- loader = true;
20
- type = '';
21
- data = [];
22
- currentNav = '';
23
- emitroute = new EventEmitter();
24
- showAllRoute = new EventEmitter();
25
- preventMouseout = false;
26
- filterList = this.data;
27
- searchTerm;
28
- isDriverList = false;
29
- selectedRoute = new SelectionModel(true, []);
30
- driverList;
31
- preventListSelect = false;
32
- clearJobDetailsFromList = new EventEmitter();
33
- preventDetailsClose = false;
34
- messageLoader = false;
35
- driverMessage = new FormControl('', [Validators.maxLength(256)]);
36
- clearListSeletion;
37
- isSmsList = false;
38
- constructor(coolMap, utils) {
39
- this.coolMap = coolMap;
40
- this.utils = utils;
41
- this.driverList = [];
42
- }
43
- ngOnInit() {
44
- this.utils.getpreVentJobdetailclose.subscribe(res => { this.preventDetailsClose = res; });
45
- this.utils.removeMapEntityUtility.subscribe((res) => { this.passRoute(res); });
46
- }
47
- passRoute(job) {
48
- this.data.forEach((each) => { if (each['route_id'] !== job['route_id']) {
49
- each['isActive'] = false;
50
- }
51
- else {
52
- each['isActive'] = true;
53
- } });
54
- if (this.type == 'addroute')
55
- this.filterList.forEach(ele => this.coolMap.filterRoute(ele['route_id'], 'none'));
56
- }
57
- selectRoute(route) {
58
- if (!this.preventListSelect) {
59
- this.preventListSelect = true;
60
- this.selectedRoute.toggle(route);
61
- this.clearJobDetailsFromList.emit(true);
62
- this.utils.preVentJobdetailclose.next(false);
63
- this.filterList.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'none'));
64
- this.clearList();
65
- this.selectedRoute.selected.forEach((ele, index) => {
66
- this.coolMap.filterRoute(ele['job_id'], 'visible', ((this.selectedRoute.selected.length - 1) === index)).then(() => {
67
- this.preventListSelect = false;
68
- });
69
- });
70
- if (!this.selectedRoute.selected.length) {
71
- this.preventListSelect = false;
72
- this.data.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'visible'));
73
- }
74
- ;
75
- }
76
- }
77
- checkroutes(route) {
78
- const selectedRoute = this.selectedRoute.selected;
79
- this.filterList = this.filterList.map(ele => { ele['isSelected'] = false; return ele; });
80
- if (selectedRoute.length > 0) {
81
- selectedRoute.forEach(ele => {
82
- if (route['order_number'] === ele['order_number']) {
83
- ele['isSelected'] = true;
84
- }
85
- });
86
- }
87
- return route;
88
- }
89
- ngOnChanges(changes) {
90
- setTimeout(() => {
91
- if (this.currentNav === 'Addroute' && (this.data.length < this.filterList.length)) {
92
- const index = this.filterList.findIndex(ele => ele.isActive);
93
- if (index > 0)
94
- this.filterList[index].isActive = false;
95
- this.data.forEach((ele, indexForData) => {
96
- const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);
97
- this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {
98
- });
99
- });
100
- }
101
- }, 500);
102
- if (changes['data'] && changes['data']['currentValue']) {
103
- this.filterList = changes['data']['currentValue'];
104
- if (this.searchTerm) {
105
- if (this.searchTerm.length > 0) {
106
- this.data = this.utils.getSearchResults(changes['data']['currentValue'], this.searchTerm);
107
- this.filterList = this.data;
108
- }
109
- else {
110
- this.filterList = changes['data']['currentValue'];
111
- }
112
- }
113
- if (this.type === 'jobcode') {
114
- this.loader = true;
115
- this.clearList();
116
- if (this.filterList.length === 0)
117
- this.loader = false;
118
- }
119
- if (this.type !== 'jobcode') {
120
- if (changes['data']['previousValue'] && this.currentNav === 'addForm') {
121
- const activeRoute = changes['data']['previousValue'].find((ele) => ele.isActive);
122
- if (activeRoute) {
123
- this.filterList.map((item) => {
124
- if (item.route_id === activeRoute.route_id) {
125
- item.isActive = true;
126
- }
127
- });
128
- }
129
- }
130
- }
131
- if (changes['data']['previousValue'] && this.currentNav !== 'addForm') {
132
- this.coolMap.removeJobFromMap(changes['data']['previousValue']);
133
- this.selectedRoute.clear();
134
- }
135
- ;
136
- if (this.currentNav !== 'addForm') {
137
- changes['data']['currentValue'].forEach((ele, indexForData) => {
138
- const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);
139
- this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {
140
- if (indexForData === (this.data.length - 1)) {
141
- this.loader = false;
142
- this.utils.preventnavChange.next(true);
143
- }
144
- });
145
- });
146
- }
147
- }
148
- if (changes['searchTerm']) {
149
- if (this.filterList) {
150
- this.data = this.filterList;
151
- this.clearList();
152
- if (changes['searchTerm']['currentValue'].length > 0) {
153
- this.coolMap.removeRouteAndMarker(1);
154
- this.data = this.utils.getSearchResults(this.data, changes['searchTerm']['currentValue']);
155
- }
156
- else {
157
- this.data = this.filterList;
158
- }
159
- setTimeout(() => {
160
- this.coolMap.clearBoundWithCordinates();
161
- if (this.currentNav !== 'addForm' && !this.selectedRoute['selected'].length) {
162
- this.coolMap.removeRouteAndMarker(1);
163
- this.toggleFilterRoute(this.filterList);
164
- }
165
- }, 500);
166
- if (this.currentNav !== 'addForm' && this.selectedRoute['selected'].length) {
167
- if (this.data && this.data.length > 0) {
168
- this.clearList();
169
- this.clearJobDetailsFromList.emit(true);
170
- this.coolMap.removeJobFromMap(this.selectedRoute.selected);
171
- setTimeout(() => {
172
- this.data.forEach((ele, indexForData) => {
173
- this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === (this.data.length - 1))).then(() => {
174
- if (indexForData === (this.data.length - 1)) {
175
- this.loader = false;
176
- this.utils.preventnavChange.next(true);
177
- }
178
- if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {
179
- this.selectedRoute.clear();
180
- }
181
- });
182
- });
183
- }, 500);
184
- }
185
- }
186
- }
187
- }
188
- }
189
- showRoute() {
190
- this.utils.preventnavChange.next(false);
191
- this.loader = true;
192
- this.clearList();
193
- this.showAllRoute.emit(true);
194
- if (this.filterList && this.filterList.length > 0) {
195
- this.coolMap.removeJobFromMap(this.selectedRoute.selected);
196
- setTimeout(() => {
197
- this.filterList.forEach((ele, indexForData) => {
198
- this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === this.filterList.length - 1)).then(() => {
199
- if (indexForData === this.filterList.length - 1) {
200
- this.loader = false;
201
- this.utils.preventnavChange.next(true);
202
- }
203
- if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {
204
- this.selectedRoute.clear();
205
- }
206
- });
207
- });
208
- }, 500);
209
- }
210
- }
211
- toggleDrivermenu(event) {
212
- const mouseevntType = event.mouseevntType;
213
- let route = event.route;
214
- const isHoverOut = event.isHoverOut;
215
- if (typeof (mouseevntType) === 'string') {
216
- if (this.preventMouseout) {
217
- this.isDriverList = !this.isDriverList;
218
- }
219
- ;
220
- this.preventMouseout = true;
221
- }
222
- if (typeof (mouseevntType) === 'boolean' && !mouseevntType && !this.preventMouseout) {
223
- this.isDriverList = mouseevntType;
224
- }
225
- ;
226
- if (typeof (mouseevntType) === 'boolean' && mouseevntType && !this.preventMouseout) {
227
- this.isDriverList = mouseevntType;
228
- }
229
- ;
230
- if (this.preventMouseout && !this.isDriverList)
231
- this.preventMouseout = false;
232
- if (isHoverOut) {
233
- if (this.preventMouseout) {
234
- route = this.utils.getdictValue('driver-details');
235
- this.driverList = route;
236
- }
237
- if (!this.preventMouseout) {
238
- this.driverList = route;
239
- }
240
- }
241
- else {
242
- this.driverList = route;
243
- }
244
- }
245
- visiblesection(value) { if (this.type === value) {
246
- return true;
247
- }
248
- else
249
- return false; }
250
- toggleFilterRoute(filterList) {
251
- filterList.forEach((ele) => {
252
- const filterItem = (this.type === 'jobcode') ? 'job_id' : 'route_id';
253
- const index = this.data.findIndex((ele1) => { return (ele1[`${filterItem}`] === ele[`${filterItem}`]); });
254
- const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);
255
- if (id && index < 0)
256
- this.coolMap.filterRoute(id, 'none');
257
- if (id && index >= 0) {
258
- this.data[index].isActive = false;
259
- this.coolMap.filterRoute(id, 'visible');
260
- this.coolMap.extendBound(ele['path'], (index === (this.data.length - 1)));
261
- }
262
- ;
263
- });
264
- }
265
- clearList() {
266
- this.isDriverList = false;
267
- this.driverList = null;
268
- this.preventMouseout = false;
269
- this.isSmsList = false;
270
- }
271
- sendMessage() {
272
- this.messageLoader = true;
273
- if (this.driverMessage.valid) {
274
- const data = {
275
- order_number: this.driverList['order_number'],
276
- date: this.driverList['date'],
277
- message: this.driverMessage.value,
278
- };
279
- this.utils.postdata('jobs_report_chat', data).subscribe((res) => {
280
- if (res['data']['status'] === 'Success.') {
281
- this.messageLoader = false;
282
- this.driverMessage.reset();
283
- this.utils.openSnackBar('Message Sent', 'success');
284
- }
285
- else {
286
- this.messageLoader = false;
287
- this.utils.openSnackBar('Message not sent', 'error');
288
- }
289
- }, err => { if (err) {
290
- this.messageLoader = false;
291
- } });
292
- }
293
- }
294
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RouteJobCodeListComponent, deps: [{ token: i1.CoolmapService }, { token: i1.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
295
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: RouteJobCodeListComponent, selector: "app-route-jobcode-list", inputs: { loader: "loader", type: "type", data: "data", currentNav: "currentNav", searchTerm: "searchTerm", clearListSeletion: "clearListSeletion" }, outputs: { emitroute: "emitroute", showAllRoute: "showAllRoute", clearJobDetailsFromList: "clearJobDetailsFromList" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" \n (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" \n [preventCloseDetails]=\"preventDetailsClose\" \n [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" \n [route]=\"checkroutes(route)\">\n </app-job-code-list-card>\n <app-view-route-list-card *ngIf=\"visiblesection('addroute')\"\n [emitrouteevent]=\"emitroute\" \n [route]=\"route\">\n </app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;width:15.62em}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:74vh}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "directive", type: i8.CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "component", type: i8.CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "component", type: i9.ViewRouteListCardComponent, selector: "app-view-route-list-card", inputs: ["route", "emitrouteevent"] }, { kind: "component", type: i10.SmsCardDetailsOverviewComponent, selector: "app-sms-card-details-overview", inputs: ["jobValue"] }, { kind: "component", type: i11.JobCodeListCardComponent, selector: "app-job-code-list-card", inputs: ["route", "emitJobdetails", "preventCloseDetails"], outputs: ["routeSeletion", "toggleDrivermenu"] }] });
296
- }
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RouteJobCodeListComponent, decorators: [{
298
- type: Component,
299
- args: [{ selector: 'app-route-jobcode-list', template: "<div class=\"scrollprt addroutelist\" [class.viewroute]=\"visiblesection('addroute')\"\n [class.jobList]=\"visiblesection('jobcode')\">\n <button (click)=\"showRoute()\" [disabled]=\"loader\" *ngIf=\"selectedRoute.selected.length\" class=\"show_routebtn\">Show all\n route</button>\n <cdk-virtual-scroll-viewport itemSize=\"50\" [class.jobscroll]=\"visiblesection('jobcode')\" class=\"example-viewport\">\n <mat-spinner *ngIf=\"loader\"></mat-spinner>\n <ul *ngIf=\"!loader && data.length > 0\">\n <li [class.active]=\"route['isActive'] && visiblesection('addroute')\" *ngFor=\"let route of data\">\n <app-job-code-list-card *ngIf=\"visiblesection('jobcode')\" \n (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" \n [preventCloseDetails]=\"preventDetailsClose\" \n [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" \n [route]=\"checkroutes(route)\">\n </app-job-code-list-card>\n <app-view-route-list-card *ngIf=\"visiblesection('addroute')\"\n [emitrouteevent]=\"emitroute\" \n [route]=\"route\">\n </app-view-route-list-card>\n </li>\n </ul>\n <p *ngIf=\"!loader && data.length === 0\">{{visiblesection('addroute') ? 'No Route found' : 'No Job code found.'}}</p>\n </cdk-virtual-scroll-viewport>\n</div>\n\n<div class=\"driver_list\" *ngIf=\"isDriverList\">\n <div class=\"driver_headingprt\">\n <h2>Driver List</h2>\n <button *ngIf=\"driverList.driver_list?.length > 0\" (click)=\"isSmsList = true\">SMS</button>\n <div class=\"closebtn\" (click)=\"isDriverList = false; preventMouseout = false; isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <ul class=\"driverList\" *ngIf=\"driverList && driverList.driver_list\">\n <li *ngFor=\"let driver of driverList?.driver_list\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"driver['driver_name']\" />\n <div class=\"driver_detail\">\n <b>{{driver['driver_name']}}</b> <span>{{driver['trucking_company']}}</span>\n <div class=\"cont_del\">\n <small>Driver contact: <b>{{driver['driver_phone'] ? driver['driver_phone'] : 'N/A'}}</b></small>\n <small>Company contact: <b>{{driver['trucking_company_phone'] ? driver['trucking_company_phone'] : 'N/A'}}</b></small>\n </div>\n </div>\n </li>\n <p *ngIf=\"driverList.driver_list?.length === 0\" style=\"font-weight:700; text-align:center;\">\n No Driver found\n </p>\n </ul>\n <div class=\"smslist\" *ngIf=\"isSmsList\">\n <div class=\"heading\">\n <h2>SMS All Drivers</h2>\n <div class=\"closebtn\" (click)=\"isSmsList = false\">\n <mat-icon>clear</mat-icon>\n </div>\n </div>\n <div class=\"detailprt\">\n <app-sms-card-details-overview [jobValue]=\"driverList\"></app-sms-card-details-overview>\n <div class=\"form_input\">\n <mat-form-field class=\"example-full-width\">\n <textarea matInput placeholder=\"Text here...\" autocomplete=\"nope\" column=\"10\"\n [formControl]=\"driverMessage\"></textarea>\n <mat-hint>{{driverMessage.value?.length}} / 256</mat-hint>\n </mat-form-field>\n <button *ngIf=\"!messageLoader\" [disabled]=\"!driverMessage.value || driverMessage.invalid\" (click)=\"sendMessage()\">\n Send SMS\n </button>\n </div>\n </div>\n <div class=\"loader\">\n <mat-spinner *ngIf=\"messageLoader\"></mat-spinner>\n </div>\n </div>\n</div>\n", styles: [".driver_iconprt{position:absolute;right:10px;top:12px;z-index:9999}.driver_iconprt img{width:25px;height:25px}.driver_list{background:#fff;position:fixed;width:300px;top:10px;left:360px;border-top-left-radius:20px;border-top-right-radius:20px}.driver_list .driver_headingprt{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.driver_list .driver_headingprt button{background:none;border:1px solid #ccc;border-radius:10px;padding:5px 20px}.driver_list .driver_headingprt button:hover{background:#326ad3;color:#fff}.driver_list h2{font-size:20px}.driver_list .driverList{height:300px;overflow:auto}.driver_list .driverList li{display:flex;padding:10px;align-items:flex-start;cursor:pointer;border-bottom:1px solid white;background:#eee}.driver_list .driverList li img{width:35px;height:35px;border-radius:100%;margin-right:10px}.driver_list .driverList li .driver_detail{width:calc(100% - 45px);display:flex;flex-direction:column;justify-content:flex-start}.driver_list .driverList li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px;font-size:.9rem}.driver_list .driverList li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;font-size:.8rem}.driver_list:after{height:10px;background:#fff;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:#fff;position:absolute;width:480px;top:0;left:105%;border-radius:20px;padding-bottom:20px}.smslist .heading{display:flex;justify-content:space-between;align-items:center;padding:0 15px}.smslist .detailprt{padding:0 15px}.smslist .detailprt span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}.smslist .detailprt span label{font-weight:600;width:37%}.smslist .detailprt .form_input{display:flex;flex-direction:column;font-size:.8rem}.smslist .detailprt .form_input button{background:#326ad3;padding:10px 18px;color:#fff;font-size:.8125rem;border-radius:30px;display:flex;align-self:flex-end}.closebtn{box-shadow:0 0 5px #0000001c;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer;background:#f5f5f5}.show_routebtn{font-size:.9rem;margin-bottom:20px;padding:6px 11px;position:absolute;top:8px;right:10px;background-color:transparent;color:#3f51b5;border:1px solid #3f51b5;border-radius:10px;box-shadow:none}.show_routebtn:hover{background-color:#3f51b5;color:#fff}.cont_del{margin-top:10px}.cont_del small{display:block}.jobList ul{margin:0 .93em 0 0;width:100%}.jobList ul li{position:relative;background:#fbfbfb;padding:10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;height:inherit;width:15.62em}.viewroute ul{width:100%}.viewroute ul li{position:relative;background:#fbfbfb;padding:7px 10px;border-radius:15px;margin-bottom:5px;border:1px solid #fbfbfb;border-left:3px solid #fbfbfb;cursor:pointer;width:15.62em}.viewroute ul li.active{border:1px solid #39c471;border-left:3px solid #39c471}.loader{position:absolute;height:100%;top:0;left:0;width:100%;display:flex;align-items:center;justify-content:center;pointer-events:none}.example-viewport{height:74vh}\n"] }]
300
- }], ctorParameters: () => [{ type: i1.CoolmapService }, { type: i1.UtilsService }], propDecorators: { loader: [{
301
- type: Input
302
- }], type: [{
303
- type: Input
304
- }], data: [{
305
- type: Input
306
- }], currentNav: [{
307
- type: Input
308
- }], emitroute: [{
309
- type: Output
310
- }], showAllRoute: [{
311
- type: Output
312
- }], searchTerm: [{
313
- type: Input
314
- }], clearJobDetailsFromList: [{
315
- type: Output
316
- }], clearListSeletion: [{
317
- type: Input
318
- }] } });
319
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtam9iY29kZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvcm91dGUtam9iY29kZS1saXN0L3JvdXRlLWpvYmNvZGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L3JvdXRlLWpvYmNvZGUtbGlzdC9yb3V0ZS1qb2Jjb2RlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXpELE1BQU0sT0FBTyx5QkFBeUI7SUFvQmpCO0lBQWdDO0lBbkJuQyxNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2QsSUFBSSxHQUFXLEVBQUUsQ0FBQztJQUNsQixJQUFJLEdBQVksRUFBRSxDQUFDO0lBQ25CLFVBQVUsR0FBVyxFQUFFLENBQUE7SUFDdEIsU0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDL0IsWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDbkQsZUFBZSxHQUFZLEtBQUssQ0FBQztJQUNqQyxVQUFVLEdBQVksSUFBSSxDQUFDLElBQUksQ0FBQztJQUNoQixVQUFVLENBQU87SUFDakMsWUFBWSxHQUFZLEtBQUssQ0FBQztJQUN2QixhQUFhLEdBQUcsSUFBSSxjQUFjLENBQU0sSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBQ3hELFVBQVUsQ0FBTztJQUNqQixpQkFBaUIs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Q0FBQyxDQUFDLENBQUE7UUFDbkQsQ0FBQztJQUNKLENBQUM7d0dBN05XLHlCQUF5Qjs0RkFBekIseUJBQXlCLGdXQ1Z0Qywyc0hBeUVBOzs0RkQvRGEseUJBQXlCO2tCQUxyQyxTQUFTOytCQUNFLHdCQUF3Qjs4R0FLbEIsTUFBTTtzQkFBckIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLElBQUk7c0JBQW5CLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFDVyxTQUFTO3NCQUF6QixNQUFNO2dCQUNVLFlBQVk7c0JBQTVCLE1BQU07Z0JBR1MsVUFBVTtzQkFBekIsS0FBSztnQkFLVyx1QkFBdUI7c0JBQXZDLE1BQU07Z0JBSVMsaUJBQWlCO3NCQUFoQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uSW5pdCwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvb2xtYXBTZXJ2aWNlLCBSb3V0ZSwgVXRpbHNTZXJ2aWNlIH0gZnJvbSAnQGFnZ2RpcmVjdC9jb29sbWFwLXNlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLXJvdXRlLWpvYmNvZGUtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9yb3V0ZS1qb2Jjb2RlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yb3V0ZS1qb2Jjb2RlLWxpc3QuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBSb3V0ZUpvYkNvZGVMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBwdWJsaWMgbG9hZGVyID0gdHJ1ZTtcbiAgQElucHV0KCkgcHVibGljIHR5cGU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwdWJsaWMgZGF0YTogUm91dGVbXSA9IFtdO1xuICBASW5wdXQoKSBwdWJsaWMgY3VycmVudE5hdjogc3RyaW5nID0gJydcbiAgQE91dHB1dCgpIHB1YmxpYyBlbWl0cm91dGUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2hvd0FsbFJvdXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcmV2ZW50TW91c2VvdXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZmlsdGVyTGlzdDogUm91dGVbXSA9IHRoaXMuZGF0YTtcbiAgQElucHV0KCkgcHVibGljIHNlYXJjaFRlcm0hOiBhbnk7XG4gIGlzRHJpdmVyTGlzdDogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgc2VsZWN0ZWRSb3V0ZSA9IG5ldyBTZWxlY3Rpb25Nb2RlbDxhbnk+KHRydWUsIFtdKVxuICBkcml2ZXJMaXN0ITogYW55O1xuICBwcmV2ZW50TGlzdFNlbGVjdDogYm9vbGVhbiA9IGZhbHNlO1xuICBAT3V0cHV0KCkgcHVibGljIGNsZWFySm9iRGV0YWlsc0Zyb21MaXN0ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcmV2ZW50RGV0YWlsc0Nsb3NlID0gZmFsc2U7XG4gIG1lc3NhZ2VMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgZHJpdmVyTWVzc2FnZSA9IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildKTtcbiAgQElucHV0KCkgcHVibGljIGNsZWFyTGlzdFNlbGV0aW9uOiBib29sZWFuO1xuICBpc1Ntc0xpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgY29uc3RydWN0b3IocHVibGljIGNvb2xNYXA6IENvb2xtYXBTZXJ2aWNlLCBwdWJsaWMgdXRpbHM6IFV0aWxzU2VydmljZSkgeyB0aGlzLmRyaXZlckxpc3QgPSBbXSB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXRpbHMuZ2V0cHJlVmVudEpvYmRldGFpbGNsb3NlLnN1YnNjcmliZShyZXMgPT4geyB0aGlzLnByZXZlbnREZXRhaWxzQ2xvc2UgPSByZXMgfSk7XG4gICAgdGhpcy51dGlscy5yZW1vdmVNYXBFbnRpdHlVdGlsaXR5LnN1YnNjcmliZSgocmVzOiBSb3V0ZSkgPT4ge3RoaXMucGFzc1JvdXRlKHJlcyl9KTtcbiAgfVxuICBwYXNzUm91dGUoam9iOiBSb3V0ZSkge1xuICAgIHRoaXMuZGF0YS5mb3JFYWNoKChlYWNoKSA9PiB7IGlmIChlYWNoWydyb3V0ZV9pZCddICE9PSBqb2JbJ3JvdXRlX2lkJ10pIHsgZWFjaFsnaXNBY3RpdmUnXSA9IGZhbHNlIH0gZWxzZSB7IGVhY2hbJ2lzQWN0aXZlJ10gPSB0cnVlIH0gfSk7XG4gICAgaWYgKHRoaXMudHlwZSA9PSAnYWRkcm91dGUnKSB0aGlzLmZpbHRlckxpc3QuZm9yRWFjaChlbGUgPT4gdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGVsZVsncm91dGVfaWQnXSwgJ25vbmUnKSk7XG4gIH1cbiAgc2VsZWN0Um91dGUocm91dGU6IGFueSkge1xuICAgIGlmICghdGhpcy5wcmV2ZW50TGlzdFNlbGVjdCkge1xuICAgICAgdGhpcy5wcmV2ZW50TGlzdFNlbGVjdCA9IHRydWU7XG4gICAgICB0aGlzLnNlbGVjdGVkUm91dGUudG9nZ2xlKHJvdXRlKTtcbiAgICAgIHRoaXMuY2xlYXJKb2JEZXRhaWxzRnJvbUxpc3QuZW1pdCh0cnVlKTtcbiAgICAgIHRoaXMudXRpbHMucHJlVmVudEpvYmRldGFpbGNsb3NlLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goZWxlID0+IHRoaXMuY29vbE1hcC5maWx0ZXJSb3V0ZShlbGVbJ2pvYl9pZCddLCAnbm9uZScpKTtcbiAgICAgIHRoaXMuY2xlYXJMaXN0KCk7XG4gICAgICB0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0ZWQuZm9yRWFjaCgoZWxlLCBpbmRleCkgPT4ge1xuICAgICAgICB0aGlzLmNvb2xNYXAuZmlsdGVyUm91dGUoZWxlWydqb2JfaWQnXSwgJ3Zpc2libGUnLCAoKHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGggLSAxKSA9PT0gaW5kZXgpKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnByZXZlbnRMaXN0U2VsZWN0ID0gZmFsc2U7XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnByZXZlbnRMaXN0U2VsZWN0ID0gZmFsc2VcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goZWxlID0+IHRoaXMuY29vbE1hcC5maWx0ZXJSb3V0ZShlbGVbJ2pvYl9pZCddLCAndmlzaWJsZScpKTtcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIGNoZWNrcm91dGVzKHJvdXRlOiBSb3V0ZSkge1xuICAgIGNvbnN0IHNlbGVjdGVkUm91dGUgPSB0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0ZWQ7XG4gICAgdGhpcy5maWx0ZXJMaXN0ID0gdGhpcy5maWx0ZXJMaXN0Lm1hcChlbGUgPT4geyBlbGVbJ2lzU2VsZWN0ZWQnXSA9IGZhbHNlOyByZXR1cm4gZWxlIH0pXG4gICAgaWYgKHNlbGVjdGVkUm91dGUubGVuZ3RoID4gMCkge1xuICAgICAgc2VsZWN0ZWRSb3V0ZS5mb3JFYWNoKGVsZSA9PiB7XG4gICAgICAgIGlmIChyb3V0ZVsnb3JkZXJfbnVtYmVyJ10gPT09IGVsZVsnb3JkZXJfbnVtYmVyJ10pIHsgZWxlWydpc1NlbGVjdGVkJ10gPSB0cnVlIH1cbiAgICAgIH0pO1xuICAgIH0gcmV0dXJuIHJvdXRlXG4gIH1cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY3VycmVudE5hdiA9PT0gJ0FkZHJvdXRlJyAmJiAodGhpcy5kYXRhLmxlbmd0aCA8IHRoaXMuZmlsdGVyTGlzdC5sZW5ndGgpKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5maWx0ZXJMaXN0LmZpbmRJbmRleChlbGUgPT4gZWxlLmlzQWN0aXZlKTtcbiAgICAgICAgaWYgKGluZGV4ID4gMCkgdGhpcy5maWx0ZXJMaXN0W2luZGV4XS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoZWxlOiBSb3V0ZSwgaW5kZXhGb3JEYXRhOiBudW1iZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IChlbGVbJ2pvYl9pZCddID8gZWxlWydqb2JfaWQnXSA6IGVsZVsncm91dGVfaWQnXSlcbiAgICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGVsZSwgaWQsIHRoaXMudHlwZSwgZmFsc2UsIChpbmRleEZvckRhdGEgPT09ICh0aGlzLmRhdGEubGVuZ3RoIC0gMSkpKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSwgNTAwKTtcbiAgICBpZiAoY2hhbmdlc1snZGF0YSddICYmIGNoYW5nZXNbJ2RhdGEnXVsnY3VycmVudFZhbHVlJ10pIHtcbiAgICAgIHRoaXMuZmlsdGVyTGlzdCA9IGNoYW5nZXNbJ2RhdGEnXVsnY3VycmVudFZhbHVlJ107XG4gICAgICBpZiAodGhpcy5zZWFyY2hUZXJtKSB7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFRlcm0ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMudXRpbHMuZ2V0U2VhcmNoUmVzdWx0cyhjaGFuZ2VzWydkYXRhJ11bJ2N1cnJlbnRWYWx1ZSddLCB0aGlzLnNlYXJjaFRlcm0pO1xuICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdCA9IHRoaXMuZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZpbHRlckxpc3QgPSBjaGFuZ2VzWydkYXRhJ11bJ2N1cnJlbnRWYWx1ZSddO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdqb2Jjb2RlJykge1xuICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7IHRoaXMuY2xlYXJMaXN0KCk7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckxpc3QubGVuZ3RoID09PSAwKSB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50eXBlICE9PSAnam9iY29kZScpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2RhdGEnXVsncHJldmlvdXNWYWx1ZSddICYmIHRoaXMuY3VycmVudE5hdiA9PT0gJ2FkZEZvcm0nKSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSBjaGFuZ2VzWydkYXRhJ11bJ3ByZXZpb3VzVmFsdWUnXS5maW5kKChlbGU6IFJvdXRlKSA9PiBlbGUuaXNBY3RpdmUpO1xuICAgICAgICAgIGlmIChhY3RpdmVSb3V0ZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpdGVtLnJvdXRlX2lkID09PSBhY3RpdmVSb3V0ZS5yb3V0ZV9pZCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXNbJ2RhdGEnXVsncHJldmlvdXNWYWx1ZSddICYmIHRoaXMuY3VycmVudE5hdiAhPT0gJ2FkZEZvcm0nKSB7XG4gICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKGNoYW5nZXNbJ2RhdGEnXVsncHJldmlvdXNWYWx1ZSddKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlLmNsZWFyKCk7XG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuY3VycmVudE5hdiAhPT0gJ2FkZEZvcm0nKSB7XG4gICAgICAgIGNoYW5nZXNbJ2RhdGEnXVsnY3VycmVudFZhbHVlJ10uZm9yRWFjaCgoZWxlOiBSb3V0ZSwgaW5kZXhGb3JEYXRhOiBudW1iZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IChlbGVbJ2pvYl9pZCddID8gZWxlWydqb2JfaWQnXSA6IGVsZVsncm91dGVfaWQnXSlcbiAgICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGVsZSwgaWQsIHRoaXMudHlwZSwgZmFsc2UsIChpbmRleEZvckRhdGEgPT09ICh0aGlzLmRhdGEubGVuZ3RoIC0gMSkpKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleEZvckRhdGEgPT09ICh0aGlzLmRhdGEubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc2VhcmNoVGVybSddKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJMaXN0KSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZmlsdGVyTGlzdDtcbiAgICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlYXJjaFRlcm0nXVsnY3VycmVudFZhbHVlJ10ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnV0aWxzLmdldFNlYXJjaFJlc3VsdHModGhpcy5kYXRhLCBjaGFuZ2VzWydzZWFyY2hUZXJtJ11bJ2N1cnJlbnRWYWx1ZSddKTtcbiAgICAgICAgfSBlbHNlIHsgdGhpcy5kYXRhID0gdGhpcy5maWx0ZXJMaXN0OyB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29vbE1hcC5jbGVhckJvdW5kV2l0aENvcmRpbmF0ZXMoKTtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50TmF2ICE9PSAnYWRkRm9ybScgJiYgIXRoaXMuc2VsZWN0ZWRSb3V0ZVsnc2VsZWN0ZWQnXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyUm91dGUodGhpcy5maWx0ZXJMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnROYXYgIT09ICdhZGRGb3JtJyAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ10ubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJKb2JEZXRhaWxzRnJvbUxpc3QuZW1pdCh0cnVlKVxuICAgICAgICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZUpvYkZyb21NYXAodGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoZWxlLCBpbmRleEZvckRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGVsZSwgZWxlWydqb2JfaWQnXSwgdGhpcy50eXBlLCBmYWxzZSwgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkgeyB0aGlzLmxvYWRlciA9IGZhbHNlOyB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKSB9XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvdXRlWydzZWxlY3RlZCddLmxlbmd0aCAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ11bMF1bJ2pvYl9pZCddID09PSBlbGVbJ2pvYl9pZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBzaG93Um91dGUoKSB7XG4gICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQoZmFsc2UpO1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTsgdGhpcy5jbGVhckxpc3QoKTtcbiAgICB0aGlzLnNob3dBbGxSb3V0ZS5lbWl0KHRydWUpO1xuICAgIGlmICh0aGlzLmZpbHRlckxpc3QgJiYgdGhpcy5maWx0ZXJMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGVsZSwgaW5kZXhGb3JEYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb29sTWFwLnBsb3RSb3V0ZShlbGUsIGVsZVsnam9iX2lkJ10sIHRoaXMudHlwZSwgZmFsc2UsIChpbmRleEZvckRhdGEgPT09IHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggLSAxKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXhGb3JEYXRhID09PSB0aGlzLmZpbHRlckxpc3QubGVuZ3RoIC0gMSkgeyB0aGlzLmxvYWRlciA9IGZhbHNlOyB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKSB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvdXRlWydzZWxlY3RlZCddLmxlbmd0aCAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ11bMF1bJ2pvYl9pZCddID09PSBlbGVbJ2pvYl9pZCddKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cbiAgdG9nZ2xlRHJpdmVybWVudShldmVudDogYW55KSB7XG4gICAgY29uc3QgbW91c2Vldm50VHlwZSA9IGV2ZW50Lm1vdXNlZXZudFR5cGU7IGxldCByb3V0ZSA9IGV2ZW50LnJvdXRlO1xuICAgIGNvbnN0IGlzSG92ZXJPdXQgPSBldmVudC5pc0hvdmVyT3V0O1xuICAgIGlmKHR5cGVvZihtb3VzZWV2bnRUeXBlKSA9PT0gJ3N0cmluZycpIHtpZih0aGlzLnByZXZlbnRNb3VzZW91dCl7dGhpcy5pc0RyaXZlckxpc3QgPSAhdGhpcy5pc0RyaXZlckxpc3R9OyB0aGlzLnByZXZlbnRNb3VzZW91dCA9IHRydWV9XG4gICAgaWYgKHR5cGVvZihtb3VzZWV2bnRUeXBlKSA9PT0gJ2Jvb2xlYW4nICYmIW1vdXNlZXZudFR5cGUgJiYgIXRoaXMucHJldmVudE1vdXNlb3V0KSB7IHRoaXMuaXNEcml2ZXJMaXN0ID0gbW91c2Vldm50VHlwZSB9O1xuICAgIGlmICh0eXBlb2YobW91c2Vldm50VHlwZSkgPT09ICdib29sZWFuJyAmJiBtb3VzZWV2bnRUeXBlICYmICF0aGlzLnByZXZlbnRNb3VzZW91dCkgeyB0aGlzLmlzRHJpdmVyTGlzdCA9IG1vdXNlZXZudFR5cGUgfTtcbiAgICBpZih0aGlzLnByZXZlbnRNb3VzZW91dCAmJiAhdGhpcy5pc0RyaXZlckxpc3QpIHRoaXMucHJldmVudE1vdXNlb3V0ID0gZmFsc2U7XG4gICAgaWYgKGlzSG92ZXJPdXQpIHtcbiAgICAgIGlmICh0aGlzLnByZXZlbnRNb3VzZW91dCkge1xuICAgICAgICByb3V0ZSA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdkcml2ZXItZGV0YWlscycpO1xuICAgICAgICB0aGlzLmRyaXZlckxpc3QgPSByb3V0ZTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wcmV2ZW50TW91c2VvdXQpIHtcbiAgICAgICAgdGhpcy5kcml2ZXJMaXN0ID0gcm91dGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcml2ZXJMaXN0ID0gcm91dGVcbiAgICB9XG4gIH1cbiAgdmlzaWJsZXNlY3Rpb24odmFsdWU6IHN0cmluZykgeyBpZiAodGhpcy50eXBlID09PSB2YWx1ZSkgeyByZXR1cm4gdHJ1ZSB9IGVsc2UgcmV0dXJuIGZhbHNlIH1cbiAgdG9nZ2xlRmlsdGVyUm91dGUoZmlsdGVyTGlzdDogUm91dGVbXSkge1xuICAgIGZpbHRlckxpc3QuZm9yRWFjaCgoZWxlKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJJdGVtID0gKHRoaXMudHlwZSA9PT0gJ2pvYmNvZGUnKSA/ICdqb2JfaWQnIDogJ3JvdXRlX2lkJztcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleCgoZWxlMSkgPT4geyByZXR1cm4gKGVsZTFbYCR7ZmlsdGVySXRlbX1gXSA9PT0gZWxlW2Ake2ZpbHRlckl0ZW19YF0pIH0pO1xuICAgICAgY29uc3QgaWQgPSAoZWxlWydqb2JfaWQnXSA/IGVsZVsnam9iX2lkJ10gOiBlbGVbJ3JvdXRlX2lkJ10pO1xuICAgICAgaWYgKGlkICYmIGluZGV4IDwgMCkgdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGlkLCAnbm9uZScpO1xuICAgICAgaWYgKGlkICYmIGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5kYXRhW2luZGV4XS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvb2xNYXAuZmlsdGVyUm91dGUoaWQsICd2aXNpYmxlJyk7XG4gICAgICAgIHRoaXMuY29vbE1hcC5leHRlbmRCb3VuZChlbGVbJ3BhdGgnXSwgKGluZGV4ID09PSAodGhpcy5kYXRhLmxlbmd0aCAtIDEpKSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGNsZWFyTGlzdCgpIHtcbiAgICB0aGlzLmlzRHJpdmVyTGlzdCA9IGZhbHNlOyB0aGlzLmRyaXZlckxpc3QgPSBudWxsOyB0aGlzLnByZXZlbnRNb3VzZW91dCA9IGZhbHNlOyB0aGlzLmlzU21zTGlzdCA9IGZhbHNlO1xuICB9XG4gIHNlbmRNZXNzYWdlKCkge1xuICAgIHRoaXMubWVzc2FnZUxvYWRlciA9IHRydWVcbiAgICBpZiAodGhpcy5kcml2ZXJNZXNzYWdlLnZhbGlkKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICBvcmRlcl9udW1iZXI6IHRoaXMuZHJpdmVyTGlzdFsnb3JkZXJfbnVtYmVyJ10sXG4gICAgICAgIGRhdGU6IHRoaXMuZHJpdmVyTGlzdFsnZGF0ZSddLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLmRyaXZlck1lc3NhZ2UudmFsdWUsXG4gICAgICB9XG4gICAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdqb2JzX3JlcG9ydF9jaGF0JywgZGF0YSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzWydkYXRhJ11bJ3N0YXR1cyddID09PSAnU3VjY2Vzcy4nKSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5kcml2ZXJNZXNzYWdlLnJlc2V0KCk7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIoJ01lc3NhZ2UgU2VudCcsICdzdWNjZXNzJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5tZXNzYWdlTG9hZGVyID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy51dGlscy5vcGVuU25hY2tCYXIoJ01lc3NhZ2Ugbm90IHNlbnQnLCAnZXJyb3InKTtcbiAgICAgICAgfVxuICAgICAgfSwgZXJyID0+IHtpZihlcnIpIHt0aGlzLm1lc3NhZ2VMb2FkZXIgPSBmYWxzZX19KVxuICAgIH1cbiB9XG59XG4iLCI8ZGl2IGNsYXNzPVwic2Nyb2xscHJ0IGFkZHJvdXRlbGlzdFwiIFtjbGFzcy52aWV3cm91dGVdPVwidmlzaWJsZXNlY3Rpb24oJ2FkZHJvdXRlJylcIlxuICBbY2xhc3Muam9iTGlzdF09XCJ2aXNpYmxlc2VjdGlvbignam9iY29kZScpXCI+XG4gIDxidXR0b24gKGNsaWNrKT1cInNob3dSb3V0ZSgpXCIgW2Rpc2FibGVkXT1cImxvYWRlclwiICpuZ0lmPVwic2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGhcIiBjbGFzcz1cInNob3dfcm91dGVidG5cIj5TaG93IGFsbFxuICAgIHJvdXRlPC9idXR0b24+XG4gICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydCBpdGVtU2l6ZT1cIjUwXCIgW2NsYXNzLmpvYnNjcm9sbF09XCJ2aXNpYmxlc2VjdGlvbignam9iY29kZScpXCIgY2xhc3M9XCJleGFtcGxlLXZpZXdwb3J0XCI+XG4gICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJsb2FkZXJcIj48L21hdC1zcGlubmVyPlxuICAgICAgPHVsICpuZ0lmPVwiIWxvYWRlciAmJiBkYXRhLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwicm91dGVbJ2lzQWN0aXZlJ10gJiYgdmlzaWJsZXNlY3Rpb24oJ2FkZHJvdXRlJylcIiAqbmdGb3I9XCJsZXQgcm91dGUgb2YgZGF0YVwiPlxuICAgICAgICAgICAgPGFwcC1qb2ItY29kZS1saXN0LWNhcmQgKm5nSWY9XCJ2aXNpYmxlc2VjdGlvbignam9iY29kZScpXCIgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodG9nZ2xlRHJpdmVybWVudSk9XCJ0b2dnbGVEcml2ZXJtZW51KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJvdXRlU2VsZXRpb24pPVwic2VsZWN0Um91dGUoJGV2ZW50KVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZXZlbnRDbG9zZURldGFpbHNdPVwicHJldmVudERldGFpbHNDbG9zZVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VtaXRKb2JkZXRhaWxzXT1cIntlbWl0cm91dGUsIGNsZWFySm9iRGV0YWlsc0Zyb21MaXN0fVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JvdXRlXT1cImNoZWNrcm91dGVzKHJvdXRlKVwiPlxuICAgICAgICAgICAgPC9hcHAtam9iLWNvZGUtbGlzdC1jYXJkPlxuICAgICAgICAgICAgPGFwcC12aWV3LXJvdXRlLWxpc3QtY2FyZCAqbmdJZj1cInZpc2libGVzZWN0aW9uKCdhZGRyb3V0ZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VtaXRyb3V0ZWV2ZW50XT1cImVtaXRyb3V0ZVwiIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcm91dGVdPVwicm91dGVcIj5cbiAgICAgICAgICAgIDwvYXBwLXZpZXctcm91dGUtbGlzdC1jYXJkPlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICAgIDxwICpuZ0lmPVwiIWxvYWRlciAmJiBkYXRhLmxlbmd0aCA9PT0gMFwiPnt7dmlzaWJsZXNlY3Rpb24oJ2FkZHJvdXRlJykgPyAnTm8gUm91dGUgZm91bmQnIDogJ05vIEpvYiBjb2RlIGZvdW5kLid9fTwvcD5cbiAgICA8L2Nkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydD5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiZHJpdmVyX2xpc3RcIiAqbmdJZj1cImlzRHJpdmVyTGlzdFwiPlxuICA8ZGl2IGNsYXNzPVwiZHJpdmVyX2hlYWRpbmdwcnRcIj5cbiAgICA8aDI+RHJpdmVyIExpc3Q8L2gyPlxuICAgIDxidXR0b24gKm5nSWY9XCJkcml2ZXJMaXN0LmRyaXZlcl9saXN0Py5sZW5ndGggPiAwXCIgKGNsaWNrKT1cImlzU21zTGlzdCA9IHRydWVcIj5TTVM8L2J1dHRvbj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5cIiAoY2xpY2spPVwiaXNEcml2ZXJMaXN0ID0gZmFsc2U7IHByZXZlbnRNb3VzZW91dCA9IGZhbHNlOyBpc1Ntc0xpc3QgPSBmYWxzZVwiPlxuICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDx1bCBjbGFzcz1cImRyaXZlckxpc3RcIiAqbmdJZj1cImRyaXZlckxpc3QgJiYgZHJpdmVyTGlzdC5kcml2ZXJfbGlzdFwiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgZHJpdmVyIG9mIGRyaXZlckxpc3Q/LmRyaXZlcl9saXN0XCI+XG4gICAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvZHJpdmVyX2ljb24ucG5nXCIgW2FsdF09XCJkcml2ZXJbJ2RyaXZlcl9uYW1lJ11cIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cImRyaXZlcl9kZXRhaWxcIj5cbiAgICAgICAgPGI+e3tkcml2ZXJbJ2RyaXZlcl9uYW1lJ119fTwvYj4gPHNwYW4+e3tkcml2ZXJbJ3RydWNraW5nX2NvbXBhbnknXX19PC9zcGFuPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udF9kZWxcIj5cbiAgICAgICAgICA8c21hbGw+RHJpdmVyIGNvbnRhY3Q6IDxiPnt7ZHJpdmVyWydkcml2ZXJfcGhvbmUnXSA/IGRyaXZlclsnZHJpdmVyX3Bob25lJ10gOiAnTi9BJ319PC9iPjwvc21hbGw+XG4gICAgICAgICAgPHNtYWxsPkNvbXBhbnkgY29udGFjdDogPGI+e3tkcml2ZXJbJ3RydWNraW5nX2NvbXBhbnlfcGhvbmUnXSA/IGRyaXZlclsndHJ1Y2tpbmdfY29tcGFueV9waG9uZSddIDogJ04vQSd9fTwvYj48L3NtYWxsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbGk+XG4gICAgPHAgKm5nSWY9XCJkcml2ZXJMaXN0LmRyaXZlcl9saXN0Py5sZW5ndGggPT09IDBcIiBzdHlsZT1cImZvbnQtd2VpZ2h0OjcwMDsgdGV4dC1hbGlnbjpjZW50ZXI7XCI+XG4gICAgICBObyBEcml2ZXIgZm91bmRcbiAgICA8L3A+XG4gIDwvdWw+XG4gIDxkaXYgY2xhc3M9XCJzbXNsaXN0XCIgKm5nSWY9XCJpc1Ntc0xpc3RcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlxuICAgICAgPGgyPlNNUyBBbGwgRHJpdmVyczwvaDI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5cIiAoY2xpY2spPVwiaXNTbXNMaXN0ID0gZmFsc2VcIj5cbiAgICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkZXRhaWxwcnRcIj5cbiAgICAgIDxhcHAtc21zLWNhcmQtZGV0YWlscy1vdmVydmlldyBbam9iVmFsdWVdPVwiZHJpdmVyTGlzdFwiPjwvYXBwLXNtcy1jYXJkLWRldGFpbHMtb3ZlcnZpZXc+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybV9pbnB1dFwiPlxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJleGFtcGxlLWZ1bGwtd2lkdGhcIj5cbiAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJUZXh0IGhlcmUuLi5cIiBhdXRvY29tcGxldGU9XCJub3BlXCIgY29sdW1uPVwiMTBcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRyaXZlck1lc3NhZ2VcIj48L3RleHRhcmVhPlxuICAgICAgICAgIDxtYXQtaGludD57e2RyaXZlck1lc3NhZ2UudmFsdWU/Lmxlbmd0aH19IC8gMjU2PC9tYXQtaGludD5cbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFtZXNzYWdlTG9hZGVyXCIgW2Rpc2FibGVkXT1cIiFkcml2ZXJNZXNzYWdlLnZhbHVlIHx8IGRyaXZlck1lc3NhZ2UuaW52YWxpZFwiIChjbGljayk9XCJzZW5kTWVzc2FnZSgpXCI+XG4gICAgICAgICAgU2VuZCBTTVNcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibG9hZGVyXCI+XG4gICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJtZXNzYWdlTG9hZGVyXCI+PC9tYXQtc3Bpbm5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,19 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { DriverSmsCardEnum, DriversmsCardKey } from '@aggdirect/coolmap-services';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- export class SmsCardDetailsOverviewComponent {
6
- jobValue;
7
- label = DriversmsCardKey;
8
- overViewEnum = DriverSmsCardEnum;
9
- constructor() { }
10
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SmsCardDetailsOverviewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
11
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SmsCardDetailsOverviewComponent, selector: "app-sms-card-details-overview", inputs: { jobValue: "jobValue" }, ngImport: i0, template: "<ng-container *ngFor=\"let item of label\">\n <span>\n <label>{{overViewEnum[item]}}</label>\n <ng-container *ngIf=\"item !== 'values'\">{{jobValue[item] ? jobValue[item] : 'N/A'}}</ng-container>\n <ng-container *ngIf=\"item === 'values'\">{{jobValue[item]['Done'] + jobValue[item]['Ongoing'] + jobValue[item]['Open']}}</ng-container>\n </span>\n</ng-container>\n", styles: ["span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}span label{font-weight:600;width:37%}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
12
- }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SmsCardDetailsOverviewComponent, decorators: [{
14
- type: Component,
15
- args: [{ selector: 'app-sms-card-details-overview', template: "<ng-container *ngFor=\"let item of label\">\n <span>\n <label>{{overViewEnum[item]}}</label>\n <ng-container *ngIf=\"item !== 'values'\">{{jobValue[item] ? jobValue[item] : 'N/A'}}</ng-container>\n <ng-container *ngIf=\"item === 'values'\">{{jobValue[item]['Done'] + jobValue[item]['Ongoing'] + jobValue[item]['Open']}}</ng-container>\n </span>\n</ng-container>\n", styles: ["span{display:flex;margin-bottom:12px;font-size:.8rem;align-items:center}span label{font-weight:600;width:37%}\n"] }]
16
- }], ctorParameters: () => [], propDecorators: { jobValue: [{
17
- type: Input
18
- }] } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21zLWNhcmQtZGV0YWlscy1vdmVydmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L3JvdXRlLWpvYmNvZGUtbGlzdC9zbXMtY2FyZC1kZXRhaWxzLW92ZXJ2aWV3L3Ntcy1jYXJkLWRldGFpbHMtb3ZlcnZpZXcuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9yb3V0ZS1qb2Jjb2RlLWxpc3Qvc21zLWNhcmQtZGV0YWlscy1vdmVydmlldy9zbXMtY2FyZC1kZXRhaWxzLW92ZXJ2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFPbEYsTUFBTSxPQUFPLCtCQUErQjtJQUMxQixRQUFRLENBQU07SUFDOUIsS0FBSyxHQUFHLGdCQUFnQixDQUFDO0lBQ3pCLFlBQVksR0FBUSxpQkFBaUIsQ0FBQztJQUN0QyxnQkFBZ0IsQ0FBQzt3R0FKTiwrQkFBK0I7NEZBQS9CLCtCQUErQix1R0NSNUMsd1hBT0E7OzRGRENhLCtCQUErQjtrQkFMM0MsU0FBUzsrQkFDRSwrQkFBK0I7d0RBS3pCLFFBQVE7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEcml2ZXJTbXNDYXJkRW51bSwgRHJpdmVyc21zQ2FyZEtleSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1zbXMtY2FyZC1kZXRhaWxzLW92ZXJ2aWV3JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Ntcy1jYXJkLWRldGFpbHMtb3ZlcnZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbXMtY2FyZC1kZXRhaWxzLW92ZXJ2aWV3LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU21zQ2FyZERldGFpbHNPdmVydmlld0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHB1YmxpYyBqb2JWYWx1ZTogYW55O1xuICBsYWJlbCA9IERyaXZlcnNtc0NhcmRLZXk7XG4gIG92ZXJWaWV3RW51bTogYW55ID0gRHJpdmVyU21zQ2FyZEVudW07XG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGFiZWxcIj5cbiAgPHNwYW4+XG4gICAgPGxhYmVsPnt7b3ZlclZpZXdFbnVtW2l0ZW1dfX08L2xhYmVsPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtICE9PSAndmFsdWVzJ1wiPnt7am9iVmFsdWVbaXRlbV0gPyBqb2JWYWx1ZVtpdGVtXSA6ICdOL0EnfX08L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbSA9PT0gJ3ZhbHVlcydcIj57e2pvYlZhbHVlW2l0ZW1dWydEb25lJ10gKyBqb2JWYWx1ZVtpdGVtXVsnT25nb2luZyddICsgam9iVmFsdWVbaXRlbV1bJ09wZW4nXX19PC9uZy1jb250YWluZXI+XG4gIDwvc3Bhbj5cbjwvbmctY29udGFpbmVyPlxuIl19
@@ -1,37 +0,0 @@
1
- import { Component, Inject, Input } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@aggdirect/coolmap-services";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/material/icon";
6
- export class ViewRouteListCardComponent {
7
- utils;
8
- config;
9
- route;
10
- emitrouteevent;
11
- constructor(utils, config) {
12
- this.utils = utils;
13
- this.config = config;
14
- }
15
- detailsDict(event, route) {
16
- if (event === 'click')
17
- this.utils.setdictValue('route-detailsv2', JSON.stringify(route));
18
- route['type'] = 'editroute';
19
- route['prevent'] = true;
20
- this.emitrouteevent.emit(route);
21
- this.utils.routeDetailsUtility.next({ event, route });
22
- }
23
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewRouteListCardComponent, deps: [{ token: i1.UtilsService }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
24
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ViewRouteListCardComponent, selector: "app-view-route-list-card", inputs: { route: "route", emitrouteevent: "emitrouteevent" }, ngImport: i0, template: "<div class=\"routebox\">\n <span>\n <mat-icon>directions</mat-icon>\n <h2 [ngClass]=\"{'routeheading': route['route_name']}\">\n {{route['route_name']}}\n </h2>\n </span>\n <h3><ng-container *ngIf=\"config?.repository === 'coolmap'\">{{route['customer_name']}}</ng-container></h3>\n\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{route['pickup_location']?.split('|')[1] ? route['pickup_location'].split('|')[1] : route['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{route['delivery_location']?.split('|')[1] ? route['delivery_location'].split('|')[1] : route['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n <div class=\"infoicon\" (click)=\"detailsDict('click', route)\" (mouseover)=\"detailsDict(true, route)\"\n (mouseleave)=\"detailsDict(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"status routestatus\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n</div>\n\n", styles: [".routebox span{display:flex;align-items:center}.routebox span h2{margin-left:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px;margin-bottom:5px;margin-top:5px;font-size:.95rem}.routebox h3{font-size:.85rem;color:#767676;font-weight:400;margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:325px;margin-bottom:10px}.routebox .pickdropprt{font-size:.8125rem}.routebox .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:6px}.routebox .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.routebox .pickdropprt .pickprt b{position:relative;font-weight:400}.routebox .pickdropprt .pickprt b:after{background:#000;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.routebox .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;font-weight:400;overflow:hidden}@media (min-width: 1600px){.routebox .pickdropprt .pickprt h4{max-width:265px}}.routebox .pickdropprt .pickprt h4:before{background:green;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.routebox .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.routebox .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.routebox .pickdropprt .dropprt b{position:relative;font-weight:400}.routebox .pickdropprt .dropprt b:after{background:#000;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.routebox .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;font-weight:400;overflow:hidden}.routebox .pickdropprt .dropprt h4:before{background:red;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.routebox .infoicon{position:absolute;right:10px;top:11px}.routebox .infoicon img{width:20px;height:20px}.routebox .status{position:absolute;border-radius:30px;top:12px;right:40px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;padding:3px 10px}.routebox .status.routestatus{right:36px;width:20px;height:20px;text-align:center;line-height:20px;padding:0 0 0 1px}.routebox .status.routestatus:first-letter{font-size:.8rem}@media (min-width: 1600px){.routebox .status.routestatus{padding:0;line-height:22px}}.routebox .status.Ton{background:#ff7272}.routebox .status.Load{background:#a3c52e}.routebox .status.Hourly{background:#ae23d1}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
25
- }
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ViewRouteListCardComponent, decorators: [{
27
- type: Component,
28
- args: [{ selector: 'app-view-route-list-card', template: "<div class=\"routebox\">\n <span>\n <mat-icon>directions</mat-icon>\n <h2 [ngClass]=\"{'routeheading': route['route_name']}\">\n {{route['route_name']}}\n </h2>\n </span>\n <h3><ng-container *ngIf=\"config?.repository === 'coolmap'\">{{route['customer_name']}}</ng-container></h3>\n\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{route['pickup_location']?.split('|')[1] ? route['pickup_location'].split('|')[1] : route['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{route['delivery_location']?.split('|')[1] ? route['delivery_location'].split('|')[1] : route['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n <div class=\"infoicon\" (click)=\"detailsDict('click', route)\" (mouseover)=\"detailsDict(true, route)\"\n (mouseleave)=\"detailsDict(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"status routestatus\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n</div>\n\n", styles: [".routebox span{display:flex;align-items:center}.routebox span h2{margin-left:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:180px;margin-bottom:5px;margin-top:5px;font-size:.95rem}.routebox h3{font-size:.85rem;color:#767676;font-weight:400;margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:325px;margin-bottom:10px}.routebox .pickdropprt{font-size:.8125rem}.routebox .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:6px}.routebox .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.routebox .pickdropprt .pickprt b{position:relative;font-weight:400}.routebox .pickdropprt .pickprt b:after{background:#000;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.routebox .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;font-weight:400;overflow:hidden}@media (min-width: 1600px){.routebox .pickdropprt .pickprt h4{max-width:265px}}.routebox .pickdropprt .pickprt h4:before{background:green;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.routebox .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.routebox .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.routebox .pickdropprt .dropprt b{position:relative;font-weight:400}.routebox .pickdropprt .dropprt b:after{background:#000;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.routebox .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;font-weight:400;overflow:hidden}.routebox .pickdropprt .dropprt h4:before{background:red;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.routebox .infoicon{position:absolute;right:10px;top:11px}.routebox .infoicon img{width:20px;height:20px}.routebox .status{position:absolute;border-radius:30px;top:12px;right:40px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;padding:3px 10px}.routebox .status.routestatus{right:36px;width:20px;height:20px;text-align:center;line-height:20px;padding:0 0 0 1px}.routebox .status.routestatus:first-letter{font-size:.8rem}@media (min-width: 1600px){.routebox .status.routestatus{padding:0;line-height:22px}}.routebox .status.Ton{background:#ff7272}.routebox .status.Load{background:#a3c52e}.routebox .status.Hourly{background:#ae23d1}\n"] }]
29
- }], ctorParameters: () => [{ type: i1.UtilsService }, { type: i1.CoolmapConfigModel, decorators: [{
30
- type: Inject,
31
- args: ['memberData']
32
- }] }], propDecorators: { route: [{
33
- type: Input
34
- }], emitrouteevent: [{
35
- type: Input
36
- }] } });
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy1yb3V0ZS1saXN0LWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9yb3V0ZS1qb2Jjb2RlLWxpc3Qvdmlldy1yb3V0ZS1saXN0LWNhcmQvdmlldy1yb3V0ZS1saXN0LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9yb3V0ZS1qb2Jjb2RlLWxpc3Qvdmlldy1yb3V0ZS1saXN0LWNhcmQvdmlldy1yb3V0ZS1saXN0LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVF6RCxNQUFNLE9BQU8sMEJBQTBCO0lBR2xCO0lBQ1k7SUFIZixLQUFLLENBQVM7SUFDZCxjQUFjLENBQU07SUFDcEMsWUFBbUIsS0FBbUIsRUFDUCxNQUEwQjtRQUR0QyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ1AsV0FBTSxHQUFOLE1BQU0sQ0FBb0I7SUFBSSxDQUFDO0lBRTlELFdBQVcsQ0FBQyxLQUF1QixFQUFFLEtBQVk7UUFDL0MsSUFBRyxLQUFLLEtBQUssT0FBTztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN4RixLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RGLElBQUksQ0FBQyxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQzt3R0FWVSwwQkFBMEIsOENBSTNCLFlBQVk7NEZBSlgsMEJBQTBCLDhIQ1J2Qyx3aUNBNEJBOzs0RkRwQmEsMEJBQTBCO2tCQUx0QyxTQUFTOytCQUNFLDBCQUEwQjs7MEJBUWpDLE1BQU07MkJBQUMsWUFBWTt5Q0FITixLQUFLO3NCQUFwQixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvb2xtYXBDb25maWdNb2RlbCwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC12aWV3LXJvdXRlLWxpc3QtY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi92aWV3LXJvdXRlLWxpc3QtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3ZpZXctcm91dGUtbGlzdC1jYXJkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmlld1JvdXRlTGlzdENhcmRDb21wb25lbnQge1xuICBASW5wdXQoKSBwdWJsaWMgcm91dGUhOiBSb3V0ZTtcbiAgQElucHV0KCkgcHVibGljIGVtaXRyb3V0ZWV2ZW50OiBhbnk7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ21lbWJlckRhdGEnKSBwdWJsaWMgY29uZmlnOiBDb29sbWFwQ29uZmlnTW9kZWwpIHsgfVxuXG4gIGRldGFpbHNEaWN0KGV2ZW50OiBib29sZWFuIHwgc3RyaW5nLCByb3V0ZTogUm91dGUpIHtcbiAgICBpZihldmVudCA9PT0gJ2NsaWNrJykgdGhpcy51dGlscy5zZXRkaWN0VmFsdWUoJ3JvdXRlLWRldGFpbHN2MicsIEpTT04uc3RyaW5naWZ5KHJvdXRlKSk7XG4gICAgcm91dGVbJ3R5cGUnXSA9ICdlZGl0cm91dGUnOyByb3V0ZVsncHJldmVudCddID0gdHJ1ZTsgdGhpcy5lbWl0cm91dGVldmVudC5lbWl0KHJvdXRlKTtcbiAgICB0aGlzLnV0aWxzLnJvdXRlRGV0YWlsc1V0aWxpdHkubmV4dCh7IGV2ZW50LCByb3V0ZSB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvdXRlYm94XCI+XG4gIDxzcGFuPlxuICAgIDxtYXQtaWNvbj5kaXJlY3Rpb25zPC9tYXQtaWNvbj5cbiAgICA8aDIgW25nQ2xhc3NdPVwieydyb3V0ZWhlYWRpbmcnOiByb3V0ZVsncm91dGVfbmFtZSddfVwiPlxuICAgICAge3tyb3V0ZVsncm91dGVfbmFtZSddfX1cbiAgICA8L2gyPlxuICA8L3NwYW4+XG4gIDxoMz48bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnPy5yZXBvc2l0b3J5ID09PSAnY29vbG1hcCdcIj57e3JvdXRlWydjdXN0b21lcl9uYW1lJ119fTwvbmctY29udGFpbmVyPjwvaDM+XG5cbiAgPGRpdiBjbGFzcz1cInBpY2tkcm9wcHJ0XCI+XG4gICAgPGRpdiBjbGFzcz1cInBpY2twcnRcIj5cbiAgICAgIDxiPlxuICAgICAgICA8aDQ+e3tyb3V0ZVsncGlja3VwX2xvY2F0aW9uJ10/LnNwbGl0KCd8JylbMV0gPyByb3V0ZVsncGlja3VwX2xvY2F0aW9uJ10uc3BsaXQoJ3wnKVsxXSA6IHJvdXRlWydwaWNrdXBfbG9jYXRpb24nXX19PC9oND5cbiAgICAgIDwvYj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZHJvcHBydFwiPlxuICAgICAgPGI+XG4gICAgICAgIDxoND57e3JvdXRlWydkZWxpdmVyeV9sb2NhdGlvbiddPy5zcGxpdCgnfCcpWzFdID8gcm91dGVbJ2RlbGl2ZXJ5X2xvY2F0aW9uJ10uc3BsaXQoJ3wnKVsxXSA6IHJvdXRlWydkZWxpdmVyeV9sb2NhdGlvbiddfX08L2g0PlxuICAgICAgPC9iPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImluZm9pY29uXCIgKGNsaWNrKT1cImRldGFpbHNEaWN0KCdjbGljaycsIHJvdXRlKVwiIChtb3VzZW92ZXIpPVwiZGV0YWlsc0RpY3QodHJ1ZSwgcm91dGUpXCJcbiAgICAobW91c2VsZWF2ZSk9XCJkZXRhaWxzRGljdChmYWxzZSwgcm91dGUpXCI+XG4gICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL2luZm9faWNvbi5wbmdcIiBbYWx0XT1cIlwiIC8+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3RhdHVzIHJvdXRlc3RhdHVzXCIgW25nQ2xhc3NdPVwicm91dGVbJ3VuaXQnXVwiPnt7cm91dGVbJ3VuaXQnXX19PC9kaXY+XG48L2Rpdj5cblxuIl19
@@ -1,31 +0,0 @@
1
- import { Component, Inject } from '@angular/core';
2
- import { MAT_DIALOG_DATA } from '@angular/material/dialog';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/material/dialog";
5
- export class DialogComponent {
6
- dialogRef;
7
- data;
8
- body = 'Are you sure you want to delete?';
9
- positive = 'Delete';
10
- negative = 'Cancel';
11
- constructor(dialogRef, data) {
12
- this.dialogRef = dialogRef;
13
- this.data = data;
14
- ['body', 'positive', 'negative'].map(elem => {
15
- if (this.data[elem] !== undefined) {
16
- this[elem] = this.data[elem];
17
- }
18
- });
19
- }
20
- onClose(result) { this.dialogRef.close(result); }
21
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
22
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DialogComponent, selector: "app-dialog", ngImport: i0, template: "<div class=\"dialogbox\">\n <h2>{{body}}</h2>\n <div class=\"twobtnprt\">\n <button class=\"delbtn\" (click)=\"onClose(true)\">{{positive}}</button>\n <button class=\"closebtn\" (click)=\"onClose(false)\">{{negative}}</button>\n </div>\n</div>\n", styles: [".dialogbox{display:flex;flex-direction:column}.dialogbox h2{font-size:1.5rem}.dialogbox .twobtnprt{display:flex;justify-content:center;margin-top:10px}.closebtn{background:#000;color:#fff;border-radius:30px;padding:10px 18px;margin:0 10px;font-size:1rem}.delbtn{background:red;color:#fff;border-radius:30px;padding:10px 18px;margin:0 10px;font-size:1rem}\n"] });
23
- }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DialogComponent, decorators: [{
25
- type: Component,
26
- args: [{ selector: 'app-dialog', template: "<div class=\"dialogbox\">\n <h2>{{body}}</h2>\n <div class=\"twobtnprt\">\n <button class=\"delbtn\" (click)=\"onClose(true)\">{{positive}}</button>\n <button class=\"closebtn\" (click)=\"onClose(false)\">{{negative}}</button>\n </div>\n</div>\n", styles: [".dialogbox{display:flex;flex-direction:column}.dialogbox h2{font-size:1.5rem}.dialogbox .twobtnprt{display:flex;justify-content:center;margin-top:10px}.closebtn{background:#000;color:#fff;border-radius:30px;padding:10px 18px;margin:0 10px;font-size:1rem}.delbtn{background:red;color:#fff;border-radius:30px;padding:10px 18px;margin:0 10px;font-size:1rem}\n"] }]
27
- }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
28
- type: Inject,
29
- args: [MAT_DIALOG_DATA]
30
- }] }] });
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvc2hhcmVkL2RpYWxvZy9kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9zaGFyZWQvZGlhbG9nL2RpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQWUsZUFBZSxFQUFDLE1BQU0sMEJBQTBCLENBQUM7OztBQU12RSxNQUFNLE9BQU8sZUFBZTtJQUlQO0lBQTBFO0lBSDdGLElBQUksR0FBRyxrQ0FBa0MsQ0FBQztJQUMxQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQ3BCLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDcEIsWUFBbUIsU0FBd0MsRUFBa0MsSUFBUztRQUFuRixjQUFTLEdBQVQsU0FBUyxDQUErQjtRQUFrQyxTQUFJLEdBQUosSUFBSSxDQUFLO1FBQ3BHLENBQUMsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsTUFBZSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBLENBQUMsQ0FBQzt3R0FUOUMsZUFBZSw4Q0FJMkMsZUFBZTs0RkFKekUsZUFBZSxrRENQNUIsZ1FBT0E7OzRGREFhLGVBQWU7a0JBTDNCLFNBQVM7K0JBQ0UsWUFBWTs7MEJBUXdDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kaWFsb2cuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBEaWFsb2dDb21wb25lbnQge1xuICBib2R5ID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGU/JztcbiAgcG9zaXRpdmUgPSAnRGVsZXRlJztcbiAgbmVnYXRpdmUgPSAnQ2FuY2VsJztcbiAgY29uc3RydWN0b3IocHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPERpYWxvZ0NvbXBvbmVudD4sIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgZGF0YTogYW55KSB7XG4gICAgWydib2R5JywgJ3Bvc2l0aXZlJywgJ25lZ2F0aXZlJ10ubWFwKGVsZW0gPT4ge1xuICAgICAgaWYgKHRoaXMuZGF0YVtlbGVtXSAhPT0gdW5kZWZpbmVkKSB7IHRoaXNbZWxlbV0gPSB0aGlzLmRhdGFbZWxlbV0gfVxuICAgIH0pO1xuICB9XG4gIG9uQ2xvc2UocmVzdWx0OiBib29sZWFuKSB7IHRoaXMuZGlhbG9nUmVmLmNsb3NlKHJlc3VsdCkgfVxufVxuIiwiPGRpdiBjbGFzcz1cImRpYWxvZ2JveFwiPlxuICA8aDI+e3tib2R5fX08L2gyPlxuICA8ZGl2IGNsYXNzPVwidHdvYnRucHJ0XCI+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImRlbGJ0blwiIChjbGljayk9XCJvbkNsb3NlKHRydWUpXCI+e3twb3NpdGl2ZX19PC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImNsb3NlYnRuXCIgKGNsaWNrKT1cIm9uQ2xvc2UoZmFsc2UpXCI+e3tuZWdhdGl2ZX19PC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -1,18 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { EstinationEnum, EstinationData } from '@aggdirect/coolmap-services';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/common";
5
- export class EstimationDisplayComponent {
6
- value;
7
- label = EstinationData;
8
- Estinationlabel = EstinationEnum;
9
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstimationDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EstimationDisplayComponent, selector: "app-estimation-display", inputs: { value: "value" }, ngImport: i0, template: "<div class=\"d-flex\">\n <ng-container *ngFor=\"let item of label\">\n <span *ngIf=\"value[item]\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Estimation of {{Estinationlabel[item]}} - <b>{{value[item]}}</b>\n </span>\n </ng-container>\n</div>\n", styles: [".estimate{margin-right:20px;font-size:.7rem}@media (min-width: 1600px){.estimate{font-size:.95rem}}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
11
- }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EstimationDisplayComponent, decorators: [{
13
- type: Component,
14
- args: [{ selector: 'app-estimation-display', template: "<div class=\"d-flex\">\n <ng-container *ngFor=\"let item of label\">\n <span *ngIf=\"value[item]\" class=\"estimate\" (mousedown)=\"$event.stopPropagation()\">\n Estimation of {{Estinationlabel[item]}} - <b>{{value[item]}}</b>\n </span>\n </ng-container>\n</div>\n", styles: [".estimate{margin-right:20px;font-size:.7rem}@media (min-width: 1600px){.estimate{font-size:.95rem}}\n"] }]
15
- }], propDecorators: { value: [{
16
- type: Input
17
- }] } });
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXN0aW1hdGlvbi1kaXNwbGF5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvc2hhcmVkL2VzdGltYXRpb24tZGlzcGxheS9lc3RpbWF0aW9uLWRpc3BsYXkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9zaGFyZWQvZXN0aW1hdGlvbi1kaXNwbGF5L2VzdGltYXRpb24tZGlzcGxheS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7QUFPN0UsTUFBTSxPQUFPLDBCQUEwQjtJQUM1QixLQUFLLENBQU87SUFDckIsS0FBSyxHQUFHLGNBQWMsQ0FBQztJQUN2QixlQUFlLEdBQVEsY0FBYyxDQUFDO3dHQUgzQiwwQkFBMEI7NEZBQTFCLDBCQUEwQiwwRkNSdkMsdVJBT0E7OzRGRENhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSx3QkFBd0I7OEJBS3pCLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEVzdGluYXRpb25FbnVtLCBFc3RpbmF0aW9uRGF0YSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1lc3RpbWF0aW9uLWRpc3BsYXknLFxuICB0ZW1wbGF0ZVVybDogJy4vZXN0aW1hdGlvbi1kaXNwbGF5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZXN0aW1hdGlvbi1kaXNwbGF5LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRXN0aW1hdGlvbkRpc3BsYXlDb21wb25lbnQge1xuICBASW5wdXQoKSB2YWx1ZSE6IGFueTtcbiAgbGFiZWwgPSBFc3RpbmF0aW9uRGF0YTtcbiAgRXN0aW5hdGlvbmxhYmVsOiBhbnkgPSBFc3RpbmF0aW9uRW51bTtcbn1cbiIsIjxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsYWJlbFwiPlxuICAgIDxzcGFuICpuZ0lmPVwidmFsdWVbaXRlbV1cIiBjbGFzcz1cImVzdGltYXRlXCIgKG1vdXNlZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgIEVzdGltYXRpb24gb2Yge3tFc3RpbmF0aW9ubGFiZWxbaXRlbV19fSAtIDxiPnt7dmFsdWVbaXRlbV19fTwvYj5cbiAgICA8L3NwYW4+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=