@valtimo/dashboard-management 10.8.0 → 11.1.0
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/esm2022/lib/components/dashboard-details/dashboard-details.component.mjs +153 -0
- package/esm2022/lib/components/dashboard-management/dashboard-management.component.mjs +119 -0
- package/esm2022/lib/components/edit-dashboard-modal/edit-dashboard-modal.mjs +99 -0
- package/esm2022/lib/components/widget-configuration-container/widget-configuration-container.component.mjs +137 -0
- package/esm2022/lib/components/widget-modal/widget-modal.component.mjs +250 -0
- package/{esm2020 → esm2022}/lib/dashboard-management-routing.module.mjs +5 -5
- package/esm2022/lib/dashboard-management.module.mjs +100 -0
- package/esm2022/lib/models/dashboard-item.type.mjs +17 -0
- package/esm2022/lib/models/index.mjs +18 -0
- package/esm2022/lib/models/widget.model.mjs +17 -0
- package/esm2022/lib/services/dashboard-management.service.mjs +88 -0
- package/{esm2020 → esm2022}/public-api.mjs +2 -2
- package/fesm2022/valtimo-dashboard-management.mjs +969 -0
- package/fesm2022/valtimo-dashboard-management.mjs.map +1 -0
- package/lib/components/dashboard-details/dashboard-details.component.d.ts +4 -4
- package/lib/components/dashboard-management/dashboard-management.component.d.ts +4 -4
- package/lib/components/edit-dashboard-modal/edit-dashboard-modal.d.ts +1 -1
- package/lib/components/widget-configuration-container/widget-configuration-container.component.d.ts +1 -1
- package/lib/components/widget-modal/widget-modal.component.d.ts +1 -1
- package/lib/dashboard-management.module.d.ts +4 -4
- package/lib/models/widget.model.d.ts +1 -1
- package/package.json +8 -14
- package/esm2020/lib/components/dashboard-details/dashboard-details.component.mjs +0 -155
- package/esm2020/lib/components/dashboard-management/dashboard-management.component.mjs +0 -106
- package/esm2020/lib/components/edit-dashboard-modal/edit-dashboard-modal.mjs +0 -99
- package/esm2020/lib/components/widget-configuration-container/widget-configuration-container.component.mjs +0 -137
- package/esm2020/lib/components/widget-modal/widget-modal.component.mjs +0 -235
- package/esm2020/lib/dashboard-management.module.mjs +0 -100
- package/esm2020/lib/models/dashboard-item.type.mjs +0 -2
- package/esm2020/lib/models/index.mjs +0 -3
- package/esm2020/lib/models/widget.model.mjs +0 -2
- package/esm2020/lib/services/dashboard-management.service.mjs +0 -88
- package/fesm2015/valtimo-dashboard-management.mjs +0 -949
- package/fesm2015/valtimo-dashboard-management.mjs.map +0 -1
- package/fesm2020/valtimo-dashboard-management.mjs +0 -940
- package/fesm2020/valtimo-dashboard-management.mjs.map +0 -1
- /package/{esm2020 → esm2022}/valtimo-dashboard-management.mjs +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import { Component, ViewChild, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { ArrowDown16, ArrowUp16, Edit16 } from '@carbon/icons';
|
|
3
|
+
import { ViewType } from '@valtimo/components';
|
|
4
|
+
import { BehaviorSubject, combineLatest, map, switchMap, tap } from 'rxjs';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../services/dashboard-management.service";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
import * as i3 from "carbon-components-angular";
|
|
9
|
+
import * as i4 from "@valtimo/components";
|
|
10
|
+
import * as i5 from "@angular/router";
|
|
11
|
+
import * as i6 from "@ngx-translate/core";
|
|
12
|
+
import * as i7 from "../widget-modal/widget-modal.component";
|
|
13
|
+
import * as i8 from "../edit-dashboard-modal/edit-dashboard-modal";
|
|
14
|
+
export class DashboardDetailsComponent {
|
|
15
|
+
constructor(dashboardManagementService, datePipe, iconService, pageTitleService, route, translateService) {
|
|
16
|
+
this.dashboardManagementService = dashboardManagementService;
|
|
17
|
+
this.datePipe = datePipe;
|
|
18
|
+
this.iconService = iconService;
|
|
19
|
+
this.pageTitleService = pageTitleService;
|
|
20
|
+
this.route = route;
|
|
21
|
+
this.translateService = translateService;
|
|
22
|
+
this.modalType = 'create';
|
|
23
|
+
this._dashboardKey$ = this.route.params.pipe(map(params => params.id));
|
|
24
|
+
this._refreshDashboardSubject$ = new BehaviorSubject(null);
|
|
25
|
+
this.currentDashboard$ = combineLatest([
|
|
26
|
+
this._dashboardKey$,
|
|
27
|
+
this.translateService.stream('key'),
|
|
28
|
+
this._refreshDashboardSubject$,
|
|
29
|
+
]).pipe(switchMap(([dashboardKey]) => this.dashboardManagementService.getDashboard(dashboardKey)), tap((currentDashboard) => {
|
|
30
|
+
if (!currentDashboard) {
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
this.pageTitleService.setCustomPageTitle(currentDashboard.title);
|
|
34
|
+
this.pageTitleService.setCustomPageSubtitle(this.translateService.instant('dashboardManagement.widgets.metadata', {
|
|
35
|
+
createdBy: currentDashboard.createdBy,
|
|
36
|
+
createdOn: this.datePipe.transform(currentDashboard.createdOn ?? '', 'd/M/yy, H:mm'),
|
|
37
|
+
key: currentDashboard.key,
|
|
38
|
+
}));
|
|
39
|
+
}));
|
|
40
|
+
this.lastItemIndex$ = new BehaviorSubject(0);
|
|
41
|
+
this.loading$ = new BehaviorSubject(true);
|
|
42
|
+
this._refreshWidgetsSubject$ = new BehaviorSubject(null);
|
|
43
|
+
this._widgetData = null;
|
|
44
|
+
this.widgetData$ = combineLatest([
|
|
45
|
+
this._dashboardKey$,
|
|
46
|
+
this._refreshWidgetsSubject$,
|
|
47
|
+
]).pipe(switchMap(([dashboardKey, refreshWidgets]) => {
|
|
48
|
+
this.loading$.next(true);
|
|
49
|
+
if (!this._widgetData || !refreshWidgets) {
|
|
50
|
+
return this.dashboardManagementService.getDashboardWidgetConfiguration(dashboardKey);
|
|
51
|
+
}
|
|
52
|
+
const { direction, index } = refreshWidgets;
|
|
53
|
+
return this.dashboardManagementService.updateDashboardWidgetConfigurations(dashboardKey, direction === 'UP'
|
|
54
|
+
? this.swapWidgets(this._widgetData, index - 1, index)
|
|
55
|
+
: this.swapWidgets(this._widgetData, index, index + 1));
|
|
56
|
+
}), tap((data) => {
|
|
57
|
+
this._widgetData = data;
|
|
58
|
+
this.lastItemIndex$.next(data.length - 1);
|
|
59
|
+
this.loading$.next(false);
|
|
60
|
+
}));
|
|
61
|
+
this.showModal$ = new BehaviorSubject(false);
|
|
62
|
+
this.showEditDashboardModal$ = new BehaviorSubject(false);
|
|
63
|
+
this.editWidgetConfiguration$ = new BehaviorSubject(null);
|
|
64
|
+
}
|
|
65
|
+
ngAfterViewInit() {
|
|
66
|
+
this.iconService.registerAll([ArrowDown16, ArrowUp16, Edit16]);
|
|
67
|
+
this.setFields();
|
|
68
|
+
}
|
|
69
|
+
addWidget() {
|
|
70
|
+
this.editWidgetConfiguration$.next(null);
|
|
71
|
+
this.modalType = 'create';
|
|
72
|
+
this.showModal();
|
|
73
|
+
}
|
|
74
|
+
editDashboard() {
|
|
75
|
+
this.showEditDashboardModal();
|
|
76
|
+
}
|
|
77
|
+
refreshWidgets() {
|
|
78
|
+
this._refreshWidgetsSubject$.next(null);
|
|
79
|
+
}
|
|
80
|
+
refreshDashboard() {
|
|
81
|
+
this._refreshDashboardSubject$.next(null);
|
|
82
|
+
}
|
|
83
|
+
onArrowDownClick(data) {
|
|
84
|
+
this._refreshWidgetsSubject$.next({ direction: 'DOWN', index: data.index });
|
|
85
|
+
}
|
|
86
|
+
onArrowUpClick(data) {
|
|
87
|
+
this._refreshWidgetsSubject$.next({ direction: 'UP', index: data.index });
|
|
88
|
+
}
|
|
89
|
+
setFields() {
|
|
90
|
+
this.fields = [
|
|
91
|
+
{
|
|
92
|
+
viewType: ViewType.TEXT,
|
|
93
|
+
key: 'title',
|
|
94
|
+
label: 'Name',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
viewType: ViewType.TEMPLATE,
|
|
98
|
+
template: this.moveButtonsTemplate,
|
|
99
|
+
className: 'dashboard-detail-table__actions',
|
|
100
|
+
key: '',
|
|
101
|
+
label: '',
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
viewType: ViewType.ACTION,
|
|
105
|
+
className: 'dashboard-detail-table__actions',
|
|
106
|
+
key: '',
|
|
107
|
+
label: '',
|
|
108
|
+
actions: [
|
|
109
|
+
{
|
|
110
|
+
label: 'Edit',
|
|
111
|
+
callback: this.editWidget.bind(this),
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
label: 'Delete',
|
|
115
|
+
callback: this.deleteWidget.bind(this),
|
|
116
|
+
type: 'danger',
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
];
|
|
121
|
+
}
|
|
122
|
+
editWidget(event) {
|
|
123
|
+
this.editWidgetConfiguration$.next({ ...event });
|
|
124
|
+
this.modalType = 'edit';
|
|
125
|
+
this.showModal();
|
|
126
|
+
}
|
|
127
|
+
deleteWidget(event) {
|
|
128
|
+
this.editWidgetConfiguration$.next({ ...event });
|
|
129
|
+
this.modalType = 'delete';
|
|
130
|
+
this.showModal();
|
|
131
|
+
}
|
|
132
|
+
showModal() {
|
|
133
|
+
this.showModal$.next(true);
|
|
134
|
+
}
|
|
135
|
+
showEditDashboardModal() {
|
|
136
|
+
this.showEditDashboardModal$.next(true);
|
|
137
|
+
}
|
|
138
|
+
swapWidgets(dashboardWidgets, index1, index2) {
|
|
139
|
+
const temp = [...dashboardWidgets];
|
|
140
|
+
temp[index1] = temp.splice(index2, 1, temp[index1])[0];
|
|
141
|
+
return temp;
|
|
142
|
+
}
|
|
143
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardDetailsComponent, deps: [{ token: i1.DashboardManagementService }, { token: i2.DatePipe }, { token: i3.IconService }, { token: i4.PageTitleService }, { token: i5.ActivatedRoute }, { token: i6.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
144
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DashboardDetailsComponent, selector: "ng-component", viewQueries: [{ propertyName: "moveButtonsTemplate", first: true, predicate: ["moveButtonsTemplate"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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 fields && {\n currentDashboard: currentDashboard$ | async,\n editWidgetConfiguration: editWidgetConfiguration$ | async,\n loading: loading$ | async,\n widgetData: widgetData$ | async\n } as obs\n \"\n>\n <div class=\"dashboard-detail-table\">\n <valtimo-carbon-list\n [items]=\"obs.widgetData\"\n [fields]=\"fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addWidgetButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n description=\"{{ 'dashboardManagement.widgets.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.widgets.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </div>\n\n <valtimo-widget-modal\n [dashboard]=\"obs.currentDashboard\"\n [editWidgetConfiguration]=\"obs.editWidgetConfiguration\"\n [showModal$]=\"showModal$\"\n [type]=\"modalType\"\n [widgetKey]=\"obs.editWidgetConfiguration?.key\"\n (saveEvent)=\"refreshWidgets()\"\n ></valtimo-widget-modal>\n\n <valtimo-edit-dashboard-modal\n [dashboard]=\"obs.currentDashboard\"\n [showModal$]=\"showEditDashboardModal$\"\n (saveEvent)=\"refreshDashboard()\"\n >\n </valtimo-edit-dashboard-modal>\n</ng-container>\n\n<ng-template #moveButtonsTemplate let-data=\"data\">\n <div class=\"move-buttons-container\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n (click)=\"onArrowUpClick(data)\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"(lastItemIndex$ | async) === data.index\"\n [iconOnly]=\"true\"\n (click)=\"onArrowDownClick(data)\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button cdsButton=\"tertiary\" size=\"md\" (click)=\"editDashboard()\">\n {{ 'dashboardManagement.widgets.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<ng-template #addWidgetButton>\n <button cdsButton=\"primary\" [disabled]=\"loading$ | async\" (click)=\"addWidget()\">\n {{ 'dashboardManagement.widgets.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.dashboard-detail-table .move-buttons-container{width:100%;justify-content:flex-end;display:flex;flex-direction:row;right:-1rem;position:relative}.dashboard-detail-table .move-buttons-container button:not(:last-child){margin-right:8px}.dashboard-detail-table__actions{width:1px}.dashboard-detail-table-no-results{display:flex;justify-content:space-around;padding:6.25rem 0;gap:4rem}.dashboard-detail-table-no-results__title{font-size:1.75rem}.dashboard-detail-table-no-results__content{display:flex;flex-direction:column;justify-content:space-around}\n"], dependencies: [{ kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.RenderInPageHeaderDirective, selector: "[renderInPageHeader]" }, { kind: "directive", type: i3.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i4.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "header", "initialSortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i4.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "component", type: i7.WidgetModalComponent, selector: "valtimo-widget-modal", inputs: ["showModal$", "type", "dashboard", "widgetKey", "editWidgetConfiguration"], outputs: ["saveEvent"] }, { kind: "component", type: i8.EditDashboardModalComponent, selector: "valtimo-edit-dashboard-modal", inputs: ["showModal$", "dashboard"], outputs: ["saveEvent"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
145
|
+
}
|
|
146
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardDetailsComponent, decorators: [{
|
|
147
|
+
type: Component,
|
|
148
|
+
args: [{ encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 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 fields && {\n currentDashboard: currentDashboard$ | async,\n editWidgetConfiguration: editWidgetConfiguration$ | async,\n loading: loading$ | async,\n widgetData: widgetData$ | async\n } as obs\n \"\n>\n <div class=\"dashboard-detail-table\">\n <valtimo-carbon-list\n [items]=\"obs.widgetData\"\n [fields]=\"fields\"\n [header]=\"false\"\n [loading]=\"obs.loading\"\n >\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addWidgetButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addWidgetButton\"\n description=\"{{ 'dashboardManagement.widgets.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.widgets.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n </div>\n\n <valtimo-widget-modal\n [dashboard]=\"obs.currentDashboard\"\n [editWidgetConfiguration]=\"obs.editWidgetConfiguration\"\n [showModal$]=\"showModal$\"\n [type]=\"modalType\"\n [widgetKey]=\"obs.editWidgetConfiguration?.key\"\n (saveEvent)=\"refreshWidgets()\"\n ></valtimo-widget-modal>\n\n <valtimo-edit-dashboard-modal\n [dashboard]=\"obs.currentDashboard\"\n [showModal$]=\"showEditDashboardModal$\"\n (saveEvent)=\"refreshDashboard()\"\n >\n </valtimo-edit-dashboard-modal>\n</ng-container>\n\n<ng-template #moveButtonsTemplate let-data=\"data\">\n <div class=\"move-buttons-container\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n (click)=\"onArrowUpClick(data)\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"(lastItemIndex$ | async) === data.index\"\n [iconOnly]=\"true\"\n (click)=\"onArrowDownClick(data)\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button cdsButton=\"tertiary\" size=\"md\" (click)=\"editDashboard()\">\n {{ 'dashboardManagement.widgets.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<ng-template #addWidgetButton>\n <button cdsButton=\"primary\" [disabled]=\"loading$ | async\" (click)=\"addWidget()\">\n {{ 'dashboardManagement.widgets.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.dashboard-detail-table .move-buttons-container{width:100%;justify-content:flex-end;display:flex;flex-direction:row;right:-1rem;position:relative}.dashboard-detail-table .move-buttons-container button:not(:last-child){margin-right:8px}.dashboard-detail-table__actions{width:1px}.dashboard-detail-table-no-results{display:flex;justify-content:space-around;padding:6.25rem 0;gap:4rem}.dashboard-detail-table-no-results__title{font-size:1.75rem}.dashboard-detail-table-no-results__content{display:flex;flex-direction:column;justify-content:space-around}\n"] }]
|
|
149
|
+
}], ctorParameters: function () { return [{ type: i1.DashboardManagementService }, { type: i2.DatePipe }, { type: i3.IconService }, { type: i4.PageTitleService }, { type: i5.ActivatedRoute }, { type: i6.TranslateService }]; }, propDecorators: { moveButtonsTemplate: [{
|
|
150
|
+
type: ViewChild,
|
|
151
|
+
args: ['moveButtonsTemplate']
|
|
152
|
+
}] } });
|
|
153
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLWRldGFpbHMvZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLWRldGFpbHMvZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE9BQU8sRUFBZ0IsU0FBUyxFQUFlLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVsRyxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFN0QsT0FBTyxFQUFDLFFBQVEsRUFBaUMsTUFBTSxxQkFBcUIsQ0FBQztBQUc3RSxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQWMsU0FBUyxFQUFFLEdBQUcsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7OztBQVNyRixNQUFNLE9BQU8seUJBQXlCO0lBdUVwQyxZQUNtQiwwQkFBc0QsRUFDdEQsUUFBa0IsRUFDbEIsV0FBd0IsRUFDeEIsZ0JBQWtDLEVBQ2xDLEtBQXFCLEVBQ3JCLGdCQUFrQztRQUxsQywrQkFBMEIsR0FBMUIsMEJBQTBCLENBQTRCO1FBQ3RELGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUNyQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENB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QztRQUN0RCxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLEVBQUMsR0FBRyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sV0FBVyxDQUNqQixnQkFBbUMsRUFDbkMsTUFBYyxFQUNkLE1BQWM7UUFFZCxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXZELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQzsrR0E5S1UseUJBQXlCO21HQUF6Qix5QkFBeUIsZ0xDakN0Qyx3d0dBcUdBOzs0RkRwRWEseUJBQXlCO2tCQUxyQyxTQUFTO29DQUdPLGlCQUFpQixDQUFDLElBQUk7NlBBR0gsbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QXJyb3dEb3duMTYsIEFycm93VXAxNiwgRWRpdDE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1ZpZXdUeXBlLCBQYWdlVGl0bGVTZXJ2aWNlLCBDb2x1bW5Db25maWd9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9ufSBmcm9tICdAdmFsdGltby9kYXNoYm9hcmQnO1xuaW1wb3J0IHtJY29uU2VydmljZX0gZnJvbSAnY2FyYm9uLWNvbXBvbmVudHMtYW5ndWxhcic7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgbWFwLCBPYnNlcnZhYmxlLCBzd2l0Y2hNYXAsIHRhcH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rhc2hib2FyZEl0ZW0sIERhc2hib2FyZFdpZGdldCwgV2lkZ2V0TW9kYWxUeXBlfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXNoYm9hcmQtZGV0YWlscy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBEYXNoYm9hcmREZXRhaWxzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBWaWV3Q2hpbGQoJ21vdmVCdXR0b25zVGVtcGxhdGUnKSBtb3ZlQnV0dG9uc1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIHB1YmxpYyBtb2RhbFR5cGU6IFdpZGdldE1vZGFsVHlwZSA9ICdjcmVhdGUnO1xuICBwdWJsaWMgZmllbGRzITogQ29sdW1uQ29uZmlnW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfZGFzaGJvYXJkS2V5JCA9IHRoaXMucm91dGUucGFyYW1zLnBpcGUobWFwKHBhcmFtcyA9PiBwYXJhbXMuaWQpKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVmcmVzaERhc2hib2FyZFN1YmplY3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudWxsPihudWxsKTtcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnREYXNoYm9hcmQkOiBPYnNlcnZhYmxlPERhc2hib2FyZEl0ZW0gfCB1bmRlZmluZWQ+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fZGFzaGJvYXJkS2V5JCxcbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKCdrZXknKSxcbiAgICB0aGlzLl9yZWZyZXNoRGFzaGJvYXJkU3ViamVjdCQsXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbZGFzaGJvYXJkS2V5XSkgPT4gdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZS5nZXREYXNoYm9hcmQoZGFzaGJvYXJkS2V5KSksXG4gICAgdGFwKChjdXJyZW50RGFzaGJvYXJkOiBEYXNoYm9hcmRJdGVtKSA9PiB7XG4gICAgICBpZiAoIWN1cnJlbnREYXNoYm9hcmQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBhZ2VUaXRsZVNlcnZpY2Uuc2V0Q3VzdG9tUGFnZVRpdGxlKGN1cnJlbnREYXNoYm9hcmQudGl0bGUpO1xuICAgICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLnNldEN1c3RvbVBhZ2VTdWJ0aXRsZShcbiAgICAgICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5tZXRhZGF0YScsIHtcbiAgICAgICAgICBjcmVhdGVkQnk6IGN1cnJlbnREYXNoYm9hcmQuY3JlYXRlZEJ5LFxuICAgICAgICAgIGNyZWF0ZWRPbjogdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oY3VycmVudERhc2hib2FyZC5jcmVhdGVkT24gPz8gJycsICdkL00veXksIEg6bW0nKSxcbiAgICAgICAgICBrZXk6IGN1cnJlbnREYXNoYm9hcmQua2V5LFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBsYXN0SXRlbUluZGV4JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvYWRpbmckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgX3JlZnJlc2hXaWRnZXRzU3ViamVjdCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHtcbiAgICBkaXJlY3Rpb246ICdVUCcgfCAnRE9XTic7XG4gICAgaW5kZXg6IG51bWJlcjtcbiAgfSB8IG51bGw+KG51bGwpO1xuXG4gIHByaXZhdGUgX3dpZGdldERhdGE6IERhc2hib2FyZFdpZGdldFtdIHwgbnVsbCA9IG51bGw7XG4gIHB1YmxpYyByZWFkb25seSB3aWRnZXREYXRhJDogT2JzZXJ2YWJsZTxEYXNoYm9hcmRXaWRnZXRbXT4gPSBjb21iaW5lTGF0ZXN0KFtcbiAgICB0aGlzLl9kYXNoYm9hcmRLZXkkLFxuICAgIHRoaXMuX3JlZnJlc2hXaWRnZXRzU3ViamVjdCQsXG4gIF0pLnBpcGUoXG4gICAgc3dpdGNoTWFwKChbZGFzaGJvYXJkS2V5LCByZWZyZXNoV2lkZ2V0c10pID0+IHtcbiAgICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICAgIGlmICghdGhpcy5fd2lkZ2V0RGF0YSB8fCAhcmVmcmVzaFdpZGdldHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuZ2V0RGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbihkYXNoYm9hcmRLZXkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7ZGlyZWN0aW9uLCBpbmRleH0gPSByZWZyZXNoV2lkZ2V0cztcblxuICAgICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UudXBkYXRlRGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbnMoXG4gICAgICAgIGRhc2hib2FyZEtleSxcbiAgICAgICAgZGlyZWN0aW9uID09PSAnVVAnXG4gICAgICAgICAgPyB0aGlzLnN3YXBXaWRnZXRzKHRoaXMuX3dpZGdldERhdGEsIGluZGV4IC0gMSwgaW5kZXgpXG4gICAgICAgICAgOiB0aGlzLnN3YXBXaWRnZXRzKHRoaXMuX3dpZGdldERhdGEsIGluZGV4LCBpbmRleCArIDEpXG4gICAgICApO1xuICAgIH0pLFxuICAgIHRhcCgoZGF0YTogRGFzaGJvYXJkV2lkZ2V0W10pID0+IHtcbiAgICAgIHRoaXMuX3dpZGdldERhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5sYXN0SXRlbUluZGV4JC5uZXh0KGRhdGEubGVuZ3RoIC0gMSk7XG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgIH0pXG4gICk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHNob3dNb2RhbCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dFZGl0RGFzaGJvYXJkTW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGVkaXRXaWRnZXRDb25maWd1cmF0aW9uJCA9XG4gICAgbmV3IEJlaGF2aW9yU3ViamVjdDxEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uIHwgbnVsbD4obnVsbCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZTogRGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXRlUGlwZTogRGF0ZVBpcGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpY29uU2VydmljZTogSWNvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBwYWdlVGl0bGVTZXJ2aWNlOiBQYWdlVGl0bGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyQWxsKFtBcnJvd0Rvd24xNiwgQXJyb3dVcDE2LCBFZGl0MTZdKTtcbiAgICB0aGlzLnNldEZpZWxkcygpO1xuICB9XG5cbiAgcHVibGljIGFkZFdpZGdldCgpOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRXaWRnZXRDb25maWd1cmF0aW9uJC5uZXh0KG51bGwpO1xuICAgIHRoaXMubW9kYWxUeXBlID0gJ2NyZWF0ZSc7XG4gICAgdGhpcy5zaG93TW9kYWwoKTtcbiAgfVxuXG4gIHB1YmxpYyBlZGl0RGFzaGJvYXJkKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0VkaXREYXNoYm9hcmRNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hXaWRnZXRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZnJlc2hXaWRnZXRzU3ViamVjdCQubmV4dChudWxsKTtcbiAgfVxuXG4gIHB1YmxpYyByZWZyZXNoRGFzaGJvYXJkKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlZnJlc2hEYXNoYm9hcmRTdWJqZWN0JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIG9uQXJyb3dEb3duQ2xpY2soZGF0YToge2l0ZW06IERhc2hib2FyZFdpZGdldDsgaW5kZXg6IG51bWJlcn0pOiB2b2lkIHtcbiAgICB0aGlzLl9yZWZyZXNoV2lkZ2V0c1N1YmplY3QkLm5leHQoe2RpcmVjdGlvbjogJ0RPV04nLCBpbmRleDogZGF0YS5pbmRleH0pO1xuICB9XG5cbiAgcHVibGljIG9uQXJyb3dVcENsaWNrKGRhdGE6IHtpdGVtOiBEYXNoYm9hcmRXaWRnZXQ7IGluZGV4OiBudW1iZXJ9KTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaFdpZGdldHNTdWJqZWN0JC5uZXh0KHtkaXJlY3Rpb246ICdVUCcsIGluZGV4OiBkYXRhLmluZGV4fSk7XG4gIH1cblxuICBwcml2YXRlIHNldEZpZWxkcygpOiB2b2lkIHtcbiAgICB0aGlzLmZpZWxkcyA9IFtcbiAgICAgIHtcbiAgICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgICAgIGtleTogJ3RpdGxlJyxcbiAgICAgICAgbGFiZWw6ICdOYW1lJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URU1QTEFURSxcbiAgICAgICAgdGVtcGxhdGU6IHRoaXMubW92ZUJ1dHRvbnNUZW1wbGF0ZSxcbiAgICAgICAgY2xhc3NOYW1lOiAnZGFzaGJvYXJkLWRldGFpbC10YWJsZV9fYWN0aW9ucycsXG4gICAgICAgIGtleTogJycsXG4gICAgICAgIGxhYmVsOiAnJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5BQ1RJT04sXG4gICAgICAgIGNsYXNzTmFtZTogJ2Rhc2hib2FyZC1kZXRhaWwtdGFibGVfX2FjdGlvbnMnLFxuICAgICAgICBrZXk6ICcnLFxuICAgICAgICBsYWJlbDogJycsXG4gICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogJ0VkaXQnLFxuICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMuZWRpdFdpZGdldC5iaW5kKHRoaXMpLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6ICdEZWxldGUnLFxuICAgICAgICAgICAgY2FsbGJhY2s6IHRoaXMuZGVsZXRlV2lkZ2V0LmJpbmQodGhpcyksXG4gICAgICAgICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBlZGl0V2lkZ2V0KGV2ZW50OiBEYXNoYm9hcmRXaWRnZXRDb25maWd1cmF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0V2lkZ2V0Q29uZmlndXJhdGlvbiQubmV4dCh7Li4uZXZlbnR9KTtcbiAgICB0aGlzLm1vZGFsVHlwZSA9ICdlZGl0JztcbiAgICB0aGlzLnNob3dNb2RhbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBkZWxldGVXaWRnZXQoZXZlbnQ6IERhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRXaWRnZXRDb25maWd1cmF0aW9uJC5uZXh0KHsuLi5ldmVudH0pO1xuICAgIHRoaXMubW9kYWxUeXBlID0gJ2RlbGV0ZSc7XG4gICAgdGhpcy5zaG93TW9kYWwoKTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvd01vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd01vZGFsJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93RWRpdERhc2hib2FyZE1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0VkaXREYXNoYm9hcmRNb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgc3dhcFdpZGdldHMoXG4gICAgZGFzaGJvYXJkV2lkZ2V0czogRGFzaGJvYXJkV2lkZ2V0W10sXG4gICAgaW5kZXgxOiBudW1iZXIsXG4gICAgaW5kZXgyOiBudW1iZXJcbiAgKTogRGFzaGJvYXJkV2lkZ2V0W10ge1xuICAgIGNvbnN0IHRlbXAgPSBbLi4uZGFzaGJvYXJkV2lkZ2V0c107XG4gICAgdGVtcFtpbmRleDFdID0gdGVtcC5zcGxpY2UoaW5kZXgyLCAxLCB0ZW1wW2luZGV4MV0pWzBdO1xuXG4gICAgcmV0dXJuIHRlbXA7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDIzIFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPG5nLWNvbnRhaW5lclxuICAqbmdJZj1cIlxuICAgIGZpZWxkcyAmJiB7XG4gICAgICBjdXJyZW50RGFzaGJvYXJkOiBjdXJyZW50RGFzaGJvYXJkJCB8IGFzeW5jLFxuICAgICAgZWRpdFdpZGdldENvbmZpZ3VyYXRpb246IGVkaXRXaWRnZXRDb25maWd1cmF0aW9uJCB8IGFzeW5jLFxuICAgICAgbG9hZGluZzogbG9hZGluZyQgfCBhc3luYyxcbiAgICAgIHdpZGdldERhdGE6IHdpZGdldERhdGEkIHwgYXN5bmNcbiAgICB9IGFzIG9ic1xuICBcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWRldGFpbC10YWJsZVwiPlxuICAgIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgICBbaXRlbXNdPVwib2JzLndpZGdldERhdGFcIlxuICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gICAgICBbbG9hZGluZ109XCJvYnMubG9hZGluZ1wiXG4gICAgPlxuICAgICAgPGRpdiBjYXJib25Ub29sYmFyQ29udGVudD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGRXaWRnZXRCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICAgIFthY3Rpb25dPVwiYWRkV2lkZ2V0QnV0dG9uXCJcbiAgICAgICAgZGVzY3JpcHRpb249XCJ7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLm5vUmVzdWx0cy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICB0aXRsZT1cInt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMubm9SZXN1bHRzLnRpdGxlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gICAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuICA8L2Rpdj5cblxuICA8dmFsdGltby13aWRnZXQtbW9kYWxcbiAgICBbZGFzaGJvYXJkXT1cIm9icy5jdXJyZW50RGFzaGJvYXJkXCJcbiAgICBbZWRpdFdpZGdldENvbmZpZ3VyYXRpb25dPVwib2JzLmVkaXRXaWRnZXRDb25maWd1cmF0aW9uXCJcbiAgICBbc2hvd01vZGFsJF09XCJzaG93TW9kYWwkXCJcbiAgICBbdHlwZV09XCJtb2RhbFR5cGVcIlxuICAgIFt3aWRnZXRLZXldPVwib2JzLmVkaXRXaWRnZXRDb25maWd1cmF0aW9uPy5rZXlcIlxuICAgIChzYXZlRXZlbnQpPVwicmVmcmVzaFdpZGdldHMoKVwiXG4gID48L3ZhbHRpbW8td2lkZ2V0LW1vZGFsPlxuXG4gIDx2YWx0aW1vLWVkaXQtZGFzaGJvYXJkLW1vZGFsXG4gICAgW2Rhc2hib2FyZF09XCJvYnMuY3VycmVudERhc2hib2FyZFwiXG4gICAgW3Nob3dNb2RhbCRdPVwic2hvd0VkaXREYXNoYm9hcmRNb2RhbCRcIlxuICAgIChzYXZlRXZlbnQpPVwicmVmcmVzaERhc2hib2FyZCgpXCJcbiAgPlxuICA8L3ZhbHRpbW8tZWRpdC1kYXNoYm9hcmQtbW9kYWw+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNtb3ZlQnV0dG9uc1RlbXBsYXRlIGxldC1kYXRhPVwiZGF0YVwiPlxuICA8ZGl2IGNsYXNzPVwibW92ZS1idXR0b25zLWNvbnRhaW5lclwiPlxuICAgIDxidXR0b25cbiAgICAgIGNkc0J1dHRvbj1cInRlcnRpYXJ5XCJcbiAgICAgIFtkaXNhYmxlZF09XCJkYXRhLmluZGV4ID09PSAwXCJcbiAgICAgIFtpY29uT25seV09XCJ0cnVlXCJcbiAgICAgIChjbGljayk9XCJvbkFycm93VXBDbGljayhkYXRhKVwiXG4gICAgPlxuICAgICAgPHN2ZyBjZHNJY29uPVwiYXJyb3ctLXVwXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvblxuICAgICAgY2RzQnV0dG9uPVwidGVydGlhcnlcIlxuICAgICAgW2Rpc2FibGVkXT1cIihsYXN0SXRlbUluZGV4JCB8IGFzeW5jKSA9PT0gZGF0YS5pbmRleFwiXG4gICAgICBbaWNvbk9ubHldPVwidHJ1ZVwiXG4gICAgICAoY2xpY2spPVwib25BcnJvd0Rvd25DbGljayhkYXRhKVwiXG4gICAgPlxuICAgICAgPHN2ZyBjZHNJY29uPVwiYXJyb3ctLWRvd25cIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLWNvbnRhaW5lciByZW5kZXJJblBhZ2VIZWFkZXI+XG4gIDxuZy10ZW1wbGF0ZT5cbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cInRlcnRpYXJ5XCIgc2l6ZT1cIm1kXCIgKGNsaWNrKT1cImVkaXREYXNoYm9hcmQoKVwiPlxuICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5lZGl0QnV0dG9uJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICA8c3ZnIGNsYXNzPVwiY2RzLS1idG5fX2ljb25cIiBjZHNJY29uPVwiZWRpdFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICAgIDwvYnV0dG9uPlxuICA8L25nLXRlbXBsYXRlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkV2lkZ2V0QnV0dG9uPlxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwibG9hZGluZyQgfCBhc3luY1wiIChjbGljayk9XCJhZGRXaWRnZXQoKVwiPlxuICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuYWRkJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImFkZFwiIHNpemU9XCIxNlwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 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 { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';
|
|
17
|
+
import { Validators } from '@angular/forms';
|
|
18
|
+
import { ViewType } from '@valtimo/components';
|
|
19
|
+
import { BehaviorSubject, finalize } from 'rxjs';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "../../services/dashboard-management.service";
|
|
22
|
+
import * as i2 from "@angular/forms";
|
|
23
|
+
import * as i3 from "@angular/router";
|
|
24
|
+
import * as i4 from "carbon-components-angular";
|
|
25
|
+
import * as i5 from "@angular/common";
|
|
26
|
+
import * as i6 from "@valtimo/components";
|
|
27
|
+
import * as i7 from "@ngx-translate/core";
|
|
28
|
+
export class DashboardManagementComponent {
|
|
29
|
+
constructor(dashboardManagementService, fb, router) {
|
|
30
|
+
this.dashboardManagementService = dashboardManagementService;
|
|
31
|
+
this.fb = fb;
|
|
32
|
+
this.router = router;
|
|
33
|
+
this.deleteRowKey$ = new BehaviorSubject('');
|
|
34
|
+
this.openModal$ = new BehaviorSubject(false);
|
|
35
|
+
this.showDeleteModal$ = new BehaviorSubject(false);
|
|
36
|
+
this.tableData$ = this.dashboardManagementService.dashboards$;
|
|
37
|
+
this.fields = [
|
|
38
|
+
{
|
|
39
|
+
viewType: ViewType.TEXT,
|
|
40
|
+
key: 'title',
|
|
41
|
+
label: 'dashboardManagement.name',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
viewType: ViewType.TEXT,
|
|
45
|
+
key: 'description',
|
|
46
|
+
label: 'dashboardManagement.description',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
viewType: ViewType.TEXT,
|
|
50
|
+
key: 'key',
|
|
51
|
+
label: 'dashboardManagement.key',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
actions: [
|
|
55
|
+
{
|
|
56
|
+
label: 'interface.delete',
|
|
57
|
+
callback: this.deleteDashboard.bind(this),
|
|
58
|
+
type: 'danger',
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
className: 'valtimo-dashboard-management__actions',
|
|
62
|
+
viewType: ViewType.ACTION,
|
|
63
|
+
label: '',
|
|
64
|
+
key: '',
|
|
65
|
+
sortable: false,
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
}
|
|
69
|
+
ngOnInit() {
|
|
70
|
+
this.dashboardManagementService.loadData();
|
|
71
|
+
this.form = this.fb.group({
|
|
72
|
+
description: this.fb.control('', [Validators.required]),
|
|
73
|
+
title: this.fb.control('', [Validators.required]),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
closeModal() {
|
|
77
|
+
this.openModal$.next(false);
|
|
78
|
+
this.form.reset();
|
|
79
|
+
}
|
|
80
|
+
createDashboard() {
|
|
81
|
+
const control = this.form.get('title');
|
|
82
|
+
if (!control || !control.valid) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const newDashboard = this.form.getRawValue();
|
|
86
|
+
this.dashboardManagementService.dispatchAction(this.dashboardManagementService.createDashboard(newDashboard).pipe(finalize(() => {
|
|
87
|
+
this.closeModal();
|
|
88
|
+
})));
|
|
89
|
+
}
|
|
90
|
+
onConfirmEvent(dashboardKey) {
|
|
91
|
+
this.dashboardManagementService.dispatchAction(this.dashboardManagementService.deleteDashboard(dashboardKey).pipe(finalize(() => {
|
|
92
|
+
this.closeModal();
|
|
93
|
+
})));
|
|
94
|
+
}
|
|
95
|
+
getControlInvalid(controlKey) {
|
|
96
|
+
const control = this.form.get(controlKey);
|
|
97
|
+
if (!control) {
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
return !control.valid && !control.pristine;
|
|
101
|
+
}
|
|
102
|
+
openModal() {
|
|
103
|
+
this.openModal$.next(true);
|
|
104
|
+
}
|
|
105
|
+
onRowClick(item) {
|
|
106
|
+
this.router.navigate([`/dashboard-management/${item.key}`]);
|
|
107
|
+
}
|
|
108
|
+
deleteDashboard(dashboard) {
|
|
109
|
+
this.deleteRowKey$.next(dashboard.key);
|
|
110
|
+
this.showDeleteModal$.next(true);
|
|
111
|
+
}
|
|
112
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardManagementComponent, deps: [{ token: i1.DashboardManagementService }, { token: i2.FormBuilder }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
113
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DashboardManagementComponent, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"tableData$ | async as data\">\n <valtimo-carbon-list\n [header]=\"true\"\n [items]=\"data.items\"\n [loading]=\"data.loading\"\n [fields]=\"fields\"\n (rowClicked)=\"onRowClick($event)\"\n class=\"valtimo-dashboard-management__table\"\n >\n <ng-container header> {{ 'dashboardManagement.title' | translate }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addDashboardButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addDashboardButton\"\n description=\"{{ 'dashboardManagement.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<cds-modal\n valtimoCdsModal\n [open]=\"openModal$ | async\"\n showFooter=\"true\"\n title=\"{{ 'dashboardManagement.addDashboard' | translate }}\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'dashboardManagement.addDashboard' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\" class=\"valtimo-dashboard-management__form\">\n <cds-label [invalid]=\"getControlInvalid('title')\">\n {{ 'dashboardManagement.addModal.name' | translate }}\n\n <input\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"getControlInvalid('title')\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'dashboardManagement.addModal.namePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <cds-label\n [helperText]=\"'dashboardManagement.addModal.descriptionHelperText' | translate\"\n [invalid]=\"getControlInvalid('description')\"\n >\n {{ 'dashboardManagement.description' | translate }}\n\n <input\n [invalid]=\"getControlInvalid('description')\"\n formControlName=\"description\"\n cdsText\n placeholder=\"{{ 'dashboardManagement.addModal.descriptionPlaceholder' | translate }}\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" cdsButton=\"primary\" (click)=\"createDashboard()\">\n {{ 'dashboardManagement.create' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dashboardManagement.deleteModalContent\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dashboardManagement.delete\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addDashboardButton>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'dashboardManagement.addDashboard' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.valtimo-dashboard-management__actions{width:1px}.valtimo-dashboard-management__form>*:not(:last-child){margin-bottom:32px}\n"], dependencies: [{ kind: "directive", type: i4.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: i4.Modal, selector: "cds-modal, ibm-modal", inputs: ["size", "theme", "ariaLabel", "open", "trigger", "hasScrollingContent"], outputs: ["overlaySelected", "close"] }, { kind: "component", type: i4.ModalHeader, selector: "cds-modal-header, ibm-modal-header", inputs: ["theme", "closeLabel", "showCloseButton"], outputs: ["closeSelect"] }, { kind: "component", type: i4.ModalFooter, selector: "cds-modal-footer, ibm-modal-footer" }, { kind: "directive", type: i4.ModalContent, selector: "[cdsModalContent], [ibmModalContent]", inputs: ["hasForm"] }, { kind: "directive", type: i4.ModalHeaderHeading, selector: "[cdsModalHeaderHeading], [ibmModalHeaderHeading]" }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.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: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i6.ConfirmationModalComponent, selector: "valtimo-confirmation-modal", inputs: ["titleTranslationKey", "title", "content", "contentTranslationKey", "confirmButtonText", "confirmButtonTextTranslationKey", "confirmButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm"], outputs: ["confirmEvent", "cancelEvent"] }, { kind: "directive", type: i4.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "component", type: i6.CarbonListComponent, selector: "valtimo-carbon-list", inputs: ["items", "fields", "tableTranslations", "paginatorConfig", "pagination", "loading", "actions", "header", "initialSortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
114
|
+
}
|
|
115
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DashboardManagementComponent, decorators: [{
|
|
116
|
+
type: Component,
|
|
117
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2023 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 *ngIf=\"tableData$ | async as data\">\n <valtimo-carbon-list\n [header]=\"true\"\n [items]=\"data.items\"\n [loading]=\"data.loading\"\n [fields]=\"fields\"\n (rowClicked)=\"onRowClick($event)\"\n class=\"valtimo-dashboard-management__table\"\n >\n <ng-container header> {{ 'dashboardManagement.title' | translate }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addDashboardButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addDashboardButton\"\n description=\"{{ 'dashboardManagement.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-list>\n</ng-container>\n\n<cds-modal\n valtimoCdsModal\n [open]=\"openModal$ | async\"\n showFooter=\"true\"\n title=\"{{ 'dashboardManagement.addDashboard' | translate }}\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ 'dashboardManagement.addDashboard' | translate }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <form [formGroup]=\"form\" class=\"valtimo-dashboard-management__form\">\n <cds-label [invalid]=\"getControlInvalid('title')\">\n {{ 'dashboardManagement.addModal.name' | translate }}\n\n <input\n [attr.modal-primary-focus]=\"true\"\n [invalid]=\"getControlInvalid('title')\"\n formControlName=\"title\"\n cdsText\n placeholder=\"{{ 'dashboardManagement.addModal.namePlaceholder' | translate }}\"\n />\n </cds-label>\n\n <cds-label\n [helperText]=\"'dashboardManagement.addModal.descriptionHelperText' | translate\"\n [invalid]=\"getControlInvalid('description')\"\n >\n {{ 'dashboardManagement.description' | translate }}\n\n <input\n [invalid]=\"getControlInvalid('description')\"\n formControlName=\"description\"\n cdsText\n placeholder=\"{{ 'dashboardManagement.addModal.descriptionPlaceholder' | translate }}\"\n />\n </cds-label>\n </form>\n </section>\n\n <cds-modal-footer>\n <button cdsButton=\"ghost\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.cancel' | translate }}\n </button>\n\n <button [disabled]=\"this.form.invalid\" cdsButton=\"primary\" (click)=\"createDashboard()\">\n {{ 'dashboardManagement.create' | translate }}\n </button>\n </cds-modal-footer>\n</cds-modal>\n\n<valtimo-confirmation-modal\n confirmButtonTextTranslationKey=\"dashboardManagement.deleteModal.confirm\"\n confirmButtonType=\"danger\"\n contentTranslationKey=\"dashboardManagement.deleteModalContent\"\n [outputOnConfirm]=\"deleteRowKey$ | async\"\n [showModalSubject$]=\"showDeleteModal$\"\n titleTranslationKey=\"dashboardManagement.delete\"\n (confirmEvent)=\"onConfirmEvent($event)\"\n></valtimo-confirmation-modal>\n\n<ng-template #addDashboardButton>\n <button cdsButton=\"primary\" (click)=\"openModal()\">\n {{ 'dashboardManagement.addDashboard' | translate }}\n\n <svg cdsIcon=\"add\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.valtimo-dashboard-management__actions{width:1px}.valtimo-dashboard-management__form>*:not(:last-child){margin-bottom:32px}\n"] }]
|
|
118
|
+
}], ctorParameters: function () { return [{ type: i1.DashboardManagementService }, { type: i2.FormBuilder }, { type: i3.Router }]; } });
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLW1hbmFnZW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkLW1hbmFnZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBMEMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUFlLFFBQVEsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQzNELE9BQU8sRUFBQyxlQUFlLEVBQUUsUUFBUSxFQUFhLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7QUFVM0QsTUFBTSxPQUFPLDRCQUE0QjtJQXdDdkMsWUFDbUIsMEJBQXNELEVBQ3RELEVBQWUsRUFDZixNQUFjO1FBRmQsK0JBQTBCLEdBQTFCLDBCQUEwQixDQUE0QjtRQUN0RCxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQTFDakIsa0JBQWEsR0FBNEIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDakUsZUFBVSxHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNsRSxxQkFBZ0IsR0FBNkIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENB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QUFLLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO0lBQzdDLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFtQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHlCQUF5QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxlQUFlLENBQUMsU0FBd0I7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzsrR0ExR1UsNEJBQTRCO21HQUE1Qiw0QkFBNEIsb0RDN0J6QyxnMUhBNkdBOzs0RkRoRmEsNEJBQTRCO2tCQU54QyxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7Q29sdW1uQ29uZmlnLCBWaWV3VHlwZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZmluYWxpemUsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEYXNoYm9hcmRJdGVtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXNoYm9hcmQtbWFuYWdlbWVudC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkTWFuYWdlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVSb3dLZXkkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3Blbk1vZGFsJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93RGVsZXRlTW9kYWwkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFibGVEYXRhJDogT2JzZXJ2YWJsZTx7aXRlbXM6IERhc2hib2FyZEl0ZW1bXSB8IG51bGw7IGxvYWRpbmc6IGJvb2xlYW59PiA9XG4gICAgdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZS5kYXNoYm9hcmRzJDtcbiAgcHVibGljIGZpZWxkczogQ29sdW1uQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgICBrZXk6ICd0aXRsZScsXG4gICAgICBsYWJlbDogJ2Rhc2hib2FyZE1hbmFnZW1lbnQubmFtZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICAgIGtleTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIGxhYmVsOiAnZGFzaGJvYXJkTWFuYWdlbWVudC5kZXNjcmlwdGlvbicsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICAgIGtleTogJ2tleScsXG4gICAgICBsYWJlbDogJ2Rhc2hib2FyZE1hbmFnZW1lbnQua2V5JyxcbiAgICB9LFxuICAgIHtcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsOiAnaW50ZXJmYWNlLmRlbGV0ZScsXG4gICAgICAgICAgY2FsbGJhY2s6IHRoaXMuZGVsZXRlRGFzaGJvYXJkLmJpbmQodGhpcyksXG4gICAgICAgICAgdHlwZTogJ2RhbmdlcicsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgY2xhc3NOYW1lOiAndmFsdGltby1kYXNoYm9hcmQtbWFuYWdlbWVudF9fYWN0aW9ucycsXG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuQUNUSU9OLFxuICAgICAgbGFiZWw6ICcnLFxuICAgICAga2V5OiAnJyxcbiAgICAgIHNvcnRhYmxlOiBmYWxzZSxcbiAgICB9LFxuICBdO1xuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2U6IERhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLmxvYWREYXRhKCk7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVEYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IHRoaXMuZm9ybS5nZXQoJ3RpdGxlJyk7XG4gICAgaWYgKCFjb250cm9sIHx8ICFjb250cm9sLnZhbGlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV3RGFzaGJvYXJkOiBEYXNoYm9hcmRJdGVtID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZS5kaXNwYXRjaEFjdGlvbihcbiAgICAgIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuY3JlYXRlRGFzaGJvYXJkKG5ld0Rhc2hib2FyZCkucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb25Db25maXJtRXZlbnQoZGFzaGJvYXJkS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLmRpc3BhdGNoQWN0aW9uKFxuICAgICAgdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZS5kZWxldGVEYXNoYm9hcmQoZGFzaGJvYXJkS2V5KS5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb250cm9sSW52YWxpZChjb250cm9sS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gdGhpcy5mb3JtLmdldChjb250cm9sS2V5KTtcblxuICAgIGlmICghY29udHJvbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICFjb250cm9sLnZhbGlkICYmICFjb250cm9sLnByaXN0aW5lO1xuICB9XG5cbiAgcHVibGljIG9wZW5Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5Nb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJvd0NsaWNrKGl0ZW06IERhc2hib2FyZEl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kYXNoYm9hcmQtbWFuYWdlbWVudC8ke2l0ZW0ua2V5fWBdKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlRGFzaGJvYXJkKGRhc2hib2FyZDogRGFzaGJvYXJkSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlUm93S2V5JC5uZXh0KGRhc2hib2FyZC5rZXkpO1xuICAgIHRoaXMuc2hvd0RlbGV0ZU1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZURhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPlxuICA8dmFsdGltby1jYXJib24tbGlzdFxuICAgIFtoZWFkZXJdPVwidHJ1ZVwiXG4gICAgW2l0ZW1zXT1cImRhdGEuaXRlbXNcIlxuICAgIFtsb2FkaW5nXT1cImRhdGEubG9hZGluZ1wiXG4gICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgIChyb3dDbGlja2VkKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJ2YWx0aW1vLWRhc2hib2FyZC1tYW5hZ2VtZW50X190YWJsZVwiXG4gID5cbiAgICA8bmctY29udGFpbmVyIGhlYWRlcj4ge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQudGl0bGUnIHwgdHJhbnNsYXRlIH19IDwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjYXJib25Ub29sYmFyQ29udGVudD5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkRGFzaGJvYXJkQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8dmFsdGltby1uby1yZXN1bHRzXG4gICAgICBbYWN0aW9uXT1cImFkZERhc2hib2FyZEJ1dHRvblwiXG4gICAgICBkZXNjcmlwdGlvbj1cInt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50Lm5vUmVzdWx0cy5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgdGl0bGU9XCJ7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC5ub1Jlc3VsdHMudGl0bGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICA+PC92YWx0aW1vLW5vLXJlc3VsdHM+XG4gIDwvdmFsdGltby1jYXJib24tbGlzdD5cbjwvbmctY29udGFpbmVyPlxuXG48Y2RzLW1vZGFsXG4gIHZhbHRpbW9DZHNNb2RhbFxuICBbb3Blbl09XCJvcGVuTW9kYWwkIHwgYXN5bmNcIlxuICBzaG93Rm9vdGVyPVwidHJ1ZVwiXG4gIHRpdGxlPVwie3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQuYWRkRGFzaGJvYXJkJyB8IHRyYW5zbGF0ZSB9fVwiXG4+XG4gIDxjZHMtbW9kYWwtaGVhZGVyIFtzaG93Q2xvc2VCdXR0b25dPVwidHJ1ZVwiIChjbG9zZVNlbGVjdCk9XCJjbG9zZU1vZGFsKClcIj5cbiAgICA8aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPlxuICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQuYWRkRGFzaGJvYXJkJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvaDM+XG4gIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQ+XG4gICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgY2xhc3M9XCJ2YWx0aW1vLWRhc2hib2FyZC1tYW5hZ2VtZW50X19mb3JtXCI+XG4gICAgICA8Y2RzLWxhYmVsIFtpbnZhbGlkXT1cImdldENvbnRyb2xJbnZhbGlkKCd0aXRsZScpXCI+XG4gICAgICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LmFkZE1vZGFsLm5hbWUnIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgW2F0dHIubW9kYWwtcHJpbWFyeS1mb2N1c109XCJ0cnVlXCJcbiAgICAgICAgICBbaW52YWxpZF09XCJnZXRDb250cm9sSW52YWxpZCgndGl0bGUnKVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIlxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LmFkZE1vZGFsLm5hbWVQbGFjZWhvbGRlcicgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAvPlxuICAgICAgPC9jZHMtbGFiZWw+XG5cbiAgICAgIDxjZHMtbGFiZWxcbiAgICAgICAgW2hlbHBlclRleHRdPVwiJ2Rhc2hib2FyZE1hbmFnZW1lbnQuYWRkTW9kYWwuZGVzY3JpcHRpb25IZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cImdldENvbnRyb2xJbnZhbGlkKCdkZXNjcmlwdGlvbicpXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgW2ludmFsaWRdPVwiZ2V0Q29udHJvbEludmFsaWQoJ2Rlc2NyaXB0aW9uJylcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC5hZGRNb2RhbC5kZXNjcmlwdGlvblBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Nkcy1sYWJlbD5cbiAgICA8L2Zvcm0+XG4gIDwvc2VjdGlvbj5cblxuICA8Y2RzLW1vZGFsLWZvb3Rlcj5cbiAgICA8YnV0dG9uIGNkc0J1dHRvbj1cImdob3N0XCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPlxuICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvYnV0dG9uPlxuXG4gICAgPGJ1dHRvbiBbZGlzYWJsZWRdPVwidGhpcy5mb3JtLmludmFsaWRcIiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cImNyZWF0ZURhc2hib2FyZCgpXCI+XG4gICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC5jcmVhdGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIDwvY2RzLW1vZGFsLWZvb3Rlcj5cbjwvY2RzLW1vZGFsPlxuXG48dmFsdGltby1jb25maXJtYXRpb24tbW9kYWxcbiAgY29uZmlybUJ1dHRvblRleHRUcmFuc2xhdGlvbktleT1cImRhc2hib2FyZE1hbmFnZW1lbnQuZGVsZXRlTW9kYWwuY29uZmlybVwiXG4gIGNvbmZpcm1CdXR0b25UeXBlPVwiZGFuZ2VyXCJcbiAgY29udGVudFRyYW5zbGF0aW9uS2V5PVwiZGFzaGJvYXJkTWFuYWdlbWVudC5kZWxldGVNb2RhbENvbnRlbnRcIlxuICBbb3V0cHV0T25Db25maXJtXT1cImRlbGV0ZVJvd0tleSQgfCBhc3luY1wiXG4gIFtzaG93TW9kYWxTdWJqZWN0JF09XCJzaG93RGVsZXRlTW9kYWwkXCJcbiAgdGl0bGVUcmFuc2xhdGlvbktleT1cImRhc2hib2FyZE1hbmFnZW1lbnQuZGVsZXRlXCJcbiAgKGNvbmZpcm1FdmVudCk9XCJvbkNvbmZpcm1FdmVudCgkZXZlbnQpXCJcbj48L3ZhbHRpbW8tY29uZmlybWF0aW9uLW1vZGFsPlxuXG48bmctdGVtcGxhdGUgI2FkZERhc2hib2FyZEJ1dHRvbj5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgKGNsaWNrKT1cIm9wZW5Nb2RhbCgpXCI+XG4gICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQuYWRkRGFzaGJvYXJkJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgPHN2ZyBjZHNJY29uPVwiYWRkXCIgc2l6ZT1cIjE2XCIgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiPjwvc3ZnPlxuICA8L2J1dHRvbj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright 2015-2023 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 { ChangeDetectionStrategy, Component, EventEmitter, Input, Output, ViewEncapsulation, } from '@angular/core';
|
|
17
|
+
import { NotificationService } from 'carbon-components-angular';
|
|
18
|
+
import { BehaviorSubject } from 'rxjs';
|
|
19
|
+
import { Validators } from '@angular/forms';
|
|
20
|
+
import { CARBON_CONSTANTS } from '@valtimo/components';
|
|
21
|
+
import * as i0 from "@angular/core";
|
|
22
|
+
import * as i1 from "@angular/forms";
|
|
23
|
+
import * as i2 from "../../services/dashboard-management.service";
|
|
24
|
+
import * as i3 from "carbon-components-angular";
|
|
25
|
+
import * as i4 from "@angular/common";
|
|
26
|
+
import * as i5 from "@ngx-translate/core";
|
|
27
|
+
export class EditDashboardModalComponent {
|
|
28
|
+
get dashboardTitle() {
|
|
29
|
+
return this.editDashboardForm.get('title');
|
|
30
|
+
}
|
|
31
|
+
get dashboardDescription() {
|
|
32
|
+
return this.editDashboardForm.get('description');
|
|
33
|
+
}
|
|
34
|
+
constructor(fb, dashboardManagementService) {
|
|
35
|
+
this.fb = fb;
|
|
36
|
+
this.dashboardManagementService = dashboardManagementService;
|
|
37
|
+
this.saveEvent = new EventEmitter();
|
|
38
|
+
this.open$ = new BehaviorSubject(false);
|
|
39
|
+
this.disabled$ = new BehaviorSubject(false);
|
|
40
|
+
this.editDashboardForm = this.fb.group({
|
|
41
|
+
title: this.fb.control('', [Validators.required]),
|
|
42
|
+
description: this.fb.control('', [Validators.required]),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
ngOnInit() {
|
|
46
|
+
this.openOpenSubscription();
|
|
47
|
+
}
|
|
48
|
+
closeModal() {
|
|
49
|
+
this.open$.next(false);
|
|
50
|
+
setTimeout(() => {
|
|
51
|
+
this.editDashboardForm.reset();
|
|
52
|
+
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
53
|
+
}
|
|
54
|
+
saveDashboard() {
|
|
55
|
+
this.disable();
|
|
56
|
+
this.dashboardManagementService
|
|
57
|
+
.updateDashboard({
|
|
58
|
+
description: this.dashboardDescription.value,
|
|
59
|
+
title: this.dashboardTitle.value,
|
|
60
|
+
key: this.dashboard.key,
|
|
61
|
+
})
|
|
62
|
+
.subscribe(() => {
|
|
63
|
+
this.saveEvent.emit();
|
|
64
|
+
this.closeModal();
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
setEditDashboardForm() {
|
|
68
|
+
if (this.dashboard) {
|
|
69
|
+
this.dashboardTitle?.setValue(this.dashboard.title);
|
|
70
|
+
this.dashboardDescription?.setValue(this.dashboard.description);
|
|
71
|
+
}
|
|
72
|
+
this.enable();
|
|
73
|
+
}
|
|
74
|
+
openOpenSubscription() {
|
|
75
|
+
this._openSubscription = this.showModal$.subscribe(show => {
|
|
76
|
+
this.setEditDashboardForm();
|
|
77
|
+
this.open$.next(show);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
disable() {
|
|
81
|
+
this.disabled$.next(true);
|
|
82
|
+
}
|
|
83
|
+
enable() {
|
|
84
|
+
this.disabled$.next(false);
|
|
85
|
+
}
|
|
86
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditDashboardModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DashboardManagementService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
87
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: EditDashboardModalComponent, selector: "valtimo-edit-dashboard-modal", inputs: { showModal$: "showModal$", dashboard: "dashboard" }, outputs: { saveEvent: "saveEvent" }, providers: [NotificationService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2023 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<cds-modal\n *ngIf=\"{disabled: disabled$ | async} as obs\"\n valtimoCdsModal\n [open]=\"open$ | async\"\n showFooter=\"true\"\n title=\"{{ 'dashboardManagement.widgets.editDashboard' | translate }}\"\n class=\"edit-dashboard-modal\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'dashboardManagement.widgets.editDashboard' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"editDashboardFormTemplate;context:{obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"editDashboardButtons;context:{obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #editDashboardFormTemplate let-obs=\"obs\">\n <form *ngIf=\"editDashboardForm\" [formGroup]=\"editDashboardForm\" class=\"dashboard-modal__form\">\n <div class=\"form__element\">\n <cds-label\n [disabled]=\"obs.disabled\"\n [invalid]=\"dashboardTitle.dirty && dashboardTitle.invalid\"\n >\n {{ 'dashboardManagement.widgets.form.dashboardTitle' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"dashboardTitle.dirty && dashboardTitle.invalid\"\n formControlName=\"title\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [disabled]=\"obs.disabled\"\n [helperText]=\"'dashboardManagement.widgets.form.dashboardDescriptionHelperText' | translate\"\n [invalid]=\"dashboardDescription.dirty && dashboardDescription.invalid\"\n [invalidText]=\"\n 'dashboardManagement.widgets.form.dashboardDescriptionHelperText' | translate\n \"\n >\n {{ 'dashboardManagement.widgets.form.dashboardDescription' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"dashboardDescription.dirty && dashboardDescription.invalid\"\n formControlName=\"description\"\n />\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #editDashboardButtons let-obs=\"obs\">\n <button cdsButton=\"ghost\" [disabled]=\"obs.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"editDashboardForm.invalid || obs.disabled\"\n (click)=\"saveDashboard()\"\n >\n {{ 'dashboardManagement.widgets.complete' | translate }}\n </button>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.edit-dashboard-modal .form__row{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.edit-dashboard-modal .form__element{width:100%;margin-bottom:32px}\n"], dependencies: [{ kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
88
|
+
}
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: EditDashboardModalComponent, decorators: [{
|
|
90
|
+
type: Component,
|
|
91
|
+
args: [{ selector: 'valtimo-edit-dashboard-modal', encapsulation: ViewEncapsulation.None, providers: [NotificationService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2023 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<cds-modal\n *ngIf=\"{disabled: disabled$ | async} as obs\"\n valtimoCdsModal\n [open]=\"open$ | async\"\n showFooter=\"true\"\n title=\"{{ 'dashboardManagement.widgets.editDashboard' | translate }}\"\n class=\"edit-dashboard-modal\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'dashboardManagement.widgets.editDashboard' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"editDashboardFormTemplate;context:{obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"editDashboardButtons;context:{obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #editDashboardFormTemplate let-obs=\"obs\">\n <form *ngIf=\"editDashboardForm\" [formGroup]=\"editDashboardForm\" class=\"dashboard-modal__form\">\n <div class=\"form__element\">\n <cds-label\n [disabled]=\"obs.disabled\"\n [invalid]=\"dashboardTitle.dirty && dashboardTitle.invalid\"\n >\n {{ 'dashboardManagement.widgets.form.dashboardTitle' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"dashboardTitle.dirty && dashboardTitle.invalid\"\n formControlName=\"title\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [disabled]=\"obs.disabled\"\n [helperText]=\"'dashboardManagement.widgets.form.dashboardDescriptionHelperText' | translate\"\n [invalid]=\"dashboardDescription.dirty && dashboardDescription.invalid\"\n [invalidText]=\"\n 'dashboardManagement.widgets.form.dashboardDescriptionHelperText' | translate\n \"\n >\n {{ 'dashboardManagement.widgets.form.dashboardDescription' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"dashboardDescription.dirty && dashboardDescription.invalid\"\n formControlName=\"description\"\n />\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #editDashboardButtons let-obs=\"obs\">\n <button cdsButton=\"ghost\" [disabled]=\"obs.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"editDashboardForm.invalid || obs.disabled\"\n (click)=\"saveDashboard()\"\n >\n {{ 'dashboardManagement.widgets.complete' | translate }}\n </button>\n</ng-template>\n", styles: ["/*!\n * Copyright 2015-2023 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 */.edit-dashboard-modal .form__row{display:flex;flex-direction:row;justify-content:space-between;align-items:flex-end}.edit-dashboard-modal .form__element{width:100%;margin-bottom:32px}\n"] }]
|
|
92
|
+
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.DashboardManagementService }]; }, propDecorators: { showModal$: [{
|
|
93
|
+
type: Input
|
|
94
|
+
}], dashboard: [{
|
|
95
|
+
type: Input
|
|
96
|
+
}], saveEvent: [{
|
|
97
|
+
type: Output
|
|
98
|
+
}] } });
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1kYXNoYm9hcmQtbW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9lZGl0LWRhc2hib2FyZC1tb2RhbC9lZGl0LWRhc2hib2FyZC1tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2VkaXQtZGFzaGJvYXJkLW1vZGFsL2VkaXQtZGFzaGJvYXJkLW1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGVBQWUsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFjLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7O0FBWXJELE1BQU0sT0FBTywyQkFBMkI7SUFZdEMsSUFBVyxjQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFJRCxZQUNtQixFQUFlLEVBQ2YsMEJBQXNEO1FBRHRELE9BQUUsR0FBRixFQUFFLENBQWE7UUFD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LE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOb3RpZmljYXRpb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEYXNoYm9hcmRJdGVtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtGb3JtQnVpbGRlciwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtDQVJCT05fQ09OU1RBTlRTfSBmcm9tICdAdmFsdGltby9jb21wb25lbnRzJztcbmltcG9ydCB7RGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2V9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Rhc2hib2FyZC1tYW5hZ2VtZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9uT3V0cHV0fSBmcm9tICdAdmFsdGltby9kYXNoYm9hcmQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWx0aW1vLWVkaXQtZGFzaGJvYXJkLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXQtZGFzaGJvYXJkLW1vZGFsLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9lZGl0LWRhc2hib2FyZC1tb2RhbC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIHByb3ZpZGVyczogW05vdGlmaWNhdGlvblNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgRWRpdERhc2hib2FyZE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgcHVibGljIHNob3dNb2RhbCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIEBJbnB1dCgpIHB1YmxpYyBkYXNoYm9hcmQ6IERhc2hib2FyZEl0ZW07XG4gIEBPdXRwdXQoKSBwdWJsaWMgc2F2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjxDb25maWd1cmF0aW9uT3V0cHV0PigpO1xuXG4gIHB1YmxpYyByZWFkb25seSBvcGVuJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzYWJsZWQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBlZGl0RGFzaGJvYXJkRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgIHRpdGxlOiB0aGlzLmZiLmNvbnRyb2woJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXSksXG4gICAgZGVzY3JpcHRpb246IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgfSk7XG5cbiAgcHVibGljIGdldCBkYXNoYm9hcmRUaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5lZGl0RGFzaGJvYXJkRm9ybS5nZXQoJ3RpdGxlJyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZERlc2NyaXB0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLmVkaXREYXNoYm9hcmRGb3JtLmdldCgnZGVzY3JpcHRpb24nKTtcbiAgfVxuXG4gIHByaXZhdGUgX29wZW5TdWJzY3JpcHRpb24hOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZTogRGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2VcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5PcGVuU3Vic2NyaXB0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgY2xvc2VNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW4kLm5leHQoZmFsc2UpO1xuXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmVkaXREYXNoYm9hcmRGb3JtLnJlc2V0KCk7XG4gICAgfSwgQ0FSQk9OX0NPTlNUQU5UUy5tb2RhbEFuaW1hdGlvbk1zKTtcbiAgfVxuXG4gIHB1YmxpYyBzYXZlRGFzaGJvYXJkKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZSgpO1xuXG4gICAgdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZVxuICAgICAgLnVwZGF0ZURhc2hib2FyZCh7XG4gICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRhc2hib2FyZERlc2NyaXB0aW9uLnZhbHVlLFxuICAgICAgICB0aXRsZTogdGhpcy5kYXNoYm9hcmRUaXRsZS52YWx1ZSxcbiAgICAgICAga2V5OiB0aGlzLmRhc2hib2FyZC5rZXksXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc2F2ZUV2ZW50LmVtaXQoKTtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0RWRpdERhc2hib2FyZEZvcm0oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGFzaGJvYXJkKSB7XG4gICAgICB0aGlzLmRhc2hib2FyZFRpdGxlPy5zZXRWYWx1ZSh0aGlzLmRhc2hib2FyZC50aXRsZSk7XG4gICAgICB0aGlzLmRhc2hib2FyZERlc2NyaXB0aW9uPy5zZXRWYWx1ZSh0aGlzLmRhc2hib2FyZC5kZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy5lbmFibGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgb3Blbk9wZW5TdWJzY3JpcHRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5fb3BlblN1YnNjcmlwdGlvbiA9IHRoaXMuc2hvd01vZGFsJC5zdWJzY3JpYmUoc2hvdyA9PiB7XG4gICAgICB0aGlzLnNldEVkaXREYXNoYm9hcmRGb3JtKCk7XG4gICAgICB0aGlzLm9wZW4kLm5leHQoc2hvdyk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRpc2FibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgZW5hYmxlKCk6IHZvaWQge1xuICAgIHRoaXMuZGlzYWJsZWQkLm5leHQoZmFsc2UpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyMyBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxjZHMtbW9kYWxcbiAgKm5nSWY9XCJ7ZGlzYWJsZWQ6IGRpc2FibGVkJCB8IGFzeW5jfSBhcyBvYnNcIlxuICB2YWx0aW1vQ2RzTW9kYWxcbiAgW29wZW5dPVwib3BlbiQgfCBhc3luY1wiXG4gIHNob3dGb290ZXI9XCJ0cnVlXCJcbiAgdGl0bGU9XCJ7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmVkaXREYXNoYm9hcmQnIHwgdHJhbnNsYXRlIH19XCJcbiAgY2xhc3M9XCJlZGl0LWRhc2hib2FyZC1tb2RhbFwiXG4+XG4gIDxjZHMtbW9kYWwtaGVhZGVyIFtzaG93Q2xvc2VCdXR0b25dPVwidHJ1ZVwiIChjbG9zZVNlbGVjdCk9XCJjbG9zZU1vZGFsKClcIj5cbiAgICA8aDMgY2RzTW9kYWxIZWFkZXJIZWFkaW5nPnt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZWRpdERhc2hib2FyZCcgfCB0cmFuc2xhdGUgfX08L2gzPlxuICA8L2Nkcy1tb2RhbC1oZWFkZXI+XG5cbiAgPHNlY3Rpb24gY2RzTW9kYWxDb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlZGl0RGFzaGJvYXJkRm9ybVRlbXBsYXRlO2NvbnRleHQ6e29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICA8L3NlY3Rpb24+XG5cbiAgPGNkcy1tb2RhbC1mb290ZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXREYXNoYm9hcmRCdXR0b25zO2NvbnRleHQ6e29iczogb2JzfVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Nkcy1tb2RhbC1mb290ZXI+XG48L2Nkcy1tb2RhbD5cblxuPG5nLXRlbXBsYXRlICNlZGl0RGFzaGJvYXJkRm9ybVRlbXBsYXRlIGxldC1vYnM9XCJvYnNcIj5cbiAgPGZvcm0gKm5nSWY9XCJlZGl0RGFzaGJvYXJkRm9ybVwiIFtmb3JtR3JvdXBdPVwiZWRpdERhc2hib2FyZEZvcm1cIiBjbGFzcz1cImRhc2hib2FyZC1tb2RhbF9fZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtX19lbGVtZW50XCI+XG4gICAgICA8Y2RzLWxhYmVsXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbaW52YWxpZF09XCJkYXNoYm9hcmRUaXRsZS5kaXJ0eSAmJiBkYXNoYm9hcmRUaXRsZS5pbnZhbGlkXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLmRhc2hib2FyZFRpdGxlJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgICBbaW52YWxpZF09XCJkYXNoYm9hcmRUaXRsZS5kaXJ0eSAmJiBkYXNoYm9hcmRUaXRsZS5pbnZhbGlkXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiXG4gICAgICAgICAgW2F0dHIubW9kYWwtcHJpbWFyeS1mb2N1c109XCJ0cnVlXCJcbiAgICAgICAgLz5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZvcm1fX2VsZW1lbnRcIj5cbiAgICAgIDxjZHMtbGFiZWxcbiAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICAgIFtoZWxwZXJUZXh0XT1cIidkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS5kYXNoYm9hcmREZXNjcmlwdGlvbkhlbHBlclRleHQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ludmFsaWRdPVwiZGFzaGJvYXJkRGVzY3JpcHRpb24uZGlydHkgJiYgZGFzaGJvYXJkRGVzY3JpcHRpb24uaW52YWxpZFwiXG4gICAgICAgIFtpbnZhbGlkVGV4dF09XCJcbiAgICAgICAgICAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0uZGFzaGJvYXJkRGVzY3JpcHRpb25IZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVxuICAgICAgICBcIlxuICAgICAgPlxuICAgICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0uZGFzaGJvYXJkRGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XG5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImRhc2hib2FyZERlc2NyaXB0aW9uLmRpcnR5ICYmIGRhc2hib2FyZERlc2NyaXB0aW9uLmludmFsaWRcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCJcbiAgICAgICAgLz5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZGl2PlxuICA8L2Zvcm0+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VkaXREYXNoYm9hcmRCdXR0b25zIGxldC1vYnM9XCJvYnNcIj5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJnaG9zdFwiIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+XG4gICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuXG4gIDxidXR0b25cbiAgICBjZHNCdXR0b249XCJwcmltYXJ5XCJcbiAgICBbZGlzYWJsZWRdPVwiZWRpdERhc2hib2FyZEZvcm0uaW52YWxpZCB8fCBvYnMuZGlzYWJsZWRcIlxuICAgIChjbGljayk9XCJzYXZlRGFzaGJvYXJkKClcIlxuICA+XG4gICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5jb21wbGV0ZScgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
|