@valtimo/dashboard-management 12.14.1 → 13.0.1
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/fesm2022/valtimo-dashboard-management.mjs +65 -56
- package/fesm2022/valtimo-dashboard-management.mjs.map +1 -1
- package/lib/components/dashboard-details/dashboard-details.component.d.ts +6 -2
- package/lib/components/widget-modal/widget-modal.component.d.ts +6 -5
- package/lib/dashboard-management.module.d.ts +3 -3
- package/lib/services/dashboard-management.service.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/lib/components/dashboard-details/dashboard-details.component.mjs +0 -142
- package/esm2022/lib/components/dashboard-management/dashboard-management.component.mjs +0 -112
- package/esm2022/lib/components/edit-dashboard-modal/edit-dashboard-modal.mjs +0 -100
- package/esm2022/lib/components/widget-configuration-container/widget-configuration-container.component.mjs +0 -137
- package/esm2022/lib/components/widget-modal/widget-modal.component.mjs +0 -261
- package/esm2022/lib/dashboard-management-routing.module.mjs +0 -56
- package/esm2022/lib/dashboard-management.module.mjs +0 -106
- package/esm2022/lib/models/dashboard-item.type.mjs +0 -17
- package/esm2022/lib/models/index.mjs +0 -18
- package/esm2022/lib/models/widget.model.mjs +0 -17
- package/esm2022/lib/services/dashboard-management.service.mjs +0 -88
- package/esm2022/public-api.mjs +0 -20
- package/esm2022/valtimo-dashboard-management.mjs +0 -5
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { Component, EventEmitter, Input, Output, ViewChild, ViewContainerRef, } from '@angular/core';
|
|
17
|
-
import { BehaviorSubject, combineLatest, Subscription } from 'rxjs';
|
|
18
|
-
import { tap } from 'rxjs/operators';
|
|
19
|
-
import * as i0 from "@angular/core";
|
|
20
|
-
import * as i1 from "@valtimo/dashboard";
|
|
21
|
-
export class WidgetConfigurationContainerComponent {
|
|
22
|
-
set dataSourceKey(value) {
|
|
23
|
-
this._dataSourceKey$.next(value);
|
|
24
|
-
}
|
|
25
|
-
set displayTypeKey(value) {
|
|
26
|
-
this._displayTypeKey$.next(value);
|
|
27
|
-
}
|
|
28
|
-
set disabled(disabledValue) {
|
|
29
|
-
this._disabled$.next(disabledValue);
|
|
30
|
-
}
|
|
31
|
-
set prefillConfiguration(prefillConfigurationValue) {
|
|
32
|
-
this._prefillConfiguration$.next(prefillConfigurationValue);
|
|
33
|
-
}
|
|
34
|
-
constructor(widgetService) {
|
|
35
|
-
this.widgetService = widgetService;
|
|
36
|
-
this.configurationEvent = new EventEmitter();
|
|
37
|
-
this._subscriptions = new Subscription();
|
|
38
|
-
this._componentRef$ = new BehaviorSubject(undefined);
|
|
39
|
-
this._dataSourceKey$ = new BehaviorSubject('');
|
|
40
|
-
this._displayTypeKey$ = new BehaviorSubject('');
|
|
41
|
-
this._disabled$ = new BehaviorSubject(false);
|
|
42
|
-
this._prefillConfiguration$ = new BehaviorSubject(null);
|
|
43
|
-
}
|
|
44
|
-
ngOnInit() {
|
|
45
|
-
this.openConfigurationComponentSubscription();
|
|
46
|
-
this.openComponentInstanceSubscription();
|
|
47
|
-
this.openDisabledSubscription();
|
|
48
|
-
this.openPrefillConfigurationSubscription();
|
|
49
|
-
}
|
|
50
|
-
ngOnDestroy() {
|
|
51
|
-
this._subscriptions.unsubscribe();
|
|
52
|
-
}
|
|
53
|
-
openConfigurationComponentSubscription() {
|
|
54
|
-
this._subscriptions.add(combineLatest([
|
|
55
|
-
this._displayTypeKey$,
|
|
56
|
-
this._dataSourceKey$,
|
|
57
|
-
this.widgetService.supportedDisplayTypes$,
|
|
58
|
-
this.widgetService.supportedDataSources$,
|
|
59
|
-
])
|
|
60
|
-
.pipe(tap(([displayTypeKey, dataSourceKey, supportedDisplayTypes, supportedDataSources]) => {
|
|
61
|
-
let configurationComponent;
|
|
62
|
-
this._dynamicContainer.clear();
|
|
63
|
-
const displayTypeSpecification = displayTypeKey &&
|
|
64
|
-
supportedDisplayTypes.find(type => type.displayTypeKey === displayTypeKey);
|
|
65
|
-
const dataSourceSpecification = dataSourceKey &&
|
|
66
|
-
supportedDataSources.find(source => source.dataSourceKey === dataSourceKey);
|
|
67
|
-
if (displayTypeSpecification && displayTypeSpecification.configurationComponent) {
|
|
68
|
-
configurationComponent = displayTypeSpecification.configurationComponent;
|
|
69
|
-
}
|
|
70
|
-
else if (dataSourceSpecification && dataSourceSpecification.configurationComponent) {
|
|
71
|
-
configurationComponent = dataSourceSpecification.configurationComponent;
|
|
72
|
-
}
|
|
73
|
-
if (configurationComponent) {
|
|
74
|
-
const componentRef = this._dynamicContainer.createComponent(configurationComponent);
|
|
75
|
-
this.configurationEvent.emit({ valid: false, data: {} });
|
|
76
|
-
this._componentRef$.next(componentRef);
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
this.configurationEvent.emit({ valid: true, data: {} });
|
|
80
|
-
}
|
|
81
|
-
}))
|
|
82
|
-
.subscribe());
|
|
83
|
-
}
|
|
84
|
-
openComponentInstanceSubscription() {
|
|
85
|
-
this._subscriptions.add(combineLatest([this._componentRef$, this._dataSourceKey$, this._displayTypeKey$]).subscribe(([ref, dataSourceKey, displayTypeKey]) => {
|
|
86
|
-
const instance = ref?.instance;
|
|
87
|
-
this._configurationSubscription?.unsubscribe();
|
|
88
|
-
if (instance) {
|
|
89
|
-
if (displayTypeKey) {
|
|
90
|
-
instance.displayTypeKey = displayTypeKey;
|
|
91
|
-
}
|
|
92
|
-
else if (dataSourceKey) {
|
|
93
|
-
instance.dataSourceKey = dataSourceKey;
|
|
94
|
-
}
|
|
95
|
-
this._configurationSubscription = instance.configurationEvent.subscribe(configuration => {
|
|
96
|
-
this.configurationEvent.emit(configuration);
|
|
97
|
-
});
|
|
98
|
-
}
|
|
99
|
-
}));
|
|
100
|
-
}
|
|
101
|
-
openDisabledSubscription() {
|
|
102
|
-
this._subscriptions.add(combineLatest([this._componentRef$, this._disabled$]).subscribe(([ref, disabled]) => {
|
|
103
|
-
const instance = ref?.instance;
|
|
104
|
-
if (instance) {
|
|
105
|
-
instance.disabled = disabled;
|
|
106
|
-
}
|
|
107
|
-
}));
|
|
108
|
-
}
|
|
109
|
-
openPrefillConfigurationSubscription() {
|
|
110
|
-
this._subscriptions.add(combineLatest([this._componentRef$, this._prefillConfiguration$]).subscribe(([ref, prefillConfiguration]) => {
|
|
111
|
-
const instance = ref?.instance;
|
|
112
|
-
if (instance && prefillConfiguration) {
|
|
113
|
-
instance.prefillConfiguration = prefillConfiguration;
|
|
114
|
-
}
|
|
115
|
-
}));
|
|
116
|
-
}
|
|
117
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetConfigurationContainerComponent, deps: [{ token: i1.WidgetService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WidgetConfigurationContainerComponent, selector: "valtimo-widget-configuration-container", inputs: { dataSourceKey: "dataSourceKey", displayTypeKey: "displayTypeKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, viewQueries: [{ propertyName: "_dynamicContainer", first: true, predicate: ["widgetConfigurationComponent"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-template #widgetConfigurationComponent></ng-template>\n" }); }
|
|
119
|
-
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetConfigurationContainerComponent, decorators: [{
|
|
121
|
-
type: Component,
|
|
122
|
-
args: [{ selector: 'valtimo-widget-configuration-container', template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-template #widgetConfigurationComponent></ng-template>\n" }]
|
|
123
|
-
}], ctorParameters: () => [{ type: i1.WidgetService }], propDecorators: { _dynamicContainer: [{
|
|
124
|
-
type: ViewChild,
|
|
125
|
-
args: ['widgetConfigurationComponent', { static: true, read: ViewContainerRef }]
|
|
126
|
-
}], dataSourceKey: [{
|
|
127
|
-
type: Input
|
|
128
|
-
}], displayTypeKey: [{
|
|
129
|
-
type: Input
|
|
130
|
-
}], disabled: [{
|
|
131
|
-
type: Input
|
|
132
|
-
}], prefillConfiguration: [{
|
|
133
|
-
type: Input
|
|
134
|
-
}], configurationEvent: [{
|
|
135
|
-
type: Output
|
|
136
|
-
}] } });
|
|
137
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL3dpZGdldC1jb25maWd1cmF0aW9uLWNvbnRhaW5lci93aWRnZXQtY29uZmlndXJhdGlvbi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvd2lkZ2V0LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyL3dpZGdldC1jb25maWd1cmF0aW9uLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFHTCxNQUFNLEVBRU4sU0FBUyxFQUNULGdCQUFnQixHQUNqQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEUsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7QUFhbkMsTUFBTSxPQUFPLHFDQUFxQztJQU1oRCxJQUFvQixhQUFhLENBQUMsS0FBYTtRQUM3QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBb0IsY0FBYyxDQUFDLEtBQWE7UUFDOUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBQ0QsSUFBb0IsUUFBUSxDQUFDLGFBQXNCO1FBQ2pELElBQUksQ0FBQyxVQUFV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QUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDbEYsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztZQUUvQixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLFFBQVEsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQy9CLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLG9DQUFvQztRQUMxQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FDckIsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDekUsQ0FBQyxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQyxFQUFFLEVBQUU7WUFDOUIsTUFBTSxRQUFRLEdBQUcsR0FBRyxFQUFFLFFBQVEsQ0FBQztZQUUvQixJQUFJLFFBQVEsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO2dCQUNyQyxRQUFRLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7WUFDdkQsQ0FBQztRQUNILENBQUMsQ0FDRixDQUNGLENBQUM7SUFDSixDQUFDOytHQXhJVSxxQ0FBcUM7bUdBQXJDLHFDQUFxQyxxWUFHZ0IsZ0JBQWdCLDJDQzdDbEYsNnNCQWlCQTs7NEZEeUJhLHFDQUFxQztrQkFKakQsU0FBUzsrQkFDRSx3Q0FBd0M7a0ZBT2pDLGlCQUFpQjtzQkFEakMsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFDO2dCQUc3RCxhQUFhO3NCQUFoQyxLQUFLO2dCQUdjLGNBQWM7c0JBQWpDLEtBQUs7Z0JBR2MsUUFBUTtzQkFBM0IsS0FBSztnQkFHYyxvQkFBb0I7c0JBQXZDLEtBQUs7Z0JBR1csa0JBQWtCO3NCQUFsQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFR5cGUsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBDb25maWd1cmF0aW9uQ29tcG9uZW50LFxuICBDb25maWd1cmF0aW9uT3V0cHV0LFxuICBEYXRhU291cmNlQ29uZmlndXJhdGlvbkNvbXBvbmVudCxcbiAgRGlzcGxheVR5cGVDb25maWd1cmF0aW9uQ29tcG9uZW50LFxuICBXaWRnZXRTZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9kYXNoYm9hcmQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXdpZGdldC1jb25maWd1cmF0aW9uLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtY29uZmlndXJhdGlvbi1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBXaWRnZXRDb25maWd1cmF0aW9uQ29udGFpbmVyQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIENvbmZpZ3VyYXRpb25Db21wb25lbnRcbntcbiAgQFZpZXdDaGlsZCgnd2lkZ2V0Q29uZmlndXJhdGlvbkNvbXBvbmVudCcsIHtzdGF0aWM6IHRydWUsIHJlYWQ6IFZpZXdDb250YWluZXJSZWZ9KVxuICBwcml2YXRlIHJlYWRvbmx5IF9keW5hbWljQ29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgZGF0YVNvdXJjZUtleSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZGF0YVNvdXJjZUtleSQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgQElucHV0KCkgcHVibGljIHNldCBkaXNwbGF5VHlwZUtleSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fZGlzcGxheVR5cGVLZXkkLm5leHQodmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgZGlzYWJsZWQoZGlzYWJsZWRWYWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkJC5uZXh0KGRpc2FibGVkVmFsdWUpO1xuICB9XG4gIEBJbnB1dCgpIHB1YmxpYyBzZXQgcHJlZmlsbENvbmZpZ3VyYXRpb24ocHJlZmlsbENvbmZpZ3VyYXRpb25WYWx1ZSkge1xuICAgIHRoaXMuX3ByZWZpbGxDb25maWd1cmF0aW9uJC5uZXh0KHByZWZpbGxDb25maWd1cmF0aW9uVmFsdWUpO1xuICB9XG4gIEBPdXRwdXQoKSBwdWJsaWMgY29uZmlndXJhdGlvbkV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxDb25maWd1cmF0aW9uT3V0cHV0PigpO1xuXG4gIHByaXZhdGUgX2NvbmZpZ3VyYXRpb25TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1YnNjcmlwdGlvbnMgPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcG9uZW50UmVmJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8XG4gICAgQ29tcG9uZW50UmVmPERhdGFTb3VyY2VDb25maWd1cmF0aW9uQ29tcG9uZW50IHwgRGlzcGxheVR5cGVDb25maWd1cmF0aW9uQ29tcG9uZW50PiB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RhdGFTb3VyY2VLZXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzcGxheVR5cGVLZXkkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmc+KCcnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3ByZWZpbGxDb25maWd1cmF0aW9uJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8b2JqZWN0IHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSB3aWRnZXRTZXJ2aWNlOiBXaWRnZXRTZXJ2aWNlKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5Db25maWd1cmF0aW9uQ29tcG9uZW50U3Vic2NyaXB0aW9uKCk7XG4gICAgdGhpcy5vcGVuQ29tcG9uZW50SW5zdGFuY2VTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLm9wZW5EaXNhYmxlZFN1YnNjcmlwdGlvbigpO1xuICAgIHRoaXMub3BlblByZWZpbGxDb25maWd1cmF0aW9uU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuQ29uZmlndXJhdGlvbkNvbXBvbmVudFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLl9kaXNwbGF5VHlwZUtleSQsXG4gICAgICAgIHRoaXMuX2RhdGFTb3VyY2VLZXkkLFxuICAgICAgICB0aGlzLndpZGdldFNlcnZpY2Uuc3VwcG9ydGVkRGlzcGxheVR5cGVzJCxcbiAgICAgICAgdGhpcy53aWRnZXRTZXJ2aWNlLnN1cHBvcnRlZERhdGFTb3VyY2VzJCxcbiAgICAgIF0pXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRhcCgoW2Rpc3BsYXlUeXBlS2V5LCBkYXRhU291cmNlS2V5LCBzdXBwb3J0ZWREaXNwbGF5VHlwZXMsIHN1cHBvcnRlZERhdGFTb3VyY2VzXSkgPT4ge1xuICAgICAgICAgICAgbGV0IGNvbmZpZ3VyYXRpb25Db21wb25lbnQhOiBUeXBlPFxuICAgICAgICAgICAgICBEaXNwbGF5VHlwZUNvbmZpZ3VyYXRpb25Db21wb25lbnQgfCBEYXRhU291cmNlQ29uZmlndXJhdGlvbkNvbXBvbmVudFxuICAgICAgICAgICAgPjtcblxuICAgICAgICAgICAgdGhpcy5fZHluYW1pY0NvbnRhaW5lci5jbGVhcigpO1xuXG4gICAgICAgICAgICBjb25zdCBkaXNwbGF5VHlwZVNwZWNpZmljYXRpb24gPVxuICAgICAgICAgICAgICBkaXNwbGF5VHlwZUtleSAmJlxuICAgICAgICAgICAgICBzdXBwb3J0ZWREaXNwbGF5VHlwZXMuZmluZCh0eXBlID0+IHR5cGUuZGlzcGxheVR5cGVLZXkgPT09IGRpc3BsYXlUeXBlS2V5KTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGFTb3VyY2VTcGVjaWZpY2F0aW9uID1cbiAgICAgICAgICAgICAgZGF0YVNvdXJjZUtleSAmJlxuICAgICAgICAgICAgICBzdXBwb3J0ZWREYXRhU291cmNlcy5maW5kKHNvdXJjZSA9PiBzb3VyY2UuZGF0YVNvdXJjZUtleSA9PT0gZGF0YVNvdXJjZUtleSk7XG5cbiAgICAgICAgICAgIGlmIChkaXNwbGF5VHlwZVNwZWNpZmljYXRpb24gJiYgZGlzcGxheVR5cGVTcGVjaWZpY2F0aW9uLmNvbmZpZ3VyYXRpb25Db21wb25lbnQpIHtcbiAgICAgICAgICAgICAgY29uZmlndXJhdGlvbkNvbXBvbmVudCA9IGRpc3BsYXlUeXBlU3BlY2lmaWNhdGlvbi5jb25maWd1cmF0aW9uQ29tcG9uZW50O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhU291cmNlU3BlY2lmaWNhdGlvbiAmJiBkYXRhU291cmNlU3BlY2lmaWNhdGlvbi5jb25maWd1cmF0aW9uQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25Db21wb25lbnQgPSBkYXRhU291cmNlU3BlY2lmaWNhdGlvbi5jb25maWd1cmF0aW9uQ29tcG9uZW50O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoY29uZmlndXJhdGlvbkNvbXBvbmVudCkge1xuICAgICAgICAgICAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLl9keW5hbWljQ29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb25maWd1cmF0aW9uQ29tcG9uZW50KTtcbiAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uRXZlbnQuZW1pdCh7dmFsaWQ6IGZhbHNlLCBkYXRhOiB7fX0pO1xuICAgICAgICAgICAgICB0aGlzLl9jb21wb25lbnRSZWYkLm5leHQoY29tcG9uZW50UmVmKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbkV2ZW50LmVtaXQoe3ZhbGlkOiB0cnVlLCBkYXRhOiB7fX0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkNvbXBvbmVudEluc3RhbmNlU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgY29tYmluZUxhdGVzdChbdGhpcy5fY29tcG9uZW50UmVmJCwgdGhpcy5fZGF0YVNvdXJjZUtleSQsIHRoaXMuX2Rpc3BsYXlUeXBlS2V5JF0pLnN1YnNjcmliZShcbiAgICAgICAgKFtyZWYsIGRhdGFTb3VyY2VLZXksIGRpc3BsYXlUeXBlS2V5XSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gcmVmPy5pbnN0YW5jZTtcblxuICAgICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25TdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGlmIChkaXNwbGF5VHlwZUtleSkge1xuICAgICAgICAgICAgICAoaW5zdGFuY2UgYXMgRGlzcGxheVR5cGVDb25maWd1cmF0aW9uQ29tcG9uZW50KS5kaXNwbGF5VHlwZUtleSA9IGRpc3BsYXlUeXBlS2V5O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChkYXRhU291cmNlS2V5KSB7XG4gICAgICAgICAgICAgIChpbnN0YW5jZSBhcyBEYXRhU291cmNlQ29uZmlndXJhdGlvbkNvbXBvbmVudCkuZGF0YVNvdXJjZUtleSA9IGRhdGFTb3VyY2VLZXk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb25TdWJzY3JpcHRpb24gPSBpbnN0YW5jZS5jb25maWd1cmF0aW9uRXZlbnQuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICBjb25maWd1cmF0aW9uID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb25FdmVudC5lbWl0KGNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5EaXNhYmxlZFN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2NvbXBvbmVudFJlZiQsIHRoaXMuX2Rpc2FibGVkJF0pLnN1YnNjcmliZSgoW3JlZiwgZGlzYWJsZWRdKSA9PiB7XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gcmVmPy5pbnN0YW5jZTtcblxuICAgICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgICBpbnN0YW5jZS5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG9wZW5QcmVmaWxsQ29uZmlndXJhdGlvblN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRpb25zLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW3RoaXMuX2NvbXBvbmVudFJlZiQsIHRoaXMuX3ByZWZpbGxDb25maWd1cmF0aW9uJF0pLnN1YnNjcmliZShcbiAgICAgICAgKFtyZWYsIHByZWZpbGxDb25maWd1cmF0aW9uXSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluc3RhbmNlID0gcmVmPy5pbnN0YW5jZTtcblxuICAgICAgICAgIGlmIChpbnN0YW5jZSAmJiBwcmVmaWxsQ29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgaW5zdGFuY2UucHJlZmlsbENvbmZpZ3VyYXRpb24gPSBwcmVmaWxsQ29uZmlndXJhdGlvbjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy10ZW1wbGF0ZSAjd2lkZ2V0Q29uZmlndXJhdGlvbkNvbXBvbmVudD48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { Component, EventEmitter, Inject, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
17
|
-
import { BehaviorSubject, combineLatest, filter, map, switchMap, take, tap, } from 'rxjs';
|
|
18
|
-
import { Validators } from '@angular/forms';
|
|
19
|
-
import { NotificationService } from 'carbon-components-angular';
|
|
20
|
-
import { DOCUMENT } from '@angular/common';
|
|
21
|
-
import { CARBON_CONSTANTS } from '@valtimo/components';
|
|
22
|
-
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "@angular/forms";
|
|
24
|
-
import * as i2 from "@ngx-translate/core";
|
|
25
|
-
import * as i3 from "carbon-components-angular";
|
|
26
|
-
import * as i4 from "../../services/dashboard-management.service";
|
|
27
|
-
import * as i5 from "@valtimo/dashboard";
|
|
28
|
-
import * as i6 from "@angular/common";
|
|
29
|
-
import * as i7 from "@valtimo/components";
|
|
30
|
-
import * as i8 from "../widget-configuration-container/widget-configuration-container.component";
|
|
31
|
-
export class WidgetModalComponent {
|
|
32
|
-
set editWidgetConfiguration(configuration) {
|
|
33
|
-
if (configuration) {
|
|
34
|
-
this.title.setValue(configuration.title);
|
|
35
|
-
this.url.setValue(configuration.url);
|
|
36
|
-
this.dataSourceSelected({ item: { key: configuration.dataSourceKey } });
|
|
37
|
-
this.displayTypeSelected({ item: { key: configuration.displayType } });
|
|
38
|
-
this.dataSourcePrefillConfig$.next(configuration.dataSourceProperties);
|
|
39
|
-
this.displayTypePrefillConfig$.next(configuration.displayTypeProperties);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
this.dataSourcePrefillConfig$.next(null);
|
|
43
|
-
this.displayTypePrefillConfig$.next(null);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
get title() {
|
|
47
|
-
return this.form.get('title');
|
|
48
|
-
}
|
|
49
|
-
get key() {
|
|
50
|
-
return this.form.get('key');
|
|
51
|
-
}
|
|
52
|
-
get dataSource() {
|
|
53
|
-
return this.form.get('dataSource');
|
|
54
|
-
}
|
|
55
|
-
get displayType() {
|
|
56
|
-
return this.form.get('displayType');
|
|
57
|
-
}
|
|
58
|
-
get url() {
|
|
59
|
-
return this.form.get('url');
|
|
60
|
-
}
|
|
61
|
-
constructor(document, fb, translateService, notificationService, dashboardManagementService, widgetService, widgetTranslationService) {
|
|
62
|
-
this.document = document;
|
|
63
|
-
this.fb = fb;
|
|
64
|
-
this.translateService = translateService;
|
|
65
|
-
this.notificationService = notificationService;
|
|
66
|
-
this.dashboardManagementService = dashboardManagementService;
|
|
67
|
-
this.widgetService = widgetService;
|
|
68
|
-
this.widgetTranslationService = widgetTranslationService;
|
|
69
|
-
this.saveEvent = new EventEmitter();
|
|
70
|
-
this.form = this.fb.group({
|
|
71
|
-
title: this.fb.control('', [Validators.required]),
|
|
72
|
-
dataSource: this.fb.control(null, [Validators.required]),
|
|
73
|
-
displayType: this.fb.control(null, [Validators.required]),
|
|
74
|
-
url: this.fb.control(''),
|
|
75
|
-
});
|
|
76
|
-
this.open$ = new BehaviorSubject(false);
|
|
77
|
-
this.selectedDataSourceKey$ = new BehaviorSubject('');
|
|
78
|
-
this.selectedDisplayTypeKey$ = new BehaviorSubject('');
|
|
79
|
-
this.dataSourceItems$ = combineLatest([
|
|
80
|
-
this.dashboardManagementService.getDataSources(),
|
|
81
|
-
this.selectedDataSourceKey$,
|
|
82
|
-
this.widgetService.supportedDataSources$,
|
|
83
|
-
this.translateService.stream('key'),
|
|
84
|
-
]).pipe(filter(([dataSources]) => !!dataSources), tap(([dataSources, selectedDataSourceKey]) => {
|
|
85
|
-
if (selectedDataSourceKey) {
|
|
86
|
-
this.setCompatibleDisplayTypes(dataSources, selectedDataSourceKey);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
this.resetCompatibleDisplayTypes();
|
|
90
|
-
}
|
|
91
|
-
}), map(([dataSources, selectedDataSourceKey, supportedDataSources]) => dataSources
|
|
92
|
-
.filter(dataSource => supportedDataSources.find(supportedDataSource => supportedDataSource.dataSourceKey === dataSource.key))
|
|
93
|
-
.map(dataSource => ({
|
|
94
|
-
content: this.widgetTranslationService.instant('title', dataSource.key),
|
|
95
|
-
selected: selectedDataSourceKey === dataSource.key,
|
|
96
|
-
key: dataSource.key,
|
|
97
|
-
}))));
|
|
98
|
-
this.dataSourcePrefillConfig$ = new BehaviorSubject(null);
|
|
99
|
-
this.displayTypePrefillConfig$ = new BehaviorSubject(null);
|
|
100
|
-
this._compatibleDisplayTypes$ = new BehaviorSubject([]);
|
|
101
|
-
this.displayTypeItems$ = combineLatest([
|
|
102
|
-
this._compatibleDisplayTypes$,
|
|
103
|
-
this.selectedDisplayTypeKey$,
|
|
104
|
-
this.translateService.stream('key'),
|
|
105
|
-
]).pipe(map(([compatibleDisplayTypes, selectedDisplayTypeKey]) => compatibleDisplayTypes.map(displayType => ({
|
|
106
|
-
content: this.widgetTranslationService.instant('title', displayType.displayTypeKey),
|
|
107
|
-
selected: displayType.displayTypeKey === selectedDisplayTypeKey,
|
|
108
|
-
key: displayType.displayTypeKey,
|
|
109
|
-
}))));
|
|
110
|
-
this.displayTypeDropdownDisabled$ = combineLatest([
|
|
111
|
-
this._compatibleDisplayTypes$,
|
|
112
|
-
this.selectedDataSourceKey$,
|
|
113
|
-
]).pipe(map(([compatibleDisplayTypes, selectedDataSourceKey]) => compatibleDisplayTypes?.length === 0 || !selectedDataSourceKey), tap(displayTypeDropdownDisabled => {
|
|
114
|
-
if (displayTypeDropdownDisabled) {
|
|
115
|
-
this.displayType?.disable();
|
|
116
|
-
}
|
|
117
|
-
else {
|
|
118
|
-
this.displayType?.enable();
|
|
119
|
-
}
|
|
120
|
-
}));
|
|
121
|
-
this.dataSourceConfiguration$ = new BehaviorSubject({
|
|
122
|
-
valid: false,
|
|
123
|
-
data: {},
|
|
124
|
-
});
|
|
125
|
-
this.displayTypeConfiguration$ = new BehaviorSubject({
|
|
126
|
-
valid: false,
|
|
127
|
-
data: {},
|
|
128
|
-
});
|
|
129
|
-
this.disabled$ = new BehaviorSubject(false);
|
|
130
|
-
}
|
|
131
|
-
ngOnInit() {
|
|
132
|
-
this.openOpenSubscription();
|
|
133
|
-
}
|
|
134
|
-
ngOnDestroy() {
|
|
135
|
-
this._openSubscription?.unsubscribe();
|
|
136
|
-
}
|
|
137
|
-
closeModal() {
|
|
138
|
-
this.open$.next(false);
|
|
139
|
-
setTimeout(() => {
|
|
140
|
-
this.enable();
|
|
141
|
-
this.form.reset();
|
|
142
|
-
this.selectedDataSourceKey$.next('');
|
|
143
|
-
this.selectedDisplayTypeKey$.next('');
|
|
144
|
-
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
145
|
-
}
|
|
146
|
-
save() {
|
|
147
|
-
this.disable();
|
|
148
|
-
combineLatest([
|
|
149
|
-
this.selectedDataSourceKey$,
|
|
150
|
-
this.selectedDisplayTypeKey$,
|
|
151
|
-
this.displayTypeConfiguration$,
|
|
152
|
-
this.dataSourceConfiguration$,
|
|
153
|
-
])
|
|
154
|
-
.pipe(take(1), map(([selectedDataSourceKey, selectedDisplayTypeKey, displayTypeConfiguration, dataSourceConfiguration,]) => ({
|
|
155
|
-
title: this.title.value,
|
|
156
|
-
displayType: selectedDisplayTypeKey,
|
|
157
|
-
dataSourceKey: selectedDataSourceKey,
|
|
158
|
-
dataSourceProperties: { ...dataSourceConfiguration.data },
|
|
159
|
-
displayTypeProperties: { ...displayTypeConfiguration.data },
|
|
160
|
-
url: this.url.value,
|
|
161
|
-
})), switchMap(widgetUpdateObject => this.type === 'create'
|
|
162
|
-
? this.dashboardManagementService.createDashboardWidgetConfiguration(this.dashboard.key, widgetUpdateObject)
|
|
163
|
-
: this.dashboardManagementService.updateDashboardWidgetConfiguration(this.dashboard.key, { ...widgetUpdateObject, key: this.widgetKey })))
|
|
164
|
-
.subscribe({
|
|
165
|
-
complete: () => {
|
|
166
|
-
this.saveEvent.emit();
|
|
167
|
-
this.closeModal();
|
|
168
|
-
},
|
|
169
|
-
error: () => {
|
|
170
|
-
this.enable();
|
|
171
|
-
},
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
delete() {
|
|
175
|
-
this.disable();
|
|
176
|
-
this.dashboardManagementService
|
|
177
|
-
.deleteDashboardWidgetConfiguration(this.dashboard.key, this.widgetKey)
|
|
178
|
-
.subscribe({
|
|
179
|
-
complete: () => {
|
|
180
|
-
this.saveEvent.emit();
|
|
181
|
-
this.closeModal();
|
|
182
|
-
},
|
|
183
|
-
error: () => {
|
|
184
|
-
this.enable();
|
|
185
|
-
},
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
dataSourceSelected(dataSource) {
|
|
189
|
-
if (!dataSource) {
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
this.selectedDataSourceKey$.next(dataSource?.item?.key);
|
|
193
|
-
this.dataSource.setValue(dataSource?.item?.key);
|
|
194
|
-
}
|
|
195
|
-
displayTypeSelected(displayType) {
|
|
196
|
-
if (!displayType) {
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
this.selectedDisplayTypeKey$.next(displayType?.item?.key);
|
|
200
|
-
this.displayType.setValue(displayType?.item?.key);
|
|
201
|
-
}
|
|
202
|
-
dataSourceConfiguration(configuration) {
|
|
203
|
-
this.dataSourceConfiguration$.next(configuration);
|
|
204
|
-
}
|
|
205
|
-
displayTypeConfiguration(configuration) {
|
|
206
|
-
this.displayTypeConfiguration$.next(configuration);
|
|
207
|
-
}
|
|
208
|
-
openOpenSubscription() {
|
|
209
|
-
this._openSubscription = this.showModal$.subscribe(show => {
|
|
210
|
-
this.open$.next(show);
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
resetCompatibleDisplayTypes() {
|
|
214
|
-
this._compatibleDisplayTypes$.next([]);
|
|
215
|
-
}
|
|
216
|
-
setCompatibleDisplayTypes(dataSources, selectedDataSourceKey) {
|
|
217
|
-
this.widgetService.supportedDisplayTypes$.pipe(take(1)).subscribe(supportedDisplayTypes => {
|
|
218
|
-
const selectedDataSource = dataSources.find(source => source.key === selectedDataSourceKey);
|
|
219
|
-
const availableDataFeatures = selectedDataSource?.dataFeatures;
|
|
220
|
-
const compatibleDisplayTypes = supportedDisplayTypes.filter(displayType => {
|
|
221
|
-
const supportedDataFeatures = displayType.requiredDataFeatures.filter(requiredDataFeature => !!availableDataFeatures?.some(availableDataFeature => this.trimAndToUpperCase(availableDataFeature) ===
|
|
222
|
-
this.trimAndToUpperCase(requiredDataFeature)));
|
|
223
|
-
return supportedDataFeatures.length === displayType.requiredDataFeatures.length;
|
|
224
|
-
});
|
|
225
|
-
this._compatibleDisplayTypes$.next(compatibleDisplayTypes);
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
disable() {
|
|
229
|
-
this.disabled$.next(true);
|
|
230
|
-
this.form.disable();
|
|
231
|
-
}
|
|
232
|
-
enable() {
|
|
233
|
-
this.disabled$.next(false);
|
|
234
|
-
this.form.enable();
|
|
235
|
-
}
|
|
236
|
-
trimAndToUpperCase(text) {
|
|
237
|
-
return `${text}`.trim().toUpperCase();
|
|
238
|
-
}
|
|
239
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetModalComponent, deps: [{ token: DOCUMENT }, { token: i1.FormBuilder }, { token: i2.TranslateService }, { token: i3.NotificationService }, { token: i4.DashboardManagementService }, { token: i5.WidgetService }, { token: i5.WidgetTranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
240
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WidgetModalComponent, selector: "valtimo-widget-modal", inputs: { showModal$: "showModal$", type: "type", dashboard: "dashboard", widgetKey: "widgetKey", editWidgetConfiguration: "editWidgetConfiguration" }, outputs: { saveEvent: "saveEvent" }, providers: [NotificationService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n isCreate: type === 'create',\n isDelete: type === 'delete',\n isEdit: type === 'edit',\n open: open$ | async,\n } as vars\"\n>\n <ng-container\n *ngIf=\"{\n create: vars.isCreate && ('dashboardManagement.widgets.add' | translate),\n delete: vars.isDelete && ('dashboardManagement.widgets.delete' | translate),\n edit: vars.isEdit && ('dashboardManagement.widgets.edit' | translate),\n } as titles\"\n >\n <cds-modal\n *ngIf=\"{\n title: titles.edit || titles.create || titles.delete,\n } as translations\"\n valtimoCdsModal\n [open]=\"vars.open\"\n showFooter=\"true\"\n size=\"md\"\n title=\"{{ translations.title }}\"\n class=\"widget-modal\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ translations.title }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngIf=\"vars.isDelete\">\n {{ 'dashboardManagement.widgets.deleteDescription' | translate }}</ng-container\n >\n\n <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n <ng-container *ngTemplateOutlet=\"widgetForm; context: {vars: vars}\"></ng-container>\n </ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n <ng-container *ngTemplateOutlet=\"editButtons; context: {vars: vars}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"vars.isDelete\">\n <ng-container *ngTemplateOutlet=\"deleteButtons; context: {vars: vars}\"></ng-container>\n </ng-container>\n </cds-modal-footer>\n </cds-modal>\n </ng-container>\n</ng-container>\n\n<ng-template #widgetForm let-vars=\"vars\">\n <form\n *ngIf=\"\n form && {\n dataSourceItems: dataSourceItems$ | async,\n displayTypeDropdownDisabled: displayTypeDropdownDisabled$ | async,\n displayTypeItems: displayTypeItems$ | async,\n selectedDataSourceKey: selectedDataSourceKey$ | async,\n selectedDisplayTypeKey: selectedDisplayTypeKey$ | async,\n } as obs\n \"\n [formGroup]=\"form\"\n class=\"dashboard-modal__form\"\n >\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'dashboardManagement.widgets.form.title' | translate }}\n\n <input\n cdsText\n formControlName=\"title\"\n [invalid]=\"title.dirty && title.invalid\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__element\" *ngIf=\"obs.dataSourceItems\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"dataSource\"\n [helperText]=\"'dashboardManagement.widgets.form.dataSourceHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.dateSourceHelperText' | translate\"\n [invalid]=\"dataSource.dirty && dataSource.invalid\"\n [label]=\"'dashboardManagement.widgets.form.dataSource' | translate\"\n (selected)=\"dataSourceSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs.dataSourceItems\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <valtimo-widget-configuration-container\n *ngIf=\"obs.selectedDataSourceKey\"\n [dataSourceKey]=\"obs.selectedDataSourceKey\"\n [disabled]=\"vars.disabled\"\n [prefillConfiguration]=\"dataSourcePrefillConfig$ | async\"\n (configurationEvent)=\"dataSourceConfiguration($event)\"\n ></valtimo-widget-configuration-container>\n\n <div class=\"form__element\" *ngIf=\"obs.displayTypeItems\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"displayType\"\n [helperText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n [invalid]=\"displayType.dirty && displayType.invalid\"\n [invalidText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n [label]=\"'dashboardManagement.widgets.form.displayType' | translate\"\n (selected)=\"displayTypeSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs.displayTypeItems\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <valtimo-widget-configuration-container\n *ngIf=\"obs.selectedDisplayTypeKey\"\n [disabled]=\"vars.disabled\"\n [displayTypeKey]=\"obs.selectedDisplayTypeKey\"\n [prefillConfiguration]=\"displayTypePrefillConfig$ | async\"\n (configurationEvent)=\"displayTypeConfiguration($event)\"\n ></valtimo-widget-configuration-container>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'dashboardManagement.widgets.form.urlHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.urlHelperText' | translate\"\n [invalid]=\"url.dirty && url.invalid\"\n >\n {{ 'dashboardManagement.widgets.form.url' | translate }}\n\n <input cdsText formControlName=\"url\" [invalid]=\"url.dirty && url.invalid\" />\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #editButtons let-vars=\"vars\">\n <ng-container\n *ngIf=\"{\n dataSourceConfiguration: dataSourceConfiguration$ | async,\n displayTypeConfiguration: displayTypeConfiguration$ | async,\n } as obs\"\n >\n <button cdsButton=\"ghost\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"\n form.invalid ||\n !obs.dataSourceConfiguration.valid ||\n !obs.displayTypeConfiguration.valid ||\n vars.disabled\n \"\n (click)=\"save()\"\n >\n {{ 'dashboardManagement.widgets.save' | translate }}\n </button>\n </ng-container>\n</ng-template>\n\n<ng-template #deleteButtons let-vars=\"vars\">\n <button cdsButton=\"secondary\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button cdsButton=\"danger\" [disabled]=\"vars.disabled\" (click)=\"delete()\">\n {{ 'dashboardManagement.widgets.delete' | translate }}\n </button>\n</ng-template>\n", styles: [".widget-modal .cds--modal-container{inline-size:75%!important;max-width:1200px!important}.widget-modal .form__row{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start}.widget-modal .form__spacer{width:32px}.widget-modal .form__element{width:100%;margin-bottom:32px}.widget-modal .form__element.--with-button{display:flex;align-items:flex-end;flex-direction:row}.widget-modal .form__element.--with-button button{margin-left:16px}.widget-modal .form__element.--readonly input{background-color:transparent}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "hideLabel", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i3.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i3.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i3.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: i3.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i3.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i3.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i3.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i3.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "directive", type: i7.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["enableOverflow"] }, { kind: "component", type: i8.WidgetConfigurationContainerComponent, selector: "valtimo-widget-configuration-container", inputs: ["dataSourceKey", "displayTypeKey", "disabled", "prefillConfiguration"], outputs: ["configurationEvent"] }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
241
|
-
}
|
|
242
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WidgetModalComponent, decorators: [{
|
|
243
|
-
type: Component,
|
|
244
|
-
args: [{ selector: 'valtimo-widget-modal', encapsulation: ViewEncapsulation.None, providers: [NotificationService], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n isCreate: type === 'create',\n isDelete: type === 'delete',\n isEdit: type === 'edit',\n open: open$ | async,\n } as vars\"\n>\n <ng-container\n *ngIf=\"{\n create: vars.isCreate && ('dashboardManagement.widgets.add' | translate),\n delete: vars.isDelete && ('dashboardManagement.widgets.delete' | translate),\n edit: vars.isEdit && ('dashboardManagement.widgets.edit' | translate),\n } as titles\"\n >\n <cds-modal\n *ngIf=\"{\n title: titles.edit || titles.create || titles.delete,\n } as translations\"\n valtimoCdsModal\n [open]=\"vars.open\"\n showFooter=\"true\"\n size=\"md\"\n title=\"{{ translations.title }}\"\n class=\"widget-modal\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ translations.title }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent [cdsLayer]=\"1\">\n <ng-container *ngIf=\"vars.isDelete\">\n {{ 'dashboardManagement.widgets.deleteDescription' | translate }}</ng-container\n >\n\n <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n <ng-container *ngTemplateOutlet=\"widgetForm; context: {vars: vars}\"></ng-container>\n </ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n <ng-container *ngTemplateOutlet=\"editButtons; context: {vars: vars}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"vars.isDelete\">\n <ng-container *ngTemplateOutlet=\"deleteButtons; context: {vars: vars}\"></ng-container>\n </ng-container>\n </cds-modal-footer>\n </cds-modal>\n </ng-container>\n</ng-container>\n\n<ng-template #widgetForm let-vars=\"vars\">\n <form\n *ngIf=\"\n form && {\n dataSourceItems: dataSourceItems$ | async,\n displayTypeDropdownDisabled: displayTypeDropdownDisabled$ | async,\n displayTypeItems: displayTypeItems$ | async,\n selectedDataSourceKey: selectedDataSourceKey$ | async,\n selectedDisplayTypeKey: selectedDisplayTypeKey$ | async,\n } as obs\n \"\n [formGroup]=\"form\"\n class=\"dashboard-modal__form\"\n >\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'dashboardManagement.widgets.form.title' | translate }}\n\n <input\n cdsText\n formControlName=\"title\"\n [invalid]=\"title.dirty && title.invalid\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__element\" *ngIf=\"obs.dataSourceItems\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"dataSource\"\n [helperText]=\"'dashboardManagement.widgets.form.dataSourceHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.dateSourceHelperText' | translate\"\n [invalid]=\"dataSource.dirty && dataSource.invalid\"\n [label]=\"'dashboardManagement.widgets.form.dataSource' | translate\"\n (selected)=\"dataSourceSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs.dataSourceItems\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <valtimo-widget-configuration-container\n *ngIf=\"obs.selectedDataSourceKey\"\n [dataSourceKey]=\"obs.selectedDataSourceKey\"\n [disabled]=\"vars.disabled\"\n [prefillConfiguration]=\"dataSourcePrefillConfig$ | async\"\n (configurationEvent)=\"dataSourceConfiguration($event)\"\n ></valtimo-widget-configuration-container>\n\n <div class=\"form__element\" *ngIf=\"obs.displayTypeItems\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"displayType\"\n [helperText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n [invalid]=\"displayType.dirty && displayType.invalid\"\n [invalidText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n [label]=\"'dashboardManagement.widgets.form.displayType' | translate\"\n (selected)=\"displayTypeSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs.displayTypeItems\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <valtimo-widget-configuration-container\n *ngIf=\"obs.selectedDisplayTypeKey\"\n [disabled]=\"vars.disabled\"\n [displayTypeKey]=\"obs.selectedDisplayTypeKey\"\n [prefillConfiguration]=\"displayTypePrefillConfig$ | async\"\n (configurationEvent)=\"displayTypeConfiguration($event)\"\n ></valtimo-widget-configuration-container>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'dashboardManagement.widgets.form.urlHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.urlHelperText' | translate\"\n [invalid]=\"url.dirty && url.invalid\"\n >\n {{ 'dashboardManagement.widgets.form.url' | translate }}\n\n <input cdsText formControlName=\"url\" [invalid]=\"url.dirty && url.invalid\" />\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #editButtons let-vars=\"vars\">\n <ng-container\n *ngIf=\"{\n dataSourceConfiguration: dataSourceConfiguration$ | async,\n displayTypeConfiguration: displayTypeConfiguration$ | async,\n } as obs\"\n >\n <button cdsButton=\"ghost\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"\n form.invalid ||\n !obs.dataSourceConfiguration.valid ||\n !obs.displayTypeConfiguration.valid ||\n vars.disabled\n \"\n (click)=\"save()\"\n >\n {{ 'dashboardManagement.widgets.save' | translate }}\n </button>\n </ng-container>\n</ng-template>\n\n<ng-template #deleteButtons let-vars=\"vars\">\n <button cdsButton=\"secondary\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button cdsButton=\"danger\" [disabled]=\"vars.disabled\" (click)=\"delete()\">\n {{ 'dashboardManagement.widgets.delete' | translate }}\n </button>\n</ng-template>\n", styles: [".widget-modal .cds--modal-container{inline-size:75%!important;max-width:1200px!important}.widget-modal .form__row{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-start}.widget-modal .form__spacer{width:32px}.widget-modal .form__element{width:100%;margin-bottom:32px}.widget-modal .form__element.--with-button{display:flex;align-items:flex-end;flex-direction:row}.widget-modal .form__element.--with-button button{margin-left:16px}.widget-modal .form__element.--readonly input{background-color:transparent}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
245
|
-
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
246
|
-
type: Inject,
|
|
247
|
-
args: [DOCUMENT]
|
|
248
|
-
}] }, { type: i1.FormBuilder }, { type: i2.TranslateService }, { type: i3.NotificationService }, { type: i4.DashboardManagementService }, { type: i5.WidgetService }, { type: i5.WidgetTranslationService }], propDecorators: { showModal$: [{
|
|
249
|
-
type: Input
|
|
250
|
-
}], type: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}], dashboard: [{
|
|
253
|
-
type: Input
|
|
254
|
-
}], widgetKey: [{
|
|
255
|
-
type: Input
|
|
256
|
-
}], editWidgetConfiguration: [{
|
|
257
|
-
type: Input
|
|
258
|
-
}], saveEvent: [{
|
|
259
|
-
type: Output
|
|
260
|
-
}] } });
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lkZ2V0LW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL3dpZGdldC1tb2RhbC93aWRnZXQtbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvd2lkZ2V0LW1vZGFsL3dpZGdldC1tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUVILE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBR0wsTUFBTSxFQUNOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxFQUNmLGFBQWEsRUFDYixNQUFNLEVBQ04sR0FBRyxFQUdILFNBQVMsRUFDVCxJQUFJLEVBQ0osR0FBRyxHQUNKLE1BQU0sTUFBTSxDQUFDO0FBRWQsT0FBTyxFQUFjLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBVyxtQkFBbUIsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBRXhFLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUV6QyxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7OztBQWdCckQsTUFBTSxPQUFPLG9CQUFvQjtJQUsvQixJQUFvQix1QkFBdUIsQ0FBQyxhQUEyQztRQUNyRixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsR0FB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QUNGLE9BQU8scUJBQXFCLENBQUMsTUFBTSxLQUFLLFdBQVcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUM7WUFDbEYsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sT0FBTztRQUNiLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLE1BQU07UUFDWixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxJQUFZO1FBQ3JDLE9BQU8sR0FBRyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDOytHQXBTVSxvQkFBb0Isa0JBZ0lyQixRQUFRO21HQWhJUCxvQkFBb0IsNE9BRnBCLENBQUMsbUJBQW1CLENBQUMsMEJDekRsQyx3ck9Bb01BOzs0RkR6SWEsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNFLHNCQUFzQixpQkFHakIsaUJBQWlCLENBQUMsSUFBSSxhQUMxQixDQUFDLG1CQUFtQixDQUFDOzswQkFrSTdCLE1BQU07MkJBQUMsUUFBUTtnUEEvSEYsVUFBVTtzQkFBekIsS0FBSztnQkFDVSxJQUFJO3NCQUFuQixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsU0FBUztzQkFBeEIsS0FBSztnQkFDYyx1QkFBdUI7c0JBQTFDLEtBQUs7Z0JBYVcsU0FBUztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZpbHRlcixcbiAgbWFwLFxuICBPYnNlcnZhYmxlLFxuICBTdWJzY3JpcHRpb24sXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGFzaGJvYXJkSXRlbSwgV2lkZ2V0RGF0YVNvdXJjZSwgV2lkZ2V0TW9kYWxUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtMaXN0SXRlbSwgTm90aWZpY2F0aW9uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtET0NVTUVOVH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7RGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rhc2hib2FyZC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtDQVJCT05fQ09OU1RBTlRTfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7XG4gIENvbmZpZ3VyYXRpb25PdXRwdXQsXG4gIERhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24sXG4gIERpc3BsYXlUeXBlU3BlY2lmaWNhdGlvbixcbiAgV2lkZ2V0U2VydmljZSxcbiAgV2lkZ2V0VHJhbnNsYXRpb25TZXJ2aWNlLFxufSBmcm9tICdAdmFsdGltby9kYXNoYm9hcmQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLXdpZGdldC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi93aWRnZXQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93aWRnZXQtbW9kYWwuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbTm90aWZpY2F0aW9uU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIFdpZGdldE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd01vZGFsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgcHVibGljIHR5cGU6IFdpZGdldE1vZGFsVHlwZTtcbiAgQElucHV0KCkgcHVibGljIGRhc2hib2FyZDogRGFzaGJvYXJkSXRlbTtcbiAgQElucHV0KCkgcHVibGljIHdpZGdldEtleSE6IHN0cmluZztcbiAgQElucHV0KCkgcHVibGljIHNldCBlZGl0V2lkZ2V0Q29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uKSB7XG4gICAgaWYgKGNvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHRoaXMudGl0bGUuc2V0VmFsdWUoY29uZmlndXJhdGlvbi50aXRsZSk7XG4gICAgICB0aGlzLnVybC5zZXRWYWx1ZShjb25maWd1cmF0aW9uLnVybCk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2VTZWxlY3RlZCh7aXRlbToge2tleTogY29uZmlndXJhdGlvbi5kYXRhU291cmNlS2V5fX0gYXMgYW55KTtcbiAgICAgIHRoaXMuZGlzcGxheVR5cGVTZWxlY3RlZCh7aXRlbToge2tleTogY29uZmlndXJhdGlvbi5kaXNwbGF5VHlwZX19IGFzIGFueSk7XG4gICAgICB0aGlzLmRhdGFTb3VyY2VQcmVmaWxsQ29uZmlnJC5uZXh0KGNvbmZpZ3VyYXRpb24uZGF0YVNvdXJjZVByb3BlcnRpZXMpO1xuICAgICAgdGhpcy5kaXNwbGF5VHlwZVByZWZpbGxDb25maWckLm5leHQoY29uZmlndXJhdGlvbi5kaXNwbGF5VHlwZVByb3BlcnRpZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmRhdGFTb3VyY2VQcmVmaWxsQ29uZmlnJC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5kaXNwbGF5VHlwZVByZWZpbGxDb25maWckLm5leHQobnVsbCk7XG4gICAgfVxuICB9XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2F2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxDb25maWd1cmF0aW9uT3V0cHV0PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBmb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBkYXRhU291cmNlOiB0aGlzLmZiLmNvbnRyb2wobnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBkaXNwbGF5VHlwZTogdGhpcy5mYi5jb250cm9sKG51bGwsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgdXJsOiB0aGlzLmZiLmNvbnRyb2woJycpLFxuICB9KTtcblxuICBwdWJsaWMgcmVhZG9ubHkgb3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkRGF0YVNvdXJjZUtleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWREaXNwbGF5VHlwZUtleSQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHB1YmxpYyByZWFkb25seSBkYXRhU291cmNlSXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLmdldERhdGFTb3VyY2VzKCksXG4gICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2VLZXkkLFxuICAgIHRoaXMud2lkZ2V0U2VydmljZS5zdXBwb3J0ZWREYXRhU291cmNlcyQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gIF0pLnBpcGUoXG4gICAgZmlsdGVyKChbZGF0YVNvdXJjZXNdKSA9PiAhIWRhdGFTb3VyY2VzKSxcbiAgICB0YXAoKFtkYXRhU291cmNlcywgc2VsZWN0ZWREYXRhU291cmNlS2V5XSkgPT4ge1xuICAgICAgaWYgKHNlbGVjdGVkRGF0YVNvdXJjZUtleSkge1xuICAgICAgICB0aGlzLnNldENvbXBhdGlibGVEaXNwbGF5VHlwZXMoZGF0YVNvdXJjZXMsIHNlbGVjdGVkRGF0YVNvdXJjZUtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlc2V0Q29tcGF0aWJsZURpc3BsYXlUeXBlcygpO1xuICAgICAgfVxuICAgIH0pLFxuICAgIG1hcCgoW2RhdGFTb3VyY2VzLCBzZWxlY3RlZERhdGFTb3VyY2VLZXksIHN1cHBvcnRlZERhdGFTb3VyY2VzXSkgPT5cbiAgICAgIGRhdGFTb3VyY2VzXG4gICAgICAgIC5maWx0ZXIoZGF0YVNvdXJjZSA9PlxuICAgICAgICAgIHN1cHBvcnRlZERhdGFTb3VyY2VzLmZpbmQoXG4gICAgICAgICAgICBzdXBwb3J0ZWREYXRhU291cmNlID0+IHN1cHBvcnRlZERhdGFTb3VyY2UuZGF0YVNvdXJjZUtleSA9PT0gZGF0YVNvdXJjZS5rZXlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgLm1hcChkYXRhU291cmNlID0+ICh7XG4gICAgICAgICAgY29udGVudDogdGhpcy53aWRnZXRUcmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudCgndGl0bGUnLCBkYXRhU291cmNlLmtleSksXG4gICAgICAgICAgc2VsZWN0ZWQ6IHNlbGVjdGVkRGF0YVNvdXJjZUtleSA9PT0gZGF0YVNvdXJjZS5rZXksXG4gICAgICAgICAga2V5OiBkYXRhU291cmNlLmtleSxcbiAgICAgICAgfSkpXG4gICAgKVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBkYXRhU291cmNlUHJlZmlsbENvbmZpZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG9iamVjdCB8IG51bGw+KG51bGwpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVR5cGVQcmVmaWxsQ29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8b2JqZWN0IHwgbnVsbD4obnVsbCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfY29tcGF0aWJsZURpc3BsYXlUeXBlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEFycmF5PERpc3BsYXlUeXBlU3BlY2lmaWNhdGlvbj4+KFxuICAgIFtdXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlUeXBlSXRlbXMkOiBPYnNlcnZhYmxlPEFycmF5PExpc3RJdGVtPj4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9jb21wYXRpYmxlRGlzcGxheVR5cGVzJCxcbiAgICB0aGlzLnNlbGVjdGVkRGlzcGxheVR5cGVLZXkkLFxuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5zdHJlYW0oJ2tleScpLFxuICBdKS5waXBlKFxuICAgIG1hcCgoW2NvbXBhdGlibGVEaXNwbGF5VHlwZXMsIHNlbGVjdGVkRGlzcGxheVR5cGVLZXldKSA9PlxuICAgICAgY29tcGF0aWJsZURpc3BsYXlUeXBlcy5tYXAoZGlzcGxheVR5cGUgPT4gKHtcbiAgICAgICAgY29udGVudDogdGhpcy53aWRnZXRUcmFuc2xhdGlvblNlcnZpY2UuaW5zdGFudCgndGl0bGUnLCBkaXNwbGF5VHlwZS5kaXNwbGF5VHlwZUtleSksXG4gICAgICAgIHNlbGVjdGVkOiBkaXNwbGF5VHlwZS5kaXNwbGF5VHlwZUtleSA9PT0gc2VsZWN0ZWREaXNwbGF5VHlwZUtleSxcbiAgICAgICAga2V5OiBkaXNwbGF5VHlwZS5kaXNwbGF5VHlwZUtleSxcbiAgICAgIH0pKVxuICAgIClcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVR5cGVEcm9wZG93bkRpc2FibGVkJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX2NvbXBhdGlibGVEaXNwbGF5VHlwZXMkLFxuICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlS2V5JCxcbiAgXSkucGlwZShcbiAgICBtYXAoXG4gICAgICAoW2NvbXBhdGlibGVEaXNwbGF5VHlwZXMsIHNlbGVjdGVkRGF0YVNvdXJjZUtleV0pID0+XG4gICAgICAgIGNvbXBhdGlibGVEaXNwbGF5VHlwZXM/Lmxlbmd0aCA9PT0gMCB8fCAhc2VsZWN0ZWREYXRhU291cmNlS2V5XG4gICAgKSxcbiAgICB0YXAoZGlzcGxheVR5cGVEcm9wZG93bkRpc2FibGVkID0+IHtcbiAgICAgIGlmIChkaXNwbGF5VHlwZURyb3Bkb3duRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5VHlwZT8uZGlzYWJsZSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNwbGF5VHlwZT8uZW5hYmxlKCk7XG4gICAgICB9XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxDb25maWd1cmF0aW9uT3V0cHV0Pih7XG4gICAgdmFsaWQ6IGZhbHNlLFxuICAgIGRhdGE6IHt9LFxuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENvbmZpZ3VyYXRpb25PdXRwdXQ+KHtcbiAgICB2YWxpZDogZmFsc2UsXG4gICAgZGF0YToge30sXG4gIH0pO1xuXG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIF9vcGVuU3Vic2NyaXB0aW9uITogU3Vic2NyaXB0aW9uO1xuXG4gIHB1YmxpYyBnZXQgdGl0bGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3RpdGxlJyk7XG4gIH1cbiAgcHVibGljIGdldCBrZXkoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2tleScpO1xuICB9XG4gIHB1YmxpYyBnZXQgZGF0YVNvdXJjZSgpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtLmdldCgnZGF0YVNvdXJjZScpO1xuICB9XG4gIHB1YmxpYyBnZXQgZGlzcGxheVR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ2Rpc3BsYXlUeXBlJyk7XG4gIH1cbiAgcHVibGljIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybS5nZXQoJ3VybCcpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbm90aWZpY2F0aW9uU2VydmljZTogTm90aWZpY2F0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlOiBEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpZGdldFNlcnZpY2U6IFdpZGdldFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aWRnZXRUcmFuc2xhdGlvblNlcnZpY2U6IFdpZGdldFRyYW5zbGF0aW9uU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk9wZW5TdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuJC5uZXh0KGZhbHNlKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5lbmFibGUoKTtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgdGhpcy5zZWxlY3RlZERhdGFTb3VyY2VLZXkkLm5leHQoJycpO1xuICAgICAgdGhpcy5zZWxlY3RlZERpc3BsYXlUeXBlS2V5JC5uZXh0KCcnKTtcbiAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICB9XG5cbiAgcHVibGljIHNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRhU291cmNlS2V5JCxcbiAgICAgIHRoaXMuc2VsZWN0ZWREaXNwbGF5VHlwZUtleSQsXG4gICAgICB0aGlzLmRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbiQsXG4gICAgICB0aGlzLmRhdGFTb3VyY2VDb25maWd1cmF0aW9uJCxcbiAgICBdKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcChcbiAgICAgICAgICAoW1xuICAgICAgICAgICAgc2VsZWN0ZWREYXRhU291cmNlS2V5LFxuICAgICAgICAgICAgc2VsZWN0ZWREaXNwbGF5VHlwZUtleSxcbiAgICAgICAgICAgIGRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgIGRhdGFTb3VyY2VDb25maWd1cmF0aW9uLFxuICAgICAgICAgIF0pID0+ICh7XG4gICAgICAgICAgICB0aXRsZTogdGhpcy50aXRsZS52YWx1ZSxcbiAgICAgICAgICAgIGRpc3BsYXlUeXBlOiBzZWxlY3RlZERpc3BsYXlUeXBlS2V5LFxuICAgICAgICAgICAgZGF0YVNvdXJjZUtleTogc2VsZWN0ZWREYXRhU291cmNlS2V5LFxuICAgICAgICAgICAgZGF0YVNvdXJjZVByb3BlcnRpZXM6IHsuLi5kYXRhU291cmNlQ29uZmlndXJhdGlvbi5kYXRhfSxcbiAgICAgICAgICAgIGRpc3BsYXlUeXBlUHJvcGVydGllczogey4uLmRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbi5kYXRhfSxcbiAgICAgICAgICAgIHVybDogdGhpcy51cmwudmFsdWUsXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgICAgc3dpdGNoTWFwKHdpZGdldFVwZGF0ZU9iamVjdCA9PlxuICAgICAgICAgIHRoaXMudHlwZSA9PT0gJ2NyZWF0ZSdcbiAgICAgICAgICAgID8gdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZS5jcmVhdGVEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAgIHRoaXMuZGFzaGJvYXJkLmtleSxcbiAgICAgICAgICAgICAgICB3aWRnZXRVcGRhdGVPYmplY3RcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLnVwZGF0ZURhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICAgdGhpcy5kYXNoYm9hcmQua2V5LFxuICAgICAgICAgICAgICAgIHsuLi53aWRnZXRVcGRhdGVPYmplY3QsIGtleTogdGhpcy53aWRnZXRLZXl9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlRXZlbnQuZW1pdCgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZWxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlXG4gICAgICAuZGVsZXRlRGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbih0aGlzLmRhc2hib2FyZC5rZXksIHRoaXMud2lkZ2V0S2V5KVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zYXZlRXZlbnQuZW1pdCgpO1xuICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuZW5hYmxlKCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkYXRhU291cmNlU2VsZWN0ZWQoZGF0YVNvdXJjZTogTGlzdEl0ZW0pOiB2b2lkIHtcbiAgICBpZiAoIWRhdGFTb3VyY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdGVkRGF0YVNvdXJjZUtleSQubmV4dChkYXRhU291cmNlPy5pdGVtPy5rZXkpO1xuICAgIHRoaXMuZGF0YVNvdXJjZS5zZXRWYWx1ZShkYXRhU291cmNlPy5pdGVtPy5rZXkpO1xuICB9XG5cbiAgcHVibGljIGRpc3BsYXlUeXBlU2VsZWN0ZWQoZGlzcGxheVR5cGU6IExpc3RJdGVtKTogdm9pZCB7XG4gICAgaWYgKCFkaXNwbGF5VHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWREaXNwbGF5VHlwZUtleSQubmV4dChkaXNwbGF5VHlwZT8uaXRlbT8ua2V5KTtcbiAgICB0aGlzLmRpc3BsYXlUeXBlLnNldFZhbHVlKGRpc3BsYXlUeXBlPy5pdGVtPy5rZXkpO1xuICB9XG5cbiAgcHVibGljIGRhdGFTb3VyY2VDb25maWd1cmF0aW9uKGNvbmZpZ3VyYXRpb246IENvbmZpZ3VyYXRpb25PdXRwdXQpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGFTb3VyY2VDb25maWd1cmF0aW9uJC5uZXh0KGNvbmZpZ3VyYXRpb24pO1xuICB9XG5cbiAgcHVibGljIGRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbihjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uT3V0cHV0KTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5VHlwZUNvbmZpZ3VyYXRpb24kLm5leHQoY29uZmlndXJhdGlvbik7XG4gIH1cblxuICBwcml2YXRlIG9wZW5PcGVuU3Vic2NyaXB0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX29wZW5TdWJzY3JpcHRpb24gPSB0aGlzLnNob3dNb2RhbCQuc3Vic2NyaWJlKHNob3cgPT4ge1xuICAgICAgdGhpcy5vcGVuJC5uZXh0KHNob3cpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldENvbXBhdGlibGVEaXNwbGF5VHlwZXMoKTogdm9pZCB7XG4gICAgdGhpcy5fY29tcGF0aWJsZURpc3BsYXlUeXBlcyQubmV4dChbXSk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbXBhdGlibGVEaXNwbGF5VHlwZXMoXG4gICAgZGF0YVNvdXJjZXM6IEFycmF5PFdpZGdldERhdGFTb3VyY2U+LFxuICAgIHNlbGVjdGVkRGF0YVNvdXJjZUtleTogc3RyaW5nXG4gICk6IHZvaWQge1xuICAgIHRoaXMud2lkZ2V0U2VydmljZS5zdXBwb3J0ZWREaXNwbGF5VHlwZXMkLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHN1cHBvcnRlZERpc3BsYXlUeXBlcyA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZERhdGFTb3VyY2UgPSBkYXRhU291cmNlcy5maW5kKHNvdXJjZSA9PiBzb3VyY2Uua2V5ID09PSBzZWxlY3RlZERhdGFTb3VyY2VLZXkpO1xuICAgICAgY29uc3QgYXZhaWxhYmxlRGF0YUZlYXR1cmVzID0gc2VsZWN0ZWREYXRhU291cmNlPy5kYXRhRmVhdHVyZXM7XG4gICAgICBjb25zdCBjb21wYXRpYmxlRGlzcGxheVR5cGVzID0gc3VwcG9ydGVkRGlzcGxheVR5cGVzLmZpbHRlcihkaXNwbGF5VHlwZSA9PiB7XG4gICAgICAgIGNvbnN0IHN1cHBvcnRlZERhdGFGZWF0dXJlcyA9IGRpc3BsYXlUeXBlLnJlcXVpcmVkRGF0YUZlYXR1cmVzLmZpbHRlcihcbiAgICAgICAgICByZXF1aXJlZERhdGFGZWF0dXJlID0+XG4gICAgICAgICAgICAhIWF2YWlsYWJsZURhdGFGZWF0dXJlcz8uc29tZShcbiAgICAgICAgICAgICAgYXZhaWxhYmxlRGF0YUZlYXR1cmUgPT5cbiAgICAgICAgICAgICAgICB0aGlzLnRyaW1BbmRUb1VwcGVyQ2FzZShhdmFpbGFibGVEYXRhRmVhdHVyZSkgPT09XG4gICAgICAgICAgICAgICAgdGhpcy50cmltQW5kVG9VcHBlckNhc2UocmVxdWlyZWREYXRhRmVhdHVyZSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHN1cHBvcnRlZERhdGFGZWF0dXJlcy5sZW5ndGggPT09IGRpc3BsYXlUeXBlLnJlcXVpcmVkRGF0YUZlYXR1cmVzLmxlbmd0aDtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9jb21wYXRpYmxlRGlzcGxheVR5cGVzJC5uZXh0KGNvbXBhdGlibGVEaXNwbGF5VHlwZXMpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkaXNhYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5mb3JtLmRpc2FibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICAgIHRoaXMuZm9ybS5lbmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJpbUFuZFRvVXBwZXJDYXNlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RleHR9YC50cmltKCkudG9VcHBlckNhc2UoKTtcbiAgfVxufVxuIiwiPCEtLVxuICB+IENvcHlyaWdodCAyMDE1LTIwMjQgUml0ZW5zZSBCViwgdGhlIE5ldGhlcmxhbmRzLlxuICB+XG4gIH4gTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gIH4geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICB+IFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICB+XG4gIH4gaHR0cHM6Ly9qb2ludXAuZWMuZXVyb3BhLmV1L2NvbGxlY3Rpb24vZXVwbC9ldXBsLXRleHQtZXVwbC0xMlxuICB+XG4gIH4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICB+IGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBiYXNpcyxcbiAgfiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgfiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gIH4gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gIC0tPlxuXG48bmctY29udGFpbmVyXG4gICpuZ0lmPVwie1xuICAgIGRpc2FibGVkOiBkaXNhYmxlZCQgfCBhc3luYyxcbiAgICBpc0NyZWF0ZTogdHlwZSA9PT0gJ2NyZWF0ZScsXG4gICAgaXNEZWxldGU6IHR5cGUgPT09ICdkZWxldGUnLFxuICAgIGlzRWRpdDogdHlwZSA9PT0gJ2VkaXQnLFxuICAgIG9wZW46IG9wZW4kIHwgYXN5bmMsXG4gIH0gYXMgdmFyc1wiXG4+XG4gIDxuZy1jb250YWluZXJcbiAgICAqbmdJZj1cIntcbiAgICAgIGNyZWF0ZTogdmFycy5pc0NyZWF0ZSAmJiAoJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5hZGQnIHwgdHJhbnNsYXRlKSxcbiAgICAgIGRlbGV0ZTogdmFycy5pc0RlbGV0ZSAmJiAoJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5kZWxldGUnIHwgdHJhbnNsYXRlKSxcbiAgICAgIGVkaXQ6IHZhcnMuaXNFZGl0ICYmICgnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmVkaXQnIHwgdHJhbnNsYXRlKSxcbiAgICB9IGFzIHRpdGxlc1wiXG4gID5cbiAgICA8Y2RzLW1vZGFsXG4gICAgICAqbmdJZj1cIntcbiAgICAgICAgdGl0bGU6IHRpdGxlcy5lZGl0IHx8IHRpdGxlcy5jcmVhdGUgfHwgdGl0bGVzLmRlbGV0ZSxcbiAgICAgIH0gYXMgdHJhbnNsYXRpb25zXCJcbiAgICAgIHZhbHRpbW9DZHNNb2RhbFxuICAgICAgW29wZW5dPVwidmFycy5vcGVuXCJcbiAgICAgIHNob3dGb290ZXI9XCJ0cnVlXCJcbiAgICAgIHNpemU9XCJtZFwiXG4gICAgICB0aXRsZT1cInt7IHRyYW5zbGF0aW9ucy50aXRsZSB9fVwiXG4gICAgICBjbGFzcz1cIndpZGdldC1tb2RhbFwiXG4gICAgPlxuICAgICAgPGNkcy1tb2RhbC1oZWFkZXIgW3Nob3dDbG9zZUJ1dHRvbl09XCJ0cnVlXCIgKGNsb3NlU2VsZWN0KT1cImNsb3NlTW9kYWwoKVwiPlxuICAgICAgICA8aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPlxuICAgICAgICAgIHt7IHRyYW5zbGF0aW9ucy50aXRsZSB9fVxuICAgICAgICA8L2gzPlxuICAgICAgPC9jZHMtbW9kYWwtaGVhZGVyPlxuXG4gICAgICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQgW2Nkc0xheWVyXT1cIjFcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZhcnMuaXNEZWxldGVcIj5cbiAgICAgICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmRlbGV0ZURlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fTwvbmctY29udGFpbmVyXG4gICAgICAgID5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFycy5pc0VkaXQgfHwgdmFycy5pc0NyZWF0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ3aWRnZXRGb3JtOyBjb250ZXh0OiB7dmFyczogdmFyc31cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDxjZHMtbW9kYWwtZm9vdGVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidmFycy5pc0VkaXQgfHwgdmFycy5pc0NyZWF0ZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlZGl0QnV0dG9uczsgY29udGV4dDoge3ZhcnM6IHZhcnN9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2YXJzLmlzRGVsZXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImRlbGV0ZUJ1dHRvbnM7IGNvbnRleHQ6IHt2YXJzOiB2YXJzfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvY2RzLW1vZGFsLWZvb3Rlcj5cbiAgICA8L2Nkcy1tb2RhbD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICN3aWRnZXRGb3JtIGxldC12YXJzPVwidmFyc1wiPlxuICA8Zm9ybVxuICAgICpuZ0lmPVwiXG4gICAgICBmb3JtICYmIHtcbiAgICAgICAgZGF0YVNvdXJjZUl0ZW1zOiBkYXRhU291cmNlSXRlbXMkIHwgYXN5bmMsXG4gICAgICAgIGRpc3BsYXlUeXBlRHJvcGRvd25EaXNhYmxlZDogZGlzcGxheVR5cGVEcm9wZG93bkRpc2FibGVkJCB8IGFzeW5jLFxuICAgICAgICBkaXNwbGF5VHlwZUl0ZW1zOiBkaXNwbGF5VHlwZUl0ZW1zJCB8IGFzeW5jLFxuICAgICAgICBzZWxlY3RlZERhdGFTb3VyY2VLZXk6IHNlbGVjdGVkRGF0YVNvdXJjZUtleSQgfCBhc3luYyxcbiAgICAgICAgc2VsZWN0ZWREaXNwbGF5VHlwZUtleTogc2VsZWN0ZWREaXNwbGF5VHlwZUtleSQgfCBhc3luYyxcbiAgICAgIH0gYXMgb2JzXG4gICAgXCJcbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgIGNsYXNzPVwiZGFzaGJvYXJkLW1vZGFsX19mb3JtXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtX19lbGVtZW50XCI+XG4gICAgICA8Y2RzLWxhYmVsXG4gICAgICAgIFtoZWxwZXJUZXh0XT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS50aXRsZUhlbHBlclRleHQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ludmFsaWRUZXh0XT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS50aXRsZUhlbHBlclRleHQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ludmFsaWRdPVwidGl0bGUuZGlydHkgJiYgdGl0bGUuaW52YWxpZFwiXG4gICAgICA+XG4gICAgICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS50aXRsZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cInRpdGxlLmRpcnR5ICYmIHRpdGxlLmludmFsaWRcIlxuICAgICAgICAgIFthdHRyLm1vZGFsLXByaW1hcnktZm9jdXNdPVwidHJ1ZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Nkcy1sYWJlbD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtX19lbGVtZW50XCIgKm5nSWY9XCJvYnMuZGF0YVNvdXJjZUl0ZW1zXCI+XG4gICAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICAgIFthcHBlbmRJbmxpbmVdPVwidHJ1ZVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRhdGFTb3VyY2VcIlxuICAgICAgICBbaGVscGVyVGV4dF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0uZGF0YVNvdXJjZUhlbHBlclRleHQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ludmFsaWRUZXh0XT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS5kYXRlU291cmNlSGVscGVyVGV4dCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaW52YWxpZF09XCJkYXRhU291cmNlLmRpcnR5ICYmIGRhdGFTb3VyY2UuaW52YWxpZFwiXG4gICAgICAgIFtsYWJlbF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0uZGF0YVNvdXJjZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwiZGF0YVNvdXJjZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8Y2RzLWRyb3Bkb3duLWxpc3QgW2l0ZW1zXT1cIm9icy5kYXRhU291cmNlSXRlbXNcIiB0eXBlPVwibXVsdGlcIj48L2Nkcy1kcm9wZG93bi1saXN0PlxuICAgICAgPC9jZHMtZHJvcGRvd24+XG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby13aWRnZXQtY29uZmlndXJhdGlvbi1jb250YWluZXJcbiAgICAgICpuZ0lmPVwib2JzLnNlbGVjdGVkRGF0YVNvdXJjZUtleVwiXG4gICAgICBbZGF0YVNvdXJjZUtleV09XCJvYnMuc2VsZWN0ZWREYXRhU291cmNlS2V5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJ2YXJzLmRpc2FibGVkXCJcbiAgICAgIFtwcmVmaWxsQ29uZmlndXJhdGlvbl09XCJkYXRhU291cmNlUHJlZmlsbENvbmZpZyQgfCBhc3luY1wiXG4gICAgICAoY29uZmlndXJhdGlvbkV2ZW50KT1cImRhdGFTb3VyY2VDb25maWd1cmF0aW9uKCRldmVudClcIlxuICAgID48L3ZhbHRpbW8td2lkZ2V0LWNvbmZpZ3VyYXRpb24tY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm1fX2VsZW1lbnRcIiAqbmdJZj1cIm9icy5kaXNwbGF5VHlwZUl0ZW1zXCI+XG4gICAgICA8Y2RzLWRyb3Bkb3duXG4gICAgICAgIFthcHBlbmRJbmxpbmVdPVwidHJ1ZVwiXG4gICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlUeXBlXCJcbiAgICAgICAgW2hlbHBlclRleHRdPVwiJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLmRpc3BsYXlUeXBlSGVscGVyVGV4dCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaW52YWxpZF09XCJkaXNwbGF5VHlwZS5kaXJ0eSAmJiBkaXNwbGF5VHlwZS5pbnZhbGlkXCJcbiAgICAgICAgW2ludmFsaWRUZXh0XT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS5kaXNwbGF5VHlwZUhlbHBlclRleHQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2xhYmVsXT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS5kaXNwbGF5VHlwZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAoc2VsZWN0ZWQpPVwiZGlzcGxheVR5cGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGNkcy1kcm9wZG93bi1saXN0IFtpdGVtc109XCJvYnMuZGlzcGxheVR5cGVJdGVtc1wiIHR5cGU9XCJtdWx0aVwiPjwvY2RzLWRyb3Bkb3duLWxpc3Q+XG4gICAgICA8L2Nkcy1kcm9wZG93bj5cbiAgICA8L2Rpdj5cblxuICAgIDx2YWx0aW1vLXdpZGdldC1jb25maWd1cmF0aW9uLWNvbnRhaW5lclxuICAgICAgKm5nSWY9XCJvYnMuc2VsZWN0ZWREaXNwbGF5VHlwZUtleVwiXG4gICAgICBbZGlzYWJsZWRdPVwidmFycy5kaXNhYmxlZFwiXG4gICAgICBbZGlzcGxheVR5cGVLZXldPVwib2JzLnNlbGVjdGVkRGlzcGxheVR5cGVLZXlcIlxuICAgICAgW3ByZWZpbGxDb25maWd1cmF0aW9uXT1cImRpc3BsYXlUeXBlUHJlZmlsbENvbmZpZyQgfCBhc3luY1wiXG4gICAgICAoY29uZmlndXJhdGlvbkV2ZW50KT1cImRpc3BsYXlUeXBlQ29uZmlndXJhdGlvbigkZXZlbnQpXCJcbiAgICA+PC92YWx0aW1vLXdpZGdldC1jb25maWd1cmF0aW9uLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtX19lbGVtZW50XCI+XG4gICAgICA8Y2RzLWxhYmVsXG4gICAgICAgIFtoZWxwZXJUZXh0XT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS51cmxIZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpbnZhbGlkVGV4dF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0udXJsSGVscGVyVGV4dCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaW52YWxpZF09XCJ1cmwuZGlydHkgJiYgdXJsLmludmFsaWRcIlxuICAgICAgPlxuICAgICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0udXJsJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxpbnB1dCBjZHNUZXh0IGZvcm1Db250cm9sTmFtZT1cInVybFwiIFtpbnZhbGlkXT1cInVybC5kaXJ0eSAmJiB1cmwuaW52YWxpZFwiIC8+XG4gICAgICA8L2Nkcy1sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlZGl0QnV0dG9ucyBsZXQtdmFycz1cInZhcnNcIj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ0lmPVwie1xuICAgICAgZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb246IGRhdGFTb3VyY2VDb25maWd1cmF0aW9uJCB8IGFzeW5jLFxuICAgICAgZGlzcGxheVR5cGVDb25maWd1cmF0aW9uOiBkaXNwbGF5VHlwZUNvbmZpZ3VyYXRpb24kIHwgYXN5bmMsXG4gICAgfSBhcyBvYnNcIlxuICA+XG4gICAgPGJ1dHRvbiBjZHNCdXR0b249XCJnaG9zdFwiIFtkaXNhYmxlZF09XCJ2YXJzLmRpc2FibGVkXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPlxuICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uXG4gICAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJcbiAgICAgICAgZm9ybS5pbnZhbGlkIHx8XG4gICAgICAgICFvYnMuZGF0YVNvdXJjZUNvbmZpZ3VyYXRpb24udmFsaWQgfHxcbiAgICAgICAgIW9icy5kaXNwbGF5VHlwZUNvbmZpZ3VyYXRpb24udmFsaWQgfHxcbiAgICAgICAgdmFycy5kaXNhYmxlZFxuICAgICAgXCJcbiAgICAgIChjbGljayk9XCJzYXZlKClcIlxuICAgID5cbiAgICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuc2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlbGV0ZUJ1dHRvbnMgbGV0LXZhcnM9XCJ2YXJzXCI+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCIgW2Rpc2FibGVkXT1cInZhcnMuZGlzYWJsZWRcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+XG4gICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b24gY2RzQnV0dG9uPVwiZGFuZ2VyXCIgW2Rpc2FibGVkXT1cInZhcnMuZGlzYWJsZWRcIiAoY2xpY2spPVwiZGVsZXRlKClcIj5cbiAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmRlbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { NgModule } from '@angular/core';
|
|
17
|
-
import { RouterModule } from '@angular/router';
|
|
18
|
-
import { AuthGuardService } from '@valtimo/security';
|
|
19
|
-
import { ROLE_ADMIN } from '@valtimo/config';
|
|
20
|
-
import { DashboardManagementComponent } from './components/dashboard-management/dashboard-management.component';
|
|
21
|
-
import { DashboardDetailsComponent } from './components/dashboard-details/dashboard-details.component';
|
|
22
|
-
import * as i0 from "@angular/core";
|
|
23
|
-
import * as i1 from "@angular/router";
|
|
24
|
-
const routes = [
|
|
25
|
-
{
|
|
26
|
-
path: 'dashboard-management',
|
|
27
|
-
component: DashboardManagementComponent,
|
|
28
|
-
canActivate: [AuthGuardService],
|
|
29
|
-
data: { title: 'Dashboard configuration', roles: [ROLE_ADMIN] },
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
path: 'dashboard-management/:id',
|
|
33
|
-
component: DashboardDetailsComponent,
|
|
34
|
-
canActivate: [AuthGuardService],
|
|
35
|
-
data: {
|
|
36
|
-
title: 'Dashboard details',
|
|
37
|
-
roles: [ROLE_ADMIN],
|
|
38
|
-
customPageTitle: true,
|
|
39
|
-
customPageSubtitle: true,
|
|
40
|
-
},
|
|
41
|
-
},
|
|
42
|
-
];
|
|
43
|
-
export class DashboardManagementRoutingModule {
|
|
44
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardManagementRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
45
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: DashboardManagementRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] }); }
|
|
46
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardManagementRoutingModule, imports: [RouterModule.forRoot(routes), RouterModule] }); }
|
|
47
|
-
}
|
|
48
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardManagementRoutingModule, decorators: [{
|
|
49
|
-
type: NgModule,
|
|
50
|
-
args: [{
|
|
51
|
-
imports: [RouterModule.forRoot(routes)],
|
|
52
|
-
exports: [RouterModule],
|
|
53
|
-
declarations: [],
|
|
54
|
-
}]
|
|
55
|
-
}] });
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvZGFzaGJvYXJkLW1hbmFnZW1lbnQtcm91dGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQVMsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFDLDRCQUE0QixFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDOUcsT0FBTyxFQUFDLHlCQUF5QixFQUFDLE1BQU0sNERBQTRELENBQUM7OztBQUVyRyxNQUFNLE1BQU0sR0FBVztJQUNyQjtRQUNFLElBQUksRUFBRSxzQkFBc0I7UUFDNUIsU0FBUyxFQUFFLDRCQUE0QjtRQUN2QyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQixJQUFJLEVBQUUsRUFBQyxLQUFLLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLEVBQUM7S0FDOUQ7SUFDRDtRQUNFLElBQUksRUFBRSwwQkFBMEI7UUFDaEMsU0FBUyxFQUFFLHlCQUF5QjtRQUNwQyxXQUFXLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMvQixJQUFJLEVBQUU7WUFDSixLQUFLLEVBQUUsbUJBQW1CO1lBQzFCLEtBQUssRUFBRSxDQUFDLFVBQVUsQ0FBQztZQUNuQixlQUFlLEVBQUUsSUFBSTtZQUNyQixrQkFBa0IsRUFBRSxJQUFJO1NBQ3pCO0tBQ0Y7Q0FDRixDQUFDO0FBT0YsTUFBTSxPQUFPLGdDQUFnQzsrR0FBaEMsZ0NBQWdDO2dIQUFoQyxnQ0FBZ0Msd0NBSGpDLFlBQVk7Z0hBR1gsZ0NBQWdDLFlBSmpDLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQzVCLFlBQVk7OzRGQUdYLGdDQUFnQztrQkFMNUMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7b0JBQ3ZCLFlBQVksRUFBRSxFQUFFO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtSb3V0ZXJNb2R1bGUsIFJvdXRlc30gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QXV0aEd1YXJkU2VydmljZX0gZnJvbSAnQHZhbHRpbW8vc2VjdXJpdHknO1xuaW1wb3J0IHtST0xFX0FETUlOfSBmcm9tICdAdmFsdGltby9jb25maWcnO1xuaW1wb3J0IHtEYXNoYm9hcmRNYW5hZ2VtZW50Q29tcG9uZW50fSBmcm9tICcuL2NvbXBvbmVudHMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkLW1hbmFnZW1lbnQuY29tcG9uZW50JztcbmltcG9ydCB7RGFzaGJvYXJkRGV0YWlsc0NvbXBvbmVudH0gZnJvbSAnLi9jb21wb25lbnRzL2Rhc2hib2FyZC1kZXRhaWxzL2Rhc2hib2FyZC1kZXRhaWxzLmNvbXBvbmVudCc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogJ2Rhc2hib2FyZC1tYW5hZ2VtZW50JyxcbiAgICBjb21wb25lbnQ6IERhc2hib2FyZE1hbmFnZW1lbnRDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmRTZXJ2aWNlXSxcbiAgICBkYXRhOiB7dGl0bGU6ICdEYXNoYm9hcmQgY29uZmlndXJhdGlvbicsIHJvbGVzOiBbUk9MRV9BRE1JTl19LFxuICB9LFxuICB7XG4gICAgcGF0aDogJ2Rhc2hib2FyZC1tYW5hZ2VtZW50LzppZCcsXG4gICAgY29tcG9uZW50OiBEYXNoYm9hcmREZXRhaWxzQ29tcG9uZW50LFxuICAgIGNhbkFjdGl2YXRlOiBbQXV0aEd1YXJkU2VydmljZV0sXG4gICAgZGF0YToge1xuICAgICAgdGl0bGU6ICdEYXNoYm9hcmQgZGV0YWlscycsXG4gICAgICByb2xlczogW1JPTEVfQURNSU5dLFxuICAgICAgY3VzdG9tUGFnZVRpdGxlOiB0cnVlLFxuICAgICAgY3VzdG9tUGFnZVN1YnRpdGxlOiB0cnVlLFxuICAgIH0sXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvclJvb3Qocm91dGVzKV0sXG4gIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmRNYW5hZ2VtZW50Um91dGluZ01vZHVsZSB7fVxuIl19
|