@valtimo/dashboard-management 12.14.1 → 13.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/valtimo-dashboard-management.mjs +65 -56
- package/fesm2022/valtimo-dashboard-management.mjs.map +1 -1
- package/lib/components/dashboard-details/dashboard-details.component.d.ts +6 -2
- package/lib/components/widget-modal/widget-modal.component.d.ts +6 -5
- package/lib/dashboard-management.module.d.ts +3 -3
- package/lib/services/dashboard-management.service.d.ts +1 -1
- package/package.json +4 -6
- package/esm2022/lib/components/dashboard-details/dashboard-details.component.mjs +0 -142
- package/esm2022/lib/components/dashboard-management/dashboard-management.component.mjs +0 -112
- package/esm2022/lib/components/edit-dashboard-modal/edit-dashboard-modal.mjs +0 -100
- package/esm2022/lib/components/widget-configuration-container/widget-configuration-container.component.mjs +0 -137
- package/esm2022/lib/components/widget-modal/widget-modal.component.mjs +0 -261
- package/esm2022/lib/dashboard-management-routing.module.mjs +0 -56
- package/esm2022/lib/dashboard-management.module.mjs +0 -106
- package/esm2022/lib/models/dashboard-item.type.mjs +0 -17
- package/esm2022/lib/models/index.mjs +0 -18
- package/esm2022/lib/models/widget.model.mjs +0 -17
- package/esm2022/lib/services/dashboard-management.service.mjs +0 -88
- package/esm2022/public-api.mjs +0 -20
- package/esm2022/valtimo-dashboard-management.mjs +0 -5
|
@@ -7,12 +7,12 @@ import * as i5 from "./components/widget-configuration-container/widget-configur
|
|
|
7
7
|
import * as i6 from "carbon-components-angular";
|
|
8
8
|
import * as i7 from "@angular/common";
|
|
9
9
|
import * as i8 from "./dashboard-management-routing.module";
|
|
10
|
-
import * as i9 from "@
|
|
11
|
-
import * as i10 from "@
|
|
10
|
+
import * as i9 from "@angular/forms";
|
|
11
|
+
import * as i10 from "@valtimo/components";
|
|
12
12
|
import * as i11 from "@ngx-translate/core";
|
|
13
13
|
import * as i12 from "@valtimo/dashboard";
|
|
14
14
|
export declare class DashboardManagementModule {
|
|
15
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardManagementModule, never>;
|
|
16
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<DashboardManagementModule, [typeof i1.DashboardManagementComponent, typeof i2.DashboardDetailsComponent, typeof i3.WidgetModalComponent, typeof i4.EditDashboardModalComponent, typeof i5.WidgetConfigurationContainerComponent], [typeof i6.ButtonModule, typeof i7.CommonModule, typeof i8.DashboardManagementRoutingModule, typeof i6.DropdownModule, typeof i6.InputModule, typeof
|
|
16
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DashboardManagementModule, [typeof i1.DashboardManagementComponent, typeof i2.DashboardDetailsComponent, typeof i3.WidgetModalComponent, typeof i4.EditDashboardModalComponent, typeof i5.WidgetConfigurationContainerComponent], [typeof i6.ButtonModule, typeof i7.CommonModule, typeof i8.DashboardManagementRoutingModule, typeof i6.DropdownModule, typeof i6.InputModule, typeof i6.ModalModule, typeof i9.ReactiveFormsModule, typeof i10.SpinnerModule, typeof i11.TranslateModule, typeof i10.RenderInPageHeaderDirective, typeof i10.ConfirmationModalModule, typeof i6.NotificationModule, typeof i6.IconModule, typeof i12.WidgetTranslatePipeModule, typeof i10.CarbonListModule, typeof i6.LayerModule, typeof i10.ValtimoCdsModalDirective, typeof i10.JsonEditorComponent], never>;
|
|
17
17
|
static ɵinj: i0.ɵɵInjectorDeclaration<DashboardManagementModule>;
|
|
18
18
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { ConfigService } from '@valtimo/
|
|
2
|
+
import { ConfigService } from '@valtimo/shared';
|
|
3
3
|
import { BehaviorSubject, Observable } from 'rxjs';
|
|
4
4
|
import { DashboardItem, DashboardWidget, WidgetDataSource } from '../models';
|
|
5
5
|
import * as i0 from "@angular/core";
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@valtimo/dashboard-management",
|
|
3
3
|
"license": "EUPL-1.2",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "13.0.1",
|
|
5
5
|
"peerDependencies": {
|
|
6
|
-
"@angular/common": "^
|
|
7
|
-
"@angular/core": "^
|
|
6
|
+
"@angular/common": "^19.2.8",
|
|
7
|
+
"@angular/core": "^19.2.8"
|
|
8
8
|
},
|
|
9
9
|
"dependencies": {
|
|
10
|
-
"tslib": "2.
|
|
10
|
+
"tslib": "2.8.1"
|
|
11
11
|
},
|
|
12
12
|
"module": "fesm2022/valtimo-dashboard-management.mjs",
|
|
13
13
|
"typings": "index.d.ts",
|
|
@@ -17,8 +17,6 @@
|
|
|
17
17
|
},
|
|
18
18
|
".": {
|
|
19
19
|
"types": "./index.d.ts",
|
|
20
|
-
"esm2022": "./esm2022/valtimo-dashboard-management.mjs",
|
|
21
|
-
"esm": "./esm2022/valtimo-dashboard-management.mjs",
|
|
22
20
|
"default": "./fesm2022/valtimo-dashboard-management.mjs"
|
|
23
21
|
}
|
|
24
22
|
},
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import { Component, 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, pageHeaderService) {
|
|
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.pageHeaderService = pageHeaderService;
|
|
23
|
-
this.modalType = 'create';
|
|
24
|
-
this.actionItems = [
|
|
25
|
-
{
|
|
26
|
-
label: 'Edit',
|
|
27
|
-
callback: this.editWidget.bind(this),
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
label: 'Duplicate',
|
|
31
|
-
callback: this.duplicateWidget.bind(this),
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
label: 'Delete',
|
|
35
|
-
callback: this.deleteWidget.bind(this),
|
|
36
|
-
type: 'danger',
|
|
37
|
-
},
|
|
38
|
-
];
|
|
39
|
-
this._dashboardKey$ = this.route.params.pipe(map(params => params.id));
|
|
40
|
-
this._refreshDashboardSubject$ = new BehaviorSubject(null);
|
|
41
|
-
this.currentDashboard$ = combineLatest([
|
|
42
|
-
this._dashboardKey$,
|
|
43
|
-
this.translateService.stream('key'),
|
|
44
|
-
this._refreshDashboardSubject$,
|
|
45
|
-
]).pipe(switchMap(([dashboardKey]) => this.dashboardManagementService.getDashboard(dashboardKey)), tap((currentDashboard) => {
|
|
46
|
-
if (!currentDashboard) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
this.pageTitleService.setCustomPageTitle(currentDashboard.title);
|
|
50
|
-
this.pageTitleService.setCustomPageSubtitle(this.translateService.instant('dashboardManagement.widgets.metadata', {
|
|
51
|
-
createdBy: currentDashboard.createdBy,
|
|
52
|
-
createdOn: this.datePipe.transform(currentDashboard.createdOn ?? '', 'd/M/yy, H:mm'),
|
|
53
|
-
key: currentDashboard.key,
|
|
54
|
-
}));
|
|
55
|
-
}));
|
|
56
|
-
this.lastItemIndex$ = new BehaviorSubject(0);
|
|
57
|
-
this.loading$ = new BehaviorSubject(true);
|
|
58
|
-
this.dragAndDropDisabled$ = new BehaviorSubject(false);
|
|
59
|
-
this._refreshWidgetsSubject$ = new BehaviorSubject(null);
|
|
60
|
-
this._widgetData = null;
|
|
61
|
-
this.widgetData$ = combineLatest([
|
|
62
|
-
this._dashboardKey$,
|
|
63
|
-
this._refreshWidgetsSubject$,
|
|
64
|
-
]).pipe(switchMap(([dashboardKey, refreshWidgets]) => {
|
|
65
|
-
if (!this._widgetData || !refreshWidgets) {
|
|
66
|
-
this.loading$.next(true);
|
|
67
|
-
return this.dashboardManagementService.getDashboardWidgetConfiguration(dashboardKey);
|
|
68
|
-
}
|
|
69
|
-
this.dragAndDropDisabled$.next(true);
|
|
70
|
-
return this.dashboardManagementService.updateDashboardWidgetConfigurations(dashboardKey, refreshWidgets);
|
|
71
|
-
}), tap((data) => {
|
|
72
|
-
this._widgetData = data;
|
|
73
|
-
this.lastItemIndex$.next(data.length - 1);
|
|
74
|
-
this.loading$.next(false);
|
|
75
|
-
this.dragAndDropDisabled$.next(false);
|
|
76
|
-
}));
|
|
77
|
-
this.showModal$ = new BehaviorSubject(false);
|
|
78
|
-
this.showEditDashboardModal$ = new BehaviorSubject(false);
|
|
79
|
-
this.editWidgetConfiguration$ = new BehaviorSubject(null);
|
|
80
|
-
this.compactMode$ = this.pageHeaderService.compactMode$;
|
|
81
|
-
}
|
|
82
|
-
ngAfterViewInit() {
|
|
83
|
-
this.iconService.registerAll([ArrowDown16, ArrowUp16, Edit16]);
|
|
84
|
-
this.setFields();
|
|
85
|
-
}
|
|
86
|
-
addWidget() {
|
|
87
|
-
this.editWidgetConfiguration$.next(null);
|
|
88
|
-
this.modalType = 'create';
|
|
89
|
-
this.showModal();
|
|
90
|
-
}
|
|
91
|
-
editDashboard() {
|
|
92
|
-
this.showEditDashboardModal();
|
|
93
|
-
}
|
|
94
|
-
refreshWidgets() {
|
|
95
|
-
this._refreshWidgetsSubject$.next(null);
|
|
96
|
-
}
|
|
97
|
-
refreshDashboard() {
|
|
98
|
-
this._refreshDashboardSubject$.next(null);
|
|
99
|
-
}
|
|
100
|
-
onItemsReordered(items) {
|
|
101
|
-
if (!items)
|
|
102
|
-
return;
|
|
103
|
-
this._refreshWidgetsSubject$.next(items);
|
|
104
|
-
}
|
|
105
|
-
editWidget(event) {
|
|
106
|
-
this.editWidgetConfiguration$.next({ ...event });
|
|
107
|
-
this.modalType = 'edit';
|
|
108
|
-
this.showModal();
|
|
109
|
-
}
|
|
110
|
-
duplicateWidget(event) {
|
|
111
|
-
this.editWidgetConfiguration$.next({ ...event });
|
|
112
|
-
this.modalType = 'create';
|
|
113
|
-
this.showModal();
|
|
114
|
-
}
|
|
115
|
-
setFields() {
|
|
116
|
-
this.fields = [
|
|
117
|
-
{
|
|
118
|
-
viewType: ViewType.TEXT,
|
|
119
|
-
key: 'title',
|
|
120
|
-
label: 'Name',
|
|
121
|
-
},
|
|
122
|
-
];
|
|
123
|
-
}
|
|
124
|
-
deleteWidget(event) {
|
|
125
|
-
this.editWidgetConfiguration$.next({ ...event });
|
|
126
|
-
this.modalType = 'delete';
|
|
127
|
-
this.showModal();
|
|
128
|
-
}
|
|
129
|
-
showModal() {
|
|
130
|
-
this.showModal$.next(true);
|
|
131
|
-
}
|
|
132
|
-
showEditDashboardModal() {
|
|
133
|
-
this.showEditDashboardModal$.next(true);
|
|
134
|
-
}
|
|
135
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardDetailsComponent, deps: [{ token: i1.DashboardManagementService }, { token: i2.DatePipe }, { token: i3.IconService }, { token: i4.PageTitleService }, { token: i5.ActivatedRoute }, { token: i6.TranslateService }, { token: i4.PageHeaderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
136
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DashboardDetailsComponent, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"\n fields && {\n currentDashboard: currentDashboard$ | async,\n editWidgetConfiguration: editWidgetConfiguration$ | async,\n loading: loading$ | async,\n widgetData: widgetData$ | async,\n dragAndDropDisabled: dragAndDropDisabled$ | async,\n } as obs\n \"\n>\n <div class=\"dashboard-detail-table\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.widgetData\"\n [loading]=\"obs.loading\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.dragAndDropDisabled\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\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-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editDashboard()\"\n >\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: [".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/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: 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]", inputs: ["fullWidth"] }, { 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", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i4.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { 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 }); }
|
|
137
|
-
}
|
|
138
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardDetailsComponent, decorators: [{
|
|
139
|
-
type: Component,
|
|
140
|
-
args: [{ encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container\n *ngIf=\"\n fields && {\n currentDashboard: currentDashboard$ | async,\n editWidgetConfiguration: editWidgetConfiguration$ | async,\n loading: loading$ | async,\n widgetData: widgetData$ | async,\n dragAndDropDisabled: dragAndDropDisabled$ | async,\n } as obs\n \"\n>\n <div class=\"dashboard-detail-table\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [fields]=\"fields\"\n [header]=\"false\"\n [items]=\"obs.widgetData\"\n [loading]=\"obs.loading\"\n [dragAndDrop]=\"true\"\n [dragAndDropDisabled]=\"obs.dragAndDropDisabled\"\n (itemsReordered)=\"onItemsReordered($event)\"\n (rowClicked)=\"editWidget($event)\"\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-container renderInPageHeader>\n <ng-template>\n <button\n cdsButton=\"tertiary\"\n [size]=\"(compactMode$ | async) ? 'sm' : 'md'\"\n (click)=\"editDashboard()\"\n >\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: [".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/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
141
|
-
}], ctorParameters: () => [{ type: i1.DashboardManagementService }, { type: i2.DatePipe }, { type: i3.IconService }, { type: i4.PageTitleService }, { type: i5.ActivatedRoute }, { type: i6.TranslateService }, { type: i4.PageHeaderService }] });
|
|
142
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLWRldGFpbHMvZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLWRldGFpbHMvZGFzaGJvYXJkLWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJBLE9BQU8sRUFBZ0IsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUU3RCxPQUFPLEVBS0wsUUFBUSxHQUNULE1BQU0scUJBQXFCLENBQUM7QUFHN0IsT0FBTyxFQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFjLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7QUFTckYsTUFBTSxPQUFPLHlCQUF5QjtJQW1GcEMsWUFDbUIsMEJBQXNELEVBQ3RELFFBQWtCLEVBQ2xCLFdBQXdCLEVBQ3hCLGdCQUFrQyxFQUNsQyxLQUFxQixFQUNyQixnQkFBa0MsRUFDbEMsaUJBQW9DO1FBTnBDLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0Is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QUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sU0FBUztRQUNmLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDOytHQTVKVSx5QkFBeUI7bUdBQXpCLHlCQUF5QixvREN2Q3RDLG05RkF5RkE7OzRGRGxEYSx5QkFBeUI7a0JBTHJDLFNBQVM7b0NBR08saUJBQWlCLENBQUMsSUFBSSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7RGF0ZVBpcGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtBY3RpdmF0ZWRSb3V0ZX0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QXJyb3dEb3duMTYsIEFycm93VXAxNiwgRWRpdDE2fSBmcm9tICdAY2FyYm9uL2ljb25zJztcbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBBY3Rpb25JdGVtLFxuICBDb2x1bW5Db25maWcsXG4gIFBhZ2VIZWFkZXJTZXJ2aWNlLFxuICBQYWdlVGl0bGVTZXJ2aWNlLFxuICBWaWV3VHlwZSxcbn0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0Rhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb259IGZyb20gJ0B2YWx0aW1vL2Rhc2hib2FyZCc7XG5pbXBvcnQge0ljb25TZXJ2aWNlfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBtYXAsIE9ic2VydmFibGUsIHN3aXRjaE1hcCwgdGFwfSBmcm9tICdyeGpzJztcbmltcG9ydCB7RGFzaGJvYXJkSXRlbSwgRGFzaGJvYXJkV2lkZ2V0LCBXaWRnZXRNb2RhbFR5cGV9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0Rhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXNoYm9hcmQtbWFuYWdlbWVudC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlVXJsOiAnLi9kYXNoYm9hcmQtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Rhc2hib2FyZC1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIERhc2hib2FyZERldGFpbHNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgcHVibGljIG1vZGFsVHlwZTogV2lkZ2V0TW9kYWxUeXBlID0gJ2NyZWF0ZSc7XG4gIHB1YmxpYyBmaWVsZHMhOiBDb2x1bW5Db25maWdbXTtcbiAgcHVibGljIHJlYWRvbmx5IGFjdGlvbkl0ZW1zOiBBY3Rpb25JdGVtW10gPSBbXG4gICAge1xuICAgICAgbGFiZWw6ICdFZGl0JyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLmVkaXRXaWRnZXQuYmluZCh0aGlzKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGxhYmVsOiAnRHVwbGljYXRlJyxcbiAgICAgIGNhbGxiYWNrOiB0aGlzLmR1cGxpY2F0ZVdpZGdldC5iaW5kKHRoaXMpLFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6ICdEZWxldGUnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuZGVsZXRlV2lkZ2V0LmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICB9LFxuICBdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rhc2hib2FyZEtleSQgPSB0aGlzLnJvdXRlLnBhcmFtcy5waXBlKG1hcChwYXJhbXMgPT4gcGFyYW1zLmlkKSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlZnJlc2hEYXNoYm9hcmRTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVsbD4obnVsbCk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50RGFzaGJvYXJkJDogT2JzZXJ2YWJsZTxEYXNoYm9hcmRJdGVtIHwgdW5kZWZpbmVkPiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuX2Rhc2hib2FyZEtleSQsXG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnN0cmVhbSgna2V5JyksXG4gICAgdGhpcy5fcmVmcmVzaERhc2hib2FyZFN1YmplY3QkLFxuICBdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2Rhc2hib2FyZEtleV0pID0+IHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuZ2V0RGFzaGJvYXJkKGRhc2hib2FyZEtleSkpLFxuICAgIHRhcCgoY3VycmVudERhc2hib2FyZDogRGFzaGJvYXJkSXRlbSkgPT4ge1xuICAgICAgaWYgKCFjdXJyZW50RGFzaGJvYXJkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5wYWdlVGl0bGVTZXJ2aWNlLnNldEN1c3RvbVBhZ2VUaXRsZShjdXJyZW50RGFzaGJvYXJkLnRpdGxlKTtcbiAgICAgIHRoaXMucGFnZVRpdGxlU2VydmljZS5zZXRDdXN0b21QYWdlU3VidGl0bGUoXG4gICAgICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMubWV0YWRhdGEnLCB7XG4gICAgICAgICAgY3JlYXRlZEJ5OiBjdXJyZW50RGFzaGJvYXJkLmNyZWF0ZWRCeSxcbiAgICAgICAgICBjcmVhdGVkT246IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKGN1cnJlbnREYXNoYm9hcmQuY3JlYXRlZE9uID8/ICcnLCAnZC9NL3l5LCBIOm1tJyksXG4gICAgICAgICAga2V5OiBjdXJyZW50RGFzaGJvYXJkLmtleSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfSlcbiAgKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgbGFzdEl0ZW1JbmRleCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCk7XG4gIHB1YmxpYyByZWFkb25seSBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XG4gIHB1YmxpYyByZWFkb25seSBkcmFnQW5kRHJvcERpc2FibGVkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBfcmVmcmVzaFdpZGdldHNTdWJqZWN0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8RGFzaGJvYXJkV2lkZ2V0W10gfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIF93aWRnZXREYXRhOiBEYXNoYm9hcmRXaWRnZXRbXSB8IG51bGwgPSBudWxsO1xuICBwdWJsaWMgcmVhZG9ubHkgd2lkZ2V0RGF0YSQ6IE9ic2VydmFibGU8RGFzaGJvYXJkV2lkZ2V0W10+ID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5fZGFzaGJvYXJkS2V5JCxcbiAgICB0aGlzLl9yZWZyZXNoV2lkZ2V0c1N1YmplY3QkLFxuICBdKS5waXBlKFxuICAgIHN3aXRjaE1hcCgoW2Rhc2hib2FyZEtleSwgcmVmcmVzaFdpZGdldHNdKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX3dpZGdldERhdGEgfHwgIXJlZnJlc2hXaWRnZXRzKSB7XG4gICAgICAgIHRoaXMubG9hZGluZyQubmV4dCh0cnVlKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuZ2V0RGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbihkYXNoYm9hcmRLZXkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRyYWdBbmREcm9wRGlzYWJsZWQkLm5leHQodHJ1ZSk7XG5cbiAgICAgIHJldHVybiB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLnVwZGF0ZURhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb25zKFxuICAgICAgICBkYXNoYm9hcmRLZXksXG4gICAgICAgIHJlZnJlc2hXaWRnZXRzXG4gICAgICApO1xuICAgIH0pLFxuICAgIHRhcCgoZGF0YTogRGFzaGJvYXJkV2lkZ2V0W10pID0+IHtcbiAgICAgIHRoaXMuX3dpZGdldERhdGEgPSBkYXRhO1xuICAgICAgdGhpcy5sYXN0SXRlbUluZGV4JC5uZXh0KGRhdGEubGVuZ3RoIC0gMSk7XG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQoZmFsc2UpO1xuICAgICAgdGhpcy5kcmFnQW5kRHJvcERpc2FibGVkJC5uZXh0KGZhbHNlKTtcbiAgICB9KVxuICApO1xuXG4gIHB1YmxpYyByZWFkb25seSBzaG93TW9kYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93RWRpdERhc2hib2FyZE1vZGFsJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHB1YmxpYyByZWFkb25seSBlZGl0V2lkZ2V0Q29uZmlndXJhdGlvbiQgPVxuICAgIG5ldyBCZWhhdmlvclN1YmplY3Q8RGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbiB8IG51bGw+KG51bGwpO1xuXG4gIHB1YmxpYyByZWFkb25seSBjb21wYWN0TW9kZSQgPSB0aGlzLnBhZ2VIZWFkZXJTZXJ2aWNlLmNvbXBhY3RNb2RlJDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlOiBEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhdGVQaXBlOiBEYXRlUGlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGljb25TZXJ2aWNlOiBJY29uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VUaXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGFnZUhlYWRlclNlcnZpY2U6IFBhZ2VIZWFkZXJTZXJ2aWNlXG4gICkge31cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaWNvblNlcnZpY2UucmVnaXN0ZXJBbGwoW0Fycm93RG93bjE2LCBBcnJvd1VwMTYsIEVkaXQxNl0pO1xuICAgIHRoaXMuc2V0RmllbGRzKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkV2lkZ2V0KCk6IHZvaWQge1xuICAgIHRoaXMuZWRpdFdpZGdldENvbmZpZ3VyYXRpb24kLm5leHQobnVsbCk7XG4gICAgdGhpcy5tb2RhbFR5cGUgPSAnY3JlYXRlJztcbiAgICB0aGlzLnNob3dNb2RhbCgpO1xuICB9XG5cbiAgcHVibGljIGVkaXREYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RWRpdERhc2hib2FyZE1vZGFsKCk7XG4gIH1cblxuICBwdWJsaWMgcmVmcmVzaFdpZGdldHMoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaFdpZGdldHNTdWJqZWN0JC5uZXh0KG51bGwpO1xuICB9XG5cbiAgcHVibGljIHJlZnJlc2hEYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVmcmVzaERhc2hib2FyZFN1YmplY3QkLm5leHQobnVsbCk7XG4gIH1cblxuICBwdWJsaWMgb25JdGVtc1Jlb3JkZXJlZChpdGVtczogRGFzaGJvYXJkV2lkZ2V0W10pOiB2b2lkIHtcbiAgICBpZiAoIWl0ZW1zKSByZXR1cm47XG5cbiAgICB0aGlzLl9yZWZyZXNoV2lkZ2V0c1N1YmplY3QkLm5leHQoaXRlbXMpO1xuICB9XG5cbiAgcHVibGljIGVkaXRXaWRnZXQoZXZlbnQ6IERhc2hib2FyZFdpZGdldENvbmZpZ3VyYXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLmVkaXRXaWRnZXRDb25maWd1cmF0aW9uJC5uZXh0KHsuLi5ldmVudH0pO1xuICAgIHRoaXMubW9kYWxUeXBlID0gJ2VkaXQnO1xuICAgIHRoaXMuc2hvd01vZGFsKCk7XG4gIH1cblxuICBwcml2YXRlIGR1cGxpY2F0ZVdpZGdldChldmVudDogRGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMuZWRpdFdpZGdldENvbmZpZ3VyYXRpb24kLm5leHQoey4uLmV2ZW50fSk7XG4gICAgdGhpcy5tb2RhbFR5cGUgPSAnY3JlYXRlJztcbiAgICB0aGlzLnNob3dNb2RhbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGaWVsZHMoKTogdm9pZCB7XG4gICAgdGhpcy5maWVsZHMgPSBbXG4gICAgICB7XG4gICAgICAgIHZpZXdUeXBlOiBWaWV3VHlwZS5URVhULFxuICAgICAgICBrZXk6ICd0aXRsZScsXG4gICAgICAgIGxhYmVsOiAnTmFtZScsXG4gICAgICB9LFxuICAgIF07XG4gIH1cblxuICBwcml2YXRlIGRlbGV0ZVdpZGdldChldmVudDogRGFzaGJvYXJkV2lkZ2V0Q29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIHRoaXMuZWRpdFdpZGdldENvbmZpZ3VyYXRpb24kLm5leHQoey4uLmV2ZW50fSk7XG4gICAgdGhpcy5tb2RhbFR5cGUgPSAnZGVsZXRlJztcbiAgICB0aGlzLnNob3dNb2RhbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzaG93TW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93TW9kYWwkLm5leHQodHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIHNob3dFZGl0RGFzaGJvYXJkTW9kYWwoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93RWRpdERhc2hib2FyZE1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXJcbiAgKm5nSWY9XCJcbiAgICBmaWVsZHMgJiYge1xuICAgICAgY3VycmVudERhc2hib2FyZDogY3VycmVudERhc2hib2FyZCQgfCBhc3luYyxcbiAgICAgIGVkaXRXaWRnZXRDb25maWd1cmF0aW9uOiBlZGl0V2lkZ2V0Q29uZmlndXJhdGlvbiQgfCBhc3luYyxcbiAgICAgIGxvYWRpbmc6IGxvYWRpbmckIHwgYXN5bmMsXG4gICAgICB3aWRnZXREYXRhOiB3aWRnZXREYXRhJCB8IGFzeW5jLFxuICAgICAgZHJhZ0FuZERyb3BEaXNhYmxlZDogZHJhZ0FuZERyb3BEaXNhYmxlZCQgfCBhc3luYyxcbiAgICB9IGFzIG9ic1xuICBcIlxuPlxuICA8ZGl2IGNsYXNzPVwiZGFzaGJvYXJkLWRldGFpbC10YWJsZVwiPlxuICAgIDx2YWx0aW1vLWNhcmJvbi1saXN0XG4gICAgICBbYWN0aW9uSXRlbXNdPVwiYWN0aW9uSXRlbXNcIlxuICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gICAgICBbaXRlbXNdPVwib2JzLndpZGdldERhdGFcIlxuICAgICAgW2xvYWRpbmddPVwib2JzLmxvYWRpbmdcIlxuICAgICAgW2RyYWdBbmREcm9wXT1cInRydWVcIlxuICAgICAgW2RyYWdBbmREcm9wRGlzYWJsZWRdPVwib2JzLmRyYWdBbmREcm9wRGlzYWJsZWRcIlxuICAgICAgKGl0ZW1zUmVvcmRlcmVkKT1cIm9uSXRlbXNSZW9yZGVyZWQoJGV2ZW50KVwiXG4gICAgICAocm93Q2xpY2tlZCk9XCJlZGl0V2lkZ2V0KCRldmVudClcIlxuICAgID5cbiAgICAgIDxkaXYgY2FyYm9uVG9vbGJhckNvbnRlbnQ+XG4gICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYWRkV2lkZ2V0QnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPHZhbHRpbW8tbm8tcmVzdWx0c1xuICAgICAgICBbYWN0aW9uXT1cImFkZFdpZGdldEJ1dHRvblwiXG4gICAgICAgIGRlc2NyaXB0aW9uPVwie3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5ub1Jlc3VsdHMuZGVzY3JpcHRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgdGl0bGU9XCJ7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLm5vUmVzdWx0cy50aXRsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgPjwvdmFsdGltby1uby1yZXN1bHRzPlxuICAgIDwvdmFsdGltby1jYXJib24tbGlzdD5cbiAgPC9kaXY+XG5cbiAgPHZhbHRpbW8td2lkZ2V0LW1vZGFsXG4gICAgW2Rhc2hib2FyZF09XCJvYnMuY3VycmVudERhc2hib2FyZFwiXG4gICAgW2VkaXRXaWRnZXRDb25maWd1cmF0aW9uXT1cIm9icy5lZGl0V2lkZ2V0Q29uZmlndXJhdGlvblwiXG4gICAgW3Nob3dNb2RhbCRdPVwic2hvd01vZGFsJFwiXG4gICAgW3R5cGVdPVwibW9kYWxUeXBlXCJcbiAgICBbd2lkZ2V0S2V5XT1cIm9icy5lZGl0V2lkZ2V0Q29uZmlndXJhdGlvbj8ua2V5XCJcbiAgICAoc2F2ZUV2ZW50KT1cInJlZnJlc2hXaWRnZXRzKClcIlxuICA+PC92YWx0aW1vLXdpZGdldC1tb2RhbD5cblxuICA8dmFsdGltby1lZGl0LWRhc2hib2FyZC1tb2RhbFxuICAgIFtkYXNoYm9hcmRdPVwib2JzLmN1cnJlbnREYXNoYm9hcmRcIlxuICAgIFtzaG93TW9kYWwkXT1cInNob3dFZGl0RGFzaGJvYXJkTW9kYWwkXCJcbiAgICAoc2F2ZUV2ZW50KT1cInJlZnJlc2hEYXNoYm9hcmQoKVwiXG4gID5cbiAgPC92YWx0aW1vLWVkaXQtZGFzaGJvYXJkLW1vZGFsPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgcmVuZGVySW5QYWdlSGVhZGVyPlxuICA8bmctdGVtcGxhdGU+XG4gICAgPGJ1dHRvblxuICAgICAgY2RzQnV0dG9uPVwidGVydGlhcnlcIlxuICAgICAgW3NpemVdPVwiKGNvbXBhY3RNb2RlJCB8IGFzeW5jKSA/ICdzbScgOiAnbWQnXCJcbiAgICAgIChjbGljayk9XCJlZGl0RGFzaGJvYXJkKClcIlxuICAgID5cbiAgICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZWRpdEJ1dHRvbicgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgPHN2ZyBjbGFzcz1cImNkcy0tYnRuX19pY29uXCIgY2RzSWNvbj1cImVkaXRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgICA8L2J1dHRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI2FkZFdpZGdldEJ1dHRvbj5cbiAgPGJ1dHRvbiBjZHNCdXR0b249XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImxvYWRpbmckIHwgYXN5bmNcIiAoY2xpY2spPVwiYWRkV2lkZ2V0KClcIj5cbiAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmFkZCcgfCB0cmFuc2xhdGUgfX1cblxuICAgIDxzdmcgY2xhc3M9XCJjZHMtLWJ0bl9faWNvblwiIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIj48L3N2Zz5cbiAgPC9idXR0b24+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { 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
|
-
this.actionItems = [
|
|
55
|
-
{
|
|
56
|
-
label: 'interface.delete',
|
|
57
|
-
callback: this.deleteDashboard.bind(this),
|
|
58
|
-
type: 'danger',
|
|
59
|
-
},
|
|
60
|
-
];
|
|
61
|
-
}
|
|
62
|
-
ngOnInit() {
|
|
63
|
-
this.dashboardManagementService.loadData();
|
|
64
|
-
this.form = this.fb.group({
|
|
65
|
-
description: this.fb.control('', [Validators.required]),
|
|
66
|
-
title: this.fb.control('', [Validators.required]),
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
closeModal() {
|
|
70
|
-
this.openModal$.next(false);
|
|
71
|
-
this.form.reset();
|
|
72
|
-
}
|
|
73
|
-
createDashboard() {
|
|
74
|
-
const control = this.form.get('title');
|
|
75
|
-
if (!control || !control.valid) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
const newDashboard = this.form.getRawValue();
|
|
79
|
-
this.dashboardManagementService.dispatchAction(this.dashboardManagementService.createDashboard(newDashboard).pipe(finalize(() => {
|
|
80
|
-
this.closeModal();
|
|
81
|
-
})));
|
|
82
|
-
}
|
|
83
|
-
onConfirmEvent(dashboardKey) {
|
|
84
|
-
this.dashboardManagementService.dispatchAction(this.dashboardManagementService.deleteDashboard(dashboardKey).pipe(finalize(() => {
|
|
85
|
-
this.closeModal();
|
|
86
|
-
})));
|
|
87
|
-
}
|
|
88
|
-
getControlInvalid(controlKey) {
|
|
89
|
-
const control = this.form.get(controlKey);
|
|
90
|
-
if (!control) {
|
|
91
|
-
return true;
|
|
92
|
-
}
|
|
93
|
-
return !control.valid && !control.pristine;
|
|
94
|
-
}
|
|
95
|
-
openModal() {
|
|
96
|
-
this.openModal$.next(true);
|
|
97
|
-
}
|
|
98
|
-
onRowClick(item) {
|
|
99
|
-
this.router.navigate([`/dashboard-management/${item.key}`]);
|
|
100
|
-
}
|
|
101
|
-
deleteDashboard(dashboard) {
|
|
102
|
-
this.deleteRowKey$.next(dashboard.key);
|
|
103
|
-
this.showDeleteModal$.next(true);
|
|
104
|
-
}
|
|
105
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardManagementComponent, deps: [{ token: i1.DashboardManagementService }, { token: i2.FormBuilder }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
106
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: DashboardManagementComponent, selector: "ng-component", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"tableData$ | async as data\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [header]=\"false\"\n [items]=\"data.items\"\n [loading]=\"data.loading\"\n [fields]=\"fields\"\n (rowClicked)=\"onRowClick($event)\"\n class=\"valtimo-dashboard-management__table\"\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: [".valtimo-dashboard-management__actions{width:1px}.valtimo-dashboard-management__form>*:not(:last-child){margin-bottom:32px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: 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", "showOptionalButton", "optionalButtonText", "optionalButtonTextTranslationKey", "optionalButtonType", "cancelButtonText", "cancelButtonTextTranslationKey", "cancelButtonType", "showModalSubject$", "outputOnConfirm", "outputOnOptional", "spacerAfterCancelButton"], outputs: ["confirmEvent", "optionalEvent", "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", "actionItems", "header", "hideColumnHeader", "initialSortState", "sortState", "isSearchable", "enableSingleSelection", "lastColumnTemplate", "paginationIdentifier", "showSelectionColumn", "striped", "hideToolbar", "lockedTooltipTranslationKey", "movingRowsEnabled", "dragAndDrop", "dragAndDropDisabled"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged", "moveRow", "itemsReordered"] }, { kind: "component", type: i6.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "directive", type: i6.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["enableOverflow"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
107
|
-
}
|
|
108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: DashboardManagementComponent, decorators: [{
|
|
109
|
-
type: Component,
|
|
110
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"tableData$ | async as data\">\n <valtimo-carbon-list\n [actionItems]=\"actionItems\"\n [header]=\"false\"\n [items]=\"data.items\"\n [loading]=\"data.loading\"\n [fields]=\"fields\"\n (rowClicked)=\"onRowClick($event)\"\n class=\"valtimo-dashboard-management__table\"\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: [".valtimo-dashboard-management__actions{width:1px}.valtimo-dashboard-management__form>*:not(:last-child){margin-bottom:32px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
111
|
-
}], ctorParameters: () => [{ type: i1.DashboardManagementService }, { type: i2.FormBuilder }, { type: i3.Router }] });
|
|
112
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGFzaGJvYXJkLW1hbmFnZW1lbnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkLW1hbmFnZW1lbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdmFsdGltby9kYXNoYm9hcmQtbWFuYWdlbWVudC9zcmMvbGliL2NvbXBvbmVudHMvZGFzaGJvYXJkLW1hbmFnZW1lbnQvZGFzaGJvYXJkLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxPQUFPLEVBQUMsdUJBQXVCLEVBQUUsU0FBUyxFQUFVLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQzVGLE9BQU8sRUFBMEMsVUFBVSxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFFbkYsT0FBTyxFQUEyQixRQUFRLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsZUFBZSxFQUFFLFFBQVEsRUFBYSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7O0FBVTNELE1BQU0sT0FBTyw0QkFBNEI7SUFpQ3ZDLFlBQ21CLDBCQUFzRCxFQUN0RCxFQUFlLEVBQ2YsTUFBYztRQUZkLCtCQUEwQixHQUExQiwwQkFBMEIsQ0FBNEI7UUFDdEQsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuQ2pCLGtCQUFhLEdBQTRCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLGVBQVUsR0FBNkIsSUFBSSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEUscUJBQWdCLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxD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SUFDN0IsQ0FBQztJQUVNLFVBQVUsQ0FBQyxJQUFtQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLHlCQUF5QixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFTyxlQUFlLENBQUMsU0FBd0I7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQzsrR0FuR1UsNEJBQTRCO21HQUE1Qiw0QkFBNEIsb0RDN0J6Qyx5eEhBNEdBOzs0RkQvRWEsNEJBQTRCO2tCQU54QyxTQUFTO3NDQUdTLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgRVVQTCwgVmVyc2lvbiAxLjIgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBPbkluaXQsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7QWJzdHJhY3RDb250cm9sLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7QWN0aW9uSXRlbSwgQ29sdW1uQ29uZmlnLCBWaWV3VHlwZX0gZnJvbSAnQHZhbHRpbW8vY29tcG9uZW50cyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdCwgZmluYWxpemUsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtEYXNoYm9hcmRJdGVtfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZVVybDogJy4vZGFzaGJvYXJkLW1hbmFnZW1lbnQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9kYXNoYm9hcmQtbWFuYWdlbWVudC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgRGFzaGJvYXJkTWFuYWdlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHB1YmxpYyByZWFkb25seSBkZWxldGVSb3dLZXkkOiBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoJycpO1xuICBwdWJsaWMgcmVhZG9ubHkgb3Blbk1vZGFsJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaG93RGVsZXRlTW9kYWwkOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBwdWJsaWMgcmVhZG9ubHkgdGFibGVEYXRhJDogT2JzZXJ2YWJsZTx7aXRlbXM6IERhc2hib2FyZEl0ZW1bXSB8IG51bGw7IGxvYWRpbmc6IGJvb2xlYW59PiA9XG4gICAgdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZS5kYXNoYm9hcmRzJDtcbiAgcHVibGljIGZpZWxkczogQ29sdW1uQ29uZmlnW10gPSBbXG4gICAge1xuICAgICAgdmlld1R5cGU6IFZpZXdUeXBlLlRFWFQsXG4gICAgICBrZXk6ICd0aXRsZScsXG4gICAgICBsYWJlbDogJ2Rhc2hib2FyZE1hbmFnZW1lbnQubmFtZScsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICAgIGtleTogJ2Rlc2NyaXB0aW9uJyxcbiAgICAgIGxhYmVsOiAnZGFzaGJvYXJkTWFuYWdlbWVudC5kZXNjcmlwdGlvbicsXG4gICAgfSxcbiAgICB7XG4gICAgICB2aWV3VHlwZTogVmlld1R5cGUuVEVYVCxcbiAgICAgIGtleTogJ2tleScsXG4gICAgICBsYWJlbDogJ2Rhc2hib2FyZE1hbmFnZW1lbnQua2V5JyxcbiAgICB9LFxuICBdO1xuICBwdWJsaWMgcmVhZG9ubHkgYWN0aW9uSXRlbXM6IEFjdGlvbkl0ZW1bXSA9IFtcbiAgICB7XG4gICAgICBsYWJlbDogJ2ludGVyZmFjZS5kZWxldGUnLFxuICAgICAgY2FsbGJhY2s6IHRoaXMuZGVsZXRlRGFzaGJvYXJkLmJpbmQodGhpcyksXG4gICAgICB0eXBlOiAnZGFuZ2VyJyxcbiAgICB9LFxuICBdO1xuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2U6IERhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXJcbiAgKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLmxvYWREYXRhKCk7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICAgICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk1vZGFsJC5uZXh0KGZhbHNlKTtcbiAgICB0aGlzLmZvcm0ucmVzZXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVEYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbDogQWJzdHJhY3RDb250cm9sIHwgbnVsbCA9IHRoaXMuZm9ybS5nZXQoJ3RpdGxlJyk7XG4gICAgaWYgKCFjb250cm9sIHx8ICFjb250cm9sLnZhbGlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbmV3RGFzaGJvYXJkOiBEYXNoYm9hcmRJdGVtID0gdGhpcy5mb3JtLmdldFJhd1ZhbHVlKCk7XG4gICAgdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZS5kaXNwYXRjaEFjdGlvbihcbiAgICAgIHRoaXMuZGFzaGJvYXJkTWFuYWdlbWVudFNlcnZpY2UuY3JlYXRlRGFzaGJvYXJkKG5ld0Rhc2hib2FyZCkucGlwZShcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgb25Db25maXJtRXZlbnQoZGFzaGJvYXJkS2V5OiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlLmRpc3BhdGNoQWN0aW9uKFxuICAgICAgdGhpcy5kYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZS5kZWxldGVEYXNoYm9hcmQoZGFzaGJvYXJkS2V5KS5waXBlKFxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb250cm9sSW52YWxpZChjb250cm9sS2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgfCBudWxsID0gdGhpcy5mb3JtLmdldChjb250cm9sS2V5KTtcblxuICAgIGlmICghY29udHJvbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICFjb250cm9sLnZhbGlkICYmICFjb250cm9sLnByaXN0aW5lO1xuICB9XG5cbiAgcHVibGljIG9wZW5Nb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5Nb2RhbCQubmV4dCh0cnVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJvd0NsaWNrKGl0ZW06IERhc2hib2FyZEl0ZW0pOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9kYXNoYm9hcmQtbWFuYWdlbWVudC8ke2l0ZW0ua2V5fWBdKTtcbiAgfVxuXG4gIHByaXZhdGUgZGVsZXRlRGFzaGJvYXJkKGRhc2hib2FyZDogRGFzaGJvYXJkSXRlbSk6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlUm93S2V5JC5uZXh0KGRhc2hib2FyZC5rZXkpO1xuICAgIHRoaXMuc2hvd0RlbGV0ZU1vZGFsJC5uZXh0KHRydWUpO1xuICB9XG59XG4iLCI8IS0tXG4gIH4gQ29weXJpZ2h0IDIwMTUtMjAyNCBSaXRlbnNlIEJWLCB0aGUgTmV0aGVybGFuZHMuXG4gIH5cbiAgfiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAgfiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gIH4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gIH5cbiAgfiBodHRwczovL2pvaW51cC5lYy5ldXJvcGEuZXUvY29sbGVjdGlvbi9ldXBsL2V1cGwtdGV4dC1ldXBsLTEyXG4gIH5cbiAgfiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gIH4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIGJhc2lzLFxuICB+IFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICB+IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgfiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAgLS0+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZURhdGEkIHwgYXN5bmMgYXMgZGF0YVwiPlxuICA8dmFsdGltby1jYXJib24tbGlzdFxuICAgIFthY3Rpb25JdGVtc109XCJhY3Rpb25JdGVtc1wiXG4gICAgW2hlYWRlcl09XCJmYWxzZVwiXG4gICAgW2l0ZW1zXT1cImRhdGEuaXRlbXNcIlxuICAgIFtsb2FkaW5nXT1cImRhdGEubG9hZGluZ1wiXG4gICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgIChyb3dDbGlja2VkKT1cIm9uUm93Q2xpY2soJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJ2YWx0aW1vLWRhc2hib2FyZC1tYW5hZ2VtZW50X190YWJsZVwiXG4gID5cbiAgICA8ZGl2IGNhcmJvblRvb2xiYXJDb250ZW50PlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJhZGREYXNoYm9hcmRCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDx2YWx0aW1vLW5vLXJlc3VsdHNcbiAgICAgIFthY3Rpb25dPVwiYWRkRGFzaGJvYXJkQnV0dG9uXCJcbiAgICAgIGRlc2NyaXB0aW9uPVwie3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQubm9SZXN1bHRzLmRlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICB0aXRsZT1cInt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50Lm5vUmVzdWx0cy50aXRsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgID48L3ZhbHRpbW8tbm8tcmVzdWx0cz5cbiAgPC92YWx0aW1vLWNhcmJvbi1saXN0PlxuPC9uZy1jb250YWluZXI+XG5cbjxjZHMtbW9kYWxcbiAgdmFsdGltb0Nkc01vZGFsXG4gIFtvcGVuXT1cIm9wZW5Nb2RhbCQgfCBhc3luY1wiXG4gIHNob3dGb290ZXI9XCJ0cnVlXCJcbiAgdGl0bGU9XCJ7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC5hZGREYXNoYm9hcmQnIHwgdHJhbnNsYXRlIH19XCJcbj5cbiAgPGNkcy1tb2RhbC1oZWFkZXIgW3Nob3dDbG9zZUJ1dHRvbl09XCJ0cnVlXCIgKGNsb3NlU2VsZWN0KT1cImNsb3NlTW9kYWwoKVwiPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+XG4gICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC5hZGREYXNoYm9hcmQnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9oMz5cbiAgPC9jZHMtbW9kYWwtaGVhZGVyPlxuXG4gIDxzZWN0aW9uIGNkc01vZGFsQ29udGVudD5cbiAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiBjbGFzcz1cInZhbHRpbW8tZGFzaGJvYXJkLW1hbmFnZW1lbnRfX2Zvcm1cIj5cbiAgICAgIDxjZHMtbGFiZWwgW2ludmFsaWRdPVwiZ2V0Q29udHJvbEludmFsaWQoJ3RpdGxlJylcIj5cbiAgICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQuYWRkTW9kYWwubmFtZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbYXR0ci5tb2RhbC1wcmltYXJ5LWZvY3VzXT1cInRydWVcIlxuICAgICAgICAgIFtpbnZhbGlkXT1cImdldENvbnRyb2xJbnZhbGlkKCd0aXRsZScpXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0aXRsZVwiXG4gICAgICAgICAgY2RzVGV4dFxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQuYWRkTW9kYWwubmFtZVBsYWNlaG9sZGVyJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Nkcy1sYWJlbD5cblxuICAgICAgPGNkcy1sYWJlbFxuICAgICAgICBbaGVscGVyVGV4dF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC5hZGRNb2RhbC5kZXNjcmlwdGlvbkhlbHBlclRleHQnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgW2ludmFsaWRdPVwiZ2V0Q29udHJvbEludmFsaWQoJ2Rlc2NyaXB0aW9uJylcIlxuICAgICAgPlxuICAgICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC5kZXNjcmlwdGlvbicgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbaW52YWxpZF09XCJnZXRDb250cm9sSW52YWxpZCgnZGVzY3JpcHRpb24nKVwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LmFkZE1vZGFsLmRlc2NyaXB0aW9uUGxhY2Vob2xkZXInIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgLz5cbiAgICAgIDwvY2RzLWxhYmVsPlxuICAgIDwvZm9ybT5cbiAgPC9zZWN0aW9uPlxuXG4gIDxjZHMtbW9kYWwtZm9vdGVyPlxuICAgIDxidXR0b24gY2RzQnV0dG9uPVwiZ2hvc3RcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCI+XG4gICAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC5jYW5jZWwnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG5cbiAgICA8YnV0dG9uIFtkaXNhYmxlZF09XCJ0aGlzLmZvcm0uaW52YWxpZFwiIGNkc0J1dHRvbj1cInByaW1hcnlcIiAoY2xpY2spPVwiY3JlYXRlRGFzaGJvYXJkKClcIj5cbiAgICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LmNyZWF0ZScgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2J1dHRvbj5cbiAgPC9jZHMtbW9kYWwtZm9vdGVyPlxuPC9jZHMtbW9kYWw+XG5cbjx2YWx0aW1vLWNvbmZpcm1hdGlvbi1tb2RhbFxuICBjb25maXJtQnV0dG9uVGV4dFRyYW5zbGF0aW9uS2V5PVwiZGFzaGJvYXJkTWFuYWdlbWVudC5kZWxldGVNb2RhbC5jb25maXJtXCJcbiAgY29uZmlybUJ1dHRvblR5cGU9XCJkYW5nZXJcIlxuICBjb250ZW50VHJhbnNsYXRpb25LZXk9XCJkYXNoYm9hcmRNYW5hZ2VtZW50LmRlbGV0ZU1vZGFsQ29udGVudFwiXG4gIFtvdXRwdXRPbkNvbmZpcm1dPVwiZGVsZXRlUm93S2V5JCB8IGFzeW5jXCJcbiAgW3Nob3dNb2RhbFN1YmplY3QkXT1cInNob3dEZWxldGVNb2RhbCRcIlxuICB0aXRsZVRyYW5zbGF0aW9uS2V5PVwiZGFzaGJvYXJkTWFuYWdlbWVudC5kZWxldGVcIlxuICAoY29uZmlybUV2ZW50KT1cIm9uQ29uZmlybUV2ZW50KCRldmVudClcIlxuPjwvdmFsdGltby1jb25maXJtYXRpb24tbW9kYWw+XG5cbjxuZy10ZW1wbGF0ZSAjYWRkRGFzaGJvYXJkQnV0dG9uPlxuICA8YnV0dG9uIGNkc0J1dHRvbj1cInByaW1hcnlcIiAoY2xpY2spPVwib3Blbk1vZGFsKClcIj5cbiAgICB7eyAnZGFzaGJvYXJkTWFuYWdlbWVudC5hZGREYXNoYm9hcmQnIHwgdHJhbnNsYXRlIH19XG5cbiAgICA8c3ZnIGNkc0ljb249XCJhZGRcIiBzaXplPVwiMTZcIiBjbGFzcz1cImNkcy0tYnRuX19pY29uXCI+PC9zdmc+XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3
|
-
*
|
|
4
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
5
|
-
* you may not use this file except in compliance with the License.
|
|
6
|
-
* You may obtain a copy of the License at
|
|
7
|
-
*
|
|
8
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
9
|
-
*
|
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
-
* See the License for the specific language governing permissions and
|
|
14
|
-
* limitations under the License.
|
|
15
|
-
*/
|
|
16
|
-
import { 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 "@valtimo/components";
|
|
27
|
-
import * as i6 from "@ngx-translate/core";
|
|
28
|
-
export class EditDashboardModalComponent {
|
|
29
|
-
get dashboardTitle() {
|
|
30
|
-
return this.editDashboardForm.get('title');
|
|
31
|
-
}
|
|
32
|
-
get dashboardDescription() {
|
|
33
|
-
return this.editDashboardForm.get('description');
|
|
34
|
-
}
|
|
35
|
-
constructor(fb, dashboardManagementService) {
|
|
36
|
-
this.fb = fb;
|
|
37
|
-
this.dashboardManagementService = dashboardManagementService;
|
|
38
|
-
this.saveEvent = new EventEmitter();
|
|
39
|
-
this.open$ = new BehaviorSubject(false);
|
|
40
|
-
this.disabled$ = new BehaviorSubject(false);
|
|
41
|
-
this.editDashboardForm = this.fb.group({
|
|
42
|
-
title: this.fb.control('', [Validators.required]),
|
|
43
|
-
description: this.fb.control('', [Validators.required]),
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
ngOnInit() {
|
|
47
|
-
this.openOpenSubscription();
|
|
48
|
-
}
|
|
49
|
-
closeModal() {
|
|
50
|
-
this.open$.next(false);
|
|
51
|
-
setTimeout(() => {
|
|
52
|
-
this.editDashboardForm.reset();
|
|
53
|
-
}, CARBON_CONSTANTS.modalAnimationMs);
|
|
54
|
-
}
|
|
55
|
-
saveDashboard() {
|
|
56
|
-
this.disable();
|
|
57
|
-
this.dashboardManagementService
|
|
58
|
-
.updateDashboard({
|
|
59
|
-
description: this.dashboardDescription.value,
|
|
60
|
-
title: this.dashboardTitle.value,
|
|
61
|
-
key: this.dashboard.key,
|
|
62
|
-
})
|
|
63
|
-
.subscribe(() => {
|
|
64
|
-
this.saveEvent.emit();
|
|
65
|
-
this.closeModal();
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
setEditDashboardForm() {
|
|
69
|
-
if (this.dashboard) {
|
|
70
|
-
this.dashboardTitle?.setValue(this.dashboard.title);
|
|
71
|
-
this.dashboardDescription?.setValue(this.dashboard.description);
|
|
72
|
-
}
|
|
73
|
-
this.enable();
|
|
74
|
-
}
|
|
75
|
-
openOpenSubscription() {
|
|
76
|
-
this._openSubscription = this.showModal$.subscribe(show => {
|
|
77
|
-
this.setEditDashboardForm();
|
|
78
|
-
this.open$.next(show);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
disable() {
|
|
82
|
-
this.disabled$.next(true);
|
|
83
|
-
}
|
|
84
|
-
enable() {
|
|
85
|
-
this.disabled$.next(false);
|
|
86
|
-
}
|
|
87
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditDashboardModalComponent, deps: [{ token: i1.FormBuilder }, { token: i2.DashboardManagementService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
88
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: EditDashboardModalComponent, selector: "valtimo-edit-dashboard-modal", inputs: { showModal$: "showModal$", dashboard: "dashboard" }, outputs: { saveEvent: "saveEvent" }, providers: [NotificationService], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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\n *ngIf=\"editDashboardForm\"\n [formGroup]=\"editDashboardForm\"\n class=\"dashboard-modal__form\"\n [cdsLayer]=\"1\"\n >\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: [".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/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "directive", type: 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: "directive", type: i3.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "directive", type: i5.ValtimoCdsModalDirective, selector: "[valtimoCdsModal]", inputs: ["enableOverflow"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
89
|
-
}
|
|
90
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: EditDashboardModalComponent, decorators: [{
|
|
91
|
-
type: Component,
|
|
92
|
-
args: [{ selector: 'valtimo-edit-dashboard-modal', encapsulation: ViewEncapsulation.None, providers: [NotificationService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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\n *ngIf=\"editDashboardForm\"\n [formGroup]=\"editDashboardForm\"\n class=\"dashboard-modal__form\"\n [cdsLayer]=\"1\"\n >\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: [".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/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
93
|
-
}], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.DashboardManagementService }], propDecorators: { showModal$: [{
|
|
94
|
-
type: Input
|
|
95
|
-
}], dashboard: [{
|
|
96
|
-
type: Input
|
|
97
|
-
}], saveEvent: [{
|
|
98
|
-
type: Output
|
|
99
|
-
}] } });
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdC1kYXNoYm9hcmQtbW9kYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92YWx0aW1vL2Rhc2hib2FyZC1tYW5hZ2VtZW50L3NyYy9saWIvY29tcG9uZW50cy9lZGl0LWRhc2hib2FyZC1tb2RhbC9lZGl0LWRhc2hib2FyZC1tb2RhbC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRpbW8vZGFzaGJvYXJkLW1hbmFnZW1lbnQvc3JjL2xpYi9jb21wb25lbnRzL2VkaXQtZGFzaGJvYXJkLW1vZGFsL2VkaXQtZGFzaGJvYXJkLW1vZGFsLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFFSCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFDLGVBQWUsRUFBMkIsTUFBTSxNQUFNLENBQUM7QUFFL0QsT0FBTyxFQUFjLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7OztBQVlyRCxNQUFNLE9BQU8sMkJBQTJCO0lBWXRDLElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQVcsb0JBQW9CO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBSUQsWUFDbUIsRUFBZSxFQUNmLDBCQUFzRDtRQUR0RCxPQUFFLEdBQUYsRUFBRSxDQUFhO1FB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U0FBUztzQkFBekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciBFVVBMLCBWZXJzaW9uIDEuMiAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqIGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge05vdGlmaWNhdGlvblNlcnZpY2V9IGZyb20gJ2NhcmJvbi1jb21wb25lbnRzLWFuZ3VsYXInO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge0Rhc2hib2FyZEl0ZW19IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge0Zvcm1CdWlsZGVyLCBWYWxpZGF0b3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0NBUkJPTl9DT05TVEFOVFN9IGZyb20gJ0B2YWx0aW1vL2NvbXBvbmVudHMnO1xuaW1wb3J0IHtEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZX0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGFzaGJvYXJkLW1hbmFnZW1lbnQuc2VydmljZSc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb25PdXRwdXR9IGZyb20gJ0B2YWx0aW1vL2Rhc2hib2FyZCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbHRpbW8tZWRpdC1kYXNoYm9hcmQtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdC1kYXNoYm9hcmQtbW9kYWwuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VkaXQtZGFzaGJvYXJkLW1vZGFsLnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbTm90aWZpY2F0aW9uU2VydmljZV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBFZGl0RGFzaGJvYXJkTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwdWJsaWMgc2hvd01vZGFsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgQElucHV0KCkgcHVibGljIGRhc2hib2FyZDogRGFzaGJvYXJkSXRlbTtcbiAgQE91dHB1dCgpIHB1YmxpYyBzYXZlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbmZpZ3VyYXRpb25PdXRwdXQ+KCk7XG5cbiAgcHVibGljIHJlYWRvbmx5IG9wZW4kID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGVkaXREYXNoYm9hcmRGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgdGl0bGU6IHRoaXMuZmIuY29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBkZXNjcmlwdGlvbjogdGhpcy5mYi5jb250cm9sKCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxuICB9KTtcblxuICBwdWJsaWMgZ2V0IGRhc2hib2FyZFRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmVkaXREYXNoYm9hcmRGb3JtLmdldCgndGl0bGUnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGFzaGJvYXJkRGVzY3JpcHRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZWRpdERhc2hib2FyZEZvcm0uZ2V0KCdkZXNjcmlwdGlvbicpO1xuICB9XG5cbiAgcHJpdmF0ZSBfb3BlblN1YnNjcmlwdGlvbiE6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlOiBEYXNoYm9hcmRNYW5hZ2VtZW50U2VydmljZVxuICApIHt9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMub3Blbk9wZW5TdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZU1vZGFsKCk6IHZvaWQge1xuICAgIHRoaXMub3BlbiQubmV4dChmYWxzZSk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZWRpdERhc2hib2FyZEZvcm0ucmVzZXQoKTtcbiAgICB9LCBDQVJCT05fQ09OU1RBTlRTLm1vZGFsQW5pbWF0aW9uTXMpO1xuICB9XG5cbiAgcHVibGljIHNhdmVEYXNoYm9hcmQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlKCk7XG5cbiAgICB0aGlzLmRhc2hib2FyZE1hbmFnZW1lbnRTZXJ2aWNlXG4gICAgICAudXBkYXRlRGFzaGJvYXJkKHtcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGFzaGJvYXJkRGVzY3JpcHRpb24udmFsdWUsXG4gICAgICAgIHRpdGxlOiB0aGlzLmRhc2hib2FyZFRpdGxlLnZhbHVlLFxuICAgICAgICBrZXk6IHRoaXMuZGFzaGJvYXJkLmtleSxcbiAgICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zYXZlRXZlbnQuZW1pdCgpO1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRFZGl0RGFzaGJvYXJkRm9ybSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5kYXNoYm9hcmQpIHtcbiAgICAgIHRoaXMuZGFzaGJvYXJkVGl0bGU/LnNldFZhbHVlKHRoaXMuZGFzaGJvYXJkLnRpdGxlKTtcbiAgICAgIHRoaXMuZGFzaGJvYXJkRGVzY3JpcHRpb24/LnNldFZhbHVlKHRoaXMuZGFzaGJvYXJkLmRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLmVuYWJsZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuT3BlblN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9vcGVuU3Vic2NyaXB0aW9uID0gdGhpcy5zaG93TW9kYWwkLnN1YnNjcmliZShzaG93ID0+IHtcbiAgICAgIHRoaXMuc2V0RWRpdERhc2hib2FyZEZvcm0oKTtcbiAgICAgIHRoaXMub3BlbiQubmV4dChzaG93KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZGlzYWJsZSgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbmFibGUoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCQubmV4dChmYWxzZSk7XG4gIH1cbn1cbiIsIjwhLS1cbiAgfiBDb3B5cmlnaHQgMjAxNS0yMDI0IFJpdGVuc2UgQlYsIHRoZSBOZXRoZXJsYW5kcy5cbiAgflxuICB+IExpY2Vuc2VkIHVuZGVyIEVVUEwsIFZlcnNpb24gMS4yICh0aGUgXCJMaWNlbnNlXCIpO1xuICB+IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgfiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAgflxuICB+IGh0dHBzOi8vam9pbnVwLmVjLmV1cm9wYS5ldS9jb2xsZWN0aW9uL2V1cGwvZXVwbC10ZXh0LWV1cGwtMTJcbiAgflxuICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAgfiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgYmFzaXMsXG4gIH4gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gIH4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICB+IGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICAtLT5cblxuPGNkcy1tb2RhbFxuICAqbmdJZj1cIntkaXNhYmxlZDogZGlzYWJsZWQkIHwgYXN5bmN9IGFzIG9ic1wiXG4gIHZhbHRpbW9DZHNNb2RhbFxuICBbb3Blbl09XCJvcGVuJCB8IGFzeW5jXCJcbiAgc2hvd0Zvb3Rlcj1cInRydWVcIlxuICB0aXRsZT1cInt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZWRpdERhc2hib2FyZCcgfCB0cmFuc2xhdGUgfX1cIlxuICBjbGFzcz1cImVkaXQtZGFzaGJvYXJkLW1vZGFsXCJcbj5cbiAgPGNkcy1tb2RhbC1oZWFkZXIgW3Nob3dDbG9zZUJ1dHRvbl09XCJ0cnVlXCIgKGNsb3NlU2VsZWN0KT1cImNsb3NlTW9kYWwoKVwiPlxuICAgIDxoMyBjZHNNb2RhbEhlYWRlckhlYWRpbmc+e3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5lZGl0RGFzaGJvYXJkJyB8IHRyYW5zbGF0ZSB9fTwvaDM+XG4gIDwvY2RzLW1vZGFsLWhlYWRlcj5cblxuICA8c2VjdGlvbiBjZHNNb2RhbENvbnRlbnQ+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVkaXREYXNoYm9hcmRGb3JtVGVtcGxhdGU7Y29udGV4dDp7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvc2VjdGlvbj5cblxuICA8Y2RzLW1vZGFsLWZvb3Rlcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZWRpdERhc2hib2FyZEJ1dHRvbnM7Y29udGV4dDp7b2JzOiBvYnN9XCI+PC9uZy1jb250YWluZXI+XG4gIDwvY2RzLW1vZGFsLWZvb3Rlcj5cbjwvY2RzLW1vZGFsPlxuXG48bmctdGVtcGxhdGUgI2VkaXREYXNoYm9hcmRGb3JtVGVtcGxhdGUgbGV0LW9icz1cIm9ic1wiPlxuICA8Zm9ybVxuICAgICpuZ0lmPVwiZWRpdERhc2hib2FyZEZvcm1cIlxuICAgIFtmb3JtR3JvdXBdPVwiZWRpdERhc2hib2FyZEZvcm1cIlxuICAgIGNsYXNzPVwiZGFzaGJvYXJkLW1vZGFsX19mb3JtXCJcbiAgICBbY2RzTGF5ZXJdPVwiMVwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybV9fZWxlbWVudFwiPlxuICAgICAgPGNkcy1sYWJlbFxuICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgW2ludmFsaWRdPVwiZGFzaGJvYXJkVGl0bGUuZGlydHkgJiYgZGFzaGJvYXJkVGl0bGUuaW52YWxpZFwiXG4gICAgICA+XG4gICAgICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuZm9ybS5kYXNoYm9hcmRUaXRsZScgfCB0cmFuc2xhdGUgfX1cblxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjZHNUZXh0XG4gICAgICAgICAgW2Rpc2FibGVkXT1cIm9icy5kaXNhYmxlZFwiXG4gICAgICAgICAgW2ludmFsaWRdPVwiZGFzaGJvYXJkVGl0bGUuZGlydHkgJiYgZGFzaGJvYXJkVGl0bGUuaW52YWxpZFwiXG4gICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidGl0bGVcIlxuICAgICAgICAgIFthdHRyLm1vZGFsLXByaW1hcnktZm9jdXNdPVwidHJ1ZVwiXG4gICAgICAgIC8+XG4gICAgICA8L2Nkcy1sYWJlbD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmb3JtX19lbGVtZW50XCI+XG4gICAgICA8Y2RzLWxhYmVsXG4gICAgICAgIFtkaXNhYmxlZF09XCJvYnMuZGlzYWJsZWRcIlxuICAgICAgICBbaGVscGVyVGV4dF09XCInZGFzaGJvYXJkTWFuYWdlbWVudC53aWRnZXRzLmZvcm0uZGFzaGJvYXJkRGVzY3JpcHRpb25IZWxwZXJUZXh0JyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgIFtpbnZhbGlkXT1cImRhc2hib2FyZERlc2NyaXB0aW9uLmRpcnR5ICYmIGRhc2hib2FyZERlc2NyaXB0aW9uLmludmFsaWRcIlxuICAgICAgICBbaW52YWxpZFRleHRdPVwiXG4gICAgICAgICAgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLmRhc2hib2FyZERlc2NyaXB0aW9uSGVscGVyVGV4dCcgfCB0cmFuc2xhdGVcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAge3sgJ2Rhc2hib2FyZE1hbmFnZW1lbnQud2lkZ2V0cy5mb3JtLmRhc2hib2FyZERlc2NyaXB0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuXG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNkc1RleHRcbiAgICAgICAgICBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCJcbiAgICAgICAgICBbaW52YWxpZF09XCJkYXNoYm9hcmREZXNjcmlwdGlvbi5kaXJ0eSAmJiBkYXNoYm9hcmREZXNjcmlwdGlvbi5pbnZhbGlkXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkZXNjcmlwdGlvblwiXG4gICAgICAgIC8+XG4gICAgICA8L2Nkcy1sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNlZGl0RGFzaGJvYXJkQnV0dG9ucyBsZXQtb2JzPVwib2JzXCI+XG4gIDxidXR0b24gY2RzQnV0dG9uPVwiZ2hvc3RcIiBbZGlzYWJsZWRdPVwib2JzLmRpc2FibGVkXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiPlxuICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuY2FuY2VsJyB8IHRyYW5zbGF0ZSB9fVxuICA8L2J1dHRvbj5cblxuICA8YnV0dG9uXG4gICAgY2RzQnV0dG9uPVwicHJpbWFyeVwiXG4gICAgW2Rpc2FibGVkXT1cImVkaXREYXNoYm9hcmRGb3JtLmludmFsaWQgfHwgb2JzLmRpc2FibGVkXCJcbiAgICAoY2xpY2spPVwic2F2ZURhc2hib2FyZCgpXCJcbiAgPlxuICAgIHt7ICdkYXNoYm9hcmRNYW5hZ2VtZW50LndpZGdldHMuY29tcGxldGUnIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|