@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
@@ -0,0 +1,396 @@
1
+ @import "../../../assets/variable.scss";
2
+
3
+ .jobcode_detailprt {
4
+ position: absolute;
5
+ left: 20em;
6
+ bottom: 10px;
7
+ background: $white;
8
+ padding: 15px 20px;
9
+ border-radius: 20px;
10
+ max-width: 350px;
11
+ z-index: 999;
12
+ box-shadow: 0px 0px 5px 0px rgba(0, 0, 0, 0.1);
13
+ .close {
14
+ box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.11);
15
+ border-radius: 100%;
16
+ width: 30px;
17
+ height: 30px;
18
+ display: flex;
19
+ justify-content: center;
20
+ align-items: center;
21
+ cursor: pointer;
22
+ background: #fff;
23
+ position: absolute;
24
+ top: -11px;
25
+ left: -11px;
26
+ }
27
+ @keyframes autoslide {
28
+ 100% {
29
+ transform: translateX(calc(90vw - 100%));
30
+ }
31
+ 0% {
32
+ transform: translateX(0%);
33
+ }
34
+ }
35
+ }
36
+ .route_listprt {
37
+ .listing_toggle {
38
+ background: $white;
39
+ border-radius: 15px;
40
+ padding: 5px 5px;
41
+ position: absolute;
42
+ right: 10px;
43
+ top: 20px;
44
+ cursor: pointer;
45
+ img {
46
+ width: 28px;
47
+ }
48
+ }
49
+ .listing_box {
50
+ background: #282828;
51
+ height: 100vh;
52
+ position: fixed;
53
+ right: 0;
54
+ top: 0;
55
+ z-index: 1111;
56
+ box-shadow: -3px 0px 5px 0px rgba(255, 255, 255, 0.08);
57
+ transition: 0.5s;
58
+ -webkit-transition: 0.5s;
59
+ transition: 0.5s;
60
+ -webkit-transition: 0.5s;
61
+ -moz-transition: 0.5s;
62
+ width: 0;
63
+ border-radius: 40px 0px 0px 0px;
64
+ opacity: 0;
65
+ .closebtn {
66
+ display: none;
67
+ }
68
+ ul {
69
+ padding: 0 20px 0 0;
70
+ li {
71
+ background: #4a4a4a;
72
+ padding: 10px 15px;
73
+ border-radius: 15px;
74
+ display: flex;
75
+ margin-bottom: 10px;
76
+ position: relative;
77
+ height:inherit;
78
+ @media (min-width:1600px) {
79
+ padding: 6px 15px;
80
+ margin-bottom: 5px;
81
+ }
82
+ .iconprt{
83
+ display: flex;
84
+ flex-direction: column;
85
+ span {
86
+ display: flex;
87
+ align-items: center;
88
+ margin-bottom: 32px;
89
+ input[type="checkbox"] {
90
+ width: 100%;
91
+ height: 100%;
92
+ margin-right: 10px;
93
+ opacity: 0;
94
+ position: absolute;
95
+ left: 0px;
96
+ margin-left: 0;
97
+ top: 0;
98
+ z-index: 3;
99
+ cursor: pointer;
100
+ &:checked+label {
101
+ // TODO: Fix this
102
+ // background: url("../../../assets/images/fill-check.png") 16px 15px no-repeat;
103
+ }
104
+ }
105
+ label {
106
+ // TODO: Fix this
107
+ // background: url("../../../assets/images/blank-check.png") 16px 15px no-repeat;
108
+ width: 100%;
109
+ position: relative;
110
+ z-index: 2;
111
+ font-size: 12px;
112
+ color: #878787;
113
+ height: 100%;
114
+ position: absolute;
115
+ top: 0;
116
+ left: 0;
117
+ }
118
+ .border {
119
+ position: absolute;
120
+ width: 100%;
121
+ height: 100%;
122
+ left: 0px;
123
+ right: 0;
124
+ top: 0;
125
+ border-radius: 15px;
126
+ }
127
+ input {
128
+ &:checked~.border {
129
+ border-left: 1px solid $white;
130
+ border-right: 1px solid $white;
131
+ border-top: 1px solid $white;
132
+ border-bottom: 1px solid $white;
133
+ }
134
+ }
135
+ h2 {
136
+ margin-left: 10px;
137
+ white-space: nowrap;
138
+ overflow: hidden;
139
+ text-overflow: ellipsis;
140
+ max-width: 150px;
141
+ padding-left: 16px;
142
+ font-size: 0.9rem;
143
+ margin-bottom: 0;
144
+ font-weight: normal;
145
+ margin-top: 0;
146
+ }
147
+ }
148
+ .statusunit{
149
+ border-radius: 30px;
150
+ font-size: 0;
151
+ color: $white;
152
+ text-transform: capitalize;
153
+ font-weight: 500;
154
+ width: 20px;
155
+ height: 20px;
156
+ text-align: center;
157
+ line-height: 20px;
158
+ margin-bottom: 7px;
159
+ &::first-letter{
160
+ font-size: 0.8rem;
161
+ }
162
+ &.Ton {
163
+ background: #ff7272;
164
+ }
165
+ &.Load {
166
+ background: #a3c52e;
167
+ }
168
+ &.Hourly {
169
+ background: #ae23d1;
170
+ }
171
+ @media (min-width:1600px) {
172
+ line-height: 21px;
173
+ }
174
+ }
175
+ .infoicon{
176
+ z-index: 5;
177
+ cursor: pointer;
178
+ img{
179
+ width: 20px;
180
+ height: 20px;
181
+ }
182
+ }
183
+ }
184
+ .pickprtbox{
185
+ margin-left: 10px;
186
+ h2{
187
+ font-size: 0.9rem;
188
+ margin: 7px 0 5px 0;
189
+ white-space: nowrap;
190
+ text-overflow: ellipsis;
191
+ max-width: 195px;
192
+ overflow: hidden;
193
+ }
194
+ }
195
+
196
+
197
+ h3 {
198
+ font-size: 0.8rem;
199
+ color: #979797;
200
+ font-weight: 600;
201
+ margin-top: 0;
202
+ white-space: nowrap;
203
+ text-overflow: ellipsis;
204
+ max-width: 195px;
205
+ overflow: hidden;
206
+ margin-bottom: 5px;
207
+ }
208
+ .pickdropprt {
209
+ font-size: 0.75rem;
210
+ .pickprt {
211
+ position: relative;
212
+ display: flex;
213
+ align-items: center;
214
+ padding-bottom: 10px;
215
+ span {
216
+ padding-left: 0;
217
+ padding-right: 20px;
218
+ display: block;
219
+ }
220
+ b {
221
+ position: relative;
222
+ &:after {
223
+ background: #bcbcbc;
224
+ width: 1px;
225
+ height: 100%;
226
+ left: 3px;
227
+ content: "";
228
+ position: absolute;
229
+ top: 10px;
230
+ }
231
+ }
232
+ h4 {
233
+ position: relative;
234
+ padding-left: 15px;
235
+ margin: 0px 0 0 0;
236
+ line-height: 18px;
237
+ color: #bcbcbc;
238
+ font-weight: normal;
239
+ overflow: hidden;
240
+ text-overflow: ellipsis;
241
+ display: -webkit-box;
242
+ -webkit-line-clamp: 1;
243
+ -webkit-box-orient: vertical;
244
+ &:before {
245
+ background: #bcbcbc;
246
+ top: 4px;
247
+ left: 0px;
248
+ position: absolute;
249
+ content: "";
250
+ width: 7px;
251
+ height: 7px;
252
+ border-radius: 100%;
253
+ }
254
+ }
255
+ }
256
+ .dropprt {
257
+ position: relative;
258
+ padding-bottom: 10px;
259
+ display: flex;
260
+ align-items: center;
261
+ span {
262
+ padding-left: 0;
263
+ padding-right: 20px;
264
+ display: block;
265
+ }
266
+ b {
267
+ position: relative;
268
+ &:after {
269
+ background: #bcbcbc;
270
+ width: 1px;
271
+ height: 12px;
272
+ left: 3px;
273
+ content: "";
274
+ position: absolute;
275
+ top: -7px;
276
+ }
277
+ }
278
+ h4 {
279
+ position: relative;
280
+ padding-left: 15px;
281
+ margin: 0;
282
+ line-height: 18px;
283
+ color: #bcbcbc;
284
+ font-weight: normal;
285
+ overflow: hidden;
286
+ text-overflow: ellipsis;
287
+ display: -webkit-box;
288
+ -webkit-line-clamp: 1;
289
+ -webkit-box-orient: vertical;
290
+ &:before {
291
+ background: #bcbcbc;
292
+ top: 4px;
293
+ left: 0px;
294
+ position: absolute;
295
+ content: "";
296
+ width: 7px;
297
+ height: 7px;
298
+ border-radius: 100%;
299
+ }
300
+ }
301
+ }
302
+ }
303
+ }
304
+ }
305
+ }
306
+ &.show {
307
+ .listing_box {
308
+ width: 300px;
309
+ max-width: 300px;
310
+ -webkit-box-flex: 0;
311
+ flex: 0 0 350px;
312
+ transition: 0.5s;
313
+ -webkit-transition: 0.5s;
314
+ transition: 0.5s;
315
+ -webkit-transition: 0.5s;
316
+ -moz-transition: 0.5s;
317
+ padding: 40px 0px 40px 20px;
318
+ opacity: 1;
319
+ h2 {
320
+ color: $white;
321
+ white-space: nowrap;
322
+ }
323
+ .closebtn {
324
+ position: absolute;
325
+ left: -33px;
326
+ top: 50px;
327
+ background: #282828;
328
+ color: $white;
329
+ padding: 8px;
330
+ border-top-left-radius: 15px;
331
+ border-bottom-left-radius: 15px;
332
+ cursor: pointer;
333
+ box-shadow: -4px 2px 5px 0px rgba(255, 255, 255, 0.08);
334
+ display: block;
335
+ }
336
+ }
337
+ }
338
+ }
339
+ .btnprt{
340
+ display: flex;
341
+ justify-content: space-between;
342
+ align-items: center;
343
+ padding-right: 20px;
344
+ h2{
345
+ margin: 0;
346
+ }
347
+ button{
348
+ font-size: 15px;
349
+ padding: 8px 20px;
350
+ border-radius: 5%;
351
+ background-color: $blue;
352
+ color: $white;
353
+ border: none;
354
+ border-radius: 10px;
355
+ box-shadow: none;
356
+ outline: none;
357
+ }
358
+ }
359
+ .hidden {
360
+ display: none;
361
+ }
362
+ .route_detail{
363
+ background: #282828;
364
+ position: absolute;
365
+ width: 260px;
366
+ top: 50%;
367
+ transform: translateY(-50%);
368
+ right: 310px;
369
+ border-radius: 20px;
370
+ padding: 10px;
371
+ box-shadow: 0px 0px 5px 0px rgba(255,255,255,0.21);
372
+ }
373
+
374
+ .createTxt{
375
+ small{
376
+ color: #fff;
377
+ font-size: 0.7rem;
378
+ }
379
+ }
380
+ .closebtnroutedetail{
381
+ box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.11);
382
+ border-radius: 100%;
383
+ width: 30px;
384
+ height: 30px;
385
+ display: flex;
386
+ justify-content: center;
387
+ align-items: center;
388
+ cursor: pointer;
389
+ background: #f5f5f5;
390
+ position: absolute;
391
+ top: -7px;
392
+ left: -11px;
393
+ }
394
+ .routeList-viewport{
395
+ height: 944px;
396
+ }
@@ -0,0 +1,146 @@
1
+ import { SelectionModel } from '@angular/cdk/collections';
2
+ import { Component, OnInit, Input, Output, EventEmitter, OnDestroy, Inject } from '@angular/core';
3
+ import { Subject, takeUntil } from 'rxjs';
4
+ import { CoolmapConfigModel, CoolmapService, CustomerRepoDetailsModel, Route, UtilsService } from '@aggdirect/coolmap-services';
5
+
6
+
7
+ @Component({
8
+ selector: 'app-job-code',
9
+ templateUrl: './job-code.component.html',
10
+ styleUrls: ['./job-code.component.scss']
11
+ })
12
+ export class JobCodeComponent implements OnInit, OnDestroy {
13
+ @Input() public jobdetail!: any;
14
+ @Input() public customerRepoDetails!: CustomerRepoDetailsModel;
15
+ isVisible: boolean = false;
16
+ routes: Route[] = [];
17
+ public selectedRoute = new SelectionModel<any>(true, [])
18
+ @Output() public clearJobDetails = new EventEmitter();
19
+ @Output() public openShareRoute = new EventEmitter(); isOverlapRouteSection = false;
20
+ public destroyer$ = new Subject<boolean>();
21
+ detailsCardEnable: boolean | string;
22
+ preventMouseout: boolean = false;
23
+ routeCardDetail: Route;
24
+ preventListUpdate: boolean;
25
+ masterRoutes: any;
26
+ unitList: any;
27
+ materialsList: any;
28
+
29
+ constructor(public utils: UtilsService, public coolMap: CoolmapService,
30
+ @Inject('memberData') public config: CoolmapConfigModel) {
31
+ this.utils.clearViewRouteforJobCodeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => {
32
+ if (res) this.coolMap.removeJobFromMap(this.selectedRoute.selected); this.selectedRoute.clear();
33
+ });
34
+ }
35
+
36
+ ngOnInit(): void { this.checkAndCallRouteList() }
37
+ checkAndCallRouteList() {
38
+ this.utils.clearOptions();
39
+ if (this.config.repository === 'customer') {
40
+ this.utils.fetchUnitsList().then((res) => {
41
+ this.unitList = res;
42
+ this.utils.fetchMaterialsListForCustomer().then((res) => {
43
+ this.materialsList = res;
44
+ this.getRouteListForCustomer();
45
+ });
46
+ });
47
+ } else {
48
+ this.getRouteListForCoolMap()
49
+ }
50
+ }
51
+ getUnitName(data): string {
52
+ let unitName = '';
53
+ this.unitList.map((res) => {
54
+ if (res.id === data.unit_id) {
55
+ unitName = res.type
56
+ }
57
+ })
58
+ return unitName;
59
+ }
60
+
61
+ getRouteListForCoolMap() {
62
+ this.utils.getData('routes/all').pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {
63
+ if (res) {
64
+ this.routes = res.data;
65
+ this.masterRoutes = res.data;
66
+ this.preventListUpdate = false;
67
+ this.routes.forEach((ele: Route) => { this.utils.makeOptions(ele) });
68
+ }
69
+ })
70
+ }
71
+ getRouteListForCustomer() {
72
+ const dataset = {
73
+ customer_id: this.customerRepoDetails.customer.id
74
+ }
75
+ this.utils.postdata('routes/all', dataset).pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {
76
+ if (res) {
77
+ this.routes = res.data;
78
+ this.preventListUpdate = false;
79
+ this.routes.map((ele: Route) => {
80
+ ele.unit = this.getUnitName(ele);
81
+ this.utils.makeOptions(ele)
82
+ });
83
+ this.masterRoutes = this.routes;
84
+ }
85
+ });
86
+ }
87
+
88
+ toggleSidemenu() {
89
+ this.isVisible = !this.isVisible;
90
+ this.detailsCardEnable = false;
91
+ this.preventMouseout = false
92
+ }
93
+ clearJob() { this.clearJobDetails.emit(true); this.utils.preVentJobdetailclose.next(false) }
94
+ selectRoute(event: Route) {
95
+ const i = this.selectedRoute.selected.findIndex(ele => ele['order_number'] === event['order_number']);
96
+ this.selectedRoute.toggle(event);
97
+ if (!this.selectedRoute.isSelected(event) && event['route_id']) {
98
+ this.coolMap.removeRouteAndMarker(event['route_id']).then((res: any) => {
99
+ this.coolMap.extendReBound();
100
+ });
101
+ } else {
102
+ this.coolMap.plotRoute(event, event['route_id'], 'jobrouteList', false, true);
103
+ }
104
+ }
105
+ masterToggle() {
106
+ if (this.routes.length === this.selectedRoute.selected.length) {
107
+ this.selectedRoute.clear();
108
+ this.routes.forEach(row => {
109
+ this.coolMap.removeRouteAndMarker(row['route_id']).then((res: any) => { this.coolMap.extendReBound() })
110
+ });
111
+ } else {
112
+ this.routes.forEach(row => {
113
+ this.selectedRoute.select(row);
114
+ this.coolMap.plotRoute(row, row['route_id'], 'jobrouteList', false, true);
115
+ });
116
+ }
117
+ }
118
+ togglerouteDetails(eventType: string | boolean, route: Route, mouseOut?: boolean) {
119
+ if (typeof (eventType) === 'string') {
120
+ this.preventMouseout = true; this.utils.setdictValue('route-details', JSON.stringify(route));
121
+ }
122
+ if (typeof (eventType) === 'boolean' && eventType && !this.preventMouseout) { this.detailsCardEnable = eventType };
123
+ if (typeof (eventType) === 'boolean' && !eventType && !this.preventMouseout) { this.detailsCardEnable = eventType };
124
+ if (this.preventMouseout && !this.detailsCardEnable) this.preventMouseout = false;
125
+ if (mouseOut) {
126
+ if (this.preventMouseout) {
127
+ route = this.utils.getdictValue('route-details');
128
+ this.routeCardDetail = route;
129
+ }
130
+ if (!this.preventMouseout) {
131
+ this.routeCardDetail = route
132
+ }
133
+ } else {
134
+ this.routeCardDetail = route
135
+ }
136
+ this.routeCardDetail['created_at'] = this.utils.getDateFormat(new Date(this.routeCardDetail['created_at']), '/');
137
+ }
138
+
139
+ openShareRouteModal(data) {
140
+ this.openShareRoute.emit(data);
141
+ }
142
+ ngOnDestroy(): void {
143
+ this.destroyer$.next(true);
144
+ this.destroyer$.unsubscribe();
145
+ }
146
+ }
File without changes
@@ -0,0 +1,4 @@
1
+ <div>
2
+ <mat-progress-bar *ngIf="enableProgress" mode="indeterminate"></mat-progress-bar>
3
+ <div #map class="coolmap" style="height: 100vh;"></div>
4
+ </div>
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { MapComponent } from './map.component';
4
+
5
+ describe('MapComponent', () => {
6
+ let component: MapComponent;
7
+ let fixture: ComponentFixture<MapComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ declarations: [ MapComponent ]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(MapComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });
@@ -0,0 +1,34 @@
1
+ import { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';
2
+ import { Subject, takeUntil } from 'rxjs';
3
+ import { CoolmapService } from '@aggdirect/coolmap-services';
4
+
5
+
6
+
7
+ @Component({
8
+ selector: 'app-map',
9
+ templateUrl: './map.component.html',
10
+ styleUrls: ['./map.component.css']
11
+ })
12
+ export class MapComponent implements OnDestroy {
13
+ @ViewChild('map', { static: true }) public mapDiv!: ElementRef;
14
+ enableProgress: boolean = true;
15
+ public destroyer$ = new Subject<boolean>();
16
+
17
+ constructor( public coolmapService: CoolmapService ) { }
18
+
19
+ ngAfterViewInit() {
20
+ this.coolmapService.reintiatecoolmap.pipe(takeUntil(this.destroyer$)).subscribe((res: any) => {
21
+ this.enableProgress = true;
22
+ if (res) {
23
+ this.coolmapService.initiateMapForAddRoute(this.mapDiv.nativeElement).then((res) => {
24
+ this.enableProgress = false;
25
+ })
26
+ }
27
+ });
28
+ }
29
+
30
+ ngOnDestroy(): void {
31
+ this.destroyer$.next(true);
32
+ this.destroyer$.unsubscribe();
33
+ }
34
+ }
@@ -0,0 +1,46 @@
1
+ <div class="nav_body">
2
+ <div class="logo">
3
+ <img src="assets/images/logo.png" alt="logo" />
4
+ </div>
5
+ <div class="heading m-20">
6
+ <h1>View Route</h1>
7
+ <button mat-raised-button (click)="showAddForm()">
8
+ <mat-icon>add_circle_outline</mat-icon> Add route
9
+ </button>
10
+ </div>
11
+
12
+ <div class="search-panel">
13
+ <div class="w-100">
14
+ <form [formGroup]="filterForm">
15
+ <mat-form-field class="full-width" [class.disabled]="loaderVal">
16
+ <input matInput [matChipInputFor]="chipList" formControlName="search" [matAutocomplete]="auto"
17
+ [disabled]="loaderVal" placeholder="Search">
18
+ <mat-icon matSuffix *ngIf="!utils.conveySearchIcon(filterForm.value.search)">search</mat-icon>
19
+ <button matSuffix mat-icon-button aria-label="Clear" *ngIf="utils.conveySearchIcon(filterForm.value.search)"
20
+ (click)="filterForm.reset()">
21
+ <mat-icon>close</mat-icon>
22
+ </button>
23
+ <mat-autocomplete autoActiveFirstOption #auto="matAutocomplete" class="whole_width">
24
+ <mat-option *ngFor="let option of filteredOptions | async" (onSelectionChange)="filterSearch($event)"
25
+ [value]="option">
26
+ {{option.type | titlecase }}: {{option['label']}}
27
+ </mat-option>
28
+ </mat-autocomplete>
29
+ </mat-form-field>
30
+ </form>
31
+ <div class="chip-list">
32
+ <mat-chip-grid #chipList aria-label="Filter selection">
33
+ @for (filter of filters; track filter) {
34
+ <mat-chip-row class="chip-grid" (removed)="removeFromFilter(filter)">
35
+ {{filter.type | titlecase }}: {{filter.name}}
36
+ <button matChipRemove>
37
+ <mat-icon>cancel</mat-icon>
38
+ </button>
39
+ </mat-chip-row>
40
+ }
41
+ </mat-chip-grid>
42
+ </div>
43
+ </div>
44
+ </div>
45
+ <app-route-jobcode-list [type]="'addroute'" [currentNav]="navValue" [searchTerm]="filters" [data]="routes" [loader]="loaderVal" (emitroute)="getRoute($event)"></app-route-jobcode-list>
46
+ </div>
@@ -0,0 +1,18 @@
1
+ .chip-grid {
2
+ width: auto;
3
+ height: auto;
4
+ }
5
+
6
+ :host ::ng-deep .mdc-evolution-chip-set__chips {
7
+ max-width: 100%;
8
+ }
9
+
10
+ :host ::ng-deep .mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,
11
+ :host ::ng-deep .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,
12
+ :host ::ng-deep .mat-mdc-standard-chip .mat-mdc-chip-action-label {
13
+ overflow: hidden;
14
+ }
15
+
16
+ :host ::ng-deep .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing {
17
+ padding: auto;
18
+ }
@@ -0,0 +1,23 @@
1
+ import { ComponentFixture, TestBed } from '@angular/core/testing';
2
+
3
+ import { AddRouteNavComponent } from './add-route-nav.component';
4
+
5
+ describe('AddRouteNavComponent', () => {
6
+ let component: AddRouteNavComponent;
7
+ let fixture: ComponentFixture<AddRouteNavComponent>;
8
+
9
+ beforeEach(async () => {
10
+ await TestBed.configureTestingModule({
11
+ declarations: [ AddRouteNavComponent ]
12
+ })
13
+ .compileComponents();
14
+
15
+ fixture = TestBed.createComponent(AddRouteNavComponent);
16
+ component = fixture.componentInstance;
17
+ fixture.detectChanges();
18
+ });
19
+
20
+ it('should create', () => {
21
+ expect(component).toBeTruthy();
22
+ });
23
+ });