kwikid-agent-dashboard 0.0.21 → 0.0.23
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 +416 -812
- package/bundles/kwikid-agent-dashboard.umd.js.map +1 -1
- package/esm2015/lib/components/customer-details/customer-details.component.js +27 -14
- package/esm2015/lib/components/customer-list/customer-list.component.js +21 -20
- package/esm2015/lib/components/customer-tile/customer-tile.component.js +22 -85
- package/esm2015/lib/kwikid-agent-dashboard.component.js +26 -32
- package/esm2015/lib/services/agent.service.js +121 -0
- package/esm2015/lib/services/map.service.js +216 -61
- package/fesm2015/kwikid-agent-dashboard.js +341 -754
- package/fesm2015/kwikid-agent-dashboard.js.map +1 -1
- package/lib/components/customer-details/customer-details.component.d.ts +9 -6
- package/lib/components/customer-list/customer-list.component.d.ts +5 -5
- package/lib/components/customer-tile/customer-tile.component.d.ts +6 -52
- package/lib/kwikid-agent-dashboard.component.d.ts +8 -10
- package/lib/services/agent.service.d.ts +73 -0
- package/lib/services/map.service.d.ts +29 -13
- package/package.json +5 -3
- package/esm2015/lib/services/info-window.service.js +0 -185
- package/esm2015/lib/services/user.service.js +0 -453
- package/lib/services/info-window.service.d.ts +0 -98
- package/lib/services/user.service.d.ts +0 -192
|
@@ -1,73 +1,27 @@
|
|
|
1
1
|
import { ElementRef, EventEmitter, OnInit } from '@angular/core';
|
|
2
|
-
import { MapInfoWindow } from '@angular/google-maps';
|
|
3
|
-
import { InfoWindowService } from '../../services/info-window.service';
|
|
4
2
|
import { MapService } from '../../services/map.service';
|
|
5
|
-
import {
|
|
3
|
+
import { AgentService } from '../../services/agent.service';
|
|
6
4
|
import * as i0 from "@angular/core";
|
|
7
5
|
export declare class CustomerTileComponent implements OnInit {
|
|
8
6
|
mapService: MapService;
|
|
9
|
-
|
|
10
|
-
userService: UserService;
|
|
7
|
+
agentService: AgentService;
|
|
11
8
|
private hostElement;
|
|
12
9
|
windowResizeWatcher(): void;
|
|
13
|
-
/**
|
|
14
|
-
* @description
|
|
15
|
-
* Determines Customer Data
|
|
16
|
-
*
|
|
17
|
-
* @default
|
|
18
|
-
* `{}`
|
|
19
|
-
*/
|
|
20
10
|
customer: any;
|
|
21
|
-
/**
|
|
22
|
-
* @description
|
|
23
|
-
* Determines Index of Customer Data in Customer List
|
|
24
|
-
*
|
|
25
|
-
* @default
|
|
26
|
-
*
|
|
27
|
-
*/
|
|
28
11
|
index: number;
|
|
29
|
-
|
|
12
|
+
config: any;
|
|
30
13
|
isMobileView: boolean;
|
|
31
14
|
viewTaskDetails: Array<string>;
|
|
32
|
-
/**
|
|
33
|
-
* @description
|
|
34
|
-
* Emitter to emit next Step
|
|
35
|
-
*
|
|
36
|
-
* @emits KwikIDAgentDashboardComponent#nextStep
|
|
37
|
-
* @fires KwikIDAgentDashboardComponent#nextStep
|
|
38
|
-
*/
|
|
39
15
|
nextStep: EventEmitter<any>;
|
|
40
16
|
removeTask: EventEmitter<any>;
|
|
41
|
-
|
|
42
|
-
* @description
|
|
43
|
-
*
|
|
44
|
-
* @constructor
|
|
45
|
-
*/
|
|
46
|
-
constructor(mapService: MapService, infoWindowService: InfoWindowService, userService: UserService, hostElement: ElementRef);
|
|
47
|
-
infoWindow: MapInfoWindow;
|
|
48
|
-
/**
|
|
49
|
-
* @description
|
|
50
|
-
* To set Google Maps API on script
|
|
51
|
-
*
|
|
52
|
-
* @ngOnInit
|
|
53
|
-
*/
|
|
17
|
+
constructor(mapService: MapService, agentService: AgentService, hostElement: ElementRef);
|
|
54
18
|
ngOnInit(): void;
|
|
55
19
|
getTaskDetails(taskData: any): any;
|
|
56
20
|
openDetails(): void;
|
|
57
|
-
tileClick(): void;
|
|
58
|
-
/**
|
|
59
|
-
* @description
|
|
60
|
-
* Wrapper method to show Customer Info Window
|
|
61
|
-
*
|
|
62
|
-
* @function showDetails
|
|
63
|
-
* @func showDetails
|
|
64
|
-
* @method showDetails
|
|
65
|
-
*/
|
|
66
|
-
showDetails(customer: any, index: any): void;
|
|
67
21
|
getClass(): string;
|
|
68
22
|
goToMaps(location: any): void;
|
|
69
|
-
|
|
23
|
+
handleOnClickNext(e: any): void;
|
|
70
24
|
handleOnClickRemoveTask(task: any): void;
|
|
71
25
|
static ɵfac: i0.ɵɵFactoryDeclaration<CustomerTileComponent, never>;
|
|
72
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<CustomerTileComponent, "customer-tile", never, { "customer": "customer"; "index": "index"; "
|
|
26
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CustomerTileComponent, "customer-tile", never, { "customer": "customer"; "index": "index"; "config": "config"; }, { "nextStep": "nextStep"; "removeTask": "removeTask"; }, never, never>;
|
|
73
27
|
}
|
|
@@ -1,34 +1,32 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
2
|
import { ElementRef, EventEmitter, OnInit } from '@angular/core';
|
|
3
3
|
import { MapInfoWindow, MapMarker } from '@angular/google-maps';
|
|
4
|
-
import { TuiSheetOptions } from '@taiga-ui/addon-mobile';
|
|
5
4
|
import { TuiDialogContext, TuiDialogService } from '@taiga-ui/core';
|
|
6
5
|
import { PolymorpheusContent } from '@tinkoff/ng-polymorpheus';
|
|
7
|
-
import { Observable } from 'rxjs';
|
|
8
6
|
import { MapService } from './services/map.service';
|
|
9
|
-
import {
|
|
7
|
+
import { AgentService } from './services/agent.service';
|
|
10
8
|
import * as i0 from "@angular/core";
|
|
11
9
|
export declare class KwikIDAgentDashboardComponent implements OnInit {
|
|
12
10
|
mapService: MapService;
|
|
13
|
-
|
|
11
|
+
agentService: AgentService;
|
|
14
12
|
httpClient: HttpClient;
|
|
15
13
|
private hostElement;
|
|
16
14
|
private readonly dialogService;
|
|
17
15
|
windowResizeWatcher(): void;
|
|
18
16
|
isMobileView: any;
|
|
19
|
-
|
|
17
|
+
config: any;
|
|
20
18
|
taskList: Array<any>;
|
|
21
19
|
nextStep: EventEmitter<any>;
|
|
22
20
|
addTask: EventEmitter<any>;
|
|
23
21
|
removeTask: EventEmitter<any>;
|
|
24
22
|
filterTaskList: EventEmitter<any>;
|
|
25
23
|
loading: boolean;
|
|
26
|
-
|
|
27
|
-
readonly options: Partial<TuiSheetOptions>;
|
|
24
|
+
map: any;
|
|
28
25
|
infoWindow: MapInfoWindow;
|
|
29
|
-
|
|
26
|
+
mapElement: ElementRef;
|
|
27
|
+
constructor(mapService: MapService, agentService: AgentService, httpClient: HttpClient, hostElement: ElementRef, dialogService: TuiDialogService);
|
|
30
28
|
ngOnInit(): void;
|
|
31
|
-
|
|
29
|
+
handleOnClickNext(e: any): void;
|
|
32
30
|
handleOnClickAddTask(task: any): void;
|
|
33
31
|
handleOnClickRemoveTask(task: any): void;
|
|
34
32
|
handleOnFilterTaskList(filter: any): void;
|
|
@@ -44,5 +42,5 @@ export declare class KwikIDAgentDashboardComponent implements OnInit {
|
|
|
44
42
|
handleOnClickSaveForm(e: any): void;
|
|
45
43
|
handleOnClickViewForms(e: any): void;
|
|
46
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<KwikIDAgentDashboardComponent, never>;
|
|
47
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<KwikIDAgentDashboardComponent, "kwikid-agent-dashboard", never, { "
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<KwikIDAgentDashboardComponent, "kwikid-agent-dashboard", never, { "config": "config"; "taskList": "taskList"; }, { "nextStep": "nextStep"; "addTask": "addTask"; "removeTask": "removeTask"; "filterTaskList": "filterTaskList"; }, never, never>;
|
|
48
46
|
}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import * as i0 from "@angular/core";
|
|
2
|
+
export declare class AgentService {
|
|
3
|
+
config: any;
|
|
4
|
+
isListOpen: boolean;
|
|
5
|
+
isMobileView: any;
|
|
6
|
+
showMapview: boolean;
|
|
7
|
+
isShowTaskDetails: any;
|
|
8
|
+
addTaskForm: {
|
|
9
|
+
key: string;
|
|
10
|
+
title: string;
|
|
11
|
+
fields: ({
|
|
12
|
+
key: string;
|
|
13
|
+
label: string;
|
|
14
|
+
validators: {
|
|
15
|
+
required: boolean;
|
|
16
|
+
};
|
|
17
|
+
properties: {
|
|
18
|
+
placeholder: string;
|
|
19
|
+
readOnly: boolean;
|
|
20
|
+
case: string;
|
|
21
|
+
countryCode?: undefined;
|
|
22
|
+
removeCountryCodeFromValue?: undefined;
|
|
23
|
+
phoneMaskAfterCountryCode?: undefined;
|
|
24
|
+
};
|
|
25
|
+
type: string;
|
|
26
|
+
} | {
|
|
27
|
+
key: string;
|
|
28
|
+
label: string;
|
|
29
|
+
validators: {
|
|
30
|
+
required: boolean;
|
|
31
|
+
};
|
|
32
|
+
properties: {
|
|
33
|
+
countryCode: string;
|
|
34
|
+
removeCountryCodeFromValue: boolean;
|
|
35
|
+
phoneMaskAfterCountryCode: string;
|
|
36
|
+
placeholder: string;
|
|
37
|
+
readOnly: boolean;
|
|
38
|
+
case?: undefined;
|
|
39
|
+
};
|
|
40
|
+
type: string;
|
|
41
|
+
})[];
|
|
42
|
+
properties: {
|
|
43
|
+
header: {
|
|
44
|
+
title: {
|
|
45
|
+
hidden: boolean;
|
|
46
|
+
label: string;
|
|
47
|
+
};
|
|
48
|
+
steps: {
|
|
49
|
+
hidden: boolean;
|
|
50
|
+
};
|
|
51
|
+
logo: {
|
|
52
|
+
hidden: boolean;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
footer: {
|
|
56
|
+
viewFormsButton: {
|
|
57
|
+
hidden: boolean;
|
|
58
|
+
label: string;
|
|
59
|
+
};
|
|
60
|
+
saveButton: {
|
|
61
|
+
hidden: boolean;
|
|
62
|
+
label: string;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
constructor();
|
|
68
|
+
ngOnInit(): void;
|
|
69
|
+
setAgentConfig(config: any): void;
|
|
70
|
+
toggleMapview(): void;
|
|
71
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AgentService, never>;
|
|
72
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AgentService>;
|
|
73
|
+
}
|
|
@@ -1,26 +1,42 @@
|
|
|
1
1
|
/// <reference types="googlemaps" />
|
|
2
2
|
import { ElementRef, QueryList } from '@angular/core';
|
|
3
|
-
import
|
|
3
|
+
import 'leaflet-routing-machine';
|
|
4
|
+
import { AgentService } from './agent.service';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
export declare class MapService {
|
|
6
|
-
|
|
7
|
+
private agentService;
|
|
7
8
|
myPosition: any;
|
|
8
9
|
map: any;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
allMarkers: any;
|
|
11
|
+
allTasksRoutes: any;
|
|
12
|
+
selectedTaskRoutes: any;
|
|
13
|
+
selectedTaskDistanceAndTime: any;
|
|
12
14
|
directionsRenders: QueryList<ElementRef<google.maps.DirectionsRenderer>>;
|
|
13
|
-
constructor(
|
|
14
|
-
getMarkers(): any;
|
|
15
|
-
setMarkers(markers: any): void;
|
|
15
|
+
constructor(agentService: AgentService);
|
|
16
16
|
initMap(): Promise<void>;
|
|
17
|
-
|
|
17
|
+
addMarker({ lat, lng, title, color }: {
|
|
18
|
+
lat: any;
|
|
19
|
+
lng: any;
|
|
20
|
+
title: any;
|
|
21
|
+
color: any;
|
|
22
|
+
}): void;
|
|
23
|
+
plotDirectionsForAllTasks(tasks: any): any;
|
|
24
|
+
plotDirectionsForSelectedTask(index: any): void;
|
|
25
|
+
getSelectedTaskDistanceAndTime(): any;
|
|
26
|
+
setSelectedTaskDistanceAndTime(): void;
|
|
27
|
+
sortTasksAsPerDistance(order: any, tasks: any, isMarker: any): any[];
|
|
28
|
+
setRoutes(markers: any, styles: any): any;
|
|
29
|
+
fitMapBounds(): void;
|
|
18
30
|
getPosition(): Promise<any>;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
31
|
+
getLocation(task: any): any;
|
|
32
|
+
getLatLng(data: any, index: any): {
|
|
33
|
+
lat: any;
|
|
34
|
+
lng: any;
|
|
35
|
+
title: any;
|
|
36
|
+
color: string;
|
|
22
37
|
};
|
|
23
|
-
|
|
38
|
+
calculateDistance(point1: any, point2: any): number;
|
|
39
|
+
nearestNeighborAlgorithm(startingPoint: any, unvisitedPoints: any[]): any[];
|
|
24
40
|
static ɵfac: i0.ɵɵFactoryDeclaration<MapService, never>;
|
|
25
41
|
static ɵprov: i0.ɵɵInjectableDeclaration<MapService>;
|
|
26
42
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kwikid-agent-dashboard",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.23",
|
|
4
4
|
"description": "KwikID's EKYC Agent Map View Module.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Gaurang Thakker"
|
|
@@ -33,9 +33,11 @@
|
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"@angular/google-maps": "^12.2.13",
|
|
36
|
-
"kwikid-forms": "^0.6.
|
|
37
|
-
"kwikid-toolkit": "^0.2.
|
|
36
|
+
"kwikid-forms": "^0.6.24",
|
|
37
|
+
"kwikid-toolkit": "^0.2.7",
|
|
38
38
|
"kwikui": "^0.3.7",
|
|
39
|
+
"leaflet": "^1.9.4",
|
|
40
|
+
"leaflet-routing-machine": "^3.2.12",
|
|
39
41
|
"tslib": "^2.2.0"
|
|
40
42
|
},
|
|
41
43
|
"main": "bundles/kwikid-agent-dashboard.umd.js",
|
|
@@ -1,185 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "./map.service";
|
|
4
|
-
export class InfoWindowService {
|
|
5
|
-
constructor(mapService) {
|
|
6
|
-
this.mapService = mapService;
|
|
7
|
-
this.config = {
|
|
8
|
-
fields: {
|
|
9
|
-
name: {
|
|
10
|
-
label: 'Name',
|
|
11
|
-
value: 'name',
|
|
12
|
-
display: 'value',
|
|
13
|
-
style: {
|
|
14
|
-
fontSize: '1rem',
|
|
15
|
-
fontWeight: 600
|
|
16
|
-
}
|
|
17
|
-
},
|
|
18
|
-
phone: {
|
|
19
|
-
label: 'Call',
|
|
20
|
-
value: 'phone',
|
|
21
|
-
display: 'label',
|
|
22
|
-
style: {
|
|
23
|
-
fontSize: '0.8rem',
|
|
24
|
-
padding: '0.1rem 0',
|
|
25
|
-
textAlign: 'justify'
|
|
26
|
-
},
|
|
27
|
-
icon: 'https://cdn-icons-png.flaticon.com/512/60/60720.png'
|
|
28
|
-
},
|
|
29
|
-
address: {
|
|
30
|
-
label: 'Directions',
|
|
31
|
-
value: 'address',
|
|
32
|
-
display: 'label',
|
|
33
|
-
style: {
|
|
34
|
-
fontSize: '0.8rem',
|
|
35
|
-
padding: '0.1rem 0'
|
|
36
|
-
},
|
|
37
|
-
icon: 'https://cdn-icons-png.flaticon.com/512/62/62516.png'
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
this.mainInfoWindowStyle = {
|
|
42
|
-
display: 'flex',
|
|
43
|
-
'flex-direction': 'column',
|
|
44
|
-
'justify-content': 'center',
|
|
45
|
-
'align-items': 'stretch',
|
|
46
|
-
gap: '0.5rem',
|
|
47
|
-
padding: '0.5rem'
|
|
48
|
-
};
|
|
49
|
-
this.fieldDivStyle = {
|
|
50
|
-
gap: ' 0.5rem',
|
|
51
|
-
display: 'flex',
|
|
52
|
-
'flex-direction': 'row'
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
getOpenMarker() {
|
|
56
|
-
return this.openMarker;
|
|
57
|
-
}
|
|
58
|
-
setOpenMarker(value) {
|
|
59
|
-
this.openMarker = value;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* @description
|
|
63
|
-
* Wrapper method to show Customer Info Window
|
|
64
|
-
*
|
|
65
|
-
* @function showInfo
|
|
66
|
-
* @func showInfo
|
|
67
|
-
* @method showInfo
|
|
68
|
-
*/
|
|
69
|
-
showCustomerInformation(customer, marker) {
|
|
70
|
-
let map = this.mapService.map;
|
|
71
|
-
let contentString = this.createInfoContent(customer);
|
|
72
|
-
let infowindow = new google.maps.InfoWindow({
|
|
73
|
-
content: contentString
|
|
74
|
-
});
|
|
75
|
-
this.addEventListeners(customer, infowindow);
|
|
76
|
-
this.closeLastOpenedInfoWindow();
|
|
77
|
-
infowindow.open(map, marker);
|
|
78
|
-
this.lastInfoWindowOpened = infowindow;
|
|
79
|
-
this.mapService.map = Object.assign(Object.assign({}, this.mapService.map), { center: marker.getPosition });
|
|
80
|
-
// map.setCenter(marker.getPosition());
|
|
81
|
-
return { infowindow: infowindow };
|
|
82
|
-
}
|
|
83
|
-
addEventListeners(customer, infowindow) {
|
|
84
|
-
// chnage -
|
|
85
|
-
let addressLink = `http://maps.google.com/?q=${customer.extras.loc[0]}, ${customer.extras.loc[1]}`;
|
|
86
|
-
google.maps.event.addListener(infowindow, 'domready', function () {
|
|
87
|
-
document.getElementById('Call').addEventListener('click', function (e) {
|
|
88
|
-
window.open(`tel:${customer.extras.phone}`, '_self');
|
|
89
|
-
});
|
|
90
|
-
document
|
|
91
|
-
.getElementById('Directions')
|
|
92
|
-
.addEventListener('click', function (e) {
|
|
93
|
-
window.open(`${addressLink}`, '_blank');
|
|
94
|
-
});
|
|
95
|
-
document
|
|
96
|
-
.getElementsByClassName('gm-ui-hover-effect')[0]
|
|
97
|
-
.setAttribute('style', ' background: none;\
|
|
98
|
-
display: block; \
|
|
99
|
-
border: 0px; \
|
|
100
|
-
margin: 0px; \
|
|
101
|
-
padding: 0px; \
|
|
102
|
-
text-transform: none; \
|
|
103
|
-
appearance: none; \
|
|
104
|
-
position: absolute; \
|
|
105
|
-
cursor: pointer; \
|
|
106
|
-
user-select: none; \
|
|
107
|
-
top: 0px; \
|
|
108
|
-
right: 0px; \
|
|
109
|
-
width: 30px; \
|
|
110
|
-
height: 30px; \
|
|
111
|
-
');
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
/**
|
|
115
|
-
* @description
|
|
116
|
-
* Wrapper method to close Last Info Window
|
|
117
|
-
*
|
|
118
|
-
* @function closeLastOpenedInfoWindow
|
|
119
|
-
* @func closeLastOpenedInfoWindow
|
|
120
|
-
* @method closeLastOpenedInfoWindow
|
|
121
|
-
*/
|
|
122
|
-
closeLastOpenedInfoWindow() {
|
|
123
|
-
if (this.lastInfoWindowOpened) {
|
|
124
|
-
this.lastInfoWindowOpened.close();
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* @description
|
|
129
|
-
* Closes the previously opened info window.
|
|
130
|
-
*
|
|
131
|
-
* @function infoData
|
|
132
|
-
* @func infoData
|
|
133
|
-
* @method infoData
|
|
134
|
-
*/
|
|
135
|
-
createInfoContent(customer) {
|
|
136
|
-
let content = "<div style='padding:4px; font-family: Manrope;' >";
|
|
137
|
-
content += this.createFields(customer, this.config.fields);
|
|
138
|
-
content += '</div>';
|
|
139
|
-
return content;
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* @description
|
|
143
|
-
* Wrapper method to create Fields Container
|
|
144
|
-
*
|
|
145
|
-
* @function createFields
|
|
146
|
-
* @func createFields
|
|
147
|
-
* @method createFields
|
|
148
|
-
*/
|
|
149
|
-
createFields(customer, fields) {
|
|
150
|
-
let _div = document.createElement('div');
|
|
151
|
-
for (const property in this.mainInfoWindowStyle)
|
|
152
|
-
_div.style[property] = this.mainInfoWindowStyle[property];
|
|
153
|
-
for (let key of Object.keys(fields)) {
|
|
154
|
-
let field = fields[key];
|
|
155
|
-
let _fieldDiv = document.createElement('div');
|
|
156
|
-
_fieldDiv.setAttribute('id', field.label);
|
|
157
|
-
for (const property in this.fieldDivStyle)
|
|
158
|
-
_fieldDiv.style[property] = this.fieldDivStyle[property];
|
|
159
|
-
for (const property in field.style)
|
|
160
|
-
_fieldDiv.style[property] = field.style[property];
|
|
161
|
-
let string = field.display == 'label' ? field.label : customer.extras[field.value];
|
|
162
|
-
if (field.icon) {
|
|
163
|
-
let _icon = document.createElement('img');
|
|
164
|
-
_icon.src = field.icon;
|
|
165
|
-
_icon.style.width = field.style.fontSize;
|
|
166
|
-
_icon.style.height = field.style.fontSize;
|
|
167
|
-
_fieldDiv.appendChild(_icon);
|
|
168
|
-
}
|
|
169
|
-
let _fieldText = document.createElement('div');
|
|
170
|
-
_fieldText.innerHTML = string;
|
|
171
|
-
_fieldDiv.appendChild(_fieldText);
|
|
172
|
-
_div.appendChild(_fieldDiv);
|
|
173
|
-
}
|
|
174
|
-
return _div.outerHTML;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
/** @nocollapse */ InfoWindowService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InfoWindowService, deps: [{ token: i1.MapService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
178
|
-
/** @nocollapse */ InfoWindowService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InfoWindowService, providedIn: 'root' });
|
|
179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: InfoWindowService, decorators: [{
|
|
180
|
-
type: Injectable,
|
|
181
|
-
args: [{
|
|
182
|
-
providedIn: 'root'
|
|
183
|
-
}]
|
|
184
|
-
}], ctorParameters: function () { return [{ type: i1.MapService }]; } });
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby13aW5kb3cuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1hZ2VudC1kYXNoYm9hcmQvc3JjL2xpYi9zZXJ2aWNlcy9pbmZvLXdpbmRvdy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQVEzQyxNQUFNLE9BQU8saUJBQWlCO0lBc0Q1QixZQUFtQixVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBbER6QyxXQUFNLEdBQUc7WUFDUCxNQUFNLEVBQUU7Z0JBQ04sSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxNQUFNO29CQUNiLEtBQUssRUFBRSxNQUFNO29CQUNiLE9BQU8sRUFBRSxPQUFPO29CQUNoQixLQUFLLEVBQUU7d0JBQ0wsUUFBUSxFQUFFLE1BQU07d0JBQ2hCLFVBQVUsRUFBRSxHQUFHO3FCQUNoQjtpQkFDRjtnQkFDRCxLQUFLLEVBQUU7b0JBQ0wsS0FBSyxFQUFFLE1BQU07b0JBQ2IsS0FBSyxFQUFFLE9BQU87b0JBQ2QsT0FBTyxFQUFFLE9BQU87b0JBQ2hCLEtBQUssRUFBRTt3QkFDTCxRQUFRLEVBQUUsUUFBUTt3QkFDbEIsT0FBTyxFQUFFLFVBQVU7d0JBQ25CLFNBQVMsRUFBRSxTQUFTO3FCQUNyQjtvQkFDRCxJQUFJLEVBQUUscURBQXFEO2lCQUM1RDtnQkFDRCxPQUFPLEVBQUU7b0JBQ1AsS0FBSyxFQUFFLFlBQVk7b0JBQ25CLEtBQUssRUFBRSxTQUFTO29CQUNoQixPQUFPLEVBQUUsT0FBTztvQkFDaEIsS0FBSyxFQUFFO3dCQUNMLFFBQVEsRUFBRSxRQUFRO3dCQUNsQixPQUFPLEVBQUUsVUFBVTtxQkFDcEI7b0JBQ0QsSUFBSSxFQUFFLHFEQUFxRDtpQkFDNUQ7YUFDRjtTQUNGLENBQUM7UUFFRix3QkFBbUIsR0FBRztZQUNwQixPQUFPLEVB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LENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBRXhFLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTtnQkFDZCxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUMxQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ3ZCLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUN6QyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDMUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUM5QjtZQUVELElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDL0MsVUFBVSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7WUFDOUIsU0FBUyxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUVsQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7O2tJQTVNVSxpQkFBaUI7c0lBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXBTZXJ2aWNlIH0gZnJvbSAnLi9tYXAuc2VydmljZSc7XG5cbmRlY2xhcmUgY29uc3QgZ29vZ2xlOiBhbnk7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEluZm9XaW5kb3dTZXJ2aWNlIHtcbiAgb3Blbk1hcmtlcjtcbiAgbGFzdEluZm9XaW5kb3dPcGVuZWQ7XG5cbiAgY29uZmlnID0ge1xuICAgIGZpZWxkczoge1xuICAgICAgbmFtZToge1xuICAgICAgICBsYWJlbDogJ05hbWUnLFxuICAgICAgICB2YWx1ZTogJ25hbWUnLFxuICAgICAgICBkaXNwbGF5OiAndmFsdWUnLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgIGZvbnRTaXplOiAnMXJlbScsXG4gICAgICAgICAgZm9udFdlaWdodDogNjAwXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwaG9uZToge1xuICAgICAgICBsYWJlbDogJ0NhbGwnLFxuICAgICAgICB2YWx1ZTogJ3Bob25lJyxcbiAgICAgICAgZGlzcGxheTogJ2xhYmVsJyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBmb250U2l6ZTogJzAuOHJlbScsXG4gICAgICAgICAgcGFkZGluZzogJzAuMXJlbSAwJyxcbiAgICAgICAgICB0ZXh0QWxpZ246ICdqdXN0aWZ5J1xuICAgICAgICB9LFxuICAgICAgICBpY29uOiAnaHR0cHM6Ly9jZG4taWNvbnMtcG5nLmZsYXRpY29uLmNvbS81MTIvNjAvNjA3MjAucG5nJ1xuICAgICAgfSxcbiAgICAgIGFkZHJlc3M6IHtcbiAgICAgICAgbGFiZWw6ICdEaXJlY3Rpb25zJyxcbiAgICAgICAgdmFsdWU6ICdhZGRyZXNzJyxcbiAgICAgICAgZGlzcGxheTogJ2xhYmVsJyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBmb250U2l6ZTogJzAuOHJlbScsXG4gICAgICAgICAgcGFkZGluZzogJzAuMXJlbSAwJ1xuICAgICAgICB9LFxuICAgICAgICBpY29uOiAnaHR0cHM6Ly9jZG4taWNvbnMtcG5nLmZsYXRpY29uLmNvbS81MTIvNjIvNjI1MTYucG5nJ1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBtYWluSW5mb1dpbmRvd1N0eWxlID0ge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAnZmxleC1kaXJlY3Rpb24nOiAnY29sdW1uJyxcbiAgICAnanVzdGlmeS1jb250ZW50JzogJ2NlbnRlcicsXG4gICAgJ2FsaWduLWl0ZW1zJzogJ3N0cmV0Y2gnLFxuICAgIGdhcDogJzAuNXJlbScsXG4gICAgcGFkZGluZzogJzAuNXJlbSdcbiAgfTtcblxuICBmaWVsZERpdlN0eWxlID0ge1xuICAgIGdhcDogJyAwLjVyZW0nLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAnZmxleC1kaXJlY3Rpb24nOiAncm93J1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBtYXBTZXJ2aWNlOiBNYXBTZXJ2aWNlKSB7fVxuXG4gIGdldE9wZW5NYXJrZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMub3Blbk1hcmtlcjtcbiAgfVxuXG4gIHNldE9wZW5NYXJrZXIodmFsdWUpIHtcbiAgICB0aGlzLm9wZW5NYXJrZXIgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV3JhcHBlciBtZXRob2QgdG8gc2hvdyBDdXN0b21lciBJbmZvIFdpbmRvd1xuICAgKlxuICAgKiBAZnVuY3Rpb24gc2hvd0luZm9cbiAgICogQGZ1bmMgc2hvd0luZm9cbiAgICogQG1ldGhvZCBzaG93SW5mb1xuICAgKi9cbiAgc2hvd0N1c3RvbWVySW5mb3JtYXRpb24oY3VzdG9tZXIsIG1hcmtlcikge1xuICAgIGxldCBtYXAgPSB0aGlzLm1hcFNlcnZpY2UubWFwO1xuICAgIGxldCBjb250ZW50U3RyaW5nID0gdGhpcy5jcmVhdGVJbmZvQ29udGVudChjdXN0b21lcik7XG5cbiAgICBsZXQgaW5mb3dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KHtcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnRTdHJpbmdcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoY3VzdG9tZXIsIGluZm93aW5kb3cpO1xuXG4gICAgdGhpcy5jbG9zZUxhc3RPcGVuZWRJbmZvV2luZG93KCk7XG4gICAgaW5mb3dpbmRvdy5vcGVuKG1hcCwgbWFya2VyKTtcbiAgICB0aGlzLmxhc3RJbmZvV2luZG93T3BlbmVkID0gaW5mb3dpbmRvdztcblxuICAgIHRoaXMubWFwU2VydmljZS5tYXAgPSB7XG4gICAgICAuLi50aGlzLm1hcFNlcnZpY2UubWFwLFxuICAgICAgY2VudGVyOiBtYXJrZXIuZ2V0UG9zaXRpb25cbiAgICB9O1xuICAgIC8vIG1hcC5zZXRDZW50ZXIobWFya2VyLmdldFBvc2l0aW9uKCkpO1xuXG4gICAgcmV0dXJuIHsgaW5mb3dpbmRvdzogaW5mb3dpbmRvdyB9O1xuICB9XG5cbiAgYWRkRXZlbnRMaXN0ZW5lcnMoY3VzdG9tZXIsIGluZm93aW5kb3cpIHtcbiAgICAvLyBjaG5hZ2UgLVxuICAgIGxldCBhZGRyZXNzTGluayA9IGBodHRwOi8vbWFwcy5nb29nbGUuY29tLz9xPSR7Y3VzdG9tZXIuZXh0cmFzLmxvY1swXX0sICR7Y3VzdG9tZXIuZXh0cmFzLmxvY1sxXX1gO1xuXG4gICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIoaW5mb3dpbmRvdywgJ2RvbXJlYWR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0NhbGwnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIHdpbmRvdy5vcGVuKGB0ZWw6JHtjdXN0b21lci5leHRyYXMucGhvbmV9YCwgJ19zZWxmJyk7XG4gICAgICB9KTtcbiAgICAgIGRvY3VtZW50XG4gICAgICAgIC5nZXRFbGVtZW50QnlJZCgnRGlyZWN0aW9ucycpXG4gICAgICAgIC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgd2luZG93Lm9wZW4oYCR7YWRkcmVzc0xpbmt9YCwgJ19ibGFuaycpO1xuICAgICAgICB9KTtcblxuICAgICAgZG9jdW1lbnRcbiAgICAgICAgLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2dtLXVpLWhvdmVyLWVmZmVjdCcpWzBdXG4gICAgICAgIC5zZXRBdHRyaWJ1dGUoXG4gICAgICAgICAgJ3N0eWxlJyxcbiAgICAgICAgICAnICAgYmFja2dyb3VuZDogbm9uZTtcXFxuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7IFxcXG4gICAgICAgICAgICBib3JkZXI6IDBweDsgXFxcbiAgICAgICAgICAgIG1hcmdpbjogMHB4OyBcXFxuICAgICAgICAgICAgcGFkZGluZzogMHB4OyBcXFxuICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IG5vbmU7IFxcXG4gICAgICAgICAgICBhcHBlYXJhbmNlOiBub25lOyBcXFxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlOyBcXFxuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyOyBcXFxuICAgICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7IFxcXG4gICAgICAgICAgICB0b3A6IDBweDsgXFxcbiAgICAgICAgICAgIHJpZ2h0OiAwcHg7IFxcXG4gICAgICAgICAgICB3aWR0aDogMzBweDsgXFxcbiAgICAgICAgICAgIGhlaWdodDogMzBweDsgXFxcbiAgICAgICAgICAgICdcbiAgICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogV3JhcHBlciBtZXRob2QgdG8gY2xvc2UgTGFzdCBJbmZvIFdpbmRvd1xuICAgKlxuICAgKiBAZnVuY3Rpb24gY2xvc2VMYXN0T3BlbmVkSW5mb1dpbmRvd1xuICAgKiBAZnVuYyBjbG9zZUxhc3RPcGVuZWRJbmZvV2luZG93XG4gICAqIEBtZXRob2QgY2xvc2VMYXN0T3BlbmVkSW5mb1dpbmRvd1xuICAgKi9cbiAgY2xvc2VMYXN0T3BlbmVkSW5mb1dpbmRvdygpIHtcbiAgICBpZiAodGhpcy5sYXN0SW5mb1dpbmRvd09wZW5lZCkge1xuICAgICAgdGhpcy5sYXN0SW5mb1dpbmRvd09wZW5lZC5jbG9zZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQ2xvc2VzIHRoZSBwcmV2aW91c2x5IG9wZW5lZCBpbmZvIHdpbmRvdy5cbiAgICpcbiAgICogQGZ1bmN0aW9uIGluZm9EYXRhXG4gICAqIEBmdW5jIGluZm9EYXRhXG4gICAqIEBtZXRob2QgaW5mb0RhdGFcbiAgICovXG4gIGNyZWF0ZUluZm9Db250ZW50KGN1c3RvbWVyKSB7XG4gICAgbGV0IGNvbnRlbnQgPSBcIjxkaXYgc3R5bGU9J3BhZGRpbmc6NHB4OyBmb250LWZhbWlseTogTWFucm9wZTsnID5cIjtcblxuICAgIGNvbnRlbnQgKz0gdGhpcy5jcmVhdGVGaWVsZHMoY3VzdG9tZXIsIHRoaXMuY29uZmlnLmZpZWxkcyk7XG4gICAgY29udGVudCArPSAnPC9kaXY+JztcblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXcmFwcGVyIG1ldGhvZCB0byBjcmVhdGUgRmllbGRzIENvbnRhaW5lclxuICAgKlxuICAgKiBAZnVuY3Rpb24gY3JlYXRlRmllbGRzXG4gICAqIEBmdW5jIGNyZWF0ZUZpZWxkc1xuICAgKiBAbWV0aG9kIGNyZWF0ZUZpZWxkc1xuICAgKi9cbiAgY3JlYXRlRmllbGRzKGN1c3RvbWVyLCBmaWVsZHMpIHtcbiAgICBsZXQgX2RpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gdGhpcy5tYWluSW5mb1dpbmRvd1N0eWxlKVxuICAgICAgX2Rpdi5zdHlsZVtwcm9wZXJ0eV0gPSB0aGlzLm1haW5JbmZvV2luZG93U3R5bGVbcHJvcGVydHldO1xuXG4gICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGZpZWxkcykpIHtcbiAgICAgIGxldCBmaWVsZCA9IGZpZWxkc1trZXldO1xuXG4gICAgICBsZXQgX2ZpZWxkRGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBfZmllbGREaXYuc2V0QXR0cmlidXRlKCdpZCcsIGZpZWxkLmxhYmVsKTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gdGhpcy5maWVsZERpdlN0eWxlKVxuICAgICAgICBfZmllbGREaXYuc3R5bGVbcHJvcGVydHldID0gdGhpcy5maWVsZERpdlN0eWxlW3Byb3BlcnR5XTtcbiAgICAgIGZvciAoY29uc3QgcHJvcGVydHkgaW4gZmllbGQuc3R5bGUpXG4gICAgICAgIF9maWVsZERpdi5zdHlsZVtwcm9wZXJ0eV0gPSBmaWVsZC5zdHlsZVtwcm9wZXJ0eV07XG5cbiAgICAgIGxldCBzdHJpbmcgPVxuICAgICAgICBmaWVsZC5kaXNwbGF5ID09ICdsYWJlbCcgPyBmaWVsZC5sYWJlbCA6IGN1c3RvbWVyLmV4dHJhc1tmaWVsZC52YWx1ZV07XG5cbiAgICAgIGlmIChmaWVsZC5pY29uKSB7XG4gICAgICAgIGxldCBfaWNvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgICAgICBfaWNvbi5zcmMgPSBmaWVsZC5pY29uO1xuICAgICAgICBfaWNvbi5zdHlsZS53aWR0aCA9IGZpZWxkLnN0eWxlLmZvbnRTaXplO1xuICAgICAgICBfaWNvbi5zdHlsZS5oZWlnaHQgPSBmaWVsZC5zdHlsZS5mb250U2l6ZTtcbiAgICAgICAgX2ZpZWxkRGl2LmFwcGVuZENoaWxkKF9pY29uKTtcbiAgICAgIH1cblxuICAgICAgbGV0IF9maWVsZFRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIF9maWVsZFRleHQuaW5uZXJIVE1MID0gc3RyaW5nO1xuICAgICAgX2ZpZWxkRGl2LmFwcGVuZENoaWxkKF9maWVsZFRleHQpO1xuXG4gICAgICBfZGl2LmFwcGVuZENoaWxkKF9maWVsZERpdik7XG4gICAgfVxuICAgIHJldHVybiBfZGl2Lm91dGVySFRNTDtcbiAgfVxufVxuIl19
|