@valtimo/dashboard-management 10.7.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/dashboard-details/dashboard-details.component.mjs +153 -0
- package/esm2022/lib/components/dashboard-management/dashboard-management.component.mjs +119 -0
- package/esm2022/lib/components/edit-dashboard-modal/edit-dashboard-modal.mjs +99 -0
- package/esm2022/lib/components/widget-configuration-container/widget-configuration-container.component.mjs +137 -0
- package/esm2022/lib/components/widget-modal/widget-modal.component.mjs +250 -0
- package/{esm2020 → esm2022}/lib/dashboard-management-routing.module.mjs +5 -5
- package/esm2022/lib/dashboard-management.module.mjs +100 -0
- package/esm2022/lib/models/dashboard-item.type.mjs +17 -0
- package/esm2022/lib/models/index.mjs +18 -0
- package/esm2022/lib/models/widget.model.mjs +17 -0
- package/esm2022/lib/services/dashboard-management.service.mjs +88 -0
- package/{esm2020 → esm2022}/public-api.mjs +2 -2
- package/fesm2022/valtimo-dashboard-management.mjs +969 -0
- package/fesm2022/valtimo-dashboard-management.mjs.map +1 -0
- package/lib/components/dashboard-details/dashboard-details.component.d.ts +4 -4
- package/lib/components/dashboard-management/dashboard-management.component.d.ts +4 -4
- package/lib/components/edit-dashboard-modal/edit-dashboard-modal.d.ts +1 -1
- package/lib/components/widget-configuration-container/widget-configuration-container.component.d.ts +1 -1
- package/lib/components/widget-modal/widget-modal.component.d.ts +1 -1
- package/lib/dashboard-management.module.d.ts +4 -4
- package/lib/models/widget.model.d.ts +1 -1
- package/package.json +8 -14
- package/esm2020/lib/components/dashboard-details/dashboard-details.component.mjs +0 -155
- package/esm2020/lib/components/dashboard-management/dashboard-management.component.mjs +0 -106
- package/esm2020/lib/components/edit-dashboard-modal/edit-dashboard-modal.mjs +0 -99
- package/esm2020/lib/components/widget-configuration-container/widget-configuration-container.component.mjs +0 -137
- package/esm2020/lib/components/widget-modal/widget-modal.component.mjs +0 -235
- package/esm2020/lib/dashboard-management.module.mjs +0 -100
- package/esm2020/lib/models/dashboard-item.type.mjs +0 -2
- package/esm2020/lib/models/index.mjs +0 -3
- package/esm2020/lib/models/widget.model.mjs +0 -2
- package/esm2020/lib/services/dashboard-management.service.mjs +0 -88
- package/fesm2015/valtimo-dashboard-management.mjs +0 -949
- package/fesm2015/valtimo-dashboard-management.mjs.map +0 -1
- package/fesm2020/valtimo-dashboard-management.mjs +0 -940
- package/fesm2020/valtimo-dashboard-management.mjs.map +0 -1
- /package/{esm2020 → esm2022}/valtimo-dashboard-management.mjs +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"valtimo-dashboard-management.mjs","sources":["../../../../projects/valtimo/dashboard-management/src/lib/services/dashboard-management.service.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/widget-configuration-container/widget-configuration-container.component.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/widget-configuration-container/widget-configuration-container.component.html","../../../../projects/valtimo/dashboard-management/src/lib/components/widget-modal/widget-modal.component.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/widget-modal/widget-modal.component.html","../../../../projects/valtimo/dashboard-management/src/lib/components/edit-dashboard-modal/edit-dashboard-modal.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/edit-dashboard-modal/edit-dashboard-modal.html","../../../../projects/valtimo/dashboard-management/src/lib/components/dashboard-details/dashboard-details.component.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/dashboard-details/dashboard-details.component.html","../../../../projects/valtimo/dashboard-management/src/lib/components/dashboard-management/dashboard-management.component.ts","../../../../projects/valtimo/dashboard-management/src/lib/components/dashboard-management/dashboard-management.component.html","../../../../projects/valtimo/dashboard-management/src/lib/dashboard-management-routing.module.ts","../../../../projects/valtimo/dashboard-management/src/lib/dashboard-management.module.ts","../../../../projects/valtimo/dashboard-management/src/public-api.ts","../../../../projects/valtimo/dashboard-management/src/valtimo-dashboard-management.ts"],"sourcesContent":["import {HttpClient} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/config';\nimport {BehaviorSubject, catchError, Observable, of, switchMap, take, tap} from 'rxjs';\nimport {DashboardItem, DashboardWidget, WidgetDataSource} from '../models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DashboardManagementService {\n private valtimoEndpointUri: string;\n\n public dashboards$ = new BehaviorSubject<{items: DashboardItem[] | null; loading: boolean}>({\n items: null,\n loading: true,\n });\n\n public loadData(): void {\n this.http\n .get<DashboardItem[]>(this.valtimoEndpointUri)\n .pipe(\n take(1),\n tap(() => {\n this.dashboards$.next({items: null, loading: true});\n })\n )\n .subscribe({\n next: (items: DashboardItem[]) => {\n this.dashboards$.next({items, loading: false});\n },\n error: error => {\n console.error(error);\n },\n });\n }\n\n constructor(private readonly http: HttpClient, private readonly configService: ConfigService) {\n this.valtimoEndpointUri = `${this.configService.config.valtimoApi.endpointUri}management/v1/dashboard`;\n }\n\n public createDashboard(dashboard: DashboardItem): Observable<DashboardItem> {\n return this.http.post<DashboardItem>(this.valtimoEndpointUri, dashboard);\n }\n\n public updateDashboards(dashboards: Array<DashboardItem>): Observable<Array<DashboardItem>> {\n return this.http.put<Array<DashboardItem>>(this.valtimoEndpointUri, dashboards);\n }\n\n public updateDashboard(dashboard: DashboardItem): Observable<DashboardItem> {\n return this.http.put<DashboardItem>(`${this.valtimoEndpointUri}/${dashboard.key}`, dashboard);\n }\n\n public deleteDashboard(dashboardKey: string): Observable<null> {\n return this.http.delete<null>(`${this.valtimoEndpointUri}/${dashboardKey}`);\n }\n\n public dispatchAction(actionResult: Observable<DashboardItem | null>): void {\n actionResult\n .pipe(\n switchMap(() => this.getDashboards()),\n tap(() => {\n this.dashboards$.next({items: null, loading: true});\n }),\n take(1),\n catchError(error => of(error))\n )\n .subscribe({\n next: (items: DashboardItem[]) => this.dashboards$.next({items, loading: false}),\n error: error => {\n console.error(error);\n },\n });\n }\n\n public getDashboard(dashboardKey: string): Observable<DashboardItem> {\n return this.http.get<DashboardItem>(`${this.valtimoEndpointUri}/${dashboardKey}`);\n }\n\n public getDashboardWidgetConfiguration(dashboardKey: string): Observable<Array<DashboardWidget>> {\n return this.http.get<Array<DashboardWidget>>(\n `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration`\n );\n }\n\n public createDashboardWidgetConfiguration(\n dashboardKey: string,\n widgetConfiguration: DashboardWidget\n ): Observable<DashboardWidget> {\n return this.http.post<DashboardWidget>(\n `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration`,\n widgetConfiguration\n );\n }\n\n public updateDashboardWidgetConfigurations(\n dashboardKey: string,\n widgetConfigurations: Array<DashboardWidget>\n ): Observable<Array<DashboardWidget>> {\n return this.http.put<Array<DashboardWidget>>(\n `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration`,\n widgetConfigurations\n );\n }\n\n public updateDashboardWidgetConfiguration(\n dashboardKey: string,\n widgetConfiguration: DashboardWidget\n ): Observable<DashboardWidget> {\n return this.http.put<DashboardWidget>(\n `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration/${widgetConfiguration.key}`,\n widgetConfiguration\n );\n }\n\n public deleteDashboardWidgetConfiguration(\n dashboardKey: string,\n widgetKey: string\n ): Observable<DashboardWidget> {\n return this.http.delete<DashboardWidget>(\n `${this.valtimoEndpointUri}/${dashboardKey}/widget-configuration/${widgetKey}`\n );\n }\n\n public getDataSources(): Observable<Array<WidgetDataSource>> {\n return this.http.get<Array<WidgetDataSource>>(`${this.valtimoEndpointUri}/widget-data-sources`);\n }\n\n private getDashboards(): Observable<DashboardItem[]> {\n return this.http.get<DashboardItem[]>(this.valtimoEndpointUri);\n }\n}\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n Component,\n ComponentRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n Type,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Subscription} from 'rxjs';\nimport {tap} from 'rxjs/operators';\nimport {\n ConfigurationComponent,\n ConfigurationOutput,\n DataSourceConfigurationComponent,\n DisplayTypeConfigurationComponent,\n WidgetService,\n} from '@valtimo/dashboard';\n\n@Component({\n selector: 'valtimo-widget-configuration-container',\n templateUrl: './widget-configuration-container.component.html',\n})\nexport class WidgetConfigurationContainerComponent\n implements OnInit, OnDestroy, ConfigurationComponent\n{\n @ViewChild('widgetConfigurationComponent', {static: true, read: ViewContainerRef})\n private readonly _dynamicContainer: ViewContainerRef;\n\n @Input() public set dataSourceKey(value: string) {\n this._dataSourceKey$.next(value);\n }\n @Input() public set displayTypeKey(value: string) {\n this._displayTypeKey$.next(value);\n }\n @Input() public set disabled(disabledValue: boolean) {\n this._disabled$.next(disabledValue);\n }\n @Input() public set prefillConfiguration(prefillConfigurationValue) {\n this._prefillConfiguration$.next(prefillConfigurationValue);\n }\n @Output() public configurationEvent = new EventEmitter<ConfigurationOutput>();\n\n private _configurationSubscription!: Subscription;\n private readonly _subscriptions = new Subscription();\n\n private readonly _componentRef$ = new BehaviorSubject<\n ComponentRef<DataSourceConfigurationComponent | DisplayTypeConfigurationComponent> | undefined\n >(undefined);\n private readonly _dataSourceKey$ = new BehaviorSubject<string>('');\n private readonly _displayTypeKey$ = new BehaviorSubject<string>('');\n private readonly _disabled$ = new BehaviorSubject<boolean>(false);\n private readonly _prefillConfiguration$ = new BehaviorSubject<object | null>(null);\n\n constructor(private readonly widgetService: WidgetService) {}\n\n public ngOnInit(): void {\n this.openConfigurationComponentSubscription();\n this.openComponentInstanceSubscription();\n this.openDisabledSubscription();\n this.openPrefillConfigurationSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openConfigurationComponentSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this._displayTypeKey$,\n this._dataSourceKey$,\n this.widgetService.supportedDisplayTypes$,\n this.widgetService.supportedDataSources$,\n ])\n .pipe(\n tap(([displayTypeKey, dataSourceKey, supportedDisplayTypes, supportedDataSources]) => {\n let configurationComponent!: Type<\n DisplayTypeConfigurationComponent | DataSourceConfigurationComponent\n >;\n\n this._dynamicContainer.clear();\n\n const displayTypeSpecification =\n displayTypeKey &&\n supportedDisplayTypes.find(type => type.displayTypeKey === displayTypeKey);\n const dataSourceSpecification =\n dataSourceKey &&\n supportedDataSources.find(source => source.dataSourceKey === dataSourceKey);\n\n if (displayTypeSpecification && displayTypeSpecification.configurationComponent) {\n configurationComponent = displayTypeSpecification.configurationComponent;\n } else if (dataSourceSpecification && dataSourceSpecification.configurationComponent) {\n configurationComponent = dataSourceSpecification.configurationComponent;\n }\n\n if (configurationComponent) {\n const componentRef = this._dynamicContainer.createComponent(configurationComponent);\n this.configurationEvent.emit({valid: false, data: {}});\n this._componentRef$.next(componentRef);\n } else {\n this.configurationEvent.emit({valid: true, data: {}});\n }\n })\n )\n .subscribe()\n );\n }\n\n private openComponentInstanceSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._componentRef$, this._dataSourceKey$, this._displayTypeKey$]).subscribe(\n ([ref, dataSourceKey, displayTypeKey]) => {\n const instance = ref?.instance;\n\n this._configurationSubscription?.unsubscribe();\n\n if (instance) {\n if (displayTypeKey) {\n (instance as DisplayTypeConfigurationComponent).displayTypeKey = displayTypeKey;\n } else if (dataSourceKey) {\n (instance as DataSourceConfigurationComponent).dataSourceKey = dataSourceKey;\n }\n\n this._configurationSubscription = instance.configurationEvent.subscribe(\n configuration => {\n this.configurationEvent.emit(configuration);\n }\n );\n }\n }\n )\n );\n }\n\n private openDisabledSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._componentRef$, this._disabled$]).subscribe(([ref, disabled]) => {\n const instance = ref?.instance;\n\n if (instance) {\n instance.disabled = disabled;\n }\n })\n );\n }\n\n private openPrefillConfigurationSubscription(): void {\n this._subscriptions.add(\n combineLatest([this._componentRef$, this._prefillConfiguration$]).subscribe(\n ([ref, prefillConfiguration]) => {\n const instance = ref?.instance;\n\n if (instance && prefillConfiguration) {\n instance.prefillConfiguration = prefillConfiguration;\n }\n }\n )\n );\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-template #widgetConfigurationComponent></ng-template>\n","import {\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n filter,\n map,\n Observable,\n Subscription,\n switchMap,\n take,\n tap,\n} from 'rxjs';\nimport {DashboardItem, WidgetDataSource, WidgetModalType} from '../../models';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {ListItem, NotificationService} from 'carbon-components-angular';\nimport {TranslateService} from '@ngx-translate/core';\nimport {DOCUMENT} from '@angular/common';\nimport {DashboardManagementService} from '../../services/dashboard-management.service';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {\n ConfigurationOutput,\n DashboardWidgetConfiguration,\n DisplayTypeSpecification,\n WidgetService,\n WidgetTranslationService,\n} from '@valtimo/dashboard';\n\n@Component({\n selector: 'valtimo-widget-modal',\n templateUrl: './widget-modal.component.html',\n styleUrls: ['./widget-modal.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [NotificationService],\n})\nexport class WidgetModalComponent implements OnInit, OnDestroy {\n @Input() public showModal$: Observable<boolean>;\n @Input() public type: WidgetModalType;\n @Input() public dashboard: DashboardItem;\n @Input() public widgetKey!: string;\n @Input() public set editWidgetConfiguration(configuration: DashboardWidgetConfiguration) {\n if (configuration) {\n this.title.setValue(configuration.title);\n this.dataSourceSelected({item: {key: configuration.dataSourceKey}} as any);\n this.displayTypeSelected({item: {key: configuration.displayType}} as any);\n this.dataSourcePrefillConfig$.next(configuration.dataSourceProperties);\n this.displayTypePrefillConfig$.next(configuration.displayTypeProperties);\n } else {\n this.dataSourcePrefillConfig$.next(null);\n this.displayTypePrefillConfig$.next(null);\n }\n }\n @Output() public saveEvent = new EventEmitter<ConfigurationOutput>();\n\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n dataSource: this.fb.control(null, [Validators.required]),\n displayType: this.fb.control(null, [Validators.required]),\n });\n\n public readonly open$ = new BehaviorSubject<boolean>(false);\n public readonly selectedDataSourceKey$ = new BehaviorSubject<string>('');\n public readonly selectedDisplayTypeKey$ = new BehaviorSubject<string>('');\n\n public readonly dataSourceItems$: Observable<Array<ListItem>> = combineLatest([\n this.dashboardManagementService.getDataSources(),\n this.selectedDataSourceKey$,\n this.widgetService.supportedDataSources$,\n this.translateService.stream('key'),\n ]).pipe(\n filter(([dataSources]) => !!dataSources),\n tap(([dataSources, selectedDataSourceKey]) => {\n if (selectedDataSourceKey) {\n this.setCompatibleDisplayTypes(dataSources, selectedDataSourceKey);\n } else {\n this.resetCompatibleDisplayTypes();\n }\n }),\n map(([dataSources, selectedDataSourceKey, supportedDataSources]) =>\n dataSources\n .filter(dataSource =>\n supportedDataSources.find(\n supportedDataSource => supportedDataSource.dataSourceKey === dataSource.key\n )\n )\n .map(dataSource => ({\n content: this.widgetTranslationService.instant('title', dataSource.key),\n selected: selectedDataSourceKey === dataSource.key,\n key: dataSource.key,\n }))\n )\n );\n\n public readonly dataSourcePrefillConfig$ = new BehaviorSubject<object | null>(null);\n public readonly displayTypePrefillConfig$ = new BehaviorSubject<object | null>(null);\n\n private readonly _compatibleDisplayTypes$ = new BehaviorSubject<Array<DisplayTypeSpecification>>(\n []\n );\n\n public readonly displayTypeItems$: Observable<Array<ListItem>> = combineLatest([\n this._compatibleDisplayTypes$,\n this.selectedDisplayTypeKey$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([compatibleDisplayTypes, selectedDisplayTypeKey]) =>\n compatibleDisplayTypes.map(displayType => ({\n content: this.widgetTranslationService.instant('title', displayType.displayTypeKey),\n selected: displayType.displayTypeKey === selectedDisplayTypeKey,\n key: displayType.displayTypeKey,\n }))\n )\n );\n\n public readonly displayTypeDropdownDisabled$: Observable<boolean> = combineLatest([\n this._compatibleDisplayTypes$,\n this.selectedDataSourceKey$,\n ]).pipe(\n map(\n ([compatibleDisplayTypes, selectedDataSourceKey]) =>\n compatibleDisplayTypes?.length === 0 || !selectedDataSourceKey\n ),\n tap(displayTypeDropdownDisabled => {\n if (displayTypeDropdownDisabled) {\n this.displayType?.disable();\n } else {\n this.displayType?.enable();\n }\n })\n );\n\n public readonly dataSourceConfiguration$ = new BehaviorSubject<ConfigurationOutput>({\n valid: false,\n data: {},\n });\n public readonly displayTypeConfiguration$ = new BehaviorSubject<ConfigurationOutput>({\n valid: false,\n data: {},\n });\n\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n\n private _openSubscription!: Subscription;\n\n public get title() {\n return this.form.get('title');\n }\n public get key() {\n return this.form.get('key');\n }\n public get dataSource() {\n return this.form.get('dataSource');\n }\n\n public get displayType() {\n return this.form.get('displayType');\n }\n\n constructor(\n @Inject(DOCUMENT) private readonly document: Document,\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService,\n private readonly notificationService: NotificationService,\n private readonly dashboardManagementService: DashboardManagementService,\n private readonly widgetService: WidgetService,\n private readonly widgetTranslationService: WidgetTranslationService\n ) {}\n\n public ngOnInit(): void {\n this.openOpenSubscription();\n }\n\n public ngOnDestroy(): void {\n this._openSubscription?.unsubscribe();\n }\n\n public closeModal(): void {\n this.open$.next(false);\n\n setTimeout(() => {\n this.enable();\n this.form.reset();\n this.selectedDataSourceKey$.next('');\n this.selectedDisplayTypeKey$.next('');\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public save(): void {\n this.disable();\n\n combineLatest([\n this.selectedDataSourceKey$,\n this.selectedDisplayTypeKey$,\n this.displayTypeConfiguration$,\n this.dataSourceConfiguration$,\n ])\n .pipe(\n take(1),\n map(\n ([\n selectedDataSourceKey,\n selectedDisplayTypeKey,\n displayTypeConfiguration,\n dataSourceConfiguration,\n ]) => ({\n title: this.title.value,\n displayType: selectedDisplayTypeKey,\n dataSourceKey: selectedDataSourceKey,\n dataSourceProperties: {...dataSourceConfiguration.data},\n displayTypeProperties: {...displayTypeConfiguration.data},\n })\n ),\n switchMap(widgetUpdateObject =>\n this.type === 'create'\n ? this.dashboardManagementService.createDashboardWidgetConfiguration(\n this.dashboard.key,\n widgetUpdateObject\n )\n : this.dashboardManagementService.updateDashboardWidgetConfiguration(\n this.dashboard.key,\n {...widgetUpdateObject, key: this.widgetKey}\n )\n )\n )\n .subscribe({\n complete: () => {\n this.saveEvent.emit();\n this.closeModal();\n },\n error: () => {\n this.enable();\n },\n });\n }\n\n public delete(): void {\n this.disable();\n\n this.dashboardManagementService\n .deleteDashboardWidgetConfiguration(this.dashboard.key, this.widgetKey)\n .subscribe({\n complete: () => {\n this.saveEvent.emit();\n this.closeModal();\n },\n error: () => {\n this.enable();\n },\n });\n }\n\n public dataSourceSelected(dataSource: ListItem): void {\n if (!dataSource) {\n return;\n }\n\n this.selectedDataSourceKey$.next(dataSource?.item?.key);\n this.dataSource.setValue(dataSource?.item?.key);\n }\n\n public displayTypeSelected(displayType: ListItem): void {\n if (!displayType) {\n return;\n }\n\n this.selectedDisplayTypeKey$.next(displayType?.item?.key);\n this.displayType.setValue(displayType?.item?.key);\n }\n\n public dataSourceConfiguration(configuration: ConfigurationOutput): void {\n this.dataSourceConfiguration$.next(configuration);\n }\n\n public displayTypeConfiguration(configuration: ConfigurationOutput): void {\n this.displayTypeConfiguration$.next(configuration);\n }\n\n private openOpenSubscription(): void {\n this._openSubscription = this.showModal$.subscribe(show => {\n this.open$.next(show);\n });\n }\n\n private resetCompatibleDisplayTypes(): void {\n this._compatibleDisplayTypes$.next([]);\n }\n\n private setCompatibleDisplayTypes(\n dataSources: Array<WidgetDataSource>,\n selectedDataSourceKey: string\n ): void {\n this.widgetService.supportedDisplayTypes$.pipe(take(1)).subscribe(supportedDisplayTypes => {\n const selectedDataSource = dataSources.find(source => source.key === selectedDataSourceKey);\n const availableDataFeatures = selectedDataSource?.dataFeatures;\n const compatibleDisplayTypes = supportedDisplayTypes.filter(displayType => {\n const supportedDataFeatures = displayType.requiredDataFeatures.filter(feature =>\n availableDataFeatures?.includes(feature)\n );\n return supportedDataFeatures.length === displayType.requiredDataFeatures.length;\n });\n\n this._compatibleDisplayTypes$.next(compatibleDisplayTypes);\n });\n }\n\n private disable(): void {\n this.disabled$.next(true);\n this.form.disable();\n }\n\n private enable(): void {\n this.disabled$.next(false);\n this.form.enable();\n }\n}\n","<ng-container\n *ngIf=\"{\n disabled: disabled$ | async,\n isCreate: type === 'create',\n isDelete: type === 'delete',\n isEdit: type === 'edit',\n open: open$ | async\n } as vars\"\n>\n <ng-container\n *ngIf=\"{\n create: vars.isCreate && ('dashboardManagement.widgets.add' | translate),\n delete: vars.isDelete && ('dashboardManagement.widgets.delete' | translate),\n edit: vars.isEdit && ('dashboardManagement.widgets.edit' | translate)\n } as titles\"\n >\n <cds-modal\n *ngIf=\"{\n title: titles.edit || titles.create || titles.delete\n } as translations\"\n valtimoCdsModal\n [open]=\"vars.open\"\n showFooter=\"true\"\n size=\"md\"\n title=\"{{ translations.title }}\"\n class=\"widget-modal\"\n >\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>\n {{ translations.title }}\n </h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngIf=\"vars.isDelete\">\n {{ 'dashboardManagement.widgets.deleteDescription' | translate }}</ng-container\n >\n\n <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n <ng-container *ngTemplateOutlet=\"widgetForm; context: {vars: vars}\"></ng-container>\n </ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngIf=\"vars.isEdit || vars.isCreate\">\n <ng-container *ngTemplateOutlet=\"editButtons; context: {vars: vars}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"vars.isDelete\">\n <ng-container *ngTemplateOutlet=\"deleteButtons; context: {vars: vars}\"></ng-container>\n </ng-container>\n </cds-modal-footer>\n </cds-modal>\n </ng-container>\n</ng-container>\n\n<ng-template #widgetForm let-vars=\"vars\">\n <form\n *ngIf=\"\n form && {\n dataSourceItems: dataSourceItems$ | async,\n displayTypeDropdownDisabled: displayTypeDropdownDisabled$ | async,\n displayTypeItems: displayTypeItems$ | async,\n selectedDataSourceKey: selectedDataSourceKey$ | async,\n selectedDisplayTypeKey: selectedDisplayTypeKey$ | async\n } as obs\n \"\n [formGroup]=\"form\"\n class=\"dashboard-modal__form\"\n >\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.titleHelperText' | translate\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'dashboardManagement.widgets.form.title' | translate }}\n\n <input\n cdsText\n formControlName=\"title\"\n [invalid]=\"title.dirty && title.invalid\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__element\" *ngIf=\"obs.dataSourceItems\">\n <cds-dropdown\n formControlName=\"dataSource\"\n [helperText]=\"'dashboardManagement.widgets.form.dataSourceHelperText' | translate\"\n [invalidText]=\"'dashboardManagement.widgets.form.dateSourceHelperText' | translate\"\n [invalid]=\"dataSource.dirty && dataSource.invalid\"\n [label]=\"'dashboardManagement.widgets.form.dataSource' | translate\"\n (selected)=\"dataSourceSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs.dataSourceItems\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <valtimo-widget-configuration-container\n *ngIf=\"obs.selectedDataSourceKey\"\n [dataSourceKey]=\"obs.selectedDataSourceKey\"\n [disabled]=\"vars.disabled\"\n [prefillConfiguration]=\"dataSourcePrefillConfig$ | async\"\n (configurationEvent)=\"dataSourceConfiguration($event)\"\n ></valtimo-widget-configuration-container>\n\n <div class=\"form__element\" *ngIf=\"obs.displayTypeItems\">\n <cds-dropdown\n formControlName=\"displayType\"\n [helperText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n [invalid]=\"displayType.dirty && displayType.invalid\"\n [invalidText]=\"'dashboardManagement.widgets.form.displayTypeHelperText' | translate\"\n [label]=\"'dashboardManagement.widgets.form.displayType' | translate\"\n (selected)=\"displayTypeSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs.displayTypeItems\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <valtimo-widget-configuration-container\n *ngIf=\"obs.selectedDisplayTypeKey\"\n [disabled]=\"vars.disabled\"\n [displayTypeKey]=\"obs.selectedDisplayTypeKey\"\n [prefillConfiguration]=\"displayTypePrefillConfig$ | async\"\n (configurationEvent)=\"displayTypeConfiguration($event)\"\n ></valtimo-widget-configuration-container>\n </form>\n</ng-template>\n\n<ng-template #editButtons let-vars=\"vars\">\n <ng-container\n *ngIf=\"{\n dataSourceConfiguration: dataSourceConfiguration$ | async,\n displayTypeConfiguration: displayTypeConfiguration$ | async\n } as obs\"\n >\n <button cdsButton=\"ghost\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"\n form.invalid ||\n !obs.dataSourceConfiguration.valid ||\n !obs.displayTypeConfiguration.valid ||\n vars.disabled\n \"\n (click)=\"save()\"\n >\n {{ 'dashboardManagement.widgets.save' | translate }}\n </button>\n </ng-container>\n</ng-template>\n\n<ng-template #deleteButtons let-vars=\"vars\">\n <button cdsButton=\"secondary\" [disabled]=\"vars.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button cdsButton=\"danger\" [disabled]=\"vars.disabled\" (click)=\"delete()\">\n {{ 'dashboardManagement.widgets.delete' | translate }}\n </button>\n</ng-template>\n","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Output,\n ViewEncapsulation,\n} from '@angular/core';\nimport {NotificationService} from 'carbon-components-angular';\nimport {BehaviorSubject, Observable, Subscription} from 'rxjs';\nimport {DashboardItem} from '../../models';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {CARBON_CONSTANTS} from '@valtimo/components';\nimport {DashboardManagementService} from '../../services/dashboard-management.service';\nimport {ConfigurationOutput} from '@valtimo/dashboard';\n\n@Component({\n selector: 'valtimo-edit-dashboard-modal',\n templateUrl: './edit-dashboard-modal.html',\n styleUrls: ['./edit-dashboard-modal.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [NotificationService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class EditDashboardModalComponent implements OnInit {\n @Input() public showModal$: Observable<boolean>;\n @Input() public dashboard: DashboardItem;\n @Output() public saveEvent = new EventEmitter<ConfigurationOutput>();\n\n public readonly open$ = new BehaviorSubject<boolean>(false);\n public readonly disabled$ = new BehaviorSubject<boolean>(false);\n public readonly editDashboardForm = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n description: this.fb.control('', [Validators.required]),\n });\n\n public get dashboardTitle() {\n return this.editDashboardForm.get('title');\n }\n\n public get dashboardDescription() {\n return this.editDashboardForm.get('description');\n }\n\n private _openSubscription!: Subscription;\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly dashboardManagementService: DashboardManagementService\n ) {}\n\n public ngOnInit(): void {\n this.openOpenSubscription();\n }\n\n public closeModal(): void {\n this.open$.next(false);\n\n setTimeout(() => {\n this.editDashboardForm.reset();\n }, CARBON_CONSTANTS.modalAnimationMs);\n }\n\n public saveDashboard(): void {\n this.disable();\n\n this.dashboardManagementService\n .updateDashboard({\n description: this.dashboardDescription.value,\n title: this.dashboardTitle.value,\n key: this.dashboard.key,\n })\n .subscribe(() => {\n this.saveEvent.emit();\n this.closeModal();\n });\n }\n\n private setEditDashboardForm(): void {\n if (this.dashboard) {\n this.dashboardTitle?.setValue(this.dashboard.title);\n this.dashboardDescription?.setValue(this.dashboard.description);\n }\n\n this.enable();\n }\n\n private openOpenSubscription(): void {\n this._openSubscription = this.showModal$.subscribe(show => {\n this.setEditDashboardForm();\n this.open$.next(show);\n });\n }\n\n private disable(): void {\n this.disabled$.next(true);\n }\n\n private enable(): void {\n this.disabled$.next(false);\n }\n}\n","<!--\n ~ Copyright 2015-2023 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<cds-modal\n *ngIf=\"{disabled: disabled$ | async} as obs\"\n valtimoCdsModal\n [open]=\"open$ | async\"\n showFooter=\"true\"\n title=\"{{ 'dashboardManagement.widgets.editDashboard' | translate }}\"\n class=\"edit-dashboard-modal\"\n>\n <cds-modal-header [showCloseButton]=\"true\" (closeSelect)=\"closeModal()\">\n <h3 cdsModalHeaderHeading>{{ 'dashboardManagement.widgets.editDashboard' | translate }}</h3>\n </cds-modal-header>\n\n <section cdsModalContent>\n <ng-container *ngTemplateOutlet=\"editDashboardFormTemplate;context:{obs: obs}\"></ng-container>\n </section>\n\n <cds-modal-footer>\n <ng-container *ngTemplateOutlet=\"editDashboardButtons;context:{obs: obs}\"></ng-container>\n </cds-modal-footer>\n</cds-modal>\n\n<ng-template #editDashboardFormTemplate let-obs=\"obs\">\n <form *ngIf=\"editDashboardForm\" [formGroup]=\"editDashboardForm\" class=\"dashboard-modal__form\">\n <div class=\"form__element\">\n <cds-label\n [disabled]=\"obs.disabled\"\n [invalid]=\"dashboardTitle.dirty && dashboardTitle.invalid\"\n >\n {{ 'dashboardManagement.widgets.form.dashboardTitle' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"dashboardTitle.dirty && dashboardTitle.invalid\"\n formControlName=\"title\"\n [attr.modal-primary-focus]=\"true\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [disabled]=\"obs.disabled\"\n [helperText]=\"'dashboardManagement.widgets.form.dashboardDescriptionHelperText' | translate\"\n [invalid]=\"dashboardDescription.dirty && dashboardDescription.invalid\"\n [invalidText]=\"\n 'dashboardManagement.widgets.form.dashboardDescriptionHelperText' | translate\n \"\n >\n {{ 'dashboardManagement.widgets.form.dashboardDescription' | translate }}\n\n <input\n cdsText\n [disabled]=\"obs.disabled\"\n [invalid]=\"dashboardDescription.dirty && dashboardDescription.invalid\"\n formControlName=\"description\"\n />\n </cds-label>\n </div>\n </form>\n</ng-template>\n\n<ng-template #editDashboardButtons let-obs=\"obs\">\n <button cdsButton=\"ghost\" [disabled]=\"obs.disabled\" (click)=\"closeModal()\">\n {{ 'dashboardManagement.widgets.cancel' | translate }}\n </button>\n\n <button\n cdsButton=\"primary\"\n [disabled]=\"editDashboardForm.invalid || obs.disabled\"\n (click)=\"saveDashboard()\"\n >\n {{ 'dashboardManagement.widgets.complete' | translate }}\n </button>\n</ng-template>\n","import {DatePipe} from '@angular/common';\nimport {AfterViewInit, Component, TemplateRef, ViewChild, ViewEncapsulation} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {ArrowDown16, ArrowUp16, Edit16} from '@carbon/icons';\nimport {TranslateService} from '@ngx-translate/core';\nimport {\n CarbonTableConfig,\n ColumnType,\n createCarbonTableConfig,\n PageTitleService,\n} from '@valtimo/components';\nimport {DashboardWidgetConfiguration} from '@valtimo/dashboard';\nimport {IconService} from 'carbon-components-angular';\nimport {BehaviorSubject, combineLatest, map, Observable, switchMap, tap} from 'rxjs';\nimport {DashboardItem, DashboardWidget, WidgetModalType} from '../../models';\nimport {DashboardManagementService} from '../../services/dashboard-management.service';\n\n@Component({\n templateUrl: './dashboard-details.component.html',\n styleUrls: ['./dashboard-details.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class DashboardDetailsComponent implements AfterViewInit {\n @ViewChild('moveButtonsTemplate', {static: false}) moveButtonsTemplate: TemplateRef<any>;\n\n public modalType: WidgetModalType = 'create';\n public tableConfig!: CarbonTableConfig;\n\n private readonly _dashboardKey$ = this.route.params.pipe(map(params => params.id));\n private readonly _refreshDashboardSubject$ = new BehaviorSubject<null>(null);\n public readonly currentDashboard$: Observable<DashboardItem | undefined> = combineLatest([\n this._dashboardKey$,\n this.translateService.stream('key'),\n this._refreshDashboardSubject$,\n ]).pipe(\n switchMap(([dashboardKey]) => this.dashboardManagementService.getDashboard(dashboardKey)),\n tap((currentDashboard: DashboardItem) => {\n if (!currentDashboard) {\n return;\n }\n\n this.pageTitleService.setCustomPageTitle(currentDashboard.title);\n this.pageTitleService.setCustomPageSubtitle(\n this.translateService.instant('dashboardManagement.widgets.metadata', {\n createdBy: currentDashboard.createdBy,\n createdOn: this.datePipe.transform(currentDashboard.createdOn ?? '', 'd/M/yy, H:mm'),\n key: currentDashboard.key,\n })\n );\n })\n );\n\n public readonly lastItemIndex$ = new BehaviorSubject<number>(0);\n public readonly loading$ = new BehaviorSubject<boolean>(true);\n\n public readonly _refreshWidgetsSubject$ = new BehaviorSubject<{\n direction: 'UP' | 'DOWN';\n index: number;\n } | null>(null);\n\n private _widgetData: DashboardWidget[] | null = null;\n public readonly widgetData$: Observable<DashboardWidget[]> = combineLatest([\n this._dashboardKey$,\n this._refreshWidgetsSubject$,\n ]).pipe(\n switchMap(([dashboardKey, refreshWidgets]) => {\n this.loading$.next(true);\n if (!this._widgetData || !refreshWidgets) {\n return this.dashboardManagementService.getDashboardWidgetConfiguration(dashboardKey);\n }\n\n const {direction, index} = refreshWidgets;\n\n return this.dashboardManagementService.updateDashboardWidgetConfigurations(\n dashboardKey,\n direction === 'UP'\n ? this.swapWidgets(this._widgetData, index - 1, index)\n : this.swapWidgets(this._widgetData, index, index + 1)\n );\n }),\n tap((data: DashboardWidget[]) => {\n this._widgetData = data;\n this.lastItemIndex$.next(data.length - 1);\n this.loading$.next(false);\n })\n );\n\n public readonly showModal$ = new BehaviorSubject<boolean>(false);\n public readonly showEditDashboardModal$ = new BehaviorSubject<boolean>(false);\n\n public readonly editWidgetConfiguration$ =\n new BehaviorSubject<DashboardWidgetConfiguration | null>(null);\n\n constructor(\n private readonly dashboardManagementService: DashboardManagementService,\n private readonly datePipe: DatePipe,\n private readonly iconService: IconService,\n private readonly pageTitleService: PageTitleService,\n private readonly route: ActivatedRoute,\n private readonly translateService: TranslateService\n ) {}\n\n public ngAfterViewInit(): void {\n this.iconService.registerAll([ArrowDown16, ArrowUp16, Edit16]);\n this.setTableConfig();\n }\n\n public addWidget(): void {\n this.editWidgetConfiguration$.next(null);\n this.modalType = 'create';\n this.showModal();\n }\n\n public editDashboard(): void {\n this.showEditDashboardModal();\n }\n\n public refreshWidgets(): void {\n this._refreshWidgetsSubject$.next(null);\n }\n\n public refreshDashboard(): void {\n this._refreshDashboardSubject$.next(null);\n }\n\n public onArrowDownClick(data: {item: DashboardWidget; index: number}): void {\n this._refreshWidgetsSubject$.next({direction: 'DOWN', index: data.index});\n }\n\n public onArrowUpClick(data: {item: DashboardWidget; index: number}): void {\n this._refreshWidgetsSubject$.next({direction: 'UP', index: data.index});\n }\n\n private setTableConfig(): void {\n this.tableConfig = createCarbonTableConfig({\n fields: [\n {\n columnType: ColumnType.TEXT,\n fieldName: 'title',\n translationKey: 'Name',\n },\n {\n columnType: ColumnType.TEMPLATE,\n template: this.moveButtonsTemplate,\n className: 'dashboard-detail-table__actions',\n fieldName: '',\n translationKey: '',\n },\n {\n columnType: ColumnType.ACTION,\n className: 'dashboard-detail-table__actions',\n fieldName: '',\n translationKey: '',\n actions: [\n {\n actionName: 'Edit',\n callback: this.editWidget.bind(this),\n },\n {\n actionName: 'Delete',\n callback: this.deleteWidget.bind(this),\n type: 'danger',\n },\n ],\n },\n ],\n });\n }\n\n private editWidget(event: DashboardWidgetConfiguration): void {\n this.editWidgetConfiguration$.next({...event});\n this.modalType = 'edit';\n this.showModal();\n }\n\n private deleteWidget(event: DashboardWidgetConfiguration): void {\n this.editWidgetConfiguration$.next({...event});\n this.modalType = 'delete';\n this.showModal();\n }\n\n private showModal(): void {\n this.showModal$.next(true);\n }\n\n private showEditDashboardModal(): void {\n this.showEditDashboardModal$.next(true);\n }\n\n private swapWidgets(\n dashboardWidgets: DashboardWidget[],\n index1: number,\n index2: number\n ): DashboardWidget[] {\n const temp = [...dashboardWidgets];\n temp[index1] = temp.splice(index2, 1, temp[index1])[0];\n\n return temp;\n }\n}\n","<ng-container\n *ngIf=\"\n tableConfig && {\n currentDashboard: currentDashboard$ | async,\n editWidgetConfiguration: editWidgetConfiguration$ | async,\n loading: loading$ | async,\n widgetData: widgetData$ | async\n } as obs\n \"\n>\n <div class=\"dashboard-detail-table\">\n <valtimo-carbon-table\n [data]=\"obs.widgetData\"\n [hideTableHeader]=\"true\"\n [loading]=\"obs.loading\"\n [tableConfig]=\"tableConfig\"\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-table>\n </div>\n\n <valtimo-widget-modal\n [dashboard]=\"obs.currentDashboard\"\n [editWidgetConfiguration]=\"obs.editWidgetConfiguration\"\n [showModal$]=\"showModal$\"\n [type]=\"modalType\"\n [widgetKey]=\"obs.editWidgetConfiguration?.key\"\n (saveEvent)=\"refreshWidgets()\"\n ></valtimo-widget-modal>\n\n <valtimo-edit-dashboard-modal\n [dashboard]=\"obs.currentDashboard\"\n [showModal$]=\"showEditDashboardModal$\"\n (saveEvent)=\"refreshDashboard()\"\n >\n </valtimo-edit-dashboard-modal>\n</ng-container>\n\n<ng-template #moveButtonsTemplate let-data=\"data\">\n <div class=\"move-buttons-container\">\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"data.index === 0\"\n [iconOnly]=\"true\"\n (click)=\"onArrowUpClick(data)\"\n >\n <svg cdsIcon=\"arrow--up\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n\n <button\n cdsButton=\"tertiary\"\n [disabled]=\"(lastItemIndex$ | async) === data.index\"\n [iconOnly]=\"true\"\n (click)=\"onArrowDownClick(data)\"\n >\n <svg cdsIcon=\"arrow--down\" size=\"16\" class=\"cds--btn__icon\"></svg>\n </button>\n </div>\n</ng-template>\n\n<ng-container renderInPageHeader>\n <ng-template>\n <button cdsButton=\"tertiary\" size=\"md\" (click)=\"editDashboard()\">\n {{ 'dashboardManagement.widgets.editButton' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"edit\" size=\"16\"></svg>\n </button>\n </ng-template>\n</ng-container>\n\n<ng-template #addWidgetButton>\n <button cdsButton=\"primary\" [disabled]=\"loading$ | async\" (click)=\"addWidget()\">\n {{ 'dashboardManagement.widgets.add' | translate }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</ng-template>\n","import {ChangeDetectionStrategy, Component, OnInit, ViewEncapsulation} from '@angular/core';\nimport {AbstractControl, FormBuilder, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {CarbonTableConfig, ColumnType, createCarbonTableConfig} from '@valtimo/components';\nimport {BehaviorSubject, finalize, Observable} from 'rxjs';\nimport {DashboardItem} from '../../models';\nimport {DashboardManagementService} from '../../services/dashboard-management.service';\nimport {Router} from '@angular/router';\n\n@Component({\n templateUrl: './dashboard-management.component.html',\n styleUrls: ['./dashboard-management.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class DashboardManagementComponent implements OnInit {\n public readonly deleteRowKey$: BehaviorSubject<string> = new BehaviorSubject('');\n public readonly openModal$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n public readonly showDeleteModal$: BehaviorSubject<boolean> = new BehaviorSubject(false);\n\n public readonly tableData$: Observable<{items: DashboardItem[] | null; loading: boolean}> =\n this.dashboardManagementService.dashboards$;\n public tableConfig: CarbonTableConfig = createCarbonTableConfig({\n fields: [\n {\n columnType: ColumnType.TEXT,\n fieldName: 'title',\n translationKey: 'dashboardManagement.name',\n },\n {\n columnType: ColumnType.TEXT,\n fieldName: 'description',\n translationKey: 'dashboardManagement.description',\n },\n {\n columnType: ColumnType.TEXT,\n fieldName: 'key',\n translationKey: 'dashboardManagement.key',\n },\n {\n actions: [\n {\n actionName: 'Delete',\n callback: this.deleteDashboard.bind(this),\n type: 'danger',\n },\n ],\n className: 'valtimo-dashboard-management__actions',\n columnType: ColumnType.ACTION,\n translationKey: '',\n fieldName: '',\n sortable: false,\n },\n ],\n });\n public form: FormGroup;\n\n constructor(\n private readonly dashboardManagementService: DashboardManagementService,\n private readonly fb: FormBuilder,\n private readonly router: Router\n ) {}\n\n public ngOnInit(): void {\n this.dashboardManagementService.loadData();\n this.form = this.fb.group({\n description: this.fb.control('', [Validators.required]),\n title: this.fb.control('', [Validators.required]),\n });\n }\n\n public closeModal(): void {\n this.openModal$.next(false);\n this.form.reset();\n }\n\n public createDashboard(): void {\n const control: AbstractControl | null = this.form.get('title');\n if (!control || !control.valid) {\n return;\n }\n\n const newDashboard: DashboardItem = this.form.getRawValue();\n this.dashboardManagementService.dispatchAction(\n this.dashboardManagementService.createDashboard(newDashboard).pipe(\n finalize(() => {\n this.closeModal();\n })\n )\n );\n }\n\n public onConfirmEvent(dashboardKey: string): void {\n this.dashboardManagementService.dispatchAction(\n this.dashboardManagementService.deleteDashboard(dashboardKey).pipe(\n finalize(() => {\n this.closeModal();\n })\n )\n );\n }\n\n public getControlInvalid(controlKey: string): boolean {\n const control: AbstractControl | null = this.form.get(controlKey);\n\n if (!control) {\n return true;\n }\n\n return !control.valid && !control.pristine;\n }\n\n public openModal(): void {\n this.openModal$.next(true);\n }\n\n public onRowClick(item: DashboardItem): void {\n this.router.navigate([`/dashboard-management/${item.key}`]);\n }\n\n private deleteDashboard(dashboard: DashboardItem): void {\n this.deleteRowKey$.next(dashboard.key);\n this.showDeleteModal$.next(true);\n }\n}\n","<ng-container *ngIf=\"tableData$ | async as data\">\n <valtimo-carbon-table\n [data]=\"data.items\"\n [loading]=\"data.loading\"\n [tableConfig]=\"tableConfig\"\n (rowClick)=\"onRowClick($event)\"\n class=\"valtimo-dashboard-management__table\"\n >\n <ng-container carbonTableTitle> {{ 'dashboardManagement.title' | translate }} </ng-container>\n\n <div carbonToolbarContent>\n <ng-container [ngTemplateOutlet]=\"addDashboardButton\"></ng-container>\n </div>\n\n <valtimo-no-results\n [action]=\"addDashboardButton\"\n description=\"{{ 'dashboardManagement.noResults.description' | translate }}\"\n title=\"{{ 'dashboardManagement.noResults.title' | translate }}\"\n ></valtimo-no-results>\n </valtimo-carbon-table>\n</ng-container>\n\n<cds-modal\n valtimoIbmModal\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","/*\n * Copyright 2015-2023 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {NgModule} from '@angular/core';\nimport {RouterModule, Routes} from '@angular/router';\nimport {AuthGuardService} from '@valtimo/security';\nimport {ROLE_ADMIN} from '@valtimo/config';\nimport {DashboardManagementComponent} from './components/dashboard-management/dashboard-management.component';\nimport {DashboardDetailsComponent} from './components/dashboard-details/dashboard-details.component';\n\nconst routes: Routes = [\n {\n path: 'dashboard-management',\n component: DashboardManagementComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dashboard configuration', roles: [ROLE_ADMIN]},\n },\n {\n path: 'dashboard-management/:id',\n component: DashboardDetailsComponent,\n canActivate: [AuthGuardService],\n data: {\n title: 'Dashboard details',\n roles: [ROLE_ADMIN],\n customPageTitle: true,\n customPageSubtitle: true,\n },\n },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes)],\n exports: [RouterModule],\n declarations: [],\n})\nexport class DashboardManagementRoutingModule {}\n","/*\n * Copyright 2015-2020 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 */\nimport {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {TranslateModule} from '@ngx-translate/core';\nimport {\n CarbonTableModule,\n ConfirmationModalModule,\n ListModule,\n RenderInPageHeaderDirectiveModule,\n SpinnerModule,\n} from '@valtimo/components';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n InputModule,\n ModalModule,\n NotificationModule,\n} from 'carbon-components-angular';\nimport {DashboardDetailsComponent} from './components/dashboard-details/dashboard-details.component';\nimport {DashboardManagementComponent} from './components/dashboard-management/dashboard-management.component';\nimport {DashboardManagementRoutingModule} from './dashboard-management-routing.module';\nimport {WidgetModalComponent} from './components/widget-modal/widget-modal.component';\nimport {EditDashboardModalComponent} from './components/edit-dashboard-modal/edit-dashboard-modal';\nimport {WidgetTranslatePipeModule} from '@valtimo/dashboard';\nimport {WidgetConfigurationContainerComponent} from './components/widget-configuration-container/widget-configuration-container.component';\n\n@NgModule({\n declarations: [\n DashboardManagementComponent,\n DashboardDetailsComponent,\n WidgetModalComponent,\n EditDashboardModalComponent,\n WidgetConfigurationContainerComponent,\n ],\n imports: [\n ButtonModule,\n CarbonTableModule,\n CommonModule,\n DashboardManagementRoutingModule,\n DropdownModule,\n InputModule,\n ListModule,\n ModalModule,\n ReactiveFormsModule,\n SpinnerModule,\n TranslateModule,\n RenderInPageHeaderDirectiveModule,\n ConfirmationModalModule,\n NotificationModule,\n IconModule,\n WidgetTranslatePipeModule,\n ],\n exports: [],\n})\nexport class DashboardManagementModule {}\n","/*\n * Copyright 2015-2020 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/*\n * Public API Surface of dashboard-management\n */\n\nexport * from './lib/dashboard-management.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["tap","i1","i2","i4.DashboardManagementService","i7.WidgetConfigurationContainerComponent","i2.DashboardManagementService","i4","i5","i1.DashboardManagementService","i6","i7.WidgetModalComponent","i8.EditDashboardModalComponent","i3","i7"],"mappings":"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"}
|