mmhglobal-dynamicform 2.0.0-beta.2 → 2.0.0-beta.21
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 +52 -0
- package/esm2020/lib/components/buttonfieldbase.component.mjs +9 -11
- package/esm2020/lib/components/containerfieldbase.component.mjs +2 -2
- package/esm2020/lib/components/datalistingfieldbase.component.mjs +25 -11
- package/esm2020/lib/components/fieldbase.component.mjs +4 -1
- package/esm2020/lib/components/inputfieldbase.component.mjs +1 -4
- package/esm2020/lib/constants/constant.mjs +4 -0
- package/esm2020/lib/embed-components/page-loader/page-loader.component.mjs +14 -0
- package/esm2020/lib/input-error-message/input-error-message.component.mjs +19 -8
- package/esm2020/lib/mmhglobal-dynamicform.module.mjs +30 -5
- package/esm2020/lib/services/component-error-handler.service.mjs +59 -29
- package/esm2020/lib/services/main.service.mjs +237 -114
- package/esm2020/lib/services/signalr.service.mjs +126 -0
- package/esm2020/lib/services/zcomponent.service.mjs +12 -10
- package/esm2020/lib/uiappmenucontent/uiappmenucontent.component.mjs +11 -4
- package/esm2020/lib/uibulletin/uibulletin.component.mjs +91 -0
- package/esm2020/lib/uicontainer/uicontainer.component.mjs +3 -3
- package/esm2020/lib/uicontent/uicontent.component.mjs +19 -13
- package/esm2020/lib/uiheader/uiheader.component.mjs +12 -9
- package/esm2020/lib/uimenubutton/uimenubutton.component.mjs +2 -2
- package/esm2020/lib/uipage/uipage.component.mjs +30 -38
- package/esm2020/lib/zbuttons/zbuttons.component.mjs +2 -1
- package/esm2020/lib/zcheckbox/zcheckbox.component.mjs +3 -3
- package/esm2020/lib/zdatetime/zdatetime.component.mjs +6 -2
- package/esm2020/lib/zform/zform.component.mjs +8 -3
- package/esm2020/lib/zgrid/container/zgrid-container.component.mjs +99 -0
- package/esm2020/lib/zgrid/date-range-cell-filter.component.mjs +19 -8
- package/esm2020/lib/zgrid/zgrid.binding.directive.mjs +5 -13
- package/esm2020/lib/zgrid/zgrid.component.mjs +347 -308
- package/esm2020/lib/zinput-container/zinput-container.component.mjs +6 -12
- package/esm2020/lib/zinput-container/zinput-container.pipe.mjs +2 -2
- package/esm2020/lib/zmfb/zmfb.component.mjs +1 -5
- package/esm2020/lib/znumeric/znumeric.component.mjs +4 -21
- package/esm2020/lib/znumeric/znumeric.component.pipe.mjs +19 -0
- package/esm2020/lib/zquerybuilder/zquerybuilder.component.mjs +9 -3
- package/esm2020/lib/zselectmultiple/zselectmultiple.component.mjs +4 -15
- package/esm2020/lib/zselectmultiple/zselectmultiple.pipe.mjs +29 -0
- package/esm2020/lib/ztexteditor/ztexteditor.component.mjs +3 -3
- package/esm2020/lib/ztree/ztree.component.mjs +14 -4
- package/esm2020/lib/ztreelist/ztreelist.component.mjs +10 -12
- package/esm2020/lib/zworkflowbuttons/zworkflowbuttons.component.mjs +7 -5
- package/esm2020/public-api.mjs +6 -1
- package/fesm2015/mmhglobal-dynamicform.mjs +1394 -819
- package/fesm2015/mmhglobal-dynamicform.mjs.map +1 -1
- package/fesm2020/mmhglobal-dynamicform.mjs +1394 -822
- package/fesm2020/mmhglobal-dynamicform.mjs.map +1 -1
- package/lib/components/datalistingfieldbase.component.d.ts +5 -1
- package/lib/components/fieldbase.component.d.ts +1 -0
- package/lib/components/inputfieldbase.component.d.ts +0 -1
- package/lib/constants/constant.d.ts +3 -0
- package/lib/embed-components/page-loader/page-loader.component.d.ts +8 -0
- package/lib/input-error-message/input-error-message.component.d.ts +3 -2
- package/lib/mmhglobal-dynamicform.module.d.ts +87 -82
- package/lib/services/component-error-handler.service.d.ts +8 -3
- package/lib/services/main.service.d.ts +16 -5
- package/lib/services/signalr.service.d.ts +40 -0
- package/lib/services/zcomponent.service.d.ts +1 -1
- package/lib/uibulletin/uibulletin.component.d.ts +37 -0
- package/lib/uicontent/uicontent.component.d.ts +3 -1
- package/lib/uiheader/uiheader.component.d.ts +1 -0
- package/lib/uipage/uipage.component.d.ts +1 -0
- package/lib/zgrid/container/zgrid-container.component.d.ts +28 -0
- package/lib/zgrid/date-range-cell-filter.component.d.ts +5 -1
- package/lib/zgrid/zgrid.component.d.ts +33 -23
- package/lib/zinput-container/zinput-container.component.d.ts +2 -5
- package/lib/zmfb/zmfb.component.d.ts +0 -1
- package/lib/znumeric/znumeric.component.d.ts +1 -1
- package/lib/znumeric/znumeric.component.pipe.d.ts +10 -0
- package/lib/zquerybuilder/zquerybuilder.component.d.ts +1 -0
- package/lib/zselectmultiple/zselectmultiple.component.d.ts +1 -4
- package/lib/zselectmultiple/zselectmultiple.pipe.d.ts +11 -0
- package/lib/ztree/ztree.component.d.ts +3 -0
- package/lib/ztreelist/ztreelist.component.d.ts +1 -1
- package/package.json +2 -2
- package/public-api.d.ts +5 -0
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { HubConnectionBuilder, LogLevel } from "@microsoft/signalr";
|
|
3
|
+
import { MessagePackHubProtocol } from "@microsoft/signalr-protocol-msgpack";
|
|
4
|
+
import { map, Subject } from "rxjs";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "mmhglobal-zcore";
|
|
7
|
+
export class SignalrEvent {
|
|
8
|
+
}
|
|
9
|
+
export class PushChangeEvent {
|
|
10
|
+
}
|
|
11
|
+
export class SignalrService {
|
|
12
|
+
constructor(zone, authService, zcoreService) {
|
|
13
|
+
this.zone = zone;
|
|
14
|
+
this.authService = authService;
|
|
15
|
+
this.zcoreService = zcoreService;
|
|
16
|
+
this.environment = null;
|
|
17
|
+
this.environment = this.zcoreService.getEnvironment();
|
|
18
|
+
const errorSubject = new Subject();
|
|
19
|
+
this.createHubConnection();
|
|
20
|
+
this.connection.onreconnecting(error => this.zone.run(() => errorSubject.next(error)));
|
|
21
|
+
}
|
|
22
|
+
get hubConnectionOptions() {
|
|
23
|
+
return {
|
|
24
|
+
headers: SignalRHeader,
|
|
25
|
+
// transport: HttpTransportType.WebSockets,
|
|
26
|
+
accessTokenFactory: () => {
|
|
27
|
+
return this.authService.e1Token.access_token;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
get retryPolicy() {
|
|
32
|
+
return {
|
|
33
|
+
nextRetryDelayInMilliseconds: retryContext => {
|
|
34
|
+
if (retryContext.elapsedMilliseconds < 60000) {
|
|
35
|
+
return Math.random() * 10000;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
return 30000;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
async createHubConnection() {
|
|
44
|
+
this.eventSubject = new Subject();
|
|
45
|
+
const hubEndPoint = this.environment.signalRUrl;
|
|
46
|
+
this.connection = new HubConnectionBuilder()
|
|
47
|
+
.withUrl(hubEndPoint + '/signalr', this.hubConnectionOptions)
|
|
48
|
+
.withHubProtocol(new MessagePackHubProtocol())
|
|
49
|
+
.withAutomaticReconnect(this.retryPolicy)
|
|
50
|
+
.configureLogging(LogLevel.Information)
|
|
51
|
+
.build();
|
|
52
|
+
this.connection.start();
|
|
53
|
+
this.connection.on('onEvent', (event) => {
|
|
54
|
+
switch (event.Name) {
|
|
55
|
+
case 'ErrorAtHub':
|
|
56
|
+
console.warn('Error At Hub:', event.Payload);
|
|
57
|
+
break;
|
|
58
|
+
case 'LoggingAtHub':
|
|
59
|
+
console.warn('Logging At Hub:', event.Payload);
|
|
60
|
+
break;
|
|
61
|
+
default:
|
|
62
|
+
this.zone.run(() => this.eventSubject.next(event));
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
this.connection.onreconnecting(error => this.handleOnReconnecting(error));
|
|
67
|
+
this.connection.onreconnected(connectionId => this.handleOnReconnected(connectionId));
|
|
68
|
+
this.connection.onclose(error => this.handleOnClose(error));
|
|
69
|
+
this.event$ = this.eventSubject.asObservable();
|
|
70
|
+
}
|
|
71
|
+
handleOnReconnecting(error) {
|
|
72
|
+
console.log('Hub connection started reconnecting due to an error: ', error);
|
|
73
|
+
}
|
|
74
|
+
handleOnReconnected(connectionId) {
|
|
75
|
+
console.log('Hub connection successfully reconnected. ConnectionId is now: ', connectionId);
|
|
76
|
+
}
|
|
77
|
+
handleOnClose(error) {
|
|
78
|
+
if (error === null) {
|
|
79
|
+
console.log('Hub connection closed without error.', error);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
console.log('Hub connection closed due to an error: ', error);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
getEvent() {
|
|
86
|
+
return this.event$.pipe(map(event => {
|
|
87
|
+
return {
|
|
88
|
+
name: event.Name,
|
|
89
|
+
payload: event.Payload
|
|
90
|
+
};
|
|
91
|
+
}));
|
|
92
|
+
}
|
|
93
|
+
getConnectionId() {
|
|
94
|
+
return this.connection.connectionId;
|
|
95
|
+
}
|
|
96
|
+
joinGroup(groupName) {
|
|
97
|
+
this.connection.invoke("JoinGroup", groupName);
|
|
98
|
+
}
|
|
99
|
+
removeFromGroup(groupName) {
|
|
100
|
+
this.connection.invoke("RemoveFromGroup", groupName);
|
|
101
|
+
}
|
|
102
|
+
sendToClientGroup(groupsToSend, serviceName, events) {
|
|
103
|
+
this.connection.invoke("SendToClientGroup", groupsToSend, serviceName, events);
|
|
104
|
+
}
|
|
105
|
+
sendToClientUser(userToSend, serviceName, events) {
|
|
106
|
+
this.connection.invoke("SendToClientUser", userToSend, serviceName, events);
|
|
107
|
+
}
|
|
108
|
+
sendToAllClients(serviceName, events) {
|
|
109
|
+
this.connection.invoke("SendToAllClients", serviceName, events);
|
|
110
|
+
}
|
|
111
|
+
sendToCaller(serviceName, events) {
|
|
112
|
+
this.connection.invoke("SendToCaller", serviceName, events);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
SignalrService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SignalrService, deps: [{ token: i0.NgZone }, { token: i1.AuthService }, { token: i1.ZCoreService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
116
|
+
SignalrService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SignalrService, providedIn: 'root' });
|
|
117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: SignalrService, decorators: [{
|
|
118
|
+
type: Injectable,
|
|
119
|
+
args: [{
|
|
120
|
+
providedIn: 'root'
|
|
121
|
+
}]
|
|
122
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone }, { type: i1.AuthService }, { type: i1.ZCoreService }]; } });
|
|
123
|
+
export const SignalRHeader = {
|
|
124
|
+
SignalRKey: "3D36C63093B75A091E116182BE91FFB99D53192365C6222979587514E6F65994"
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFsci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvc2lnbmFsci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFvQyxvQkFBb0IsRUFBd0MsUUFBUSxFQUFrQixNQUFNLG9CQUFvQixDQUFDO0FBQzVKLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxHQUFHLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFJaEQsTUFBTSxPQUFPLFlBQVk7Q0FHeEI7QUFFRCxNQUFNLE9BQU8sZUFBZTtDQUczQjtBQU1ELE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQ1UsSUFBWSxFQUNaLFdBQXdCLEVBQ3hCLFlBQTBCO1FBRjFCLFNBQUksR0FBSixJQUFJLENBQVE7UUFDWixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUw3QixnQkFBVyxHQUFRLElBQUksQ0FBQztRQVE3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEQsTUFBTSxZQUFZLEdBQUcsSUFBSSxPQUFPLEVBQU8sQ0FBQztRQUN4QyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQsSUFBYyxvQkFBb0I7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QUFDLGtCQUFrQixFQUFFLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBRUQsWUFBWSxDQUFDLFdBQW1CLEVBQUUsTUFBVztRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7OzRHQWhJVSxjQUFjO2dIQUFkLGNBQWMsY0FIYixNQUFNOzRGQUdQLGNBQWM7a0JBSjFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COztBQXFJRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUc7SUFDM0IsVUFBVSxFQUFFLGtFQUFrRTtDQUM3RCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgTmdab25lIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cFRyYW5zcG9ydFR5cGUsIEh1YkNvbm5lY3Rpb24sIEh1YkNvbm5lY3Rpb25CdWlsZGVyLCBJSHR0cENvbm5lY3Rpb25PcHRpb25zLCBJUmV0cnlQb2xpY3ksIExvZ0xldmVsLCBNZXNzYWdlSGVhZGVycyB9IGZyb20gXCJAbWljcm9zb2Z0L3NpZ25hbHJcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVBhY2tIdWJQcm90b2NvbCB9IGZyb20gXCJAbWljcm9zb2Z0L3NpZ25hbHItcHJvdG9jb2wtbXNncGFja1wiO1xyXG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSwgWkNvcmVTZXJ2aWNlIH0gZnJvbSBcIm1taGdsb2JhbC16Y29yZVwiO1xyXG5cclxuXHJcbmV4cG9ydCBjbGFzcyBTaWduYWxyRXZlbnQge1xyXG4gIE5hbWU6IHN0cmluZztcclxuICBQYXlsb2FkOiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBQdXNoQ2hhbmdlRXZlbnQge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBwYXlsb2FkOiBhbnk7XHJcbn1cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBTaWduYWxyU2VydmljZSB7XHJcbiAgcHJpdmF0ZSBjb25uZWN0aW9uOiBIdWJDb25uZWN0aW9uO1xyXG4gIHByaXZhdGUgZXZlbnRTdWJqZWN0OiBTdWJqZWN0PFNpZ25hbHJFdmVudD47XHJcbiAgcHJpdmF0ZSBldmVudCQ6IE9ic2VydmFibGU8U2lnbmFsckV2ZW50PjsgXHJcbiAgcHVibGljIGVudmlyb25tZW50OiBhbnkgPSBudWxsO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgem9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICkge1xyXG5cclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLnpjb3JlU2VydmljZS5nZXRFbnZpcm9ubWVudCgpO1xyXG4gICAgY29uc3QgZXJyb3JTdWJqZWN0ID0gbmV3IFN1YmplY3Q8YW55PigpO1xyXG4gICAgdGhpcy5jcmVhdGVIdWJDb25uZWN0aW9uKCk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0aW5nKGVycm9yID0+XHJcbiAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4gZXJyb3JTdWJqZWN0Lm5leHQoZXJyb3IpKSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0IGh1YkNvbm5lY3Rpb25PcHRpb25zKCk6IElIdHRwQ29ubmVjdGlvbk9wdGlvbnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaGVhZGVyczogU2lnbmFsUkhlYWRlcixcclxuICAgICAgLy8gdHJhbnNwb3J0OiBIdHRwVHJhbnNwb3J0VHlwZS5XZWJTb2NrZXRzLFxyXG4gICAgICBhY2Nlc3NUb2tlbkZhY3Rvcnk6ICgpID0+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5lMVRva2VuLmFjY2Vzc190b2tlbjtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXQgcmV0cnlQb2xpY3koKTogSVJldHJ5UG9saWN5IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5leHRSZXRyeURlbGF5SW5NaWxsaXNlY29uZHM6IHJldHJ5Q29udGV4dCA9PiB7XHJcbiAgICAgICAgaWYgKHJldHJ5Q29udGV4dC5lbGFwc2VkTWlsbGlzZWNvbmRzIDwgNjAwMDApIHtcclxuICAgICAgICAgIHJldHVybiBNYXRoLnJhbmRvbSgpICogMTAwMDA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiAzMDAwMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGVIdWJDb25uZWN0aW9uKCkge1xyXG4gICAgdGhpcy5ldmVudFN1YmplY3QgPSBuZXcgU3ViamVjdDxTaWduYWxyRXZlbnQ+KCk7IFxyXG5cclxuICAgIGNvbnN0IGh1YkVuZFBvaW50ID0gdGhpcy5lbnZpcm9ubWVudC5zaWduYWxSVXJsO1xyXG4gICAgdGhpcy5jb25uZWN0aW9uID0gbmV3IEh1YkNvbm5lY3Rpb25CdWlsZGVyKClcclxuICAgICAgLndpdGhVcmwoaHViRW5kUG9pbnQgKyAnL3NpZ25hbHInLCB0aGlzLmh1YkNvbm5lY3Rpb25PcHRpb25zKVxyXG4gICAgICAud2l0aEh1YlByb3RvY29sKG5ldyBNZXNzYWdlUGFja0h1YlByb3RvY29sKCkpXHJcbiAgICAgIC53aXRoQXV0b21hdGljUmVjb25uZWN0KHRoaXMucmV0cnlQb2xpY3kpXHJcbiAgICAgIC5jb25maWd1cmVMb2dnaW5nKExvZ0xldmVsLkluZm9ybWF0aW9uKVxyXG4gICAgICAuYnVpbGQoKTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24uc3RhcnQoKTtcclxuXHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ub24oJ29uRXZlbnQnLCAoZXZlbnQ6IFNpZ25hbHJFdmVudCkgPT4ge1xyXG4gICAgICBzd2l0Y2ggKGV2ZW50Lk5hbWUpIHtcclxuICAgICAgICBjYXNlICdFcnJvckF0SHViJzpcclxuICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3IgQXQgSHViOicsIGV2ZW50LlBheWxvYWQpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnTG9nZ2luZ0F0SHViJzpcclxuICAgICAgICAgIGNvbnNvbGUud2FybignTG9nZ2luZyBBdCBIdWI6JywgZXZlbnQuUGF5bG9hZCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgdGhpcy56b25lLnJ1bigoKSA9PiB0aGlzLmV2ZW50U3ViamVjdC5uZXh0KGV2ZW50KSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb25uZWN0aW9uLm9ucmVjb25uZWN0aW5nKGVycm9yID0+IHRoaXMuaGFuZGxlT25SZWNvbm5lY3RpbmcoZXJyb3IpKTtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5vbnJlY29ubmVjdGVkKGNvbm5lY3Rpb25JZCA9PiB0aGlzLmhhbmRsZU9uUmVjb25uZWN0ZWQoY29ubmVjdGlvbklkKSk7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24ub25jbG9zZShlcnJvciA9PiB0aGlzLmhhbmRsZU9uQ2xvc2UoZXJyb3IpKTtcclxuXHJcbiAgICB0aGlzLmV2ZW50JCA9IHRoaXMuZXZlbnRTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBoYW5kbGVPblJlY29ubmVjdGluZyhlcnJvcjogRXJyb3IpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCdIdWIgY29ubmVjdGlvbiBzdGFydGVkIHJlY29ubmVjdGluZyBkdWUgdG8gYW4gZXJyb3I6ICcsIGVycm9yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlT25SZWNvbm5lY3RlZChjb25uZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc29sZS5sb2coJ0h1YiBjb25uZWN0aW9uIHN1Y2Nlc3NmdWxseSByZWNvbm5lY3RlZC4gQ29ubmVjdGlvbklkIGlzIG5vdzogJywgY29ubmVjdGlvbklkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlT25DbG9zZShlcnJvcjogRXJyb3IpOiB2b2lkIHtcclxuICAgIGlmKGVycm9yID09PSBudWxsKXtcclxuICAgICAgY29uc29sZS5sb2coJ0h1YiBjb25uZWN0aW9uIGNsb3NlZCB3aXRob3V0IGVycm9yLicsIGVycm9yKTtcclxuICAgIH1cclxuICAgIGVsc2V7XHJcbiAgICAgIGNvbnNvbGUubG9nKCdIdWIgY29ubmVjdGlvbiBjbG9zZWQgZHVlIHRvIGFuIGVycm9yOiAnLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRFdmVudCgpOiBPYnNlcnZhYmxlPFB1c2hDaGFuZ2VFdmVudD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuZXZlbnQkLnBpcGUobWFwKGV2ZW50ID0+IHtcclxuICAgICAgcmV0dXJuIDxQdXNoQ2hhbmdlRXZlbnQ+e1xyXG4gICAgICAgIG5hbWU6IGV2ZW50Lk5hbWUsXHJcbiAgICAgICAgcGF5bG9hZDogZXZlbnQuUGF5bG9hZFxyXG4gICAgICB9XHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBnZXRDb25uZWN0aW9uSWQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uY29ubmVjdGlvbklkO1xyXG4gIH1cclxuXHJcbiAgam9pbkdyb3VwKGdyb3VwTmFtZTogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24uaW52b2tlKFwiSm9pbkdyb3VwXCIsIGdyb3VwTmFtZSk7XHJcbiAgfVxyXG5cclxuICByZW1vdmVGcm9tR3JvdXAoZ3JvdXBOYW1lOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2UoXCJSZW1vdmVGcm9tR3JvdXBcIiwgZ3JvdXBOYW1lKVxyXG4gIH1cclxuXHJcbiAgc2VuZFRvQ2xpZW50R3JvdXAoZ3JvdXBzVG9TZW5kOiBzdHJpbmdbXSwgc2VydmljZU5hbWU6IHN0cmluZywgZXZlbnRzOiBhbnkpIHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2UoXCJTZW5kVG9DbGllbnRHcm91cFwiLCBncm91cHNUb1NlbmQsIHNlcnZpY2VOYW1lLCBldmVudHMpO1xyXG4gIH1cclxuXHJcbiAgc2VuZFRvQ2xpZW50VXNlcih1c2VyVG9TZW5kOiBzdHJpbmcsIHNlcnZpY2VOYW1lOiBzdHJpbmcsIGV2ZW50czogYW55KSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24uaW52b2tlKFwiU2VuZFRvQ2xpZW50VXNlclwiLCB1c2VyVG9TZW5kLCBzZXJ2aWNlTmFtZSwgZXZlbnRzKTtcclxuICB9XHJcblxyXG4gIHNlbmRUb0FsbENsaWVudHMoc2VydmljZU5hbWU6IHN0cmluZywgZXZlbnRzOiBhbnkpIHtcclxuICAgIHRoaXMuY29ubmVjdGlvbi5pbnZva2UoXCJTZW5kVG9BbGxDbGllbnRzXCIsIHNlcnZpY2VOYW1lLCBldmVudHMpO1xyXG4gIH1cclxuXHJcbiAgc2VuZFRvQ2FsbGVyKHNlcnZpY2VOYW1lOiBzdHJpbmcsIGV2ZW50czogYW55KSB7XHJcbiAgICB0aGlzLmNvbm5lY3Rpb24uaW52b2tlKFwiU2VuZFRvQ2FsbGVyXCIsIHNlcnZpY2VOYW1lLCBldmVudHMpO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IFNpZ25hbFJIZWFkZXIgPSB7XHJcbiAgU2lnbmFsUktleTogXCIzRDM2QzYzMDkzQjc1QTA5MUUxMTYxODJCRTkxRkZCOTlENTMxOTIzNjVDNjIyMjk3OTU4NzUxNEU2RjY1OTk0XCJcclxufSBhcyBNZXNzYWdlSGVhZGVyc1xyXG4iXX0=
|
|
@@ -122,9 +122,9 @@ export class ZComponentService {
|
|
|
122
122
|
return null;
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
|
-
translateToolBarItems(items) {
|
|
125
|
+
translateToolBarItems(items, group) {
|
|
126
126
|
const obsList = new Array();
|
|
127
|
-
obsList.push(this.translateService.$translateItemList(items, "text",
|
|
127
|
+
obsList.push(this.translateService.$translateItemList(items, "text", { elementName: 'general', group }));
|
|
128
128
|
if (obsList.length <= 0) {
|
|
129
129
|
return of({});
|
|
130
130
|
}
|
|
@@ -132,7 +132,7 @@ export class ZComponentService {
|
|
|
132
132
|
}
|
|
133
133
|
translateGridColumnHeader(columns, group) {
|
|
134
134
|
const obsList = new Array();
|
|
135
|
-
obsList.push(this.translateService.$translateItemList(columns, "title",
|
|
135
|
+
obsList.push(this.translateService.$translateItemList(columns, "title", { elementName: 'menu', group }));
|
|
136
136
|
if (obsList.length <= 0) {
|
|
137
137
|
return of({});
|
|
138
138
|
}
|
|
@@ -140,7 +140,7 @@ export class ZComponentService {
|
|
|
140
140
|
}
|
|
141
141
|
translateButtonComponent(buttons, group) {
|
|
142
142
|
let obsList = new Array();
|
|
143
|
-
obsList.push(this.translateService.$translateItemList(buttons, "text",
|
|
143
|
+
obsList.push(this.translateService.$translateItemList(buttons, "text", { elementName: group.fieldName, group }));
|
|
144
144
|
if (obsList.length <= 0) {
|
|
145
145
|
return of({});
|
|
146
146
|
}
|
|
@@ -151,7 +151,7 @@ export class ZComponentService {
|
|
|
151
151
|
const propList = ["Label", "PlaceHolder", "Title"]; // ToolTip
|
|
152
152
|
for (const prop of propList) {
|
|
153
153
|
if (data[prop] != undefined) {
|
|
154
|
-
const obs = this.translateCompByProperty(data, prop, group.fieldName);
|
|
154
|
+
const obs = this.translateCompByProperty(data, prop, group.fieldName, group);
|
|
155
155
|
if (obs) {
|
|
156
156
|
obsList = obsList.concat(obs);
|
|
157
157
|
}
|
|
@@ -167,7 +167,7 @@ export class ZComponentService {
|
|
|
167
167
|
const propList = ["label", "title"];
|
|
168
168
|
for (const prop of propList) {
|
|
169
169
|
if (componentProperties[prop] != undefined) {
|
|
170
|
-
const obs = this.translateCompByProperty(componentProperties, prop, group.fieldName);
|
|
170
|
+
const obs = this.translateCompByProperty(componentProperties, prop, group.fieldName, group);
|
|
171
171
|
if (obs) {
|
|
172
172
|
obsList = obsList.concat(obs);
|
|
173
173
|
}
|
|
@@ -178,18 +178,20 @@ export class ZComponentService {
|
|
|
178
178
|
}
|
|
179
179
|
return forkJoin(obsList);
|
|
180
180
|
}
|
|
181
|
-
translateCompByProperty(data, propName, fieldName) {
|
|
181
|
+
translateCompByProperty(data, propName, fieldName, group) {
|
|
182
182
|
if (data[propName] == undefined || data[propName] == "") {
|
|
183
183
|
return;
|
|
184
184
|
}
|
|
185
185
|
const obsList = new Array();
|
|
186
186
|
if (Array.isArray(data[propName]) && data[propName].length > 0) {
|
|
187
|
-
obsList.push(this.translateService.$translateItemList(data[propName], null,
|
|
187
|
+
obsList.push(this.translateService.$translateItemList(data[propName], null, { elementName: fieldName, group }).pipe(tap(resp => {
|
|
188
188
|
data[propName] = resp;
|
|
189
189
|
})));
|
|
190
190
|
}
|
|
191
191
|
else {
|
|
192
|
-
obsList.push(this.translateService.$translateSingleItem(data, propName,
|
|
192
|
+
obsList.push(this.translateService.$translateSingleItem(data, propName, { elementName: fieldName, group }).pipe(tap(resp => {
|
|
193
|
+
data[propName] = resp;
|
|
194
|
+
})));
|
|
193
195
|
}
|
|
194
196
|
return obsList;
|
|
195
197
|
}
|
|
@@ -202,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
|
|
|
202
204
|
providedIn: 'root'
|
|
203
205
|
}]
|
|
204
206
|
}], ctorParameters: function () { return [{ type: i1.ComponentObjectService }, { type: i2.TranslationService }, { type: i2.ZCoreService }]; } });
|
|
205
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTZDLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE9BQU8sRUFBYyxnQkFBZ0IsRUFBMEUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2SSxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNckQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLHNCQUE4QyxFQUM5QyxnQkFBb0MsRUFDcEMsWUFBMEI7UUFGMUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBNEZuQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQTFGckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxhQUFxQjtRQUM5QyxPQUFPLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxhQUFhLENBQ2xCLHdCQUFrRCxFQUNsRCxZQUFtQyxFQUNuQyxLQUFVLEVBQ1YsS0FBVSxFQUNWLElBQWUsRUFDZixjQUFtQjtRQUVuQiwrQ0FBK0M7UUFDL0MsY0FBYztRQUNkLElBQUk7UUFFSixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsT0FBTztTQUNSO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQztRQUNyQixNQUFNLGFBQWEsR0FB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b0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztTQUM1SDtRQUVELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OytHQXBQVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsIEVtYmVkZGVkVmlld1JlZiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgWkNvbXBvbmVudCwgWkNvbXBvbmVudEhlbHBlciwgWkNvbXBvbmVudFByb3BlcnRpZXMsIFpDb3JlU2VydmljZSwgWkZpZWxkLCBaR3JvdXAsIFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbi8vIGltcG9ydCB7IENvbXBvbmVudE9iamVjdFNlcnZpY2UgfSBmcm9tICdwcm9qZWN0cy9tbWhnbG9iYWwtbWlkZGxld2FyZS9zcmMvcHVibGljLWFwaSc7XHJcbmltcG9ydCB7IENvbXBvbmVudE9iamVjdFNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtbWlkZGxld2FyZSc7XHJcbmltcG9ydCB7IGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgdGFwIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgRmllbGRFbGVtZW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9maWVsZGVsZW1lbnQuZGlyZWN0aXZlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFpDb21wb25lbnRTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIGVudmlyb25tZW50O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBjb21wb25lbnRPYmplY3RTZXJ2aWNlOiBDb21wb25lbnRPYmplY3RTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGlvblNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgdGhpcy5lbnZpcm9ubWVudCA9IHRoaXMuemNvcmVTZXJ2aWNlLmdldEVudmlyb25tZW50KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNTa2lwQ29tcG9uZW50VHlwZShjb21wb25lbnRUeXBlOiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBaQ29tcG9uZW50SGVscGVyLmlzU2tpcENvbXBvbmVudFR5cGUoY29tcG9uZW50VHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZENvbXBvbmVudChcclxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgZmllbGRFbGVtZW50OiBGaWVsZEVsZW1lbnREaXJlY3RpdmUsXHJcbiAgICBmaWVsZDogYW55LFxyXG4gICAgZ3JvdXA6IGFueSxcclxuICAgIGZvcm06IEZvcm1Hcm91cCxcclxuICAgIGNvbnRhaW5lckZpZWxkOiBhbnlcclxuICApIHtcclxuICAgIC8vIGlmKGZpZWxkLk5hbWUgPT09ICdGb3JtRGV0YWlsQ29udGFjdEdyaWQnKSB7XHJcbiAgICAvLyAgIGRlYnVnZ2VyO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIGlmICh0aGlzLmlzU2tpcENvbXBvbmVudFR5cGUoZmllbGQuVHlwZSkpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBjb21wb25lbnRGYWN0b3J5O1xyXG4gICAgY29uc3QgY29tcG9uZW50TmFtZSA9IHRoaXMuY29tcG9uZW50T2JqZWN0U2VydmljZS5nZXRPYmplY3QoZmllbGQuVHlwZSk7XHJcbiAgICBpZiAoY29tcG9uZW50TmFtZSkge1xyXG4gICAgICBjb21wb25lbnRGYWN0b3J5ID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KFxyXG4gICAgICAgIGNvbXBvbmVudE5hbWVcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRPYmplY3RTZXJ2aWNlLmdldE9iamVjdChcInVua25vd25cIilcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gZmllbGRFbGVtZW50LnZpZXdDb250YWluZXJSZWY7XHJcbiAgICB2aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XHJcbiAgICBpZiAoIWZvcm0pIHtcclxuICAgICAgY29uc29sZS53YXJuKCdGb3JtR3JvdXAgaXMgZW1wdHkhJyk7XHJcbiAgICAgIGRlYnVnZ2VyO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoY29tcG9uZW50RmFjdG9yeSk7XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmRhdGEgPSBmaWVsZDtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZ3JvdXAgPSBncm91cDtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZm9ybSA9IGZvcm07XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmNvbnRhaW5lckZpZWxkID0gY29udGFpbmVyRmllbGQ7XHJcbiAgICAvLyAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLm91dHB1dEV2ZW50LnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4gZ3JvdXAub3V0cHV0RXZlbnQoZXZlbnQpKTtcclxuICB9XHJcblxyXG4gIGFwcGVuZENvbXBvbmVudFRvRHluYW1pY0Zvcm0oXHJcbiAgICBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlcixcclxuICAgIGluamVjdG9yOiBhbnksXHJcbiAgICBhcHBSZWY6IGFueSxcclxuICAgIGZpZWxkOiBhbnksXHJcbiAgICBncm91cDogYW55LFxyXG4gICAgY29udGFpbmVySWQ6IHN0cmluZ1xyXG4gICkge1xyXG4gICAgaWYgKHRoaXMuaXNTa2lwQ29tcG9uZW50VHlwZShmaWVsZC5UeXBlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbXBvbmVudFJlZjtcclxuICAgIGNvbnN0IGNvbXBvbmVudE5hbWUgPSB0aGlzLmNvbXBvbmVudE9iamVjdFNlcnZpY2UuZ2V0T2JqZWN0KGZpZWxkLlR5cGUpO1xyXG4gICAgLy8gMS4gQ3JlYXRlIGEgY29tcG9uZW50IHJlZmVyZW5jZSBmcm9tIHRoZSBjb21wb25lbnRcclxuICAgIGlmIChjb21wb25lbnROYW1lKSB7XHJcbiAgICAgIGNvbXBvbmVudFJlZiA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxyXG4gICAgICAgIC5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShjb21wb25lbnROYW1lKVxyXG4gICAgICAgIC5jcmVhdGUoaW5qZWN0b3IpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyXHJcbiAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KHRoaXMuY29tcG9uZW50T2JqZWN0U2VydmljZS5nZXRPYmplY3QoXCJ1bmtub3duXCIpKVxyXG4gICAgICAgIC5jcmVhdGUoaW5qZWN0b3IpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIuIEF0dGFjaCBjb21wb25lbnQgdG8gdGhlIGFwcFJlZiBzbyB0aGF0IGl0J3MgaW5zaWRlIHRoZSBuZyBjb21wb25lbnQgdHJlZVxyXG4gICAgYXBwUmVmLmF0dGFjaFZpZXcoY29tcG9uZW50UmVmLmhvc3RWaWV3KTtcclxuXHJcbiAgICAvLyAzLiBHZXQgRE9NIGVsZW1lbnQgZnJvbSBjb21wb25lbnRcclxuICAgIGNvbnN0IGRvbUVsZW0gPSAoY29tcG9uZW50UmVmLmhvc3RWaWV3IGFzIEVtYmVkZGVkVmlld1JlZjxhbnk+KVxyXG4gICAgICAucm9vdE5vZGVzWzBdIGFzIEhUTUxFbGVtZW50O1xyXG5cclxuICAgIC8vIDQuIEFwcGVuZCBET00gZWxlbWVudCB0byB0aGUgYm9keVxyXG4gICAgY29uc3QgZHluYW1pY0Zvcm1Ib3N0OiBhbnkgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiI1wiICsgY29udGFpbmVySWQpO1xyXG4gICAgZHluYW1pY0Zvcm1Ib3N0LmFwcGVuZENoaWxkKGRvbUVsZW0pO1xyXG5cclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZGF0YSA9IGZpZWxkO1xyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5ncm91cCA9IGdyb3VwO1xyXG4gICAgcmV0dXJuIGNvbXBvbmVudFJlZjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgREVGQVVMVF9JU0VESVQgPSB0cnVlO1xyXG4gIHB1YmxpYyBzZXRFZGl0TW9kZShtZTogYW55KSB7XHJcbiAgICBsZXQgZWRpdG1vZGU7XHJcbiAgICBpZiAobWUgJiYgbWUuZGF0YSAmJiBtZS5kYXRhLkVkaXRNb2RlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodHlwZW9mIG1lLmRhdGEuRWRpdE1vZGUgIT0gXCJvYmplY3RcIikge1xyXG4gICAgICAgIGxldCBlZGl0TW9kZSA9IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShtZS5kYXRhLkVkaXRNb2RlLCBtZS5ncm91cCk7XHJcbiAgICAgICAgZWRpdG1vZGUgPSB7IHZhbHVlOiBlZGl0TW9kZSwgaW5pdFZhbHVlOiBlZGl0TW9kZSB9O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGVkaXRtb2RlID0gbWUuZGF0YS5FZGl0TW9kZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbWUuZGF0YS5FZGl0TW9kZSA9IGVkaXRtb2RlIHx8ICgobWUuY29udGFpbmVyRmllbGQgJiYgbWUuY29udGFpbmVyRmllbGQuRWRpdE1vZGUpID8gbWUuY29udGFpbmVyRmllbGQuRWRpdE1vZGUgOiB7IHZhbHVlOiB0aGlzLkRFRkFVTFRfSVNFRElULCBpbml0VmFsdWU6IHRoaXMuREVGQVVMVF9JU0VESVQgfSk7XHJcbiAgICBtZS5kYXRhLkVkaXRNb2RlLnZhbHVlID0gbWUuZGF0YS5FZGl0TW9kZS5pbml0VmFsdWU7XHJcbiAgICAvLyBjb25zdCBlZGl0bW9kZSA9IChtZSAmJiBtZS5kYXRhICYmIG1lLmRhdGEuRWRpdE1vZGUgIT0gdW5kZWZpbmVkKSA/ICh0eXBlb2YgbWUuZGF0YS5FZGl0TW9kZSA9PSBcImJvb2xlYW5cIiA/IHsgdmFsdWU6IG1lLmRhdGEuRWRpdE1vZGUsIGluaXRWYWx1ZTogbWUuZGF0YS5FZGl0TW9kZSB9IDogbWUuZGF0YS5FZGl0TW9kZSkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbXBvbmVudEFkZGl0aW9uYWxQcm9wZXJ0aWVzKG1lOiBhbnkpIHtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMudGl0bGUgPSBtZS5kYXRhICYmIG1lLmRhdGEuVGl0bGUgJiYgbWUuZGF0YS5UaXRsZS5pbmNsdWRlcyhcImdyb3VwLlwiKSA/IFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBFdmFsVmFsdWUuY2FsbChtZSwgbWUuZGF0YS5UaXRsZSkgOiBtZS5kYXRhLlRpdGxlO1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5pY29uID0gbWUuZGF0YSAmJiBtZS5kYXRhLkljb24gJiYgbWUuZGF0YS5JY29uLmluY2x1ZGVzKFwiZ3JvdXAuXCIpID8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKG1lLCBtZS5kYXRhLkljb24pIDogbWUuZGF0YS5JY29uO1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5sYWJlbCA9IG1lLmRhdGEgJiYgbWUuZGF0YS5MYWJlbCAmJiBtZS5kYXRhLkxhYmVsLmluY2x1ZGVzKFwiZ3JvdXAuXCIpID8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKG1lLCBtZS5kYXRhLkxhYmVsKSA6IG1lLmRhdGEuTGFiZWw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29tcFN0eWxlc0J5SW5kZXgobWU6IGFueSkge1xyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWUuY29tcG9uZW50UHJvcGVydGllcy5zdHlsZSkpIHtcclxuICAgICAgY29uc3QgaW5kID0ga2V5LnJlcGxhY2UoJ3N0eWxlJywgJycpO1xyXG4gICAgICB0aGlzLnNldFN0eWxlQnlJbmRleChtZSwgaW5kLCBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUobWUuZGF0YVtgU3R5bGUke2luZH1gXSwgbWUuZ3JvdXApIHx8IFwiXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKG1lLmNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGUpKSB7XHJcbiAgICAgIGNvbnN0IGluZCA9IGtleS5yZXBsYWNlKCdzdHlsZScsICcnKTtcclxuICAgICAgdGhpcy5zZXRDb250YWluZXJTdHlsZUJ5SW5kZXgobWUsIGluZCwgWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKG1lLmRhdGFbYENvbnRhaW5lclN0eWxlJHtpbmR9YF0sIG1lLmdyb3VwKSB8fCBcIlwiKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRTdHlsZUJ5SW5kZXgobWU6IGFueSwgaW5kOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMuc3R5bGVbYHN0eWxlJHtpbmR9YF0gPSBzdHlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb250YWluZXJTdHlsZUJ5SW5kZXgobWU6IGFueSwgaW5kOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcpIHtcclxuICAgIG1lLmNvbXBvbmVudFByb3BlcnRpZXMuY29udGFpbmVyU3R5bGVbYHN0eWxlJHtpbmR9YF0gPSBzdHlsZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb252ZXJ0U3R5bGVTdHJpbmdUb09iamVjdChzdHlsZVN0cmluZzogc3RyaW5nKTogYW55IHtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHN0eWxlQXJyID0gc3R5bGVTdHJpbmcuc3BsaXQoXCI7XCIpLmZpbHRlcih4ID0+IHgpO1xyXG4gICAgICBjb25zdCBzdHlsZU9iaiA9IHt9O1xyXG4gICAgICBmb3IgKGNvbnN0IHN0eWxlIG9mIHN0eWxlQXJyKSB7XHJcbiAgICAgICAgY29uc3Qga3ZwID0gc3R5bGUuc3BsaXQoXCI6XCIpO1xyXG4gICAgICAgIHN0eWxlT2JqW2t2cFswXS50cmltKCldID0ga3ZwWzFdLnRyaW0oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIHN0eWxlT2JqO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycikge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVUb29sQmFySXRlbXMoaXRlbXM6IEFycmF5PGFueT4pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChpdGVtcywgXCJ0ZXh0XCIsIHRoaXMuZW52aXJvbm1lbnQuYXBwbGljYXRpb25TaG9ydE5hbWUsIFwiZ2VuZXJhbFwiKSk7XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVHcmlkQ29sdW1uSGVhZGVyKGNvbHVtbnM6IEFycmF5PGFueT4sIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChjb2x1bW5zLCBcInRpdGxlXCIsIHRoaXMuZW52aXJvbm1lbnQuYXBwbGljYXRpb25TaG9ydE5hbWUsIGdyb3VwLmZpZWxkTmFtZSkpO1xyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlQnV0dG9uQ29tcG9uZW50KGJ1dHRvbnM6IEFycmF5PGFueT4sIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG4gICAgb2JzTGlzdC5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS4kdHJhbnNsYXRlSXRlbUxpc3QoYnV0dG9ucywgXCJ0ZXh0XCIsIHRoaXMuZW52aXJvbm1lbnQuYXBwbGljYXRpb25TaG9ydE5hbWUsIGdyb3VwLmZpZWxkTmFtZSkpO1xyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlQ29tcG9uZW50RmllbGQoZGF0YTogWkZpZWxkLCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuXHJcbiAgICBjb25zdCBwcm9wTGlzdCA9IFtcIkxhYmVsXCIsIFwiUGxhY2VIb2xkZXJcIiwgXCJUaXRsZVwiXTsgLy8gVG9vbFRpcFxyXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BMaXN0KSB7XHJcbiAgICAgIGlmIChkYXRhW3Byb3BdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnN0IG9icyA9IHRoaXMudHJhbnNsYXRlQ29tcEJ5UHJvcGVydHkoZGF0YSwgcHJvcCwgZ3JvdXAuZmllbGROYW1lKTtcclxuICAgICAgICBpZiAob2JzKSB7XHJcbiAgICAgICAgICBvYnNMaXN0ID0gb2JzTGlzdC5jb25jYXQob2JzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JzTGlzdC5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcmtKb2luKG9ic0xpc3QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zbGF0ZUNvbXBvbmVudFByb3BlcnRpZXMoY29tcG9uZW50UHJvcGVydGllczogWkNvbXBvbmVudFByb3BlcnRpZXMsIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG5cclxuICAgIGNvbnN0IHByb3BMaXN0ID0gW1wibGFiZWxcIiwgXCJ0aXRsZVwiXTtcclxuICAgIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wTGlzdCkge1xyXG4gICAgICBpZiAoY29tcG9uZW50UHJvcGVydGllc1twcm9wXSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICBjb25zdCBvYnMgPSB0aGlzLnRyYW5zbGF0ZUNvbXBCeVByb3BlcnR5KGNvbXBvbmVudFByb3BlcnRpZXMsIHByb3AsIGdyb3VwLmZpZWxkTmFtZSk7XHJcbiAgICAgICAgaWYgKG9icykge1xyXG4gICAgICAgICAgb2JzTGlzdCA9IG9ic0xpc3QuY29uY2F0KG9icyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIHRyYW5zbGF0ZUNvbXBCeVByb3BlcnR5KGRhdGE6IGFueSwgcHJvcE5hbWU6IHN0cmluZywgZmllbGROYW1lOiBzdHJpbmcpOiBBcnJheTxPYnNlcnZhYmxlPGFueT4+IHtcclxuICAgIGlmIChkYXRhW3Byb3BOYW1lXSA9PSB1bmRlZmluZWQgfHwgZGF0YVtwcm9wTmFtZV0gPT0gXCJcIikge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW3Byb3BOYW1lXSkgJiYgZGF0YVtwcm9wTmFtZV0ubGVuZ3RoID4gMCkge1xyXG4gICAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChkYXRhW3Byb3BOYW1lXSwgbnVsbCwgdGhpcy5lbnZpcm9ubWVudC5hcHBsaWNhdGlvblNob3J0TmFtZSwgZmllbGROYW1lKS5waXBlKFxyXG4gICAgICAgIHRhcChyZXNwID0+IHtcclxuICAgICAgICAgIGRhdGFbcHJvcE5hbWVdID0gcmVzcDtcclxuICAgICAgICB9KSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVTaW5nbGVJdGVtKGRhdGEsIHByb3BOYW1lLCB0aGlzLmVudmlyb25tZW50LmFwcGxpY2F0aW9uU2hvcnROYW1lLCBmaWVsZE5hbWUpKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2JzTGlzdDtcclxuICB9XHJcbn1cclxuIl19
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiemNvbXBvbmVudC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvc2VydmljZXMvemNvbXBvbmVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQTZDLE1BQU0sZUFBZSxDQUFDO0FBRXRGLE9BQU8sRUFBYyxnQkFBZ0IsRUFBMEUsTUFBTSxpQkFBaUIsQ0FBQztBQUd2SSxPQUFPLEVBQUUsUUFBUSxFQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7QUFNckQsTUFBTSxPQUFPLGlCQUFpQjtJQUc1QixZQUNVLHNCQUE4QyxFQUM5QyxnQkFBb0MsRUFDcEMsWUFBMEI7UUFGMUIsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUM5QyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW9CO1FBQ3BDLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBNEZuQixtQkFBYyxHQUFHLElBQUksQ0FBQztRQTFGckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxhQUFxQjtRQUM5QyxPQUFPLGdCQUFnQixDQUFDLG1CQUFtQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFTSxhQUFhLENBQ2xCLHdCQUFrRCxFQUNsRCxZQUFtQyxFQUNuQyxLQUFVLEVBQ1YsS0FBVSxFQUNWLElBQWUsRUFDZixjQUFtQjtRQUVuQiwrQ0FBK0M7UUFDL0MsY0FBYztRQUNkLElBQUk7UUFFSixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEMsT0FBTztTQUNSO1FBRUQsSUFBSSxnQkFBZ0IsQ0FBQztRQUNyQixNQUFNLGFBQWEsR0FB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LENBQUMsZ0JBQWdCLENBQUMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQzdHLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDVCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDLENBQ0osQ0FBQTtTQUNGO1FBRUQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7K0dBeFBVLGlCQUFpQjttSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07NEZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIENvbXBvbmVudEZhY3RvcnlSZXNvbHZlciwgRW1iZWRkZWRWaWV3UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBaQ29tcG9uZW50LCBaQ29tcG9uZW50SGVscGVyLCBaQ29tcG9uZW50UHJvcGVydGllcywgWkNvcmVTZXJ2aWNlLCBaRmllbGQsIFpHcm91cCwgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnbW1oZ2xvYmFsLXpjb3JlJztcclxuLy8gaW1wb3J0IHsgQ29tcG9uZW50T2JqZWN0U2VydmljZSB9IGZyb20gJ3Byb2plY3RzL21taGdsb2JhbC1taWRkbGV3YXJlL3NyYy9wdWJsaWMtYXBpJztcclxuaW1wb3J0IHsgQ29tcG9uZW50T2JqZWN0U2VydmljZSB9IGZyb20gJ21taGdsb2JhbC1taWRkbGV3YXJlJztcclxuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCB0YXAgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBGaWVsZEVsZW1lbnREaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZpZWxkZWxlbWVudC5kaXJlY3RpdmUnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgWkNvbXBvbmVudFNlcnZpY2Uge1xyXG5cclxuICBwdWJsaWMgZW52aXJvbm1lbnQ7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGNvbXBvbmVudE9iamVjdFNlcnZpY2U6IENvbXBvbmVudE9iamVjdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgemNvcmVTZXJ2aWNlOiBaQ29yZVNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgICB0aGlzLmVudmlyb25tZW50ID0gdGhpcy56Y29yZVNlcnZpY2UuZ2V0RW52aXJvbm1lbnQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpc1NraXBDb21wb25lbnRUeXBlKGNvbXBvbmVudFR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIFpDb21wb25lbnRIZWxwZXIuaXNTa2lwQ29tcG9uZW50VHlwZShjb21wb25lbnRUeXBlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2FkQ29tcG9uZW50KFxyXG4gICAgY29tcG9uZW50RmFjdG9yeVJlc29sdmVyOiBDb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIsXHJcbiAgICBmaWVsZEVsZW1lbnQ6IEZpZWxkRWxlbWVudERpcmVjdGl2ZSxcclxuICAgIGZpZWxkOiBhbnksXHJcbiAgICBncm91cDogYW55LFxyXG4gICAgZm9ybTogRm9ybUdyb3VwLFxyXG4gICAgY29udGFpbmVyRmllbGQ6IGFueVxyXG4gICkge1xyXG4gICAgLy8gaWYoZmllbGQuTmFtZSA9PT0gJ0Zvcm1EZXRhaWxDb250YWN0R3JpZCcpIHtcclxuICAgIC8vICAgZGVidWdnZXI7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKHRoaXMuaXNTa2lwQ29tcG9uZW50VHlwZShmaWVsZC5UeXBlKSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGNvbXBvbmVudEZhY3Rvcnk7XHJcbiAgICBjb25zdCBjb21wb25lbnROYW1lID0gdGhpcy5jb21wb25lbnRPYmplY3RTZXJ2aWNlLmdldE9iamVjdChmaWVsZC5UeXBlKTtcclxuICAgIGlmIChjb21wb25lbnROYW1lKSB7XHJcbiAgICAgIGNvbXBvbmVudEZhY3RvcnkgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXIucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoXHJcbiAgICAgICAgY29tcG9uZW50TmFtZVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29tcG9uZW50RmFjdG9yeSA9IGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShcclxuICAgICAgICB0aGlzLmNvbXBvbmVudE9iamVjdFNlcnZpY2UuZ2V0T2JqZWN0KFwidW5rbm93blwiKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHZpZXdDb250YWluZXJSZWYgPSBmaWVsZEVsZW1lbnQudmlld0NvbnRhaW5lclJlZjtcclxuICAgIHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcclxuICAgIGlmICghZm9ybSkge1xyXG4gICAgICBjb25zb2xlLndhcm4oJ0Zvcm1Hcm91cCBpcyBlbXB0eSEnKTtcclxuICAgICAgZGVidWdnZXI7XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB2aWV3Q29udGFpbmVyUmVmLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRGYWN0b3J5KTtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuZGF0YSA9IGZpZWxkO1xyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5ncm91cCA9IGdyb3VwO1xyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5mb3JtID0gZm9ybTtcclxuICAgIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkuY29udGFpbmVyRmllbGQgPSBjb250YWluZXJGaWVsZDtcclxuICAgIC8vIChjb21wb25lbnRSZWYuaW5zdGFuY2UgYXMgWkNvbXBvbmVudCkub3V0cHV0RXZlbnQuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiBncm91cC5vdXRwdXRFdmVudChldmVudCkpO1xyXG4gIH1cclxuXHJcbiAgYXBwZW5kQ29tcG9uZW50VG9EeW5hbWljRm9ybShcclxuICAgIGNvbXBvbmVudEZhY3RvcnlSZXNvbHZlcjogQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxyXG4gICAgaW5qZWN0b3I6IGFueSxcclxuICAgIGFwcFJlZjogYW55LFxyXG4gICAgZmllbGQ6IGFueSxcclxuICAgIGdyb3VwOiBhbnksXHJcbiAgICBjb250YWluZXJJZDogc3RyaW5nXHJcbiAgKSB7XHJcbiAgICBpZiAodGhpcy5pc1NraXBDb21wb25lbnRUeXBlKGZpZWxkLlR5cGUpKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgY29tcG9uZW50UmVmO1xyXG4gICAgY29uc3QgY29tcG9uZW50TmFtZSA9IHRoaXMuY29tcG9uZW50T2JqZWN0U2VydmljZS5nZXRPYmplY3QoZmllbGQuVHlwZSk7XHJcbiAgICAvLyAxLiBDcmVhdGUgYSBjb21wb25lbnQgcmVmZXJlbmNlIGZyb20gdGhlIGNvbXBvbmVudFxyXG4gICAgaWYgKGNvbXBvbmVudE5hbWUpIHtcclxuICAgICAgY29tcG9uZW50UmVmID0gY29tcG9uZW50RmFjdG9yeVJlc29sdmVyXHJcbiAgICAgICAgLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBvbmVudE5hbWUpXHJcbiAgICAgICAgLmNyZWF0ZShpbmplY3Rvcik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb21wb25lbnRSZWYgPSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXJcclxuICAgICAgICAucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkodGhpcy5jb21wb25lbnRPYmplY3RTZXJ2aWNlLmdldE9iamVjdChcInVua25vd25cIikpXHJcbiAgICAgICAgLmNyZWF0ZShpbmplY3Rvcik7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMi4gQXR0YWNoIGNvbXBvbmVudCB0byB0aGUgYXBwUmVmIHNvIHRoYXQgaXQncyBpbnNpZGUgdGhlIG5nIGNvbXBvbmVudCB0cmVlXHJcbiAgICBhcHBSZWYuYXR0YWNoVmlldyhjb21wb25lbnRSZWYuaG9zdFZpZXcpO1xyXG5cclxuICAgIC8vIDMuIEdldCBET00gZWxlbWVudCBmcm9tIGNvbXBvbmVudFxyXG4gICAgY29uc3QgZG9tRWxlbSA9IChjb21wb25lbnRSZWYuaG9zdFZpZXcgYXMgRW1iZWRkZWRWaWV3UmVmPGFueT4pXHJcbiAgICAgIC5yb290Tm9kZXNbMF0gYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgLy8gNC4gQXBwZW5kIERPTSBlbGVtZW50IHRvIHRoZSBib2R5XHJcbiAgICBjb25zdCBkeW5hbWljRm9ybUhvc3Q6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIjXCIgKyBjb250YWluZXJJZCk7XHJcbiAgICBkeW5hbWljRm9ybUhvc3QuYXBwZW5kQ2hpbGQoZG9tRWxlbSk7XHJcblxyXG4gICAgKGNvbXBvbmVudFJlZi5pbnN0YW5jZSBhcyBaQ29tcG9uZW50KS5kYXRhID0gZmllbGQ7XHJcbiAgICAoY29tcG9uZW50UmVmLmluc3RhbmNlIGFzIFpDb21wb25lbnQpLmdyb3VwID0gZ3JvdXA7XHJcbiAgICByZXR1cm4gY29tcG9uZW50UmVmO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBERUZBVUxUX0lTRURJVCA9IHRydWU7XHJcbiAgcHVibGljIHNldEVkaXRNb2RlKG1lOiBhbnkpIHtcclxuICAgIGxldCBlZGl0bW9kZTtcclxuICAgIGlmIChtZSAmJiBtZS5kYXRhICYmIG1lLmRhdGEuRWRpdE1vZGUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgbWUuZGF0YS5FZGl0TW9kZSAhPSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgbGV0IGVkaXRNb2RlID0gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cFZhbHVlKG1lLmRhdGEuRWRpdE1vZGUsIG1lLmdyb3VwKTtcclxuICAgICAgICBlZGl0bW9kZSA9IHsgdmFsdWU6IGVkaXRNb2RlLCBpbml0VmFsdWU6IGVkaXRNb2RlIH07XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgZWRpdG1vZGUgPSBtZS5kYXRhLkVkaXRNb2RlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBtZS5kYXRhLkVkaXRNb2RlID0gZWRpdG1vZGUgfHwgKChtZS5jb250YWluZXJGaWVsZCAmJiBtZS5jb250YWluZXJGaWVsZC5FZGl0TW9kZSkgPyBtZS5jb250YWluZXJGaWVsZC5FZGl0TW9kZSA6IHsgdmFsdWU6IHRoaXMuREVGQVVMVF9JU0VESVQsIGluaXRWYWx1ZTogdGhpcy5ERUZBVUxUX0lTRURJVCB9KTtcclxuICAgIG1lLmRhdGEuRWRpdE1vZGUudmFsdWUgPSBtZS5kYXRhLkVkaXRNb2RlLmluaXRWYWx1ZTtcclxuICAgIC8vIGNvbnN0IGVkaXRtb2RlID0gKG1lICYmIG1lLmRhdGEgJiYgbWUuZGF0YS5FZGl0TW9kZSAhPSB1bmRlZmluZWQpID8gKHR5cGVvZiBtZS5kYXRhLkVkaXRNb2RlID09IFwiYm9vbGVhblwiID8geyB2YWx1ZTogbWUuZGF0YS5FZGl0TW9kZSwgaW5pdFZhbHVlOiBtZS5kYXRhLkVkaXRNb2RlIH0gOiBtZS5kYXRhLkVkaXRNb2RlKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0Q29tcG9uZW50QWRkaXRpb25hbFByb3BlcnRpZXMobWU6IGFueSkge1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy50aXRsZSA9IG1lLmRhdGEgJiYgbWUuZGF0YS5UaXRsZSAmJiBtZS5kYXRhLlRpdGxlLmluY2x1ZGVzKFwiZ3JvdXAuXCIpID8gWkNvbXBvbmVudEhlbHBlci5nZXRHcm91cEV2YWxWYWx1ZS5jYWxsKG1lLCBtZS5kYXRhLlRpdGxlKSA6IG1lLmRhdGEuVGl0bGU7XHJcbiAgICBtZS5jb21wb25lbnRQcm9wZXJ0aWVzLmljb24gPSBtZS5kYXRhICYmIG1lLmRhdGEuSWNvbiAmJiBtZS5kYXRhLkljb24uaW5jbHVkZXMoXCJncm91cC5cIikgPyBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwobWUsIG1lLmRhdGEuSWNvbikgOiBtZS5kYXRhLkljb247XHJcbiAgICBtZS5jb21wb25lbnRQcm9wZXJ0aWVzLmxhYmVsID0gbWUuZGF0YSAmJiBtZS5kYXRhLkxhYmVsICYmIG1lLmRhdGEuTGFiZWwuaW5jbHVkZXMoXCJncm91cC5cIikgPyBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwRXZhbFZhbHVlLmNhbGwobWUsIG1lLmRhdGEuTGFiZWwpIDogbWUuZGF0YS5MYWJlbDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRDb21wU3R5bGVzQnlJbmRleChtZTogYW55KSB7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhtZS5jb21wb25lbnRQcm9wZXJ0aWVzLnN0eWxlKSkge1xyXG4gICAgICBjb25zdCBpbmQgPSBrZXkucmVwbGFjZSgnc3R5bGUnLCAnJyk7XHJcbiAgICAgIHRoaXMuc2V0U3R5bGVCeUluZGV4KG1lLCBpbmQsIFpDb21wb25lbnRIZWxwZXIuZ2V0R3JvdXBWYWx1ZShtZS5kYXRhW2BTdHlsZSR7aW5kfWBdLCBtZS5ncm91cCkgfHwgXCJcIik7XHJcbiAgICB9XHJcblxyXG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMobWUuY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZSkpIHtcclxuICAgICAgY29uc3QgaW5kID0ga2V5LnJlcGxhY2UoJ3N0eWxlJywgJycpO1xyXG4gICAgICB0aGlzLnNldENvbnRhaW5lclN0eWxlQnlJbmRleChtZSwgaW5kLCBaQ29tcG9uZW50SGVscGVyLmdldEdyb3VwVmFsdWUobWUuZGF0YVtgQ29udGFpbmVyU3R5bGUke2luZH1gXSwgbWUuZ3JvdXApIHx8IFwiXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFN0eWxlQnlJbmRleChtZTogYW55LCBpbmQ6IHN0cmluZywgc3R5bGU6IHN0cmluZykge1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5zdHlsZVtgc3R5bGUke2luZH1gXSA9IHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldENvbnRhaW5lclN0eWxlQnlJbmRleChtZTogYW55LCBpbmQ6IHN0cmluZywgc3R5bGU6IHN0cmluZykge1xyXG4gICAgbWUuY29tcG9uZW50UHJvcGVydGllcy5jb250YWluZXJTdHlsZVtgc3R5bGUke2luZH1gXSA9IHN0eWxlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNvbnZlcnRTdHlsZVN0cmluZ1RvT2JqZWN0KHN0eWxlU3RyaW5nOiBzdHJpbmcpOiBhbnkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3Qgc3R5bGVBcnIgPSBzdHlsZVN0cmluZy5zcGxpdChcIjtcIikuZmlsdGVyKHggPT4geCk7XHJcbiAgICAgIGNvbnN0IHN0eWxlT2JqID0ge307XHJcbiAgICAgIGZvciAoY29uc3Qgc3R5bGUgb2Ygc3R5bGVBcnIpIHtcclxuICAgICAgICBjb25zdCBrdnAgPSBzdHlsZS5zcGxpdChcIjpcIik7XHJcbiAgICAgICAgc3R5bGVPYmpba3ZwWzBdLnRyaW0oKV0gPSBrdnBbMV0udHJpbSgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gc3R5bGVPYmo7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zbGF0ZVRvb2xCYXJJdGVtcyhpdGVtczogQXJyYXk8YW55PiwgZ3JvdXA6IFpHcm91cCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZUl0ZW1MaXN0KGl0ZW1zLCBcInRleHRcIiwgeyBlbGVtZW50TmFtZTogJ2dlbmVyYWwnLCBncm91cCB9KSk7XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVHcmlkQ29sdW1uSGVhZGVyKGNvbHVtbnM6IEFycmF5PGFueT4sIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3Qgb2JzTGlzdCA9IG5ldyBBcnJheTxPYnNlcnZhYmxlPGFueT4+KCk7XHJcbiAgICBvYnNMaXN0LnB1c2godGhpcy50cmFuc2xhdGVTZXJ2aWNlLiR0cmFuc2xhdGVJdGVtTGlzdChjb2x1bW5zLCBcInRpdGxlXCIsIHsgZWxlbWVudE5hbWU6ICdtZW51JywgZ3JvdXAgfSkpO1xyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlQnV0dG9uQ29tcG9uZW50KGJ1dHRvbnM6IEFycmF5PGFueT4sIGdyb3VwOiBaR3JvdXApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgbGV0IG9ic0xpc3QgPSBuZXcgQXJyYXk8T2JzZXJ2YWJsZTxhbnk+PigpO1xyXG4gICAgb2JzTGlzdC5wdXNoKHRoaXMudHJhbnNsYXRlU2VydmljZS4kdHJhbnNsYXRlSXRlbUxpc3QoYnV0dG9ucywgXCJ0ZXh0XCIsIHsgZWxlbWVudE5hbWU6IGdyb3VwLmZpZWxkTmFtZSwgZ3JvdXAgfSkpO1xyXG5cclxuICAgIGlmIChvYnNMaXN0Lmxlbmd0aCA8PSAwKSB7XHJcbiAgICAgIHJldHVybiBvZih7fSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZm9ya0pvaW4ob2JzTGlzdCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdHJhbnNsYXRlQ29tcG9uZW50RmllbGQoZGF0YTogWkZpZWxkLCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuXHJcbiAgICBjb25zdCBwcm9wTGlzdCA9IFtcIkxhYmVsXCIsIFwiUGxhY2VIb2xkZXJcIiwgXCJUaXRsZVwiXTsgLy8gVG9vbFRpcFxyXG4gICAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BMaXN0KSB7XHJcbiAgICAgIGlmIChkYXRhW3Byb3BdICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGNvbnN0IG9icyA9IHRoaXMudHJhbnNsYXRlQ29tcEJ5UHJvcGVydHkoZGF0YSwgcHJvcCwgZ3JvdXAuZmllbGROYW1lLCBncm91cCk7XHJcbiAgICAgICAgaWYgKG9icykge1xyXG4gICAgICAgICAgb2JzTGlzdCA9IG9ic0xpc3QuY29uY2F0KG9icyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9ic0xpc3QubGVuZ3RoIDw9IDApIHtcclxuICAgICAgcmV0dXJuIG9mKHt9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmb3JrSm9pbihvYnNMaXN0KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVDb21wb25lbnRQcm9wZXJ0aWVzKGNvbXBvbmVudFByb3BlcnRpZXM6IFpDb21wb25lbnRQcm9wZXJ0aWVzLCBncm91cDogWkdyb3VwKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGxldCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuXHJcbiAgICBjb25zdCBwcm9wTGlzdCA9IFtcImxhYmVsXCIsIFwidGl0bGVcIl07XHJcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcExpc3QpIHtcclxuICAgICAgaWYgKGNvbXBvbmVudFByb3BlcnRpZXNbcHJvcF0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgY29uc3Qgb2JzID0gdGhpcy50cmFuc2xhdGVDb21wQnlQcm9wZXJ0eShjb21wb25lbnRQcm9wZXJ0aWVzLCBwcm9wLCBncm91cC5maWVsZE5hbWUsIGdyb3VwKTtcclxuICAgICAgICBpZiAob2JzKSB7XHJcbiAgICAgICAgICBvYnNMaXN0ID0gb2JzTGlzdC5jb25jYXQob2JzKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JzTGlzdC5sZW5ndGggPD0gMCkge1xyXG4gICAgICByZXR1cm4gb2Yoe30pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZvcmtKb2luKG9ic0xpc3QpO1xyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgdHJhbnNsYXRlQ29tcEJ5UHJvcGVydHkoZGF0YTogYW55LCBwcm9wTmFtZTogc3RyaW5nLCBmaWVsZE5hbWU6IHN0cmluZywgZ3JvdXA6IFpHcm91cCk6IEFycmF5PE9ic2VydmFibGU8YW55Pj4ge1xyXG4gICAgaWYgKGRhdGFbcHJvcE5hbWVdID09IHVuZGVmaW5lZCB8fCBkYXRhW3Byb3BOYW1lXSA9PSBcIlwiKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBvYnNMaXN0ID0gbmV3IEFycmF5PE9ic2VydmFibGU8YW55Pj4oKTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGRhdGFbcHJvcE5hbWVdKSAmJiBkYXRhW3Byb3BOYW1lXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZUl0ZW1MaXN0KGRhdGFbcHJvcE5hbWVdLCBudWxsLCB7IGVsZW1lbnROYW1lOiBmaWVsZE5hbWUsIGdyb3VwIH0pLnBpcGUoXHJcbiAgICAgICAgdGFwKHJlc3AgPT4ge1xyXG4gICAgICAgICAgZGF0YVtwcm9wTmFtZV0gPSByZXNwO1xyXG4gICAgICAgIH0pKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIG9ic0xpc3QucHVzaCh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuJHRyYW5zbGF0ZVNpbmdsZUl0ZW0oZGF0YSwgcHJvcE5hbWUsIHsgZWxlbWVudE5hbWU6IGZpZWxkTmFtZSwgZ3JvdXAgfSkucGlwZShcclxuICAgICAgICB0YXAocmVzcCA9PiB7XHJcbiAgICAgICAgICBkYXRhW3Byb3BOYW1lXSA9IHJlc3A7XHJcbiAgICAgICAgfSkpXHJcbiAgICAgIClcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gb2JzTGlzdDtcclxuICB9XHJcbn1cclxuXHJcbiJdfQ==
|
|
@@ -36,7 +36,14 @@ export class UiappmenucontentComponent {
|
|
|
36
36
|
return false;
|
|
37
37
|
}
|
|
38
38
|
else {
|
|
39
|
-
|
|
39
|
+
if (startupPage.indexOf('_', 0) == 0) {
|
|
40
|
+
// menu page
|
|
41
|
+
this.mainService.setNavigationParams([startupPage]);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// home page
|
|
45
|
+
this.mainService.setNavigationParams([pathName]);
|
|
46
|
+
}
|
|
40
47
|
this.router.navigate([pathName]);
|
|
41
48
|
}
|
|
42
49
|
}
|
|
@@ -49,11 +56,11 @@ export class UiappmenucontentComponent {
|
|
|
49
56
|
}
|
|
50
57
|
}
|
|
51
58
|
UiappmenucontentComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UiappmenucontentComponent, deps: [{ token: i1.Router }, { token: i2.MenuService }, { token: i2.AuthService }, { token: i2.ZCoreService }, { token: i3.MainService }], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
UiappmenucontentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: UiappmenucontentComponent, selector: "app-uiappmenucontent", inputs: { items: "items" }, ngImport: i0, template: "<ion-grid>\r\n <ion-row>\r\n <ion-col [ngClass]=\"getDivClass(item)\" *ngFor=\"let item of items; index as i\">\r\n <div *ngIf=\"item.Type !== 'dropdown-submenu'\" class=\"menu-btn ion-activatable ripple-parent\"\r\n (click)=\"menuOnClick(item.URL, item.AppClientPath)\">\r\n <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n <fa-icon class=\"menu-icon\" [icon]=\"['fas', item.Icon ]\" [inverse]=\"true\"></fa-icon>\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"item['PendingCounter'] && item['PendingCounter'] > 0\">\r\n {{item['PendingCounter']}}\r\n </ion-badge>\r\n </ion-label>\r\n <ion-label class=\"menu-btn-label-text\">{{ item.Label }}</ion-label>\r\n <ion-label *ngIf=\"item.Description\" class=\"menu-btn-label-text menu-btn-label-text-desc\">{{ item.Description }}\r\n </ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n\r\n <kendo-card *ngIf=\"item.Type === 'dropdown-submenu'\">\r\n <kendo-card-header class=\"k-hstack\">\r\n <ion-label class=\"card-title\" kendoCardTitle>{{item.Label}}</ion-label>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div
|
|
59
|
+
UiappmenucontentComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: UiappmenucontentComponent, selector: "app-uiappmenucontent", inputs: { items: "items" }, ngImport: i0, template: "<ion-grid>\r\n <ion-row>\r\n <ion-col [ngClass]=\"getDivClass(item)\" *ngFor=\"let item of items; index as i\">\r\n <div *ngIf=\"item.Type !== 'dropdown-submenu'\" class=\"menu-btn ion-activatable ripple-parent\"\r\n (click)=\"menuOnClick(item.URL, item.AppClientPath)\">\r\n <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n <fa-icon class=\"menu-icon\" [icon]=\"['fas', item.Icon ]\" [inverse]=\"true\"></fa-icon>\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"item['PendingCounter'] && item['PendingCounter'] > 0\">\r\n {{item['PendingCounter']}}\r\n </ion-badge>\r\n </ion-label>\r\n <ion-label class=\"menu-btn-label-text\">{{ item.Label }}</ion-label>\r\n <ion-label *ngIf=\"item.Description\" class=\"menu-btn-label-text menu-btn-label-text-desc\">{{ item.Description }}\r\n </ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n\r\n <kendo-card *ngIf=\"item.Type === 'dropdown-submenu'\">\r\n <kendo-card-header class=\"k-hstack\">\r\n <ion-label class=\"card-title\" kendoCardTitle>{{item.Label}}</ion-label>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div>\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </div>\r\n </kendo-card-body>\r\n </kendo-card>\r\n\r\n <!-- <kendo-panelbar class=\"menu-panel\" *ngIf=\"item.Type === 'dropdown-submenu'\" keepItemContent=\"true\">\r\n <kendo-panelbar-item [expanded]=\"true\">\r\n <ng-template kendoPanelBarItemTitle>\r\n <span *ngIf=\"item.Icon\">\r\n <fa-icon [icon]=\"item.Icon\" class=\"zcard-header-icon\"></fa-icon>\r\n </span>\r\n <span *ngIf=\"!item.Icon\">\r\n <i class=\"fas fa-folder\" style=\"color: #000000\"></i>\r\n </span>\r\n <ion-label class=\"zcard-header-title\">{{item.Label}}</ion-label>\r\n </ng-template>\r\n <ng-template kendoPanelBarContent class=\"menu-content-temp\">\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </ng-template>\r\n </kendo-panelbar-item>\r\n </kendo-panelbar> -->\r\n </ion-col>\r\n </ion-row>\r\n</ion-grid>\r\n", styles: ["ion-grid{max-width:2000px;margin-top:10px}:host ::ng-deep kendo-card{width:95%!important;margin:auto auto 10px;border-radius:var(--ion-container-border-radius);border-left:5px solid var(--ion-color-primary)}:host ::ng-deep kendo-card .k-card-body{padding-top:0}.menu-col{padding:10px}.menu-btn{margin:0;padding:0;border:0px;display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;cursor:pointer;border-radius:5px;box-shadow:1px 1px 4px #797979;min-width:180px;max-width:250px;min-height:120px;max-height:120px;color:#fff;background:var(--ion-color-primary)}.menu-btn:hover{box-shadow:0 0 2px 2px var(--ion-color-secondary)}.menu-btn:hover .menu-btn-label-text-desc{bottom:0;transition:.5s ease bottom;width:100%}.menu-btn-label-text{text-align:center;font-size:16px;font-weight:600;padding:10px 5px}.menu-btn-label-text-desc{bottom:-100%;transition:.5s ease bottom;display:block;position:absolute;color:#000;font-size:16px;background-color:#fff;padding:8px 10px;border:1px solid #797979;border-radius:5px;text-shadow:0px 0px black;width:100%;text-align:left;font-size:14px;font-weight:500}.ripple-parent{position:relative;overflow:hidden}.menu-btn-label{text-align:center;font-size:15px}.menu-icon{zoom:3;position:relative;top:2px}.menu-btn-icon{background-size:100%}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;top:12px;display:inline-block;position:absolute;text-align:center;font-size:1.4em;right:32%}\n"], components: [{ type: i4.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { type: i4.IonRow, selector: "ion-row" }, { type: i4.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { type: i4.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i5.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i4.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { type: i4.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }, { type: i6.CardComponent, selector: "kendo-card", inputs: ["orientation", "width"] }, { type: i6.CardHeaderComponent, selector: "kendo-card-header" }, { type: i6.CardBodyComponent, selector: "kendo-card-body" }, { type: UiappmenucontentComponent, selector: "app-uiappmenucontent", inputs: ["items"] }], directives: [{ type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i8.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.CardTitleDirective, selector: "[kendoCardTitle]" }] });
|
|
53
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UiappmenucontentComponent, decorators: [{
|
|
54
61
|
type: Component,
|
|
55
|
-
args: [{ selector: 'app-uiappmenucontent', template: "<ion-grid>\r\n <ion-row>\r\n <ion-col [ngClass]=\"getDivClass(item)\" *ngFor=\"let item of items; index as i\">\r\n <div *ngIf=\"item.Type !== 'dropdown-submenu'\" class=\"menu-btn ion-activatable ripple-parent\"\r\n (click)=\"menuOnClick(item.URL, item.AppClientPath)\">\r\n <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n <fa-icon class=\"menu-icon\" [icon]=\"['fas', item.Icon ]\" [inverse]=\"true\"></fa-icon>\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"item['PendingCounter'] && item['PendingCounter'] > 0\">\r\n {{item['PendingCounter']}}\r\n </ion-badge>\r\n </ion-label>\r\n <ion-label class=\"menu-btn-label-text\">{{ item.Label }}</ion-label>\r\n <ion-label *ngIf=\"item.Description\" class=\"menu-btn-label-text menu-btn-label-text-desc\">{{ item.Description }}\r\n </ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n\r\n <kendo-card *ngIf=\"item.Type === 'dropdown-submenu'\">\r\n <kendo-card-header class=\"k-hstack\">\r\n <ion-label class=\"card-title\" kendoCardTitle>{{item.Label}}</ion-label>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div
|
|
62
|
+
args: [{ selector: 'app-uiappmenucontent', template: "<ion-grid>\r\n <ion-row>\r\n <ion-col [ngClass]=\"getDivClass(item)\" *ngFor=\"let item of items; index as i\">\r\n <div *ngIf=\"item.Type !== 'dropdown-submenu'\" class=\"menu-btn ion-activatable ripple-parent\"\r\n (click)=\"menuOnClick(item.URL, item.AppClientPath)\">\r\n <ion-label class=\"menu-btn-label menu-btn-icon\">\r\n <fa-icon class=\"menu-icon\" [icon]=\"['fas', item.Icon ]\" [inverse]=\"true\"></fa-icon>\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"item['PendingCounter'] && item['PendingCounter'] > 0\">\r\n {{item['PendingCounter']}}\r\n </ion-badge>\r\n </ion-label>\r\n <ion-label class=\"menu-btn-label-text\">{{ item.Label }}</ion-label>\r\n <ion-label *ngIf=\"item.Description\" class=\"menu-btn-label-text menu-btn-label-text-desc\">{{ item.Description }}\r\n </ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </div>\r\n\r\n <kendo-card *ngIf=\"item.Type === 'dropdown-submenu'\">\r\n <kendo-card-header class=\"k-hstack\">\r\n <ion-label class=\"card-title\" kendoCardTitle>{{item.Label}}</ion-label>\r\n </kendo-card-header>\r\n <kendo-card-body>\r\n <div>\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </div>\r\n </kendo-card-body>\r\n </kendo-card>\r\n\r\n <!-- <kendo-panelbar class=\"menu-panel\" *ngIf=\"item.Type === 'dropdown-submenu'\" keepItemContent=\"true\">\r\n <kendo-panelbar-item [expanded]=\"true\">\r\n <ng-template kendoPanelBarItemTitle>\r\n <span *ngIf=\"item.Icon\">\r\n <fa-icon [icon]=\"item.Icon\" class=\"zcard-header-icon\"></fa-icon>\r\n </span>\r\n <span *ngIf=\"!item.Icon\">\r\n <i class=\"fas fa-folder\" style=\"color: #000000\"></i>\r\n </span>\r\n <ion-label class=\"zcard-header-title\">{{item.Label}}</ion-label>\r\n </ng-template>\r\n <ng-template kendoPanelBarContent class=\"menu-content-temp\">\r\n <app-uiappmenucontent [items]=\"getMenuList(item)\"></app-uiappmenucontent>\r\n </ng-template>\r\n </kendo-panelbar-item>\r\n </kendo-panelbar> -->\r\n </ion-col>\r\n </ion-row>\r\n</ion-grid>\r\n", styles: ["ion-grid{max-width:2000px;margin-top:10px}:host ::ng-deep kendo-card{width:95%!important;margin:auto auto 10px;border-radius:var(--ion-container-border-radius);border-left:5px solid var(--ion-color-primary)}:host ::ng-deep kendo-card .k-card-body{padding-top:0}.menu-col{padding:10px}.menu-btn{margin:0;padding:0;border:0px;display:flex;flex-flow:column;justify-content:center;align-items:stretch;background-color:#fff;cursor:pointer;border-radius:5px;box-shadow:1px 1px 4px #797979;min-width:180px;max-width:250px;min-height:120px;max-height:120px;color:#fff;background:var(--ion-color-primary)}.menu-btn:hover{box-shadow:0 0 2px 2px var(--ion-color-secondary)}.menu-btn:hover .menu-btn-label-text-desc{bottom:0;transition:.5s ease bottom;width:100%}.menu-btn-label-text{text-align:center;font-size:16px;font-weight:600;padding:10px 5px}.menu-btn-label-text-desc{bottom:-100%;transition:.5s ease bottom;display:block;position:absolute;color:#000;font-size:16px;background-color:#fff;padding:8px 10px;border:1px solid #797979;border-radius:5px;text-shadow:0px 0px black;width:100%;text-align:left;font-size:14px;font-weight:500}.ripple-parent{position:relative;overflow:hidden}.menu-btn-label{text-align:center;font-size:15px}.menu-icon{zoom:3;position:relative;top:2px}.menu-btn-icon{background-size:100%}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;top:12px;display:inline-block;position:absolute;text-align:center;font-size:1.4em;right:32%}\n"] }]
|
|
56
63
|
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i2.MenuService }, { type: i2.AuthService }, { type: i2.ZCoreService }, { type: i3.MainService }]; }, propDecorators: { items: [{
|
|
57
64
|
type: Input
|
|
58
65
|
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlhcHBtZW51Y29udGVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi91aWFwcG1lbnVjb250ZW50L3VpYXBwbWVudWNvbnRlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWlhcHBtZW51Y29udGVudC91aWFwcG1lbnVjb250ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6RCw2QkFBNkI7QUFFN0IsOEJBQThCO0FBRTlCLDJDQUEyQztBQUMzQyxPQUFPLEVBQTJDLGdCQUFnQixFQUFnQixNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7O0FBUzFHLE1BQU0sT0FBTyx5QkFBeUI7SUFFcEMsWUFDVSxNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsV0FBd0IsRUFDeEIsWUFBMEIsRUFDMUIsV0FBd0I7UUFKeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLGdCQUFXLEdBQVgsV0FBVyxDQUFhO0lBQzlCLENBQUM7SUFFTCxRQUFRO0lBQ1IsQ0FBQztJQUVNLFdBQVcsQ0FBQyxJQUFJO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLEdBQUcsV0FBVyxDQUFDO0lBQ2hILENBQUM7SUFFTSxXQUFXLENBQUMsSUFBSTtRQUNyQixPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssa0JBQWtCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVGLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBZ0IsRUFBRSxhQUFzQjtRQUN6RCxNQUFNLFdBQVcsR0FBVyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUUzRSxJQUFJLGFBQWEsSUFBSSxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxVQUFVLEVBQUU7WUFDbEUsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUUsT0FBTyxLQUFLLENBQUM7U0FDZDthQUNJO1lBQ0gsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUU7Z0JBQ3BDLFlBQVk7Z0JBQ1osSUFBSSxDQUFDLFdBQVcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7YUFDckQ7aUJBQ0k7Z0JBQ0gsWUFBWTtnQkFDWixJQUFJLENBQUMsV0FBVyxDQUFDLG1CQUFtQixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQzthQUNsRDtZQUNELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsR0FBVyxFQUFFLEtBQWE7UUFDNUMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxRQUFRLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUN6QixRQUFRLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNwQixRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV0QyxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDOzt1SEFoRFUseUJBQXlCOzJHQUF6Qix5QkFBeUIsd0ZDbEJ0Qyw4MEVBZ0RBLDhwRkQ5QmEseUJBQXlCOzRGQUF6Qix5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usc0JBQXNCO3NNQUt2QixLQUFLO3NCQUFiLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKiBBbmd1bGFyICoqKioqKioqKiovXHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5cclxuLyoqKioqKioqKiogSW9uaWMgKioqKioqKioqKi9cclxuXHJcbi8qKioqKioqKioqIFBsdWdpbiAqKioqKioqKioqL1xyXG5cclxuLyoqKioqKioqKiogQ29tcG9uZW50ICYgU2VydmljZSAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBPQXV0aE1lbnVJdGVtLCBNZW51U2VydmljZSwgQXV0aFNlcnZpY2UsIFpDb21wb25lbnRIZWxwZXIsIFpDb3JlU2VydmljZSB9IGZyb20gJ21taGdsb2JhbC16Y29yZSc7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpbi5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11aWFwcG1lbnVjb250ZW50JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWlhcHBtZW51Y29udGVudC5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdWlhcHBtZW51Y29udGVudC5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlhcHBtZW51Y29udGVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQElucHV0KCkgaXRlbXM6IEFycmF5PE9BdXRoTWVudUl0ZW0+O1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgbWVudVNlcnZpY2U6IE1lbnVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHpjb3JlU2VydmljZTogWkNvcmVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBtYWluU2VydmljZTogTWFpblNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXREaXZDbGFzcyhpdGVtKSB7XHJcbiAgICByZXR1cm4gKGl0ZW0uVHlwZSA9PT0gJ2Ryb3Bkb3duLXN1Ym1lbnUnID8gJ2ZsZXgtc2hvdycgOiAnY29sLXhzLTQgY29sLXNtLTQgY29sLW1kLTMgY29sLXhsLTInKSArIFwiIG1lbnUtY29sXCI7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0TWVudUxpc3QoaXRlbSkge1xyXG4gICAgcmV0dXJuIGl0ZW0uVHlwZSA9PT0gJ2Ryb3Bkb3duLXN1Ym1lbnUnID8gdGhpcy5tZW51U2VydmljZS5nZXRNZW51Rm9sZGVyKGl0ZW0uVVJMKSA6IG51bGw7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbWVudU9uQ2xpY2socGF0aE5hbWU6IHN0cmluZywgYXBwQ2xpZW50UGF0aD86IHN0cmluZykge1xyXG4gICAgY29uc3Qgc3RhcnR1cFBhZ2U6IHN0cmluZyA9IHRoaXMuemNvcmVTZXJ2aWNlLmdldEVudmlyb25tZW50KCkuc3RhcnRVcFBhZ2U7XHJcblxyXG4gICAgaWYgKGFwcENsaWVudFBhdGggJiYgc3RhcnR1cFBhZ2UudG9Mb2NhbGVMb3dlckNhc2UoKSA9PSAnbGF1bmNoZXInKSB7XHJcbiAgICAgIFpDb21wb25lbnRIZWxwZXIub3BlbkFwcENsaWVudFBhdGgocGF0aE5hbWUsIGFwcENsaWVudFBhdGgsIHRoaXMuYXV0aFNlcnZpY2UpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKHN0YXJ0dXBQYWdlLmluZGV4T2YoJ18nLCAwKSA9PSAwKSB7XHJcbiAgICAgICAgLy8gbWVudSBwYWdlXHJcbiAgICAgICAgdGhpcy5tYWluU2VydmljZS5zZXROYXZpZ2F0aW9uUGFyYW1zKFtzdGFydHVwUGFnZV0pO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIGhvbWUgcGFnZVxyXG4gICAgICAgIHRoaXMubWFpblNlcnZpY2Uuc2V0TmF2aWdhdGlvblBhcmFtcyhbcGF0aE5hbWVdKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbcGF0aE5hbWVdKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgc2V0TWFwSW5wdXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IG1hcElucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgIG1hcElucHV0LnR5cGUgPSAnaGlkZGVuJztcclxuICAgIG1hcElucHV0Lm5hbWUgPSBrZXk7XHJcbiAgICBtYXBJbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xyXG5cclxuICAgIHJldHVybiBtYXBJbnB1dDtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1ncmlkPlxyXG4gIDxpb24tcm93PlxyXG4gICAgPGlvbi1jb2wgW25nQ2xhc3NdPVwiZ2V0RGl2Q2xhc3MoaXRlbSlcIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgaW5kZXggYXMgaVwiPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5UeXBlICE9PSAnZHJvcGRvd24tc3VibWVudSdcIiBjbGFzcz1cIm1lbnUtYnRuIGlvbi1hY3RpdmF0YWJsZSByaXBwbGUtcGFyZW50XCJcclxuICAgICAgICAoY2xpY2spPVwibWVudU9uQ2xpY2soaXRlbS5VUkwsIGl0ZW0uQXBwQ2xpZW50UGF0aClcIj5cclxuICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwibWVudS1idG4tbGFiZWwgbWVudS1idG4taWNvblwiPlxyXG4gICAgICAgICAgPGZhLWljb24gY2xhc3M9XCJtZW51LWljb25cIiBbaWNvbl09XCJbJ2ZhcycsIGl0ZW0uSWNvbiBdXCIgW2ludmVyc2VdPVwidHJ1ZVwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgIDxpb24tYmFkZ2UgY29sb3I9XCJkYW5nZXJcIiBjbGFzcz1cInBlbmRpbmctY291bnRlclwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiaXRlbVsnUGVuZGluZ0NvdW50ZXInXSAmJiBpdGVtWydQZW5kaW5nQ291bnRlciddID4gMFwiPlxyXG4gICAgICAgICAgICB7e2l0ZW1bJ1BlbmRpbmdDb3VudGVyJ119fVxyXG4gICAgICAgICAgPC9pb24tYmFkZ2U+XHJcbiAgICAgICAgPC9pb24tbGFiZWw+XHJcbiAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cIm1lbnUtYnRuLWxhYmVsLXRleHRcIj57eyBpdGVtLkxhYmVsIH19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgPGlvbi1sYWJlbCAqbmdJZj1cIml0ZW0uRGVzY3JpcHRpb25cIiBjbGFzcz1cIm1lbnUtYnRuLWxhYmVsLXRleHQgbWVudS1idG4tbGFiZWwtdGV4dC1kZXNjXCI+e3sgaXRlbS5EZXNjcmlwdGlvbiB9fVxyXG4gICAgICAgIDwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDxpb24tcmlwcGxlLWVmZmVjdD48L2lvbi1yaXBwbGUtZWZmZWN0PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxrZW5kby1jYXJkICpuZ0lmPVwiaXRlbS5UeXBlID09PSAnZHJvcGRvd24tc3VibWVudSdcIj5cclxuICAgICAgICA8a2VuZG8tY2FyZC1oZWFkZXIgY2xhc3M9XCJrLWhzdGFja1wiPlxyXG4gICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImNhcmQtdGl0bGVcIiBrZW5kb0NhcmRUaXRsZT57e2l0ZW0uTGFiZWx9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDwva2VuZG8tY2FyZC1oZWFkZXI+XHJcbiAgICAgICAgPGtlbmRvLWNhcmQtYm9keT5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxhcHAtdWlhcHBtZW51Y29udGVudCBbaXRlbXNdPVwiZ2V0TWVudUxpc3QoaXRlbSlcIj48L2FwcC11aWFwcG1lbnVjb250ZW50PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9rZW5kby1jYXJkLWJvZHk+XHJcbiAgICAgIDwva2VuZG8tY2FyZD5cclxuXHJcbiAgICAgIDwhLS0gPGtlbmRvLXBhbmVsYmFyIGNsYXNzPVwibWVudS1wYW5lbFwiICpuZ0lmPVwiaXRlbS5UeXBlID09PSAnZHJvcGRvd24tc3VibWVudSdcIiBrZWVwSXRlbUNvbnRlbnQ9XCJ0cnVlXCI+XHJcbiAgICAgICAgPGtlbmRvLXBhbmVsYmFyLWl0ZW0gW2V4cGFuZGVkXT1cInRydWVcIj5cclxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSBrZW5kb1BhbmVsQmFySXRlbVRpdGxlPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIml0ZW0uSWNvblwiPlxyXG4gICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIml0ZW0uSWNvblwiIGNsYXNzPVwiemNhcmQtaGVhZGVyLWljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaXRlbS5JY29uXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZm9sZGVyXCIgc3R5bGU9XCJjb2xvcjogIzAwMDAwMFwiPjwvaT5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiemNhcmQtaGVhZGVyLXRpdGxlXCI+e3tpdGVtLkxhYmVsfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8bmctdGVtcGxhdGUga2VuZG9QYW5lbEJhckNvbnRlbnQgY2xhc3M9XCJtZW51LWNvbnRlbnQtdGVtcFwiPlxyXG4gICAgICAgICAgICA8YXBwLXVpYXBwbWVudWNvbnRlbnQgW2l0ZW1zXT1cImdldE1lbnVMaXN0KGl0ZW0pXCI+PC9hcHAtdWlhcHBtZW51Y29udGVudD5cclxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9rZW5kby1wYW5lbGJhci1pdGVtPlxyXG4gICAgICA8L2tlbmRvLXBhbmVsYmFyPiAtLT5cclxuICAgIDwvaW9uLWNvbD5cclxuICA8L2lvbi1yb3c+XHJcbjwvaW9uLWdyaWQ+XHJcbiJdfQ==
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/********** Angular **********/
|
|
2
|
+
import { Component, Input, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
|
|
3
|
+
import { filter, map } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "mmhglobal-zcore";
|
|
6
|
+
import * as i2 from "../services/main.service";
|
|
7
|
+
import * as i3 from "../services/signalr.service";
|
|
8
|
+
import * as i4 from "@progress/kendo-angular-notification";
|
|
9
|
+
import * as i5 from "@ionic/angular";
|
|
10
|
+
import * as i6 from "@fortawesome/angular-fontawesome";
|
|
11
|
+
import * as i7 from "@angular/common";
|
|
12
|
+
export class UibulletinComponent {
|
|
13
|
+
constructor(zcoreService, webApiService, resourceApiService, mainService, signalr, notificationService) {
|
|
14
|
+
this.zcoreService = zcoreService;
|
|
15
|
+
this.webApiService = webApiService;
|
|
16
|
+
this.resourceApiService = resourceApiService;
|
|
17
|
+
this.mainService = mainService;
|
|
18
|
+
this.signalr = signalr;
|
|
19
|
+
this.notificationService = notificationService;
|
|
20
|
+
// backNavigate = null;
|
|
21
|
+
this.bulletinMessages = [];
|
|
22
|
+
this.hideBulletinTemplate = true;
|
|
23
|
+
this.title = "";
|
|
24
|
+
this.showBulletinIcon = false;
|
|
25
|
+
this.defaultMessage = 'There are no message today.';
|
|
26
|
+
this.environment = this.zcoreService.getEnvironment();
|
|
27
|
+
this.showBulletinIcon = this.environment.bulletinUrl ? true : false;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.mainService.getResourceServerData().subscribe(() => {
|
|
31
|
+
this.webApiService.httpGet$(this.resourceApiService.getURL(this.environment.bulletinUrl), '').subscribe(resp => {
|
|
32
|
+
if (resp) {
|
|
33
|
+
const msg = [];
|
|
34
|
+
if (resp.length > 0) {
|
|
35
|
+
resp.forEach((item) => {
|
|
36
|
+
msg.push(item.Description);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
this.setBulletinMessages(msg);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
ngAfterViewInit() {
|
|
45
|
+
this.getSignalrBulletinMessage().subscribe();
|
|
46
|
+
}
|
|
47
|
+
setBulletinMessages(data) {
|
|
48
|
+
if (data.length > 0) {
|
|
49
|
+
data.forEach((item) => {
|
|
50
|
+
if (item.Description) {
|
|
51
|
+
this.bulletinMessages.push(item.Description);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
this.title = this.bulletinMessages.length + " messages. Click to view messages.";
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.title = "No message";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
getSignalrBulletinMessage() {
|
|
61
|
+
return this.signalr.getEvent().pipe(filter(event => event.name === 'Bulletin'), map(event => {
|
|
62
|
+
this.setBulletinMessages(event.payload);
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
showBulletinMessage() {
|
|
66
|
+
// if closable property is set to true, hideAfter property is ignored.
|
|
67
|
+
this.notificationService.show({
|
|
68
|
+
content: this.bulletinTemplate,
|
|
69
|
+
position: { horizontal: "center", vertical: "top" },
|
|
70
|
+
animation: { type: "slide", duration: 500 },
|
|
71
|
+
type: { style: "none", icon: false },
|
|
72
|
+
closable: this.bulletinMessages.length > 0 ? true : false,
|
|
73
|
+
hideAfter: 1000,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
UibulletinComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UibulletinComponent, deps: [{ token: i1.ZCoreService }, { token: i1.WebApiService }, { token: i1.ResourceApiService }, { token: i2.MainService }, { token: i3.SignalrService }, { token: i4.NotificationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
78
|
+
UibulletinComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: UibulletinComponent, selector: "app-uibulletin", inputs: { group: "group" }, viewQueries: [{ propertyName: "appendTo", first: true, predicate: ["appendTo"], descendants: true, read: ViewContainerRef }, { propertyName: "bulletinTemplate", first: true, predicate: ["bulletinTemplate"], descendants: true, read: TemplateRef }], ngImport: i0, template: "<ion-button (click)=\"showBulletinMessage()\" fill=\"none\" size=\"small\" *ngIf=\"showBulletinIcon\">\r\n\r\n <ion-label [title]=\"title\">\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"bulletinMessages.length > 0\">\r\n </ion-badge>\r\n <ion-label><fa-icon [icon]=\"['fas', 'bell']\" size=\"lg\" style=\"margin-right: 5px;\"></fa-icon> Notification</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </ion-label>\r\n\r\n <!--<fa-icon [icon]=\"['fas', 'bell']\" style=\"margin-right: 5px;\"></fa-icon> Bulletin-->\r\n</ion-button>\r\n<ng-template #bulletinTemplate>\r\n <div *ngIf=\"bulletinMessages.length > 0\">\r\n <!--<h6>Bulletin</h6>-->\r\n <ul>\r\n <li *ngFor=\"let msg of bulletinMessages\">{{ msg }}</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"bulletinMessages.length <= 0\">\r\n {{ defaultMessage }}\r\n </div>\r\n</ng-template>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.pending-counterX{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:2px;text-overflow:ellipsis;top:2px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:2.2em}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;left:8px;top:7px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:1.5em}\n"], components: [{ type: i5.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { type: i5.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { type: i5.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { type: i6.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { type: i5.IonRippleEffect, selector: "ion-ripple-effect", inputs: ["type"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }] });
|
|
79
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: UibulletinComponent, decorators: [{
|
|
80
|
+
type: Component,
|
|
81
|
+
args: [{ selector: 'app-uibulletin', template: "<ion-button (click)=\"showBulletinMessage()\" fill=\"none\" size=\"small\" *ngIf=\"showBulletinIcon\">\r\n\r\n <ion-label [title]=\"title\">\r\n <ion-badge color=\"danger\" class=\"pending-counter\"\r\n *ngIf=\"bulletinMessages.length > 0\">\r\n </ion-badge>\r\n <ion-label><fa-icon [icon]=\"['fas', 'bell']\" size=\"lg\" style=\"margin-right: 5px;\"></fa-icon> Notification</ion-label>\r\n <ion-ripple-effect></ion-ripple-effect>\r\n </ion-label>\r\n\r\n <!--<fa-icon [icon]=\"['fas', 'bell']\" style=\"margin-right: 5px;\"></fa-icon> Bulletin-->\r\n</ion-button>\r\n<ng-template #bulletinTemplate>\r\n <div *ngIf=\"bulletinMessages.length > 0\">\r\n <!--<h6>Bulletin</h6>-->\r\n <ul>\r\n <li *ngFor=\"let msg of bulletinMessages\">{{ msg }}</li>\r\n </ul>\r\n </div>\r\n <div *ngIf=\"bulletinMessages.length <= 0\">\r\n {{ defaultMessage }}\r\n </div>\r\n</ng-template>\r\n", styles: [".ripple-parent{position:relative;overflow:hidden}.pending-counterX{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;right:2px;text-overflow:ellipsis;top:2px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:2.2em}.pending-counter{background-color:#ff243a;border-radius:1em;box-sizing:border-box;color:#fff;height:1.5em;line-height:1;max-width:5em;min-width:1.5em;overflow:hidden;padding:.25em;text-overflow:ellipsis;left:8px;top:7px;transform:scale(.25);transform-origin:top left;display:inline-block;position:absolute;text-align:center;font-size:1.5em}\n"] }]
|
|
82
|
+
}], ctorParameters: function () { return [{ type: i1.ZCoreService }, { type: i1.WebApiService }, { type: i1.ResourceApiService }, { type: i2.MainService }, { type: i3.SignalrService }, { type: i4.NotificationService }]; }, propDecorators: { appendTo: [{
|
|
83
|
+
type: ViewChild,
|
|
84
|
+
args: ['appendTo', { read: ViewContainerRef }]
|
|
85
|
+
}], bulletinTemplate: [{
|
|
86
|
+
type: ViewChild,
|
|
87
|
+
args: ['bulletinTemplate', { read: TemplateRef }]
|
|
88
|
+
}], group: [{
|
|
89
|
+
type: Input
|
|
90
|
+
}] } });
|
|
91
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWlidWxsZXRpbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tbWhnbG9iYWwtZHluYW1pY2Zvcm0vc3JjL2xpYi91aWJ1bGxldGluL3VpYnVsbGV0aW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW1oZ2xvYmFsLWR5bmFtaWNmb3JtL3NyYy9saWIvdWlidWxsZXRpbi91aWJ1bGxldGluLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT25HLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFrQixNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFjN0QsTUFBTSxPQUFPLG1CQUFtQjtJQWE5QixZQUNVLFlBQTBCLEVBQzFCLGFBQTRCLEVBQzVCLGtCQUFzQyxFQUN0QyxXQUF3QixFQUN4QixPQUF1QixFQUN2QixtQkFBd0M7UUFMeEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBZmxELHVCQUF1QjtRQUNoQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDdEIseUJBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQzVCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsbUJBQWMsR0FBRyw2QkFBNkIsQ0FBQztRQVlwRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxZ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QyxnQkFBZ0IsK0dBQ1IsV0FBVyw2QkN4QnBELCs1QkF1QkE7NEZERGEsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGdCQUFnQjt5UEFLZ0MsUUFBUTtzQkFBakUsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0ssZ0JBQWdCO3NCQUFyRSxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFDM0MsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKiogQW5ndWxhciAqKioqKioqKioqL1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8qKioqKioqKioqIElvbmljICoqKioqKioqKiovXHJcblxyXG4vKioqKioqKioqKiBQbHVnaW4gKioqKioqKioqKi9cclxuaW1wb3J0IHsgTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ0Bwcm9ncmVzcy9rZW5kby1hbmd1bGFyLW5vdGlmaWNhdGlvbic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIG9mIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbi8qKioqKioqKioqIENvbXBvbmVudCAmIFNlcnZpY2UgKioqKioqKioqKi9cclxuLy8gaW1wb3J0IHsgWkNvbXBvbmVudERlYnVnU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3pjb21wb25lbnQuZGVidWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFpHcm91cCwgWkNvcmVTZXJ2aWNlLCBXZWJBcGlTZXJ2aWNlLCBSZXNvdXJjZUFwaVNlcnZpY2UgfSBmcm9tICdtbWhnbG9iYWwtemNvcmUnO1xyXG5pbXBvcnQgeyBTaWduYWxyU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpZ25hbHIuc2VydmljZSc7XHJcbmltcG9ydCB7IE1haW5TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpbi5zZXJ2aWNlJztcclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC11aWJ1bGxldGluJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdWlidWxsZXRpbi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdWlidWxsZXRpbi5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWlidWxsZXRpbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnYXBwZW5kVG8nLCB7IHJlYWQ6IFZpZXdDb250YWluZXJSZWYgfSkgcHVibGljIGFwcGVuZFRvOiBWaWV3Q29udGFpbmVyUmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ2J1bGxldGluVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pIGJ1bGxldGluVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQElucHV0KCkgZ3JvdXA6IFpHcm91cDtcclxuICAvLyBiYWNrTmF2aWdhdGUgPSBudWxsO1xyXG4gIHB1YmxpYyBidWxsZXRpbk1lc3NhZ2VzID0gW107XHJcbiAgcHVibGljIGhpZGVCdWxsZXRpblRlbXBsYXRlID0gdHJ1ZTtcclxuICBwdWJsaWMgdGl0bGUgPSBcIlwiO1xyXG4gIHB1YmxpYyBzaG93QnVsbGV0aW5JY29uID0gZmFsc2U7XHJcbiAgcHVibGljIGRlZmF1bHRNZXNzYWdlID0gJ1RoZXJlIGFyZSBubyBtZXNzYWdlIHRvZGF5Lic7XHJcbiAgcHVibGljIGVudmlyb25tZW50OiBhbnk7XHJcbiAgcHVibGljIGZpcnN0SW5pdEJ1bGxldGluVVJMOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSB6Y29yZVNlcnZpY2U6IFpDb3JlU2VydmljZSxcclxuICAgIHByaXZhdGUgd2ViQXBpU2VydmljZTogV2ViQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVzb3VyY2VBcGlTZXJ2aWNlOiBSZXNvdXJjZUFwaVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG1haW5TZXJ2aWNlOiBNYWluU2VydmljZSxcclxuICAgIHByaXZhdGUgc2lnbmFscjogU2lnbmFsclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMuZW52aXJvbm1lbnQgPSB0aGlzLnpjb3JlU2VydmljZS5nZXRFbnZpcm9ubWVudCgpO1xyXG4gICAgdGhpcy5zaG93QnVsbGV0aW5JY29uID0gdGhpcy5lbnZpcm9ubWVudC5idWxsZXRpblVybCA/IHRydWUgOiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tYWluU2VydmljZS5nZXRSZXNvdXJjZVNlcnZlckRhdGEoKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLndlYkFwaVNlcnZpY2UuaHR0cEdldCQodGhpcy5yZXNvdXJjZUFwaVNlcnZpY2UuZ2V0VVJMKHRoaXMuZW52aXJvbm1lbnQuYnVsbGV0aW5VcmwpLCAnJykuc3Vic2NyaWJlKHJlc3AgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwKSB7XHJcbiAgICAgICAgICBjb25zdCBtc2cgPSBbXTtcclxuICAgICAgICAgIGlmIChyZXNwLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgcmVzcC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBtc2cucHVzaChpdGVtLkRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc2V0QnVsbGV0aW5NZXNzYWdlcyhtc2cpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5nZXRTaWduYWxyQnVsbGV0aW5NZXNzYWdlKCkuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0QnVsbGV0aW5NZXNzYWdlcyhkYXRhOiBhbnlbXSkge1xyXG4gICAgaWYgKGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICBkYXRhLmZvckVhY2goKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChpdGVtLkRlc2NyaXB0aW9uKSB7XHJcbiAgICAgICAgICB0aGlzLmJ1bGxldGluTWVzc2FnZXMucHVzaChpdGVtLkRlc2NyaXB0aW9uKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudGl0bGUgPSB0aGlzLmJ1bGxldGluTWVzc2FnZXMubGVuZ3RoICsgXCIgbWVzc2FnZXMuIENsaWNrIHRvIHZpZXcgbWVzc2FnZXMuXCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy50aXRsZSA9IFwiTm8gbWVzc2FnZVwiO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFNpZ25hbHJCdWxsZXRpbk1lc3NhZ2UoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLnNpZ25hbHIuZ2V0RXZlbnQoKS5waXBlKFxyXG4gICAgICBmaWx0ZXIoZXZlbnQgPT4gZXZlbnQubmFtZSA9PT0gJ0J1bGxldGluJyksXHJcbiAgICAgIG1hcChldmVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5zZXRCdWxsZXRpbk1lc3NhZ2VzKGV2ZW50LnBheWxvYWQpO1xyXG4gICAgICB9KSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2hvd0J1bGxldGluTWVzc2FnZSgpOiB2b2lkIHsgXHJcbiAgICAvLyBpZiBjbG9zYWJsZSBwcm9wZXJ0eSBpcyBzZXQgdG8gdHJ1ZSwgaGlkZUFmdGVyIHByb3BlcnR5IGlzIGlnbm9yZWQuXHJcbiAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2Uuc2hvdyh7XHJcbiAgICAgIGNvbnRlbnQ6IHRoaXMuYnVsbGV0aW5UZW1wbGF0ZSxcclxuICAgICAgcG9zaXRpb246IHsgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiwgdmVydGljYWw6IFwidG9wXCIgfSxcclxuICAgICAgYW5pbWF0aW9uOiB7IHR5cGU6IFwic2xpZGVcIiwgZHVyYXRpb246IDUwMCB9LFxyXG4gICAgICB0eXBlOiB7IHN0eWxlOiBcIm5vbmVcIiwgaWNvbjogZmFsc2UgfSxcclxuICAgICAgY2xvc2FibGU6IHRoaXMuYnVsbGV0aW5NZXNzYWdlcy5sZW5ndGggPiAwID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICBoaWRlQWZ0ZXI6IDEwMDAsXHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGlvbi1idXR0b24gKGNsaWNrKT1cInNob3dCdWxsZXRpbk1lc3NhZ2UoKVwiIGZpbGw9XCJub25lXCIgc2l6ZT1cInNtYWxsXCIgKm5nSWY9XCJzaG93QnVsbGV0aW5JY29uXCI+XHJcblxyXG4gIDxpb24tbGFiZWwgW3RpdGxlXT1cInRpdGxlXCI+XHJcbiAgICA8aW9uLWJhZGdlIGNvbG9yPVwiZGFuZ2VyXCIgY2xhc3M9XCJwZW5kaW5nLWNvdW50ZXJcIlxyXG4gICAgICAgICAgICAgICAqbmdJZj1cImJ1bGxldGluTWVzc2FnZXMubGVuZ3RoID4gMFwiPlxyXG4gICAgPC9pb24tYmFkZ2U+XHJcbiAgICA8aW9uLWxhYmVsPjxmYS1pY29uIFtpY29uXT1cIlsnZmFzJywgJ2JlbGwnXVwiIHNpemU9XCJsZ1wiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA1cHg7XCI+PC9mYS1pY29uPiBOb3RpZmljYXRpb248L2lvbi1sYWJlbD5cclxuICAgIDxpb24tcmlwcGxlLWVmZmVjdD48L2lvbi1yaXBwbGUtZWZmZWN0PlxyXG4gIDwvaW9uLWxhYmVsPlxyXG5cclxuICA8IS0tPGZhLWljb24gW2ljb25dPVwiWydmYXMnLCAnYmVsbCddXCIgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDVweDtcIj48L2ZhLWljb24+IEJ1bGxldGluLS0+XHJcbjwvaW9uLWJ1dHRvbj5cclxuPG5nLXRlbXBsYXRlICNidWxsZXRpblRlbXBsYXRlPlxyXG4gIDxkaXYgKm5nSWY9XCJidWxsZXRpbk1lc3NhZ2VzLmxlbmd0aCA+IDBcIj5cclxuICAgIDwhLS08aDY+QnVsbGV0aW48L2g2Pi0tPlxyXG4gICAgPHVsPlxyXG4gICAgICA8bGkgKm5nRm9yPVwibGV0IG1zZyBvZiBidWxsZXRpbk1lc3NhZ2VzXCI+e3sgbXNnIH19PC9saT5cclxuICAgIDwvdWw+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAqbmdJZj1cImJ1bGxldGluTWVzc2FnZXMubGVuZ3RoIDw9IDBcIj5cclxuICAgIHt7IGRlZmF1bHRNZXNzYWdlIH19XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|