kwikid-agent-dashboard 0.0.37 → 0.0.39
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/bundles/kwikid-agent-dashboard.umd.js +3655 -1317
- package/bundles/kwikid-agent-dashboard.umd.js.map +1 -1
- package/esm2015/lib/kwikid-agent-dashboard.component.js +39 -120
- package/esm2015/lib/kwikid-agent-dashboard.module.js +26 -35
- package/esm2015/lib/v1/components/action-button/action-button.component.js +91 -0
- package/esm2015/lib/v1/components/customer-details/customer-details.component.js +139 -0
- package/esm2015/lib/v1/components/customer-list/customer-list.component.js +201 -0
- package/esm2015/lib/v1/components/customer-tile/customer-tile.component.js +137 -0
- package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.component.js +54 -0
- package/esm2015/lib/v1/components/customer-tile/status-pill/status-pill.definitions.js +36 -0
- package/esm2015/lib/v1/helpers/maps.helpers.js +46 -0
- package/esm2015/lib/v1/kwikid-agent-dashboard.component.js +177 -0
- package/esm2015/lib/v1/kwikid-agent-dashboard.module.js +120 -0
- package/esm2015/lib/v1/pipes/search-filter.pipe.js +62 -0
- package/esm2015/lib/v1/services/agent.service.js +149 -0
- package/esm2015/lib/v1/services/google-maps.service.js +201 -0
- package/esm2015/lib/v1/services/open-street-maps.service.js +252 -0
- package/esm2015/lib/v2/components/agent-info/agent-info.component.js +20 -0
- package/esm2015/lib/v2/components/agent-info/agent-info.module.js +37 -0
- package/esm2015/lib/v2/components/bottom-sheet/bottom-sheet.component.js +111 -0
- package/esm2015/lib/v2/components/bottom-sheet/bottom-sheet.module.js +41 -0
- package/esm2015/lib/v2/components/components.module.js +79 -0
- package/esm2015/lib/v2/components/map-view/map-view.component.js +39 -0
- package/esm2015/lib/v2/components/map-view/map-view.module.js +37 -0
- package/esm2015/lib/v2/components/primary-actions/primary-actions.component.js +65 -0
- package/esm2015/lib/v2/components/primary-actions/primary-actions.module.js +54 -0
- package/esm2015/lib/v2/components/task-detail/task-detail.component.js +82 -0
- package/esm2015/lib/v2/components/task-detail/task-detail.module.js +41 -0
- package/esm2015/lib/v2/components/task-item/task-item.component.js +107 -0
- package/esm2015/lib/v2/components/task-item/task-item.constant.js +12 -0
- package/esm2015/lib/v2/components/task-item/task-item.module.js +45 -0
- package/esm2015/lib/v2/components/task-item-status/task-item-status.component.js +51 -0
- package/esm2015/lib/v2/components/task-item-status/task-item-status.module.js +19 -0
- package/esm2015/lib/v2/components/task-list/task-list.component.js +186 -0
- package/esm2015/lib/v2/components/task-list/task-list.module.js +57 -0
- package/esm2015/lib/v2/components/task-list-search/task-list-search.component.js +118 -0
- package/esm2015/lib/v2/components/task-list-search/task-list-search.module.js +41 -0
- package/esm2015/lib/v2/components/task-preview/task-preview.component.js +30 -0
- package/esm2015/lib/v2/components/task-preview/task-preview.module.js +37 -0
- package/esm2015/lib/v2/helpers/array.helper.js +10 -0
- package/esm2015/lib/v2/helpers/date.helplers.js +17 -0
- package/esm2015/lib/v2/kwikid-agent-dashboard.component.js +61 -0
- package/esm2015/lib/v2/kwikid-agent-dashboard.module.js +45 -0
- package/esm2015/lib/v2/layout/layout-body/layout-body.component.js +274 -0
- package/esm2015/lib/v2/layout/layout-body/layout-body.module.js +55 -0
- package/esm2015/lib/v2/layout/layout-header/layout-header.component.js +60 -0
- package/esm2015/lib/v2/layout/layout-header/layout-header.module.js +48 -0
- package/esm2015/lib/v2/layout/layout.module.js +18 -0
- package/esm2015/lib/v2/pipes/search-filter.pipe.js +62 -0
- package/fesm2015/kwikid-agent-dashboard.js +3255 -1100
- package/fesm2015/kwikid-agent-dashboard.js.map +1 -1
- package/lib/kwikid-agent-dashboard.component.d.ts +11 -36
- package/lib/kwikid-agent-dashboard.module.d.ts +13 -16
- package/lib/v1/components/action-button/action-button.component.d.ts +18 -0
- package/lib/{components → v1/components}/customer-details/customer-details.component.d.ts +13 -6
- package/lib/{components → v1/components}/customer-list/customer-list.component.d.ts +25 -15
- package/lib/{components → v1/components}/customer-tile/customer-tile.component.d.ts +12 -5
- package/lib/{components → v1/components}/customer-tile/status-pill/status-pill.component.d.ts +6 -2
- package/lib/{components → v1/components}/customer-tile/status-pill/status-pill.definitions.d.ts +1 -1
- package/lib/v1/kwikid-agent-dashboard.component.d.ts +54 -0
- package/lib/v1/kwikid-agent-dashboard.module.d.ts +23 -0
- package/lib/{pipes → v1/pipes}/search-filter.pipe.d.ts +1 -1
- package/lib/{services → v1/services}/agent.service.d.ts +1 -1
- package/lib/{services → v1/services}/google-maps.service.d.ts +4 -4
- package/lib/{services → v1/services}/open-street-maps.service.d.ts +5 -5
- package/lib/v2/components/agent-info/agent-info.component.d.ts +8 -0
- package/lib/v2/components/agent-info/agent-info.module.d.ts +11 -0
- package/lib/v2/components/bottom-sheet/bottom-sheet.component.d.ts +24 -0
- package/lib/v2/components/bottom-sheet/bottom-sheet.module.d.ts +12 -0
- package/lib/v2/components/components.module.d.ts +15 -0
- package/lib/v2/components/map-view/map-view.component.d.ts +10 -0
- package/lib/v2/components/map-view/map-view.module.d.ts +11 -0
- package/lib/v2/components/primary-actions/primary-actions.component.d.ts +14 -0
- package/lib/v2/components/primary-actions/primary-actions.module.d.ts +13 -0
- package/lib/v2/components/task-detail/task-detail.component.d.ts +23 -0
- package/lib/v2/components/task-detail/task-detail.module.d.ts +12 -0
- package/lib/v2/components/task-item/task-item.component.d.ts +23 -0
- package/lib/v2/components/task-item/task-item.constant.d.ts +11 -0
- package/lib/v2/components/task-item/task-item.module.d.ts +13 -0
- package/lib/v2/components/task-item-status/task-item-status.component.d.ts +14 -0
- package/lib/v2/components/task-item-status/task-item-status.module.d.ts +9 -0
- package/lib/v2/components/task-list/task-list.component.d.ts +45 -0
- package/lib/v2/components/task-list/task-list.module.d.ts +16 -0
- package/lib/v2/components/task-list-search/task-list-search.component.d.ts +34 -0
- package/lib/v2/components/task-list-search/task-list-search.module.d.ts +12 -0
- package/lib/v2/components/task-preview/task-preview.component.d.ts +11 -0
- package/lib/v2/components/task-preview/task-preview.module.d.ts +11 -0
- package/lib/v2/helpers/array.helper.d.ts +1 -0
- package/lib/v2/helpers/date.helplers.d.ts +3 -0
- package/lib/v2/kwikid-agent-dashboard.component.d.ts +17 -0
- package/lib/v2/kwikid-agent-dashboard.module.d.ts +13 -0
- package/lib/v2/layout/layout-body/layout-body.component.d.ts +42 -0
- package/lib/v2/layout/layout-body/layout-body.module.d.ts +14 -0
- package/lib/v2/layout/layout-header/layout-header.component.d.ts +20 -0
- package/lib/v2/layout/layout-header/layout-header.module.d.ts +13 -0
- package/lib/v2/layout/layout.module.d.ts +8 -0
- package/lib/v2/pipes/search-filter.pipe.d.ts +25 -0
- package/package.json +2 -2
- package/esm2015/lib/components/customer-details/customer-details.component.js +0 -90
- package/esm2015/lib/components/customer-list/customer-list.component.js +0 -165
- package/esm2015/lib/components/customer-tile/customer-tile.component.js +0 -87
- package/esm2015/lib/components/customer-tile/status-pill/status-pill.component.js +0 -32
- package/esm2015/lib/components/customer-tile/status-pill/status-pill.definitions.js +0 -36
- package/esm2015/lib/helpers/maps.helpers.js +0 -46
- package/esm2015/lib/pipes/search-filter.pipe.js +0 -62
- package/esm2015/lib/services/agent.service.js +0 -153
- package/esm2015/lib/services/google-maps.service.js +0 -201
- package/esm2015/lib/services/open-street-maps.service.js +0 -252
- /package/lib/{helpers → v1/helpers}/maps.helpers.d.ts +0 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { CommonModule } from "@angular/common";
|
|
2
|
+
import { HttpClientJsonpModule, HttpClientModule } from "@angular/common/http";
|
|
3
|
+
import { NgModule } from "@angular/core";
|
|
4
|
+
import { FormsModule, ReactiveFormsModule } from "@angular/forms";
|
|
5
|
+
import { GoogleMapsModule } from "@angular/google-maps";
|
|
6
|
+
import { ScrollingModule } from "@angular/cdk/scrolling";
|
|
7
|
+
import { KwikUIButtonModule, KwikUIInputDateModule, KwikUIInputModule, KwikUIInputDateRangeModule, KwikUIInputSelectModule, KwikUITableModule, KwikUITablePaginationModule, KwikUILabelValuePairModule } from "kwikui";
|
|
8
|
+
import { TuiSidebarModule } from "@taiga-ui/addon-mobile";
|
|
9
|
+
import { TuiActiveZoneModule } from "@taiga-ui/cdk";
|
|
10
|
+
import { TuiDialogModule, TuiDropdownModule, TuiGroupModule, TuiRootModule, TuiSvgModule } from "@taiga-ui/core";
|
|
11
|
+
import { KwikIDFormViewModule } from "kwikid-forms";
|
|
12
|
+
import { CustomerTileComponent } from "./components/customer-tile/customer-tile.component";
|
|
13
|
+
import { CustomerListComponent } from "./components/customer-list/customer-list.component";
|
|
14
|
+
import { Ng2SearchPipe } from "./pipes/search-filter.pipe";
|
|
15
|
+
import { StatusPillComponent } from "./components/customer-tile/status-pill/status-pill.component";
|
|
16
|
+
import { CustomerDetailsComponent } from "./components/customer-details/customer-details.component";
|
|
17
|
+
import { KwikIDAgentDashboardComponentV1 } from "./kwikid-agent-dashboard.component";
|
|
18
|
+
import { ActionButtonComponent } from "./components/action-button/action-button.component";
|
|
19
|
+
import * as i0 from "@angular/core";
|
|
20
|
+
export class KwikIDAgentDashboardModuleV1 {
|
|
21
|
+
}
|
|
22
|
+
/** @nocollapse */ KwikIDAgentDashboardModuleV1.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardModuleV1, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
23
|
+
/** @nocollapse */ KwikIDAgentDashboardModuleV1.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardModuleV1, declarations: [KwikIDAgentDashboardComponentV1,
|
|
24
|
+
CustomerListComponent,
|
|
25
|
+
CustomerTileComponent,
|
|
26
|
+
Ng2SearchPipe,
|
|
27
|
+
StatusPillComponent,
|
|
28
|
+
CustomerDetailsComponent,
|
|
29
|
+
ActionButtonComponent], imports: [CommonModule,
|
|
30
|
+
HttpClientModule,
|
|
31
|
+
FormsModule,
|
|
32
|
+
ReactiveFormsModule,
|
|
33
|
+
KwikUIButtonModule,
|
|
34
|
+
KwikUIInputModule,
|
|
35
|
+
KwikUIInputDateModule,
|
|
36
|
+
KwikUIInputDateRangeModule,
|
|
37
|
+
KwikUIInputSelectModule,
|
|
38
|
+
KwikUILabelValuePairModule,
|
|
39
|
+
KwikUITableModule,
|
|
40
|
+
KwikUITablePaginationModule,
|
|
41
|
+
KwikIDFormViewModule,
|
|
42
|
+
TuiRootModule,
|
|
43
|
+
TuiDialogModule,
|
|
44
|
+
TuiDropdownModule,
|
|
45
|
+
TuiSidebarModule,
|
|
46
|
+
TuiActiveZoneModule,
|
|
47
|
+
TuiGroupModule,
|
|
48
|
+
TuiSvgModule,
|
|
49
|
+
ScrollingModule,
|
|
50
|
+
GoogleMapsModule,
|
|
51
|
+
HttpClientModule,
|
|
52
|
+
HttpClientJsonpModule], exports: [KwikIDAgentDashboardComponentV1] });
|
|
53
|
+
/** @nocollapse */ KwikIDAgentDashboardModuleV1.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardModuleV1, imports: [[
|
|
54
|
+
CommonModule,
|
|
55
|
+
HttpClientModule,
|
|
56
|
+
FormsModule,
|
|
57
|
+
ReactiveFormsModule,
|
|
58
|
+
KwikUIButtonModule,
|
|
59
|
+
KwikUIInputModule,
|
|
60
|
+
KwikUIInputDateModule,
|
|
61
|
+
KwikUIInputDateRangeModule,
|
|
62
|
+
KwikUIInputSelectModule,
|
|
63
|
+
KwikUILabelValuePairModule,
|
|
64
|
+
KwikUITableModule,
|
|
65
|
+
KwikUITablePaginationModule,
|
|
66
|
+
KwikIDFormViewModule,
|
|
67
|
+
TuiRootModule,
|
|
68
|
+
TuiDialogModule,
|
|
69
|
+
TuiDropdownModule,
|
|
70
|
+
TuiSidebarModule,
|
|
71
|
+
TuiActiveZoneModule,
|
|
72
|
+
TuiGroupModule,
|
|
73
|
+
TuiSvgModule,
|
|
74
|
+
ScrollingModule,
|
|
75
|
+
GoogleMapsModule,
|
|
76
|
+
HttpClientModule,
|
|
77
|
+
HttpClientJsonpModule
|
|
78
|
+
]] });
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikIDAgentDashboardModuleV1, decorators: [{
|
|
80
|
+
type: NgModule,
|
|
81
|
+
args: [{
|
|
82
|
+
declarations: [
|
|
83
|
+
KwikIDAgentDashboardComponentV1,
|
|
84
|
+
CustomerListComponent,
|
|
85
|
+
CustomerTileComponent,
|
|
86
|
+
Ng2SearchPipe,
|
|
87
|
+
StatusPillComponent,
|
|
88
|
+
CustomerDetailsComponent,
|
|
89
|
+
ActionButtonComponent
|
|
90
|
+
],
|
|
91
|
+
imports: [
|
|
92
|
+
CommonModule,
|
|
93
|
+
HttpClientModule,
|
|
94
|
+
FormsModule,
|
|
95
|
+
ReactiveFormsModule,
|
|
96
|
+
KwikUIButtonModule,
|
|
97
|
+
KwikUIInputModule,
|
|
98
|
+
KwikUIInputDateModule,
|
|
99
|
+
KwikUIInputDateRangeModule,
|
|
100
|
+
KwikUIInputSelectModule,
|
|
101
|
+
KwikUILabelValuePairModule,
|
|
102
|
+
KwikUITableModule,
|
|
103
|
+
KwikUITablePaginationModule,
|
|
104
|
+
KwikIDFormViewModule,
|
|
105
|
+
TuiRootModule,
|
|
106
|
+
TuiDialogModule,
|
|
107
|
+
TuiDropdownModule,
|
|
108
|
+
TuiSidebarModule,
|
|
109
|
+
TuiActiveZoneModule,
|
|
110
|
+
TuiGroupModule,
|
|
111
|
+
TuiSvgModule,
|
|
112
|
+
ScrollingModule,
|
|
113
|
+
GoogleMapsModule,
|
|
114
|
+
HttpClientModule,
|
|
115
|
+
HttpClientJsonpModule
|
|
116
|
+
],
|
|
117
|
+
exports: [KwikIDAgentDashboardComponentV1]
|
|
118
|
+
}]
|
|
119
|
+
}] });
|
|
120
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3dpa2lkLWFnZW50LWRhc2hib2FyZC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rd2lraWQtYWdlbnQtZGFzaGJvYXJkL3NyYy9saWIvdjEva3dpa2lkLWFnZW50LWRhc2hib2FyZC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUV6RCxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIsMEJBQTBCLEVBQzFCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMzQixNQUFNLFFBQVEsQ0FBQztBQUVoQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMxRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGFBQWEsRUFDYixZQUFZLEVBQ2IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDcEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDM0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFDM0YsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBQ25HLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSwrQkFBK0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDOztBQTZDM0YsTUFBTSxPQUFPLDRCQUE0Qjs7NklBQTVCLDRCQUE0Qjs4SUFBNUIsNEJBQTRCLGlCQXpDckMsK0JBQStCO1FBQy9CLHFCQUFxQjtRQUNyQixxQkFBcUI7UUFDckIsYUFBYTtRQUNiLG1CQUFtQjtRQUNuQix3QkFBd0I7UUFDeEIscUJBQXFCLGFBR3JCLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsV0FBVztRQUNYLG1CQUFtQjtRQUVuQixrQkFBa0I7UUFDbEIsaUJBQWlCO1FBQ2pCLHFCQUFxQjtRQUNyQiwwQkFBMEI7UUFDMUIsdUJBQXVCO1FBQ3ZCLDBCQUEwQjtRQUMxQixpQkFBaUI7UUFDakIsMkJBQTJCO1FBRTNCLG9CQUFvQjtRQUVwQixhQUFhO1FBQ2IsZUFBZTtRQUNmLGlCQUFpQjtRQUNqQixnQkFBZ0I7UUFDaEIsbUJBQW1CO1FBQ25CLGNBQWM7UUFDZCxZQUFZO1FBRVosZUFBZTtRQUVmLGdCQUFnQjtRQUNoQixnQkFBZ0I7UUFDaEIscUJBQXFCLGFBRWIsK0JBQStCOzhJQUU5Qiw0QkFBNEIsWUFqQzlCO1lBQ1AsWUFBWTtZQUNaLGdCQUFnQjtZQUNoQixXQUFXO1lBQ1gsbUJBQW1CO1lBRW5CLGtCQUFrQjtZQUNsQixpQkFBaUI7WUFDakIscUJBQXFCO1lBQ3JCLDBCQUEwQjtZQUMxQix1QkFBdUI7WUFDdkIsMEJBQTBCO1lBQzFCLGlCQUFpQjtZQUNqQiwyQkFBMkI7WUFFM0Isb0JBQW9CO1lBRXBCLGFBQWE7WUFDYixlQUFlO1lBQ2YsaUJBQWlCO1lBQ2pCLGdCQUFnQjtZQUNoQixtQkFBbUI7WUFDbkIsY0FBYztZQUNkLFlBQVk7WUFFWixlQUFlO1lBRWYsZ0JBQWdCO1lBQ2hCLGdCQUFnQjtZQUNoQixxQkFBcUI7U0FDdEI7NEZBR1UsNEJBQTRCO2tCQTNDeEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osK0JBQStCO3dCQUMvQixxQkFBcUI7d0JBQ3JCLHFCQUFxQjt3QkFDckIsYUFBYTt3QkFDYixtQkFBbUI7d0JBQ25CLHdCQUF3Qjt3QkFDeEIscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUVuQixrQkFBa0I7d0JBQ2xCLGlCQUFpQjt3QkFDakIscUJBQXFCO3dCQUNyQiwwQkFBMEI7d0JBQzFCLHVCQUF1Qjt3QkFDdkIsMEJBQTBCO3dCQUMxQixpQkFBaUI7d0JBQ2pCLDJCQUEyQjt3QkFFM0Isb0JBQW9CO3dCQUVwQixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsaUJBQWlCO3dCQUNqQixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxZQUFZO3dCQUVaLGVBQWU7d0JBRWYsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLHFCQUFxQjtxQkFDdEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsK0JBQStCLENBQUM7aUJBQzNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSHR0cENsaWVudEpzb25wTW9kdWxlLCBIdHRwQ2xpZW50TW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgR29vZ2xlTWFwc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9nb29nbGUtbWFwc1wiO1xuaW1wb3J0IHsgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9zY3JvbGxpbmdcIjtcblxuaW1wb3J0IHtcbiAgS3dpa1VJQnV0dG9uTW9kdWxlLFxuICBLd2lrVUlJbnB1dERhdGVNb2R1bGUsXG4gIEt3aWtVSUlucHV0TW9kdWxlLFxuICBLd2lrVUlJbnB1dERhdGVSYW5nZU1vZHVsZSxcbiAgS3dpa1VJSW5wdXRTZWxlY3RNb2R1bGUsXG4gIEt3aWtVSVRhYmxlTW9kdWxlLFxuICBLd2lrVUlUYWJsZVBhZ2luYXRpb25Nb2R1bGUsXG4gIEt3aWtVSUxhYmVsVmFsdWVQYWlyTW9kdWxlXG59IGZyb20gXCJrd2lrdWlcIjtcblxuaW1wb3J0IHsgVHVpU2lkZWJhck1vZHVsZSB9IGZyb20gXCJAdGFpZ2EtdWkvYWRkb24tbW9iaWxlXCI7XG5pbXBvcnQgeyBUdWlBY3RpdmVab25lTW9kdWxlIH0gZnJvbSBcIkB0YWlnYS11aS9jZGtcIjtcbmltcG9ydCB7XG4gIFR1aURpYWxvZ01vZHVsZSxcbiAgVHVpRHJvcGRvd25Nb2R1bGUsXG4gIFR1aUdyb3VwTW9kdWxlLFxuICBUdWlSb290TW9kdWxlLFxuICBUdWlTdmdNb2R1bGVcbn0gZnJvbSBcIkB0YWlnYS11aS9jb3JlXCI7XG5pbXBvcnQgeyBLd2lrSURGb3JtVmlld01vZHVsZSB9IGZyb20gXCJrd2lraWQtZm9ybXNcIjtcbmltcG9ydCB7IEN1c3RvbWVyVGlsZUNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9jdXN0b21lci10aWxlLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ3VzdG9tZXJMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9jdXN0b21lci1saXN0L2N1c3RvbWVyLWxpc3QuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBOZzJTZWFyY2hQaXBlIH0gZnJvbSBcIi4vcGlwZXMvc2VhcmNoLWZpbHRlci5waXBlXCI7XG5pbXBvcnQgeyBTdGF0dXNQaWxsQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9jdXN0b21lci10aWxlL3N0YXR1cy1waWxsL3N0YXR1cy1waWxsLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ3VzdG9tZXJEZXRhaWxzQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9jdXN0b21lci1kZXRhaWxzL2N1c3RvbWVyLWRldGFpbHMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBLd2lrSURBZ2VudERhc2hib2FyZENvbXBvbmVudFYxIH0gZnJvbSBcIi4va3dpa2lkLWFnZW50LWRhc2hib2FyZC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEFjdGlvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvYWN0aW9uLWJ1dHRvbi9hY3Rpb24tYnV0dG9uLmNvbXBvbmVudFwiO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBLd2lrSURBZ2VudERhc2hib2FyZENvbXBvbmVudFYxLFxuICAgIEN1c3RvbWVyTGlzdENvbXBvbmVudCxcbiAgICBDdXN0b21lclRpbGVDb21wb25lbnQsXG4gICAgTmcyU2VhcmNoUGlwZSxcbiAgICBTdGF0dXNQaWxsQ29tcG9uZW50LFxuICAgIEN1c3RvbWVyRGV0YWlsc0NvbXBvbmVudCxcbiAgICBBY3Rpb25CdXR0b25Db21wb25lbnRcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG5cbiAgICBLd2lrVUlCdXR0b25Nb2R1bGUsXG4gICAgS3dpa1VJSW5wdXRNb2R1bGUsXG4gICAgS3dpa1VJSW5wdXREYXRlTW9kdWxlLFxuICAgIEt3aWtVSUlucHV0RGF0ZVJhbmdlTW9kdWxlLFxuICAgIEt3aWtVSUlucHV0U2VsZWN0TW9kdWxlLFxuICAgIEt3aWtVSUxhYmVsVmFsdWVQYWlyTW9kdWxlLFxuICAgIEt3aWtVSVRhYmxlTW9kdWxlLFxuICAgIEt3aWtVSVRhYmxlUGFnaW5hdGlvbk1vZHVsZSxcblxuICAgIEt3aWtJREZvcm1WaWV3TW9kdWxlLFxuXG4gICAgVHVpUm9vdE1vZHVsZSxcbiAgICBUdWlEaWFsb2dNb2R1bGUsXG4gICAgVHVpRHJvcGRvd25Nb2R1bGUsXG4gICAgVHVpU2lkZWJhck1vZHVsZSxcbiAgICBUdWlBY3RpdmVab25lTW9kdWxlLFxuICAgIFR1aUdyb3VwTW9kdWxlLFxuICAgIFR1aVN2Z01vZHVsZSxcblxuICAgIFNjcm9sbGluZ01vZHVsZSxcblxuICAgIEdvb2dsZU1hcHNNb2R1bGUsXG4gICAgSHR0cENsaWVudE1vZHVsZSxcbiAgICBIdHRwQ2xpZW50SnNvbnBNb2R1bGVcbiAgXSxcbiAgZXhwb3J0czogW0t3aWtJREFnZW50RGFzaGJvYXJkQ29tcG9uZW50VjFdXG59KVxuZXhwb3J0IGNsYXNzIEt3aWtJREFnZW50RGFzaGJvYXJkTW9kdWxlVjEge31cbiJdfQ==
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Pipe, Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class Ng2SearchPipe {
|
|
4
|
+
/**
|
|
5
|
+
* @param items object from array
|
|
6
|
+
* @param term term's search
|
|
7
|
+
* @param excludes array of strings which will ignored during search
|
|
8
|
+
*/
|
|
9
|
+
transform(items, term, excludes = []) {
|
|
10
|
+
if (!term || !items)
|
|
11
|
+
return items;
|
|
12
|
+
return Ng2SearchPipe.filter(items, term, excludes);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @param items List of items to filter
|
|
17
|
+
* @param term a string term to compare with every property of the list
|
|
18
|
+
* @param excludes List of keys which will be ignored during search
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
static filter(items, term, excludes) {
|
|
22
|
+
const toCompare = term.toLowerCase();
|
|
23
|
+
function checkInside(item, term) {
|
|
24
|
+
if (typeof item === "string" &&
|
|
25
|
+
item.toString().toLowerCase().includes(toCompare)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
for (const property in item) {
|
|
29
|
+
if (item[property] === null ||
|
|
30
|
+
item[property] == undefined ||
|
|
31
|
+
excludes.includes(property)) {
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (typeof item[property] === "object") {
|
|
35
|
+
if (checkInside(item[property], term)) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
else if (item[property].toString().toLowerCase().includes(toCompare)) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
return items.filter((item) => {
|
|
46
|
+
return checkInside(item, term);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
/** @nocollapse */ Ng2SearchPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Ng2SearchPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
51
|
+
/** @nocollapse */ Ng2SearchPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Ng2SearchPipe, name: "filter", pure: false });
|
|
52
|
+
/** @nocollapse */ Ng2SearchPipe.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Ng2SearchPipe });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: Ng2SearchPipe, decorators: [{
|
|
54
|
+
type: Pipe,
|
|
55
|
+
args: [{
|
|
56
|
+
name: "filter",
|
|
57
|
+
pure: false
|
|
58
|
+
}]
|
|
59
|
+
}, {
|
|
60
|
+
type: Injectable
|
|
61
|
+
}] });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWZpbHRlci5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWFnZW50LWRhc2hib2FyZC9zcmMvbGliL3YxL3BpcGVzL3NlYXJjaC1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBT2hFLE1BQU0sT0FBTyxhQUFhO0lBQ3hCOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBVSxFQUFFLElBQVksRUFBRSxXQUFnQixFQUFFO1FBQ3BELElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFFbEMsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxNQUFNLENBQ1gsS0FBb0MsRUFDcEMsSUFBWSxFQUNaLFFBQWE7UUFFYixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFFckMsU0FBUyxXQUFXLENBQUMsSUFBUyxFQUFFLElBQVk7WUFDMUMsSUFDRSxPQUFPLElBQUksS0FBSyxRQUFRO2dCQUN4QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUNqRDtnQkFDQSxPQUFPLElBQUksQ0FBQzthQUNiO1lBRUQsS0FBSyxNQUFNLFFBQVEsSUFBSSxJQUFJLEVBQUU7Z0JBQzNCLElBQ0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUk7b0JBQ3ZCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTO29CQUMzQixRQUFRLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUMzQjtvQkFDQSxTQUFTO2lCQUNWO2dCQUNELElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssUUFBUSxFQUFFO29CQUN0QyxJQUFJLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDLEVBQUU7d0JBQ3JDLE9BQU8sSUFBSSxDQUFDO3FCQUNiO2lCQUNGO3FCQUFNLElBQ0wsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFDM0Q7b0JBQ0EsT0FBTyxJQUFJLENBQUM7aUJBQ2I7YUFDRjtZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQzNCLE9BQU8sV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OzhIQTFEVSxhQUFhOzRIQUFiLGFBQWE7a0lBQWIsYUFBYTs0RkFBYixhQUFhO2tCQUx6QixJQUFJO21CQUFDO29CQUNKLElBQUksRUFBRSxRQUFRO29CQUNkLElBQUksRUFBRSxLQUFLO2lCQUNaOztrQkFDQSxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5cbkBQaXBlKHtcbiAgbmFtZTogXCJmaWx0ZXJcIixcbiAgcHVyZTogZmFsc2Vcbn0pXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmcyU2VhcmNoUGlwZSBpbXBsZW1lbnRzIFBpcGVUcmFuc2Zvcm0ge1xuICAvKipcbiAgICogQHBhcmFtIGl0ZW1zIG9iamVjdCBmcm9tIGFycmF5XG4gICAqIEBwYXJhbSB0ZXJtIHRlcm0ncyBzZWFyY2hcbiAgICogQHBhcmFtIGV4Y2x1ZGVzIGFycmF5IG9mIHN0cmluZ3Mgd2hpY2ggd2lsbCBpZ25vcmVkIGR1cmluZyBzZWFyY2hcbiAgICovXG4gIHRyYW5zZm9ybShpdGVtczogYW55LCB0ZXJtOiBzdHJpbmcsIGV4Y2x1ZGVzOiBhbnkgPSBbXSk6IGFueSB7XG4gICAgaWYgKCF0ZXJtIHx8ICFpdGVtcykgcmV0dXJuIGl0ZW1zO1xuXG4gICAgcmV0dXJuIE5nMlNlYXJjaFBpcGUuZmlsdGVyKGl0ZW1zLCB0ZXJtLCBleGNsdWRlcyk7XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGl0ZW1zIExpc3Qgb2YgaXRlbXMgdG8gZmlsdGVyXG4gICAqIEBwYXJhbSB0ZXJtICBhIHN0cmluZyB0ZXJtIHRvIGNvbXBhcmUgd2l0aCBldmVyeSBwcm9wZXJ0eSBvZiB0aGUgbGlzdFxuICAgKiBAcGFyYW0gZXhjbHVkZXMgTGlzdCBvZiBrZXlzIHdoaWNoIHdpbGwgYmUgaWdub3JlZCBkdXJpbmcgc2VhcmNoXG4gICAqXG4gICAqL1xuICBzdGF0aWMgZmlsdGVyKFxuICAgIGl0ZW1zOiBBcnJheTx7IFtrZXk6IHN0cmluZ106IGFueSB9PixcbiAgICB0ZXJtOiBzdHJpbmcsXG4gICAgZXhjbHVkZXM6IGFueVxuICApOiBBcnJheTx7IFtrZXk6IHN0cmluZ106IGFueSB9PiB7XG4gICAgY29uc3QgdG9Db21wYXJlID0gdGVybS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgZnVuY3Rpb24gY2hlY2tJbnNpZGUoaXRlbTogYW55LCB0ZXJtOiBzdHJpbmcpIHtcbiAgICAgIGlmIChcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgaXRlbS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModG9Db21wYXJlKVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IHByb3BlcnR5IGluIGl0ZW0pIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGl0ZW1bcHJvcGVydHldID09PSBudWxsIHx8XG4gICAgICAgICAgaXRlbVtwcm9wZXJ0eV0gPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgZXhjbHVkZXMuaW5jbHVkZXMocHJvcGVydHkpXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVtwcm9wZXJ0eV0gPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICBpZiAoY2hlY2tJbnNpZGUoaXRlbVtwcm9wZXJ0eV0sIHRlcm0pKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgaXRlbVtwcm9wZXJ0eV0udG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRvQ29tcGFyZSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbXMuZmlsdGVyKChpdGVtKSA9PiB7XG4gICAgICByZXR1cm4gY2hlY2tJbnNpZGUoaXRlbSwgdGVybSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { EStatus } from "../components/customer-tile/status-pill/status-pill.definitions";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AgentService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.isListOpen = true;
|
|
7
|
+
this.showMapview = false;
|
|
8
|
+
this.addTaskForm = {
|
|
9
|
+
key: "ADD_TASK",
|
|
10
|
+
title: "Add Task",
|
|
11
|
+
fields: [
|
|
12
|
+
{
|
|
13
|
+
key: "name",
|
|
14
|
+
label: "Customer Name",
|
|
15
|
+
validators: {
|
|
16
|
+
required: true
|
|
17
|
+
},
|
|
18
|
+
properties: {
|
|
19
|
+
placeholder: "Please enter the Customer Name",
|
|
20
|
+
readOnly: false,
|
|
21
|
+
case: "default"
|
|
22
|
+
},
|
|
23
|
+
type: "text"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
key: "phone",
|
|
27
|
+
label: "Phone Number",
|
|
28
|
+
validators: {
|
|
29
|
+
required: true
|
|
30
|
+
},
|
|
31
|
+
properties: {
|
|
32
|
+
countryCode: "+91",
|
|
33
|
+
removeCountryCodeFromValue: true,
|
|
34
|
+
phoneMaskAfterCountryCode: "##########",
|
|
35
|
+
placeholder: "Please enter your Mobile Number",
|
|
36
|
+
readOnly: false
|
|
37
|
+
},
|
|
38
|
+
type: "phone"
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: "address",
|
|
42
|
+
label: "Address",
|
|
43
|
+
validators: {
|
|
44
|
+
required: true
|
|
45
|
+
},
|
|
46
|
+
properties: {
|
|
47
|
+
placeholder: "Please enter the Address",
|
|
48
|
+
readOnly: false,
|
|
49
|
+
case: "default"
|
|
50
|
+
},
|
|
51
|
+
type: "text"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
key: "city",
|
|
55
|
+
label: "City",
|
|
56
|
+
validators: {
|
|
57
|
+
required: true
|
|
58
|
+
},
|
|
59
|
+
properties: {
|
|
60
|
+
placeholder: "Please enter the City",
|
|
61
|
+
readOnly: false,
|
|
62
|
+
case: "default"
|
|
63
|
+
},
|
|
64
|
+
type: "text"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
key: "location",
|
|
68
|
+
label: "Location URL",
|
|
69
|
+
validators: {
|
|
70
|
+
required: true
|
|
71
|
+
},
|
|
72
|
+
properties: {
|
|
73
|
+
placeholder: "Please enter the Location URL",
|
|
74
|
+
readOnly: false,
|
|
75
|
+
case: "default"
|
|
76
|
+
},
|
|
77
|
+
type: "text"
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
properties: {
|
|
81
|
+
header: {
|
|
82
|
+
title: {
|
|
83
|
+
hidden: true,
|
|
84
|
+
label: "Add Task"
|
|
85
|
+
},
|
|
86
|
+
steps: {
|
|
87
|
+
hidden: true
|
|
88
|
+
},
|
|
89
|
+
logo: {
|
|
90
|
+
hidden: true
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
footer: {
|
|
94
|
+
viewFormsButton: {
|
|
95
|
+
hidden: true,
|
|
96
|
+
label: "View Forms"
|
|
97
|
+
},
|
|
98
|
+
saveButton: {
|
|
99
|
+
hidden: false,
|
|
100
|
+
label: "Submit"
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
this.notRequiredStatus = [
|
|
106
|
+
EStatus.REJECTED,
|
|
107
|
+
EStatus.AFTER_AUDIT,
|
|
108
|
+
EStatus.COMPLETE,
|
|
109
|
+
EStatus.SESSION_EXPIRED,
|
|
110
|
+
EStatus.KYC_REJECTED,
|
|
111
|
+
EStatus.KYC_RESULT_APPROVED,
|
|
112
|
+
EStatus.KYC_RESULT_REJECTED,
|
|
113
|
+
EStatus.KYC_RESULT_UNDER_REVIEW,
|
|
114
|
+
EStatus.KYC_REQUEST_REJECTED
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
ngOnInit() { }
|
|
118
|
+
setAgentConfig(config) {
|
|
119
|
+
this.config = config;
|
|
120
|
+
}
|
|
121
|
+
toggleMapview() {
|
|
122
|
+
this.showMapview = !this.showMapview;
|
|
123
|
+
}
|
|
124
|
+
canStartJourney(status) {
|
|
125
|
+
var _a, _b;
|
|
126
|
+
const noneEditableStatus = (_b = (_a = this.config.dashboard) === null || _a === void 0 ? void 0 : _a.cannotStartJourney) !== null && _b !== void 0 ? _b : this.notRequiredStatus;
|
|
127
|
+
if (noneEditableStatus.includes(status)) {
|
|
128
|
+
return false;
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
canPlotMarkers(status) {
|
|
133
|
+
var _a, _b;
|
|
134
|
+
const nonePlottingSessions = (_b = (_a = this.config.dashboard) === null || _a === void 0 ? void 0 : _a.dontPlotMarkers) !== null && _b !== void 0 ? _b : [];
|
|
135
|
+
if (nonePlottingSessions.includes(status)) {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/** @nocollapse */ AgentService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AgentService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
142
|
+
/** @nocollapse */ AgentService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AgentService, providedIn: "root" });
|
|
143
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: AgentService, decorators: [{
|
|
144
|
+
type: Injectable,
|
|
145
|
+
args: [{
|
|
146
|
+
providedIn: "root"
|
|
147
|
+
}]
|
|
148
|
+
}], ctorParameters: function () { return []; } });
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQvc3JjL2xpYi92MS9zZXJ2aWNlcy9hZ2VudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlFQUFpRSxDQUFDOztBQUsxRixNQUFNLE9BQU8sWUFBWTtJQXlIdkI7UUF0SEEsZUFBVSxHQUFHLElBQUksQ0FBQztRQUlsQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUlwQixnQkFBVyxHQUFHO1lBQ1osR0FBRyxFQUFFLFVBQVU7WUFDZixLQUFLLEVBQUUsVUFBVTtZQUNqQixNQUFNLEVBQUU7Z0JBQ047b0JBQ0UsR0FBRyxFQUFFLE1BQU07b0JBQ1gsS0FBSyxFQUFFLGVBQWU7b0JBQ3RCLFVBQVUsRUFBRTt3QkFDVixRQUFRLEVBQUUsSUFBSTtxQkFDZjtvQkFDRCxVQUFVLEVBQUU7d0JBQ1YsV0FBVyxFQUFFLGdDQUFnQzt3QkFDN0MsUUFBUSxFQUFFLEtBQUs7d0JBQ2YsSUFBSSxFQUFFLFNBQVM7cUJBQ2hCO29CQUNELElBQUksRUFBRSxNQUFNO2lCQUNiO2dCQUNEO29CQUNFLEdBQUcsRUFBRSxPQUFPO29CQUNaLEtBQUssRUFBRSxjQUFjO29CQUNyQixVQUFVLEVBQUU7d0JBQ1YsUUFBUSxFQUFFLElBQUk7cUJBQ2Y7b0JBQ0QsVUFBVSxFQUFFO3dCQUNWLFdBQVcsRUFBRSxLQUFLO3dCQUNsQiwwQkFBMEIsRUFBRSxJQUFJO3dCQUNoQyx5QkFBeUIsRUFBRSxZQUFZO3dCQUN2QyxXQUFXLEVBQUUsaUNBQWlDO3dCQUM5QyxRQUFRLEVBQUUsS0FBSztxQkFDaEI7b0JBQ0QsSUFBSSxFQUFFLE9BQU87aUJBQ2Q7Z0JBQ0Q7b0JBQ0UsR0FBRyxF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VSxZQUFZO2lJQUFaLFlBQVksY0FGWCxNQUFNOzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBFU3RhdHVzIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvY3VzdG9tZXItdGlsZS9zdGF0dXMtcGlsbC9zdGF0dXMtcGlsbC5kZWZpbml0aW9uc1wiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIEFnZW50U2VydmljZSB7XG4gIGNvbmZpZztcblxuICBpc0xpc3RPcGVuID0gdHJ1ZTtcblxuICBpc01vYmlsZVZpZXc7XG5cbiAgc2hvd01hcHZpZXcgPSBmYWxzZTtcblxuICBjdXJyZW50VGFza0RldGFpbHM7XG5cbiAgYWRkVGFza0Zvcm0gPSB7XG4gICAga2V5OiBcIkFERF9UQVNLXCIsXG4gICAgdGl0bGU6IFwiQWRkIFRhc2tcIixcbiAgICBmaWVsZHM6IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiBcIm5hbWVcIixcbiAgICAgICAgbGFiZWw6IFwiQ3VzdG9tZXIgTmFtZVwiLFxuICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIlBsZWFzZSBlbnRlciB0aGUgQ3VzdG9tZXIgTmFtZVwiLFxuICAgICAgICAgIHJlYWRPbmx5OiBmYWxzZSxcbiAgICAgICAgICBjYXNlOiBcImRlZmF1bHRcIlxuICAgICAgICB9LFxuICAgICAgICB0eXBlOiBcInRleHRcIlxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiBcInBob25lXCIsXG4gICAgICAgIGxhYmVsOiBcIlBob25lIE51bWJlclwiLFxuICAgICAgICB2YWxpZGF0b3JzOiB7XG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWVcbiAgICAgICAgfSxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGNvdW50cnlDb2RlOiBcIis5MVwiLFxuICAgICAgICAgIHJlbW92ZUNvdW50cnlDb2RlRnJvbVZhbHVlOiB0cnVlLFxuICAgICAgICAgIHBob25lTWFza0FmdGVyQ291bnRyeUNvZGU6IFwiIyMjIyMjIyMjI1wiLFxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBcIlBsZWFzZSBlbnRlciB5b3VyIE1vYmlsZSBOdW1iZXJcIixcbiAgICAgICAgICByZWFkT25seTogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogXCJwaG9uZVwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwiYWRkcmVzc1wiLFxuICAgICAgICBsYWJlbDogXCJBZGRyZXNzXCIsXG4gICAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgcGxhY2Vob2xkZXI6IFwiUGxlYXNlIGVudGVyIHRoZSBBZGRyZXNzXCIsXG4gICAgICAgICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICAgIGNhc2U6IFwiZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFwidGV4dFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwiY2l0eVwiLFxuICAgICAgICBsYWJlbDogXCJDaXR5XCIsXG4gICAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgcGxhY2Vob2xkZXI6IFwiUGxlYXNlIGVudGVyIHRoZSBDaXR5XCIsXG4gICAgICAgICAgcmVhZE9ubHk6IGZhbHNlLFxuICAgICAgICAgIGNhc2U6IFwiZGVmYXVsdFwiXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFwidGV4dFwiXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBrZXk6IFwibG9jYXRpb25cIixcbiAgICAgICAgbGFiZWw6IFwiTG9jYXRpb24gVVJMXCIsXG4gICAgICAgIHZhbGlkYXRvcnM6IHtcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgcGxhY2Vob2xkZXI6IFwiUGxlYXNlIGVudGVyIHRoZSBMb2NhdGlvbiBVUkxcIixcbiAgICAgICAgICByZWFkT25seTogZmFsc2UsXG4gICAgICAgICAgY2FzZTogXCJkZWZhdWx0XCJcbiAgICAgICAgfSxcbiAgICAgICAgdHlwZTogXCJ0ZXh0XCJcbiAgICAgIH1cbiAgICBdLFxuICAgIHByb3BlcnRpZXM6IHtcbiAgICAgIGhlYWRlcjoge1xuICAgICAgICB0aXRsZToge1xuICAgICAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgICAgICBsYWJlbDogXCJBZGQgVGFza1wiXG4gICAgICAgIH0sXG4gICAgICAgIHN0ZXBzOiB7XG4gICAgICAgICAgaGlkZGVuOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIGxvZ286IHtcbiAgICAgICAgICBoaWRkZW46IHRydWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGZvb3Rlcjoge1xuICAgICAgICB2aWV3Rm9ybXNCdXR0b246IHtcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgICAgbGFiZWw6IFwiVmlldyBGb3Jtc1wiXG4gICAgICAgIH0sXG4gICAgICAgIHNhdmVCdXR0b246IHtcbiAgICAgICAgICBoaWRkZW46IGZhbHNlLFxuICAgICAgICAgIGxhYmVsOiBcIlN1Ym1pdFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgbm90UmVxdWlyZWRTdGF0dXMgPSBbXG4gICAgRVN0YXR1cy5SRUpFQ1RFRCxcbiAgICBFU3RhdHVzLkFGVEVSX0FVRElULFxuICAgIEVTdGF0dXMuQ09NUExFVEUsXG4gICAgRVN0YXR1cy5TRVNTSU9OX0VYUElSRUQsXG4gICAgRVN0YXR1cy5LWUNfUkVKRUNURUQsXG4gICAgRVN0YXR1cy5LWUNfUkVTVUxUX0FQUFJPVkVELFxuICAgIEVTdGF0dXMuS1lDX1JFU1VMVF9SRUpFQ1RFRCxcbiAgICBFU3RhdHVzLktZQ19SRVNVTFRfVU5ERVJfUkVWSUVXLFxuICAgIEVTdGF0dXMuS1lDX1JFUVVFU1RfUkVKRUNURURcbiAgXTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIHNldEFnZW50Q29uZmlnKGNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICB9XG5cbiAgdG9nZ2xlTWFwdmlldygpIHtcbiAgICB0aGlzLnNob3dNYXB2aWV3ID0gIXRoaXMuc2hvd01hcHZpZXc7XG4gIH1cblxuICBjYW5TdGFydEpvdXJuZXkoc3RhdHVzKSB7XG4gICAgY29uc3Qgbm9uZUVkaXRhYmxlU3RhdHVzID1cbiAgICAgIHRoaXMuY29uZmlnLmRhc2hib2FyZD8uY2Fubm90U3RhcnRKb3VybmV5ID8/IHRoaXMubm90UmVxdWlyZWRTdGF0dXM7XG5cbiAgICBpZiAobm9uZUVkaXRhYmxlU3RhdHVzLmluY2x1ZGVzKHN0YXR1cykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjYW5QbG90TWFya2VycyhzdGF0dXMpIHtcbiAgICBjb25zdCBub25lUGxvdHRpbmdTZXNzaW9ucyA9IHRoaXMuY29uZmlnLmRhc2hib2FyZD8uZG9udFBsb3RNYXJrZXJzID8/IFtdO1xuXG4gICAgaWYgKG5vbmVQbG90dGluZ1Nlc3Npb25zLmluY2x1ZGVzKHN0YXR1cykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { __awaiter } from "tslib";
|
|
2
|
+
import { Injectable, ViewChildren } from "@angular/core";
|
|
3
|
+
import { checkObjectPathExists, getObjectValueFromPath, isNotEmptyArray } from "kwikid-toolkit";
|
|
4
|
+
import { map } from "rxjs/operators";
|
|
5
|
+
import { addressConcator, nearestNeighborAlgorithm } from "../helpers/maps.helpers";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./agent.service";
|
|
8
|
+
import * as i2 from "@angular/google-maps";
|
|
9
|
+
import * as i3 from "@angular/common/http";
|
|
10
|
+
export class GoogleMapsService {
|
|
11
|
+
constructor(agentService, mapDirectionsService, httpClient) {
|
|
12
|
+
this.agentService = agentService;
|
|
13
|
+
this.mapDirectionsService = mapDirectionsService;
|
|
14
|
+
this.httpClient = httpClient;
|
|
15
|
+
this.allMarkers = [];
|
|
16
|
+
}
|
|
17
|
+
// To get Current Position
|
|
18
|
+
getPosition() {
|
|
19
|
+
return new Promise((resolve, reject) => {
|
|
20
|
+
navigator.geolocation.watchPosition((resp) => {
|
|
21
|
+
resolve({
|
|
22
|
+
lng: resp.coords.longitude,
|
|
23
|
+
lat: resp.coords.latitude
|
|
24
|
+
});
|
|
25
|
+
}, (err) => {
|
|
26
|
+
reject(err);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
// To Initialize Google Maps
|
|
31
|
+
initializeMap() {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
this.myPosition = yield this.getPosition();
|
|
34
|
+
this.map = {
|
|
35
|
+
zoom: 10,
|
|
36
|
+
center: this.myPosition,
|
|
37
|
+
streetViewControl: false,
|
|
38
|
+
mapTypeControl: false,
|
|
39
|
+
fullscreenControl: false,
|
|
40
|
+
zoomControl: false
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
// To extract Location from the Task Details
|
|
45
|
+
getLocation(task) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
|
|
49
|
+
let encodedAddres;
|
|
50
|
+
// If Fetch Address from Multiple Paths
|
|
51
|
+
if (checkObjectPathExists(this.agentService.config, "dashboard.taskLocationPaths")) {
|
|
52
|
+
// Get address string from multiple paths
|
|
53
|
+
const config = this.agentService.config.dashboard.taskLocationPaths;
|
|
54
|
+
const address = addressConcator(task, config);
|
|
55
|
+
// Encode the Address in URI
|
|
56
|
+
encodedAddres = encodeURI(address);
|
|
57
|
+
}
|
|
58
|
+
// If Fetch Address from Single Path
|
|
59
|
+
else if (checkObjectPathExists(this.agentService.config, "dashboard.taskLocationPath")) {
|
|
60
|
+
// Get Address from Single Path
|
|
61
|
+
const config = this.agentService.config.dashboard.taskLocationPath;
|
|
62
|
+
const address = getObjectValueFromPath(task, config);
|
|
63
|
+
// Encode the Address in URI
|
|
64
|
+
encodedAddres = encodeURI(address);
|
|
65
|
+
}
|
|
66
|
+
// Default Address Paths Avaiable
|
|
67
|
+
else {
|
|
68
|
+
const address = (_k = (_j = (_g = (_d = (_c = (_b = (_a = task === null || task === void 0 ? void 0 : task.extras) === null || _a === void 0 ? void 0 : _a.task_details) === null || _b === void 0 ? void 0 : _b.customer_details) === null || _c === void 0 ? void 0 : _c.address) !== null && _d !== void 0 ? _d : (_f = (_e = task === null || task === void 0 ? void 0 : task.task_details) === null || _e === void 0 ? void 0 : _e.customer_details) === null || _f === void 0 ? void 0 : _f.address) !== null && _g !== void 0 ? _g : (_h = task === null || task === void 0 ? void 0 : task.extras) === null || _h === void 0 ? void 0 : _h.address) !== null && _j !== void 0 ? _j : task === null || task === void 0 ? void 0 : task.address) !== null && _k !== void 0 ? _k : "";
|
|
69
|
+
// Encode the Address in URI
|
|
70
|
+
encodedAddres = encodeURI(address);
|
|
71
|
+
}
|
|
72
|
+
// URL to geocode Address String to Latitude & Longitude
|
|
73
|
+
const url = `https://maps.googleapis.com/maps/api/geocode/json?key=${this.apiKey}&address=${encodedAddres}`;
|
|
74
|
+
const response = yield fetch(url);
|
|
75
|
+
const data = yield response.json();
|
|
76
|
+
// Set Location {lat: LAT, lng: LNG} from address geocoded
|
|
77
|
+
const isValidLocation = isNotEmptyArray(data === null || data === void 0 ? void 0 : data.results);
|
|
78
|
+
const location = isValidLocation
|
|
79
|
+
? (_m = (_l = data === null || data === void 0 ? void 0 : data.results[0]) === null || _l === void 0 ? void 0 : _l.geometry) === null || _m === void 0 ? void 0 : _m.location
|
|
80
|
+
: { lat: null, lng: null };
|
|
81
|
+
// Set Location validation & Google Maps URL
|
|
82
|
+
location.isValidLocation = isValidLocation;
|
|
83
|
+
location.googleMapsUrl = `https://www.google.com/maps/place/${location === null || location === void 0 ? void 0 : location.lat},${location === null || location === void 0 ? void 0 : location.lng}`;
|
|
84
|
+
resolve(location);
|
|
85
|
+
}));
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
// Get Tasks | Markers Location Co Ordinates
|
|
89
|
+
getMarkersLocation(myMarker, tasks) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
const markers = [];
|
|
93
|
+
markers.push(myMarker);
|
|
94
|
+
const promises = tasks.map((task) => __awaiter(this, void 0, void 0, function* () {
|
|
95
|
+
const marker = yield this.getLocation(task);
|
|
96
|
+
task = Object.assign(Object.assign({}, task), marker);
|
|
97
|
+
markers.push(task);
|
|
98
|
+
}));
|
|
99
|
+
yield Promise.all(promises);
|
|
100
|
+
resolve(markers);
|
|
101
|
+
}));
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
// Plot All Markers
|
|
105
|
+
plotAllMarkers(tasks) {
|
|
106
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
107
|
+
return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
|
|
108
|
+
const path = [];
|
|
109
|
+
const promises = tasks.map((task) => {
|
|
110
|
+
if (task === null || task === void 0 ? void 0 : task.isValidLocation) {
|
|
111
|
+
path.push({
|
|
112
|
+
location: task,
|
|
113
|
+
stopover: true
|
|
114
|
+
});
|
|
115
|
+
this.allMarkers.push(task);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
yield Promise.all(promises);
|
|
119
|
+
resolve(path);
|
|
120
|
+
}));
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
// To Plot Directions for All Tasks
|
|
124
|
+
plotDirectionsForAllTasks(tasks) {
|
|
125
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
126
|
+
this.allMarkers = [];
|
|
127
|
+
// Create Agent Marker & Plot It.
|
|
128
|
+
const myMarker = {
|
|
129
|
+
lat: this.myPosition.lat,
|
|
130
|
+
lng: this.myPosition.lng,
|
|
131
|
+
title: 0,
|
|
132
|
+
color: "red"
|
|
133
|
+
};
|
|
134
|
+
// Get All Markers Location Co Ordinates
|
|
135
|
+
const markers = yield this.getMarkersLocation(myMarker, tasks);
|
|
136
|
+
// Run Algorithm to get optimized Routes
|
|
137
|
+
const startingPoint = markers[0];
|
|
138
|
+
const unvisitedWaypoints = markers.slice(1);
|
|
139
|
+
const optimizedRoute = nearestNeighborAlgorithm(startingPoint, unvisitedWaypoints);
|
|
140
|
+
// Sort All Tasks as per optimized routes
|
|
141
|
+
tasks = optimizedRoute.slice(1);
|
|
142
|
+
this.allMarkers = [myMarker];
|
|
143
|
+
// Plot all markers & get path for directions
|
|
144
|
+
const path = yield this.plotAllMarkers(tasks);
|
|
145
|
+
// Set Directions in Google Maps
|
|
146
|
+
const request = {
|
|
147
|
+
origin: this.myPosition,
|
|
148
|
+
destination: this.myPosition,
|
|
149
|
+
waypoints: path,
|
|
150
|
+
travelMode: google.maps.TravelMode.DRIVING
|
|
151
|
+
};
|
|
152
|
+
this.directionsRenderOption = {
|
|
153
|
+
suppressMarkers: true
|
|
154
|
+
};
|
|
155
|
+
this.directionsResults$ = this.mapDirectionsService
|
|
156
|
+
.route(request)
|
|
157
|
+
.pipe(map((response) => response.result));
|
|
158
|
+
this.directionsResults$.subscribe((val) => { });
|
|
159
|
+
this.allDirectionsResults$ = this.directionsResults$;
|
|
160
|
+
return tasks;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
// To Plot Directions for Selected Tasks
|
|
164
|
+
plotDirectionsForSelectedTask(task) {
|
|
165
|
+
if (task != null) {
|
|
166
|
+
const taskMarker = task;
|
|
167
|
+
// If Location is Available in Task Details
|
|
168
|
+
if (taskMarker === null || taskMarker === void 0 ? void 0 : taskMarker.isValidLocation) {
|
|
169
|
+
const request = {
|
|
170
|
+
origin: this.myPosition,
|
|
171
|
+
destination: taskMarker,
|
|
172
|
+
optimizeWaypoints: true,
|
|
173
|
+
travelMode: google.maps.TravelMode.DRIVING
|
|
174
|
+
};
|
|
175
|
+
this.directionsResults$ = this.mapDirectionsService
|
|
176
|
+
.route(request)
|
|
177
|
+
.pipe(map((response) => response.result));
|
|
178
|
+
this.directionsResults$.subscribe();
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
alert("No Location Available");
|
|
182
|
+
this.directionsResults$ = this.allDirectionsResults$;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
this.directionsResults$ = this.allDirectionsResults$;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/** @nocollapse */ GoogleMapsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GoogleMapsService, deps: [{ token: i1.AgentService }, { token: i2.MapDirectionsService }, { token: i3.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
191
|
+
/** @nocollapse */ GoogleMapsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GoogleMapsService, providedIn: "root" });
|
|
192
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: GoogleMapsService, decorators: [{
|
|
193
|
+
type: Injectable,
|
|
194
|
+
args: [{
|
|
195
|
+
providedIn: "root"
|
|
196
|
+
}]
|
|
197
|
+
}], ctorParameters: function () { return [{ type: i1.AgentService }, { type: i2.MapDirectionsService }, { type: i3.HttpClient }]; }, propDecorators: { directionsRenders: [{
|
|
198
|
+
type: ViewChildren,
|
|
199
|
+
args: ["directionsRender"]
|
|
200
|
+
}] } });
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLW1hcHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQvc3JjL2xpYi92MS9zZXJ2aWNlcy9nb29nbGUtbWFwcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQWMsVUFBVSxFQUFhLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoRixPQUFPLEVBQ0wscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0QixlQUFlLEVBQ2hCLE1BQU0sZ0JBQWdCLENBQUM7QUFJeEIsT0FBTyxFQUFjLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2pELE9BQU8sRUFDTCxlQUFlLEVBQ2Ysd0JBQXdCLEVBQ3pCLE1BQU0seUJBQXlCLENBQUM7Ozs7O0FBS2pDLE1BQU0sT0FBTyxpQkFBaUI7SUFtQjVCLFlBQ1UsWUFBMEIsRUFDM0Isb0JBQTBDLEVBQzFDLFVBQXNCO1FBRnJCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzNCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQWYvQixlQUFVLEdBQVEsRUFBRSxDQUFDO0lBZ0JsQixDQUFDO0lBRUosMEJBQTBCO0lBQzFCLFdBQVc7UUFDVCxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLFNBQVMsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUNqQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNQLE9BQU8sQ0FBQztvQkFDTixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO29CQUMxQixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRO2lCQUMxQixDQUFDLENBQUM7WUFDTCxDQUFDLEVBQ0QsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDTixNQUFN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O1lBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQztZQUV4QiwyQ0FBMkM7WUFDM0MsSUFBSSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsZUFBZSxFQUFFO2dCQUMvQixNQUFNLE9BQU8sR0FBa0M7b0JBQzdDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDdkIsV0FBVyxFQUFFLFVBQVU7b0JBQ3ZCLGlCQUFpQixFQUFFLElBQUk7b0JBQ3ZCLFVBQVUsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPO2lCQUMzQyxDQUFDO2dCQUVGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsb0JBQW9CO3FCQUNoRCxLQUFLLENBQUMsT0FBTyxDQUFDO3FCQUNkLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUU1QyxJQUFJLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUM7YUFDdEQ7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztTQUN0RDtJQUNILENBQUM7O2tJQS9PVSxpQkFBaUI7c0lBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7K0pBZ0JtQyxpQkFBaUI7c0JBQWxELFlBQVk7dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWxlbWVudFJlZiwgSW5qZWN0YWJsZSwgUXVlcnlMaXN0LCBWaWV3Q2hpbGRyZW4gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHtcbiAgY2hlY2tPYmplY3RQYXRoRXhpc3RzLFxuICBnZXRPYmplY3RWYWx1ZUZyb21QYXRoLFxuICBpc05vdEVtcHR5QXJyYXlcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5cbmltcG9ydCB7IE1hcERpcmVjdGlvbnNTZXJ2aWNlIH0gZnJvbSBcIkBhbmd1bGFyL2dvb2dsZS1tYXBzXCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcbmltcG9ydCB7IEFnZW50U2VydmljZSB9IGZyb20gXCIuL2FnZW50LnNlcnZpY2VcIjtcbmltcG9ydCB7XG4gIGFkZHJlc3NDb25jYXRvcixcbiAgbmVhcmVzdE5laWdoYm9yQWxnb3JpdGhtXG59IGZyb20gXCIuLi9oZWxwZXJzL21hcHMuaGVscGVyc1wiO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46IFwicm9vdFwiXG59KVxuZXhwb3J0IGNsYXNzIEdvb2dsZU1hcHNTZXJ2aWNlIHtcbiAgbXlQb3NpdGlvbjtcblxuICBtYXA6IGFueTtcblxuICBhcGlLZXk6IGFueTtcblxuICBhbGxNYXJrZXJzOiBhbnkgPSBbXTtcblxuICBkaXJlY3Rpb25zUmVuZGVyT3B0aW9uOiBhbnk7XG5cbiAgZGlyZWN0aW9uc1Jlc3VsdHMkOiBhbnk7XG5cbiAgYWxsRGlyZWN0aW9uc1Jlc3VsdHMkOiBhbnk7XG5cbiAgQFZpZXdDaGlsZHJlbihcImRpcmVjdGlvbnNSZW5kZXJcIikgZGlyZWN0aW9uc1JlbmRlcnM6IFF1ZXJ5TGlzdDxcbiAgICBFbGVtZW50UmVmPGdvb2dsZS5tYXBzLkRpcmVjdGlvbnNSZW5kZXJlcj5cbiAgPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHB1YmxpYyBtYXBEaXJlY3Rpb25zU2VydmljZTogTWFwRGlyZWN0aW9uc1NlcnZpY2UsXG4gICAgcHVibGljIGh0dHBDbGllbnQ6IEh0dHBDbGllbnRcbiAgKSB7fVxuXG4gIC8vIFRvIGdldCBDdXJyZW50IFBvc2l0aW9uXG4gIGdldFBvc2l0aW9uKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi53YXRjaFBvc2l0aW9uKFxuICAgICAgICAocmVzcCkgPT4ge1xuICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgbG5nOiByZXNwLmNvb3Jkcy5sb25naXR1ZGUsXG4gICAgICAgICAgICBsYXQ6IHJlc3AuY29vcmRzLmxhdGl0dWRlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFRvIEluaXRpYWxpemUgR29vZ2xlIE1hcHNcbiAgYXN5bmMgaW5pdGlhbGl6ZU1hcCgpIHtcbiAgICB0aGlzLm15UG9zaXRpb24gPSBhd2FpdCB0aGlzLmdldFBvc2l0aW9uKCk7XG4gICAgdGhpcy5tYXAgPSB7XG4gICAgICB6b29tOiAxMCxcbiAgICAgIGNlbnRlcjogdGhpcy5teVBvc2l0aW9uLFxuICAgICAgc3RyZWV0Vmlld0NvbnRyb2w6IGZhbHNlLFxuICAgICAgbWFwVHlwZUNvbnRyb2w6IGZhbHNlLFxuICAgICAgZnVsbHNjcmVlbkNvbnRyb2w6IGZhbHNlLFxuICAgICAgem9vbUNvbnRyb2w6IGZhbHNlXG4gICAgfTtcbiAgfVxuXG4gIC8vIFRvIGV4dHJhY3QgTG9jYXRpb24gZnJvbSB0aGUgVGFzayBEZXRhaWxzXG4gIGFzeW5jIGdldExvY2F0aW9uKHRhc2spIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMocmVzb2x2ZSkgPT4ge1xuICAgICAgbGV0IGVuY29kZWRBZGRyZXM7XG5cbiAgICAgIC8vIElmIEZldGNoIEFkZHJlc3MgZnJvbSBNdWx0aXBsZSBQYXRoc1xuICAgICAgaWYgKFxuICAgICAgICBjaGVja09iamVjdFBhdGhFeGlzdHMoXG4gICAgICAgICAgdGhpcy5hZ2VudFNlcnZpY2UuY29uZmlnLFxuICAgICAgICAgIFwiZGFzaGJvYXJkLnRhc2tMb2NhdGlvblBhdGhzXCJcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIC8vIEdldCBhZGRyZXNzIHN0cmluZyBmcm9tIG11bHRpcGxlIHBhdGhzXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYWdlbnRTZXJ2aWNlLmNvbmZpZy5kYXNoYm9hcmQudGFza0xvY2F0aW9uUGF0aHM7XG4gICAgICAgIGNvbnN0IGFkZHJlc3MgPSBhZGRyZXNzQ29uY2F0b3IodGFzaywgY29uZmlnKTtcblxuICAgICAgICAvLyBFbmNvZGUgdGhlIEFkZHJlc3MgaW4gVVJJXG4gICAgICAgIGVuY29kZWRBZGRyZXMgPSBlbmNvZGVVUkkoYWRkcmVzcyk7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIEZldGNoIEFkZHJlc3MgZnJvbSBTaW5nbGUgUGF0aFxuICAgICAgZWxzZSBpZiAoXG4gICAgICAgIGNoZWNrT2JqZWN0UGF0aEV4aXN0cyhcbiAgICAgICAgICB0aGlzLmFnZW50U2VydmljZS5jb25maWcsXG4gICAgICAgICAgXCJkYXNoYm9hcmQudGFza0xvY2F0aW9uUGF0aFwiXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICAvLyBHZXQgQWRkcmVzcyBmcm9tIFNpbmdsZSBQYXRoXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuYWdlbnRTZXJ2aWNlLmNvbmZpZy5kYXNoYm9hcmQudGFza0xvY2F0aW9uUGF0aDtcbiAgICAgICAgY29uc3QgYWRkcmVzcyA9IGdldE9iamVjdFZhbHVlRnJvbVBhdGgodGFzaywgY29uZmlnKTtcblxuICAgICAgICAvLyBFbmNvZGUgdGhlIEFkZHJlc3MgaW4gVVJJXG4gICAgICAgIGVuY29kZWRBZGRyZXMgPSBlbmNvZGVVUkkoYWRkcmVzcyk7XG4gICAgICB9XG5cbiAgICAgIC8vIERlZmF1bHQgQWRkcmVzcyBQYXRocyBBdmFpYWJsZVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGFkZHJlc3MgPVxuICAgICAgICAgIHRhc2s/LmV4dHJhcz8udGFza19kZXRhaWxzPy5jdXN0b21lcl9kZXRhaWxzPy5hZGRyZXNzID8/XG4gICAgICAgICAgdGFzaz8udGFza19kZXRhaWxzPy5jdXN0b21lcl9kZXRhaWxzPy5hZGRyZXNzID8/XG4gICAgICAgICAgdGFzaz8uZXh0cmFzPy5hZGRyZXNzID8/XG4gICAgICAgICAgdGFzaz8uYWRkcmVzcyA/P1xuICAgICAgICAgIFwiXCI7XG5cbiAgICAgICAgLy8gRW5jb2RlIHRoZSBBZGRyZXNzIGluIFVSSVxuICAgICAgICBlbmNvZGVkQWRkcmVzID0gZW5jb2RlVVJJKGFkZHJlc3MpO1xuICAgICAgfVxuXG4gICAgICAvLyBVUkwgdG8gZ2VvY29kZSBBZGRyZXNzIFN0cmluZyB0byBMYXRpdHVkZSAmIExvbmdpdHVkZVxuICAgICAgY29uc3QgdXJsID0gYGh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9nZW9jb2RlL2pzb24/a2V5PSR7dGhpcy5hcGlLZXl9JmFkZHJlc3M9JHtlbmNvZGVkQWRkcmVzfWA7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2godXJsKTtcbiAgICAgIGNvbnN0IGRhdGE6IGFueSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgLy8gU2V0IExvY2F0aW9uIHtsYXQ6IExBVCwgbG5nOiBMTkd9IGZyb20gYWRkcmVzcyBnZW9jb2RlZFxuICAgICAgY29uc3QgaXNWYWxpZExvY2F0aW9uID0gaXNOb3RFbXB0eUFycmF5KGRhdGE/LnJlc3VsdHMpO1xuICAgICAgY29uc3QgbG9jYXRpb24gPSBpc1ZhbGlkTG9jYXRpb25cbiAgICAgICAgPyBkYXRhPy5yZXN1bHRzWzBdPy5nZW9tZXRyeT8ubG9jYXRpb25cbiAgICAgICAgOiB7IGxhdDogbnVsbCwgbG5nOiBudWxsIH07XG5cbiAgICAgIC8vIFNldCBMb2NhdGlvbiB2YWxpZGF0aW9uICYgR29vZ2xlIE1hcHMgVVJMXG4gICAgICBsb2NhdGlvbi5pc1ZhbGlkTG9jYXRpb24gPSBpc1ZhbGlkTG9jYXRpb247XG4gICAgICBsb2NhdGlvbi5nb29nbGVNYXBzVXJsID0gYGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9wbGFjZS8ke2xvY2F0aW9uPy5sYXR9LCR7bG9jYXRpb24/LmxuZ31gO1xuXG4gICAgICByZXNvbHZlKGxvY2F0aW9uKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEdldCBUYXNrcyB8IE1hcmtlcnMgTG9jYXRpb24gQ28gT3JkaW5hdGVzXG4gIGFzeW5jIGdldE1hcmtlcnNMb2NhdGlvbihteU1hcmtlciwgdGFza3MpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgbWFya2VycyA9IFtdO1xuICAgICAgbWFya2Vycy5wdXNoKG15TWFya2VyKTtcbiAgICAgIGNvbnN0IHByb21pc2VzID0gdGFza3MubWFwKGFzeW5jKHRhc2spID0+IHtcbiAgICAgICAgY29uc3QgbWFya2VyOiBhbnkgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uKHRhc2spO1xuICAgICAgICB0YXNrID0geyAuLi50YXNrLCAuLi5tYXJrZXIgfTtcbiAgICAgICAgbWFya2Vycy5wdXNoKHRhc2spO1xuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcblxuICAgICAgcmVzb2x2ZShtYXJrZXJzKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFBsb3QgQWxsIE1hcmtlcnNcbiAgYXN5bmMgcGxvdEFsbE1hcmtlcnModGFza3MpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3QgcGF0aCA9IFtdO1xuICAgICAgY29uc3QgcHJvbWlzZXMgPSB0YXNrcy5tYXAoKHRhc2spID0+IHtcbiAgICAgICAgaWYgKHRhc2s/LmlzVmFsaWRMb2NhdGlvbikge1xuICAgICAgICAgIHBhdGgucHVzaCh7XG4gICAgICAgICAgICBsb2NhdGlvbjogdGFzayxcbiAgICAgICAgICAgIHN0b3BvdmVyOiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5hbGxNYXJrZXJzLnB1c2godGFzayk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG5cbiAgICAgIHJlc29sdmUocGF0aCk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBUbyBQbG90IERpcmVjdGlvbnMgZm9yIEFsbCBUYXNrc1xuICBhc3luYyBwbG90RGlyZWN0aW9uc0ZvckFsbFRhc2tzKHRhc2tzKSB7XG4gICAgdGhpcy5hbGxNYXJrZXJzID0gW107XG5cbiAgICAvLyBDcmVhdGUgQWdlbnQgTWFya2VyICYgUGxvdCBJdC5cbiAgICBjb25zdCBteU1hcmtlciA9IHtcbiAgICAgIGxhdDogdGhpcy5teVBvc2l0aW9uLmxhdCxcbiAgICAgIGxuZzogdGhpcy5teVBvc2l0aW9uLmxuZyxcbiAgICAgIHRpdGxlOiAwLFxuICAgICAgY29sb3I6IFwicmVkXCJcbiAgICB9O1xuXG4gICAgLy8gR2V0IEFsbCBNYXJrZXJzIExvY2F0aW9uIENvIE9yZGluYXRlc1xuICAgIGNvbnN0IG1hcmtlcnM6IGFueSA9IGF3YWl0IHRoaXMuZ2V0TWFya2Vyc0xvY2F0aW9uKG15TWFya2VyLCB0YXNrcyk7XG5cbiAgICAvLyBSdW4gQWxnb3JpdGhtIHRvIGdldCBvcHRpbWl6ZWQgUm91dGVzXG4gICAgY29uc3Qgc3RhcnRpbmdQb2ludCA9IG1hcmtlcnNbMF07XG4gICAgY29uc3QgdW52aXNpdGVkV2F5cG9pbnRzID0gbWFya2Vycy5zbGljZSgxKTtcbiAgICBjb25zdCBvcHRpbWl6ZWRSb3V0ZSA9IG5lYXJlc3ROZWlnaGJvckFsZ29yaXRobShcbiAgICAgIHN0YXJ0aW5nUG9pbnQsXG4gICAgICB1bnZpc2l0ZWRXYXlwb2ludHNcbiAgICApO1xuXG4gICAgLy8gU29ydCBBbGwgVGFza3MgYXMgcGVyIG9wdGltaXplZCByb3V0ZXNcbiAgICB0YXNrcyA9IG9wdGltaXplZFJvdXRlLnNsaWNlKDEpO1xuICAgIHRoaXMuYWxsTWFya2VycyA9IFtteU1hcmtlcl07XG5cbiAgICAvLyBQbG90IGFsbCBtYXJrZXJzICYgZ2V0IHBhdGggZm9yIGRpcmVjdGlvbnNcbiAgICBjb25zdCBwYXRoOiBhbnkgPSBhd2FpdCB0aGlzLnBsb3RBbGxNYXJrZXJzKHRhc2tzKTtcblxuICAgIC8vIFNldCBEaXJlY3Rpb25zIGluIEdvb2dsZSBNYXBzXG4gICAgY29uc3QgcmVxdWVzdDogZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1JlcXVlc3QgPSB7XG4gICAgICBvcmlnaW46IHRoaXMubXlQb3NpdGlvbixcbiAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLm15UG9zaXRpb24sXG4gICAgICB3YXlwb2ludHM6IHBhdGgsXG4gICAgICB0cmF2ZWxNb2RlOiBnb29nbGUubWFwcy5UcmF2ZWxNb2RlLkRSSVZJTkdcbiAgICB9O1xuXG4gICAgdGhpcy5kaXJlY3Rpb25zUmVuZGVyT3B0aW9uID0ge1xuICAgICAgc3VwcHJlc3NNYXJrZXJzOiB0cnVlXG4gICAgfTtcblxuICAgIHRoaXMuZGlyZWN0aW9uc1Jlc3VsdHMkID0gdGhpcy5tYXBEaXJlY3Rpb25zU2VydmljZVxuICAgICAgLnJvdXRlKHJlcXVlc3QpXG4gICAgICAucGlwZShtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5yZXN1bHQpKTtcblxuICAgIHRoaXMuZGlyZWN0aW9uc1Jlc3VsdHMkLnN1YnNjcmliZSgodmFsKSA9PiB7fSk7XG5cbiAgICB0aGlzLmFsbERpcmVjdGlvbnNSZXN1bHRzJCA9IHRoaXMuZGlyZWN0aW9uc1Jlc3VsdHMkO1xuXG4gICAgcmV0dXJuIHRhc2tzO1xuICB9XG5cbiAgLy8gVG8gUGxvdCBEaXJlY3Rpb25zIGZvciBTZWxlY3RlZCBUYXNrc1xuICBwbG90RGlyZWN0aW9uc0ZvclNlbGVjdGVkVGFzayh0YXNrKSB7XG4gICAgaWYgKHRhc2sgIT0gbnVsbCkge1xuICAgICAgY29uc3QgdGFza01hcmtlciA9IHRhc2s7XG5cbiAgICAgIC8vIElmIExvY2F0aW9uIGlzIEF2YWlsYWJsZSBpbiBUYXNrIERldGFpbHNcbiAgICAgIGlmICh0YXNrTWFya2VyPy5pc1ZhbGlkTG9jYXRpb24pIHtcbiAgICAgICAgY29uc3QgcmVxdWVzdDogZ29vZ2xlLm1hcHMuRGlyZWN0aW9uc1JlcXVlc3QgPSB7XG4gICAgICAgICAgb3JpZ2luOiB0aGlzLm15UG9zaXRpb24sXG4gICAgICAgICAgZGVzdGluYXRpb246IHRhc2tNYXJrZXIsXG4gICAgICAgICAgb3B0aW1pemVXYXlwb2ludHM6IHRydWUsXG4gICAgICAgICAgdHJhdmVsTW9kZTogZ29vZ2xlLm1hcHMuVHJhdmVsTW9kZS5EUklWSU5HXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kaXJlY3Rpb25zUmVzdWx0cyQgPSB0aGlzLm1hcERpcmVjdGlvbnNTZXJ2aWNlXG4gICAgICAgICAgLnJvdXRlKHJlcXVlc3QpXG4gICAgICAgICAgLnBpcGUobWFwKChyZXNwb25zZSkgPT4gcmVzcG9uc2UucmVzdWx0KSk7XG5cbiAgICAgICAgdGhpcy5kaXJlY3Rpb25zUmVzdWx0cyQuc3Vic2NyaWJlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhbGVydChcIk5vIExvY2F0aW9uIEF2YWlsYWJsZVwiKTtcbiAgICAgICAgdGhpcy5kaXJlY3Rpb25zUmVzdWx0cyQgPSB0aGlzLmFsbERpcmVjdGlvbnNSZXN1bHRzJDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXJlY3Rpb25zUmVzdWx0cyQgPSB0aGlzLmFsbERpcmVjdGlvbnNSZXN1bHRzJDtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|