@aggdirect/coolmap 2.4.4 → 2.4.6
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 +57 -57
- package/esm2020/aggdirect-coolmap.mjs +4 -4
- package/esm2020/lib/component/add-route/add-route.component.mjs +327 -327
- package/esm2020/lib/component/job-code/job-code.component.mjs +180 -180
- package/esm2020/lib/component/map/map.component.mjs +37 -37
- package/esm2020/lib/component/nav/layout/add-route-nav/add-route-nav.component.mjs +145 -145
- package/esm2020/lib/component/nav/layout/job-code-nav/job-code-nav.component.mjs +114 -114
- package/esm2020/lib/component/nav/nav.component.mjs +52 -52
- package/esm2020/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.mjs +72 -72
- package/esm2020/lib/component/route-jobcode-list/route-jobcode-list.component.mjs +314 -314
- package/esm2020/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.mjs +19 -19
- package/esm2020/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.mjs +33 -33
- package/esm2020/lib/component/shared/dialog/dialog.component.mjs +29 -29
- package/esm2020/lib/component/shared/estimation-display/estimation-display.component.mjs +19 -19
- package/esm2020/lib/component/shared/job-route-list/job-route-list.component.mjs +71 -71
- package/esm2020/lib/component/shared/jobcode-overview/jobcode-overview.component.mjs +24 -24
- package/esm2020/lib/component/shared/jobcode-status/jobcode-status.component.mjs +14 -14
- package/esm2020/lib/component/shared/route-info-card/route-info-card.component.mjs +46 -46
- package/esm2020/lib/coolmap.module.mjs +185 -185
- package/esm2020/public-api.mjs +19 -19
- package/fesm2015/aggdirect-coolmap.mjs +1512 -1512
- package/fesm2015/aggdirect-coolmap.mjs.map +1 -1
- package/fesm2020/aggdirect-coolmap.mjs +1474 -1474
- package/fesm2020/aggdirect-coolmap.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/component/add-route/add-route.component.d.ts +61 -61
- package/lib/component/job-code/job-code.component.d.ts +42 -42
- package/lib/component/map/map.component.d.ts +15 -15
- package/lib/component/nav/layout/add-route-nav/add-route-nav.component.d.ts +49 -49
- package/lib/component/nav/layout/job-code-nav/job-code-nav.component.d.ts +42 -42
- package/lib/component/nav/nav.component.d.ts +31 -31
- package/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.d.ts +20 -20
- package/lib/component/route-jobcode-list/route-jobcode-list.component.d.ts +42 -42
- package/lib/component/route-jobcode-list/sms-card-details-overview/sms-card-details-overview.component.d.ts +9 -9
- package/lib/component/route-jobcode-list/view-route-list-card/view-route-list-card.component.d.ts +12 -12
- package/lib/component/shared/dialog/dialog.component.d.ts +13 -13
- package/lib/component/shared/estimation-display/estimation-display.component.d.ts +8 -8
- package/lib/component/shared/job-route-list/job-route-list.component.d.ts +26 -26
- package/lib/component/shared/jobcode-overview/jobcode-overview.component.d.ts +10 -10
- package/lib/component/shared/jobcode-status/jobcode-status.component.d.ts +7 -7
- package/lib/component/shared/route-info-card/route-info-card.component.d.ts +31 -31
- package/lib/coolmap.module.d.ts +44 -44
- package/package.json +1 -1
- package/public-api.d.ts +15 -15
package/esm2020/lib/component/route-jobcode-list/job-code-list-card/job-code-list-card.component.mjs
CHANGED
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
import { Component, EventEmitter, Input, Output, Inject } 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, config) {
|
|
8
|
-
this.utils = utils;
|
|
9
|
-
this.config = config;
|
|
10
|
-
this.routeSeletion = new EventEmitter();
|
|
11
|
-
this.toggleDrivermenu = new EventEmitter();
|
|
12
|
-
}
|
|
13
|
-
selectRoute(route) { this.routeSeletion.emit(route); }
|
|
14
|
-
toggleDriverlist(mouseevntType, route, isHoverOut) {
|
|
15
|
-
const data = { mouseevntType, route, isHoverOut };
|
|
16
|
-
this.toggleDrivermenu.emit(data);
|
|
17
|
-
if (mouseevntType === 'click')
|
|
18
|
-
this.utils.setdictValue('driver-details', JSON.stringify(this.route));
|
|
19
|
-
}
|
|
20
|
-
toggleJobCodeDetails(mouseEventType, route) {
|
|
21
|
-
if (mouseEventType) {
|
|
22
|
-
route['type'] = 'jobcode';
|
|
23
|
-
this.emitJobdetails.emitroute.emit(route);
|
|
24
|
-
}
|
|
25
|
-
else if (!mouseEventType && this.preventCloseDetails) {
|
|
26
|
-
route = this.utils.getdictValue('route-details');
|
|
27
|
-
route['type'] = 'jobcode';
|
|
28
|
-
this.emitJobdetails.emitroute.emit(route);
|
|
29
|
-
}
|
|
30
|
-
else if (!mouseEventType && !this.preventCloseDetails)
|
|
31
|
-
this.emitJobdetails.clearJobDetailsFromList.emit(true);
|
|
32
|
-
}
|
|
33
|
-
calculateStatusPercentage(type, route) {
|
|
34
|
-
const total = route['Done'] + route['Ongoing'] + route['Open'];
|
|
35
|
-
if (type === 'done') {
|
|
36
|
-
return Math.round((100 * route['Done']) / total);
|
|
37
|
-
}
|
|
38
|
-
else if (type === 'ongoing') {
|
|
39
|
-
return Math.round((100 * route['Ongoing']) / total);
|
|
40
|
-
}
|
|
41
|
-
else if (type === 'open') {
|
|
42
|
-
return Math.round((100 * route['Open']) / total);
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
setRouteItem() {
|
|
49
|
-
this.utils.preVentJobdetailclose.next(true);
|
|
50
|
-
this.utils.setdictValue('route-details', JSON.stringify(this.route));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
JobCodeListCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeListCardComponent, deps: [{ token: i1.UtilsService }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
-
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\" *ngIf=\"config.repository !== 'customer'\" (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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
55
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeListCardComponent, decorators: [{
|
|
56
|
-
type: Component,
|
|
57
|
-
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\" *ngIf=\"config.repository !== 'customer'\" (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"] }]
|
|
58
|
-
}], ctorParameters: function () { return [{ type: i1.UtilsService }, { type: i1.CoolmapConfigModel, decorators: [{
|
|
59
|
-
type: Inject,
|
|
60
|
-
args: ['memberData']
|
|
61
|
-
}] }]; }, propDecorators: { route: [{
|
|
62
|
-
type: Input
|
|
63
|
-
}], routeSeletion: [{
|
|
64
|
-
type: Output
|
|
65
|
-
}], toggleDrivermenu: [{
|
|
66
|
-
type: Output
|
|
67
|
-
}], emitJobdetails: [{
|
|
68
|
-
type: Input
|
|
69
|
-
}], preventCloseDetails: [{
|
|
70
|
-
type: Input
|
|
71
|
-
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, EventEmitter, Input, Output, Inject } 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, config) {
|
|
8
|
+
this.utils = utils;
|
|
9
|
+
this.config = config;
|
|
10
|
+
this.routeSeletion = new EventEmitter();
|
|
11
|
+
this.toggleDrivermenu = new EventEmitter();
|
|
12
|
+
}
|
|
13
|
+
selectRoute(route) { this.routeSeletion.emit(route); }
|
|
14
|
+
toggleDriverlist(mouseevntType, route, isHoverOut) {
|
|
15
|
+
const data = { mouseevntType, route, isHoverOut };
|
|
16
|
+
this.toggleDrivermenu.emit(data);
|
|
17
|
+
if (mouseevntType === 'click')
|
|
18
|
+
this.utils.setdictValue('driver-details', JSON.stringify(this.route));
|
|
19
|
+
}
|
|
20
|
+
toggleJobCodeDetails(mouseEventType, route) {
|
|
21
|
+
if (mouseEventType) {
|
|
22
|
+
route['type'] = 'jobcode';
|
|
23
|
+
this.emitJobdetails.emitroute.emit(route);
|
|
24
|
+
}
|
|
25
|
+
else if (!mouseEventType && this.preventCloseDetails) {
|
|
26
|
+
route = this.utils.getdictValue('route-details');
|
|
27
|
+
route['type'] = 'jobcode';
|
|
28
|
+
this.emitJobdetails.emitroute.emit(route);
|
|
29
|
+
}
|
|
30
|
+
else if (!mouseEventType && !this.preventCloseDetails)
|
|
31
|
+
this.emitJobdetails.clearJobDetailsFromList.emit(true);
|
|
32
|
+
}
|
|
33
|
+
calculateStatusPercentage(type, route) {
|
|
34
|
+
const total = route['Done'] + route['Ongoing'] + route['Open'];
|
|
35
|
+
if (type === 'done') {
|
|
36
|
+
return Math.round((100 * route['Done']) / total);
|
|
37
|
+
}
|
|
38
|
+
else if (type === 'ongoing') {
|
|
39
|
+
return Math.round((100 * route['Ongoing']) / total);
|
|
40
|
+
}
|
|
41
|
+
else if (type === 'open') {
|
|
42
|
+
return Math.round((100 * route['Open']) / total);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
setRouteItem() {
|
|
49
|
+
this.utils.preVentJobdetailclose.next(true);
|
|
50
|
+
this.utils.setdictValue('route-details', JSON.stringify(this.route));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
JobCodeListCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeListCardComponent, deps: [{ token: i1.UtilsService }, { token: 'memberData' }], target: i0.ɵɵFactoryTarget.Component });
|
|
54
|
+
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\">\r\n <div class=\"inputarea\">\r\n <input type=\"checkbox\" name=\"selectroute\" [checked]=\"route['isSelected']\" (change)=\"$event ? selectRoute(route) : null\" />\r\n <label> </label>\r\n <div class=\"border\"></div>\r\n </div>\r\n <div class=\"job_intro\">\r\n <div class=\"heading\">\r\n <h2>\r\n {{route['order_number'] ? route['order_number'] : ''}}\r\n </h2>\r\n |\r\n <span>\r\n {{route['customer_name']}}\r\n </span>\r\n |\r\n <span>\r\n {{route['project']}}\r\n </span>\r\n </div>\r\n <div class=\"destinationprt\">\r\n <span style=\"padding-left: 0;\">\r\n {{route['pickup_location']}}\r\n </span>\r\n <b>></b>\r\n <span>\r\n {{route['delivery_location']}}\r\n </span>\r\n </div>\r\n <div class=\"mat_cat\">\r\n <span>\r\n {{route['material']}}\r\n </span>\r\n </div>\r\n\r\n <div class=\"statusbar\">\r\n <div class=\"status_percent\">\r\n <span class=\"done\" [style]=\"'width:'+calculateStatusPercentage('done',route['values'])+'%'\"></span>\r\n <span class=\"ongoing\" [style]=\"'width:'+calculateStatusPercentage('ongoing', route['values'])+'%'\"> </span>\r\n <span class=\"open\" [style]=\"'width:'+calculateStatusPercentage('open', route['values'])+'%'\"> </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"statusarea\">\r\n <div class=\"statusunit\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\r\n <div class=\"driver_icon\" *ngIf=\"config.repository !== 'customer'\" (mouseover)=\"toggleDriverlist(true, route)\" (mouseout)=\"toggleDriverlist(false, route, true)\"\r\n mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Click on icon to show the driver list\" matTooltipPosition=\"above\"\r\n (click)=\"toggleDriverlist('click', route)\">\r\n <img src=\"assets/images/driver_icon.png\" [alt]=\"\" />\r\n </div>\r\n <div class=\"infoicon\" (click)=\"setRouteItem()\" (mouseover)=\"toggleJobCodeDetails(true, route)\"\r\n (mouseout)=\"toggleJobCodeDetails(false, route)\">\r\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\r\n </div>\r\n </div>\r\n</div>\r\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: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }] });
|
|
55
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: JobCodeListCardComponent, decorators: [{
|
|
56
|
+
type: Component,
|
|
57
|
+
args: [{ selector: 'app-job-code-list-card', template: "<div class=\"innerbox\">\r\n <div class=\"inputarea\">\r\n <input type=\"checkbox\" name=\"selectroute\" [checked]=\"route['isSelected']\" (change)=\"$event ? selectRoute(route) : null\" />\r\n <label> </label>\r\n <div class=\"border\"></div>\r\n </div>\r\n <div class=\"job_intro\">\r\n <div class=\"heading\">\r\n <h2>\r\n {{route['order_number'] ? route['order_number'] : ''}}\r\n </h2>\r\n |\r\n <span>\r\n {{route['customer_name']}}\r\n </span>\r\n |\r\n <span>\r\n {{route['project']}}\r\n </span>\r\n </div>\r\n <div class=\"destinationprt\">\r\n <span style=\"padding-left: 0;\">\r\n {{route['pickup_location']}}\r\n </span>\r\n <b>></b>\r\n <span>\r\n {{route['delivery_location']}}\r\n </span>\r\n </div>\r\n <div class=\"mat_cat\">\r\n <span>\r\n {{route['material']}}\r\n </span>\r\n </div>\r\n\r\n <div class=\"statusbar\">\r\n <div class=\"status_percent\">\r\n <span class=\"done\" [style]=\"'width:'+calculateStatusPercentage('done',route['values'])+'%'\"></span>\r\n <span class=\"ongoing\" [style]=\"'width:'+calculateStatusPercentage('ongoing', route['values'])+'%'\"> </span>\r\n <span class=\"open\" [style]=\"'width:'+calculateStatusPercentage('open', route['values'])+'%'\"> </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"statusarea\">\r\n <div class=\"statusunit\" [ngClass]=\"route['unit']\">{{route['unit']}}</div>\r\n <div class=\"driver_icon\" *ngIf=\"config.repository !== 'customer'\" (mouseover)=\"toggleDriverlist(true, route)\" (mouseout)=\"toggleDriverlist(false, route, true)\"\r\n mat-raised-button #tooltip=\"matTooltip\" matTooltip=\"Click on icon to show the driver list\" matTooltipPosition=\"above\"\r\n (click)=\"toggleDriverlist('click', route)\">\r\n <img src=\"assets/images/driver_icon.png\" [alt]=\"\" />\r\n </div>\r\n <div class=\"infoicon\" (click)=\"setRouteItem()\" (mouseover)=\"toggleJobCodeDetails(true, route)\"\r\n (mouseout)=\"toggleJobCodeDetails(false, route)\">\r\n <img src=\"assets/images/info_icon.png\" [alt]=\"\" />\r\n </div>\r\n </div>\r\n</div>\r\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"] }]
|
|
58
|
+
}], ctorParameters: function () { return [{ type: i1.UtilsService }, { type: i1.CoolmapConfigModel, decorators: [{
|
|
59
|
+
type: Inject,
|
|
60
|
+
args: ['memberData']
|
|
61
|
+
}] }]; }, propDecorators: { route: [{
|
|
62
|
+
type: Input
|
|
63
|
+
}], routeSeletion: [{
|
|
64
|
+
type: Output
|
|
65
|
+
}], toggleDrivermenu: [{
|
|
66
|
+
type: Output
|
|
67
|
+
}], emitJobdetails: [{
|
|
68
|
+
type: Input
|
|
69
|
+
}], preventCloseDetails: [{
|
|
70
|
+
type: Input
|
|
71
|
+
}] } });
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUtbGlzdC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvcm91dGUtam9iY29kZS1saXN0L2pvYi1jb2RlLWxpc3QtY2FyZC9qb2ItY29kZS1saXN0LWNhcmQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9yb3V0ZS1qb2Jjb2RlLWxpc3Qvam9iLWNvZGUtbGlzdC1jYXJkL2pvYi1jb2RlLWxpc3QtY2FyZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFRL0UsTUFBTSxPQUFPLHdCQUF3QjtJQU1uQyxZQUFtQixLQUFtQixFQUNQLE1BQTBCO1FBRHRDLFVBQUssR0FBTCxLQUFLLENBQWM7UUFDUCxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUx4QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUlNLENBQUM7SUFFOUQsV0FBVyxDQUFDLEtBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQSxDQUFDLENBQUM7SUFDNUQsZ0JBQWdCLENBQUMsYUFBK0IsRUFBRSxLQUFZLEVBQUUsVUFBb0I7UUFDbEYsTUFBTSxJQUFJLEdBQUcsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFBO1FBQ2pELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSSxhQUFhLEtBQUssT0FBTztZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdkcsQ0FBQztJQUNELG9CQUFvQixDQUFDLGNBQXVCLEVBQUUsS0FBWTtRQUN4RCxJQUFJLGNBQWMsRUFBRTtZQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxTQUFTLENBQUM7WUFBQyxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUE7U0FBRTthQUN2RixJQUFHLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBQztZQUNsRCxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDakQsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLFNBQVMsQ0FBQztZQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtTQUNwRTthQUNHLElBQUksQ0FBQyxjQUFjLElBQUksQ0FBQyxJQUFJLENBQUMsbUJBQW1CO1lBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEgsQ0FBQztJQUNELHlCQUF5QixDQUFDLElBQVksRUFBRSxLQUFVO1FBQ2hELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9ELElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtTQUFFO2FBQ3BFLElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtTQUFFO2FBQy9FLElBQUksSUFBSSxLQUFLLE1BQU0sRUFBRTtZQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQTtTQUFFO2FBQ3pFO1lBQUUsT0FBTyxJQUFJLENBQUE7U0FBRTtJQUN0QixDQUFDO0lBQ0QsWUFBWTtRQUNWLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7O3FIQWpDVSx3QkFBd0IsOENBT3pCLFlBQVk7eUdBUFgsd0JBQXdCLDJQQ1JyQyx1dEVBd0RBOzJGRGhEYSx3QkFBd0I7a0JBTHBDLFNBQVM7K0JBQ0Usd0JBQXdCOzswQkFXL0IsTUFBTTsyQkFBQyxZQUFZOzRDQU5OLEtBQUs7c0JBQXBCLEtBQUs7Z0JBQ1csYUFBYTtzQkFBN0IsTUFBTTtnQkFDVSxnQkFBZ0I7c0JBQWhDLE1BQU07Z0JBQ1MsY0FBYztzQkFBN0IsS0FBSztnQkFDVSxtQkFBbUI7c0JBQWxDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgSW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvb2xtYXBDb25maWdNb2RlbCwgUm91dGUsIFV0aWxzU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1qb2ItY29kZS1saXN0LWNhcmQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItY29kZS1saXN0LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2pvYi1jb2RlLWxpc3QtY2FyZC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBKb2JDb2RlTGlzdENhcmRDb21wb25lbnQge1xyXG4gIEBJbnB1dCgpIHB1YmxpYyByb3V0ZSE6IFJvdXRlO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgcm91dGVTZWxldGlvbiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHVibGljIHRvZ2dsZURyaXZlcm1lbnUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQElucHV0KCkgcHVibGljIGVtaXRKb2JkZXRhaWxzOiBhbnk7XHJcbiAgQElucHV0KCkgcHVibGljIHByZXZlbnRDbG9zZURldGFpbHMhOiBib29sZWFuO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLFxyXG4gICAgQEluamVjdCgnbWVtYmVyRGF0YScpIHB1YmxpYyBjb25maWc6IENvb2xtYXBDb25maWdNb2RlbCkgeyB9XHJcblxyXG4gIHNlbGVjdFJvdXRlKHJvdXRlOiBSb3V0ZSkgeyB0aGlzLnJvdXRlU2VsZXRpb24uZW1pdChyb3V0ZSkgfVxyXG4gIHRvZ2dsZURyaXZlcmxpc3QobW91c2Vldm50VHlwZTogYm9vbGVhbiB8IHN0cmluZywgcm91dGU6IFJvdXRlLCBpc0hvdmVyT3V0PzogYm9vbGVhbikge1xyXG4gICAgY29uc3QgZGF0YSA9IHsgbW91c2Vldm50VHlwZSwgcm91dGUsIGlzSG92ZXJPdXQgfVxyXG4gICAgdGhpcy50b2dnbGVEcml2ZXJtZW51LmVtaXQoZGF0YSk7XHJcbiAgICBpZiAobW91c2Vldm50VHlwZSA9PT0gJ2NsaWNrJykgdGhpcy51dGlscy5zZXRkaWN0VmFsdWUoJ2RyaXZlci1kZXRhaWxzJywgSlNPTi5zdHJpbmdpZnkodGhpcy5yb3V0ZSkpO1xyXG4gIH1cclxuICB0b2dnbGVKb2JDb2RlRGV0YWlscyhtb3VzZUV2ZW50VHlwZTogYm9vbGVhbiwgcm91dGU6IFJvdXRlKSB7XHJcbiAgICBpZiAobW91c2VFdmVudFR5cGUpIHsgcm91dGVbJ3R5cGUnXSA9ICdqb2Jjb2RlJzsgdGhpcy5lbWl0Sm9iZGV0YWlscy5lbWl0cm91dGUuZW1pdChyb3V0ZSkgfVxyXG4gICAgZWxzZSBpZighbW91c2VFdmVudFR5cGUgJiYgdGhpcy5wcmV2ZW50Q2xvc2VEZXRhaWxzKXtcclxuICAgICAgcm91dGUgPSB0aGlzLnV0aWxzLmdldGRpY3RWYWx1ZSgncm91dGUtZGV0YWlscycpO1xyXG4gICAgICByb3V0ZVsndHlwZSddID0gJ2pvYmNvZGUnOyB0aGlzLmVtaXRKb2JkZXRhaWxzLmVtaXRyb3V0ZS5lbWl0KHJvdXRlKVxyXG4gICAgIH1cclxuICAgIGVsc2UgaWYgKCFtb3VzZUV2ZW50VHlwZSAmJiAhdGhpcy5wcmV2ZW50Q2xvc2VEZXRhaWxzKSB0aGlzLmVtaXRKb2JkZXRhaWxzLmNsZWFySm9iRGV0YWlsc0Zyb21MaXN0LmVtaXQodHJ1ZSk7XHJcbiAgfVxyXG4gIGNhbGN1bGF0ZVN0YXR1c1BlcmNlbnRhZ2UodHlwZTogc3RyaW5nLCByb3V0ZTogYW55KSB7XHJcbiAgICBjb25zdCB0b3RhbCA9IHJvdXRlWydEb25lJ10gKyByb3V0ZVsnT25nb2luZyddICsgcm91dGVbJ09wZW4nXTtcclxuICAgIGlmICh0eXBlID09PSAnZG9uZScpIHsgcmV0dXJuIE1hdGgucm91bmQoKDEwMCAqIHJvdXRlWydEb25lJ10pIC8gdG90YWwpIH1cclxuICAgIGVsc2UgaWYgKHR5cGUgPT09ICdvbmdvaW5nJykgeyByZXR1cm4gTWF0aC5yb3VuZCgoMTAwICogcm91dGVbJ09uZ29pbmcnXSkgLyB0b3RhbCkgfVxyXG4gICAgZWxzZSBpZiAodHlwZSA9PT0gJ29wZW4nKSB7IHJldHVybiBNYXRoLnJvdW5kKCgxMDAgKiByb3V0ZVsnT3BlbiddKSAvIHRvdGFsKSB9XHJcbiAgICBlbHNlIHsgcmV0dXJuIG51bGwgfVxyXG4gIH1cclxuICBzZXRSb3V0ZUl0ZW0oKXtcclxuICAgIHRoaXMudXRpbHMucHJlVmVudEpvYmRldGFpbGNsb3NlLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLnV0aWxzLnNldGRpY3RWYWx1ZSgncm91dGUtZGV0YWlscycsIEpTT04uc3RyaW5naWZ5KHRoaXMucm91dGUpKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImlubmVyYm94XCI+XHJcbiAgPGRpdiBjbGFzcz1cImlucHV0YXJlYVwiPlxyXG4gICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIG5hbWU9XCJzZWxlY3Ryb3V0ZVwiIFtjaGVja2VkXT1cInJvdXRlWydpc1NlbGVjdGVkJ11cIiAoY2hhbmdlKT1cIiRldmVudCA/IHNlbGVjdFJvdXRlKHJvdXRlKSA6IG51bGxcIiAvPlxyXG4gICAgPGxhYmVsPiZuYnNwOzwvbGFiZWw+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyXCI+PC9kaXY+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImpvYl9pbnRyb1wiPlxyXG4gICAgPGRpdiBjbGFzcz1cImhlYWRpbmdcIj5cclxuICAgICAgPGgyPlxyXG4gICAgICAgIHt7cm91dGVbJ29yZGVyX251bWJlciddID8gcm91dGVbJ29yZGVyX251bWJlciddIDogJyd9fVxyXG4gICAgICA8L2gyPlxyXG4gICAgICB8XHJcbiAgICAgIDxzcGFuPlxyXG4gICAgICAgIHt7cm91dGVbJ2N1c3RvbWVyX25hbWUnXX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgfFxyXG4gICAgICA8c3Bhbj5cclxuICAgICAgICB7e3JvdXRlWydwcm9qZWN0J119fVxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJkZXN0aW5hdGlvbnBydFwiPlxyXG4gICAgICA8c3BhbiBzdHlsZT1cInBhZGRpbmctbGVmdDogMDtcIj5cclxuICAgICAgICB7e3JvdXRlWydwaWNrdXBfbG9jYXRpb24nXX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgICAgPGI+PjwvYj5cclxuICAgICAgPHNwYW4+XHJcbiAgICAgICAge3tyb3V0ZVsnZGVsaXZlcnlfbG9jYXRpb24nXX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1hdF9jYXRcIj5cclxuICAgICAgPHNwYW4+XHJcbiAgICAgICAge3tyb3V0ZVsnbWF0ZXJpYWwnXX19XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJzdGF0dXNiYXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0YXR1c19wZXJjZW50XCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJkb25lXCIgW3N0eWxlXT1cIid3aWR0aDonK2NhbGN1bGF0ZVN0YXR1c1BlcmNlbnRhZ2UoJ2RvbmUnLHJvdXRlWyd2YWx1ZXMnXSkrJyUnXCI+PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwib25nb2luZ1wiIFtzdHlsZV09XCInd2lkdGg6JytjYWxjdWxhdGVTdGF0dXNQZXJjZW50YWdlKCdvbmdvaW5nJywgcm91dGVbJ3ZhbHVlcyddKSsnJSdcIj4gPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwib3BlblwiIFtzdHlsZV09XCInd2lkdGg6JytjYWxjdWxhdGVTdGF0dXNQZXJjZW50YWdlKCdvcGVuJywgcm91dGVbJ3ZhbHVlcyddKSsnJSdcIj4gPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJzdGF0dXNhcmVhXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic3RhdHVzdW5pdFwiIFtuZ0NsYXNzXT1cInJvdXRlWyd1bml0J11cIj57e3JvdXRlWyd1bml0J119fTwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImRyaXZlcl9pY29uXCIgKm5nSWY9XCJjb25maWcucmVwb3NpdG9yeSAhPT0gJ2N1c3RvbWVyJ1wiIChtb3VzZW92ZXIpPVwidG9nZ2xlRHJpdmVybGlzdCh0cnVlLCByb3V0ZSlcIiAobW91c2VvdXQpPVwidG9nZ2xlRHJpdmVybGlzdChmYWxzZSwgcm91dGUsIHRydWUpXCJcclxuICAgICAgbWF0LXJhaXNlZC1idXR0b24gI3Rvb2x0aXA9XCJtYXRUb29sdGlwXCIgbWF0VG9vbHRpcD1cIkNsaWNrIG9uIGljb24gdG8gc2hvdyB0aGUgZHJpdmVyIGxpc3RcIiBtYXRUb29sdGlwUG9zaXRpb249XCJhYm92ZVwiXHJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVEcml2ZXJsaXN0KCdjbGljaycsIHJvdXRlKVwiPlxyXG4gICAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvZHJpdmVyX2ljb24ucG5nXCIgW2FsdF09XCJcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mb2ljb25cIiAoY2xpY2spPVwic2V0Um91dGVJdGVtKClcIiAobW91c2VvdmVyKT1cInRvZ2dsZUpvYkNvZGVEZXRhaWxzKHRydWUsIHJvdXRlKVwiXHJcbiAgICAgIChtb3VzZW91dCk9XCJ0b2dnbGVKb2JDb2RlRGV0YWlscyhmYWxzZSwgcm91dGUpXCI+XHJcbiAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2ltYWdlcy9pbmZvX2ljb24ucG5nXCIgW2FsdF09XCJcIiAvPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|