@aggdirect/coolmap 2.0.8 → 2.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -1
- package/esm2020/aggdirect-coolmap.mjs +5 -0
- package/esm2020/lib/component/add-route/add-route.component.mjs +316 -0
- package/esm2020/lib/component/job-code/job-code.component.mjs +118 -0
- package/esm2020/lib/component/map/map.component.mjs +37 -0
- package/esm2020/lib/component/nav/layout/add-route-nav/add-route-nav.component.mjs +87 -0
- package/esm2020/lib/component/nav/layout/job-code-nav/job-code-nav.component.mjs +89 -0
- package/esm2020/lib/component/nav/nav.component.mjs +52 -0
- package/esm2020/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.mjs +68 -0
- package/esm2020/lib/component/route-jobcode-list/route-jobcode-list.component.mjs +314 -0
- package/esm2020/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.mjs +19 -0
- package/esm2020/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.mjs +29 -0
- package/esm2020/lib/component/shared/dialog/dialog.component.mjs +29 -0
- package/esm2020/lib/component/shared/estimation-display/estimation-display.component.mjs +19 -0
- package/esm2020/lib/component/shared/job-route-list/job-route-list.component.mjs +71 -0
- package/esm2020/lib/component/shared/jobcode-overview/jobcode-overview.component.mjs +19 -0
- package/esm2020/lib/component/shared/jobcode-status/jobcode-status.component.mjs +14 -0
- package/esm2020/lib/coolmap.component.mjs +22 -0
- package/esm2020/lib/coolmap.module.mjs +181 -0
- package/{esm2015/public-api.js → esm2020/public-api.mjs} +20 -20
- package/fesm2015/aggdirect-coolmap.mjs +1388 -0
- package/fesm2015/aggdirect-coolmap.mjs.map +1 -0
- package/fesm2020/aggdirect-coolmap.mjs +1364 -0
- package/fesm2020/aggdirect-coolmap.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/component/add-route/add-route.component.d.ts +62 -60
- package/lib/component/job-code/job-code.component.d.ts +32 -29
- package/lib/component/map/map.component.d.ts +15 -12
- package/lib/component/nav/layout/add-route-nav/add-route-nav.component.d.ts +41 -36
- package/lib/component/nav/layout/job-code-nav/job-code-nav.component.d.ts +39 -34
- package/lib/component/nav/nav.component.d.ts +31 -28
- package/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.d.ts +19 -16
- package/lib/component/route-jobcode-list/route-jobcode-list.component.d.ts +42 -39
- package/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.d.ts +9 -6
- package/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.d.ts +11 -8
- package/lib/component/shared/dialog/dialog.component.d.ts +13 -10
- package/lib/component/shared/estimation-display/estimation-display.component.d.ts +9 -6
- package/lib/component/shared/job-route-list/job-route-list.component.d.ts +26 -21
- package/lib/component/shared/jobcode-overview/jobcode-overview.component.d.ts +9 -6
- package/lib/component/shared/jobcode-status/jobcode-status.component.d.ts +8 -5
- package/lib/coolmap.component.d.ts +8 -5
- package/lib/coolmap.module.d.ts +41 -2
- package/package.json +40 -15
- package/public-api.d.ts +16 -16
- package/bundles/coolmap.umd.js +0 -1383
- package/bundles/coolmap.umd.js.map +0 -1
- package/bundles/coolmap.umd.min.js +0 -2
- package/bundles/coolmap.umd.min.js.map +0 -1
- package/coolmap.d.ts +0 -5
- package/coolmap.metadata.json +0 -1
- package/esm2015/coolmap.js +0 -6
- package/esm2015/coolmap.ngsummary.json +0 -1
- package/esm2015/lib/component/add-route/add-route.component.js +0 -309
- package/esm2015/lib/component/add-route/add-route.component.ngfactory.js +0 -304
- package/esm2015/lib/component/add-route/add-route.component.ngsummary.json +0 -1
- package/esm2015/lib/component/job-code/job-code.component.js +0 -116
- package/esm2015/lib/component/job-code/job-code.component.ngfactory.js +0 -77
- package/esm2015/lib/component/job-code/job-code.component.ngsummary.json +0 -1
- package/esm2015/lib/component/map/map.component.js +0 -39
- package/esm2015/lib/component/map/map.component.ngfactory.js +0 -23
- package/esm2015/lib/component/map/map.component.ngsummary.json +0 -1
- package/esm2015/lib/component/nav/layout/add-route-nav/add-route-nav.component.js +0 -79
- package/esm2015/lib/component/nav/layout/add-route-nav/add-route-nav.component.ngfactory.js +0 -142
- package/esm2015/lib/component/nav/layout/add-route-nav/add-route-nav.component.ngsummary.json +0 -1
- package/esm2015/lib/component/nav/layout/job-code-nav/job-code-nav.component.js +0 -82
- package/esm2015/lib/component/nav/layout/job-code-nav/job-code-nav.component.ngfactory.js +0 -194
- package/esm2015/lib/component/nav/layout/job-code-nav/job-code-nav.component.ngsummary.json +0 -1
- package/esm2015/lib/component/nav/nav.component.js +0 -54
- package/esm2015/lib/component/nav/nav.component.ngfactory.js +0 -43
- package/esm2015/lib/component/nav/nav.component.ngsummary.json +0 -1
- package/esm2015/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.js +0 -66
- package/esm2015/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ngfactory.js +0 -46
- package/esm2015/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ngsummary.json +0 -1
- package/esm2015/lib/component/route-jobcode-list/route-jobcode-list.component.js +0 -301
- package/esm2015/lib/component/route-jobcode-list/route-jobcode-list.component.ngfactory.js +0 -99
- package/esm2015/lib/component/route-jobcode-list/route-jobcode-list.component.ngsummary.json +0 -1
- package/esm2015/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.js +0 -20
- package/esm2015/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ngfactory.js +0 -21
- package/esm2015/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ngsummary.json +0 -1
- package/esm2015/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.js +0 -30
- package/esm2015/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ngfactory.js +0 -30
- package/esm2015/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ngsummary.json +0 -1
- package/esm2015/lib/component/shared/dialog/dialog.component.js +0 -29
- package/esm2015/lib/component/shared/dialog/dialog.component.ngfactory.js +0 -24
- package/esm2015/lib/component/shared/dialog/dialog.component.ngsummary.json +0 -1
- package/esm2015/lib/component/shared/estimation-display/estimation-display.component.js +0 -20
- package/esm2015/lib/component/shared/estimation-display/estimation-display.component.ngfactory.js +0 -23
- package/esm2015/lib/component/shared/estimation-display/estimation-display.component.ngsummary.json +0 -1
- package/esm2015/lib/component/shared/job-route-list/job-route-list.component.js +0 -63
- package/esm2015/lib/component/shared/job-route-list/job-route-list.component.ngfactory.js +0 -134
- package/esm2015/lib/component/shared/job-route-list/job-route-list.component.ngsummary.json +0 -1
- package/esm2015/lib/component/shared/jobcode-overview/jobcode-overview.component.js +0 -20
- package/esm2015/lib/component/shared/jobcode-overview/jobcode-overview.component.ngfactory.js +0 -19
- package/esm2015/lib/component/shared/jobcode-overview/jobcode-overview.component.ngsummary.json +0 -1
- package/esm2015/lib/component/shared/jobcode-status/jobcode-status.component.js +0 -16
- package/esm2015/lib/component/shared/jobcode-status/jobcode-status.component.ngfactory.js +0 -17
- package/esm2015/lib/component/shared/jobcode-status/jobcode-status.component.ngsummary.json +0 -1
- package/esm2015/lib/coolmap.component.js +0 -18
- package/esm2015/lib/coolmap.component.ngfactory.js +0 -16
- package/esm2015/lib/coolmap.component.ngsummary.json +0 -1
- package/esm2015/lib/coolmap.module.js +0 -108
- package/esm2015/lib/coolmap.module.ngfactory.js +0 -46
- package/esm2015/lib/coolmap.module.ngsummary.json +0 -1
- package/esm2015/public-api.ngsummary.json +0 -1
- package/fesm2015/coolmap.js +0 -1317
- package/fesm2015/coolmap.js.map +0 -1
- package/lib/component/add-route/add-route.component.ngfactory.d.ts +0 -1
- package/lib/component/job-code/job-code.component.ngfactory.d.ts +0 -1
- package/lib/component/map/map.component.ngfactory.d.ts +0 -1
- package/lib/component/nav/layout/add-route-nav/add-route-nav.component.ngfactory.d.ts +0 -1
- package/lib/component/nav/layout/job-code-nav/job-code-nav.component.ngfactory.d.ts +0 -1
- package/lib/component/nav/nav.component.ngfactory.d.ts +0 -1
- package/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.ngfactory.d.ts +0 -1
- package/lib/component/route-jobcode-list/route-jobcode-list.component.ngfactory.d.ts +0 -1
- package/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.ngfactory.d.ts +0 -1
- package/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.ngfactory.d.ts +0 -1
- package/lib/component/shared/dialog/dialog.component.ngfactory.d.ts +0 -1
- package/lib/component/shared/estimation-display/estimation-display.component.ngfactory.d.ts +0 -1
- package/lib/component/shared/job-route-list/job-route-list.component.ngfactory.d.ts +0 -1
- package/lib/component/shared/jobcode-overview/jobcode-overview.component.ngfactory.d.ts +0 -1
- package/lib/component/shared/jobcode-status/jobcode-status.component.ngfactory.d.ts +0 -1
- package/lib/coolmap.component.ngfactory.d.ts +0 -1
- package/lib/coolmap.module.ngfactory.d.ts +0 -3
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Component, EventEmitter, Output } from '@angular/core';
|
|
2
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@aggdirect/coolmap-services";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
import * as i3 from "@angular/material/tooltip";
|
|
7
|
+
import * as i4 from "@angular/material/button";
|
|
8
|
+
export class NavComponent {
|
|
9
|
+
constructor(utils, coolMap) {
|
|
10
|
+
this.utils = utils;
|
|
11
|
+
this.coolMap = coolMap;
|
|
12
|
+
this.drawer = new EventEmitter();
|
|
13
|
+
this.changeNav = new EventEmitter();
|
|
14
|
+
this.navValue = 'Jobcode';
|
|
15
|
+
this.isnavChange = true;
|
|
16
|
+
this.paddinForJobCode = { top: 0, bottom: 250, left: 500, right: 400 };
|
|
17
|
+
this.paddinForViewRoute = { top: 0, bottom: 400, left: 400, right: 0 };
|
|
18
|
+
this.destroyer$ = new Subject();
|
|
19
|
+
this.utils.navChangeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => { this.isnavChange = res; });
|
|
20
|
+
this.coolMap.setPadding(this.paddinForJobCode);
|
|
21
|
+
}
|
|
22
|
+
openDrawer() { this.drawer.emit(true); }
|
|
23
|
+
chnageNav(name) {
|
|
24
|
+
if (this.isnavChange) {
|
|
25
|
+
this.changeNav.emit(name);
|
|
26
|
+
this.navValue = name;
|
|
27
|
+
this.coolMap.clearBound();
|
|
28
|
+
if (name === 'Addroute') {
|
|
29
|
+
this.coolMap.setPadding(this.paddinForViewRoute);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.coolMap.setPadding(this.paddinForJobCode);
|
|
33
|
+
}
|
|
34
|
+
this.utils.clearOptions();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
ngOnDestroy() {
|
|
38
|
+
this.destroyer$.next(true);
|
|
39
|
+
this.destroyer$.unsubscribe();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
NavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NavComponent, deps: [{ token: i1.UtilsService }, { token: i1.CoolmapService }], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
NavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: NavComponent, selector: "app-nav", outputs: { drawer: "drawer", changeNav: "changeNav" }, ngImport: i0, template: "<div class=\"nav\">\n <button (click)=\"openDrawer()\" class=\"toggle\">\n <img src=\"assets/images/toggle.svg\" alt=\"\" />\n </button>\n\n <ul class=\"m-100\">\n <li [ngClass]=\"{'active': navValue === 'Jobcode'}\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Job Code\" aria-label=\"Job-code\" (click)=\"chnageNav('Jobcode')\">\n <img src=\"assets/images/job-code.svg\" alt=\"\" />\n </a>\n </li>\n\n <li [ngClass]=\"{'active': navValue === 'Addroute', 'disabled': !isnavChange }\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"View Route\" aria-label=\"View-route\" (click)=\"chnageNav('Addroute')\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </a>\n </li>\n </ul>\n</div>\n", styles: [".nav{background:#e8e8e8;height:100vh;padding:15px 0;display:flex;align-items:center;flex-direction:column}.nav button{background:white;border-radius:15px;padding:5px 6px}.nav button img{width:28px}.nav ul{display:flex;flex-direction:column;align-items:center}.nav ul li{margin:10px 0;padding:0 5px;border-right:2px solid #e8e8e8}.nav ul li:hover{border-right:2px solid #326ad3;padding:0 5px}.nav ul li.disabled a{pointer-events:none;opacity:.5}.nav ul li.disabled:hover{border-right:2px solid #e8e8e8}.nav ul li a{padding:6px 0;display:block;border-radius:15px;min-width:42px;box-shadow:none;line-height:30px}.nav ul li a img{width:27px}.nav ul li a:hover{background:white}.nav ul li a:hover img{filter:invert(.2) sepia(1) saturate(8) hue-rotate(180deg)}.nav ul li.active{border-right:2px solid #326ad3}.nav ul li.active a{background:white}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatAnchor, selector: "a[mat-button], a[mat-raised-button], a[mat-icon-button], a[mat-fab], a[mat-mini-fab], a[mat-stroked-button], a[mat-flat-button]", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matButton", "matAnchor"] }] });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NavComponent, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{ selector: 'app-nav', template: "<div class=\"nav\">\n <button (click)=\"openDrawer()\" class=\"toggle\">\n <img src=\"assets/images/toggle.svg\" alt=\"\" />\n </button>\n\n <ul class=\"m-100\">\n <li [ngClass]=\"{'active': navValue === 'Jobcode'}\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Job Code\" aria-label=\"Job-code\" (click)=\"chnageNav('Jobcode')\">\n <img src=\"assets/images/job-code.svg\" alt=\"\" />\n </a>\n </li>\n\n <li [ngClass]=\"{'active': navValue === 'Addroute', 'disabled': !isnavChange }\">\n <a mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"View Route\" aria-label=\"View-route\" (click)=\"chnageNav('Addroute')\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </a>\n </li>\n </ul>\n</div>\n", styles: [".nav{background:#e8e8e8;height:100vh;padding:15px 0;display:flex;align-items:center;flex-direction:column}.nav button{background:white;border-radius:15px;padding:5px 6px}.nav button img{width:28px}.nav ul{display:flex;flex-direction:column;align-items:center}.nav ul li{margin:10px 0;padding:0 5px;border-right:2px solid #e8e8e8}.nav ul li:hover{border-right:2px solid #326ad3;padding:0 5px}.nav ul li.disabled a{pointer-events:none;opacity:.5}.nav ul li.disabled:hover{border-right:2px solid #e8e8e8}.nav ul li a{padding:6px 0;display:block;border-radius:15px;min-width:42px;box-shadow:none;line-height:30px}.nav ul li a img{width:27px}.nav ul li a:hover{background:white}.nav ul li a:hover img{filter:invert(.2) sepia(1) saturate(8) hue-rotate(180deg)}.nav ul li.active{border-right:2px solid #326ad3}.nav ul li.active a{background:white}\n"] }]
|
|
47
|
+
}], ctorParameters: function () { return [{ type: i1.UtilsService }, { type: i1.CoolmapService }]; }, propDecorators: { drawer: [{
|
|
48
|
+
type: Output
|
|
49
|
+
}], changeNav: [{
|
|
50
|
+
type: Output
|
|
51
|
+
}] } });
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbmF2L25hdi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L25hdi9uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBRTNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7QUFPMUMsTUFBTSxPQUFPLFlBQVk7SUFTdkIsWUFBbUIsS0FBbUIsRUFBUyxPQUF1QjtRQUFuRCxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFSckQsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDckMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDeEQsYUFBUSxHQUFXLFNBQVMsQ0FBQztRQUM3QixnQkFBVyxHQUFZLElBQUksQ0FBQztRQUM1QixxQkFBZ0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNsRSx1QkFBa0IsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUMzRCxlQUFVLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUd6QyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN6RyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRUQsVUFBVSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBLENBQUMsQ0FBQztJQUN2QyxTQUFTLENBQUMsSUFBWTtRQUNwQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFBQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDM0UsSUFBSSxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFBO2FBQUU7aUJBQ3hFO2dCQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO2FBQUU7WUFDdkQsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMzQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDOzt5R0EzQlUsWUFBWTs2RkFBWixZQUFZLHNHQ1R6Qixzd0JBbUJBOzJGRFZhLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsU0FBUztnSUFLRixNQUFNO3NCQUF0QixNQUFNO2dCQUNVLFNBQVM7c0JBQXpCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT3V0cHV0LCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvb2xtYXBTZXJ2aWNlLCBVdGlsc1NlcnZpY2UgfSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1uYXYnLFxuICB0ZW1wbGF0ZVVybDogJy4vbmF2LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbmF2LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgTmF2Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgQE91dHB1dCgpIHB1YmxpYyBkcmF3ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBwdWJsaWMgY2hhbmdlTmF2ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIG5hdlZhbHVlOiBzdHJpbmcgPSAnSm9iY29kZSc7XG4gIGlzbmF2Q2hhbmdlOiBib29sZWFuID0gdHJ1ZTtcbiAgcGFkZGluRm9ySm9iQ29kZSA9IHsgdG9wOiAwLCBib3R0b206IDI1MCwgbGVmdDogNTAwLCByaWdodDogNDAwIH07XG4gIHBhZGRpbkZvclZpZXdSb3V0ZSA9IHsgdG9wOiAwLCBib3R0b206IDQwMCwgbGVmdDogNDAwLCByaWdodDogMCB9O1xuICBwdWJsaWMgZGVzdHJveWVyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHV0aWxzOiBVdGlsc1NlcnZpY2UsIHB1YmxpYyBjb29sTWFwOiBDb29sbWFwU2VydmljZSkge1xuICAgIHRoaXMudXRpbHMubmF2Q2hhbmdlT2JzZXJ2ZS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUocmVzID0+IHsgdGhpcy5pc25hdkNoYW5nZSA9IHJlcyB9KVxuICAgIHRoaXMuY29vbE1hcC5zZXRQYWRkaW5nKHRoaXMucGFkZGluRm9ySm9iQ29kZSk7XG4gIH1cblxuICBvcGVuRHJhd2VyKCkgeyB0aGlzLmRyYXdlci5lbWl0KHRydWUpIH1cbiAgY2huYWdlTmF2KG5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzbmF2Q2hhbmdlKSB7XG4gICAgICB0aGlzLmNoYW5nZU5hdi5lbWl0KG5hbWUpOyB0aGlzLm5hdlZhbHVlID0gbmFtZTsgdGhpcy5jb29sTWFwLmNsZWFyQm91bmQoKTtcbiAgICAgIGlmIChuYW1lID09PSAnQWRkcm91dGUnKSB7IHRoaXMuY29vbE1hcC5zZXRQYWRkaW5nKHRoaXMucGFkZGluRm9yVmlld1JvdXRlKSB9XG4gICAgICBlbHNlIHsgdGhpcy5jb29sTWFwLnNldFBhZGRpbmcodGhpcy5wYWRkaW5Gb3JKb2JDb2RlKSB9XG4gICAgICB0aGlzLnV0aWxzLmNsZWFyT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveWVyJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuZGVzdHJveWVyJC51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibmF2XCI+XG4gIDxidXR0b24gKGNsaWNrKT1cIm9wZW5EcmF3ZXIoKVwiIGNsYXNzPVwidG9nZ2xlXCI+XG4gICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL3RvZ2dsZS5zdmdcIiBhbHQ9XCJcIiAvPlxuICA8L2J1dHRvbj5cblxuICA8dWwgY2xhc3M9XCJtLTEwMFwiPlxuICAgIDxsaSBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IG5hdlZhbHVlID09PSAnSm9iY29kZSd9XCI+XG4gICAgICA8YSBtYXQtcmFpc2VkLWJ1dHRvbiAjdG9vbHRpcD1cIm1hdFRvb2x0aXBcIiBtYXRUb29sdGlwPVwiSm9iIENvZGVcIiBhcmlhLWxhYmVsPVwiSm9iLWNvZGVcIiAoY2xpY2spPVwiY2huYWdlTmF2KCdKb2Jjb2RlJylcIj5cbiAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL2pvYi1jb2RlLnN2Z1wiIGFsdD1cIlwiIC8+XG4gICAgICA8L2E+XG4gICAgPC9saT5cblxuICAgIDxsaSBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IG5hdlZhbHVlID09PSAnQWRkcm91dGUnLCAnZGlzYWJsZWQnOiAhaXNuYXZDaGFuZ2UgfVwiPlxuICAgICAgPGEgbWF0LXJhaXNlZC1idXR0b24gI3Rvb2x0aXA9XCJtYXRUb29sdGlwXCIgbWF0VG9vbHRpcD1cIlZpZXcgUm91dGVcIiBhcmlhLWxhYmVsPVwiVmlldy1yb3V0ZVwiIChjbGljayk9XCJjaG5hZ2VOYXYoJ0FkZHJvdXRlJylcIj5cbiAgICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL3JvdXRlLnN2Z1wiIGFsdD1cIlwiIC8+XG4gICAgICA8L2E+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuIl19
|
package/esm2020/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.mjs
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } 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/tooltip";
|
|
6
|
+
export class JobCodeListCardComponent {
|
|
7
|
+
constructor(utils) {
|
|
8
|
+
this.utils = utils;
|
|
9
|
+
this.routeSeletion = new EventEmitter();
|
|
10
|
+
this.toggleDrivermenu = new EventEmitter();
|
|
11
|
+
}
|
|
12
|
+
selectRoute(route) { this.routeSeletion.emit(route); }
|
|
13
|
+
toggleDriverlist(mouseevntType, route, isHoverOut) {
|
|
14
|
+
const data = { mouseevntType, route, isHoverOut };
|
|
15
|
+
this.toggleDrivermenu.emit(data);
|
|
16
|
+
if (mouseevntType === 'click')
|
|
17
|
+
this.utils.setdictValue('driver-details', JSON.stringify(this.route));
|
|
18
|
+
}
|
|
19
|
+
toggleJobCodeDetails(mouseEventType, route) {
|
|
20
|
+
if (mouseEventType) {
|
|
21
|
+
route['type'] = 'jobcode';
|
|
22
|
+
this.emitJobdetails.emitroute.emit(route);
|
|
23
|
+
}
|
|
24
|
+
else if (!mouseEventType && this.preventCloseDetails) {
|
|
25
|
+
route = this.utils.getdictValue('route-details');
|
|
26
|
+
route['type'] = 'jobcode';
|
|
27
|
+
this.emitJobdetails.emitroute.emit(route);
|
|
28
|
+
}
|
|
29
|
+
else if (!mouseEventType && !this.preventCloseDetails)
|
|
30
|
+
this.emitJobdetails.clearJobDetailsFromList.emit(true);
|
|
31
|
+
}
|
|
32
|
+
calculateStatusPercentage(type, route) {
|
|
33
|
+
const total = route['Done'] + route['Ongoing'] + route['Open'];
|
|
34
|
+
if (type === 'done') {
|
|
35
|
+
return Math.round((100 * route['Done']) / total);
|
|
36
|
+
}
|
|
37
|
+
else if (type === 'ongoing') {
|
|
38
|
+
return Math.round((100 * route['Ongoing']) / total);
|
|
39
|
+
}
|
|
40
|
+
else if (type === 'open') {
|
|
41
|
+
return Math.round((100 * route['Open']) / total);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
setRouteItem() {
|
|
48
|
+
this.utils.preVentJobdetailclose.next(true);
|
|
49
|
+
this.utils.setdictValue('route-details', JSON.stringify(this.route));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
JobCodeListCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeListCardComponent, deps: [{ token: i1.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
53
|
+
JobCodeListCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: JobCodeListCardComponent, selector: "app-job-code-list-card", inputs: { route: "route", emitJobdetails: "emitJobdetails", preventCloseDetails: "preventCloseDetails" }, outputs: { routeSeletion: "routeSeletion", toggleDrivermenu: "toggleDrivermenu" }, ngImport: i0, template: "<div class=\"innerbox\">\n <div class=\"inputarea\">\n <input type=\"checkbox\" name=\"selectroute\" [checked]=\"route['isSelected']\" (change)=\"$event ? selectRoute(route) : null\" />\n <label> </label>\n <div class=\"border\"></div>\n </div>\n <div class=\"job_intro\">\n <div class=\"heading\">\n <h2>\n {{route['order_number'] ? route['order_number'] : ''}}\n </h2>\n |\n <span>\n {{route['customer_name']}}\n </span>\n |\n <span>\n {{route['project']}}\n </span>\n </div>\n <div class=\"destinationprt\">\n <span style=\"padding-left: 0;\">\n {{route['pickup_location']}}\n </span>\n <b>></b>\n <span>\n {{route['delivery_location']}}\n </span>\n </div>\n <div class=\"mat_cat\">\n <span>\n {{route['material']}}\n </span>\n </div>\n\n <div class=\"statusbar\">\n <div class=\"status_percent\">\n <span class=\"done\" [style]=\"'width:'+calculateStatusPercentage('done',route['values'])+'%'\"></span>\n <span class=\"ongoing\" [style]=\"'width:'+calculateStatusPercentage('ongoing', route['values'])+'%'\"> </span>\n <span class=\"open\" [style]=\"'width:'+calculateStatusPercentage('open', route['values'])+'%'\"> </span>\n </div>\n </div>\n </div>\n <div class=\"statusarea\">\n <div class=\"statusunit\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n <div class=\"driver_icon\" (mouseover)=\"toggleDriverlist(true, route)\" (mouseout)=\"toggleDriverlist(false, route, true)\"\n mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Click on icon to show the driver list\" matTooltipPosition=\"above\"\n (click)=\"toggleDriverlist('click', route)\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" (click)=\"setRouteItem()\" (mouseover)=\"toggleJobCodeDetails(true, route)\"\n (mouseout)=\"toggleJobCodeDetails(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n</div>\n", styles: [".innerbox{display:flex;justify-content:space-between}.innerbox .inputarea{display:flex;align-items:center;width:6%}.innerbox .inputarea input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.innerbox .inputarea input[type=checkbox]:checked+label{background:url(../../../../../assets/images/fill-radio.png) 10px 11px no-repeat}.innerbox .inputarea label{background:url(../../../../../assets/images/blank-radio.png) 10px 11px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.innerbox .inputarea .border{position:absolute;width:100%;height:100%;left:0;right:0;top:-1px;border-radius:15px}.innerbox .inputarea input:checked~.border{border-left:3px solid #39c471;border-right:1px solid #39c471;border-top:1px solid #39c471;border-bottom:1px solid #39c471}.innerbox .inputarea h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:214px;padding-left:16px;margin-bottom:5px;margin-top:0}.innerbox .job_intro{width:80%}.innerbox .job_intro .heading{display:flex;font-size:.8rem}.innerbox .job_intro .heading h2{margin:0 4px 0 0;font-size:.8rem}.innerbox .job_intro .heading span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100px;padding:0 3px;display:block}.innerbox .job_intro .destinationprt{display:flex;margin-top:10px;font-size:.8rem}.innerbox .job_intro .destinationprt span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:132px;padding:0 5px;display:block}.innerbox .job_intro .mat_cat{margin-top:10px;font-size:.8rem}.innerbox .job_intro .statusbar{width:100%;position:relative;height:5px;margin-top:10px}.innerbox .job_intro .statusbar .status_percent{position:absolute;left:0;display:flex;width:100%;height:100%}.innerbox .job_intro .statusbar .status_percent span{display:block}.innerbox .job_intro .statusbar .status_percent .done{background:#008000}.innerbox .job_intro .statusbar .status_percent .ongoing{background:#ffcc00}.innerbox .job_intro .statusbar .status_percent .open{background:#bfbfbf}.innerbox .statusarea{display:flex;flex-direction:column;align-items:center;width:10%}.innerbox .statusarea .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px}.innerbox .statusarea .statusunit:first-letter{font-size:.8rem}.innerbox .statusarea .statusunit.routestatus{right:10px}.innerbox .statusarea .statusunit.Ton{background:#39c471}.innerbox .statusarea .statusunit.Load{background:#326ad3}.innerbox .statusarea .statusunit.Hourly{background:#ffad56}.innerbox .statusarea .driver_icon,.innerbox .statusarea .infoicon{z-index:9999}.innerbox .statusarea .driver_icon img,.innerbox .statusarea .infoicon img{width:20px;height:20px}.innerbox .statusarea .driver_icon{margin:5px 0}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeListCardComponent, decorators: [{
|
|
55
|
+
type: Component,
|
|
56
|
+
args: [{ selector: 'app-job-code-list-card', template: "<div class=\"innerbox\">\n <div class=\"inputarea\">\n <input type=\"checkbox\" name=\"selectroute\" [checked]=\"route['isSelected']\" (change)=\"$event ? selectRoute(route) : null\" />\n <label> </label>\n <div class=\"border\"></div>\n </div>\n <div class=\"job_intro\">\n <div class=\"heading\">\n <h2>\n {{route['order_number'] ? route['order_number'] : ''}}\n </h2>\n |\n <span>\n {{route['customer_name']}}\n </span>\n |\n <span>\n {{route['project']}}\n </span>\n </div>\n <div class=\"destinationprt\">\n <span style=\"padding-left: 0;\">\n {{route['pickup_location']}}\n </span>\n <b>></b>\n <span>\n {{route['delivery_location']}}\n </span>\n </div>\n <div class=\"mat_cat\">\n <span>\n {{route['material']}}\n </span>\n </div>\n\n <div class=\"statusbar\">\n <div class=\"status_percent\">\n <span class=\"done\" [style]=\"'width:'+calculateStatusPercentage('done',route['values'])+'%'\"></span>\n <span class=\"ongoing\" [style]=\"'width:'+calculateStatusPercentage('ongoing', route['values'])+'%'\"> </span>\n <span class=\"open\" [style]=\"'width:'+calculateStatusPercentage('open', route['values'])+'%'\"> </span>\n </div>\n </div>\n </div>\n <div class=\"statusarea\">\n <div class=\"statusunit\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\n <div class=\"driver_icon\" (mouseover)=\"toggleDriverlist(true, route)\" (mouseout)=\"toggleDriverlist(false, route, true)\"\n mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Click on icon to show the driver list\" matTooltipPosition=\"above\"\n (click)=\"toggleDriverlist('click', route)\">\n <img src=\"assets/images/driver_icon.png\" [alt]=\"\" />\n </div>\n <div class=\"infoicon\" (click)=\"setRouteItem()\" (mouseover)=\"toggleJobCodeDetails(true, route)\"\n (mouseout)=\"toggleJobCodeDetails(false, route)\">\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n</div>\n", styles: [".innerbox{display:flex;justify-content:space-between}.innerbox .inputarea{display:flex;align-items:center;width:6%}.innerbox .inputarea input[type=checkbox]{width:100%;height:100%;margin-right:10px;opacity:0;position:absolute;left:0;margin-left:0;top:0;z-index:3;cursor:pointer}.innerbox .inputarea input[type=checkbox]:checked+label{background:url(../../../../../assets/images/fill-radio.png) 10px 11px no-repeat}.innerbox .inputarea label{background:url(../../../../../assets/images/blank-radio.png) 10px 11px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.innerbox .inputarea .border{position:absolute;width:100%;height:100%;left:0;right:0;top:-1px;border-radius:15px}.innerbox .inputarea input:checked~.border{border-left:3px solid #39c471;border-right:1px solid #39c471;border-top:1px solid #39c471;border-bottom:1px solid #39c471}.innerbox .inputarea h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:214px;padding-left:16px;margin-bottom:5px;margin-top:0}.innerbox .job_intro{width:80%}.innerbox .job_intro .heading{display:flex;font-size:.8rem}.innerbox .job_intro .heading h2{margin:0 4px 0 0;font-size:.8rem}.innerbox .job_intro .heading span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100px;padding:0 3px;display:block}.innerbox .job_intro .destinationprt{display:flex;margin-top:10px;font-size:.8rem}.innerbox .job_intro .destinationprt span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:132px;padding:0 5px;display:block}.innerbox .job_intro .mat_cat{margin-top:10px;font-size:.8rem}.innerbox .job_intro .statusbar{width:100%;position:relative;height:5px;margin-top:10px}.innerbox .job_intro .statusbar .status_percent{position:absolute;left:0;display:flex;width:100%;height:100%}.innerbox .job_intro .statusbar .status_percent span{display:block}.innerbox .job_intro .statusbar .status_percent .done{background:#008000}.innerbox .job_intro .statusbar .status_percent .ongoing{background:#ffcc00}.innerbox .job_intro .statusbar .status_percent .open{background:#bfbfbf}.innerbox .statusarea{display:flex;flex-direction:column;align-items:center;width:10%}.innerbox .statusarea .statusunit{border-radius:30px;font-size:0;color:#fff;text-transform:capitalize;font-weight:500;width:20px;height:20px;text-align:center;line-height:20px}.innerbox .statusarea .statusunit:first-letter{font-size:.8rem}.innerbox .statusarea .statusunit.routestatus{right:10px}.innerbox .statusarea .statusunit.Ton{background:#39c471}.innerbox .statusarea .statusunit.Load{background:#326ad3}.innerbox .statusarea .statusunit.Hourly{background:#ffad56}.innerbox .statusarea .driver_icon,.innerbox .statusarea .infoicon{z-index:9999}.innerbox .statusarea .driver_icon img,.innerbox .statusarea .infoicon img{width:20px;height:20px}.innerbox .statusarea .driver_icon{margin:5px 0}\n"] }]
|
|
57
|
+
}], ctorParameters: function () { return [{ type: i1.UtilsService }]; }, propDecorators: { route: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], routeSeletion: [{
|
|
60
|
+
type: Output
|
|
61
|
+
}], toggleDrivermenu: [{
|
|
62
|
+
type: Output
|
|
63
|
+
}], emitJobdetails: [{
|
|
64
|
+
type: Input
|
|
65
|
+
}], preventCloseDetails: [{
|
|
66
|
+
type: Input
|
|
67
|
+
}] } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUtbGlzdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvcm91dGUtam9iY29kZS1saXN0L2pvYi1jb2RlLWxpc3QtY2FyZC9qb2ItY29kZS1saXN0LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9yb3V0ZS1qb2Jjb2RlLWxpc3Qvam9iLWNvZGUtbGlzdC1jYXJkL2pvYi1jb2RlLWxpc3QtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVF2RSxNQUFNLE9BQU8sd0JBQXdCO0lBTW5DLFlBQW1CLEtBQW1CO1FBQW5CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFKckIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25DLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFHYixDQUFDO0lBRTNDLFdBQVcsQ0FBQyxLQUFZLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUEsQ0FBQyxDQUFDO0lBQzVELGdCQUFnQixDQUFDLGFBQStCLEVBQUUsS0FBWSxFQUFFLFVBQW9CO1FBQ2xGLE1BQU0sSUFBSSxHQUFHLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsQ0FBQTtRQUNqRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLElBQUksYUFBYSxLQUFLLE9BQU87WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZHLENBQUM7SUFDRCxvQkFBb0IsQ0FBQyxjQUF1QixFQUFFLEtBQVk7UUFDeEQsSUFBSSxjQUFjLEVBQUU7WUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO1lBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFBO1NBQUU7YUFDdkYsSUFBRyxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUM7WUFDbEQsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ2pELEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7WUFBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7U0FDcEU7YUFDRyxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQjtZQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFDRCx5QkFBeUIsQ0FBQyxJQUFZLEVBQUUsS0FBVTtRQUNoRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvRCxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7U0FBRTthQUNwRSxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7U0FBRTthQUMvRSxJQUFJLElBQUksS0FBSyxNQUFNLEVBQUU7WUFBRSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLENBQUE7U0FBRTthQUN6RTtZQUFFLE9BQU8sSUFBSSxDQUFBO1NBQUU7SUFDdEIsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUN2RSxDQUFDOztxSEFoQ1Usd0JBQXdCO3lHQUF4Qix3QkFBd0IsMlBDUnJDLDRqRUF3REE7MkZEaERhLHdCQUF3QjtrQkFMcEMsU0FBUzsrQkFDRSx3QkFBd0I7bUdBS2xCLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1csYUFBYTtzQkFBN0IsTUFBTTtnQkFDVSxnQkFBZ0I7c0JBQWhDLE1BQU07Z0JBQ1MsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1qb2ItY29kZS1saXN0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vam9iLWNvZGUtbGlzdC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vam9iLWNvZGUtbGlzdC1jYXJkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSm9iQ29kZUxpc3RDYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgcHVibGljIHJvdXRlITogUm91dGU7XG4gIEBPdXRwdXQoKSBwdWJsaWMgcm91dGVTZWxldGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIHB1YmxpYyB0b2dnbGVEcml2ZXJtZW51ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBASW5wdXQoKSBwdWJsaWMgZW1pdEpvYmRldGFpbHM6IGFueTtcbiAgQElucHV0KCkgcHVibGljIHByZXZlbnRDbG9zZURldGFpbHMhOiBib29sZWFuO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbHM6IFV0aWxzU2VydmljZSkgeyB9XG5cbiAgc2VsZWN0Um91dGUocm91dGU6IFJvdXRlKSB7IHRoaXMucm91dGVTZWxldGlvbi5lbWl0KHJvdXRlKSB9XG4gIHRvZ2dsZURyaXZlcmxpc3QobW91c2Vldm50VHlwZTogYm9vbGVhbiB8IHN0cmluZywgcm91dGU6IFJvdXRlLCBpc0hvdmVyT3V0PzogYm9vbGVhbikge1xuICAgIGNvbnN0IGRhdGEgPSB7IG1vdXNlZXZudFR5cGUsIHJvdXRlLCBpc0hvdmVyT3V0IH1cbiAgICB0aGlzLnRvZ2dsZURyaXZlcm1lbnUuZW1pdChkYXRhKTtcbiAgICBpZiAobW91c2Vldm50VHlwZSA9PT0gJ2NsaWNrJykgdGhpcy51dGlscy5zZXRkaWN0VmFsdWUoJ2RyaXZlci1kZXRhaWxzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yb3V0ZSkpO1xuICB9XG4gIHRvZ2dsZUpvYkNvZGVEZXRhaWxzKG1vdXNlRXZlbnRUeXBlOiBib29sZWFuLCByb3V0ZTogUm91dGUpIHtcbiAgICBpZiAobW91c2VFdmVudFR5cGUpIHsgcm91dGVbJ3R5cGUnXSA9ICdqb2Jjb2RlJzsgdGhpcy5lbWl0Sm9iZGV0YWlscy5lbWl0cm91dGUuZW1pdChyb3V0ZSkgfVxuICAgIGVsc2UgaWYoIW1vdXNlRXZlbnRUeXBlICYmIHRoaXMucHJldmVudENsb3NlRGV0YWlscyl7XG4gICAgICByb3V0ZSA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzJyk7XG4gICAgICByb3V0ZVsndHlwZSddID0gJ2pvYmNvZGUnOyB0aGlzLmVtaXRKb2JkZXRhaWxzLmVtaXRyb3V0ZS5lbWl0KHJvdXRlKVxuICAgICB9XG4gICAgZWxzZSBpZiAoIW1vdXNlRXZlbnRUeXBlICYmICF0aGlzLnByZXZlbnRDbG9zZURldGFpbHMpIHRoaXMuZW1pdEpvYmRldGFpbHMuY2xlYXJKb2JEZXRhaWxzRnJvbUxpc3QuZW1pdCh0cnVlKTtcbiAgfVxuICBjYWxjdWxhdGVTdGF0dXNQZXJjZW50YWdlKHR5cGU6IHN0cmluZywgcm91dGU6IGFueSkge1xuICAgIGNvbnN0IHRvdGFsID0gcm91dGVbJ0RvbmUnXSArIHJvdXRlWydPbmdvaW5nJ10gKyByb3V0ZVsnT3BlbiddO1xuICAgIGlmICh0eXBlID09PSAnZG9uZScpIHsgcmV0dXJuIE1hdGgucm91bmQoKDEwMCAqIHJvdXRlWydEb25lJ10pIC8gdG90YWwpIH1cbiAgICBlbHNlIGlmICh0eXBlID09PSAnb25nb2luZycpIHsgcmV0dXJuIE1hdGgucm91bmQoKDEwMCAqIHJvdXRlWydPbmdvaW5nJ10pIC8gdG90YWwpIH1cbiAgICBlbHNlIGlmICh0eXBlID09PSAnb3BlbicpIHsgcmV0dXJuIE1hdGgucm91bmQoKDEwMCAqIHJvdXRlWydPcGVuJ10pIC8gdG90YWwpIH1cbiAgICBlbHNlIHsgcmV0dXJuIG51bGwgfVxuICB9XG4gIHNldFJvdXRlSXRlbSgpe1xuICAgIHRoaXMudXRpbHMucHJlVmVudEpvYmRldGFpbGNsb3NlLm5leHQodHJ1ZSk7XG4gICAgdGhpcy51dGlscy5zZXRkaWN0VmFsdWUoJ3JvdXRlLWRldGFpbHMnLCBKU09OLnN0cmluZ2lmeSh0aGlzLnJvdXRlKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbm5lcmJveFwiPlxuICA8ZGl2IGNsYXNzPVwiaW5wdXRhcmVhXCI+XG4gICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWxlY3Ryb3V0ZVwiIFtjaGVja2VkXT1cInJvdXRlWydpc1NlbGVjdGVkJ11cIiAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdFJvdXRlKHJvdXRlKSA6IG51bGxcIiAvPlxuICAgIDxsYWJlbD4mbmJzcDs8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJib3JkZXJcIj48L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJqb2JfaW50cm9cIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGluZ1wiPlxuICAgICAgPGgyPlxuICAgICAgICB7e3JvdXRlWydvcmRlcl9udW1iZXInXSA/IHJvdXRlWydvcmRlcl9udW1iZXInXSA6ICcnfX1cbiAgICAgIDwvaDI+XG4gICAgICB8XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3tyb3V0ZVsnY3VzdG9tZXJfbmFtZSddfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHxcbiAgICAgIDxzcGFuPlxuICAgICAgICB7e3JvdXRlWydwcm9qZWN0J119fVxuICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkZXN0aW5hdGlvbnBydFwiPlxuICAgICAgPHNwYW4gc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDA7XCI+XG4gICAgICAgIHt7cm91dGVbJ3BpY2t1cF9sb2NhdGlvbiddfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxiPj48L2I+XG4gICAgICA8c3Bhbj5cbiAgICAgICAge3tyb3V0ZVsnZGVsaXZlcnlfbG9jYXRpb24nXX19XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1hdF9jYXRcIj5cbiAgICAgIDxzcGFuPlxuICAgICAgICB7e3JvdXRlWydtYXRlcmlhbCddfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNiYXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNfcGVyY2VudFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImRvbmVcIiBbc3R5bGVdPVwiJ3dpZHRoOicrY2FsY3VsYXRlU3RhdHVzUGVyY2VudGFnZSgnZG9uZScscm91dGVbJ3ZhbHVlcyddKSsnJSdcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwib25nb2luZ1wiIFtzdHlsZV09XCInd2lkdGg6JytjYWxjdWxhdGVTdGF0dXNQZXJjZW50YWdlKCdvbmdvaW5nJywgcm91dGVbJ3ZhbHVlcyddKSsnJSdcIj4gPC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm9wZW5cIiBbc3R5bGVdPVwiJ3dpZHRoOicrY2FsY3VsYXRlU3RhdHVzUGVyY2VudGFnZSgnb3BlbicsIHJvdXRlWyd2YWx1ZXMnXSkrJyUnXCI+IDwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN0YXR1c2FyZWFcIj5cbiAgICA8ZGl2IGNsYXNzPVwic3RhdHVzdW5pdFwiIFtuZ0NsYXNzXT1cInJvdXRlWyd1bml0J11cIj57e3JvdXRlWyd1bml0J119fTwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkcml2ZXJfaWNvblwiIChtb3VzZW92ZXIpPVwidG9nZ2xlRHJpdmVybGlzdCh0cnVlLCByb3V0ZSlcIiAobW91c2VvdXQpPVwidG9nZ2xlRHJpdmVybGlzdChmYWxzZSwgcm91dGUsIHRydWUpXCJcbiAgICAgIG1hdC1yYWlzZWQtYnV0dG9uICN0b29sdGlwPVwibWF0VG9vbHRpcFwiIG1hdFRvb2x0aXA9XCJDbGljayBvbiBpY29uIHRvIHNob3cgdGhlIGRyaXZlciBsaXN0XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYWJvdmVcIlxuICAgICAgKGNsaWNrKT1cInRvZ2dsZURyaXZlcmxpc3QoJ2NsaWNrJywgcm91dGUpXCI+XG4gICAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvZHJpdmVyX2ljb24ucG5nXCIgW2FsdF09XCJcIiAvPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJpbmZvaWNvblwiIChjbGljayk9XCJzZXRSb3V0ZUl0ZW0oKVwiIChtb3VzZW92ZXIpPVwidG9nZ2xlSm9iQ29kZURldGFpbHModHJ1ZSwgcm91dGUpXCJcbiAgICAgIChtb3VzZW91dCk9XCJ0b2dnbGVKb2JDb2RlRGV0YWlscyhmYWxzZSwgcm91dGUpXCI+XG4gICAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvaW5mb19pY29uLnBuZ1wiIFthbHRdPVwiXCIgLz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -0,0 +1,314 @@
|
|
|
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/form-field";
|
|
9
|
+
import * as i5 from "@angular/material/input";
|
|
10
|
+
import * as i6 from "@angular/material/icon";
|
|
11
|
+
import * as i7 from "@angular/material/progress-spinner";
|
|
12
|
+
import * as i8 from "ngx-perfect-scrollbar";
|
|
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
|
+
constructor(coolMap, utils) {
|
|
18
|
+
this.coolMap = coolMap;
|
|
19
|
+
this.utils = utils;
|
|
20
|
+
this.loader = true;
|
|
21
|
+
this.type = '';
|
|
22
|
+
this.data = [];
|
|
23
|
+
this.currentNav = '';
|
|
24
|
+
this.emitroute = new EventEmitter();
|
|
25
|
+
this.showAllRoute = new EventEmitter();
|
|
26
|
+
this.preventMouseout = false;
|
|
27
|
+
this.filterList = this.data;
|
|
28
|
+
this.isDriverList = false;
|
|
29
|
+
this.selectedRoute = new SelectionModel(true, []);
|
|
30
|
+
this.preventListSelect = false;
|
|
31
|
+
this.clearJobDetailsFromList = new EventEmitter();
|
|
32
|
+
this.preventDetailsClose = false;
|
|
33
|
+
this.messageLoader = false;
|
|
34
|
+
this.driverMessage = new FormControl('', [Validators.maxLength(256)]);
|
|
35
|
+
this.isSmsList = false;
|
|
36
|
+
this.driverList = [];
|
|
37
|
+
}
|
|
38
|
+
ngOnInit() {
|
|
39
|
+
this.utils.getpreVentJobdetailclose.subscribe(res => { this.preventDetailsClose = res; });
|
|
40
|
+
this.utils.removeMapEntityUtility.subscribe((res) => { this.passRoute(res); });
|
|
41
|
+
}
|
|
42
|
+
passRoute(job) {
|
|
43
|
+
this.data.forEach((each) => { if (each['route_id'] !== job['route_id']) {
|
|
44
|
+
each['isActive'] = false;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
each['isActive'] = true;
|
|
48
|
+
} });
|
|
49
|
+
if (this.type == 'addroute')
|
|
50
|
+
this.filterList.forEach(ele => this.coolMap.filterRoute(ele['route_id'], 'none'));
|
|
51
|
+
}
|
|
52
|
+
selectRoute(route) {
|
|
53
|
+
if (!this.preventListSelect) {
|
|
54
|
+
this.preventListSelect = true;
|
|
55
|
+
this.selectedRoute.toggle(route);
|
|
56
|
+
this.clearJobDetailsFromList.emit(true);
|
|
57
|
+
this.utils.preVentJobdetailclose.next(false);
|
|
58
|
+
this.filterList.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'none'));
|
|
59
|
+
this.clearList();
|
|
60
|
+
this.selectedRoute.selected.forEach((ele, index) => {
|
|
61
|
+
this.coolMap.filterRoute(ele['job_id'], 'visible', ((this.selectedRoute.selected.length - 1) === index)).then(() => {
|
|
62
|
+
this.preventListSelect = false;
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
if (!this.selectedRoute.selected.length) {
|
|
66
|
+
this.preventListSelect = false;
|
|
67
|
+
this.data.forEach(ele => this.coolMap.filterRoute(ele['job_id'], 'visible'));
|
|
68
|
+
}
|
|
69
|
+
;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
checkroutes(route) {
|
|
73
|
+
const selectedRoute = this.selectedRoute.selected;
|
|
74
|
+
this.filterList = this.filterList.map(ele => { ele['isSelected'] = false; return ele; });
|
|
75
|
+
if (selectedRoute.length > 0) {
|
|
76
|
+
selectedRoute.forEach(ele => {
|
|
77
|
+
if (route['order_number'] === ele['order_number']) {
|
|
78
|
+
ele['isSelected'] = true;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
return route;
|
|
83
|
+
}
|
|
84
|
+
ngOnChanges(changes) {
|
|
85
|
+
setTimeout(() => {
|
|
86
|
+
if (this.currentNav === 'Addroute' && (this.data.length < this.filterList.length)) {
|
|
87
|
+
const index = this.filterList.findIndex(ele => ele.isActive);
|
|
88
|
+
if (index > 0)
|
|
89
|
+
this.filterList[index].isActive = false;
|
|
90
|
+
this.data.forEach((ele, indexForData) => {
|
|
91
|
+
const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);
|
|
92
|
+
this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}, 500);
|
|
97
|
+
if (changes['data'] && changes['data']['currentValue']) {
|
|
98
|
+
this.filterList = changes['data']['currentValue'];
|
|
99
|
+
if (this.searchTerm) {
|
|
100
|
+
if (this.searchTerm.length > 0) {
|
|
101
|
+
this.data = this.utils.getSearchResults(changes['data']['currentValue'], this.searchTerm);
|
|
102
|
+
this.filterList = this.data;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.filterList = changes['data']['currentValue'];
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
if (this.type === 'jobcode') {
|
|
109
|
+
this.loader = true;
|
|
110
|
+
this.clearList();
|
|
111
|
+
if (this.filterList.length === 0)
|
|
112
|
+
this.loader = false;
|
|
113
|
+
}
|
|
114
|
+
if (this.type !== 'jobcode') {
|
|
115
|
+
if (changes['data']['previousValue'] && this.currentNav === 'addForm') {
|
|
116
|
+
const activeRoute = changes['data']['previousValue'].find((ele) => ele.isActive);
|
|
117
|
+
if (activeRoute) {
|
|
118
|
+
this.filterList.map((item) => {
|
|
119
|
+
if (item.route_id === activeRoute.route_id) {
|
|
120
|
+
item.isActive = true;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (changes['data']['previousValue'] && this.currentNav !== 'addForm') {
|
|
127
|
+
this.coolMap.removeJobFromMap(changes['data']['previousValue']);
|
|
128
|
+
this.selectedRoute.clear();
|
|
129
|
+
}
|
|
130
|
+
;
|
|
131
|
+
if (this.currentNav !== 'addForm') {
|
|
132
|
+
changes['data']['currentValue'].forEach((ele, indexForData) => {
|
|
133
|
+
const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);
|
|
134
|
+
this.coolMap.plotRoute(ele, id, this.type, false, (indexForData === (this.data.length - 1))).then((res) => {
|
|
135
|
+
if (indexForData === (this.data.length - 1)) {
|
|
136
|
+
this.loader = false;
|
|
137
|
+
this.utils.preventnavChange.next(true);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
if (changes['searchTerm']) {
|
|
144
|
+
if (this.filterList) {
|
|
145
|
+
this.data = this.filterList;
|
|
146
|
+
this.clearList();
|
|
147
|
+
if (changes['searchTerm']['currentValue'].length > 0) {
|
|
148
|
+
this.coolMap.removeRouteAndMarker(1);
|
|
149
|
+
this.data = this.utils.getSearchResults(this.data, changes['searchTerm']['currentValue']);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
this.data = this.filterList;
|
|
153
|
+
}
|
|
154
|
+
setTimeout(() => {
|
|
155
|
+
this.coolMap.clearBoundWithCordinates();
|
|
156
|
+
if (this.currentNav !== 'addForm' && !this.selectedRoute['selected'].length) {
|
|
157
|
+
this.coolMap.removeRouteAndMarker(1);
|
|
158
|
+
this.toggleFilterRoute(this.filterList);
|
|
159
|
+
}
|
|
160
|
+
}, 500);
|
|
161
|
+
if (this.currentNav !== 'addForm' && this.selectedRoute['selected'].length) {
|
|
162
|
+
if (this.data && this.data.length > 0) {
|
|
163
|
+
this.clearList();
|
|
164
|
+
this.clearJobDetailsFromList.emit(true);
|
|
165
|
+
this.coolMap.removeJobFromMap(this.selectedRoute.selected);
|
|
166
|
+
setTimeout(() => {
|
|
167
|
+
this.data.forEach((ele, indexForData) => {
|
|
168
|
+
this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === (this.data.length - 1))).then(() => {
|
|
169
|
+
if (indexForData === (this.data.length - 1)) {
|
|
170
|
+
this.loader = false;
|
|
171
|
+
this.utils.preventnavChange.next(true);
|
|
172
|
+
}
|
|
173
|
+
if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {
|
|
174
|
+
this.selectedRoute.clear();
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
}, 500);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
showRoute() {
|
|
185
|
+
this.utils.preventnavChange.next(false);
|
|
186
|
+
this.loader = true;
|
|
187
|
+
this.clearList();
|
|
188
|
+
this.showAllRoute.emit(true);
|
|
189
|
+
if (this.filterList && this.filterList.length > 0) {
|
|
190
|
+
this.coolMap.removeJobFromMap(this.selectedRoute.selected);
|
|
191
|
+
setTimeout(() => {
|
|
192
|
+
this.filterList.forEach((ele, indexForData) => {
|
|
193
|
+
this.coolMap.plotRoute(ele, ele['job_id'], this.type, false, (indexForData === this.filterList.length - 1)).then(() => {
|
|
194
|
+
if (indexForData === this.filterList.length - 1) {
|
|
195
|
+
this.loader = false;
|
|
196
|
+
this.utils.preventnavChange.next(true);
|
|
197
|
+
}
|
|
198
|
+
if (this.selectedRoute['selected'].length && this.selectedRoute['selected'][0]['job_id'] === ele['job_id']) {
|
|
199
|
+
this.selectedRoute.clear();
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
}, 500);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
toggleDrivermenu(event) {
|
|
207
|
+
const mouseevntType = event.mouseevntType;
|
|
208
|
+
let route = event.route;
|
|
209
|
+
const isHoverOut = event.isHoverOut;
|
|
210
|
+
if (typeof (mouseevntType) === 'string') {
|
|
211
|
+
if (this.preventMouseout) {
|
|
212
|
+
this.isDriverList = !this.isDriverList;
|
|
213
|
+
}
|
|
214
|
+
;
|
|
215
|
+
this.preventMouseout = true;
|
|
216
|
+
}
|
|
217
|
+
if (typeof (mouseevntType) === 'boolean' && !mouseevntType && !this.preventMouseout) {
|
|
218
|
+
this.isDriverList = mouseevntType;
|
|
219
|
+
}
|
|
220
|
+
;
|
|
221
|
+
if (typeof (mouseevntType) === 'boolean' && mouseevntType && !this.preventMouseout) {
|
|
222
|
+
this.isDriverList = mouseevntType;
|
|
223
|
+
}
|
|
224
|
+
;
|
|
225
|
+
if (this.preventMouseout && !this.isDriverList)
|
|
226
|
+
this.preventMouseout = false;
|
|
227
|
+
if (isHoverOut) {
|
|
228
|
+
if (this.preventMouseout) {
|
|
229
|
+
route = this.utils.getdictValue('driver-details');
|
|
230
|
+
this.driverList = route;
|
|
231
|
+
}
|
|
232
|
+
if (!this.preventMouseout) {
|
|
233
|
+
this.driverList = route;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
this.driverList = route;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
visiblesection(value) { if (this.type === value) {
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
else
|
|
244
|
+
return false; }
|
|
245
|
+
toggleFilterRoute(filterList) {
|
|
246
|
+
filterList.forEach((ele) => {
|
|
247
|
+
const filterItem = (this.type === 'jobcode') ? 'job_id' : 'route_id';
|
|
248
|
+
const index = this.data.findIndex((ele1) => { return (ele1[`${filterItem}`] === ele[`${filterItem}`]); });
|
|
249
|
+
const id = (ele['job_id'] ? ele['job_id'] : ele['route_id']);
|
|
250
|
+
if (id && index < 0)
|
|
251
|
+
this.coolMap.filterRoute(id, 'none');
|
|
252
|
+
if (id && index >= 0) {
|
|
253
|
+
this.data[index].isActive = false;
|
|
254
|
+
this.coolMap.filterRoute(id, 'visible');
|
|
255
|
+
this.coolMap.extendBound(ele['path'], (index === (this.data.length - 1)));
|
|
256
|
+
}
|
|
257
|
+
;
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
clearList() {
|
|
261
|
+
this.isDriverList = false;
|
|
262
|
+
this.driverList = null;
|
|
263
|
+
this.preventMouseout = false;
|
|
264
|
+
this.isSmsList = false;
|
|
265
|
+
}
|
|
266
|
+
sendMessage() {
|
|
267
|
+
this.messageLoader = true;
|
|
268
|
+
if (this.driverMessage.valid) {
|
|
269
|
+
const data = {
|
|
270
|
+
order_number: this.driverList['order_number'],
|
|
271
|
+
date: this.driverList['date'],
|
|
272
|
+
message: this.driverMessage.value,
|
|
273
|
+
};
|
|
274
|
+
this.utils.postdata('coolmap/jobs_report_chat', data).subscribe((res) => {
|
|
275
|
+
if (res['data']['status'] === 'Success.') {
|
|
276
|
+
this.messageLoader = false;
|
|
277
|
+
this.driverMessage.reset();
|
|
278
|
+
this.utils.openSnackBar('Message Sent', 'success');
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
this.messageLoader = false;
|
|
282
|
+
this.utils.openSnackBar('Message not sent', 'error');
|
|
283
|
+
}
|
|
284
|
+
}, err => { if (err) {
|
|
285
|
+
this.messageLoader = false;
|
|
286
|
+
} });
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
RouteJobCodeListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RouteJobCodeListComponent, deps: [{ token: i1.CoolmapService }, { token: i1.UtilsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
291
|
+
RouteJobCodeListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", 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 <perfect-scrollbar [class.jobscroll]=\"visiblesection('jobcode')\">\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')\" (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" [preventCloseDetails]=\"preventDetailsClose\" [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" [route]=\"checkroutes(route)\"></app-job-code-list-card>\n <app-view-route-list-card [emitrouteevent]=\"emitroute\" *ngIf=\"visiblesection('addroute')\"\n [route]=\"route\"></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 </perfect-scrollbar>\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:white;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:white;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:white;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 15px 0 10px;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}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{margin:0 15px;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;height:16.4vh}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.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}\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: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i5.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: 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", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i8.PerfectScrollbarComponent, selector: "perfect-scrollbar", inputs: ["disabled", "usePSClass", "autoPropagation", "scrollIndicators", "config"], outputs: ["psScrollY", "psScrollX", "psScrollUp", "psScrollDown", "psScrollLeft", "psScrollRight", "psYReachEnd", "psYReachStart", "psXReachEnd", "psXReachStart"], exportAs: ["ngxPerfectScrollbar"] }, { 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"] }] });
|
|
292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: RouteJobCodeListComponent, decorators: [{
|
|
293
|
+
type: Component,
|
|
294
|
+
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 <perfect-scrollbar [class.jobscroll]=\"visiblesection('jobcode')\">\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')\" (toggleDrivermenu)=\"toggleDrivermenu($event)\"\n (routeSeletion)=\"selectRoute($event)\" [preventCloseDetails]=\"preventDetailsClose\" [emitJobdetails]=\"{emitroute, clearJobDetailsFromList}\" [route]=\"checkroutes(route)\"></app-job-code-list-card>\n <app-view-route-list-card [emitrouteevent]=\"emitroute\" *ngIf=\"visiblesection('addroute')\"\n [route]=\"route\"></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 </perfect-scrollbar>\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:white;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:white;border-bottom-right-radius:20px;border-bottom-left-radius:20px;content:\"\";position:absolute;bottom:-9px;width:100%}.smslist{background:white;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 15px 0 10px;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}@media (min-width: 2500px){.jobList ul li{height:7.65vh}}@media (min-width: 3300px){.jobList ul li{height:5.61vh}}.viewroute ul{margin:0 15px;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;height:16.4vh}@media (min-width: 1600px){.viewroute ul li{height:12.4vh}}.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}\n"] }]
|
|
295
|
+
}], ctorParameters: function () { return [{ type: i1.CoolmapService }, { type: i1.UtilsService }]; }, propDecorators: { loader: [{
|
|
296
|
+
type: Input
|
|
297
|
+
}], type: [{
|
|
298
|
+
type: Input
|
|
299
|
+
}], data: [{
|
|
300
|
+
type: Input
|
|
301
|
+
}], currentNav: [{
|
|
302
|
+
type: Input
|
|
303
|
+
}], emitroute: [{
|
|
304
|
+
type: Output
|
|
305
|
+
}], showAllRoute: [{
|
|
306
|
+
type: Output
|
|
307
|
+
}], searchTerm: [{
|
|
308
|
+
type: Input
|
|
309
|
+
}], clearJobDetailsFromList: [{
|
|
310
|
+
type: Output
|
|
311
|
+
}], clearListSeletion: [{
|
|
312
|
+
type: Input
|
|
313
|
+
}] } });
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtam9iY29kZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvcm91dGUtam9iY29kZS1saXN0L3JvdXRlLWpvYmNvZGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L3JvdXRlLWpvYmNvZGUtbGlzdC9yb3V0ZS1qb2Jjb2RlLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7O0FBUXpELE1BQU0sT0FBTyx5QkFBeUI7SUFvQnBDLFlBQW1CLE9BQXVCLEVBQVMsS0FBbUI7UUFBbkQsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBbkJ0RCxXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsU0FBSSxHQUFXLEVBQUUsQ0FBQztRQUNsQixTQUFJLEdBQVksRUFBRSxDQUFDO1FBQ25CLGVBQVUsR0FBVyxFQUFFLENBQUE7UUFDdEIsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDL0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ25ELG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGVBQVUsR0FBWSxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRWhDLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLGtCQUFhLEdBQUcsSUFBSSxjQUFjLENB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QyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxVQUFVLEVBQUU7b0JBQ3hDLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO29CQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsU0FBUyxDQUFDLENBQUM7aUJBQ3BEO3FCQUFNO29CQUNMLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO29CQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxPQUFPLENBQUMsQ0FBQztpQkFDdEQ7WUFDSCxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRSxJQUFHLEdBQUcsRUFBRTtnQkFBQyxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQTthQUFDLENBQUEsQ0FBQyxDQUFDLENBQUE7U0FDbEQ7SUFDSixDQUFDOztzSEE5TlcseUJBQXlCOzBHQUF6Qix5QkFBeUIsZ1dDVnRDLGsyR0FrRUE7MkZEeERhLHlCQUF5QjtrQkFMckMsU0FBUzsrQkFDRSx3QkFBd0I7Z0lBS2xCLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFVBQVU7c0JBQXpCLEtBQUs7Z0JBQ1csU0FBUztzQkFBekIsTUFBTTtnQkFDVSxZQUFZO3NCQUE1QixNQUFNO2dCQUdTLFVBQVU7c0JBQXpCLEtBQUs7Z0JBS1csdUJBQXVCO3NCQUF2QyxNQUFNO2dCQUlTLGlCQUFpQjtzQkFBaEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIE91dHB1dCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb29sbWFwU2VydmljZSwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1yb3V0ZS1qb2Jjb2RlLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vcm91dGUtam9iY29kZS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcm91dGUtam9iY29kZS1saXN0LmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUm91dGVKb2JDb2RlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgcHVibGljIGxvYWRlciA9IHRydWU7XG4gIEBJbnB1dCgpIHB1YmxpYyB0eXBlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgcHVibGljIGRhdGE6IFJvdXRlW10gPSBbXTtcbiAgQElucHV0KCkgcHVibGljIGN1cnJlbnROYXY6IHN0cmluZyA9ICcnXG4gIEBPdXRwdXQoKSBwdWJsaWMgZW1pdHJvdXRlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgcHVibGljIHNob3dBbGxSb3V0ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJldmVudE1vdXNlb3V0OiBib29sZWFuID0gZmFsc2U7XG4gIGZpbHRlckxpc3Q6IFJvdXRlW10gPSB0aGlzLmRhdGE7XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWFyY2hUZXJtITogYW55O1xuICBpc0RyaXZlckxpc3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNlbGVjdGVkUm91dGUgPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSlcbiAgZHJpdmVyTGlzdCE6IGFueTtcbiAgcHJldmVudExpc3RTZWxlY3Q6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGVhckpvYkRldGFpbHNGcm9tTGlzdCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgcHJldmVudERldGFpbHNDbG9zZSA9IGZhbHNlO1xuICBtZXNzYWdlTG9hZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIGRyaXZlck1lc3NhZ2UgPSBuZXcgRm9ybUNvbnRyb2woJycsIFtWYWxpZGF0b3JzLm1heExlbmd0aCgyNTYpXSk7XG4gIEBJbnB1dCgpIHB1YmxpYyBjbGVhckxpc3RTZWxldGlvbjogYm9vbGVhbjtcbiAgaXNTbXNMaXN0OiBib29sZWFuID0gZmFsc2U7XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBjb29sTWFwOiBDb29sbWFwU2VydmljZSwgcHVibGljIHV0aWxzOiBVdGlsc1NlcnZpY2UpIHsgdGhpcy5kcml2ZXJMaXN0ID0gW10gfVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnV0aWxzLmdldHByZVZlbnRKb2JkZXRhaWxjbG9zZS5zdWJzY3JpYmUocmVzID0+IHsgdGhpcy5wcmV2ZW50RGV0YWlsc0Nsb3NlID0gcmVzIH0pO1xuICAgIHRoaXMudXRpbHMucmVtb3ZlTWFwRW50aXR5VXRpbGl0eS5zdWJzY3JpYmUoKHJlczogUm91dGUpID0+IHt0aGlzLnBhc3NSb3V0ZShyZXMpfSk7XG4gIH1cbiAgcGFzc1JvdXRlKGpvYjogUm91dGUpIHtcbiAgICB0aGlzLmRhdGEuZm9yRWFjaCgoZWFjaCkgPT4geyBpZiAoZWFjaFsncm91dGVfaWQnXSAhPT0gam9iWydyb3V0ZV9pZCddKSB7IGVhY2hbJ2lzQWN0aXZlJ10gPSBmYWxzZSB9IGVsc2UgeyBlYWNoWydpc0FjdGl2ZSddID0gdHJ1ZSB9IH0pO1xuICAgIGlmICh0aGlzLnR5cGUgPT0gJ2FkZHJvdXRlJykgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goZWxlID0+IHRoaXMuY29vbE1hcC5maWx0ZXJSb3V0ZShlbGVbJ3JvdXRlX2lkJ10sICdub25lJykpO1xuICB9XG4gIHNlbGVjdFJvdXRlKHJvdXRlOiBhbnkpIHtcbiAgICBpZiAoIXRoaXMucHJldmVudExpc3RTZWxlY3QpIHtcbiAgICAgIHRoaXMucHJldmVudExpc3RTZWxlY3QgPSB0cnVlO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlLnRvZ2dsZShyb3V0ZSk7XG4gICAgICB0aGlzLmNsZWFySm9iRGV0YWlsc0Zyb21MaXN0LmVtaXQodHJ1ZSk7XG4gICAgICB0aGlzLnV0aWxzLnByZVZlbnRKb2JkZXRhaWxjbG9zZS5uZXh0KGZhbHNlKTtcbiAgICAgIHRoaXMuZmlsdGVyTGlzdC5mb3JFYWNoKGVsZSA9PiB0aGlzLmNvb2xNYXAuZmlsdGVyUm91dGUoZWxlWydqb2JfaWQnXSwgJ25vbmUnKSk7XG4gICAgICB0aGlzLmNsZWFyTGlzdCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmZvckVhY2goKGVsZSwgaW5kZXgpID0+IHtcbiAgICAgICAgdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGVsZVsnam9iX2lkJ10sICd2aXNpYmxlJywgKCh0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0ZWQubGVuZ3RoIC0gMSkgPT09IGluZGV4KSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wcmV2ZW50TGlzdFNlbGVjdCA9IGZhbHNlO1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5wcmV2ZW50TGlzdFNlbGVjdCA9IGZhbHNlXG4gICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKGVsZSA9PiB0aGlzLmNvb2xNYXAuZmlsdGVyUm91dGUoZWxlWydqb2JfaWQnXSwgJ3Zpc2libGUnKSk7XG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBjaGVja3JvdXRlcyhyb3V0ZTogUm91dGUpIHtcbiAgICBjb25zdCBzZWxlY3RlZFJvdXRlID0gdGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkO1xuICAgIHRoaXMuZmlsdGVyTGlzdCA9IHRoaXMuZmlsdGVyTGlzdC5tYXAoZWxlID0+IHsgZWxlWydpc1NlbGVjdGVkJ10gPSBmYWxzZTsgcmV0dXJuIGVsZSB9KVxuICAgIGlmIChzZWxlY3RlZFJvdXRlLmxlbmd0aCA+IDApIHtcbiAgICAgIHNlbGVjdGVkUm91dGUuZm9yRWFjaChlbGUgPT4ge1xuICAgICAgICBpZiAocm91dGVbJ29yZGVyX251bWJlciddID09PSBlbGVbJ29yZGVyX251bWJlciddKSB7IGVsZVsnaXNTZWxlY3RlZCddID0gdHJ1ZSB9XG4gICAgICB9KTtcbiAgICB9IHJldHVybiByb3V0ZVxuICB9XG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmN1cnJlbnROYXYgPT09ICdBZGRyb3V0ZScgJiYgKHRoaXMuZGF0YS5sZW5ndGggPCB0aGlzLmZpbHRlckxpc3QubGVuZ3RoKSkge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVyTGlzdC5maW5kSW5kZXgoZWxlID0+IGVsZS5pc0FjdGl2ZSk7XG4gICAgICAgIGlmIChpbmRleCA+IDApIHRoaXMuZmlsdGVyTGlzdFtpbmRleF0uaXNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kYXRhLmZvckVhY2goKGVsZTogUm91dGUsIGluZGV4Rm9yRGF0YTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgY29uc3QgaWQgPSAoZWxlWydqb2JfaWQnXSA/IGVsZVsnam9iX2lkJ10gOiBlbGVbJ3JvdXRlX2lkJ10pXG4gICAgICAgICAgdGhpcy5jb29sTWFwLnBsb3RSb3V0ZShlbGUsIGlkLCB0aGlzLnR5cGUsIGZhbHNlLCAoaW5kZXhGb3JEYXRhID09PSAodGhpcy5kYXRhLmxlbmd0aCAtIDEpKSkudGhlbigocmVzKSA9PiB7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gICAgaWYgKGNoYW5nZXNbJ2RhdGEnXSAmJiBjaGFuZ2VzWydkYXRhJ11bJ2N1cnJlbnRWYWx1ZSddKSB7XG4gICAgICB0aGlzLmZpbHRlckxpc3QgPSBjaGFuZ2VzWydkYXRhJ11bJ2N1cnJlbnRWYWx1ZSddO1xuICAgICAgaWYgKHRoaXMuc2VhcmNoVGVybSkge1xuICAgICAgICBpZiAodGhpcy5zZWFyY2hUZXJtLmxlbmd0aCA+IDApIHtcblxuICAgICAgICAgIHRoaXMuZGF0YSA9IHRoaXMudXRpbHMuZ2V0U2VhcmNoUmVzdWx0cyhjaGFuZ2VzWydkYXRhJ11bJ2N1cnJlbnRWYWx1ZSddLCB0aGlzLnNlYXJjaFRlcm0pO1xuICAgICAgICAgIHRoaXMuZmlsdGVyTGlzdCA9IHRoaXMuZGF0YTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmZpbHRlckxpc3QgPSBjaGFuZ2VzWydkYXRhJ11bJ2N1cnJlbnRWYWx1ZSddO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLnR5cGUgPT09ICdqb2Jjb2RlJykge1xuICAgICAgICB0aGlzLmxvYWRlciA9IHRydWU7IHRoaXMuY2xlYXJMaXN0KCk7XG4gICAgICAgIGlmICh0aGlzLmZpbHRlckxpc3QubGVuZ3RoID09PSAwKSB0aGlzLmxvYWRlciA9IGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy50eXBlICE9PSAnam9iY29kZScpIHtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2RhdGEnXVsncHJldmlvdXNWYWx1ZSddICYmIHRoaXMuY3VycmVudE5hdiA9PT0gJ2FkZEZvcm0nKSB7XG4gICAgICAgICAgY29uc3QgYWN0aXZlUm91dGUgPSBjaGFuZ2VzWydkYXRhJ11bJ3ByZXZpb3VzVmFsdWUnXS5maW5kKChlbGU6IFJvdXRlKSA9PiBlbGUuaXNBY3RpdmUpO1xuICAgICAgICAgIGlmIChhY3RpdmVSb3V0ZSkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpdGVtLnJvdXRlX2lkID09PSBhY3RpdmVSb3V0ZS5yb3V0ZV9pZCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uaXNBY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZXNbJ2RhdGEnXVsncHJldmlvdXNWYWx1ZSddICYmIHRoaXMuY3VycmVudE5hdiAhPT0gJ2FkZEZvcm0nKSB7XG4gICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKGNoYW5nZXNbJ2RhdGEnXVsncHJldmlvdXNWYWx1ZSddKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlLmNsZWFyKCk7XG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMuY3VycmVudE5hdiAhPT0gJ2FkZEZvcm0nKSB7XG4gICAgICAgIGNoYW5nZXNbJ2RhdGEnXVsnY3VycmVudFZhbHVlJ10uZm9yRWFjaCgoZWxlOiBSb3V0ZSwgaW5kZXhGb3JEYXRhOiBudW1iZXIpID0+IHtcbiAgICAgICAgICBjb25zdCBpZCA9IChlbGVbJ2pvYl9pZCddID8gZWxlWydqb2JfaWQnXSA6IGVsZVsncm91dGVfaWQnXSlcbiAgICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGVsZSwgaWQsIHRoaXMudHlwZSwgZmFsc2UsIChpbmRleEZvckRhdGEgPT09ICh0aGlzLmRhdGEubGVuZ3RoIC0gMSkpKS50aGVuKChyZXMpID0+IHtcbiAgICAgICAgICAgIGlmIChpbmRleEZvckRhdGEgPT09ICh0aGlzLmRhdGEubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snc2VhcmNoVGVybSddKSB7XG4gICAgICBpZiAodGhpcy5maWx0ZXJMaXN0KSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IHRoaXMuZmlsdGVyTGlzdDtcbiAgICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlYXJjaFRlcm0nXVsnY3VycmVudFZhbHVlJ10ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICB0aGlzLmRhdGEgPSB0aGlzLnV0aWxzLmdldFNlYXJjaFJlc3VsdHModGhpcy5kYXRhLCBjaGFuZ2VzWydzZWFyY2hUZXJtJ11bJ2N1cnJlbnRWYWx1ZSddKTtcbiAgICAgICAgfSBlbHNlIHsgdGhpcy5kYXRhID0gdGhpcy5maWx0ZXJMaXN0OyB9XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY29vbE1hcC5jbGVhckJvdW5kV2l0aENvcmRpbmF0ZXMoKTtcbiAgICAgICAgICBpZiAodGhpcy5jdXJyZW50TmF2ICE9PSAnYWRkRm9ybScgJiYgIXRoaXMuc2VsZWN0ZWRSb3V0ZVsnc2VsZWN0ZWQnXS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcigxKTtcbiAgICAgICAgICAgIHRoaXMudG9nZ2xlRmlsdGVyUm91dGUodGhpcy5maWx0ZXJMaXN0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDUwMCk7XG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnROYXYgIT09ICdhZGRGb3JtJyAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ10ubGVuZ3RoKSB7XG4gICAgICAgICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5jbGVhckxpc3QoKTtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJKb2JEZXRhaWxzRnJvbUxpc3QuZW1pdCh0cnVlKVxuICAgICAgICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZUpvYkZyb21NYXAodGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoZWxlLCBpbmRleEZvckRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKGVsZSwgZWxlWydqb2JfaWQnXSwgdGhpcy50eXBlLCBmYWxzZSwgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgaWYgKGluZGV4Rm9yRGF0YSA9PT0gKHRoaXMuZGF0YS5sZW5ndGggLSAxKSkgeyB0aGlzLmxvYWRlciA9IGZhbHNlOyB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKSB9XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvdXRlWydzZWxlY3RlZCddLmxlbmd0aCAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ11bMF1bJ2pvYl9pZCddID09PSBlbGVbJ2pvYl9pZCddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9LCA1MDApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBzaG93Um91dGUoKSB7XG4gICAgdGhpcy51dGlscy5wcmV2ZW50bmF2Q2hhbmdlLm5leHQoZmFsc2UpO1xuICAgIHRoaXMubG9hZGVyID0gdHJ1ZTsgdGhpcy5jbGVhckxpc3QoKTtcbiAgICB0aGlzLnNob3dBbGxSb3V0ZS5lbWl0KHRydWUpO1xuICAgIGlmICh0aGlzLmZpbHRlckxpc3QgJiYgdGhpcy5maWx0ZXJMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZCk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJMaXN0LmZvckVhY2goKGVsZSwgaW5kZXhGb3JEYXRhKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb29sTWFwLnBsb3RSb3V0ZShlbGUsIGVsZVsnam9iX2lkJ10sIHRoaXMudHlwZSwgZmFsc2UsIChpbmRleEZvckRhdGEgPT09IHRoaXMuZmlsdGVyTGlzdC5sZW5ndGggLSAxKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaW5kZXhGb3JEYXRhID09PSB0aGlzLmZpbHRlckxpc3QubGVuZ3RoIC0gMSkgeyB0aGlzLmxvYWRlciA9IGZhbHNlOyB0aGlzLnV0aWxzLnByZXZlbnRuYXZDaGFuZ2UubmV4dCh0cnVlKSB9XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvdXRlWydzZWxlY3RlZCddLmxlbmd0aCAmJiB0aGlzLnNlbGVjdGVkUm91dGVbJ3NlbGVjdGVkJ11bMF1bJ2pvYl9pZCddID09PSBlbGVbJ2pvYl9pZCddKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KVxuICAgICAgfSwgNTAwKTtcbiAgICB9XG4gIH1cbiAgdG9nZ2xlRHJpdmVybWVudShldmVudDogYW55KSB7XG4gICAgY29uc3QgbW91c2Vldm50VHlwZSA9IGV2ZW50Lm1vdXNlZXZudFR5cGU7IGxldCByb3V0ZSA9IGV2ZW50LnJvdXRlO1xuICAgIGNvbnN0IGlzSG92ZXJPdXQgPSBldmVudC5pc0hvdmVyT3V0O1xuICAgIGlmKHR5cGVvZihtb3VzZWV2bnRUeXBlKSA9PT0gJ3N0cmluZycpIHtpZih0aGlzLnByZXZlbnRNb3VzZW91dCl7dGhpcy5pc0RyaXZlckxpc3QgPSAhdGhpcy5pc0RyaXZlckxpc3R9OyB0aGlzLnByZXZlbnRNb3VzZW91dCA9IHRydWV9XG4gICAgaWYgKHR5cGVvZihtb3VzZWV2bnRUeXBlKSA9PT0gJ2Jvb2xlYW4nICYmIW1vdXNlZXZudFR5cGUgJiYgIXRoaXMucHJldmVudE1vdXNlb3V0KSB7IHRoaXMuaXNEcml2ZXJMaXN0ID0gbW91c2Vldm50VHlwZSB9O1xuICAgIGlmICh0eXBlb2YobW91c2Vldm50VHlwZSkgPT09ICdib29sZWFuJyAmJiBtb3VzZWV2bnRUeXBlICYmICF0aGlzLnByZXZlbnRNb3VzZW91dCkgeyB0aGlzLmlzRHJpdmVyTGlzdCA9IG1vdXNlZXZudFR5cGUgfTtcbiAgICBpZih0aGlzLnByZXZlbnRNb3VzZW91dCAmJiAhdGhpcy5pc0RyaXZlckxpc3QpIHRoaXMucHJldmVudE1vdXNlb3V0ID0gZmFsc2U7XG4gICAgaWYgKGlzSG92ZXJPdXQpIHtcbiAgICAgIGlmICh0aGlzLnByZXZlbnRNb3VzZW91dCkge1xuICAgICAgICByb3V0ZSA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdkcml2ZXItZGV0YWlscycpO1xuICAgICAgICB0aGlzLmRyaXZlckxpc3QgPSByb3V0ZTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wcmV2ZW50TW91c2VvdXQpIHtcbiAgICAgICAgdGhpcy5kcml2ZXJMaXN0ID0gcm91dGVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kcml2ZXJMaXN0ID0gcm91dGVcbiAgICB9XG4gIH1cbiAgdmlzaWJsZXNlY3Rpb24odmFsdWU6IHN0cmluZykgeyBpZiAodGhpcy50eXBlID09PSB2YWx1ZSkgeyByZXR1cm4gdHJ1ZSB9IGVsc2UgcmV0dXJuIGZhbHNlIH1cbiAgdG9nZ2xlRmlsdGVyUm91dGUoZmlsdGVyTGlzdDogUm91dGVbXSkge1xuICAgIGZpbHRlckxpc3QuZm9yRWFjaCgoZWxlKSA9PiB7XG4gICAgICBjb25zdCBmaWx0ZXJJdGVtID0gKHRoaXMudHlwZSA9PT0gJ2pvYmNvZGUnKSA/ICdqb2JfaWQnIDogJ3JvdXRlX2lkJztcbiAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhLmZpbmRJbmRleCgoZWxlMSkgPT4geyByZXR1cm4gKGVsZTFbYCR7ZmlsdGVySXRlbX1gXSA9PT0gZWxlW2Ake2ZpbHRlckl0ZW19YF0pIH0pO1xuICAgICAgY29uc3QgaWQgPSAoZWxlWydqb2JfaWQnXSA/IGVsZVsnam9iX2lkJ10gOiBlbGVbJ3JvdXRlX2lkJ10pO1xuICAgICAgaWYgKGlkICYmIGluZGV4IDwgMCkgdGhpcy5jb29sTWFwLmZpbHRlclJvdXRlKGlkLCAnbm9uZScpO1xuICAgICAgaWYgKGlkICYmIGluZGV4ID49IDApIHtcbiAgICAgICAgdGhpcy5kYXRhW2luZGV4XS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNvb2xNYXAuZmlsdGVyUm91dGUoaWQsICd2aXNpYmxlJyk7XG4gICAgICAgIHRoaXMuY29vbE1hcC5leHRlbmRCb3VuZChlbGVbJ3BhdGgnXSwgKGluZGV4ID09PSAodGhpcy5kYXRhLmxlbmd0aCAtIDEpKSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG4gIGNsZWFyTGlzdCgpIHtcbiAgICB0aGlzLmlzRHJpdmVyTGlzdCA9IGZhbHNlOyB0aGlzLmRyaXZlckxpc3QgPSBudWxsOyB0aGlzLnByZXZlbnRNb3VzZW91dCA9IGZhbHNlOyB0aGlzLmlzU21zTGlzdCA9IGZhbHNlO1xuICB9XG4gIHNlbmRNZXNzYWdlKCkge1xuICAgIHRoaXMubWVzc2FnZUxvYWRlciA9IHRydWVcbiAgICBpZiAodGhpcy5kcml2ZXJNZXNzYWdlLnZhbGlkKSB7XG4gICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICBvcmRlcl9udW1iZXI6IHRoaXMuZHJpdmVyTGlzdFsnb3JkZXJfbnVtYmVyJ10sXG4gICAgICAgIGRhdGU6IHRoaXMuZHJpdmVyTGlzdFsnZGF0ZSddLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLmRyaXZlck1lc3NhZ2UudmFsdWUsXG4gICAgICB9XG4gICAgICB0aGlzLnV0aWxzLnBvc3RkYXRhKCdjb29sbWFwL2pvYnNfcmVwb3J0X2NoYXQnLCBkYXRhKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXNbJ2RhdGEnXVsnc3RhdHVzJ10gPT09ICdTdWNjZXNzLicpIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmRyaXZlck1lc3NhZ2UucmVzZXQoKTtcbiAgICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcignTWVzc2FnZSBTZW50JywgJ3N1Y2Nlc3MnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm1lc3NhZ2VMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnV0aWxzLm9wZW5TbmFja0JhcignTWVzc2FnZSBub3Qgc2VudCcsICdlcnJvcicpO1xuICAgICAgICB9XG4gICAgICB9LCBlcnIgPT4ge2lmKGVycikge3RoaXMubWVzc2FnZUxvYWRlciA9IGZhbHNlfX0pXG4gICAgfVxuIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzY3JvbGxwcnQgYWRkcm91dGVsaXN0XCIgW2NsYXNzLnZpZXdyb3V0ZV09XCJ2aXNpYmxlc2VjdGlvbignYWRkcm91dGUnKVwiXG4gIFtjbGFzcy5qb2JMaXN0XT1cInZpc2libGVzZWN0aW9uKCdqb2Jjb2RlJylcIj5cbiAgPGJ1dHRvbiAoY2xpY2spPVwic2hvd1JvdXRlKClcIiBbZGlzYWJsZWRdPVwibG9hZGVyXCIgKm5nSWY9XCJzZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmxlbmd0aFwiIGNsYXNzPVwic2hvd19yb3V0ZWJ0blwiPlNob3cgYWxsXG4gICAgcm91dGU8L2J1dHRvbj5cbiAgPHBlcmZlY3Qtc2Nyb2xsYmFyIFtjbGFzcy5qb2JzY3JvbGxdPVwidmlzaWJsZXNlY3Rpb24oJ2pvYmNvZGUnKVwiPlxuICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImxvYWRlclwiPjwvbWF0LXNwaW5uZXI+XG4gICAgPHVsICpuZ0lmPVwiIWxvYWRlciAmJiBkYXRhLmxlbmd0aCA+IDBcIj5cbiAgICAgIDxsaSBbY2xhc3MuYWN0aXZlXT1cInJvdXRlWydpc0FjdGl2ZSddICYmIHZpc2libGVzZWN0aW9uKCdhZGRyb3V0ZScpXCIgKm5nRm9yPVwibGV0IHJvdXRlIG9mIGRhdGFcIj5cbiAgICAgICAgPGFwcC1qb2ItY29kZS1saXN0LWNhcmQgKm5nSWY9XCJ2aXNpYmxlc2VjdGlvbignam9iY29kZScpXCIgKHRvZ2dsZURyaXZlcm1lbnUpPVwidG9nZ2xlRHJpdmVybWVudSgkZXZlbnQpXCJcbiAgICAgICAgICAocm91dGVTZWxldGlvbik9XCJzZWxlY3RSb3V0ZSgkZXZlbnQpXCIgW3ByZXZlbnRDbG9zZURldGFpbHNdPVwicHJldmVudERldGFpbHNDbG9zZVwiIFtlbWl0Sm9iZGV0YWlsc109XCJ7ZW1pdHJvdXRlLCBjbGVhckpvYkRldGFpbHNGcm9tTGlzdH1cIiBbcm91dGVdPVwiY2hlY2tyb3V0ZXMocm91dGUpXCI+PC9hcHAtam9iLWNvZGUtbGlzdC1jYXJkPlxuICAgICAgICA8YXBwLXZpZXctcm91dGUtbGlzdC1jYXJkIFtlbWl0cm91dGVldmVudF09XCJlbWl0cm91dGVcIiAqbmdJZj1cInZpc2libGVzZWN0aW9uKCdhZGRyb3V0ZScpXCJcbiAgICAgICAgICBbcm91dGVdPVwicm91dGVcIj48L2FwcC12aWV3LXJvdXRlLWxpc3QtY2FyZD5cbiAgICAgIDwvbGk+XG4gICAgPC91bD5cbiAgICA8cCAqbmdJZj1cIiFsb2FkZXIgJiYgZGF0YS5sZW5ndGggPT09IDBcIj57e3Zpc2libGVzZWN0aW9uKCdhZGRyb3V0ZScpID8gJ05vIFJvdXRlIGZvdW5kJyA6ICdObyBKb2IgY29kZSBmb3VuZC4nfX08L3A+XG4gIDwvcGVyZmVjdC1zY3JvbGxiYXI+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cImRyaXZlcl9saXN0XCIgKm5nSWY9XCJpc0RyaXZlckxpc3RcIj5cbiAgPGRpdiBjbGFzcz1cImRyaXZlcl9oZWFkaW5ncHJ0XCI+XG4gICAgPGgyPkRyaXZlciBMaXN0PC9oMj5cbiAgICA8YnV0dG9uICpuZ0lmPVwiZHJpdmVyTGlzdC5kcml2ZXJfbGlzdD8ubGVuZ3RoID4gMFwiIChjbGljayk9XCJpc1Ntc0xpc3QgPSB0cnVlXCI+U01TPC9idXR0b24+XG4gICAgPGRpdiBjbGFzcz1cImNsb3NlYnRuXCIgKGNsaWNrKT1cImlzRHJpdmVyTGlzdCA9IGZhbHNlOyBwcmV2ZW50TW91c2VvdXQgPSBmYWxzZTsgaXNTbXNMaXN0ID0gZmFsc2VcIj5cbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8dWwgY2xhc3M9XCJkcml2ZXJMaXN0XCIgKm5nSWY9XCJkcml2ZXJMaXN0ICYmIGRyaXZlckxpc3QuZHJpdmVyX2xpc3RcIj5cbiAgICA8bGkgKm5nRm9yPVwibGV0IGRyaXZlciBvZiBkcml2ZXJMaXN0Py5kcml2ZXJfbGlzdFwiPlxuICAgICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL2RyaXZlcl9pY29uLnBuZ1wiIFthbHRdPVwiZHJpdmVyWydkcml2ZXJfbmFtZSddXCIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJkcml2ZXJfZGV0YWlsXCI+XG4gICAgICAgIDxiPnt7ZHJpdmVyWydkcml2ZXJfbmFtZSddfX08L2I+IDxzcGFuPnt7ZHJpdmVyWyd0cnVja2luZ19jb21wYW55J119fTwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRfZGVsXCI+XG4gICAgICAgICAgPHNtYWxsPkRyaXZlciBjb250YWN0OiA8Yj57e2RyaXZlclsnZHJpdmVyX3Bob25lJ10gPyBkcml2ZXJbJ2RyaXZlcl9waG9uZSddIDogJ04vQSd9fTwvYj48L3NtYWxsPlxuICAgICAgICAgIDxzbWFsbD5Db21wYW55IGNvbnRhY3Q6IDxiPnt7ZHJpdmVyWyd0cnVja2luZ19jb21wYW55X3Bob25lJ10gPyBkcml2ZXJbJ3RydWNraW5nX2NvbXBhbnlfcGhvbmUnXSA6ICdOL0EnfX08L2I+PC9zbWFsbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xpPlxuICAgIDxwICpuZ0lmPVwiZHJpdmVyTGlzdC5kcml2ZXJfbGlzdD8ubGVuZ3RoID09PSAwXCIgc3R5bGU9XCJmb250LXdlaWdodDo3MDA7IHRleHQtYWxpZ246Y2VudGVyO1wiPlxuICAgICAgTm8gRHJpdmVyIGZvdW5kXG4gICAgPC9wPlxuICA8L3VsPlxuICA8ZGl2IGNsYXNzPVwic21zbGlzdFwiICpuZ0lmPVwiaXNTbXNMaXN0XCI+XG4gICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5cbiAgICAgIDxoMj5TTVMgQWxsIERyaXZlcnM8L2gyPlxuICAgICAgPGRpdiBjbGFzcz1cImNsb3NlYnRuXCIgKGNsaWNrKT1cImlzU21zTGlzdCA9IGZhbHNlXCI+XG4gICAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGV0YWlscHJ0XCI+XG4gICAgICA8YXBwLXNtcy1jYXJkLWRldGFpbHMtb3ZlcnZpZXcgW2pvYlZhbHVlXT1cImRyaXZlckxpc3RcIj48L2FwcC1zbXMtY2FyZC1kZXRhaWxzLW92ZXJ2aWV3PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm1faW5wdXRcIj5cbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwiZXhhbXBsZS1mdWxsLXdpZHRoXCI+XG4gICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHBsYWNlaG9sZGVyPVwiVGV4dCBoZXJlLi4uXCIgYXV0b2NvbXBsZXRlPVwibm9wZVwiIGNvbHVtbj1cIjEwXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJkcml2ZXJNZXNzYWdlXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICA8bWF0LWhpbnQ+e3tkcml2ZXJNZXNzYWdlLnZhbHVlPy5sZW5ndGh9fSAvIDI1NjwvbWF0LWhpbnQ+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCIhbWVzc2FnZUxvYWRlclwiIFtkaXNhYmxlZF09XCIhZHJpdmVyTWVzc2FnZS52YWx1ZSB8fCBkcml2ZXJNZXNzYWdlLmludmFsaWRcIiAoY2xpY2spPVwic2VuZE1lc3NhZ2UoKVwiPlxuICAgICAgICAgIFNlbmQgU01TXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImxvYWRlclwiPlxuICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwibWVzc2FnZUxvYWRlclwiPjwvbWF0LXNwaW5uZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|