@aggdirect/coolmap 2.0.4 → 2.0.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 +317 -314
- package/esm2020/lib/component/job-code/job-code.component.mjs +118 -118
- package/esm2020/lib/component/map/map.component.mjs +37 -37
- package/esm2020/lib/component/nav/layout/add-route-nav/add-route-nav.component.mjs +87 -87
- package/esm2020/lib/component/nav/layout/job-code-nav/job-code-nav.component.mjs +89 -89
- 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 +68 -68
- 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 +29 -29
- package/esm2020/lib/component/shared/dialog/dialog.component.mjs +29 -29
- 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 +19 -19
- package/esm2020/lib/component/shared/jobcode-status/jobcode-status.component.mjs +14 -14
- package/esm2020/lib/coolmap.component.mjs +15 -15
- package/esm2020/lib/coolmap.module.mjs +178 -178
- package/esm2020/public-api.mjs +20 -20
- package/fesm2015/aggdirect-coolmap.mjs +1285 -1282
- package/fesm2015/aggdirect-coolmap.mjs.map +1 -1
- package/fesm2020/aggdirect-coolmap.mjs +1261 -1258
- package/fesm2020/aggdirect-coolmap.mjs.map +1 -1
- package/index.d.ts +5 -5
- package/lib/component/add-route/add-route.component.d.ts +63 -62
- package/lib/component/job-code/job-code.component.d.ts +32 -32
- package/lib/component/map/map.component.d.ts +15 -15
- package/lib/component/nav/layout/add-route-nav/add-route-nav.component.d.ts +41 -41
- package/lib/component/nav/layout/job-code-nav/job-code-nav.component.d.ts +39 -39
- 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 +19 -19
- 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 +11 -11
- package/lib/component/shared/dialog/dialog.component.d.ts +13 -13
- 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 +9 -9
- package/lib/component/shared/jobcode-status/jobcode-status.component.d.ts +8 -8
- package/lib/coolmap.component.d.ts +8 -8
- package/lib/coolmap.module.d.ts +40 -40
- package/package.json +4 -4
- package/public-api.d.ts +16 -16
|
@@ -1,118 +1,118 @@
|
|
|
1
|
-
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
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/cdk/drag-drop";
|
|
8
|
-
import * as i4 from "@angular/material/icon";
|
|
9
|
-
import * as i5 from "ngx-perfect-scrollbar";
|
|
10
|
-
import * as i6 from "../shared/job-route-list/job-route-list.component";
|
|
11
|
-
import * as i7 from "../shared/jobcode-status/jobcode-status.component";
|
|
12
|
-
import * as i8 from "../shared/jobcode-overview/jobcode-overview.component";
|
|
13
|
-
export class JobCodeComponent {
|
|
14
|
-
constructor(utils, coolMap) {
|
|
15
|
-
this.utils = utils;
|
|
16
|
-
this.coolMap = coolMap;
|
|
17
|
-
this.isVisible = false;
|
|
18
|
-
this.routes = [];
|
|
19
|
-
this.selectedRoute = new SelectionModel(true, []);
|
|
20
|
-
this.clearJobDetails = new EventEmitter();
|
|
21
|
-
this.isOverlapRouteSection = false;
|
|
22
|
-
this.destroyer$ = new Subject();
|
|
23
|
-
this.preventMouseout = false;
|
|
24
|
-
this.utils.clearViewRouteforJobCodeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => {
|
|
25
|
-
if (res)
|
|
26
|
-
this.coolMap.removeJobFromMap(this.selectedRoute.selected);
|
|
27
|
-
this.selectedRoute.clear();
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
ngOnInit() { this.getRouteList(); }
|
|
31
|
-
getRouteList() {
|
|
32
|
-
this.utils.getData('coolmap/routes/all').pipe(takeUntil(this.destroyer$)).subscribe((res) => {
|
|
33
|
-
if (res) {
|
|
34
|
-
this.routes = res.data;
|
|
35
|
-
this.masterRoutes = res.data;
|
|
36
|
-
this.preventListUpdate = false;
|
|
37
|
-
this.utils.clearOptions();
|
|
38
|
-
this.routes.forEach((ele) => { this.utils.makeOptions(ele); });
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
toggleSidemenu() {
|
|
43
|
-
this.isVisible = !this.isVisible;
|
|
44
|
-
this.detailsCardEnable = false;
|
|
45
|
-
this.preventMouseout = false;
|
|
46
|
-
}
|
|
47
|
-
clearJob() { this.clearJobDetails.emit(true); this.utils.preVentJobdetailclose.next(false); }
|
|
48
|
-
selectRoute(event) {
|
|
49
|
-
const i = this.selectedRoute.selected.findIndex(ele => ele['order_number'] === event['order_number']);
|
|
50
|
-
this.selectedRoute.toggle(event);
|
|
51
|
-
if (!this.selectedRoute.isSelected(event) && event['route_id']) {
|
|
52
|
-
this.coolMap.removeRouteAndMarker(event['route_id']).then((res) => {
|
|
53
|
-
this.coolMap.extendReBound();
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
this.coolMap.plotRoute(event, event['route_id'], 'jobrouteList', false, true);
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
masterToggle() {
|
|
61
|
-
if (this.routes.length === this.selectedRoute.selected.length) {
|
|
62
|
-
this.selectedRoute.clear();
|
|
63
|
-
this.routes.forEach(row => {
|
|
64
|
-
this.coolMap.removeRouteAndMarker(row['route_id']).then((res) => { this.coolMap.extendReBound(); });
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
this.routes.forEach(row => {
|
|
69
|
-
this.selectedRoute.select(row);
|
|
70
|
-
this.coolMap.plotRoute(row, row['route_id'], 'jobrouteList', false, true);
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
togglerouteDetails(eventType, route, mouseOut) {
|
|
75
|
-
if (typeof (eventType) === 'string') {
|
|
76
|
-
this.preventMouseout = true;
|
|
77
|
-
this.utils.setdictValue('route-details', JSON.stringify(route));
|
|
78
|
-
}
|
|
79
|
-
if (typeof (eventType) === 'boolean' && eventType && !this.preventMouseout) {
|
|
80
|
-
this.detailsCardEnable = eventType;
|
|
81
|
-
}
|
|
82
|
-
;
|
|
83
|
-
if (typeof (eventType) === 'boolean' && !eventType && !this.preventMouseout) {
|
|
84
|
-
this.detailsCardEnable = eventType;
|
|
85
|
-
}
|
|
86
|
-
;
|
|
87
|
-
if (this.preventMouseout && !this.detailsCardEnable)
|
|
88
|
-
this.preventMouseout = false;
|
|
89
|
-
if (mouseOut) {
|
|
90
|
-
if (this.preventMouseout) {
|
|
91
|
-
route = this.utils.getdictValue('route-details');
|
|
92
|
-
this.routeCardDetail = route;
|
|
93
|
-
}
|
|
94
|
-
if (!this.preventMouseout) {
|
|
95
|
-
this.routeCardDetail = route;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
this.routeCardDetail = route;
|
|
100
|
-
}
|
|
101
|
-
this.routeCardDetail['created_at'] = this.utils.getDateFormat(new Date(this.routeCardDetail['created_at']), '/');
|
|
102
|
-
}
|
|
103
|
-
ngOnDestroy() {
|
|
104
|
-
this.destroyer$.next(true);
|
|
105
|
-
this.destroyer$.unsubscribe();
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
JobCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
109
|
-
JobCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: JobCodeComponent, selector: "app-job-code", inputs: { jobdetail: "jobdetail" }, outputs: { clearJobDetails: "clearJobDetails" }, ngImport: i0, template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <div class=\"topheadingprt\" *ngIf=\"jobdetail['order_number']\">\n <h2>{{jobdetail['order_number']}}</h2>\n </div>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <span> <b> {{jobdetail.customer_name}} </b> Customer </span>\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n\n <perfect-scrollbar>\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label> </label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3>{{list['customer_name']}} | {{list['material']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </perfect-scrollbar>\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>Pickup:</b> {{routeCardDetail?.pickup_location}}</p>\n <p class=\"dropprt\"><b>Delivery:</b> {{routeCardDetail?.delivery_location}} </p>\n </div>\n <span><b>Name:</b> {{routeCardDetail?.route_name}}</span>\n <span><b>Customer:</b> {{routeCardDetail?.customer_name}}</span>\n <span><b>Material:</b> {{routeCardDetail?.material}}</span>\n <span><b>Type:</b> {{routeCardDetail?.unit}}</span>\n <span><b>Distance:</b> {{routeCardDetail?.estimated_distance}}</span>\n <span><b>Travel Time:</b> {{routeCardDetail?.estimated_time}}</span>\n <span class=\"notes\"><b>Notes:</b> {{routeCardDetail?.note}}</span>\n </div>\n\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:10px 20px;border-radius:20px;width:calc(100% - 315px);z-index:999;box-shadow:0 0 5px #0000001a;height:250px;cursor:move}@media (min-width: 1600px){.jobcode_detailprt{left:307px;width:calc(100% - 325px)}}.jobcode_detailprt .topheadingprt .driver_list ul{display:flex;width:450px;justify-content:flex-end}.jobcode_detailprt .topheadingprt .driver_list ul li{position:relative;margin:0 -6px 2px 0;cursor:pointer}.jobcode_detailprt .topheadingprt .driver_list ul li img{width:30px;height:30px;border-radius:100%;border:1px solid #fff}.jobcode_detailprt .topheadingprt .driver_list ul li:hover .driver_detail{display:flex}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail{position:absolute;top:-70px;left:-50px;display:none;will-change:transform;pointer-events:none;border-radius:10px;box-shadow:0 4px 4px #00000024;width:133px;background:white;text-align:center;padding:10px;flex-direction:column;font-size:.8125rem}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:117px;display:block}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail:after{width:0;height:0;border-top:15px solid white;border-left:10px solid transparent;border-right:10px solid transparent;z-index:1;content:\"\";position:absolute;filter:drop-shadow(0px 3px 1px rgba(0,0,0,.2));bottom:-14px;left:50%;transform:translate(-50%)}.jobcode_detailprt .topheadingprt .driver_list ul li.extraicon{background:white;width:30px;height:30px;border-radius:100%;display:flex;justify-content:center;align-items:center;margin:0 0 0 10px;border:1px solid #eee}.jobcode_detailprt .close{position:absolute;top:10px;right:20px;background:#e8e8e8;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.jobcode_detailprt .job_details_area{padding:15px 0}.jobcode_detailprt .job_details_area .detailnameprt{display:flex;justify-content:space-between}.jobcode_detailprt .job_details_area .detailnameprt span{display:flex;flex-direction:column;font-size:.875rem;color:#767676}.jobcode_detailprt .job_details_area .detailnameprt span b{font-size:.9375rem;font-weight:500;color:#000}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span 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}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .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;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.overlap{z-index:9999}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.route_detail .destination .duration{background:#444343;border:1px solid #918e8e;padding:10px;color:#fff}.route_detail .destination .duration b{color:#fff}.route_detail .destination .pickprt:before,.route_detail .destination .dropprt:before{background:#fff}.route_detail .destination .pickprt b:before,.route_detail .destination .dropprt b:before{background:#fff}.route_detail .destination span{line-height:20px;color:#fff;padding:3px 0}.route_detail .destination span b{color:#fff}.route_detail .destination span.notes{max-height:200px;overflow:auto}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{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;position:absolute;top:-7px;left:-11px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.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: i6.JobRouteListComponent, selector: "app-job-route-list", inputs: ["routes", "selectedRoute", "masterRoutes"], outputs: ["changeNav", "changeRoutes", "changeSelectedRoute"] }, { kind: "component", type: i7.JobcodeStatusComponent, selector: "app-jobcode-status", inputs: ["jobValue"] }, { kind: "component", type: i8.JobcodeOverviewComponent, selector: "app-jobcode-overview", inputs: ["jobValue"] }] });
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
111
|
-
type: Component,
|
|
112
|
-
args: [{ selector: 'app-job-code', template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\n <div class=\"topheadingprt\" *ngIf=\"jobdetail['order_number']\">\n <h2>{{jobdetail['order_number']}}</h2>\n </div>\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\n <div class=\"job_details_area\">\n <div class=\"detailnameprt\">\n <span> <b> {{jobdetail.customer_name}} </b> Customer </span>\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\n </div>\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\n </div>\n</div>\n\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\n <img src=\"assets/images/route.svg\" alt=\"\" />\n </div>\n\n <div class=\"listing_box\">\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\n <mat-icon>clear</mat-icon>\n </div>\n\n <div class=\"btnprt\">\n <h2> List of Routes </h2>\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\n </div>\n\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\n\n <perfect-scrollbar>\n <ul *ngIf=\"routes['length'] > 0\">\n <li *ngFor=\"let list of routes\">\n <div class=\"iconprt\">\n <span>\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\n (change)=\"$event ? selectRoute(list) : null\" /><label> </label>\n <div class=\"border\"></div>\n </span>\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\n <div class=\"infoicon\">\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\n </div>\n </div>\n <div class=\"pickprtbox\">\n <h2> {{list['route_name']}} </h2>\n <h3>{{list['customer_name']}} | {{list['material']}}</h3>\n <div class=\"pickdropprt\">\n <div class=\"pickprt\">\n <b>\n <h4>{{list['pickup_location']}}</h4>\n </b>\n </div>\n <div class=\"dropprt\">\n <b>\n <h4>{{list['delivery_location']}}</h4>\n </b>\n </div>\n </div>\n </div>\n </li>\n </ul>\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\n </perfect-scrollbar>\n </div>\n\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\n <mat-icon>clear</mat-icon>\n </div>\n <div class=\"destination\">\n <div class=\"duration\">\n <p class=\"pickprt\"><b>Pickup:</b> {{routeCardDetail?.pickup_location}}</p>\n <p class=\"dropprt\"><b>Delivery:</b> {{routeCardDetail?.delivery_location}} </p>\n </div>\n <span><b>Name:</b> {{routeCardDetail?.route_name}}</span>\n <span><b>Customer:</b> {{routeCardDetail?.customer_name}}</span>\n <span><b>Material:</b> {{routeCardDetail?.material}}</span>\n <span><b>Type:</b> {{routeCardDetail?.unit}}</span>\n <span><b>Distance:</b> {{routeCardDetail?.estimated_distance}}</span>\n <span><b>Travel Time:</b> {{routeCardDetail?.estimated_time}}</span>\n <span class=\"notes\"><b>Notes:</b> {{routeCardDetail?.note}}</span>\n </div>\n\n <div class=\"createTxt\">\n <small>\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\n </small>\n </div>\n </div>\n</div>\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:10px 20px;border-radius:20px;width:calc(100% - 315px);z-index:999;box-shadow:0 0 5px #0000001a;height:250px;cursor:move}@media (min-width: 1600px){.jobcode_detailprt{left:307px;width:calc(100% - 325px)}}.jobcode_detailprt .topheadingprt .driver_list ul{display:flex;width:450px;justify-content:flex-end}.jobcode_detailprt .topheadingprt .driver_list ul li{position:relative;margin:0 -6px 2px 0;cursor:pointer}.jobcode_detailprt .topheadingprt .driver_list ul li img{width:30px;height:30px;border-radius:100%;border:1px solid #fff}.jobcode_detailprt .topheadingprt .driver_list ul li:hover .driver_detail{display:flex}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail{position:absolute;top:-70px;left:-50px;display:none;will-change:transform;pointer-events:none;border-radius:10px;box-shadow:0 4px 4px #00000024;width:133px;background:white;text-align:center;padding:10px;flex-direction:column;font-size:.8125rem}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:117px;display:block}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail:after{width:0;height:0;border-top:15px solid white;border-left:10px solid transparent;border-right:10px solid transparent;z-index:1;content:\"\";position:absolute;filter:drop-shadow(0px 3px 1px rgba(0,0,0,.2));bottom:-14px;left:50%;transform:translate(-50%)}.jobcode_detailprt .topheadingprt .driver_list ul li.extraicon{background:white;width:30px;height:30px;border-radius:100%;display:flex;justify-content:center;align-items:center;margin:0 0 0 10px;border:1px solid #eee}.jobcode_detailprt .close{position:absolute;top:10px;right:20px;background:#e8e8e8;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.jobcode_detailprt .job_details_area{padding:15px 0}.jobcode_detailprt .job_details_area .detailnameprt{display:flex;justify-content:space-between}.jobcode_detailprt .job_details_area .detailnameprt span{display:flex;flex-direction:column;font-size:.875rem;color:#767676}.jobcode_detailprt .job_details_area .detailnameprt span b{font-size:.9375rem;font-weight:500;color:#000}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span 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}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .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;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.overlap{z-index:9999}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.route_detail .destination .duration{background:#444343;border:1px solid #918e8e;padding:10px;color:#fff}.route_detail .destination .duration b{color:#fff}.route_detail .destination .pickprt:before,.route_detail .destination .dropprt:before{background:#fff}.route_detail .destination .pickprt b:before,.route_detail .destination .dropprt b:before{background:#fff}.route_detail .destination span{line-height:20px;color:#fff;padding:3px 0}.route_detail .destination span b{color:#fff}.route_detail .destination span.notes{max-height:200px;overflow:auto}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{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;position:absolute;top:-7px;left:-11px}\n"] }]
|
|
113
|
-
}], ctorParameters: function () { return [{ type: i1.UtilsService }, { type: i1.CoolmapService }]; }, propDecorators: { jobdetail: [{
|
|
114
|
-
type: Input
|
|
115
|
-
}], clearJobDetails: [{
|
|
116
|
-
type: Output
|
|
117
|
-
}] } });
|
|
118
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9qb2ItY29kZS9qb2ItY29kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2pvYi1jb2RlL2pvYi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBUTFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsWUFBbUIsS0FBbUIsRUFBUyxPQUF1QjtRQUFuRCxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFYdEUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDdkMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQUMsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlFLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRTNDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBTS9CLElBQUksQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUYs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QUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDbEYsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3hCLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7YUFDOUI7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7YUFDN0I7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7U0FDN0I7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQzs7NkdBcEZVLGdCQUFnQjtpR0FBaEIsZ0JBQWdCLHlJQ1Y3QixpbklBNkZBOzJGRG5GYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYztnSUFLUixTQUFTO3NCQUF4QixLQUFLO2dCQUlXLGVBQWU7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29vbG1hcFNlcnZpY2UsIFJvdXRlLCBVdGlsc1NlcnZpY2UgfSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtam9iLWNvZGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vam9iLWNvZGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9qb2ItY29kZS5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIEpvYkNvZGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHB1YmxpYyBqb2JkZXRhaWwhOiBhbnk7XG4gIGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICByb3V0ZXM6IFJvdXRlW10gPSBbXTtcbiAgcHVibGljIHNlbGVjdGVkUm91dGUgPSBuZXcgU2VsZWN0aW9uTW9kZWw8YW55Pih0cnVlLCBbXSlcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGVhckpvYkRldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IGlzT3ZlcmxhcFJvdXRlU2VjdGlvbiA9IGZhbHNlO1xuICBwdWJsaWMgZGVzdHJveWVyJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gIGRldGFpbHNDYXJkRW5hYmxlOiBib29sZWFuIHwgc3RyaW5nO1xuICBwcmV2ZW50TW91c2VvdXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcm91dGVDYXJkRGV0YWlsOiBSb3V0ZTtcbiAgcHJldmVudExpc3RVcGRhdGU6IGJvb2xlYW47XG4gIG1hc3RlclJvdXRlczogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB1dGlsczogVXRpbHNTZXJ2aWNlLCBwdWJsaWMgY29vbE1hcDogQ29vbG1hcFNlcnZpY2UpIHtcbiAgICB0aGlzLnV0aWxzLmNsZWFyVmlld1JvdXRlZm9ySm9iQ29kZU9ic2VydmUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICBpZiAocmVzKSB0aGlzLmNvb2xNYXAucmVtb3ZlSm9iRnJvbU1hcCh0aGlzLnNlbGVjdGVkUm91dGUuc2VsZWN0ZWQpOyB0aGlzLnNlbGVjdGVkUm91dGUuY2xlYXIoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQgeyB0aGlzLmdldFJvdXRlTGlzdCgpIH1cbiAgZ2V0Um91dGVMaXN0KCkge1xuICAgIHRoaXMudXRpbHMuZ2V0RGF0YSgnY29vbG1hcC9yb3V0ZXMvYWxsJykucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgaWYgKHJlcykge1xuICAgICAgICB0aGlzLnJvdXRlcyA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLm1hc3RlclJvdXRlcyA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLnByZXZlbnRMaXN0VXBkYXRlID0gZmFsc2U7XG4gICAgICAgIHRoaXMudXRpbHMuY2xlYXJPcHRpb25zKCk7XG4gICAgICAgIHRoaXMucm91dGVzLmZvckVhY2goKGVsZTogUm91dGUpID0+IHsgdGhpcy51dGlscy5tYWtlT3B0aW9ucyhlbGUpIH0pO1xuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgdG9nZ2xlU2lkZW1lbnUoKSB7XG4gICAgdGhpcy5pc1Zpc2libGUgPSAhdGhpcy5pc1Zpc2libGU7XG4gICAgdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSA9IGZhbHNlO1xuICAgIHRoaXMucHJldmVudE1vdXNlb3V0ID0gZmFsc2VcbiAgfVxuICBjbGVhckpvYigpIHsgdGhpcy5jbGVhckpvYkRldGFpbHMuZW1pdCh0cnVlKTsgdGhpcy51dGlscy5wcmVWZW50Sm9iZGV0YWlsY2xvc2UubmV4dChmYWxzZSkgfVxuICBzZWxlY3RSb3V0ZShldmVudDogUm91dGUpIHtcbiAgICBjb25zdCBpID0gdGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmZpbmRJbmRleChlbGUgPT4gZWxlWydvcmRlcl9udW1iZXInXSA9PT0gZXZlbnRbJ29yZGVyX251bWJlciddKTtcbiAgICB0aGlzLnNlbGVjdGVkUm91dGUudG9nZ2xlKGV2ZW50KTtcbiAgICBpZiAoIXRoaXMuc2VsZWN0ZWRSb3V0ZS5pc1NlbGVjdGVkKGV2ZW50KSAmJiBldmVudFsncm91dGVfaWQnXSkge1xuICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZVJvdXRlQW5kTWFya2VyKGV2ZW50Wydyb3V0ZV9pZCddKS50aGVuKChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNvb2xNYXAuZXh0ZW5kUmVCb3VuZCgpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY29vbE1hcC5wbG90Um91dGUoZXZlbnQsIGV2ZW50Wydyb3V0ZV9pZCddLCAnam9icm91dGVMaXN0JywgZmFsc2UsIHRydWUpO1xuICAgIH1cbiAgfVxuICBtYXN0ZXJUb2dnbGUoKSB7XG4gICAgaWYgKHRoaXMucm91dGVzLmxlbmd0aCA9PT0gdGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmxlbmd0aCkge1xuICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlLmNsZWFyKCk7XG4gICAgICB0aGlzLnJvdXRlcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIHRoaXMuY29vbE1hcC5yZW1vdmVSb3V0ZUFuZE1hcmtlcihyb3dbJ3JvdXRlX2lkJ10pLnRoZW4oKHJlczogYW55KSA9PiB7IHRoaXMuY29vbE1hcC5leHRlbmRSZUJvdW5kKCkgfSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlcy5mb3JFYWNoKHJvdyA9PiB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3Qocm93KTtcbiAgICAgICAgdGhpcy5jb29sTWFwLnBsb3RSb3V0ZShyb3csIHJvd1sncm91dGVfaWQnXSwgJ2pvYnJvdXRlTGlzdCcsIGZhbHNlLCB0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICB0b2dnbGVyb3V0ZURldGFpbHMoZXZlbnRUeXBlOiBzdHJpbmcgfCBib29sZWFuLCByb3V0ZTogUm91dGUsIG1vdXNlT3V0PzogYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgKGV2ZW50VHlwZSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnByZXZlbnRNb3VzZW91dCA9IHRydWU7IHRoaXMudXRpbHMuc2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzJywgSlNPTi5zdHJpbmdpZnkocm91dGUpKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiAoZXZlbnRUeXBlKSA9PT0gJ2Jvb2xlYW4nICYmIGV2ZW50VHlwZSAmJiAhdGhpcy5wcmV2ZW50TW91c2VvdXQpIHsgdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSA9IGV2ZW50VHlwZSB9O1xuICAgIGlmICh0eXBlb2YgKGV2ZW50VHlwZSkgPT09ICdib29sZWFuJyAmJiAhZXZlbnRUeXBlICYmICF0aGlzLnByZXZlbnRNb3VzZW91dCkgeyB0aGlzLmRldGFpbHNDYXJkRW5hYmxlID0gZXZlbnRUeXBlIH07XG4gICAgaWYgKHRoaXMucHJldmVudE1vdXNlb3V0ICYmICF0aGlzLmRldGFpbHNDYXJkRW5hYmxlKSB0aGlzLnByZXZlbnRNb3VzZW91dCA9IGZhbHNlO1xuICAgIGlmIChtb3VzZU91dCkge1xuICAgICAgaWYgKHRoaXMucHJldmVudE1vdXNlb3V0KSB7XG4gICAgICAgIHJvdXRlID0gdGhpcy51dGlscy5nZXRkaWN0VmFsdWUoJ3JvdXRlLWRldGFpbHMnKTtcbiAgICAgICAgdGhpcy5yb3V0ZUNhcmREZXRhaWwgPSByb3V0ZTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5wcmV2ZW50TW91c2VvdXQpIHtcbiAgICAgICAgdGhpcy5yb3V0ZUNhcmREZXRhaWwgPSByb3V0ZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJvdXRlQ2FyZERldGFpbCA9IHJvdXRlXG4gICAgfVxuICAgIHRoaXMucm91dGVDYXJkRGV0YWlsWydjcmVhdGVkX2F0J10gPSB0aGlzLnV0aWxzLmdldERhdGVGb3JtYXQobmV3IERhdGUodGhpcy5yb3V0ZUNhcmREZXRhaWxbJ2NyZWF0ZWRfYXQnXSksICcvJyk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZXIkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95ZXIkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJqb2Jjb2RlX2RldGFpbHBydFwiIChjbGljayk9XCJpc092ZXJsYXBSb3V0ZVNlY3Rpb24gPSBmYWxzZVwiICAqbmdJZj1cImpvYmRldGFpbFwiIFtuZ0NsYXNzXT1cInsnb3ZlcmxhcCc6ICFpc092ZXJsYXBSb3V0ZVNlY3Rpb259XCIgY2RrRHJhZz5cbiAgPGRpdiBjbGFzcz1cInRvcGhlYWRpbmdwcnRcIiAqbmdJZj1cImpvYmRldGFpbFsnb3JkZXJfbnVtYmVyJ11cIj5cbiAgICA8aDI+e3tqb2JkZXRhaWxbJ29yZGVyX251bWJlciddfX08L2gyPlxuICA8L2Rpdj5cbiAgPHNwYW4gY2xhc3M9XCJjbG9zZVwiPjxtYXQtaWNvbiAoY2xpY2spPVwiY2xlYXJKb2IoKVwiPmNsZWFyPC9tYXQtaWNvbj48L3NwYW4+XG4gIDxkaXYgY2xhc3M9XCJqb2JfZGV0YWlsc19hcmVhXCI+XG4gICAgPGRpdiBjbGFzcz1cImRldGFpbG5hbWVwcnRcIj5cbiAgICAgIDxzcGFuPiA8Yj4ge3tqb2JkZXRhaWwuY3VzdG9tZXJfbmFtZX19IDwvYj4gQ3VzdG9tZXIgPC9zcGFuPlxuICAgICAgPGFwcC1qb2Jjb2RlLXN0YXR1cyBbam9iVmFsdWVdPVwiam9iZGV0YWlsXCI+PC9hcHAtam9iY29kZS1zdGF0dXM+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1qb2Jjb2RlLW92ZXJ2aWV3IFtqb2JWYWx1ZV09XCJqb2JkZXRhaWxcIj48L2FwcC1qb2Jjb2RlLW92ZXJ2aWV3PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicm91dGVfbGlzdHBydFwiIChjbGljayk9XCJpc092ZXJsYXBSb3V0ZVNlY3Rpb24gPSB0cnVlXCIgW25nQ2xhc3NdPVwieyAnc2hvdyc6IGlzVmlzaWJsZSwgJ292ZXJsYXAnOiBpc092ZXJsYXBSb3V0ZVNlY3Rpb259XCI+XG4gIDxkaXYgY2xhc3M9XCJsaXN0aW5nX3RvZ2dsZVwiIChjbGljayk9XCJ0b2dnbGVTaWRlbWVudSgpXCI+XG4gICAgPGltZyBzcmM9XCJhc3NldHMvaW1hZ2VzL3JvdXRlLnN2Z1wiIGFsdD1cIlwiIC8+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJsaXN0aW5nX2JveFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjbG9zZWJ0blwiIChjbGljayk9XCJ0b2dnbGVTaWRlbWVudSgpXCI+XG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImJ0bnBydFwiPlxuICAgICAgPGgyPiBMaXN0IG9mIFJvdXRlcyA8L2gyPlxuICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibWFzdGVyVG9nZ2xlKClcIj57e3JvdXRlcyAmJiByb3V0ZXMubGVuZ3RoID4gMCAmJiByb3V0ZXMubGVuZ3RoID09PSBzZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmxlbmd0aCA/ICdVbmNoZWNrJyA6ICdDaGVjayd9fSBBbGw8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxhcHAtam9iLXJvdXRlLWxpc3QgW3JvdXRlc109XCJyb3V0ZXNcIiBbbWFzdGVyUm91dGVzXT1cIm1hc3RlclJvdXRlc1wiIFtzZWxlY3RlZFJvdXRlXT1cInNlbGVjdGVkUm91dGVcIiAoY2hhbmdlUm91dGVzKT1cInJvdXRlcyA9ICRldmVudFwiIChjaGFuZ2VTZWxlY3RlZFJvdXRlKT1cInNlbGVjdGVkUm91dGUgPSAkZXZlbnRcIj48L2FwcC1qb2Itcm91dGUtbGlzdD5cblxuICAgIDxwZXJmZWN0LXNjcm9sbGJhcj5cbiAgICAgIDx1bCAqbmdJZj1cInJvdXRlc1snbGVuZ3RoJ10gPiAwXCI+XG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbGlzdCBvZiByb3V0ZXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaWNvbnBydFwiPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJzZWxlY3RlZFJvdXRlLmlzU2VsZWN0ZWQobGlzdClcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0Um91dGUobGlzdCkgOiBudWxsXCIgLz48bGFiZWw+Jm5ic3A7PC9sYWJlbD5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlclwiPjwvZGl2PlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0YXR1c3VuaXRcIiBbbmdDbGFzc109XCJsaXN0Wyd1bml0J11cIj57e2xpc3RbJ3VuaXQnXX19PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mb2ljb25cIj5cbiAgICAgICAgICAgICAgPGltZyAobW91c2VlbnRlcik9XCJ0b2dnbGVyb3V0ZURldGFpbHModHJ1ZSwgbGlzdClcIiAobW91c2VvdXQpPVwidG9nZ2xlcm91dGVEZXRhaWxzKGZhbHNlLCBsaXN0LCB0cnVlKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVyb3V0ZURldGFpbHMoJ2NsaWNrJywgbGlzdClcIiBzcmM9XCJhc3NldHMvaW1hZ2VzL2luZm9faWNvbi5wbmdcIiBbYWx0XT1cIlwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja3BydGJveFwiPlxuICAgICAgICAgICAgPGgyPiB7e2xpc3RbJ3JvdXRlX25hbWUnXX19IDwvaDI+XG4gICAgICAgICAgICA8aDM+e3tsaXN0WydjdXN0b21lcl9uYW1lJ119fSB8IHt7bGlzdFsnbWF0ZXJpYWwnXX19PC9oMz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZHJvcHBydFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGlja3BydFwiPlxuICAgICAgICAgICAgICAgIDxiPlxuICAgICAgICAgICAgICAgICAgPGg0Pnt7bGlzdFsncGlja3VwX2xvY2F0aW9uJ119fTwvaDQ+XG4gICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3BwcnRcIj5cbiAgICAgICAgICAgICAgICA8Yj5cbiAgICAgICAgICAgICAgICAgIDxoND57e2xpc3RbJ2RlbGl2ZXJ5X2xvY2F0aW9uJ119fTwvaDQ+XG4gICAgICAgICAgICAgICAgPC9iPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgPC91bD5cbiAgICAgIDxwIHN0eWxlPVwiY29sb3I6ICNmZmY7XCIgKm5nSWY9XCJyb3V0ZXMubGVuZ3RoID09PSAwXCI+Tm8gUm91dGUgZm91bmQ8L3A+XG4gICAgPC9wZXJmZWN0LXNjcm9sbGJhcj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cInJvdXRlX2RldGFpbFwiICpuZ0lmPVwiZGV0YWlsc0NhcmRFbmFibGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5yb3V0ZWRldGFpbFwiIChjbGljayk9XCJkZXRhaWxzQ2FyZEVuYWJsZSA9IGZhbHNlOyBwcmV2ZW50TW91c2VvdXQgPSBmYWxzZVwiPlxuICAgICAgPG1hdC1pY29uPmNsZWFyPC9tYXQtaWNvbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGVzdGluYXRpb25cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkdXJhdGlvblwiPlxuICAgICAgICA8cCBjbGFzcz1cInBpY2twcnRcIj48Yj5QaWNrdXA6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8ucGlja3VwX2xvY2F0aW9ufX08L3A+XG4gICAgICAgIDxwIGNsYXNzPVwiZHJvcHBydFwiPjxiPkRlbGl2ZXJ5OjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/LmRlbGl2ZXJ5X2xvY2F0aW9ufX0gPC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3Bhbj48Yj5OYW1lOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/LnJvdXRlX25hbWV9fTwvc3Bhbj5cbiAgICAgIDxzcGFuPjxiPkN1c3RvbWVyOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/LmN1c3RvbWVyX25hbWV9fTwvc3Bhbj5cbiAgICAgIDxzcGFuPjxiPk1hdGVyaWFsOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/Lm1hdGVyaWFsfX08L3NwYW4+XG4gICAgICA8c3Bhbj48Yj5UeXBlOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/LnVuaXR9fTwvc3Bhbj5cbiAgICAgIDxzcGFuPjxiPkRpc3RhbmNlOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/LmVzdGltYXRlZF9kaXN0YW5jZX19PC9zcGFuPlxuICAgICAgPHNwYW4+PGI+VHJhdmVsIFRpbWU6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8uZXN0aW1hdGVkX3RpbWV9fTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibm90ZXNcIj48Yj5Ob3Rlczo8L2I+IHt7cm91dGVDYXJkRGV0YWlsPy5ub3RlfX08L3NwYW4+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3JlYXRlVHh0XCI+XG4gICAgICA8c21hbGw+XG4gICAgICAgIENyZWF0ZWQgYnkge3tyb3V0ZUNhcmREZXRhaWw/LmNyZWF0ZWRfYnlfbmFtZX19IG9uIHt7cm91dGVDYXJkRGV0YWlsPy5jcmVhdGVkX2F0fX1cbiAgICAgIDwvc21hbGw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
1
|
+
import { SelectionModel } from '@angular/cdk/collections';
|
|
2
|
+
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
3
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
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/cdk/drag-drop";
|
|
8
|
+
import * as i4 from "@angular/material/icon";
|
|
9
|
+
import * as i5 from "ngx-perfect-scrollbar";
|
|
10
|
+
import * as i6 from "../shared/job-route-list/job-route-list.component";
|
|
11
|
+
import * as i7 from "../shared/jobcode-status/jobcode-status.component";
|
|
12
|
+
import * as i8 from "../shared/jobcode-overview/jobcode-overview.component";
|
|
13
|
+
export class JobCodeComponent {
|
|
14
|
+
constructor(utils, coolMap) {
|
|
15
|
+
this.utils = utils;
|
|
16
|
+
this.coolMap = coolMap;
|
|
17
|
+
this.isVisible = false;
|
|
18
|
+
this.routes = [];
|
|
19
|
+
this.selectedRoute = new SelectionModel(true, []);
|
|
20
|
+
this.clearJobDetails = new EventEmitter();
|
|
21
|
+
this.isOverlapRouteSection = false;
|
|
22
|
+
this.destroyer$ = new Subject();
|
|
23
|
+
this.preventMouseout = false;
|
|
24
|
+
this.utils.clearViewRouteforJobCodeObserve.pipe(takeUntil(this.destroyer$)).subscribe(res => {
|
|
25
|
+
if (res)
|
|
26
|
+
this.coolMap.removeJobFromMap(this.selectedRoute.selected);
|
|
27
|
+
this.selectedRoute.clear();
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() { this.getRouteList(); }
|
|
31
|
+
getRouteList() {
|
|
32
|
+
this.utils.getData('coolmap/routes/all').pipe(takeUntil(this.destroyer$)).subscribe((res) => {
|
|
33
|
+
if (res) {
|
|
34
|
+
this.routes = res.data;
|
|
35
|
+
this.masterRoutes = res.data;
|
|
36
|
+
this.preventListUpdate = false;
|
|
37
|
+
this.utils.clearOptions();
|
|
38
|
+
this.routes.forEach((ele) => { this.utils.makeOptions(ele); });
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
toggleSidemenu() {
|
|
43
|
+
this.isVisible = !this.isVisible;
|
|
44
|
+
this.detailsCardEnable = false;
|
|
45
|
+
this.preventMouseout = false;
|
|
46
|
+
}
|
|
47
|
+
clearJob() { this.clearJobDetails.emit(true); this.utils.preVentJobdetailclose.next(false); }
|
|
48
|
+
selectRoute(event) {
|
|
49
|
+
const i = this.selectedRoute.selected.findIndex(ele => ele['order_number'] === event['order_number']);
|
|
50
|
+
this.selectedRoute.toggle(event);
|
|
51
|
+
if (!this.selectedRoute.isSelected(event) && event['route_id']) {
|
|
52
|
+
this.coolMap.removeRouteAndMarker(event['route_id']).then((res) => {
|
|
53
|
+
this.coolMap.extendReBound();
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.coolMap.plotRoute(event, event['route_id'], 'jobrouteList', false, true);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
masterToggle() {
|
|
61
|
+
if (this.routes.length === this.selectedRoute.selected.length) {
|
|
62
|
+
this.selectedRoute.clear();
|
|
63
|
+
this.routes.forEach(row => {
|
|
64
|
+
this.coolMap.removeRouteAndMarker(row['route_id']).then((res) => { this.coolMap.extendReBound(); });
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
this.routes.forEach(row => {
|
|
69
|
+
this.selectedRoute.select(row);
|
|
70
|
+
this.coolMap.plotRoute(row, row['route_id'], 'jobrouteList', false, true);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
togglerouteDetails(eventType, route, mouseOut) {
|
|
75
|
+
if (typeof (eventType) === 'string') {
|
|
76
|
+
this.preventMouseout = true;
|
|
77
|
+
this.utils.setdictValue('route-details', JSON.stringify(route));
|
|
78
|
+
}
|
|
79
|
+
if (typeof (eventType) === 'boolean' && eventType && !this.preventMouseout) {
|
|
80
|
+
this.detailsCardEnable = eventType;
|
|
81
|
+
}
|
|
82
|
+
;
|
|
83
|
+
if (typeof (eventType) === 'boolean' && !eventType && !this.preventMouseout) {
|
|
84
|
+
this.detailsCardEnable = eventType;
|
|
85
|
+
}
|
|
86
|
+
;
|
|
87
|
+
if (this.preventMouseout && !this.detailsCardEnable)
|
|
88
|
+
this.preventMouseout = false;
|
|
89
|
+
if (mouseOut) {
|
|
90
|
+
if (this.preventMouseout) {
|
|
91
|
+
route = this.utils.getdictValue('route-details');
|
|
92
|
+
this.routeCardDetail = route;
|
|
93
|
+
}
|
|
94
|
+
if (!this.preventMouseout) {
|
|
95
|
+
this.routeCardDetail = route;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this.routeCardDetail = route;
|
|
100
|
+
}
|
|
101
|
+
this.routeCardDetail['created_at'] = this.utils.getDateFormat(new Date(this.routeCardDetail['created_at']), '/');
|
|
102
|
+
}
|
|
103
|
+
ngOnDestroy() {
|
|
104
|
+
this.destroyer$.next(true);
|
|
105
|
+
this.destroyer$.unsubscribe();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
JobCodeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: JobCodeComponent, deps: [{ token: i1.UtilsService }, { token: i1.CoolmapService }], target: i0.ɵɵFactoryTarget.Component });
|
|
109
|
+
JobCodeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: JobCodeComponent, selector: "app-job-code", inputs: { jobdetail: "jobdetail" }, outputs: { clearJobDetails: "clearJobDetails" }, ngImport: i0, template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\r\n <div class=\"topheadingprt\" *ngIf=\"jobdetail['order_number']\">\r\n <h2>{{jobdetail['order_number']}}</h2>\r\n </div>\r\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\r\n <div class=\"job_details_area\">\r\n <div class=\"detailnameprt\">\r\n <span> <b> {{jobdetail.customer_name}} </b> Customer </span>\r\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\r\n </div>\r\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\r\n </div>\r\n</div>\r\n\r\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\r\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\r\n <img src=\"assets/images/route.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"listing_box\">\r\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\r\n <mat-icon>clear</mat-icon>\r\n </div>\r\n\r\n <div class=\"btnprt\">\r\n <h2> List of Routes </h2>\r\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\r\n </div>\r\n\r\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\r\n\r\n <perfect-scrollbar>\r\n <ul *ngIf=\"routes['length'] > 0\">\r\n <li *ngFor=\"let list of routes\">\r\n <div class=\"iconprt\">\r\n <span>\r\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\r\n (change)=\"$event ? selectRoute(list) : null\" /><label> </label>\r\n <div class=\"border\"></div>\r\n </span>\r\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\r\n <div class=\"infoicon\">\r\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\r\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"pickprtbox\">\r\n <h2> {{list['route_name']}} </h2>\r\n <h3>{{list['customer_name']}} | {{list['material']}}</h3>\r\n <div class=\"pickdropprt\">\r\n <div class=\"pickprt\">\r\n <b>\r\n <h4>{{list['pickup_location']}}</h4>\r\n </b>\r\n </div>\r\n <div class=\"dropprt\">\r\n <b>\r\n <h4>{{list['delivery_location']}}</h4>\r\n </b>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\r\n </perfect-scrollbar>\r\n </div>\r\n\r\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\r\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\r\n <mat-icon>clear</mat-icon>\r\n </div>\r\n <div class=\"destination\">\r\n <div class=\"duration\">\r\n <p class=\"pickprt\"><b>Pickup:</b> {{routeCardDetail?.pickup_location}}</p>\r\n <p class=\"dropprt\"><b>Delivery:</b> {{routeCardDetail?.delivery_location}} </p>\r\n </div>\r\n <span><b>Name:</b> {{routeCardDetail?.route_name}}</span>\r\n <span><b>Customer:</b> {{routeCardDetail?.customer_name}}</span>\r\n <span><b>Material:</b> {{routeCardDetail?.material}}</span>\r\n <span><b>Type:</b> {{routeCardDetail?.unit}}</span>\r\n <span><b>Distance:</b> {{routeCardDetail?.estimated_distance}}</span>\r\n <span><b>Travel Time:</b> {{routeCardDetail?.estimated_time}}</span>\r\n <span class=\"notes\"><b>Notes:</b> {{routeCardDetail?.note}}</span>\r\n </div>\r\n\r\n <div class=\"createTxt\">\r\n <small>\r\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\r\n </small>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:10px 20px;border-radius:20px;width:calc(100% - 315px);z-index:999;box-shadow:0 0 5px #0000001a;height:250px;cursor:move}@media (min-width: 1600px){.jobcode_detailprt{left:307px;width:calc(100% - 325px)}}.jobcode_detailprt .topheadingprt .driver_list ul{display:flex;width:450px;justify-content:flex-end}.jobcode_detailprt .topheadingprt .driver_list ul li{position:relative;margin:0 -6px 2px 0;cursor:pointer}.jobcode_detailprt .topheadingprt .driver_list ul li img{width:30px;height:30px;border-radius:100%;border:1px solid #fff}.jobcode_detailprt .topheadingprt .driver_list ul li:hover .driver_detail{display:flex}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail{position:absolute;top:-70px;left:-50px;display:none;will-change:transform;pointer-events:none;border-radius:10px;box-shadow:0 4px 4px #00000024;width:133px;background:white;text-align:center;padding:10px;flex-direction:column;font-size:.8125rem}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:117px;display:block}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail:after{width:0;height:0;border-top:15px solid white;border-left:10px solid transparent;border-right:10px solid transparent;z-index:1;content:\"\";position:absolute;filter:drop-shadow(0px 3px 1px rgba(0,0,0,.2));bottom:-14px;left:50%;transform:translate(-50%)}.jobcode_detailprt .topheadingprt .driver_list ul li.extraicon{background:white;width:30px;height:30px;border-radius:100%;display:flex;justify-content:center;align-items:center;margin:0 0 0 10px;border:1px solid #eee}.jobcode_detailprt .close{position:absolute;top:10px;right:20px;background:#e8e8e8;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.jobcode_detailprt .job_details_area{padding:15px 0}.jobcode_detailprt .job_details_area .detailnameprt{display:flex;justify-content:space-between}.jobcode_detailprt .job_details_area .detailnameprt span{display:flex;flex-direction:column;font-size:.875rem;color:#767676}.jobcode_detailprt .job_details_area .detailnameprt span b{font-size:.9375rem;font-weight:500;color:#000}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span 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}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .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;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.overlap{z-index:9999}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.route_detail .destination .duration{background:#444343;border:1px solid #918e8e;padding:10px;color:#fff}.route_detail .destination .duration b{color:#fff}.route_detail .destination .pickprt:before,.route_detail .destination .dropprt:before{background:#fff}.route_detail .destination .pickprt b:before,.route_detail .destination .dropprt b:before{background:#fff}.route_detail .destination span{line-height:20px;color:#fff;padding:3px 0}.route_detail .destination span b{color:#fff}.route_detail .destination span.notes{max-height:200px;overflow:auto}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{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;position:absolute;top:-7px;left:-11px}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { 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.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.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: i6.JobRouteListComponent, selector: "app-job-route-list", inputs: ["routes", "selectedRoute", "masterRoutes"], outputs: ["changeNav", "changeRoutes", "changeSelectedRoute"] }, { kind: "component", type: i7.JobcodeStatusComponent, selector: "app-jobcode-status", inputs: ["jobValue"] }, { kind: "component", type: i8.JobcodeOverviewComponent, selector: "app-jobcode-overview", inputs: ["jobValue"] }] });
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: JobCodeComponent, decorators: [{
|
|
111
|
+
type: Component,
|
|
112
|
+
args: [{ selector: 'app-job-code', template: "<div class=\"jobcode_detailprt\" (click)=\"isOverlapRouteSection = false\" *ngIf=\"jobdetail\" [ngClass]=\"{'overlap': !isOverlapRouteSection}\" cdkDrag>\r\n <div class=\"topheadingprt\" *ngIf=\"jobdetail['order_number']\">\r\n <h2>{{jobdetail['order_number']}}</h2>\r\n </div>\r\n <span class=\"close\"><mat-icon (click)=\"clearJob()\">clear</mat-icon></span>\r\n <div class=\"job_details_area\">\r\n <div class=\"detailnameprt\">\r\n <span> <b> {{jobdetail.customer_name}} </b> Customer </span>\r\n <app-jobcode-status [jobValue]=\"jobdetail\"></app-jobcode-status>\r\n </div>\r\n <app-jobcode-overview [jobValue]=\"jobdetail\"></app-jobcode-overview>\r\n </div>\r\n</div>\r\n\r\n<div class=\"route_listprt\" (click)=\"isOverlapRouteSection = true\" [ngClass]=\"{ 'show': isVisible, 'overlap': isOverlapRouteSection}\">\r\n <div class=\"listing_toggle\" (click)=\"toggleSidemenu()\">\r\n <img src=\"assets/images/route.svg\" alt=\"\" />\r\n </div>\r\n\r\n <div class=\"listing_box\">\r\n <div class=\"closebtn\" (click)=\"toggleSidemenu()\">\r\n <mat-icon>clear</mat-icon>\r\n </div>\r\n\r\n <div class=\"btnprt\">\r\n <h2> List of Routes </h2>\r\n <button (click)=\"masterToggle()\">{{routes && routes.length > 0 && routes.length === selectedRoute.selected.length ? 'Uncheck' : 'Check'}} All</button>\r\n </div>\r\n\r\n <app-job-route-list [routes]=\"routes\" [masterRoutes]=\"masterRoutes\" [selectedRoute]=\"selectedRoute\" (changeRoutes)=\"routes = $event\" (changeSelectedRoute)=\"selectedRoute = $event\"></app-job-route-list>\r\n\r\n <perfect-scrollbar>\r\n <ul *ngIf=\"routes['length'] > 0\">\r\n <li *ngFor=\"let list of routes\">\r\n <div class=\"iconprt\">\r\n <span>\r\n <input type=\"checkbox\" [checked]=\"selectedRoute.isSelected(list)\"\r\n (change)=\"$event ? selectRoute(list) : null\" /><label> </label>\r\n <div class=\"border\"></div>\r\n </span>\r\n <div class=\"statusunit\" [ngClass]=\"list['unit']\">{{list['unit']}}</div>\r\n <div class=\"infoicon\">\r\n <img (mouseenter)=\"togglerouteDetails(true, list)\" (mouseout)=\"togglerouteDetails(false, list, true)\"\r\n (click)=\"togglerouteDetails('click', list)\" src=\"assets/images/info_icon.png\" [alt]=\"\" />\r\n </div>\r\n </div>\r\n <div class=\"pickprtbox\">\r\n <h2> {{list['route_name']}} </h2>\r\n <h3>{{list['customer_name']}} | {{list['material']}}</h3>\r\n <div class=\"pickdropprt\">\r\n <div class=\"pickprt\">\r\n <b>\r\n <h4>{{list['pickup_location']}}</h4>\r\n </b>\r\n </div>\r\n <div class=\"dropprt\">\r\n <b>\r\n <h4>{{list['delivery_location']}}</h4>\r\n </b>\r\n </div>\r\n </div>\r\n </div>\r\n </li>\r\n </ul>\r\n <p style=\"color: #fff;\" *ngIf=\"routes.length === 0\">No Route found</p>\r\n </perfect-scrollbar>\r\n </div>\r\n\r\n <div class=\"route_detail\" *ngIf=\"detailsCardEnable\">\r\n <div class=\"closebtnroutedetail\" (click)=\"detailsCardEnable = false; preventMouseout = false\">\r\n <mat-icon>clear</mat-icon>\r\n </div>\r\n <div class=\"destination\">\r\n <div class=\"duration\">\r\n <p class=\"pickprt\"><b>Pickup:</b> {{routeCardDetail?.pickup_location}}</p>\r\n <p class=\"dropprt\"><b>Delivery:</b> {{routeCardDetail?.delivery_location}} </p>\r\n </div>\r\n <span><b>Name:</b> {{routeCardDetail?.route_name}}</span>\r\n <span><b>Customer:</b> {{routeCardDetail?.customer_name}}</span>\r\n <span><b>Material:</b> {{routeCardDetail?.material}}</span>\r\n <span><b>Type:</b> {{routeCardDetail?.unit}}</span>\r\n <span><b>Distance:</b> {{routeCardDetail?.estimated_distance}}</span>\r\n <span><b>Travel Time:</b> {{routeCardDetail?.estimated_time}}</span>\r\n <span class=\"notes\"><b>Notes:</b> {{routeCardDetail?.note}}</span>\r\n </div>\r\n\r\n <div class=\"createTxt\">\r\n <small>\r\n Created by {{routeCardDetail?.created_by_name}} on {{routeCardDetail?.created_at}}\r\n </small>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".jobcode_detailprt{position:absolute;left:300px;bottom:10px;background:white;padding:10px 20px;border-radius:20px;width:calc(100% - 315px);z-index:999;box-shadow:0 0 5px #0000001a;height:250px;cursor:move}@media (min-width: 1600px){.jobcode_detailprt{left:307px;width:calc(100% - 325px)}}.jobcode_detailprt .topheadingprt .driver_list ul{display:flex;width:450px;justify-content:flex-end}.jobcode_detailprt .topheadingprt .driver_list ul li{position:relative;margin:0 -6px 2px 0;cursor:pointer}.jobcode_detailprt .topheadingprt .driver_list ul li img{width:30px;height:30px;border-radius:100%;border:1px solid #fff}.jobcode_detailprt .topheadingprt .driver_list ul li:hover .driver_detail{display:flex}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail{position:absolute;top:-70px;left:-50px;display:none;will-change:transform;pointer-events:none;border-radius:10px;box-shadow:0 4px 4px #00000024;width:133px;background:white;text-align:center;padding:10px;flex-direction:column;font-size:.8125rem}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:117px;display:block}.jobcode_detailprt .topheadingprt .driver_list ul li .driver_detail:after{width:0;height:0;border-top:15px solid white;border-left:10px solid transparent;border-right:10px solid transparent;z-index:1;content:\"\";position:absolute;filter:drop-shadow(0px 3px 1px rgba(0,0,0,.2));bottom:-14px;left:50%;transform:translate(-50%)}.jobcode_detailprt .topheadingprt .driver_list ul li.extraicon{background:white;width:30px;height:30px;border-radius:100%;display:flex;justify-content:center;align-items:center;margin:0 0 0 10px;border:1px solid #eee}.jobcode_detailprt .close{position:absolute;top:10px;right:20px;background:#e8e8e8;border-radius:100%;width:30px;height:30px;display:flex;justify-content:center;align-items:center;cursor:pointer}@keyframes autoslide{to{transform:translate(calc(90vw - 100%))}0%{transform:translate(0)}}.jobcode_detailprt .job_details_area{padding:15px 0}.jobcode_detailprt .job_details_area .detailnameprt{display:flex;justify-content:space-between}.jobcode_detailprt .job_details_area .detailnameprt span{display:flex;flex-direction:column;font-size:.875rem;color:#767676}.jobcode_detailprt .job_details_area .detailnameprt span b{font-size:.9375rem;font-weight:500;color:#000}.route_listprt .listing_toggle{background:white;border-radius:15px;padding:5px;position:absolute;right:10px;top:20px;cursor:pointer}.route_listprt .listing_toggle img{width:28px}.route_listprt .listing_box{background:#282828;height:100vh;position:fixed;right:0;top:0;z-index:1111;box-shadow:-3px 0 5px #ffffff14;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;width:0;border-radius:40px 0 0;opacity:0}.route_listprt .listing_box .closebtn{display:none}.route_listprt .listing_box ul{padding:0 20px 0 0}.route_listprt .listing_box ul li{background:#4a4a4a;padding:10px 15px;border-radius:15px;display:flex;margin-bottom:10px;position:relative;height:inherit}@media (min-width: 1600px){.route_listprt .listing_box ul li{padding:6px 15px;margin-bottom:5px}}.route_listprt .listing_box ul li .iconprt{display:flex;flex-direction:column}.route_listprt .listing_box ul li .iconprt span{display:flex;align-items:center;margin-bottom:32px}.route_listprt .listing_box ul li .iconprt span 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}.route_listprt .listing_box ul li .iconprt span input[type=checkbox]:checked+label{background:url(../../../assets/images/fill-check.png) 16px 15px no-repeat}.route_listprt .listing_box ul li .iconprt span label{background:url(../../../assets/images/blank-check.png) 16px 15px no-repeat;width:100%;position:relative;z-index:2;font-size:12px;color:#878787;height:100%;position:absolute;top:0;left:0}.route_listprt .listing_box ul li .iconprt span .border{position:absolute;width:100%;height:100%;left:0;right:0;top:0;border-radius:15px}.route_listprt .listing_box ul li .iconprt span input:checked~.border{border-left:1px solid white;border-right:1px solid white;border-top:1px solid white;border-bottom:1px solid white}.route_listprt .listing_box ul li .iconprt span h2{margin-left:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;padding-left:16px;font-size:.9rem;margin-bottom:0;font-weight:400;margin-top:0}.route_listprt .listing_box ul li .iconprt .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;margin-bottom:7px}.route_listprt .listing_box ul li .iconprt .statusunit:first-letter{font-size:.8rem}.route_listprt .listing_box ul li .iconprt .statusunit.Ton{background:#ff7272}.route_listprt .listing_box ul li .iconprt .statusunit.Load{background:#a3c52e}.route_listprt .listing_box ul li .iconprt .statusunit.Hourly{background:#ae23d1}@media (min-width: 1600px){.route_listprt .listing_box ul li .iconprt .statusunit{line-height:21px}}.route_listprt .listing_box ul li .iconprt .infoicon{z-index:5;cursor:pointer}.route_listprt .listing_box ul li .iconprt .infoicon img{width:20px;height:20px}.route_listprt .listing_box ul li .pickprtbox{margin-left:10px}.route_listprt .listing_box ul li .pickprtbox h2{font-size:.9rem;margin:3px 0 5px;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden}.route_listprt .listing_box ul li h3{font-size:.8rem;color:#979797;font-weight:600;margin-top:0;white-space:nowrap;text-overflow:ellipsis;max-width:195px;overflow:hidden;margin-bottom:5px}.route_listprt .listing_box ul li .pickdropprt{font-size:.75rem}.route_listprt .listing_box ul li .pickdropprt .pickprt{position:relative;display:flex;align-items:center;padding-bottom:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .pickprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .pickprt b:after{background:#bcbcbc;width:1px;height:100%;left:3px;content:\"\";position:absolute;top:10px}.route_listprt .listing_box ul li .pickdropprt .pickprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .pickprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt .listing_box ul li .pickdropprt .dropprt{position:relative;padding-bottom:10px;display:flex;align-items:center}.route_listprt .listing_box ul li .pickdropprt .dropprt span{padding-left:0;padding-right:20px;display:block}.route_listprt .listing_box ul li .pickdropprt .dropprt b{position:relative}.route_listprt .listing_box ul li .pickdropprt .dropprt b:after{background:#bcbcbc;width:1px;height:12px;left:3px;content:\"\";position:absolute;top:-7px}.route_listprt .listing_box ul li .pickdropprt .dropprt h4{position:relative;padding-left:15px;margin:0;line-height:18px;color:#bcbcbc;font-weight:400;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}.route_listprt .listing_box ul li .pickdropprt .dropprt h4:before{background:#bcbcbc;top:4px;left:0;position:absolute;content:\"\";width:7px;height:7px;border-radius:100%}.route_listprt.show .listing_box{width:300px;max-width:300px;flex:0 0 350px;transition:.5s;-webkit-transition:.5s;-moz-transition:.5s;padding:40px 0 40px 20px;opacity:1}.route_listprt.show .listing_box h2{color:#fff;white-space:nowrap}.route_listprt.show .listing_box .closebtn{position:absolute;left:-33px;top:50px;background:#282828;color:#fff;padding:8px;border-top-left-radius:15px;border-bottom-left-radius:15px;cursor:pointer;box-shadow:-4px 2px 5px #ffffff14;display:block}.overlap{z-index:9999}.btnprt{display:flex;justify-content:space-between;align-items:center;padding-right:20px}.btnprt h2{margin:0}.btnprt button{font-size:15px;padding:8px 20px;background-color:#326ad3;color:#fff;border:none;border-radius:10px;box-shadow:none;outline:none}.hidden{display:none}.route_detail{background:#282828;position:absolute;width:260px;top:50%;transform:translateY(-50%);right:310px;border-radius:20px;padding:10px;box-shadow:0 0 5px #ffffff36}.route_detail .destination .duration{background:#444343;border:1px solid #918e8e;padding:10px;color:#fff}.route_detail .destination .duration b{color:#fff}.route_detail .destination .pickprt:before,.route_detail .destination .dropprt:before{background:#fff}.route_detail .destination .pickprt b:before,.route_detail .destination .dropprt b:before{background:#fff}.route_detail .destination span{line-height:20px;color:#fff;padding:3px 0}.route_detail .destination span b{color:#fff}.route_detail .destination span.notes{max-height:200px;overflow:auto}.createTxt small{color:#fff;font-size:.7rem}.closebtnroutedetail{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;position:absolute;top:-7px;left:-11px}\n"] }]
|
|
113
|
+
}], ctorParameters: function () { return [{ type: i1.UtilsService }, { type: i1.CoolmapService }]; }, propDecorators: { jobdetail: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], clearJobDetails: [{
|
|
116
|
+
type: Output
|
|
117
|
+
}] } });
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9iLWNvZGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29vbG1hcC9zcmMvbGliL2NvbXBvbmVudC9qb2ItY29kZS9qb2ItY29kZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L2pvYi1jb2RlL2pvYi1jb2RlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7O0FBUTFDLE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsWUFBbUIsS0FBbUIsRUFBUyxPQUF1QjtRQUFuRCxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBZ0I7UUFYdEUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixXQUFNLEdBQVksRUFBRSxDQUFDO1FBQ2Qsa0JBQWEsR0FBRyxJQUFJLGNBQWMsQ0FBTSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDdkMsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQUMsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlFLGVBQVUsR0FBRyxJQUFJLE9BQU8sRUFBVyxDQUFDO1FBRTNDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBTS9CLElBQUksQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDMUYs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QUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCO1lBQUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDbEYsSUFBSSxRQUFRLEVBQUU7WUFDWixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7Z0JBQ3hCLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7YUFDOUI7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRTtnQkFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7YUFDN0I7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUE7U0FDN0I7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNuSCxDQUFDO0lBQ0QsV0FBVztRQUNULElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEMsQ0FBQzs7OEdBcEZVLGdCQUFnQjtrR0FBaEIsZ0JBQWdCLHlJQ1Y3QiwyeUlBNkZBOzRGRG5GYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYztnSUFLUixTQUFTO3NCQUF4QixLQUFLO2dCQUlXLGVBQWU7c0JBQS9CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2xsZWN0aW9ucyc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgQ29vbG1hcFNlcnZpY2UsIFJvdXRlLCBVdGlsc1NlcnZpY2UgfSBmcm9tICdAYWdnZGlyZWN0L2Nvb2xtYXAtc2VydmljZXMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtam9iLWNvZGUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9qb2ItY29kZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vam9iLWNvZGUuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgSm9iQ29kZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBASW5wdXQoKSBwdWJsaWMgam9iZGV0YWlsITogYW55O1xyXG4gIGlzVmlzaWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHJvdXRlczogUm91dGVbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFJvdXRlID0gbmV3IFNlbGVjdGlvbk1vZGVsPGFueT4odHJ1ZSwgW10pXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGVhckpvYkRldGFpbHMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7IGlzT3ZlcmxhcFJvdXRlU2VjdGlvbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBkZXN0cm95ZXIkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBkZXRhaWxzQ2FyZEVuYWJsZTogYm9vbGVhbiB8IHN0cmluZztcclxuICBwcmV2ZW50TW91c2VvdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByb3V0ZUNhcmREZXRhaWw6IFJvdXRlO1xyXG4gIHByZXZlbnRMaXN0VXBkYXRlOiBib29sZWFuO1xyXG4gIG1hc3RlclJvdXRlczogYW55O1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgdXRpbHM6IFV0aWxzU2VydmljZSwgcHVibGljIGNvb2xNYXA6IENvb2xtYXBTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLnV0aWxzLmNsZWFyVmlld1JvdXRlZm9ySm9iQ29kZU9ic2VydmUucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKHJlcyA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHRoaXMuY29vbE1hcC5yZW1vdmVKb2JGcm9tTWFwKHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZCk7IHRoaXMuc2VsZWN0ZWRSb3V0ZS5jbGVhcigpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHsgdGhpcy5nZXRSb3V0ZUxpc3QoKSB9XHJcbiAgZ2V0Um91dGVMaXN0KCkge1xyXG4gICAgdGhpcy51dGlscy5nZXREYXRhKCdjb29sbWFwL3JvdXRlcy9hbGwnKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llciQpKS5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXMpIHtcclxuICAgICAgICB0aGlzLnJvdXRlcyA9IHJlcy5kYXRhO1xyXG4gICAgICAgIHRoaXMubWFzdGVyUm91dGVzID0gcmVzLmRhdGE7XHJcbiAgICAgICAgdGhpcy5wcmV2ZW50TGlzdFVwZGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudXRpbHMuY2xlYXJPcHRpb25zKCk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZXMuZm9yRWFjaCgoZWxlOiBSb3V0ZSkgPT4geyB0aGlzLnV0aWxzLm1ha2VPcHRpb25zKGVsZSkgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIHRvZ2dsZVNpZGVtZW51KCkge1xyXG4gICAgdGhpcy5pc1Zpc2libGUgPSAhdGhpcy5pc1Zpc2libGU7XHJcbiAgICB0aGlzLmRldGFpbHNDYXJkRW5hYmxlID0gZmFsc2U7XHJcbiAgICB0aGlzLnByZXZlbnRNb3VzZW91dCA9IGZhbHNlXHJcbiAgfVxyXG4gIGNsZWFySm9iKCkgeyB0aGlzLmNsZWFySm9iRGV0YWlscy5lbWl0KHRydWUpOyB0aGlzLnV0aWxzLnByZVZlbnRKb2JkZXRhaWxjbG9zZS5uZXh0KGZhbHNlKSB9XHJcbiAgc2VsZWN0Um91dGUoZXZlbnQ6IFJvdXRlKSB7XHJcbiAgICBjb25zdCBpID0gdGhpcy5zZWxlY3RlZFJvdXRlLnNlbGVjdGVkLmZpbmRJbmRleChlbGUgPT4gZWxlWydvcmRlcl9udW1iZXInXSA9PT0gZXZlbnRbJ29yZGVyX251bWJlciddKTtcclxuICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS50b2dnbGUoZXZlbnQpO1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkUm91dGUuaXNTZWxlY3RlZChldmVudCkgJiYgZXZlbnRbJ3JvdXRlX2lkJ10pIHtcclxuICAgICAgdGhpcy5jb29sTWFwLnJlbW92ZVJvdXRlQW5kTWFya2VyKGV2ZW50Wydyb3V0ZV9pZCddKS50aGVuKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29vbE1hcC5leHRlbmRSZUJvdW5kKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5jb29sTWFwLnBsb3RSb3V0ZShldmVudCwgZXZlbnRbJ3JvdXRlX2lkJ10sICdqb2Jyb3V0ZUxpc3QnLCBmYWxzZSwgdHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG1hc3RlclRvZ2dsZSgpIHtcclxuICAgIGlmICh0aGlzLnJvdXRlcy5sZW5ndGggPT09IHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGgpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZFJvdXRlLmNsZWFyKCk7XHJcbiAgICAgIHRoaXMucm91dGVzLmZvckVhY2gocm93ID0+IHtcclxuICAgICAgICB0aGlzLmNvb2xNYXAucmVtb3ZlUm91dGVBbmRNYXJrZXIocm93Wydyb3V0ZV9pZCddKS50aGVuKChyZXM6IGFueSkgPT4geyB0aGlzLmNvb2xNYXAuZXh0ZW5kUmVCb3VuZCgpIH0pXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5yb3V0ZXMuZm9yRWFjaChyb3cgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSb3V0ZS5zZWxlY3Qocm93KTtcclxuICAgICAgICB0aGlzLmNvb2xNYXAucGxvdFJvdXRlKHJvdywgcm93Wydyb3V0ZV9pZCddLCAnam9icm91dGVMaXN0JywgZmFsc2UsIHRydWUpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgdG9nZ2xlcm91dGVEZXRhaWxzKGV2ZW50VHlwZTogc3RyaW5nIHwgYm9vbGVhbiwgcm91dGU6IFJvdXRlLCBtb3VzZU91dD86IGJvb2xlYW4pIHtcclxuICAgIGlmICh0eXBlb2YgKGV2ZW50VHlwZSkgPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgIHRoaXMucHJldmVudE1vdXNlb3V0ID0gdHJ1ZTsgdGhpcy51dGlscy5zZXRkaWN0VmFsdWUoJ3JvdXRlLWRldGFpbHMnLCBKU09OLnN0cmluZ2lmeShyb3V0ZSkpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiAoZXZlbnRUeXBlKSA9PT0gJ2Jvb2xlYW4nICYmIGV2ZW50VHlwZSAmJiAhdGhpcy5wcmV2ZW50TW91c2VvdXQpIHsgdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSA9IGV2ZW50VHlwZSB9O1xyXG4gICAgaWYgKHR5cGVvZiAoZXZlbnRUeXBlKSA9PT0gJ2Jvb2xlYW4nICYmICFldmVudFR5cGUgJiYgIXRoaXMucHJldmVudE1vdXNlb3V0KSB7IHRoaXMuZGV0YWlsc0NhcmRFbmFibGUgPSBldmVudFR5cGUgfTtcclxuICAgIGlmICh0aGlzLnByZXZlbnRNb3VzZW91dCAmJiAhdGhpcy5kZXRhaWxzQ2FyZEVuYWJsZSkgdGhpcy5wcmV2ZW50TW91c2VvdXQgPSBmYWxzZTtcclxuICAgIGlmIChtb3VzZU91dCkge1xyXG4gICAgICBpZiAodGhpcy5wcmV2ZW50TW91c2VvdXQpIHtcclxuICAgICAgICByb3V0ZSA9IHRoaXMudXRpbHMuZ2V0ZGljdFZhbHVlKCdyb3V0ZS1kZXRhaWxzJyk7XHJcbiAgICAgICAgdGhpcy5yb3V0ZUNhcmREZXRhaWwgPSByb3V0ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoIXRoaXMucHJldmVudE1vdXNlb3V0KSB7XHJcbiAgICAgICAgdGhpcy5yb3V0ZUNhcmREZXRhaWwgPSByb3V0ZVxyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnJvdXRlQ2FyZERldGFpbCA9IHJvdXRlXHJcbiAgICB9XHJcbiAgICB0aGlzLnJvdXRlQ2FyZERldGFpbFsnY3JlYXRlZF9hdCddID0gdGhpcy51dGlscy5nZXREYXRlRm9ybWF0KG5ldyBEYXRlKHRoaXMucm91dGVDYXJkRGV0YWlsWydjcmVhdGVkX2F0J10pLCAnLycpO1xyXG4gIH1cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveWVyJC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95ZXIkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJqb2Jjb2RlX2RldGFpbHBydFwiIChjbGljayk9XCJpc092ZXJsYXBSb3V0ZVNlY3Rpb24gPSBmYWxzZVwiICAqbmdJZj1cImpvYmRldGFpbFwiIFtuZ0NsYXNzXT1cInsnb3ZlcmxhcCc6ICFpc092ZXJsYXBSb3V0ZVNlY3Rpb259XCIgY2RrRHJhZz5cclxuICA8ZGl2IGNsYXNzPVwidG9waGVhZGluZ3BydFwiICpuZ0lmPVwiam9iZGV0YWlsWydvcmRlcl9udW1iZXInXVwiPlxyXG4gICAgPGgyPnt7am9iZGV0YWlsWydvcmRlcl9udW1iZXInXX19PC9oMj5cclxuICA8L2Rpdj5cclxuICA8c3BhbiBjbGFzcz1cImNsb3NlXCI+PG1hdC1pY29uIChjbGljayk9XCJjbGVhckpvYigpXCI+Y2xlYXI8L21hdC1pY29uPjwvc3Bhbj5cclxuICA8ZGl2IGNsYXNzPVwiam9iX2RldGFpbHNfYXJlYVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImRldGFpbG5hbWVwcnRcIj5cclxuICAgICAgPHNwYW4+IDxiPiB7e2pvYmRldGFpbC5jdXN0b21lcl9uYW1lfX0gPC9iPiBDdXN0b21lciA8L3NwYW4+XHJcbiAgICAgIDxhcHAtam9iY29kZS1zdGF0dXMgW2pvYlZhbHVlXT1cImpvYmRldGFpbFwiPjwvYXBwLWpvYmNvZGUtc3RhdHVzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YXBwLWpvYmNvZGUtb3ZlcnZpZXcgW2pvYlZhbHVlXT1cImpvYmRldGFpbFwiPjwvYXBwLWpvYmNvZGUtb3ZlcnZpZXc+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cInJvdXRlX2xpc3RwcnRcIiAoY2xpY2spPVwiaXNPdmVybGFwUm91dGVTZWN0aW9uID0gdHJ1ZVwiIFtuZ0NsYXNzXT1cInsgJ3Nob3cnOiBpc1Zpc2libGUsICdvdmVybGFwJzogaXNPdmVybGFwUm91dGVTZWN0aW9ufVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJsaXN0aW5nX3RvZ2dsZVwiIChjbGljayk9XCJ0b2dnbGVTaWRlbWVudSgpXCI+XHJcbiAgICA8aW1nIHNyYz1cImFzc2V0cy9pbWFnZXMvcm91dGUuc3ZnXCIgYWx0PVwiXCIgLz5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImxpc3RpbmdfYm94XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5cIiAoY2xpY2spPVwidG9nZ2xlU2lkZW1lbnUoKVwiPlxyXG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImJ0bnBydFwiPlxyXG4gICAgICA8aDI+IExpc3Qgb2YgUm91dGVzIDwvaDI+XHJcbiAgICAgIDxidXR0b24gKGNsaWNrKT1cIm1hc3RlclRvZ2dsZSgpXCI+e3tyb3V0ZXMgJiYgcm91dGVzLmxlbmd0aCA+IDAgJiYgcm91dGVzLmxlbmd0aCA9PT0gc2VsZWN0ZWRSb3V0ZS5zZWxlY3RlZC5sZW5ndGggPyAnVW5jaGVjaycgOiAnQ2hlY2snfX0gQWxsPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8YXBwLWpvYi1yb3V0ZS1saXN0IFtyb3V0ZXNdPVwicm91dGVzXCIgW21hc3RlclJvdXRlc109XCJtYXN0ZXJSb3V0ZXNcIiBbc2VsZWN0ZWRSb3V0ZV09XCJzZWxlY3RlZFJvdXRlXCIgKGNoYW5nZVJvdXRlcyk9XCJyb3V0ZXMgPSAkZXZlbnRcIiAoY2hhbmdlU2VsZWN0ZWRSb3V0ZSk9XCJzZWxlY3RlZFJvdXRlID0gJGV2ZW50XCI+PC9hcHAtam9iLXJvdXRlLWxpc3Q+XHJcblxyXG4gICAgPHBlcmZlY3Qtc2Nyb2xsYmFyPlxyXG4gICAgICA8dWwgKm5nSWY9XCJyb3V0ZXNbJ2xlbmd0aCddID4gMFwiPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbGlzdCBvZiByb3V0ZXNcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpY29ucHJ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJzZWxlY3RlZFJvdXRlLmlzU2VsZWN0ZWQobGlzdClcIlxyXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCIkZXZlbnQgPyBzZWxlY3RSb3V0ZShsaXN0KSA6IG51bGxcIiAvPjxsYWJlbD4mbmJzcDs8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzdW5pdFwiIFtuZ0NsYXNzXT1cImxpc3RbJ3VuaXQnXVwiPnt7bGlzdFsndW5pdCddfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImluZm9pY29uXCI+XHJcbiAgICAgICAgICAgICAgPGltZyAobW91c2VlbnRlcik9XCJ0b2dnbGVyb3V0ZURldGFpbHModHJ1ZSwgbGlzdClcIiAobW91c2VvdXQpPVwidG9nZ2xlcm91dGVEZXRhaWxzKGZhbHNlLCBsaXN0LCB0cnVlKVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZXJvdXRlRGV0YWlscygnY2xpY2snLCBsaXN0KVwiIHNyYz1cImFzc2V0cy9pbWFnZXMvaW5mb19pY29uLnBuZ1wiIFthbHRdPVwiXCIgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrcHJ0Ym94XCI+XHJcbiAgICAgICAgICAgIDxoMj4ge3tsaXN0Wydyb3V0ZV9uYW1lJ119fSA8L2gyPlxyXG4gICAgICAgICAgICA8aDM+e3tsaXN0WydjdXN0b21lcl9uYW1lJ119fSB8IHt7bGlzdFsnbWF0ZXJpYWwnXX19PC9oMz5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tkcm9wcHJ0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBpY2twcnRcIj5cclxuICAgICAgICAgICAgICAgIDxiPlxyXG4gICAgICAgICAgICAgICAgICA8aDQ+e3tsaXN0WydwaWNrdXBfbG9jYXRpb24nXX19PC9oND5cclxuICAgICAgICAgICAgICAgIDwvYj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcHBydFwiPlxyXG4gICAgICAgICAgICAgICAgPGI+XHJcbiAgICAgICAgICAgICAgICAgIDxoND57e2xpc3RbJ2RlbGl2ZXJ5X2xvY2F0aW9uJ119fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICA8L2I+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgICAgPHAgc3R5bGU9XCJjb2xvcjogI2ZmZjtcIiAqbmdJZj1cInJvdXRlcy5sZW5ndGggPT09IDBcIj5ObyBSb3V0ZSBmb3VuZDwvcD5cclxuICAgIDwvcGVyZmVjdC1zY3JvbGxiYXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJyb3V0ZV9kZXRhaWxcIiAqbmdJZj1cImRldGFpbHNDYXJkRW5hYmxlXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2xvc2VidG5yb3V0ZWRldGFpbFwiIChjbGljayk9XCJkZXRhaWxzQ2FyZEVuYWJsZSA9IGZhbHNlOyBwcmV2ZW50TW91c2VvdXQgPSBmYWxzZVwiPlxyXG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiZGVzdGluYXRpb25cIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImR1cmF0aW9uXCI+XHJcbiAgICAgICAgPHAgY2xhc3M9XCJwaWNrcHJ0XCI+PGI+UGlja3VwOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/LnBpY2t1cF9sb2NhdGlvbn19PC9wPlxyXG4gICAgICAgIDxwIGNsYXNzPVwiZHJvcHBydFwiPjxiPkRlbGl2ZXJ5OjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/LmRlbGl2ZXJ5X2xvY2F0aW9ufX0gPC9wPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHNwYW4+PGI+TmFtZTo8L2I+IHt7cm91dGVDYXJkRGV0YWlsPy5yb3V0ZV9uYW1lfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuPjxiPkN1c3RvbWVyOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/LmN1c3RvbWVyX25hbWV9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4+PGI+TWF0ZXJpYWw6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8ubWF0ZXJpYWx9fTwvc3Bhbj5cclxuICAgICAgPHNwYW4+PGI+VHlwZTo8L2I+IHt7cm91dGVDYXJkRGV0YWlsPy51bml0fX08L3NwYW4+XHJcbiAgICAgIDxzcGFuPjxiPkRpc3RhbmNlOjwvYj4ge3tyb3V0ZUNhcmREZXRhaWw/LmVzdGltYXRlZF9kaXN0YW5jZX19PC9zcGFuPlxyXG4gICAgICA8c3Bhbj48Yj5UcmF2ZWwgVGltZTo8L2I+IHt7cm91dGVDYXJkRGV0YWlsPy5lc3RpbWF0ZWRfdGltZX19PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cIm5vdGVzXCI+PGI+Tm90ZXM6PC9iPiB7e3JvdXRlQ2FyZERldGFpbD8ubm90ZX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImNyZWF0ZVR4dFwiPlxyXG4gICAgICA8c21hbGw+XHJcbiAgICAgICAgQ3JlYXRlZCBieSB7e3JvdXRlQ2FyZERldGFpbD8uY3JlYXRlZF9ieV9uYW1lfX0gb24ge3tyb3V0ZUNhcmREZXRhaWw/LmNyZWF0ZWRfYXR9fVxyXG4gICAgICA8L3NtYWxsPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
import { Component, ViewChild } 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/progress-bar";
|
|
7
|
-
export class MapComponent {
|
|
8
|
-
constructor(coolmapService) {
|
|
9
|
-
this.coolmapService = coolmapService;
|
|
10
|
-
this.enableProgress = true;
|
|
11
|
-
this.destroyer$ = new Subject();
|
|
12
|
-
}
|
|
13
|
-
ngAfterViewInit() {
|
|
14
|
-
this.coolmapService.reintiatecoolmap.pipe(takeUntil(this.destroyer$)).subscribe((res) => {
|
|
15
|
-
this.enableProgress = true;
|
|
16
|
-
if (res) {
|
|
17
|
-
this.coolmapService.initiateMapForAddRoute(this.mapDiv.nativeElement).then((res) => {
|
|
18
|
-
this.enableProgress = false;
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
ngOnDestroy() {
|
|
24
|
-
this.destroyer$.next(true);
|
|
25
|
-
this.destroyer$.unsubscribe();
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
MapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.
|
|
29
|
-
MapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.
|
|
31
|
-
type: Component,
|
|
32
|
-
args: [{ selector: 'app-map', template: "<div>\n <mat-progress-bar *ngIf=\"enableProgress\" mode=\"indeterminate\"></mat-progress-bar>\n <div #map class=\"coolmap\" style=\"height: 100vh;\"></div>\n</div>\n" }]
|
|
33
|
-
}], ctorParameters: function () { return [{ type: i1.CoolmapService }]; }, propDecorators: { mapDiv: [{
|
|
34
|
-
type: ViewChild,
|
|
35
|
-
args: ['map', { static: true }]
|
|
36
|
-
}] } });
|
|
37
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Component, ViewChild } 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/progress-bar";
|
|
7
|
+
export class MapComponent {
|
|
8
|
+
constructor(coolmapService) {
|
|
9
|
+
this.coolmapService = coolmapService;
|
|
10
|
+
this.enableProgress = true;
|
|
11
|
+
this.destroyer$ = new Subject();
|
|
12
|
+
}
|
|
13
|
+
ngAfterViewInit() {
|
|
14
|
+
this.coolmapService.reintiatecoolmap.pipe(takeUntil(this.destroyer$)).subscribe((res) => {
|
|
15
|
+
this.enableProgress = true;
|
|
16
|
+
if (res) {
|
|
17
|
+
this.coolmapService.initiateMapForAddRoute(this.mapDiv.nativeElement).then((res) => {
|
|
18
|
+
this.enableProgress = false;
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
this.destroyer$.next(true);
|
|
25
|
+
this.destroyer$.unsubscribe();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
MapComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MapComponent, deps: [{ token: i1.CoolmapService }], target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
+
MapComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: MapComponent, selector: "app-map", viewQueries: [{ propertyName: "mapDiv", first: true, predicate: ["map"], descendants: true, static: true }], ngImport: i0, template: "<div>\r\n <mat-progress-bar *ngIf=\"enableProgress\" mode=\"indeterminate\"></mat-progress-bar>\r\n <div #map class=\"coolmap\" style=\"height: 100vh;\"></div>\r\n</div>\r\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: MapComponent, decorators: [{
|
|
31
|
+
type: Component,
|
|
32
|
+
args: [{ selector: 'app-map', template: "<div>\r\n <mat-progress-bar *ngIf=\"enableProgress\" mode=\"indeterminate\"></mat-progress-bar>\r\n <div #map class=\"coolmap\" style=\"height: 100vh;\"></div>\r\n</div>\r\n" }]
|
|
33
|
+
}], ctorParameters: function () { return [{ type: i1.CoolmapService }]; }, propDecorators: { mapDiv: [{
|
|
34
|
+
type: ViewChild,
|
|
35
|
+
args: ['map', { static: true }]
|
|
36
|
+
}] } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvb2xtYXAvc3JjL2xpYi9jb21wb25lbnQvbWFwL21hcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb29sbWFwL3NyYy9saWIvY29tcG9uZW50L21hcC9tYXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBeUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQVExQyxNQUFNLE9BQU8sWUFBWTtJQUt2QixZQUFvQixjQUE4QjtRQUE5QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFIbEQsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDeEIsZUFBVSxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7SUFFWSxDQUFDO0lBRXhELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDM0YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsSUFBSSxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO29CQUNqRixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztnQkFDOUIsQ0FBQyxDQUFDLENBQUE7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2hDLENBQUM7OzBHQXJCVSxZQUFZOzhGQUFaLFlBQVksNEpDVnpCLGlMQUlBOzRGRE1hLFlBQVk7a0JBTHhCLFNBQVM7K0JBQ0UsU0FBUztxR0FLd0IsTUFBTTtzQkFBaEQsU0FBUzt1QkFBQyxLQUFLLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkRlc3Ryb3ksIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb29sbWFwU2VydmljZSB9IGZyb20gJ0BhZ2dkaXJlY3QvY29vbG1hcC1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLW1hcCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL21hcC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbWFwLmNvbXBvbmVudC5jc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFwQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcclxuICBAVmlld0NoaWxkKCdtYXAnLCB7IHN0YXRpYzogdHJ1ZSB9KSBwdWJsaWMgbWFwRGl2ITogRWxlbWVudFJlZjtcclxuICBlbmFibGVQcm9ncmVzczogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIGRlc3Ryb3llciQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvciggcHVibGljIGNvb2xtYXBTZXJ2aWNlOiBDb29sbWFwU2VydmljZSApIHsgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICB0aGlzLmNvb2xtYXBTZXJ2aWNlLnJlaW50aWF0ZWNvb2xtYXAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95ZXIkKSkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmVuYWJsZVByb2dyZXNzID0gdHJ1ZTtcclxuICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgIHRoaXMuY29vbG1hcFNlcnZpY2UuaW5pdGlhdGVNYXBGb3JBZGRSb3V0ZSh0aGlzLm1hcERpdi5uYXRpdmVFbGVtZW50KS50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgIHRoaXMuZW5hYmxlUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95ZXIkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3llciQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdj5cclxuICA8bWF0LXByb2dyZXNzLWJhciAqbmdJZj1cImVuYWJsZVByb2dyZXNzXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgPGRpdiAjbWFwIGNsYXNzPVwiY29vbG1hcFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDB2aDtcIj48L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|