@valtimo/dashboard 13.3.0 → 13.4.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.
@@ -1 +1 @@
1
- {"version":3,"file":"valtimo-dashboard.mjs","sources":["../../../../projects/valtimo/dashboard/src/lib/components/dashboard/dashboard.component.ts","../../../../projects/valtimo/dashboard/src/lib/components/dashboard/dashboard.component.html","../../../../projects/valtimo/dashboard/src/lib/constants/data-features.constants.ts","../../../../projects/valtimo/dashboard/src/lib/constants/injection-tokens.ts","../../../../projects/valtimo/dashboard/src/lib/constants/layout.constants.ts","../../../../projects/valtimo/dashboard/src/lib/constants/index.ts","../../../../projects/valtimo/dashboard/src/lib/services/widget-layout.service.ts","../../../../projects/valtimo/dashboard/src/lib/services/dashboard.service.ts","../../../../projects/valtimo/dashboard/src/lib/services/widget.service.ts","../../../../projects/valtimo/dashboard/src/lib/services/widget-translation.service.ts","../../../../projects/valtimo/dashboard/src/lib/services/index.ts","../../../../projects/valtimo/dashboard/src/lib/components/widget-dashboard-content/widget-dashboard-content.component.ts","../../../../projects/valtimo/dashboard/src/lib/components/widget-dashboard-content/widget-dashboard-content.component.html","../../../../projects/valtimo/dashboard/src/lib/services/widget-api.service.ts","../../../../projects/valtimo/dashboard/src/lib/components/widget-dashboard/widget-dashboard.component.ts","../../../../projects/valtimo/dashboard/src/lib/components/widget-dashboard/widget-dashboard.component.html","../../../../projects/valtimo/dashboard/src/lib/pipes/widget-translate/widget-translate.pipe.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-configuration/bar-chart-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-configuration/bar-chart-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-display/bar-chart-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-display/bar-chart-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/bar-chart.specification.ts","../../../../projects/valtimo/dashboard/src/lib/pipes/widget-translate/widget-translate-pipe.module.ts","../../../../projects/valtimo/dashboard/src/lib/pipes/widget-translate/index.ts","../../../../projects/valtimo/dashboard/src/lib/pipes/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/bar-chart.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/models/bar-chart.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-configuration/big-number-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-configuration/big-number-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/models/configuration.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/dashboard.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/data-source.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/display-type.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/layout.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/widget-data.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/widget-display.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-display/big-number-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-display/big-number-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/big-number.specification.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/big-number.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/models/big-number.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-configuration/donut-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-configuration/donut-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-display/donut-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-display/donut-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/donut.specification.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/donut.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/models/donut.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-configuration/gauge-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-configuration/gauge-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-display/gauge-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-display/gauge-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/gauge.specification.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/gauge.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/models/gauge.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-configuration/meter-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-configuration/meter-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-display/meter-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-display/meter-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/meter.specification.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/meter.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/models/meter.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/display-widget-types.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/components/case-count-configuration/case-count-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/components/case-count-configuration/case-count-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/components/case-count-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/models/case-count.model.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/shared/conditions.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/shared/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/case-count.specification.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/case-count.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/components/case-counts-configuration/case-counts-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/components/case-counts-configuration/case-counts-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/components/case-counts-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/models/case-counts.model.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/case-counts.specification.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/case-counts.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/components/case-group-by-configuration/case-group-by-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/components/case-group-by-configuration/case-group-by-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/components/case-group-by-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/models/case-group-by.model.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/case-group-by.specification.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/case-group-by.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/task-count-configuration/task-count-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/task-count-configuration/task-count-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/task-count-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/models/task-count.model.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/task-count.specification.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/task-count.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/data-sources.module.ts","../../../../projects/valtimo/dashboard/src/lib/dashboard-routing.module.ts","../../../../projects/valtimo/dashboard/src/lib/dashboard.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/index.ts","../../../../projects/valtimo/dashboard/src/public_api.ts","../../../../projects/valtimo/dashboard/src/valtimo-dashboard.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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 {Component, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Task, TaskDetailModalComponent, TaskService} from '@valtimo/task';\nimport moment from 'moment';\nimport {BehaviorSubject} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n standalone: false,\n selector: 'valtimo-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.css'],\n})\nexport class DashboardComponent implements OnInit {\n public processDefinitions: Array<any>;\n public openTasks: Array<any>;\n public openTaskFields = [\n {\n key: 'created',\n label: 'Created',\n },\n {\n key: 'name',\n label: 'Name',\n },\n {\n key: 'valtimoAssignee.fullName',\n label: 'Assignee',\n },\n ];\n @ViewChild('taskDetail') taskDetail: TaskDetailModalComponent;\n\n loading$ = new BehaviorSubject<boolean>(true);\n\n constructor(\n private readonly taskService: TaskService,\n private readonly route: ActivatedRoute\n ) {}\n\n ngOnInit() {\n this.getOpenTasks();\n }\n\n public getOpenTasks() {\n this.taskService.getTasks().subscribe(response => {\n this.openTasks = response;\n this.openTasks.map(task => {\n task.created = moment(task.created).format('DD MMM YYYY HH:mm');\n });\n this.checkRouteForTaskId(response);\n this.loading$.next(false);\n });\n }\n\n public rowOpenTaskClick(task) {\n if (!task.endTime) {\n this.taskDetail.openTaskDetails(task);\n }\n }\n\n private checkRouteForTaskId(tasks: Array<Task>): void {\n this.route.queryParams.pipe(take(1)).subscribe(params => {\n const taskId = params?.taskId;\n const findTaskFromId = tasks.find(task => task.id === taskId);\n\n if (findTaskFromId) {\n this.rowOpenTaskClick(findTaskFromId);\n }\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div class=\"main-content container-fluid\" *ngIf=\"{loading: loading$ | async} as obs\">\n <h4 class=\"title\">\n {{ 'dashboard.openTasks.title' | translate }}\n <sup *ngIf=\"obs.loading === false\" class=\"ml-1 badge badge-pill badge-primary\">{{\n openTasks?.length\n }}</sup>\n </h4>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <valtimo-widget>\n <valtimo-carbon-list\n [items]=\"openTasks\"\n [fields]=\"openTaskFields\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n ></valtimo-carbon-list>\n </valtimo-widget>\n </ng-container>\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"getOpenTasks()\"\n (assignmentOfTaskChanged)=\"getOpenTasks()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n","/*\n * Copyright 2015-2025 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\nconst DATA_FEATURES = {\n NUMBER: 'number',\n TOTAL: 'total',\n NUMBERS: 'numbers',\n};\n\nexport {DATA_FEATURES};\n","/*\n * Copyright 2015-2025 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 {InjectionToken} from '@angular/core';\nimport {DataSourceSpecification, DisplayTypeSpecification} from '../models';\n\nconst DISPLAY_TYPE_TOKEN = new InjectionToken<DisplayTypeSpecification | null>(\n 'Supported display types'\n);\n\nconst DATA_SOURCE_TOKEN = new InjectionToken<DataSourceSpecification | null>(\n 'Supported data sources'\n);\n\nexport {DISPLAY_TYPE_TOKEN, DATA_SOURCE_TOKEN};\n","/*\n * Copyright 2015-2025 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\nconst WIDGET_1X_HEIGHT = 220;\nconst WIDGET_1X_MIN_WIDTH = 275;\n\nexport {WIDGET_1X_HEIGHT, WIDGET_1X_MIN_WIDTH};\n","/*\n * Copyright 2015-2025 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\nexport * from './data-features.constants';\nexport * from './injection-tokens';\nexport * from './layout.constants';\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n filter,\n map,\n Observable,\n Subject,\n Subscription,\n} from 'rxjs';\nimport {DashboardWidgetConfiguration} from '../models';\nimport {WIDGET_1X_MIN_WIDTH} from '../constants';\nimport Muuri from 'muuri';\n\n@Injectable()\nexport class WidgetLayoutService {\n private readonly _widgetContainerWidth$ = new BehaviorSubject<number | null>(null);\n private readonly _widgetConfigurations$ = new BehaviorSubject<\n Array<DashboardWidgetConfiguration>\n >([]);\n private readonly _muuriSubject$ = new BehaviorSubject<Muuri | null>(null);\n private readonly _triggerMuuriLayout$ = new Subject<null>();\n\n public get muuri$(): Observable<Muuri> {\n return this._muuriSubject$.pipe(filter(muuri => !!muuri));\n }\n\n public get muuriSubject$(): Observable<Muuri | null> {\n return this._muuriSubject$.asObservable();\n }\n\n private get widgetContainerWidth$(): Observable<number> {\n return this._widgetContainerWidth$.asObservable().pipe(filter(width => !!width));\n }\n\n public get amountOfColumns$(): Observable<number> {\n return this.widgetContainerWidth$.pipe(\n map(containerWidth => Math.floor(containerWidth / WIDGET_1X_MIN_WIDTH))\n );\n }\n\n private readonly _subscriptions = new Subscription();\n\n constructor() {\n this.openMuuriSubscription();\n }\n\n public setWidgetContainerWidth(width: number): void {\n this._widgetContainerWidth$.next(width);\n }\n\n public setWidgetConfigurations(configurations: Array<DashboardWidgetConfiguration>): void {\n this._widgetConfigurations$.next(configurations);\n }\n\n public setMuuri(muuri: Muuri): void {\n this._muuriSubject$.next(muuri);\n }\n\n public triggerMuuriLayout(): void {\n this._triggerMuuriLayout$.next(null);\n }\n\n private openMuuriSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.muuri$, this._triggerMuuriLayout$])\n .pipe(debounceTime(150))\n .subscribe(([muuri]) => {\n muuri.refreshItems();\n muuri.layout();\n })\n );\n }\n}\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {Dashboard} from '../models';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DashboardService {\n private _endpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this._endpointUri = this.configService.config.valtimoApi.endpointUri;\n }\n\n public getDashboards(): Observable<Array<Dashboard>> {\n return this.http.get<Array<Dashboard>>(`${this._endpointUri}v1/dashboard`);\n }\n}\n","/*\n * Copyright 2015-2025 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 {Inject, Injectable} from '@angular/core';\nimport {DATA_SOURCE_TOKEN, DISPLAY_TYPE_TOKEN} from '../constants';\nimport {DataSourceSpecification, DisplayTypeSpecification} from '../models';\nimport {BehaviorSubject, filter, Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetService {\n private readonly _supportedDisplayTypes$ =\n new BehaviorSubject<Array<DisplayTypeSpecification> | null>(null);\n\n private readonly _supportedDataSources$ =\n new BehaviorSubject<Array<DataSourceSpecification> | null>(null);\n\n public get supportedDisplayTypes$(): Observable<Array<DisplayTypeSpecification>> {\n return this._supportedDisplayTypes$.pipe(filter(specifications => !!specifications));\n }\n\n public get supportedDataSources$(): Observable<Array<DataSourceSpecification>> {\n return this._supportedDataSources$.pipe(filter(specifications => !!specifications));\n }\n\n public get supportedDisplayTypes(): Array<DisplayTypeSpecification> {\n return this._supportedDisplayTypes$.getValue() || [];\n }\n\n public get supportedDataSources(): Array<DataSourceSpecification> {\n return this._supportedDataSources$.getValue() || [];\n }\n\n constructor(\n @Inject(DISPLAY_TYPE_TOKEN)\n private readonly supportedDisplayTypesFromToken: Array<DisplayTypeSpecification | null>,\n @Inject(DATA_SOURCE_TOKEN)\n private readonly supportedDataSourcesFromToken: Array<DataSourceSpecification | null>\n ) {\n this.setSupportedDisplayTypes(supportedDisplayTypesFromToken);\n this.setSupportedDataSources(supportedDataSourcesFromToken);\n }\n\n private setSupportedDisplayTypes(\n supportedDisplayTypes: Array<DisplayTypeSpecification | null>\n ): void {\n this._supportedDisplayTypes$.next(supportedDisplayTypes.filter(displayType => !!displayType));\n }\n\n private setSupportedDataSources(\n supportedDataSources: Array<DataSourceSpecification | null>\n ): void {\n this._supportedDataSources$.next(supportedDataSources.filter(dataSource => !!dataSource));\n }\n}\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {DataSourceSpecification, DisplayTypeSpecification} from '../models';\nimport {combineLatest, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {WidgetService} from './widget.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetTranslationService {\n constructor(\n private readonly translateService: TranslateService,\n private readonly widgetService: WidgetService\n ) {}\n\n translate(translateKey: string, key: string): Observable<string> {\n return combineLatest([\n this.widgetService.supportedDisplayTypes$,\n this.widgetService.supportedDataSources$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([supportedDisplayTypes, supportedDataSources]) =>\n this.getTranslation(supportedDisplayTypes, supportedDataSources, key, translateKey)\n )\n );\n }\n\n instant(translateKey: string, displayTypeKey: string): string {\n return this.getTranslation(\n this.widgetService.supportedDisplayTypes,\n this.widgetService.supportedDataSources,\n displayTypeKey,\n translateKey\n );\n }\n\n private getTranslation(\n supportedDisplayTypes: Array<DisplayTypeSpecification>,\n supportedDataSources: Array<DataSourceSpecification>,\n key: string,\n translateKey: string\n ): string {\n const currentLang = this.translateService.currentLang;\n const displayTypeSpecification = supportedDisplayTypes.find(\n displayType => displayType.displayTypeKey === key\n );\n const dataSourceSpecification = supportedDataSources.find(\n datasource => datasource.dataSourceKey === key\n );\n\n let translation = '';\n\n if (\n displayTypeSpecification &&\n displayTypeSpecification.translations.hasOwnProperty(currentLang)\n ) {\n translation = displayTypeSpecification.translations[currentLang][translateKey];\n } else if (\n dataSourceSpecification &&\n dataSourceSpecification.translations.hasOwnProperty(currentLang)\n ) {\n translation = dataSourceSpecification.translations[currentLang][translateKey];\n }\n\n return translation || `${key}.${translateKey}`;\n }\n}\n","/*\n * Copyright 2015-2025 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\nexport * from './dashboard.service';\nexport * from './widget-translation.service';\nexport * from './widget.service';\n","/*\n * Copyright 2015-2025 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 {\n AfterViewInit,\n Component,\n ComponentRef,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {delay, map, take} from 'rxjs/operators';\nimport {Dashboard, DashboardWidgetConfiguration, DisplayComponent, WidgetData} from '../../models';\nimport {WidgetService} from '../../services';\nimport {WidgetLayoutService} from '../../services/widget-layout.service';\nimport {WIDGET_1X_HEIGHT} from '../../constants';\nimport Muuri from 'muuri';\nimport {Router} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-widget-dashboard-content',\n templateUrl: './widget-dashboard-content.component.html',\n styleUrls: ['./widget-dashboard-content.component.scss'],\n providers: [WidgetLayoutService],\n})\nexport class WidgetDashboardContentComponent implements AfterViewInit, OnDestroy {\n @ViewChildren('widgetConfiguration') private _widgetConfigurationRefs: QueryList<\n ElementRef<HTMLDivElement>\n >;\n @ViewChildren('widgetConfigurationContent', {read: ViewContainerRef})\n private _widgetConfigurationContentVcRefs: QueryList<ViewContainerRef>;\n @ViewChild('widgetContainer') private _widgetContainerRef: ElementRef<HTMLDivElement>;\n\n private readonly _isLoading$ = new BehaviorSubject<boolean>(true);\n private _widgetData$ = new BehaviorSubject<WidgetData[]>([]);\n\n @Input() set widgetData(value: {data: WidgetData[]; loading: boolean}) {\n this._isLoading$.next(value.loading);\n this._widgetData$.next(value.data);\n }\n @Input() set dashboard(value: Dashboard) {\n this.setWidgetConfigurations(value);\n }\n\n public readonly widgetConfigurations$ =\n new BehaviorSubject<Array<DashboardWidgetConfiguration> | null>(null);\n\n private _observer!: ResizeObserver;\n private _subscriptions = new Subscription();\n\n private readonly _muuri$ = this.layoutService.muuriSubject$;\n\n private _creatingMuuri = false;\n\n private get _muuriInitialized$(): Observable<boolean> {\n return this._muuri$.pipe(map(muuri => !!muuri));\n }\n\n private readonly _noResults$ = new BehaviorSubject<boolean>(false);\n\n public readonly loaded$ = combineLatest([\n this._isLoading$,\n this._muuriInitialized$,\n this._noResults$,\n ]).pipe(\n map(\n ([isLoading, muuriInitialized, noResults]) => !isLoading && (muuriInitialized || noResults)\n ),\n delay(400)\n );\n\n constructor(\n private readonly layoutService: WidgetLayoutService,\n private readonly widgetService: WidgetService,\n private readonly renderer: Renderer2,\n private readonly router: Router\n ) {}\n\n public ngAfterViewInit(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetContainerRef.nativeElement);\n this.openWidgetSizeSubscription();\n this.renderWidgets();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n this._subscriptions?.unsubscribe();\n }\n\n public navigateToRoute(\n widgetConfiguration: DashboardWidgetConfiguration,\n event: MouseEvent\n ): void {\n if (widgetConfiguration.url) {\n event.preventDefault();\n this.router.navigateByUrl(widgetConfiguration.url);\n }\n }\n\n private setWidgetConfigurations(dashboard: Dashboard): void {\n this.widgetService.supportedDisplayTypes$.pipe(take(1)).subscribe(supportedDisplayTypes => {\n const supportedWidgetConfigurations =\n dashboard.widgets?.filter(widgetConfiguration =>\n supportedDisplayTypes.find(\n type => type.displayTypeKey === widgetConfiguration.displayType\n )\n ) || [];\n this.layoutService.setWidgetConfigurations(supportedWidgetConfigurations);\n this.widgetConfigurations$.next(supportedWidgetConfigurations);\n });\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const widgetContainerWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof widgetContainerWidth === 'number' && widgetContainerWidth !== 0) {\n this.layoutService.setWidgetContainerWidth(widgetContainerWidth);\n }\n }\n\n private openWidgetSizeSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.layoutService.amountOfColumns$,\n this.widgetConfigurations$,\n this.widgetService.supportedDisplayTypes$,\n this._muuri$,\n ]).subscribe(([amountOfColumns, widgetConfigurations, supportedDisplayTypes, muuri]) => {\n this._widgetConfigurationRefs.toArray().forEach(widgetConfigurationRef => {\n const nativeElement = widgetConfigurationRef.nativeElement;\n const widgetConfiguration = widgetConfigurations.find(\n config => config.key === nativeElement.id\n );\n const specification = supportedDisplayTypes.find(\n type => type.displayTypeKey === widgetConfiguration.displayType\n );\n const widthPercentage =\n specification.width > amountOfColumns\n ? 100\n : (specification.width / amountOfColumns) * 100;\n this.renderer.setStyle(\n nativeElement,\n 'height',\n `${WIDGET_1X_HEIGHT * specification.height}px`\n );\n this.renderer.setStyle(nativeElement, 'width', `${widthPercentage}%`);\n });\n\n if (widgetConfigurations.length > 0) {\n if (!muuri) {\n this.initMuuri();\n } else {\n this.layoutService.triggerMuuriLayout();\n }\n } else {\n this._noResults$.next(true);\n }\n })\n );\n }\n\n private renderWidgets(): void {\n this._subscriptions.add(\n combineLatest([\n this.widgetConfigurations$,\n this.widgetService.supportedDisplayTypes$,\n this._widgetData$,\n ]).subscribe(([configurations, displayTypes, data]) => {\n configurations?.forEach((configuration, index) => {\n const displayType = displayTypes.find(\n type => type.displayTypeKey === configuration.displayType\n );\n const vcRef = this._widgetConfigurationContentVcRefs.toArray()[index];\n\n if (displayType && data) {\n vcRef.clear();\n const componentInstance: ComponentRef<DisplayComponent> = vcRef.createComponent(\n displayType.displayComponent\n );\n componentInstance.setInput('displayTypeKey', configuration.displayType);\n componentInstance.setInput('displayTypeProperties', {\n ...configuration.displayTypeProperties,\n });\n\n componentInstance.setInput(\n 'data',\n data.find(dataItem => dataItem.key === configuration.key)?.data\n );\n }\n });\n })\n );\n }\n\n private initMuuri(): void {\n if (!this._widgetContainerRef || this._creatingMuuri) return;\n\n this._creatingMuuri = true;\n\n this.layoutService.setMuuri(\n new Muuri(this._widgetContainerRef.nativeElement, {\n layout: {\n fillGaps: true,\n },\n layoutOnResize: false,\n })\n );\n\n this._creatingMuuri = false;\n }\n}\n","<!--\n ~ Copyright 2015-2025 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=\"{loaded: loaded$ | async} as obs\">\n <div *ngIf=\"!obs.loaded\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-container>\n\n<div\n #widgetContainer\n class=\"widget-container\"\n [ngClass]=\"{'widget-container__visible': loaded$ | async}\"\n>\n <ng-container *ngIf=\"widgetConfigurations$ | async as widgetConfigurations\">\n <ng-container *ngFor=\"let config of widgetConfigurations\">\n <div #widgetConfiguration [id]=\"config.key\" class=\"widget-configuration\">\n <div\n (click)=\"navigateToRoute(config, $event)\"\n [ngClass]=\"{\n 'widget-configuration-content-clickable': config.url,\n }\"\n class=\"widget-configuration-content\"\n >\n <ng-container #widgetConfigurationContent></ng-container>\n </div>\n </div>\n </ng-container>\n\n <valtimo-no-results\n *ngIf=\"!widgetConfigurations.length\"\n [title]=\"'dashboard.noWidgets' | translate\"\n [description]=\"'dashboard.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n </ng-container>\n</div>\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {WidgetData} from '../models';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetApiService {\n private _endpointUri: string;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this._endpointUri = `${this.configService.config.valtimoApi.endpointUri}v1/dashboard`;\n }\n\n public getWidgetData(dashboardKey: string): Observable<WidgetData[]> {\n return this.http.get<WidgetData[]>(`${this._endpointUri}/${dashboardKey}/data`);\n }\n}\n","/*\n * Copyright 2015-2025 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 {Component, ViewEncapsulation} from '@angular/core';\nimport {BehaviorSubject, Observable, tap} from 'rxjs';\nimport {Dashboard, WidgetData} from '../../models';\nimport {DashboardService} from '../../services';\nimport {WidgetApiService} from '../../services/widget-api.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-widget-dashboard',\n templateUrl: './widget-dashboard.component.html',\n styleUrls: ['./widget-dashboard.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class WidgetDashboardComponent {\n public dashboards$: Observable<Array<Dashboard>> = this.dashboardService.getDashboards().pipe(\n tap(dashboards => {\n if (dashboards.length === 1) {\n this.onTabSelected(dashboards[0].key);\n }\n })\n );\n public readonly activeWidgetData$ = new BehaviorSubject<{data: WidgetData[]; loading: boolean}>({\n data: [],\n loading: true,\n });\n\n public readonly selectedDashboardKey$ = new BehaviorSubject<string>('');\n\n constructor(\n private readonly dashboardService: DashboardService,\n private readonly widgetApiService: WidgetApiService\n ) {}\n\n public onTabSelected(dashboardKey: string): void {\n this.selectedDashboardKey$.next(dashboardKey);\n this.activeWidgetData$.next({data: [], loading: true});\n\n this.widgetApiService\n .getWidgetData(dashboardKey)\n .subscribe((data: WidgetData[]) => this.activeWidgetData$.next({data, loading: false}));\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div *ngIf=\"dashboards$ | async as dashboards\" class=\"dashboards-container\">\n <valtimo-no-results\n *ngIf=\"!dashboards.length\"\n [title]=\"'dashboard.noDashboards' | translate\"\n [description]=\"'dashboard.noDashboardsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-dashboards.svg\"\n ></valtimo-no-results>\n\n <div *ngIf=\"dashboards.length === 1\">\n <h4>{{ dashboards[0].title }}</h4>\n\n <valtimo-widget-dashboard-content\n [dashboard]=\"dashboards[0]\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </div>\n\n <div *ngIf=\"dashboards.length > 1\">\n <cds-tabs>\n <cds-tab\n *ngFor=\"let dashboard of dashboards; trackBy: trackByIndex\"\n [heading]=\"dashboard.title\"\n (selected)=\"onTabSelected(dashboard.key)\"\n >\n <valtimo-widget-dashboard-content\n *ngIf=\"(selectedDashboardKey$ | async) === dashboard.key\"\n [dashboard]=\"dashboard\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </cds-tab>\n </cds-tabs>\n </div>\n</div>\n","/*\n * Copyright 2015-2025 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 {Pipe, PipeTransform} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {WidgetTranslationService} from '../../services';\n\n@Pipe({\n standalone: false,\n name: 'widgetTranslate',\n})\nexport class WidgetTranslatePipe implements PipeTransform {\n constructor(private readonly widgetTranslationService: WidgetTranslationService) {}\n\n transform(translateKey: string, key: string): Observable<string> {\n return this.widgetTranslationService.translate(translateKey, key);\n }\n}\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {BarChartDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './bar-chart-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChartConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n });\n\n @Input() public readonly displayTypeKey: string;\n\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n @Input() set prefillConfiguration(configurationValue: BarChartDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<BarChartDisplayTypeProperties>\n >();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: formValue as BarChartDisplayTypeProperties,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart-configuration.component';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent} from '../../../../models';\nimport {BarChartData, BarChartDisplayTypeProperties} from '../../models';\nimport {BarChartOptions, type ChartTabularData, ScaleTypes} from '@carbon/charts';\nimport {CdsThemeService} from '@valtimo/components';\nimport {BehaviorSubject, filter, map, Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-bar-chart-display',\n templateUrl: './bar-chart-display.component.html',\n styleUrls: ['./bar-chart-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChartDisplayComponent implements DisplayComponent {\n @Input() public readonly displayTypeKey: string;\n @Input() public set data(value: BarChartData) {\n if (!value) return;\n this._data$.next(value);\n }\n @Input() public readonly displayTypeProperties: BarChartDisplayTypeProperties;\n\n private readonly _data$ = new BehaviorSubject<BarChartData | null>(null);\n\n public readonly barChartData$: Observable<ChartTabularData> = this._data$.pipe(\n filter(data => !!data),\n map(\n data =>\n data?.values.map(dataValue => ({\n group: dataValue.label,\n value: dataValue.value,\n })) || []\n )\n );\n\n public readonly barChartChartOptions$: Observable<BarChartOptions> =\n this.themeService.currentTheme$.pipe(\n map(currentTheme => ({\n title: 'Vertical simple bar (discrete)',\n theme: currentTheme,\n height: '400px',\n axes: {\n left: {\n mapsTo: 'value',\n },\n bottom: {\n mapsTo: 'group',\n scaleType: ScaleTypes.LABELS,\n },\n },\n }))\n );\n\n constructor(private readonly themeService: CdsThemeService) {}\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-donut-widget__header\">\n <h3 class=\"valtimo-donut-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-donut-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-donut-widget__content\">\n <ng-container *ngIf=\"barChartData$ | async as barChartData\">\n @if (barChartData.length > 0) {\n <ibm-bar-chart\n [data]=\"barChartData\"\n [options]=\"barChartChartOptions$ | async\"\n ></ibm-bar-chart>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'case.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart-configuration';\nexport * from './bar-chart-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {BarChartConfigurationComponent, BarChartDisplayComponent} from './components';\n\nexport const barChartSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'bar-chart',\n displayComponent: BarChartDisplayComponent,\n configurationComponent: BarChartConfigurationComponent,\n width: 1,\n height: 2,\n translations: {\n nl: {\n title: 'Staafdiagram',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n },\n en: {\n title: 'Bar chart',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n },\n de: {\n title: 'Balkendiagramm',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBERS],\n};\n","/*\n * Copyright 2015-2025 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 {WidgetTranslatePipe} from './widget-translate.pipe';\nimport {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [TranslateModule],\n declarations: [WidgetTranslatePipe],\n exports: [WidgetTranslatePipe],\n})\nexport class WidgetTranslatePipeModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './widget-translate.pipe';\nexport * from './widget-translate-pipe.module';\n","/*\n * Copyright 2015-2025 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\nexport * from './widget-translate';\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {barChartSpecification} from './bar-chart.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {BarChartConfigurationComponent, BarChartDisplayComponent} from './components';\nimport {ChartsModule} from '@carbon/charts-angular';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [BarChartDisplayComponent, BarChartConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n CommonModule,\n ChartsModule,\n CarbonListModule,\n TranslateModule,\n ],\n exports: [BarChartDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: barChartSpecification, multi: true}],\n})\nexport class BarChartModule {}\n","/*\n * Copyright 2015-2025 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\ninterface BarChartItem {\n value: number;\n label: string;\n}\n\ninterface BarChartData {\n values: BarChartItem[];\n}\n\ninterface BarChartDisplayTypeProperties {\n title: string;\n subtitle: string;\n}\n\nexport {BarChartData, BarChartItem, BarChartDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart.module';\nexport * from './bar-chart.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {BigNumberDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './big-number-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BigNumberConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n label: this.fb.control(''),\n useKPI: this.fb.control(false, [Validators.required]),\n lowSeverityThreshold: this.fb.control(null),\n mediumSeverityThreshold: this.fb.control(null),\n highSeverityThreshold: this.fb.control(null),\n });\n\n @Input() public readonly displayTypeKey: string;\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n public get label(): AbstractControl<string> {\n return this.form.get('label');\n }\n\n public get useKPI(): AbstractControl<boolean> {\n return this.form.get('useKPI');\n }\n\n public get lowSeverityThreshold(): AbstractControl<number> {\n return this.form.get('lowSeverityThreshold');\n }\n\n public get mediumSeverityThreshold(): AbstractControl<number> {\n return this.form.get('mediumSeverityThreshold');\n }\n\n public get highSeverityThreshold(): AbstractControl<number> {\n return this.form.get('highSeverityThreshold');\n }\n\n @Input() set prefillConfiguration(configurationValue: BigNumberDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n this.label.setValue(configurationValue.label || '');\n this.useKPI.setValue(configurationValue.useKPI || false);\n this.lowSeverityThreshold.setValue(configurationValue.lowSeverityThreshold || null);\n this.mediumSeverityThreshold.setValue(configurationValue.mediumSeverityThreshold || null);\n this.highSeverityThreshold.setValue(configurationValue.highSeverityThreshold || null);\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<ConfigurationOutput>();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n this.openKPISubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({valid: this.form.valid, data: formValue});\n })\n );\n }\n\n private openKPISubscription(): void {\n this._subscriptions.add(\n this.useKPI.valueChanges.pipe(startWith(this.useKPI.value)).subscribe(useKpi => {\n const validators = [Validators.required];\n\n if (useKpi) {\n this.lowSeverityThreshold.setValidators(validators);\n this.mediumSeverityThreshold.setValidators(validators);\n this.highSeverityThreshold.setValidators(validators);\n } else {\n this.lowSeverityThreshold.clearValidators();\n this.mediumSeverityThreshold.clearValidators();\n this.highSeverityThreshold.clearValidators();\n }\n\n this.lowSeverityThreshold.updateValueAndValidity();\n this.mediumSeverityThreshold.updateValueAndValidity();\n this.highSeverityThreshold.updateValueAndValidity();\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"label.dirty && label.invalid\"\n >\n {{ 'label' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"label\" [invalid]=\"label.dirty && label.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-checkbox formControlName=\"useKPI\">\n {{ 'useKPI' | widgetTranslate: displayTypeKey | async }}\n </cds-checkbox>\n </div>\n\n <div class=\"form__row\" *ngIf=\"useKPI.value\">\n <div class=\"form__element\">\n <cds-label [invalid]=\"lowSeverityThreshold.dirty && lowSeverityThreshold.invalid\">\n {{ 'lowSeverityThreshold' | widgetTranslate: displayTypeKey | async }}\n\n <input\n cdsText\n [invalid]=\"lowSeverityThreshold.dirty && lowSeverityThreshold.invalid\"\n formControlName=\"lowSeverityThreshold\"\n type=\"number\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__spacer\"></div>\n\n <div class=\"form__element\">\n <cds-label [invalid]=\"mediumSeverityThreshold.dirty && mediumSeverityThreshold.invalid\">\n {{ 'mediumSeverityThreshold' | widgetTranslate: displayTypeKey | async }}\n\n <input\n cdsText\n formControlName=\"mediumSeverityThreshold\"\n [invalid]=\"mediumSeverityThreshold.dirty && mediumSeverityThreshold.invalid\"\n type=\"number\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__spacer\"></div>\n\n <div class=\"form__element\">\n <cds-label [invalid]=\"highSeverityThreshold.dirty && highSeverityThreshold.invalid\">\n {{ 'highSeverityThreshold' | widgetTranslate: displayTypeKey | async }}\n\n <input\n cdsText\n formControlName=\"highSeverityThreshold\"\n [invalid]=\"highSeverityThreshold.dirty && highSeverityThreshold.invalid\"\n type=\"number\"\n />\n </cds-label>\n </div>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number-configuration.component';\n","/*\n * Copyright 2015-2025 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 {EventEmitter} from '@angular/core';\n\ninterface ConfigurationOutput<T = object> {\n valid: boolean;\n data: T;\n}\n\ninterface ConfigurationComponent {\n disabled: boolean;\n prefillConfiguration?: object;\n configurationEvent: EventEmitter<ConfigurationOutput>;\n}\n\ninterface DisplayTypeConfigurationComponent extends ConfigurationComponent {\n displayTypeKey: string;\n}\n\ninterface DataSourceConfigurationComponent extends ConfigurationComponent {\n dataSourceKey: string;\n}\n\nexport {\n ConfigurationComponent,\n DisplayTypeConfigurationComponent,\n DataSourceConfigurationComponent,\n ConfigurationOutput,\n};\n","/*\n * Copyright 2015-2025 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\ninterface Dashboard {\n key: string;\n title: string;\n widgets: Array<DashboardWidgetConfiguration>;\n}\n\ninterface DashboardWidgetConfiguration {\n key: string;\n title: string;\n dataSourceKey: string;\n displayType: string;\n dataSourceProperties: object;\n displayTypeProperties: object;\n url: string;\n}\n\nexport {Dashboard, DashboardWidgetConfiguration};\n","/*\n * Copyright 2015-2025 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 {Type} from '@angular/core';\nimport {DataSourceConfigurationComponent} from './configuration.model';\n\ninterface DataSourceSpecification {\n dataSourceKey: string;\n configurationComponent?: Type<DataSourceConfigurationComponent>;\n translations: {\n [langKey: string]: {\n title: string;\n [translationKey: string]: string;\n };\n };\n}\n\ninterface QueryCondition {\n queryPath: string;\n queryOperator: string;\n queryValue: string;\n}\n\nexport {DataSourceSpecification, QueryCondition};\n","/*\n * Copyright 2015-2025 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 {Type} from '@angular/core';\nimport {DisplayTypeConfigurationComponent} from './configuration.model';\n\ninterface DisplayComponent {\n displayTypeKey: string;\n displayTypeProperties: object;\n data: object;\n}\n\ninterface DisplayTypeSpecification {\n displayTypeKey: string;\n displayComponent: Type<DisplayComponent>;\n configurationComponent?: Type<DisplayTypeConfigurationComponent>;\n requiredDataFeatures: Array<string>;\n width: number;\n height: number;\n translations: {\n [langKey: string]: {\n title: string;\n [translationKey: string]: string;\n };\n };\n}\n\nexport {DisplayComponent, DisplayTypeSpecification};\n","/*\n * Copyright 2015-2025 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\ninterface WidgetConfigurationBin {\n configurationKey: string;\n width: number;\n height: number;\n}\n\ninterface PackResult {\n height: number;\n width: number;\n items: Array<{width: number; height: number; x: number; y: number; item: WidgetConfigurationBin}>;\n}\n\nexport {WidgetConfigurationBin, PackResult};\n","/*\n * Copyright 2015-2025 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\ninterface WidgetData {\n key: string;\n data: object;\n}\n\nexport {WidgetData};\n","/*\n * Copyright 2015-2025 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\nenum WidgetSeverity {\n BLACK = 'valtimo-severity__black',\n GREEN = 'valtimo-severity__green',\n YELLOW = 'valtimo-severity__yellow',\n ORANGE = 'valtimo-severity__orange',\n RED = 'valtimo-severity__red',\n}\n\nexport {WidgetSeverity};\n","/*\n * Copyright 2015-2025 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\nexport * from './configuration.model';\nexport * from './dashboard.model';\nexport * from './data-source.model';\nexport * from './display-type.model';\nexport * from './layout.model';\nexport * from './widget-data.model';\nexport * from './widget-display.model';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent, WidgetSeverity} from '../../../../models';\nimport {BigNumberData, BigNumberDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-big-number-display',\n templateUrl: './big-number-display.component.html',\n styleUrls: ['./big-number-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BigNumberDisplayComponent implements DisplayComponent {\n @Input() displayTypeKey: string;\n @Input() data: BigNumberData;\n @Input() displayTypeProperties: BigNumberDisplayTypeProperties;\n\n public get severityClass(): string {\n if (!this.displayTypeProperties.useKPI) {\n return WidgetSeverity.BLACK;\n }\n\n const value: number = this.data?.value;\n\n if (value < this.displayTypeProperties.lowSeverityThreshold) {\n return WidgetSeverity.GREEN;\n } else if (value < this.displayTypeProperties.mediumSeverityThreshold) {\n return WidgetSeverity.YELLOW;\n } else if (value < this.displayTypeProperties.highSeverityThreshold) {\n return WidgetSeverity.ORANGE;\n }\n\n return WidgetSeverity.RED;\n }\n\n public get numberFontSize(): number {\n if (!this.data) {\n return 122;\n }\n\n return Math.floor(122 / this.data.value.toString().length) + 20;\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-big-number-widget__header\">\n <h3 class=\"valtimo-big-number-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-big-number-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-big-number-widget__content\">\n <span\n [class]=\"['valtimo-big-number-widget__number', severityClass]\"\n [style.fontSize.px]=\"numberFontSize\"\n >{{ data?.value }}</span\n >\n\n <span *ngIf=\"displayTypeProperties.label\" class=\"valtimo-big-number-widget__label\">\n {{ displayTypeProperties.label }}\n </span>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number-configuration';\nexport * from './big-number-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {BigNumberConfigurationComponent, BigNumberDisplayComponent} from './components';\n\nexport const bigNumberSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'number',\n displayComponent: BigNumberDisplayComponent,\n configurationComponent: BigNumberConfigurationComponent,\n width: 1,\n height: 1,\n translations: {\n nl: {\n title: 'Groot getal',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n useKPI: 'KPI gebruiken',\n lowSeverityThreshold: 'Lage ernstdrempel (vereist)',\n mediumSeverityThreshold: 'Middelmatige ernstdrempel (vereist)',\n highSeverityThreshold: 'Hoge ernstdrempel (vereist)',\n },\n en: {\n title: 'Big number',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n useKPI: 'Use KPI',\n lowSeverityThreshold: 'Low severity threshold (required)',\n mediumSeverityThreshold: 'Medium severity threshold (required)',\n highSeverityThreshold: 'High severity threshold (required)',\n },\n de: {\n title: 'Große Nummer',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n useKPI: 'Verwenden Sie KPI',\n lowSeverityThreshold: 'Niedriger Schweregradschwellenwert (erforderlich)',\n mediumSeverityThreshold: 'Mittlerer Schweregradschwellenwert (erforderlich)',\n highSeverityThreshold: 'Hoher Schweregradschwellenwert (erforderlich)',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBER],\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {bigNumberSpecification} from './big-number.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {BigNumberConfigurationComponent, BigNumberDisplayComponent} from './components';\n\n@NgModule({\n declarations: [BigNumberDisplayComponent, BigNumberConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n ],\n exports: [BigNumberDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: bigNumberSpecification, multi: true}],\n})\nexport class BigNumberModule {}\n","/*\n * Copyright 2015-2025 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\ninterface BigNumberData {\n value: number;\n}\n\ninterface BigNumberDisplayTypeProperties {\n title: string;\n subtitle: string;\n useKPI: boolean;\n lowSeverityThreshold: number;\n mediumSeverityThreshold: number;\n highSeverityThreshold: number;\n label?: string;\n}\n\nexport {BigNumberData, BigNumberDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number.module';\nexport * from './big-number.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {DonutDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './donut-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DonutConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n label: this.fb.control(''),\n useKPI: this.fb.control(false, [Validators.required]),\n });\n\n @Input() public readonly displayTypeKey: string;\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n public get label(): AbstractControl<string> {\n return this.form.get('label');\n }\n\n @Input() set prefillConfiguration(configurationValue: DonutDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n this.label.setValue(configurationValue.label || '');\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<DonutDisplayTypeProperties>\n >();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: formValue as DonutDisplayTypeProperties,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"label.dirty && label.invalid\"\n >\n {{ 'label' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"label\" [invalid]=\"label.dirty && label.invalid\" />\n </cds-label>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './donut-configuration.component';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent} from '../../../../models';\nimport {DonutData, DonutDisplayTypeProperties} from '../../models';\nimport {type ChartTabularData, DonutChartOptions} from '@carbon/charts-angular';\nimport {CdsThemeService} from '@valtimo/components';\nimport {BehaviorSubject, filter, map, Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-donut-display',\n templateUrl: './donut-display.component.html',\n styleUrls: ['./donut-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DonutDisplayComponent implements DisplayComponent {\n @Input() public readonly displayTypeKey: string;\n @Input() public set data(value: DonutData) {\n if (!value) return;\n this._data$.next(value);\n }\n @Input() public readonly displayTypeProperties: DonutDisplayTypeProperties;\n\n private readonly _data$ = new BehaviorSubject<DonutData | null>(null);\n\n public readonly donutData$: Observable<ChartTabularData> = this._data$.pipe(\n filter(data => !!data),\n map(\n data =>\n data?.values.map(dataValue => ({\n group: dataValue.label,\n value: dataValue.value,\n })) || []\n )\n );\n\n public readonly donutChartOptions$: Observable<DonutChartOptions> =\n this.themeService.currentTheme$.pipe(\n map(currentTheme => ({\n resizable: true,\n toolbar: {enabled: false},\n height: '300px',\n theme: currentTheme,\n donut: {\n alignment: 'center',\n center: {\n label: this.displayTypeProperties.label,\n },\n },\n pie: {\n labels: {\n enabled: false,\n },\n },\n legend: {\n truncation: {\n numCharacter: 28,\n },\n },\n }))\n );\n\n constructor(private readonly themeService: CdsThemeService) {}\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-donut-widget__header\">\n <h3 class=\"valtimo-donut-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-donut-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-donut-widget__content\">\n <ng-container *ngIf=\"donutData$ | async as donutData\">\n @if (donutData.length > 0) {\n <ibm-donut-chart\n type=\"donut\"\n class=\"n-chart\"\n [data]=\"donutData\"\n [options]=\"donutChartOptions$ | async\"\n ></ibm-donut-chart>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'case.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './donut-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './donut-configuration';\nexport * from './donut-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {DonutConfigurationComponent, DonutDisplayComponent} from './components';\n\nexport const donutSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'donut',\n displayComponent: DonutDisplayComponent,\n configurationComponent: DonutConfigurationComponent,\n width: 1,\n height: 2,\n translations: {\n nl: {\n title: 'Donut-diagram',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n },\n en: {\n title: 'Donut chart',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n },\n de: {\n title: 'Donut-Diagramm',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBERS],\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {donutSpecification} from './donut.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {DonutConfigurationComponent, DonutDisplayComponent} from './components';\nimport {ChartsModule} from '@carbon/charts-angular';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [DonutDisplayComponent, DonutConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n CommonModule,\n ChartsModule,\n CarbonListModule,\n TranslateModule,\n ],\n exports: [DonutDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: donutSpecification, multi: true}],\n})\nexport class DonutModule {}\n","/*\n * Copyright 2015-2025 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\ninterface DonutData {\n values: DonutItem[];\n}\n\ninterface DonutItem {\n value: number;\n label: string;\n}\n\ninterface DonutDisplayTypeProperties {\n title: string;\n subtitle: string;\n label?: string;\n}\n\nexport {DonutData, DonutItem, DonutDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './donut.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './donut.module';\nexport * from './donut.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {GaugeDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './gauge-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaugeConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n label: this.fb.control(''),\n useKPI: this.fb.control(false, [Validators.required]),\n });\n\n @Input() public readonly displayTypeKey: string;\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n public get label(): AbstractControl<string> {\n return this.form.get('label');\n }\n\n @Input() set prefillConfiguration(configurationValue: GaugeDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n this.label.setValue(configurationValue.label || '');\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<GaugeDisplayTypeProperties>\n >();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: formValue as GaugeDisplayTypeProperties,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"label.dirty && label.invalid\"\n >\n {{ 'label' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"label\" [invalid]=\"label.dirty && label.invalid\" />\n </cds-label>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge-configuration.component';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent} from '../../../../models';\nimport {GaugeData, GaugeDisplayTypeProperties} from '../../models';\nimport {type ChartTabularData, GaugeChartOptions} from '@carbon/charts-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable} from 'rxjs';\nimport {CdsThemeService} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n standalone: false,\n selector: 'valtimo-gauge-display',\n templateUrl: './gauge-display.component.html',\n styleUrls: ['./gauge-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaugeDisplayComponent implements DisplayComponent {\n @Input() public readonly displayTypeKey: string;\n @Input() public set data(value: GaugeData) {\n if (!value) return;\n this._data$.next(value);\n }\n @Input() public readonly displayTypeProperties: GaugeDisplayTypeProperties;\n\n private readonly _DELTA: number = -1.0;\n\n private readonly _data$ = new BehaviorSubject<GaugeData | null>(null);\n\n public readonly chartData$: Observable<ChartTabularData> = this._data$.pipe(\n filter(data => !!data),\n map(data => [\n {\n group: 'value',\n value: this.calculatePercentage(data?.value || 0, data?.total || 0),\n },\n {\n group: 'delta',\n value: this._DELTA,\n },\n ])\n );\n\n public readonly gaugeChartOptions$: Observable<GaugeChartOptions> = combineLatest([\n this.themeService.currentTheme$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([currentTheme]) => ({\n resizable: true,\n toolbar: {enabled: false},\n height: '110px',\n theme: currentTheme == 'g10' ? 'white' : 'g100',\n gauge: {\n alignment: 'center',\n numberFormatter: value => this.numberFormatter(this, value),\n deltaArrow: {\n enabled: false,\n },\n showPercentageSymbol: false,\n type: 'semi',\n },\n }))\n );\n\n constructor(\n private readonly themeService: CdsThemeService,\n private readonly translateService: TranslateService\n ) {}\n\n private calculatePercentage(value: number, total?: number): number {\n return (value * 100.0) / (total || 100.0);\n }\n\n private numberFormatter(scope: GaugeDisplayComponent, value: number): string {\n const scopeData = scope._data$.getValue();\n\n if (value == scope._DELTA) {\n return `${this.translateService.instant('dashboard.of')} ${scopeData?.total || 0} ${scope.displayTypeProperties.label} `;\n }\n\n return Math.round(value * (scopeData?.total || 0)) / 100.0 + '';\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-gauge-widget__header\">\n <h3 class=\"valtimo-gauge-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-gauge-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-gauge-widget__content\">\n <ibm-gauge-chart\n *ngIf=\"chartData$ | async as chartData\"\n type=\"gauge\"\n class=\"n-chart\"\n [data]=\"chartData\"\n [options]=\"gaugeChartOptions$ | async\"\n ></ibm-gauge-chart>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge-configuration';\nexport * from './gauge-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {GaugeConfigurationComponent, GaugeDisplayComponent} from './components';\n\nexport const gaugeSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'gauge',\n displayComponent: GaugeDisplayComponent,\n configurationComponent: GaugeConfigurationComponent,\n width: 1,\n height: 1,\n translations: {\n nl: {\n title: 'Graadmeter',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n },\n en: {\n title: 'Gauge',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n },\n de: {\n title: 'Messgerät',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBER, DATA_FEATURES.TOTAL],\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {gaugeSpecification} from './gauge.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {GaugeConfigurationComponent, GaugeDisplayComponent} from './components';\nimport {ChartsModule} from '@carbon/charts-angular';\n\n@NgModule({\n declarations: [GaugeDisplayComponent, GaugeConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n CommonModule,\n ChartsModule,\n ],\n exports: [GaugeDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: gaugeSpecification, multi: true}],\n})\nexport class GaugeModule {}\n","/*\n * Copyright 2015-2025 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\ninterface GaugeData {\n value: number;\n total?: number;\n}\n\ninterface GaugeDisplayTypeProperties {\n title: string;\n subtitle: string;\n label?: string;\n}\n\nexport {GaugeData, GaugeDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge.module';\nexport * from './gauge.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {MeterDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './meter-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MeterConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n });\n\n @Input() public readonly displayTypeKey: string;\n\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n @Input() set prefillConfiguration(configurationValue: MeterDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<MeterDisplayTypeProperties>\n >();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: formValue as MeterDisplayTypeProperties,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './meter-configuration.component';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent} from '../../../../models';\nimport {MeterData, MeterDisplayTypeProperties} from '../../models';\nimport {type ChartTabularData, MeterChartOptions} from '@carbon/charts-angular';\nimport {CdsThemeService} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, filter, map, Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-meter-display',\n templateUrl: './meter-display.component.html',\n styleUrls: ['./meter-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MeterDisplayComponent implements DisplayComponent {\n @Input() public readonly displayTypeKey: string;\n @Input() public set data(value: MeterData) {\n if (!value) return;\n this._data$.next(value);\n }\n @Input() public readonly displayTypeProperties: MeterDisplayTypeProperties;\n\n private readonly _data$ = new BehaviorSubject<MeterData | null>(null);\n\n public readonly meterData$: Observable<ChartTabularData> = this._data$.pipe(\n filter(data => !!data),\n map(\n data =>\n data?.values.map(dataValue => ({\n group: dataValue.label,\n value: dataValue.value,\n })) || []\n )\n );\n\n public readonly meterChartOptions$: Observable<MeterChartOptions> = combineLatest([\n this.themeService.currentTheme$,\n this.meterData$,\n ]).pipe(\n map(([currentTheme, meterData]) => ({\n resizable: true,\n toolbar: {enabled: false},\n theme: currentTheme,\n height: '60px',\n meter: {\n height: 60,\n showLabels: false,\n title: {\n percentageIndicator: {\n enabled: false,\n },\n },\n proportional: {\n total: meterData.reduce((acc, curr) => acc + curr.value, 0),\n },\n },\n }))\n );\n\n constructor(private readonly themeService: CdsThemeService) {}\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-donut-widget__header\">\n <h3 class=\"valtimo-donut-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-donut-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-donut-widget__content\">\n <ng-container *ngIf=\"meterData$ | async as meterData\">\n @if (meterData.length > 0) {\n <ibm-meter-chart [data]=\"meterData\" [options]=\"meterChartOptions$ | async\"></ibm-meter-chart>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'case.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './meter-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './meter-configuration';\nexport * from './meter-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {MeterConfigurationComponent, MeterDisplayComponent} from './components';\n\nexport const meterSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'meter',\n displayComponent: MeterDisplayComponent,\n configurationComponent: MeterConfigurationComponent,\n width: 2,\n height: 1,\n translations: {\n nl: {\n title: 'Meter',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n },\n en: {\n title: 'Meter',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n },\n de: {\n title: 'Meter',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBERS],\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {meterSpecification} from './meter.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {MeterConfigurationComponent, MeterDisplayComponent} from './components';\nimport {ChartsModule} from '@carbon/charts-angular';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [MeterDisplayComponent, MeterConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n CommonModule,\n ChartsModule,\n CarbonListModule,\n TranslateModule,\n ],\n exports: [MeterDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: meterSpecification, multi: true}],\n})\nexport class MeterModule {}\n","/*\n * Copyright 2015-2025 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\ninterface MeterItem {\n value: number;\n label: string;\n}\n\ninterface MeterData {\n values: MeterItem[];\n}\n\ninterface MeterDisplayTypeProperties {\n title: string;\n subtitle: string;\n}\n\nexport {MeterData, MeterItem, MeterDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './meter.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './meter.module';\nexport * from './meter.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 {BarChartModule} from './bar-chart';\nimport {BigNumberModule} from './big-number';\nimport {DonutModule} from './donut';\nimport {GaugeModule} from './gauge';\nimport {MeterModule} from './meter';\n\n@NgModule({\n imports: [BarChartModule, BigNumberModule, DonutModule, GaugeModule, MeterModule],\n})\nexport class DisplayWidgetTypesModule {}\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DataSourceConfigurationComponent} from '../../../../models';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, Subscription} from 'rxjs';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {CaseCountConfiguration} from '../../models';\nimport {DocumentService} from '@valtimo/document';\nimport {ListItem} from 'carbon-components-angular';\nimport {\n ListItemWithId,\n MultiInputKeyValue,\n MultiInputValues,\n ValuePathSelectorPrefix,\n} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Operator} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './case-count-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./case-count-configuration.component.scss'],\n})\nexport class CaseCountConfigurationComponent\n implements OnInit, OnDestroy, DataSourceConfigurationComponent\n{\n @Input() public dataSourceKey: string;\n\n public readonly form = this.fb.group({\n documentDefinition: this.fb.control(null, [Validators.required]),\n queryConditions: this.fb.control(null),\n });\n\n @Input() public set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public readonly selectedDocumentDefinition$ = new BehaviorSubject<string>('');\n\n public readonly documentItems$: Observable<Array<ListItem>> = combineLatest([\n this.documentService.getAllDefinitions(),\n this.selectedDocumentDefinition$,\n ]).pipe(\n map(([documentDefinitions, selectedDocumentDefintion]) =>\n documentDefinitions.content.map(definition => ({\n content: definition.id.name,\n selected: definition.id.name === selectedDocumentDefintion,\n }))\n )\n );\n\n private readonly _OPERATORS: Array<Operator> = [\n Operator.NOT_EQUAL_TO,\n Operator.EQUAL_TO,\n Operator.GREATER_THAN,\n Operator.GREATER_THAN_OR_EQUAL_TO,\n Operator.LESS_THAN,\n Operator.LESS_THAN_OR_EQUAL_TO,\n ];\n\n public readonly operatorItems$: Observable<Array<ListItemWithId>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this._OPERATORS.map(operator => ({\n id: operator,\n content: this.translateService.instant('condition.operator.' + operator),\n selected: false,\n }))\n )\n );\n\n public readonly defaultConditionValues$ = new BehaviorSubject<MultiInputValues | null>(null);\n public readonly allConditionsValid$ = new BehaviorSubject<boolean>(true);\n\n public get documentDefinition() {\n return this.form.get('documentDefinition');\n }\n\n public get queryConditions() {\n return this.form.get('queryConditions');\n }\n\n @Input() set prefillConfiguration(configurationValue: CaseCountConfiguration) {\n if (configurationValue) {\n this.documentDefinitionSelected({\n item: {\n content: configurationValue.documentDefinition,\n },\n } as any);\n this.defaultConditionValues$.next(\n configurationValue.queryConditions.map(condition => ({\n key: condition.queryPath,\n dropdown: condition.queryOperator,\n value: condition.queryValue,\n }))\n );\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<CaseCountConfiguration>\n >();\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public documentDefinitionSelected(documentDefinitionItem: ListItem): void {\n if (!documentDefinitionItem) {\n return;\n }\n\n this.selectedDocumentDefinition$.next(documentDefinitionItem?.item?.content);\n this.documentDefinition.setValue(documentDefinitionItem?.item?.content);\n }\n\n public conditionsValueChange(values: Array<MultiInputKeyValue>): void {\n if (values.length === 0) {\n this.queryConditions.setValue(null);\n } else {\n this.queryConditions.setValue(\n values.map(value => ({\n queryPath: value.key,\n queryOperator: value.dropdown,\n queryValue: value.value,\n }))\n );\n }\n }\n\n onAllConditionsValid(allConditionsValid: boolean): void {\n this.allConditionsValid$.next(allConditionsValid);\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.form.valueChanges.pipe(startWith(this.form.value)),\n this.allConditionsValid$,\n ]).subscribe(([formValue, allConditionsValid]) => {\n this.configurationEvent.emit({\n valid: this.form.valid && allConditionsValid,\n data: formValue as CaseCountConfiguration,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form\n class=\"case-count-configuration-form\"\n *ngIf=\"{documentItems: documentItems$ | async, operatorItems: operatorItems$} as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"documentDefinition\"\n [helperText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"documentDefinition.dirty && documentDefinition.invalid\"\n [label]=\"'documentDefinition' | widgetTranslate: dataSourceKey | async\"\n (selected)=\"documentDefinitionSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs?.documentItems || []\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <div class=\"form__element conditions-multi-input\">\n <cds-label\n [helperText]=\"'conditionsHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"conditions-label\"\n >{{ 'conditions' | widgetTranslate: dataSourceKey | async }}</cds-label\n >\n <valtimo-carbon-multi-input\n type=\"valuePathSelectorDropdownValue\"\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"defaultConditionValues$ | async\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"0\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"0\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n (allValuesValidEvent)=\"onAllConditionsValid($event)\"\n (valueChange)=\"conditionsValueChange($event)\"\n valuePathSelectorNotation=\"dots\"\n [valuePathSelectorPrefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [valuePathSelectorShowCaseDefinitionSelector]=\"false\"\n [valuePathSelectorCaseDefinitionKey]=\"selectedDocumentDefinition$ | async\"\n [keyColumnFlex]=\"2\"\n [dropdownColumnFlex]=\"1\"\n [valueColumnFlex]=\"1\"\n ></valtimo-carbon-multi-input>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './case-count-configuration.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './case-count-configuration';\n","/*\n * Copyright 2015-2025 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 {QueryCondition} from '../../../models';\n\ninterface CaseCountConfiguration {\n documentDefinition: string;\n queryConditions: QueryCondition[];\n}\n\nexport {CaseCountConfiguration};\n","/*\n * Copyright 2015-2025 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\nexport * from './case-count.model';\n","/*\n * Copyright 2015-2025 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 *\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\nconst CONDITIONS_HELPER_TEXTS = {\n DE: (example = 'case:createdBy') =>\n `Zum Beispiel: ‘${example}’, ‘Not equal to’, ‘test@test.com’. Um mit leeren Werten zu vergleichen, kann ‘\\${null}’ als Wert verwendet werden. Um mit dem aktuellen Datum zu vergleichen, kann ‘\\${localDateTimeNow}’ als Wert verwendet werden. Zusätzlich wird Logik wie ‘\\${localDateTimeNow.minusWeeks(2)}’ unterstützt. Die Platzhalter ‘\\${currentUserId}’, ‘\\${currentUserEmail}’ und ‘\\${currentUserIdentifier}’ ermöglichen die Anzeige personalisierter Informationen für den aktuellen Dashboard-Benutzer.`,\n NL: (example = 'case:createdBy') =>\n `Bijvoorbeeld: ‘${example}’, ‘Not equal to’, ‘test@test.com’. Om te vergelijken met lege waarden, kun je ‘\\${null}’ gebruiken als waarde. Om te vergelijken met de huidige datum, gebruik je ‘\\${localDateTimeNow}’ als waarde. Hier wordt logica zoals ‘\\${localDateTimeNow.minusWeeks(2)}’ ondersteund. De placeholders ‘\\${currentUserId}’, ‘\\${currentUserEmail}’ en ‘\\${currentUserIdentifier}’ maken het mogelijk om gepersonaliseerde informatie weer te geven voor de huidige dashboardgebruiker.`,\n EN: (example = 'case:createdBy') =>\n `For example: '${example}', 'Not equal to', 'test@test.com'. To compare against empty values, you can use '\\${null}' as a value. To compare with the current date, use '\\${localDateTimeNow}' as a value. Additionally, logic such as '\\${localDateTimeNow.minusWeeks(2)}' is supported. The placeholders '\\${currentUserId}', '\\${currentUserEmail}', and '\\${currentUserIdentifier}' enable the display of personalized information for the current dashboard user.`,\n};\n\nexport {CONDITIONS_HELPER_TEXTS};\n","/*\n * Copyright 2015-2025 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\nexport * from './conditions';\n","/*\n * Copyright 2015-2025 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 {DataSourceSpecification} from '../../models';\nimport {CaseCountConfigurationComponent} from './components';\nimport {CONDITIONS_HELPER_TEXTS} from '../shared';\n\nexport const caseCountDataSourceSpecification: DataSourceSpecification = {\n dataSourceKey: 'case-count',\n configurationComponent: CaseCountConfigurationComponent,\n translations: {\n de: {\n title: 'Fallzahl',\n documentDefinition: 'Falltyp (erforderlich)',\n documentDefinitionHelperText: 'Der Falltyp, für den die Anzahl abgerufen wird',\n path: 'Pfad',\n operator: 'Operator',\n value: 'Wert',\n conditions: 'Bedingungen',\n conditionsHelperText: `Geben Sie optionale Bedingungen zum Abrufen der Anzahl der Fälle für den ausgewählten Falltyp an. ${CONDITIONS_HELPER_TEXTS.DE()}`,\n addCondition: 'Bedingung hinzufügen',\n },\n en: {\n title: 'Case count',\n documentDefinition: 'Case type (required)',\n documentDefinitionHelperText: 'The case type for which the count is retrieved',\n path: 'Path (required)',\n operator: 'Operator',\n value: 'Value',\n conditions: 'Conditions',\n conditionsHelperText: `Specify optional conditions for retrieving the number of cases for the selected case type. ${CONDITIONS_HELPER_TEXTS.EN()}`,\n addCondition: 'Add condition',\n },\n nl: {\n title: 'Aantal dossiers',\n documentDefinition: 'Dossiertype (vereist)',\n documentDefinitionHelperText: 'Het dossiertype waarvoor de telling wordt opgehaald',\n path: 'Pad',\n operator: 'Operator',\n value: 'Waarde',\n conditions: 'Condities',\n conditionsHelperText: `Geef optionele condities op voor het ophalen van het aantal zaken voor het geselecteerde dossiertype. ${CONDITIONS_HELPER_TEXTS.NL()}}`,\n addCondition: 'Conditie toevoegen',\n },\n },\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DATA_SOURCE_TOKEN} from '../../constants';\nimport {caseCountDataSourceSpecification} from './case-count.specification';\nimport {CaseCountConfigurationComponent} from './components';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {DropdownModule, InputModule} from 'carbon-components-angular';\nimport {CarbonMultiInputModule} from '@valtimo/components';\n\n@NgModule({\n declarations: [CaseCountConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n DropdownModule,\n CarbonMultiInputModule,\n ],\n exports: [CaseCountConfigurationComponent],\n providers: [\n {provide: DATA_SOURCE_TOKEN, useValue: caseCountDataSourceSpecification, multi: true},\n ],\n})\nexport class CaseCountDataSourceModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './components';\nexport * from './models';\nexport * from './case-count.module';\nexport * from './case-count.specification';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DataSourceConfigurationComponent} from '../../../../models';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n Observable,\n startWith,\n Subscription,\n} from 'rxjs';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {CaseCountsConfiguration, CaseCountsQueryItem, CaseCountsQueryItemForm} from '../../models';\nimport {DocumentService} from '@valtimo/document';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {ListItemWithId, MultiInputValues, ValuePathSelectorPrefix} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {isEqual} from 'lodash';\nimport {Add16, TrashCan16} from '@carbon/icons';\nimport {Operator} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './case-counts-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./case-counts-configuration.component.scss'],\n})\nexport class CaseCountsConfigurationComponent\n implements OnInit, OnDestroy, DataSourceConfigurationComponent\n{\n @Input() public dataSourceKey: string;\n\n private readonly _EMPTY_QUERY_ITEM_VALUE: CaseCountsQueryItemForm = {\n label: '',\n queryConditions: [{key: '', value: '', dropdown: ''}],\n };\n\n public readonly form = this.fb.group({\n documentDefinition: this.fb.control(null, [Validators.required]),\n queryItems: this.fb.control(\n [this._EMPTY_QUERY_ITEM_VALUE, this._EMPTY_QUERY_ITEM_VALUE],\n [this.queryItemsValidator()]\n ),\n });\n\n @Input() public set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get queryItems(): AbstractControl<CaseCountsQueryItemForm[]> {\n return this.form.get('queryItems');\n }\n\n public get queryItemsValue$(): Observable<CaseCountsQueryItemForm[]> {\n return this.queryItems.valueChanges.pipe(startWith(this.queryItems.value || []));\n }\n\n public get queryItemsList$(): Observable<null[]> {\n return this.queryItemsValue$.pipe(\n map(queryItemsValue => queryItemsValue.map(() => null)),\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n public get documentDefinition() {\n return this.form.get('documentDefinition');\n }\n\n public get formDisabled(): boolean {\n return this.form.disabled;\n }\n\n @Input() set prefillConfiguration(configurationValue: CaseCountsConfiguration) {\n if (!configurationValue) return;\n\n this.documentDefinitionSelected({\n item: {\n content: configurationValue.documentDefinition,\n },\n } as any);\n this.documentDefinition.patchValue(configurationValue.documentDefinition);\n\n this.queryItems.patchValue(this.queryItemsToMultiInputValues(configurationValue.queryItems));\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<CaseCountsConfiguration>\n >();\n\n public readonly selectedDocumentDefinition$ = new BehaviorSubject<string>('');\n\n public readonly documentItems$: Observable<Array<ListItem>> = combineLatest([\n this.documentService.getAllDefinitions(),\n this.selectedDocumentDefinition$,\n ]).pipe(\n map(([documentDefinitions, selectedDocumentDefintion]) =>\n documentDefinitions.content.map(definition => ({\n content: definition.id.name,\n selected: definition.id.name === selectedDocumentDefintion,\n }))\n )\n );\n\n private readonly _OPERATORS: Array<Operator> = [\n Operator.NOT_EQUAL_TO,\n Operator.EQUAL_TO,\n Operator.GREATER_THAN,\n Operator.GREATER_THAN_OR_EQUAL_TO,\n Operator.LESS_THAN,\n Operator.LESS_THAN_OR_EQUAL_TO,\n ];\n\n public readonly operatorItems$: Observable<Array<ListItemWithId>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this._OPERATORS.map(operator => ({\n id: operator,\n content: this.translateService.instant('condition.operator.' + operator),\n selected: false,\n }))\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Add16, TrashCan16]);\n }\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public documentDefinitionSelected(documentDefinitionItem: ListItem): void {\n const documentDefinitionName = documentDefinitionItem?.item?.content;\n\n if (!documentDefinitionName) {\n return;\n }\n\n this.selectedDocumentDefinition$.next(documentDefinitionName);\n this.documentDefinition.setValue(documentDefinitionName);\n }\n\n public conditionsValueChange(index: number, values: MultiInputValues): void {\n const currentQueryItemsValues = this.queryItems.value;\n\n if (isEqual(currentQueryItemsValues[index].queryConditions, values)) return;\n\n this.queryItems.patchValue(\n currentQueryItemsValues.map((item, itemIndex) =>\n itemIndex === index ? {...item, queryConditions: values} : item\n )\n );\n }\n\n public labelValueChange(index: number, value: string): void {\n const currentQueryItemsValues = this.queryItems.value;\n\n if (currentQueryItemsValues[index].label === value) return;\n\n this.queryItems.patchValue(\n currentQueryItemsValues.map((item, itemIndex) =>\n itemIndex === index ? {...item, label: value} : item\n )\n );\n }\n\n public addQueryItem(): void {\n const currentQueryItems = this.queryItems.value;\n this.queryItems.patchValue([...currentQueryItems, this._EMPTY_QUERY_ITEM_VALUE]);\n }\n\n public deleteCount(i: number): void {\n const currentQueryItems = this.queryItems.value;\n this.queryItems.patchValue(currentQueryItems.filter((_, index) => index !== i));\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: {\n documentDefinition: formValue?.documentDefinition,\n queryItems: this.multiInputValuesToQueryItems(formValue.queryItems),\n } as CaseCountsConfiguration,\n });\n })\n );\n }\n\n private queryItemsToMultiInputValues(\n queryItems: CaseCountsQueryItem[]\n ): CaseCountsQueryItemForm[] {\n return queryItems.map(queryItem => ({\n ...queryItem,\n queryConditions: queryItem.queryConditions.map(condition => ({\n key: condition.queryPath,\n dropdown: condition.queryOperator,\n value: condition.queryValue,\n })),\n }));\n }\n\n private multiInputValuesToQueryItems(\n multiInputValues: CaseCountsQueryItemForm[]\n ): CaseCountsQueryItem[] {\n return multiInputValues.map(queryItem => ({\n ...queryItem,\n queryConditions: queryItem.queryConditions.map(condition => ({\n queryPath: condition.key,\n queryOperator: condition.dropdown,\n queryValue: condition.value,\n })),\n }));\n }\n\n private queryItemsValidator(): ValidatorFn {\n return (control: AbstractControl<CaseCountsQueryItemForm[]>): ValidationErrors | null => {\n const queryItems = control.value;\n const validQueryItems = queryItems.filter(item => {\n const validLabel = !!item.label;\n const validConditions = item.queryConditions.filter(\n condition => !!condition.value && !!condition.key && !!condition.dropdown\n );\n\n return (\n validLabel &&\n validConditions.length > 0 &&\n item.queryConditions.length === validConditions.length\n );\n });\n\n return validQueryItems.length > 1 && validQueryItems.length === queryItems.length\n ? null\n : {\n invalidQueryItems: 'invalid',\n };\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form\n class=\"case-counts-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\n queryItemsValue: queryItemsValue$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n } as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"documentDefinition\"\n [helperText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"documentDefinition.dirty && documentDefinition.invalid\"\n [label]=\"'documentDefinition' | widgetTranslate: dataSourceKey | async\"\n (selected)=\"documentDefinitionSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs?.documentItems || []\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <cds-label class=\"conditions__label\">{{\n 'counts' | widgetTranslate: dataSourceKey | async\n }}</cds-label>\n\n <p class=\"conditions__helper-text cds--form__helper-text\">\n {{ 'countsHelperText' | widgetTranslate: dataSourceKey | async }}\n </p>\n\n @for (_ of queryItemsList$ | async; track $index; let i = $index) {\n <cds-tile class=\"count-tile\" [cdsLayer]=\"1\">\n <div class=\"count-tile__input\" [cdsLayer]=\"0\">\n <v-input\n [title]=\"'countTitle' | widgetTranslate: dataSourceKey | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.queryItemsValue[i]?.label\"\n [disabled]=\"formDisabled\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n (valueChange)=\"labelValueChange(i, $event)\"\n >\n </v-input>\n\n <valtimo-carbon-multi-input\n type=\"valuePathSelectorDropdownValue\"\n [disabled]=\"formDisabled\"\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"obs.queryItemsValue[i]?.queryConditions\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"1\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"1\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n valuePathSelectorNotation=\"dots\"\n [valuePathSelectorPrefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [valuePathSelectorShowCaseDefinitionSelector]=\"false\"\n [valuePathSelectorCaseDefinitionKey]=\"obs.selectedDocumentDefinition\"\n [keyColumnFlex]=\"2\"\n [dropdownColumnFlex]=\"1\"\n [valueColumnFlex]=\"1\"\n (valueChange)=\"conditionsValueChange(i, $event)\"\n ></valtimo-carbon-multi-input>\n </div>\n\n <div class=\"count-tile__delete-button\">\n <cds-icon-button\n [disabled]=\"formDisabled || i < 2\"\n (click)=\"deleteCount(i)\"\n kind=\"danger\"\n size=\"sm\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-tile>\n }\n\n <button\n class=\"add-count-button\"\n cdsButton=\"primary\"\n [disabled]=\"formDisabled\"\n (click)=\"addQueryItem()\"\n >\n {{ 'Aantal toevoegen' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './case-counts-configuration.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './case-counts-configuration';\n","/*\n * Copyright 2015-2025 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 {QueryCondition} from '../../../models';\nimport {MultiInputValues} from '@valtimo/components';\n\ninterface CaseCountsQueryItem {\n label: string;\n queryConditions: QueryCondition[];\n}\n\ninterface CaseCountsConfiguration {\n documentDefinition: string;\n queryItems: CaseCountsQueryItem[];\n}\n\ninterface CaseCountsQueryItemForm {\n label: string;\n queryConditions: MultiInputValues;\n}\n\nexport {CaseCountsConfiguration, CaseCountsQueryItemForm, CaseCountsQueryItem};\n","/*\n * Copyright 2015-2025 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\nexport * from './case-counts.model';\n","/*\n * Copyright 2015-2025 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 {DataSourceSpecification} from '../../models';\nimport {CaseCountsConfigurationComponent} from './components';\nimport {CONDITIONS_HELPER_TEXTS} from '../shared';\n\nexport const caseCountsDataSourceSpecification: DataSourceSpecification = {\n dataSourceKey: 'case-counts',\n configurationComponent: CaseCountsConfigurationComponent,\n translations: {\n de: {\n title: 'Mehrere Fallanzahllen',\n documentDefinition: 'Falltyp (erforderlich)',\n documentDefinitionHelperText: 'Der Falltyp, für den die Anzahllen abgeruft wirden',\n path: 'Pfad',\n operator: 'Operator',\n value: 'Wert',\n counts: 'Anzahllen',\n countsHelperText: `Geben Sie eine oder mehrere Bedingungen für jede anzuzeigende Zählung an. Konfigurieren Sie mindestens zwei Zählungen und mindestens eine Bedingung pro Zählung. ${CONDITIONS_HELPER_TEXTS.DE()}`,\n addCondition: 'Bedingung hinzufügen',\n countTitle: 'Anzahltitel',\n },\n en: {\n title: 'Multiple case counts',\n documentDefinition: 'Case type (required)',\n documentDefinitionHelperText: 'The case type for which the counts are retrieved',\n path: 'Path (required)',\n operator: 'Operator',\n value: 'Value',\n counts: 'Counts',\n countsHelperText: `Specify one or more conditions for each count that should be displayed. Configure at least two counts and at least one condition per count. ${CONDITIONS_HELPER_TEXTS.EN()}`,\n addCondition: 'Add condition',\n countTitle: 'Count title',\n },\n nl: {\n title: 'Meerdere dossieraantallen',\n documentDefinition: 'Dossiertype (vereist)',\n documentDefinitionHelperText: 'Het dossiertype waarvoor de aantallen worden opgehaald',\n path: 'Pad',\n operator: 'Operator',\n value: 'Waarde',\n counts: 'Aantallen',\n countsHelperText: `Geef een of meer condities op voor elk aantal dat moet worden weergegeven. Configureer minimaal twee aantallen en minimaal één conditie per aantal. ${CONDITIONS_HELPER_TEXTS.NL()}`,\n addCondition: 'Conditie toevoegen',\n countTitle: 'Aantaltitel',\n },\n },\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DATA_SOURCE_TOKEN} from '../../constants';\nimport {CaseCountsConfigurationComponent} from './components';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n LayerModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {CarbonMultiInputModule, InputModule} from '@valtimo/components';\nimport {caseCountsDataSourceSpecification} from './case-counts.specification';\n\n@NgModule({\n declarations: [CaseCountsConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n DropdownModule,\n CarbonMultiInputModule,\n InputModule,\n ButtonModule,\n TilesModule,\n LayerModule,\n IconModule,\n ],\n exports: [CaseCountsConfigurationComponent],\n providers: [\n {provide: DATA_SOURCE_TOKEN, useValue: caseCountsDataSourceSpecification, multi: true},\n ],\n})\nexport class CaseCountsDataSourceModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './components';\nexport * from './models';\nexport * from './case-counts.module';\nexport * from './case-counts.specification';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n ConfigurationOutput,\n DataSourceConfigurationComponent,\n QueryCondition,\n} from '../../../../models';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, Subscription} from 'rxjs';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {\n CaseGroupByConfiguration,\n CaseGroupByConfigurationFormValue,\n CaseGroupByEnum,\n} from '../../models';\nimport {DocumentService} from '@valtimo/document';\nimport {ListItem} from 'carbon-components-angular';\nimport {ListItemWithId, MultiInputValues, ValuePathSelectorPrefix} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {isEqual} from 'lodash';\nimport {Operator} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './case-group-by-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./case-group-by-configuration.component.scss'],\n})\nexport class CaseGroupByConfigurationComponent\n implements OnInit, OnDestroy, DataSourceConfigurationComponent\n{\n @Input() public dataSourceKey: string;\n\n public readonly form = this.fb.group({\n documentDefinition: this.fb.control(null, [Validators.required]),\n path: this.fb.control(null, [Validators.required]),\n queryConditions: this.fb.control([], [this.queryConditionsValidator()]),\n enum: this.fb.control([], [this.enumValidator()]),\n });\n\n public get documentDefinition(): AbstractControl<string> {\n return this.form.get('documentDefinition');\n }\n\n public get path(): AbstractControl<string> {\n return this.form.get('path');\n }\n\n public get queryConditions(): AbstractControl<MultiInputValues> {\n return this.form.get('queryConditions');\n }\n\n public get enum(): AbstractControl<MultiInputValues> {\n return this.form.get('enum');\n }\n\n public get formDisabled(): boolean {\n return this.form.disabled;\n }\n\n public get formValue$(): Observable<Partial<CaseGroupByConfigurationFormValue>> {\n return this.form.valueChanges.pipe(startWith(this.form.value));\n }\n\n @Input() public set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public readonly selectedDocumentDefinition$ = new BehaviorSubject<string>('');\n\n public readonly documentItems$: Observable<Array<ListItem>> = combineLatest([\n this.documentService.getAllDefinitions(),\n this.selectedDocumentDefinition$,\n ]).pipe(\n map(([documentDefinitions, selectedDocumentDefintion]) =>\n documentDefinitions.content.map(definition => ({\n content: definition.id.name,\n selected: definition.id.name === selectedDocumentDefintion,\n }))\n )\n );\n\n private readonly _OPERATORS: Array<Operator> = [\n Operator.NOT_EQUAL_TO,\n Operator.EQUAL_TO,\n Operator.GREATER_THAN,\n Operator.GREATER_THAN_OR_EQUAL_TO,\n Operator.LESS_THAN,\n Operator.LESS_THAN_OR_EQUAL_TO,\n ];\n\n public readonly operatorItems$: Observable<Array<ListItemWithId>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this._OPERATORS.map(operator => ({\n id: operator,\n content: this.translateService.instant('condition.operator.' + operator),\n selected: false,\n }))\n )\n );\n\n @Input() set prefillConfiguration(configurationValue: CaseGroupByConfiguration) {\n if (!configurationValue) return;\n\n this.documentDefinitionSelected({\n item: {\n content: configurationValue.documentDefinition,\n },\n } as any);\n\n this.queryConditions.patchValue(\n this.queryConditionsToMultiInputValues(configurationValue.queryConditions)\n );\n this.enum.patchValue(this.enumToMultiInputValues(configurationValue.enum));\n this.path.patchValue(configurationValue.path);\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<CaseGroupByConfiguration>\n >();\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public documentDefinitionSelected(documentDefinitionItem: ListItem): void {\n const documentDefinitionName = documentDefinitionItem?.item?.content;\n\n if (!documentDefinitionName) {\n return;\n }\n\n this.selectedDocumentDefinition$.next(documentDefinitionName);\n this.documentDefinition.setValue(documentDefinitionName);\n }\n\n public conditionsValueChange(values: MultiInputValues): void {\n if (!values) return;\n\n const currentValue = this.queryConditions.value;\n\n if (isEqual(values, currentValue)) return;\n\n this.queryConditions.patchValue(values);\n }\n\n public enumValueChange(values: MultiInputValues): void {\n if (!values) return;\n\n const currentValue = this.enum.value;\n\n if (isEqual(values, currentValue)) return;\n\n this.enum.patchValue(values);\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: {\n ...formValue,\n queryConditions: this.multiInputValuesToQueryConditions(formValue.queryConditions),\n enum: this.multiInputValuesToEnum(formValue.enum),\n } as CaseGroupByConfiguration,\n });\n })\n );\n }\n\n private queryConditionsValidator(): ValidatorFn {\n return (control: AbstractControl<MultiInputValues>): ValidationErrors | null => {\n const queryConditions = control.value;\n const validConditions = queryConditions.filter(\n condition => !!condition.value && !!condition.key && !!condition.dropdown\n );\n\n return validConditions.length === queryConditions.length\n ? null\n : {\n invalidQueryItems: 'invalid',\n };\n };\n }\n\n private enumValidator(): ValidatorFn {\n return (control: AbstractControl<MultiInputValues>): ValidationErrors | null => {\n const enumeration = control.value || [];\n const enumLength = enumeration.length;\n const validEnumKeysLength = enumeration.filter(entry => !!entry.key).length;\n const validEnumValuesLength = enumeration.filter(entry => !!entry.value).length;\n\n return enumLength === validEnumKeysLength && enumLength === validEnumValuesLength\n ? null\n : {\n invalidEnum: 'invalid',\n };\n };\n }\n\n private enumToMultiInputValues(enumeration?: CaseGroupByEnum): MultiInputValues {\n return Object.keys(enumeration || {}).reduce(\n (acc, key) => [...acc, {key, value: enumeration[key]}],\n []\n );\n }\n\n private multiInputValuesToEnum(values?: MultiInputValues): CaseGroupByEnum {\n return (values || []).reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {});\n }\n\n private queryConditionsToMultiInputValues(queryConditions?: QueryCondition[]): MultiInputValues {\n return (queryConditions || []).map(condition => ({\n key: condition.queryPath,\n dropdown: condition.queryOperator,\n value: condition.queryValue,\n }));\n }\n\n private multiInputValuesToQueryConditions(values?: MultiInputValues): QueryCondition[] {\n return (values || []).map(condition => ({\n queryPath: condition.key,\n queryOperator: condition.dropdown,\n queryValue: condition.value,\n }));\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form\n class=\"case-count-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n formValue: formValue$ | async,\n } as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"documentDefinition\"\n [helperText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"documentDefinition.dirty && documentDefinition.invalid\"\n [label]=\"'documentDefinition' | widgetTranslate: dataSourceKey | async\"\n (selected)=\"documentDefinitionSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs?.documentItems || []\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'pathHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'pathHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"full-width\"\n >\n {{ 'path' | widgetTranslate: dataSourceKey | async }}\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"obs.selectedDocumentDefinition\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n ></valtimo-value-path-selector>\n </cds-label>\n </div>\n\n <div class=\"form__element conditions-multi-input\">\n <cds-label\n [helperText]=\"'conditionsHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"conditions-label\"\n >{{ 'conditions' | widgetTranslate: dataSourceKey | async }}</cds-label\n >\n <valtimo-carbon-multi-input\n type=\"valuePathSelectorDropdownValue\"\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"obs.formValue?.queryConditions\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"0\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"0\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n valuePathSelectorNotation=\"dots\"\n [valuePathSelectorPrefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [valuePathSelectorShowCaseDefinitionSelector]=\"false\"\n [valuePathSelectorCaseDefinitionKey]=\"obs.selectedDocumentDefinition\"\n [keyColumnFlex]=\"2\"\n [dropdownColumnFlex]=\"1\"\n [valueColumnFlex]=\"1\"\n (valueChange)=\"conditionsValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </div>\n\n <div class=\"form__element conditions-multi-input\">\n <cds-label\n [helperText]=\"'enumHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"conditions-label\"\n >{{ 'enum' | widgetTranslate: dataSourceKey | async }}</cds-label\n >\n <valtimo-carbon-multi-input\n [addRowText]=\"'addDisplay' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"obs.formValue?.enum\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"0\"\n [keyColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"0\"\n [valueColumnTitle]=\"'displayValue' | widgetTranslate: dataSourceKey | async\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './case-group-by-configuration.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './case-group-by-configuration';\n","/*\n * Copyright 2015-2025 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 {QueryCondition} from '../../../models';\nimport {MultiInputValues} from '@valtimo/components';\n\ntype CaseGroupByEnum = {[key: string]: string};\n\ninterface CaseGroupByConfiguration {\n documentDefinition: string;\n path: string;\n queryConditions?: QueryCondition[];\n enum?: CaseGroupByEnum;\n}\n\ninterface CaseGroupByConfigurationFormValue {\n documentDefinition: string;\n path: string;\n queryConditions?: MultiInputValues;\n enum?: MultiInputValues;\n}\n\nexport {CaseGroupByConfiguration, CaseGroupByEnum, CaseGroupByConfigurationFormValue};\n","/*\n * Copyright 2015-2025 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\nexport * from './case-group-by.model';\n","/*\n * Copyright 2015-2025 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 {DataSourceSpecification} from '../../models';\nimport {CaseGroupByConfigurationComponent} from './components';\nimport {CONDITIONS_HELPER_TEXTS} from '../shared';\n\nexport const caseGroupByDataSourceSpecification: DataSourceSpecification = {\n dataSourceKey: 'case-group-by',\n configurationComponent: CaseGroupByConfigurationComponent,\n translations: {\n de: {\n title: 'Gruppe',\n documentDefinition: 'Falltyp (erforderlich)',\n documentDefinitionHelperText: 'Der Falltyp, für den die Anzahl abgerufen wird',\n path: 'Pfad',\n pathHelperText: 'Der Pfad innerhalb der Fall, deren Werte gruppiert werden sollen',\n operator: 'Operator',\n value: 'Wert',\n conditions: 'Bedingungen',\n conditionsHelperText: `Geben Sie optionale Bedingungen an, um die Gruppierung für den ausgewählten Falltyp abzurufen. ${CONDITIONS_HELPER_TEXTS.DE()}`,\n addCondition: 'Bedingung hinzufügen',\n enum: 'Anzeige der Werte',\n enumHelperText:\n \"Einige Werte aus der Datenbank sind für den Endbenutzer nicht lesbar. Geben Sie hier an, wie die Werte angezeigt werden sollen. Beispiel: Wert: 'anfrage-gesendet', Anzeige: 'Anfrage gesendet'.\",\n displayValue: 'Anzeige',\n addDisplay: 'Ansicht hinzufügen',\n },\n en: {\n title: 'Group by',\n documentDefinition: 'Case type (required)',\n documentDefinitionHelperText: 'The case type for which the count is retrieved',\n path: 'Path (required)',\n pathHelperText: 'The path within the case of which the values should be grouped',\n operator: 'Operator',\n value: 'Value',\n conditions: 'Conditions',\n conditionsHelperText: `Specify optional conditions for retrieving the grouping for the selected case type. ${CONDITIONS_HELPER_TEXTS.EN()}`,\n addCondition: 'Add condition',\n enum: 'Display of values',\n enumHelperText:\n \"Some values from the database will not be readable by the end user. Specify here how the values should be displayed. For example: Value: 'request-sent', Display: 'Request sent'.\",\n displayValue: 'Display',\n addDisplay: 'Add display',\n },\n nl: {\n title: 'Groepering',\n documentDefinition: 'Dossiertype (vereist)',\n documentDefinitionHelperText: 'Het dossiertype waarvoor de telling wordt opgehaald',\n path: 'Pad',\n pathHelperText: 'Het pad binnen het dossier waarvan de waardes gegroepeerd moeten worden',\n operator: 'Operator',\n value: 'Waarde',\n conditions: 'Condities',\n conditionsHelperText: `Geef optionele condities op voor het ophalen van de groepering voor het geselecteerde dossiertype. ${CONDITIONS_HELPER_TEXTS.NL()}`,\n addCondition: 'Conditie toevoegen',\n enum: 'Weergave van waardes',\n enumHelperText:\n \"Sommige waardes uit de database zullen niet leesbaar zijn voor de eindgebruiker. Geef hier op hoe de waardes weergegeven moeten worden. Bijvoorbeeld: Waarde: 'aanvraag-verzonden', Weergave: 'Aanvraag verzonden'.\",\n displayValue: 'Weergave',\n addDisplay: 'Weergave toevoegen',\n },\n },\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DATA_SOURCE_TOKEN} from '../../constants';\nimport {caseGroupByDataSourceSpecification} from './case-group-by.specification';\nimport {CaseGroupByConfigurationComponent} from './components';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {DropdownModule, InputModule} from 'carbon-components-angular';\nimport {CarbonMultiInputModule, ValuePathSelectorComponent} from '@valtimo/components';\n\n@NgModule({\n declarations: [CaseGroupByConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n DropdownModule,\n CarbonMultiInputModule,\n ValuePathSelectorComponent,\n ],\n exports: [CaseGroupByConfigurationComponent],\n providers: [\n {provide: DATA_SOURCE_TOKEN, useValue: caseGroupByDataSourceSpecification, multi: true},\n ],\n})\nexport class CaseGroupByDataSourceModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './components';\nexport * from './models';\nexport * from './case-group-by.module';\nexport * from './case-group-by.specification';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n ConfigurationOutput,\n DataSourceConfigurationComponent,\n QueryCondition,\n} from '../../../../models';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder} from '@angular/forms';\nimport {TaskCountConfiguration} from '../../models';\nimport {ListItemWithId, MultiInputKeyValue, MultiInputValues} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Operator} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './task-count-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./task-count-configuration.component.scss'],\n})\nexport class TaskCountConfigurationComponent\n implements OnInit, OnDestroy, DataSourceConfigurationComponent\n{\n @Input() public dataSourceKey: string;\n\n public readonly form = this.fb.group({\n queryConditions: this.fb.control(null),\n });\n\n @Input() public set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n private readonly _OPERATORS: Array<Operator> = [\n Operator.NOT_EQUAL_TO,\n Operator.EQUAL_TO,\n Operator.GREATER_THAN,\n Operator.GREATER_THAN_OR_EQUAL_TO,\n Operator.LESS_THAN,\n Operator.LESS_THAN_OR_EQUAL_TO,\n ];\n\n public readonly operatorItems$: Observable<Array<ListItemWithId>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this._OPERATORS.map(operator => ({\n id: operator,\n content: this.translateService.instant('condition.operator.' + operator),\n selected: false,\n }))\n )\n );\n\n public readonly defaultConditionValues$ = new BehaviorSubject<MultiInputValues | null>(null);\n public readonly allConditionsValid$ = new BehaviorSubject<boolean>(true);\n\n public get queryConditions(): AbstractControl<QueryCondition[]> {\n return this.form.get('queryConditions');\n }\n\n @Input() set prefillConfiguration(configurationValue: TaskCountConfiguration) {\n if (configurationValue) {\n this.defaultConditionValues$.next(\n configurationValue.queryConditions.map(condition => ({\n key: condition.queryPath,\n dropdown: condition.queryOperator,\n value: condition.queryValue,\n }))\n );\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<TaskCountConfiguration>\n >();\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public conditionsValueChange(values: Array<MultiInputKeyValue>): void {\n if (values.length === 0) {\n this.queryConditions.setValue(null);\n } else {\n this.queryConditions.setValue(\n values.map(value => ({\n queryPath: value.key,\n queryOperator: value.dropdown,\n queryValue: value.value,\n }))\n );\n }\n }\n\n public onAllConditionsValid(allConditionsValid: boolean): void {\n this.allConditionsValid$.next(allConditionsValid);\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.form.valueChanges.pipe(startWith(this.form.value)),\n this.allConditionsValid$,\n ]).subscribe(([formValue, allConditionsValid]) => {\n this.configurationEvent.emit({\n valid: this.form.valid && allConditionsValid,\n data: formValue as TaskCountConfiguration,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form\n class=\"task-count-configuration-form\"\n *ngIf=\"{operatorItems: operatorItems$} as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element conditions-multi-input\">\n <cds-label\n [helperText]=\"'conditionsHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"conditions-label\"\n >{{ 'conditions' | widgetTranslate: dataSourceKey | async }}</cds-label\n >\n <valtimo-carbon-multi-input\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"defaultConditionValues$ | async\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"0\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"0\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n type=\"keyDropdownValue\"\n (allValuesValidEvent)=\"onAllConditionsValid($event)\"\n (valueChange)=\"conditionsValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './task-count-configuration.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './task-count-configuration';\n","/*\n * Copyright 2015-2025 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 {QueryCondition} from '../../../models';\n\ninterface TaskCountConfiguration {\n queryConditions: QueryCondition[];\n}\n\nexport {TaskCountConfiguration};\n","/*\n * Copyright 2015-2025 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\nexport * from './task-count.model';\n","/*\n * Copyright 2015-2025 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 {DataSourceSpecification} from '../../models';\nimport {CONDITIONS_HELPER_TEXTS} from '../shared';\nimport {TaskCountConfigurationComponent} from './components';\n\nexport const taskCountSpecification: DataSourceSpecification = {\n dataSourceKey: 'task-count',\n configurationComponent: TaskCountConfigurationComponent,\n translations: {\n de: {\n title: 'Aufgabenanzahl',\n path: 'Pfad',\n operator: 'Operator',\n value: 'Wert',\n conditions: 'Bedingungen',\n conditionsHelperText: `Geben Sie optionale Bedingungen zum Abrufen der Anzahl der Aufgaben. ${CONDITIONS_HELPER_TEXTS.DE('task:assignee')}`,\n addCondition: 'Bedingung hinzufügen',\n },\n en: {\n title: 'Task count',\n path: 'Path (required)',\n operator: 'Operator',\n value: 'Value',\n conditions: 'Conditions',\n conditionsHelperText: `Specify optional conditions for retrieving the number of tasks. ${CONDITIONS_HELPER_TEXTS.EN('task:assignee')}`,\n addCondition: 'Add condition',\n },\n nl: {\n title: 'Aantal taken',\n path: 'Pad',\n operator: 'Operator',\n value: 'Waarde',\n conditions: 'Condities',\n conditionsHelperText: `Geef optionele condities op voor het ophalen van het aantal taken. ${CONDITIONS_HELPER_TEXTS.NL('task:assignee')}}`,\n addCondition: 'Conditie toevoegen',\n },\n },\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DATA_SOURCE_TOKEN} from '../../constants';\nimport {taskCountSpecification} from './task-count.specification';\nimport {TaskCountConfigurationComponent} from './components';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {DropdownModule, InputModule} from 'carbon-components-angular';\nimport {CarbonMultiInputModule} from '@valtimo/components';\n\n@NgModule({\n declarations: [TaskCountConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n DropdownModule,\n CarbonMultiInputModule,\n ],\n exports: [TaskCountConfigurationComponent],\n providers: [{provide: DATA_SOURCE_TOKEN, useValue: taskCountSpecification, multi: true}],\n})\nexport class TaskCountDataSourceModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './components';\nexport * from './models';\nexport * from './task-count.module';\nexport * from './task-count.specification';\n","/*\n * Copyright 2015-2025 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 {CaseCountDataSourceModule} from './case-count';\nimport {CaseCountsDataSourceModule} from './case-counts';\nimport {CaseGroupByDataSourceModule} from './case-group-by';\nimport {TaskCountDataSourceModule} from './task-count';\n\n@NgModule({\n imports: [\n CaseCountDataSourceModule,\n CaseCountsDataSourceModule,\n CaseGroupByDataSourceModule,\n TaskCountDataSourceModule,\n ],\n})\nexport class DataSourcesModule {}\n","/*\n * Copyright 2015-2025 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 {RouterModule, Routes} from '@angular/router';\nimport {ROLE_USER} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {WidgetDashboardComponent} from './components/widget-dashboard/widget-dashboard.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: WidgetDashboardComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dashboard', roles: [ROLE_USER], hidePageTitle: true},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class DashboardRoutingModule {}\n","/*\n * Copyright 2015-2025 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 {HttpClient} from '@angular/common/http';\nimport {NgModule} from '@angular/core';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {TranslateHttpLoader} from '@ngx-translate/http-loader';\nimport {\n AlertModule,\n BpmnJsDiagramModule,\n CarbonListModule,\n SpinnerModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {TaskModule} from '@valtimo/task';\nimport {LoadingModule, TabsModule, ThemeModule} from 'carbon-components-angular';\nimport {DashboardComponent} from './components/dashboard/dashboard.component';\nimport {WidgetDashboardContentComponent} from './components/widget-dashboard-content/widget-dashboard-content.component';\nimport {WidgetDashboardComponent} from './components/widget-dashboard/widget-dashboard.component';\nimport {DATA_SOURCE_TOKEN, DISPLAY_TYPE_TOKEN} from './constants';\nimport {DashboardRoutingModule} from './dashboard-routing.module';\nimport {WidgetTranslatePipeModule} from './pipes';\nimport {DisplayWidgetTypesModule} from './display-types/display-widget-types.module';\nimport {DataSourcesModule} from './data-sources/data-sources.module';\n\n// AoT requires an exported function for factories\nexport function HttpLoaderFactory(httpClient: HttpClient) {\n return new TranslateHttpLoader(httpClient);\n}\n\n@NgModule({\n declarations: [DashboardComponent, WidgetDashboardComponent, WidgetDashboardContentComponent],\n imports: [\n CommonModule,\n DashboardRoutingModule,\n WidgetModule,\n BpmnJsDiagramModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n AlertModule,\n TaskModule,\n SpinnerModule,\n TabsModule,\n ThemeModule,\n WidgetTranslatePipeModule,\n LoadingModule,\n CarbonListModule,\n DisplayWidgetTypesModule,\n DataSourcesModule,\n ],\n exports: [DashboardComponent, WidgetDashboardComponent],\n providers: [\n {provide: DISPLAY_TYPE_TOKEN, useValue: null, multi: true},\n {provide: DATA_SOURCE_TOKEN, useValue: null, multi: true},\n ],\n})\nexport class DashboardModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './case-count';\nexport * from './case-counts';\nexport * from './case-group-by';\nexport * from './task-count';\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number';\nexport * from './donut';\nexport * from './gauge';\nexport * from './meter';\n","/*\n * Copyright 2015-2025 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\n */\n\nexport * from './lib/components/dashboard/dashboard.component';\nexport * from './lib/components/widget-dashboard-content/widget-dashboard-content.component';\nexport * from './lib/components/widget-dashboard/widget-dashboard.component';\nexport * from './lib/display-types/display-widget-types.module';\nexport * from './lib/data-sources/data-sources.module';\nexport * from './lib/constants';\nexport * from './lib/dashboard.module';\nexport * from './lib/data-sources';\nexport * from './lib/display-types';\nexport * from './lib/models';\nexport * from './lib/pipes';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i4","i5","i1","i2","map","i2.WidgetService","i1.WidgetLayoutService","i3","i6","i7","i1.DashboardService","i2.WidgetApiService","i6.WidgetDashboardContentComponent","i1.WidgetTranslationService","i4.WidgetTranslatePipe","i7.WidgetTranslatePipe","InputModule","i6.WidgetTranslatePipe"],"mappings":"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"}
1
+ {"version":3,"file":"valtimo-dashboard.mjs","sources":["../../../../projects/valtimo/dashboard/src/lib/components/dashboard/dashboard.component.ts","../../../../projects/valtimo/dashboard/src/lib/components/dashboard/dashboard.component.html","../../../../projects/valtimo/dashboard/src/lib/constants/data-features.constants.ts","../../../../projects/valtimo/dashboard/src/lib/constants/injection-tokens.ts","../../../../projects/valtimo/dashboard/src/lib/constants/layout.constants.ts","../../../../projects/valtimo/dashboard/src/lib/constants/index.ts","../../../../projects/valtimo/dashboard/src/lib/services/widget-layout.service.ts","../../../../projects/valtimo/dashboard/src/lib/services/dashboard.service.ts","../../../../projects/valtimo/dashboard/src/lib/services/widget.service.ts","../../../../projects/valtimo/dashboard/src/lib/services/widget-translation.service.ts","../../../../projects/valtimo/dashboard/src/lib/services/index.ts","../../../../projects/valtimo/dashboard/src/lib/components/widget-dashboard-content/widget-dashboard-content.component.ts","../../../../projects/valtimo/dashboard/src/lib/components/widget-dashboard-content/widget-dashboard-content.component.html","../../../../projects/valtimo/dashboard/src/lib/services/widget-api.service.ts","../../../../projects/valtimo/dashboard/src/lib/components/widget-dashboard/widget-dashboard.component.ts","../../../../projects/valtimo/dashboard/src/lib/components/widget-dashboard/widget-dashboard.component.html","../../../../projects/valtimo/dashboard/src/lib/pipes/widget-translate/widget-translate.pipe.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-configuration/bar-chart-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-configuration/bar-chart-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-display/bar-chart-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-display/bar-chart-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/bar-chart-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/bar-chart.specification.ts","../../../../projects/valtimo/dashboard/src/lib/pipes/widget-translate/widget-translate-pipe.module.ts","../../../../projects/valtimo/dashboard/src/lib/pipes/widget-translate/index.ts","../../../../projects/valtimo/dashboard/src/lib/pipes/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/bar-chart.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/models/bar-chart.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/bar-chart/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-configuration/big-number-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-configuration/big-number-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/models/configuration.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/dashboard.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/data-source.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/display-type.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/layout.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/widget-data.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/widget-display.model.ts","../../../../projects/valtimo/dashboard/src/lib/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-display/big-number-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-display/big-number-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/big-number-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/big-number.specification.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/big-number.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/models/big-number.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/big-number/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-configuration/donut-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-configuration/donut-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-display/donut-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-display/donut-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/donut-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/donut.specification.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/donut.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/models/donut.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/donut/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-configuration/gauge-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-configuration/gauge-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-display/gauge-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-display/gauge-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/gauge-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/gauge.specification.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/gauge.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/models/gauge.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/gauge/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-configuration/meter-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-configuration/meter-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-display/meter-display.component.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-display/meter-display.component.html","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/meter-display/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/meter.specification.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/meter.module.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/models/meter.model.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/meter/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/display-widget-types.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/components/case-count-configuration/case-count-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/components/case-count-configuration/case-count-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/components/case-count-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/models/case-count.model.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/shared/conditions.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/shared/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/case-count.specification.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/case-count.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-count/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/components/case-counts-configuration/case-counts-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/components/case-counts-configuration/case-counts-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/components/case-counts-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/models/case-counts.model.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/case-counts.specification.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/case-counts.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-counts/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/components/case-group-by-configuration/case-group-by-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/components/case-group-by-configuration/case-group-by-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/components/case-group-by-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/models/case-group-by.model.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/case-group-by.specification.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/case-group-by.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/case-group-by/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/task-count-configuration/task-count-configuration.component.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/task-count-configuration/task-count-configuration.component.html","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/task-count-configuration/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/models/task-count.model.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/models/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/task-count.specification.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/task-count.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/data-sources.module.ts","../../../../projects/valtimo/dashboard/src/lib/dashboard-routing.module.ts","../../../../projects/valtimo/dashboard/src/lib/dashboard.module.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/index.ts","../../../../projects/valtimo/dashboard/src/lib/display-types/index.ts","../../../../projects/valtimo/dashboard/src/public_api.ts","../../../../projects/valtimo/dashboard/src/valtimo-dashboard.ts"],"sourcesContent":["/*\n * Copyright 2015-2025 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 {Component, OnInit, ViewChild} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Task, TaskDetailModalComponent, TaskService} from '@valtimo/task';\nimport moment from 'moment';\nimport {BehaviorSubject} from 'rxjs';\nimport {take} from 'rxjs/operators';\n\nmoment.locale(localStorage.getItem('langKey') || '');\nmoment.defaultFormat = 'DD MMM YYYY HH:mm';\n\n@Component({\n standalone: false,\n selector: 'valtimo-dashboard',\n templateUrl: './dashboard.component.html',\n styleUrls: ['./dashboard.component.css'],\n})\nexport class DashboardComponent implements OnInit {\n public processDefinitions: Array<any>;\n public openTasks: Array<any>;\n public openTaskFields = [\n {\n key: 'created',\n label: 'Created',\n },\n {\n key: 'name',\n label: 'Name',\n },\n {\n key: 'valtimoAssignee.fullName',\n label: 'Assignee',\n },\n ];\n @ViewChild('taskDetail') taskDetail: TaskDetailModalComponent;\n\n loading$ = new BehaviorSubject<boolean>(true);\n\n constructor(\n private readonly taskService: TaskService,\n private readonly route: ActivatedRoute\n ) {}\n\n ngOnInit() {\n this.getOpenTasks();\n }\n\n public getOpenTasks() {\n this.taskService.getTasks().subscribe(response => {\n this.openTasks = response;\n this.openTasks.map(task => {\n task.created = moment(task.created).format('DD MMM YYYY HH:mm');\n });\n this.checkRouteForTaskId(response);\n this.loading$.next(false);\n });\n }\n\n public rowOpenTaskClick(task) {\n if (!task.endTime) {\n this.taskDetail.openTaskDetails(task);\n }\n }\n\n private checkRouteForTaskId(tasks: Array<Task>): void {\n this.route.queryParams.pipe(take(1)).subscribe(params => {\n const taskId = params?.taskId;\n const findTaskFromId = tasks.find(task => task.id === taskId);\n\n if (findTaskFromId) {\n this.rowOpenTaskClick(findTaskFromId);\n }\n });\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div class=\"main-content container-fluid\" *ngIf=\"{loading: loading$ | async} as obs\">\n <h4 class=\"title\">\n {{ 'dashboard.openTasks.title' | translate }}\n <sup *ngIf=\"obs.loading === false\" class=\"ml-1 badge badge-pill badge-primary\">{{\n openTasks?.length\n }}</sup>\n </h4>\n <ng-container *ngIf=\"obs.loading === false; else loading\">\n <valtimo-widget>\n <valtimo-carbon-list\n [items]=\"openTasks\"\n [fields]=\"openTaskFields\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n ></valtimo-carbon-list>\n </valtimo-widget>\n </ng-container>\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"getOpenTasks()\"\n (assignmentOfTaskChanged)=\"getOpenTasks()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n","/*\n * Copyright 2015-2025 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\nconst DATA_FEATURES = {\n NUMBER: 'number',\n TOTAL: 'total',\n NUMBERS: 'numbers',\n};\n\nexport {DATA_FEATURES};\n","/*\n * Copyright 2015-2025 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 {InjectionToken} from '@angular/core';\nimport {DataSourceSpecification, DisplayTypeSpecification} from '../models';\n\nconst DISPLAY_TYPE_TOKEN = new InjectionToken<DisplayTypeSpecification | null>(\n 'Supported display types'\n);\n\nconst DATA_SOURCE_TOKEN = new InjectionToken<DataSourceSpecification | null>(\n 'Supported data sources'\n);\n\nexport {DISPLAY_TYPE_TOKEN, DATA_SOURCE_TOKEN};\n","/*\n * Copyright 2015-2025 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\nconst WIDGET_1X_HEIGHT = 220;\nconst WIDGET_1X_MIN_WIDTH = 275;\n\nexport {WIDGET_1X_HEIGHT, WIDGET_1X_MIN_WIDTH};\n","/*\n * Copyright 2015-2025 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\nexport * from './data-features.constants';\nexport * from './injection-tokens';\nexport * from './layout.constants';\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {\n BehaviorSubject,\n combineLatest,\n debounceTime,\n filter,\n map,\n Observable,\n Subject,\n Subscription,\n} from 'rxjs';\nimport {DashboardWidgetConfiguration} from '../models';\nimport {WIDGET_1X_MIN_WIDTH} from '../constants';\nimport Muuri from 'muuri';\n\n@Injectable()\nexport class WidgetLayoutService {\n private readonly _widgetContainerWidth$ = new BehaviorSubject<number | null>(null);\n private readonly _widgetConfigurations$ = new BehaviorSubject<\n Array<DashboardWidgetConfiguration>\n >([]);\n private readonly _muuriSubject$ = new BehaviorSubject<Muuri | null>(null);\n private readonly _triggerMuuriLayout$ = new Subject<null>();\n\n public get muuri$(): Observable<Muuri> {\n return this._muuriSubject$.pipe(filter(muuri => !!muuri));\n }\n\n public get muuriSubject$(): Observable<Muuri | null> {\n return this._muuriSubject$.asObservable();\n }\n\n private get widgetContainerWidth$(): Observable<number> {\n return this._widgetContainerWidth$.asObservable().pipe(filter(width => !!width));\n }\n\n public get amountOfColumns$(): Observable<number> {\n return this.widgetContainerWidth$.pipe(\n map(containerWidth => Math.floor(containerWidth / WIDGET_1X_MIN_WIDTH))\n );\n }\n\n private readonly _subscriptions = new Subscription();\n\n constructor() {\n this.openMuuriSubscription();\n }\n\n public setWidgetContainerWidth(width: number): void {\n this._widgetContainerWidth$.next(width);\n }\n\n public setWidgetConfigurations(configurations: Array<DashboardWidgetConfiguration>): void {\n this._widgetConfigurations$.next(configurations);\n }\n\n public setMuuri(muuri: Muuri): void {\n this._muuriSubject$.next(muuri);\n }\n\n public triggerMuuriLayout(): void {\n this._triggerMuuriLayout$.next(null);\n }\n\n private openMuuriSubscription(): void {\n this._subscriptions.add(\n combineLatest([this.muuri$, this._triggerMuuriLayout$])\n .pipe(debounceTime(150))\n .subscribe(([muuri]) => {\n muuri.refreshItems();\n muuri.layout();\n })\n );\n }\n}\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {Dashboard} from '../models';\nimport {HttpClient} from '@angular/common/http';\nimport {ConfigService} from '@valtimo/shared';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class DashboardService {\n private _endpointUri: string;\n\n constructor(\n private readonly http: HttpClient,\n private readonly configService: ConfigService\n ) {\n this._endpointUri = this.configService.config.valtimoApi.endpointUri;\n }\n\n public getDashboards(): Observable<Array<Dashboard>> {\n return this.http.get<Array<Dashboard>>(`${this._endpointUri}v1/dashboard`);\n }\n}\n","/*\n * Copyright 2015-2025 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 {Inject, Injectable} from '@angular/core';\nimport {DATA_SOURCE_TOKEN, DISPLAY_TYPE_TOKEN} from '../constants';\nimport {DataSourceSpecification, DisplayTypeSpecification} from '../models';\nimport {BehaviorSubject, filter, Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetService {\n private readonly _supportedDisplayTypes$ =\n new BehaviorSubject<Array<DisplayTypeSpecification> | null>(null);\n\n private readonly _supportedDataSources$ =\n new BehaviorSubject<Array<DataSourceSpecification> | null>(null);\n\n public get supportedDisplayTypes$(): Observable<Array<DisplayTypeSpecification>> {\n return this._supportedDisplayTypes$.pipe(filter(specifications => !!specifications));\n }\n\n public get supportedDataSources$(): Observable<Array<DataSourceSpecification>> {\n return this._supportedDataSources$.pipe(filter(specifications => !!specifications));\n }\n\n public get supportedDisplayTypes(): Array<DisplayTypeSpecification> {\n return this._supportedDisplayTypes$.getValue() || [];\n }\n\n public get supportedDataSources(): Array<DataSourceSpecification> {\n return this._supportedDataSources$.getValue() || [];\n }\n\n constructor(\n @Inject(DISPLAY_TYPE_TOKEN)\n private readonly supportedDisplayTypesFromToken: Array<DisplayTypeSpecification | null>,\n @Inject(DATA_SOURCE_TOKEN)\n private readonly supportedDataSourcesFromToken: Array<DataSourceSpecification | null>\n ) {\n this.setSupportedDisplayTypes(supportedDisplayTypesFromToken);\n this.setSupportedDataSources(supportedDataSourcesFromToken);\n }\n\n private setSupportedDisplayTypes(\n supportedDisplayTypes: Array<DisplayTypeSpecification | null>\n ): void {\n this._supportedDisplayTypes$.next(supportedDisplayTypes.filter(displayType => !!displayType));\n }\n\n private setSupportedDataSources(\n supportedDataSources: Array<DataSourceSpecification | null>\n ): void {\n this._supportedDataSources$.next(supportedDataSources.filter(dataSource => !!dataSource));\n }\n}\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport {DataSourceSpecification, DisplayTypeSpecification} from '../models';\nimport {combineLatest, Observable} from 'rxjs';\nimport {map} from 'rxjs/operators';\nimport {WidgetService} from './widget.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetTranslationService {\n constructor(\n private readonly translateService: TranslateService,\n private readonly widgetService: WidgetService\n ) {}\n\n translate(translateKey: string, key: string): Observable<string> {\n return combineLatest([\n this.widgetService.supportedDisplayTypes$,\n this.widgetService.supportedDataSources$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([supportedDisplayTypes, supportedDataSources]) =>\n this.getTranslation(supportedDisplayTypes, supportedDataSources, key, translateKey)\n )\n );\n }\n\n instant(translateKey: string, displayTypeKey: string): string {\n return this.getTranslation(\n this.widgetService.supportedDisplayTypes,\n this.widgetService.supportedDataSources,\n displayTypeKey,\n translateKey\n );\n }\n\n private getTranslation(\n supportedDisplayTypes: Array<DisplayTypeSpecification>,\n supportedDataSources: Array<DataSourceSpecification>,\n key: string,\n translateKey: string\n ): string {\n const currentLang = this.translateService.currentLang;\n const displayTypeSpecification = supportedDisplayTypes.find(\n displayType => displayType.displayTypeKey === key\n );\n const dataSourceSpecification = supportedDataSources.find(\n datasource => datasource.dataSourceKey === key\n );\n\n let translation = '';\n\n if (\n displayTypeSpecification &&\n displayTypeSpecification.translations.hasOwnProperty(currentLang)\n ) {\n translation = displayTypeSpecification.translations[currentLang][translateKey];\n } else if (\n dataSourceSpecification &&\n dataSourceSpecification.translations.hasOwnProperty(currentLang)\n ) {\n translation = dataSourceSpecification.translations[currentLang][translateKey];\n }\n\n return translation || `${key}.${translateKey}`;\n }\n}\n","/*\n * Copyright 2015-2025 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\nexport * from './dashboard.service';\nexport * from './widget-translation.service';\nexport * from './widget.service';\n","/*\n * Copyright 2015-2025 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 {\n AfterViewInit,\n Component,\n ComponentRef,\n ElementRef,\n Input,\n OnDestroy,\n QueryList,\n Renderer2,\n ViewChild,\n ViewChildren,\n ViewContainerRef,\n} from '@angular/core';\nimport {BehaviorSubject, combineLatest, Observable, Subscription} from 'rxjs';\nimport {delay, map, take} from 'rxjs/operators';\nimport {Dashboard, DashboardWidgetConfiguration, DisplayComponent, WidgetData} from '../../models';\nimport {WidgetService} from '../../services';\nimport {WidgetLayoutService} from '../../services/widget-layout.service';\nimport {WIDGET_1X_HEIGHT} from '../../constants';\nimport Muuri from 'muuri';\nimport {Router} from '@angular/router';\n\n@Component({\n standalone: false,\n selector: 'valtimo-widget-dashboard-content',\n templateUrl: './widget-dashboard-content.component.html',\n styleUrls: ['./widget-dashboard-content.component.scss'],\n providers: [WidgetLayoutService],\n})\nexport class WidgetDashboardContentComponent implements AfterViewInit, OnDestroy {\n @ViewChildren('widgetConfiguration') private _widgetConfigurationRefs: QueryList<\n ElementRef<HTMLDivElement>\n >;\n @ViewChildren('widgetConfigurationContent', {read: ViewContainerRef})\n private _widgetConfigurationContentVcRefs: QueryList<ViewContainerRef>;\n @ViewChild('widgetContainer') private _widgetContainerRef: ElementRef<HTMLDivElement>;\n\n private readonly _isLoading$ = new BehaviorSubject<boolean>(true);\n private _widgetData$ = new BehaviorSubject<WidgetData[]>([]);\n\n @Input() set widgetData(value: {data: WidgetData[]; loading: boolean}) {\n this._isLoading$.next(value.loading);\n this._widgetData$.next(value.data);\n }\n @Input() set dashboard(value: Dashboard) {\n this.setWidgetConfigurations(value);\n }\n\n public readonly widgetConfigurations$ =\n new BehaviorSubject<Array<DashboardWidgetConfiguration> | null>(null);\n\n private _observer!: ResizeObserver;\n private _subscriptions = new Subscription();\n\n private readonly _muuri$ = this.layoutService.muuriSubject$;\n\n private _creatingMuuri = false;\n\n private get _muuriInitialized$(): Observable<boolean> {\n return this._muuri$.pipe(map(muuri => !!muuri));\n }\n\n private readonly _noResults$ = new BehaviorSubject<boolean>(false);\n\n public readonly loaded$ = combineLatest([\n this._isLoading$,\n this._muuriInitialized$,\n this._noResults$,\n ]).pipe(\n map(\n ([isLoading, muuriInitialized, noResults]) => !isLoading && (muuriInitialized || noResults)\n ),\n delay(400)\n );\n\n constructor(\n private readonly layoutService: WidgetLayoutService,\n private readonly widgetService: WidgetService,\n private readonly renderer: Renderer2,\n private readonly router: Router\n ) {}\n\n public ngAfterViewInit(): void {\n this._observer = new ResizeObserver(event => {\n this.observerMutation(event);\n });\n this._observer.observe(this._widgetContainerRef.nativeElement);\n this.openWidgetSizeSubscription();\n this.renderWidgets();\n }\n\n public ngOnDestroy(): void {\n this._observer?.disconnect();\n this._subscriptions?.unsubscribe();\n }\n\n public navigateToRoute(\n widgetConfiguration: DashboardWidgetConfiguration,\n event: MouseEvent\n ): void {\n if (widgetConfiguration.url) {\n event.preventDefault();\n this.router.navigateByUrl(widgetConfiguration.url);\n }\n }\n\n private setWidgetConfigurations(dashboard: Dashboard): void {\n this.widgetService.supportedDisplayTypes$.pipe(take(1)).subscribe(supportedDisplayTypes => {\n const supportedWidgetConfigurations =\n dashboard.widgets?.filter(widgetConfiguration =>\n supportedDisplayTypes.find(\n type => type.displayTypeKey === widgetConfiguration.displayType\n )\n ) || [];\n this.layoutService.setWidgetConfigurations(supportedWidgetConfigurations);\n this.widgetConfigurations$.next(supportedWidgetConfigurations);\n });\n }\n\n private observerMutation(event: Array<ResizeObserverEntry>): void {\n const widgetContainerWidth = event[0]?.borderBoxSize[0]?.inlineSize;\n\n if (typeof widgetContainerWidth === 'number' && widgetContainerWidth !== 0) {\n this.layoutService.setWidgetContainerWidth(widgetContainerWidth);\n }\n }\n\n private openWidgetSizeSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.layoutService.amountOfColumns$,\n this.widgetConfigurations$,\n this.widgetService.supportedDisplayTypes$,\n this._muuri$,\n ]).subscribe(([amountOfColumns, widgetConfigurations, supportedDisplayTypes, muuri]) => {\n this._widgetConfigurationRefs.toArray().forEach(widgetConfigurationRef => {\n const nativeElement = widgetConfigurationRef.nativeElement;\n const widgetConfiguration = widgetConfigurations.find(\n config => config.key === nativeElement.id\n );\n const specification = supportedDisplayTypes.find(\n type => type.displayTypeKey === widgetConfiguration.displayType\n );\n const widthPercentage =\n specification.width > amountOfColumns\n ? 100\n : (specification.width / amountOfColumns) * 100;\n this.renderer.setStyle(\n nativeElement,\n 'height',\n `${WIDGET_1X_HEIGHT * specification.height}px`\n );\n this.renderer.setStyle(nativeElement, 'width', `${widthPercentage}%`);\n });\n\n if (widgetConfigurations.length > 0) {\n if (!muuri) {\n this.initMuuri();\n } else {\n this.layoutService.triggerMuuriLayout();\n }\n } else {\n this._noResults$.next(true);\n }\n })\n );\n }\n\n private renderWidgets(): void {\n this._subscriptions.add(\n combineLatest([\n this.widgetConfigurations$,\n this.widgetService.supportedDisplayTypes$,\n this._widgetData$,\n ]).subscribe(([configurations, displayTypes, data]) => {\n configurations?.forEach((configuration, index) => {\n const displayType = displayTypes.find(\n type => type.displayTypeKey === configuration.displayType\n );\n const vcRef = this._widgetConfigurationContentVcRefs.toArray()[index];\n\n if (displayType && data) {\n vcRef.clear();\n const componentInstance: ComponentRef<DisplayComponent> = vcRef.createComponent(\n displayType.displayComponent\n );\n componentInstance.setInput('displayTypeKey', configuration.displayType);\n componentInstance.setInput('displayTypeProperties', {\n ...configuration.displayTypeProperties,\n });\n\n componentInstance.setInput(\n 'data',\n data.find(dataItem => dataItem.key === configuration.key)?.data\n );\n }\n });\n })\n );\n }\n\n private initMuuri(): void {\n if (!this._widgetContainerRef || this._creatingMuuri) return;\n\n this._creatingMuuri = true;\n\n this.layoutService.setMuuri(\n new Muuri(this._widgetContainerRef.nativeElement, {\n layout: {\n fillGaps: true,\n },\n layoutOnResize: false,\n })\n );\n\n this._creatingMuuri = false;\n }\n}\n","<!--\n ~ Copyright 2015-2025 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=\"{loaded: loaded$ | async} as obs\">\n <div *ngIf=\"!obs.loaded\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-container>\n\n<div\n #widgetContainer\n class=\"widget-container\"\n [ngClass]=\"{'widget-container__visible': loaded$ | async}\"\n>\n <ng-container *ngIf=\"widgetConfigurations$ | async as widgetConfigurations\">\n <ng-container *ngFor=\"let config of widgetConfigurations\">\n <div #widgetConfiguration [id]=\"config.key\" class=\"widget-configuration\">\n <div\n (click)=\"navigateToRoute(config, $event)\"\n [ngClass]=\"{\n 'widget-configuration-content-clickable': config.url,\n }\"\n class=\"widget-configuration-content\"\n >\n <ng-container #widgetConfigurationContent></ng-container>\n </div>\n </div>\n </ng-container>\n\n <valtimo-no-results\n *ngIf=\"!widgetConfigurations.length\"\n [title]=\"'dashboard.noWidgets' | translate\"\n [description]=\"'dashboard.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n </ng-container>\n</div>\n","/*\n * Copyright 2015-2025 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 {Injectable} from '@angular/core';\nimport {ConfigService} from '@valtimo/shared';\nimport {HttpClient} from '@angular/common/http';\nimport {WidgetData} from '../models';\nimport {Observable} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class WidgetApiService {\n private _endpointUri: string;\n\n constructor(\n private readonly configService: ConfigService,\n private readonly http: HttpClient\n ) {\n this._endpointUri = `${this.configService.config.valtimoApi.endpointUri}v1/dashboard`;\n }\n\n public getWidgetData(dashboardKey: string): Observable<WidgetData[]> {\n return this.http.get<WidgetData[]>(`${this._endpointUri}/${dashboardKey}/data`);\n }\n}\n","/*\n * Copyright 2015-2025 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 {Component, ViewEncapsulation} from '@angular/core';\nimport {BehaviorSubject, Observable, tap} from 'rxjs';\nimport {Dashboard, WidgetData} from '../../models';\nimport {DashboardService} from '../../services';\nimport {WidgetApiService} from '../../services/widget-api.service';\n\n@Component({\n standalone: false,\n selector: 'valtimo-widget-dashboard',\n templateUrl: './widget-dashboard.component.html',\n styleUrls: ['./widget-dashboard.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class WidgetDashboardComponent {\n public dashboards$: Observable<Array<Dashboard>> = this.dashboardService.getDashboards().pipe(\n tap(dashboards => {\n if (dashboards.length === 1) {\n this.onTabSelected(dashboards[0].key);\n }\n })\n );\n public readonly activeWidgetData$ = new BehaviorSubject<{data: WidgetData[]; loading: boolean}>({\n data: [],\n loading: true,\n });\n\n public readonly selectedDashboardKey$ = new BehaviorSubject<string>('');\n\n constructor(\n private readonly dashboardService: DashboardService,\n private readonly widgetApiService: WidgetApiService\n ) {}\n\n public onTabSelected(dashboardKey: string): void {\n this.selectedDashboardKey$.next(dashboardKey);\n this.activeWidgetData$.next({data: [], loading: true});\n\n this.widgetApiService\n .getWidgetData(dashboardKey)\n .subscribe((data: WidgetData[]) => this.activeWidgetData$.next({data, loading: false}));\n }\n\n public trackByIndex(index: number): number {\n return index;\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<div *ngIf=\"dashboards$ | async as dashboards\" class=\"dashboards-container\">\n <valtimo-no-results\n *ngIf=\"!dashboards.length\"\n [title]=\"'dashboard.noDashboards' | translate\"\n [description]=\"'dashboard.noDashboardsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-dashboards.svg\"\n ></valtimo-no-results>\n\n <div *ngIf=\"dashboards.length === 1\">\n <h4>{{ dashboards[0].title }}</h4>\n\n <valtimo-widget-dashboard-content\n [dashboard]=\"dashboards[0]\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </div>\n\n <div *ngIf=\"dashboards.length > 1\">\n <cds-tabs>\n <cds-tab\n *ngFor=\"let dashboard of dashboards; trackBy: trackByIndex\"\n [heading]=\"dashboard.title\"\n (selected)=\"onTabSelected(dashboard.key)\"\n >\n <valtimo-widget-dashboard-content\n *ngIf=\"(selectedDashboardKey$ | async) === dashboard.key\"\n [dashboard]=\"dashboard\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </cds-tab>\n </cds-tabs>\n </div>\n</div>\n","/*\n * Copyright 2015-2025 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 {Pipe, PipeTransform} from '@angular/core';\nimport {Observable} from 'rxjs';\nimport {WidgetTranslationService} from '../../services';\n\n@Pipe({\n standalone: false,\n name: 'widgetTranslate',\n})\nexport class WidgetTranslatePipe implements PipeTransform {\n constructor(private readonly widgetTranslationService: WidgetTranslationService) {}\n\n transform(translateKey: string, key: string): Observable<string> {\n return this.widgetTranslationService.translate(translateKey, key);\n }\n}\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {BarChartDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './bar-chart-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChartConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n });\n\n @Input() public readonly displayTypeKey: string;\n\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n @Input() set prefillConfiguration(configurationValue: BarChartDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<BarChartDisplayTypeProperties>\n >();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: formValue as BarChartDisplayTypeProperties,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart-configuration.component';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent} from '../../../../models';\nimport {BarChartData, BarChartDisplayTypeProperties} from '../../models';\nimport {BarChartOptions, type ChartTabularData, ScaleTypes} from '@carbon/charts';\nimport {CdsThemeService} from '@valtimo/components';\nimport {BehaviorSubject, filter, map, Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-bar-chart-display',\n templateUrl: './bar-chart-display.component.html',\n styleUrls: ['./bar-chart-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarChartDisplayComponent implements DisplayComponent {\n @Input() public readonly displayTypeKey: string;\n @Input() public set data(value: BarChartData) {\n if (!value) return;\n this._data$.next(value);\n }\n @Input() public readonly displayTypeProperties: BarChartDisplayTypeProperties;\n\n private readonly _data$ = new BehaviorSubject<BarChartData | null>(null);\n\n public readonly barChartData$: Observable<ChartTabularData> = this._data$.pipe(\n filter(data => !!data),\n map(\n data =>\n data?.values.map(dataValue => ({\n group: dataValue.label,\n value: dataValue.value,\n })) || []\n )\n );\n\n public readonly barChartChartOptions$: Observable<BarChartOptions> =\n this.themeService.currentTheme$.pipe(\n map(currentTheme => ({\n title: 'Vertical simple bar (discrete)',\n theme: currentTheme,\n height: '400px',\n axes: {\n left: {\n mapsTo: 'value',\n },\n bottom: {\n mapsTo: 'group',\n scaleType: ScaleTypes.LABELS,\n },\n },\n }))\n );\n\n constructor(private readonly themeService: CdsThemeService) {}\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-donut-widget__header\">\n <h3 class=\"valtimo-donut-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-donut-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-donut-widget__content\">\n <ng-container *ngIf=\"barChartData$ | async as barChartData\">\n @if (barChartData.length > 0) {\n <ibm-bar-chart\n [data]=\"barChartData\"\n [options]=\"barChartChartOptions$ | async\"\n ></ibm-bar-chart>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart-configuration';\nexport * from './bar-chart-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {BarChartConfigurationComponent, BarChartDisplayComponent} from './components';\n\nexport const barChartSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'bar-chart',\n displayComponent: BarChartDisplayComponent,\n configurationComponent: BarChartConfigurationComponent,\n width: 1,\n height: 2,\n translations: {\n nl: {\n title: 'Staafdiagram',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n },\n en: {\n title: 'Bar chart',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n },\n de: {\n title: 'Balkendiagramm',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBERS],\n};\n","/*\n * Copyright 2015-2025 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 {WidgetTranslatePipe} from './widget-translate.pipe';\nimport {NgModule} from '@angular/core';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n imports: [TranslateModule],\n declarations: [WidgetTranslatePipe],\n exports: [WidgetTranslatePipe],\n})\nexport class WidgetTranslatePipeModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './widget-translate.pipe';\nexport * from './widget-translate-pipe.module';\n","/*\n * Copyright 2015-2025 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\nexport * from './widget-translate';\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {barChartSpecification} from './bar-chart.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {BarChartConfigurationComponent, BarChartDisplayComponent} from './components';\nimport {ChartsModule} from '@carbon/charts-angular';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [BarChartDisplayComponent, BarChartConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n CommonModule,\n ChartsModule,\n CarbonListModule,\n TranslateModule,\n ],\n exports: [BarChartDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: barChartSpecification, multi: true}],\n})\nexport class BarChartModule {}\n","/*\n * Copyright 2015-2025 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\ninterface BarChartItem {\n value: number;\n label: string;\n}\n\ninterface BarChartData {\n values: BarChartItem[];\n}\n\ninterface BarChartDisplayTypeProperties {\n title: string;\n subtitle: string;\n}\n\nexport {BarChartData, BarChartItem, BarChartDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './bar-chart.module';\nexport * from './bar-chart.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {BigNumberDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './big-number-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BigNumberConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n label: this.fb.control(''),\n useKPI: this.fb.control(false, [Validators.required]),\n lowSeverityThreshold: this.fb.control(null),\n mediumSeverityThreshold: this.fb.control(null),\n highSeverityThreshold: this.fb.control(null),\n });\n\n @Input() public readonly displayTypeKey: string;\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n public get label(): AbstractControl<string> {\n return this.form.get('label');\n }\n\n public get useKPI(): AbstractControl<boolean> {\n return this.form.get('useKPI');\n }\n\n public get lowSeverityThreshold(): AbstractControl<number> {\n return this.form.get('lowSeverityThreshold');\n }\n\n public get mediumSeverityThreshold(): AbstractControl<number> {\n return this.form.get('mediumSeverityThreshold');\n }\n\n public get highSeverityThreshold(): AbstractControl<number> {\n return this.form.get('highSeverityThreshold');\n }\n\n @Input() set prefillConfiguration(configurationValue: BigNumberDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n this.label.setValue(configurationValue.label || '');\n this.useKPI.setValue(configurationValue.useKPI || false);\n this.lowSeverityThreshold.setValue(configurationValue.lowSeverityThreshold || null);\n this.mediumSeverityThreshold.setValue(configurationValue.mediumSeverityThreshold || null);\n this.highSeverityThreshold.setValue(configurationValue.highSeverityThreshold || null);\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<ConfigurationOutput>();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n this.openKPISubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({valid: this.form.valid, data: formValue});\n })\n );\n }\n\n private openKPISubscription(): void {\n this._subscriptions.add(\n this.useKPI.valueChanges.pipe(startWith(this.useKPI.value)).subscribe(useKpi => {\n const validators = [Validators.required];\n\n if (useKpi) {\n this.lowSeverityThreshold.setValidators(validators);\n this.mediumSeverityThreshold.setValidators(validators);\n this.highSeverityThreshold.setValidators(validators);\n } else {\n this.lowSeverityThreshold.clearValidators();\n this.mediumSeverityThreshold.clearValidators();\n this.highSeverityThreshold.clearValidators();\n }\n\n this.lowSeverityThreshold.updateValueAndValidity();\n this.mediumSeverityThreshold.updateValueAndValidity();\n this.highSeverityThreshold.updateValueAndValidity();\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"label.dirty && label.invalid\"\n >\n {{ 'label' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"label\" [invalid]=\"label.dirty && label.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-checkbox formControlName=\"useKPI\">\n {{ 'useKPI' | widgetTranslate: displayTypeKey | async }}\n </cds-checkbox>\n </div>\n\n <div class=\"form__row\" *ngIf=\"useKPI.value\">\n <div class=\"form__element\">\n <cds-label [invalid]=\"lowSeverityThreshold.dirty && lowSeverityThreshold.invalid\">\n {{ 'lowSeverityThreshold' | widgetTranslate: displayTypeKey | async }}\n\n <input\n cdsText\n [invalid]=\"lowSeverityThreshold.dirty && lowSeverityThreshold.invalid\"\n formControlName=\"lowSeverityThreshold\"\n type=\"number\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__spacer\"></div>\n\n <div class=\"form__element\">\n <cds-label [invalid]=\"mediumSeverityThreshold.dirty && mediumSeverityThreshold.invalid\">\n {{ 'mediumSeverityThreshold' | widgetTranslate: displayTypeKey | async }}\n\n <input\n cdsText\n formControlName=\"mediumSeverityThreshold\"\n [invalid]=\"mediumSeverityThreshold.dirty && mediumSeverityThreshold.invalid\"\n type=\"number\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__spacer\"></div>\n\n <div class=\"form__element\">\n <cds-label [invalid]=\"highSeverityThreshold.dirty && highSeverityThreshold.invalid\">\n {{ 'highSeverityThreshold' | widgetTranslate: displayTypeKey | async }}\n\n <input\n cdsText\n formControlName=\"highSeverityThreshold\"\n [invalid]=\"highSeverityThreshold.dirty && highSeverityThreshold.invalid\"\n type=\"number\"\n />\n </cds-label>\n </div>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number-configuration.component';\n","/*\n * Copyright 2015-2025 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 {EventEmitter} from '@angular/core';\n\ninterface ConfigurationOutput<T = object> {\n valid: boolean;\n data: T;\n}\n\ninterface ConfigurationComponent {\n disabled: boolean;\n prefillConfiguration?: object;\n configurationEvent: EventEmitter<ConfigurationOutput>;\n}\n\ninterface DisplayTypeConfigurationComponent extends ConfigurationComponent {\n displayTypeKey: string;\n}\n\ninterface DataSourceConfigurationComponent extends ConfigurationComponent {\n dataSourceKey: string;\n}\n\nexport {\n ConfigurationComponent,\n DisplayTypeConfigurationComponent,\n DataSourceConfigurationComponent,\n ConfigurationOutput,\n};\n","/*\n * Copyright 2015-2025 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\ninterface Dashboard {\n key: string;\n title: string;\n widgets: Array<DashboardWidgetConfiguration>;\n}\n\ninterface DashboardWidgetConfiguration {\n key: string;\n title: string;\n dataSourceKey: string;\n displayType: string;\n dataSourceProperties: object;\n displayTypeProperties: object;\n url: string;\n}\n\nexport {Dashboard, DashboardWidgetConfiguration};\n","/*\n * Copyright 2015-2025 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 {Type} from '@angular/core';\nimport {DataSourceConfigurationComponent} from './configuration.model';\n\ninterface DataSourceSpecification {\n dataSourceKey: string;\n configurationComponent?: Type<DataSourceConfigurationComponent>;\n translations: {\n [langKey: string]: {\n title: string;\n [translationKey: string]: string;\n };\n };\n}\n\ninterface QueryCondition {\n queryPath: string;\n queryOperator: string;\n queryValue: string;\n}\n\nexport {DataSourceSpecification, QueryCondition};\n","/*\n * Copyright 2015-2025 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 {Type} from '@angular/core';\nimport {DisplayTypeConfigurationComponent} from './configuration.model';\n\ninterface DisplayComponent {\n displayTypeKey: string;\n displayTypeProperties: object;\n data: object;\n}\n\ninterface DisplayTypeSpecification {\n displayTypeKey: string;\n displayComponent: Type<DisplayComponent>;\n configurationComponent?: Type<DisplayTypeConfigurationComponent>;\n requiredDataFeatures: Array<string>;\n width: number;\n height: number;\n translations: {\n [langKey: string]: {\n title: string;\n [translationKey: string]: string;\n };\n };\n}\n\nexport {DisplayComponent, DisplayTypeSpecification};\n","/*\n * Copyright 2015-2025 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\ninterface WidgetConfigurationBin {\n configurationKey: string;\n width: number;\n height: number;\n}\n\ninterface PackResult {\n height: number;\n width: number;\n items: Array<{width: number; height: number; x: number; y: number; item: WidgetConfigurationBin}>;\n}\n\nexport {WidgetConfigurationBin, PackResult};\n","/*\n * Copyright 2015-2025 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\ninterface WidgetData {\n key: string;\n data: object;\n}\n\nexport {WidgetData};\n","/*\n * Copyright 2015-2025 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\nenum WidgetSeverity {\n BLACK = 'valtimo-severity__black',\n GREEN = 'valtimo-severity__green',\n YELLOW = 'valtimo-severity__yellow',\n ORANGE = 'valtimo-severity__orange',\n RED = 'valtimo-severity__red',\n}\n\nexport {WidgetSeverity};\n","/*\n * Copyright 2015-2025 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\nexport * from './configuration.model';\nexport * from './dashboard.model';\nexport * from './data-source.model';\nexport * from './display-type.model';\nexport * from './layout.model';\nexport * from './widget-data.model';\nexport * from './widget-display.model';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent, WidgetSeverity} from '../../../../models';\nimport {BigNumberData, BigNumberDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n selector: 'valtimo-big-number-display',\n templateUrl: './big-number-display.component.html',\n styleUrls: ['./big-number-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BigNumberDisplayComponent implements DisplayComponent {\n @Input() displayTypeKey: string;\n @Input() data: BigNumberData;\n @Input() displayTypeProperties: BigNumberDisplayTypeProperties;\n\n public get severityClass(): string {\n if (!this.displayTypeProperties.useKPI) {\n return WidgetSeverity.BLACK;\n }\n\n const value: number = this.data?.value;\n\n if (value < this.displayTypeProperties.lowSeverityThreshold) {\n return WidgetSeverity.GREEN;\n } else if (value < this.displayTypeProperties.mediumSeverityThreshold) {\n return WidgetSeverity.YELLOW;\n } else if (value < this.displayTypeProperties.highSeverityThreshold) {\n return WidgetSeverity.ORANGE;\n }\n\n return WidgetSeverity.RED;\n }\n\n public get numberFontSize(): number {\n if (!this.data) {\n return 122;\n }\n\n return Math.floor(122 / this.data.value.toString().length) + 20;\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-big-number-widget__header\">\n <h3 class=\"valtimo-big-number-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-big-number-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-big-number-widget__content\">\n <span\n [class]=\"['valtimo-big-number-widget__number', severityClass]\"\n [style.fontSize.px]=\"numberFontSize\"\n >{{ data?.value }}</span\n >\n\n <span *ngIf=\"displayTypeProperties.label\" class=\"valtimo-big-number-widget__label\">\n {{ displayTypeProperties.label }}\n </span>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number-configuration';\nexport * from './big-number-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {BigNumberConfigurationComponent, BigNumberDisplayComponent} from './components';\n\nexport const bigNumberSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'number',\n displayComponent: BigNumberDisplayComponent,\n configurationComponent: BigNumberConfigurationComponent,\n width: 1,\n height: 1,\n translations: {\n nl: {\n title: 'Groot getal',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n useKPI: 'KPI gebruiken',\n lowSeverityThreshold: 'Lage ernstdrempel (vereist)',\n mediumSeverityThreshold: 'Middelmatige ernstdrempel (vereist)',\n highSeverityThreshold: 'Hoge ernstdrempel (vereist)',\n },\n en: {\n title: 'Big number',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n useKPI: 'Use KPI',\n lowSeverityThreshold: 'Low severity threshold (required)',\n mediumSeverityThreshold: 'Medium severity threshold (required)',\n highSeverityThreshold: 'High severity threshold (required)',\n },\n de: {\n title: 'Große Nummer',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n useKPI: 'Verwenden Sie KPI',\n lowSeverityThreshold: 'Niedriger Schweregradschwellenwert (erforderlich)',\n mediumSeverityThreshold: 'Mittlerer Schweregradschwellenwert (erforderlich)',\n highSeverityThreshold: 'Hoher Schweregradschwellenwert (erforderlich)',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBER],\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {bigNumberSpecification} from './big-number.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {BigNumberConfigurationComponent, BigNumberDisplayComponent} from './components';\n\n@NgModule({\n declarations: [BigNumberDisplayComponent, BigNumberConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n ],\n exports: [BigNumberDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: bigNumberSpecification, multi: true}],\n})\nexport class BigNumberModule {}\n","/*\n * Copyright 2015-2025 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\ninterface BigNumberData {\n value: number;\n}\n\ninterface BigNumberDisplayTypeProperties {\n title: string;\n subtitle: string;\n useKPI: boolean;\n lowSeverityThreshold: number;\n mediumSeverityThreshold: number;\n highSeverityThreshold: number;\n label?: string;\n}\n\nexport {BigNumberData, BigNumberDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number.module';\nexport * from './big-number.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {DonutDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './donut-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DonutConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n label: this.fb.control(''),\n useKPI: this.fb.control(false, [Validators.required]),\n });\n\n @Input() public readonly displayTypeKey: string;\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n public get label(): AbstractControl<string> {\n return this.form.get('label');\n }\n\n @Input() set prefillConfiguration(configurationValue: DonutDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n this.label.setValue(configurationValue.label || '');\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<DonutDisplayTypeProperties>\n >();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: formValue as DonutDisplayTypeProperties,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"label.dirty && label.invalid\"\n >\n {{ 'label' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"label\" [invalid]=\"label.dirty && label.invalid\" />\n </cds-label>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './donut-configuration.component';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent} from '../../../../models';\nimport {DonutData, DonutDisplayTypeProperties} from '../../models';\nimport {type ChartTabularData, DonutChartOptions} from '@carbon/charts-angular';\nimport {CdsThemeService} from '@valtimo/components';\nimport {BehaviorSubject, filter, map, Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-donut-display',\n templateUrl: './donut-display.component.html',\n styleUrls: ['./donut-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DonutDisplayComponent implements DisplayComponent {\n @Input() public readonly displayTypeKey: string;\n @Input() public set data(value: DonutData) {\n if (!value) return;\n this._data$.next(value);\n }\n @Input() public readonly displayTypeProperties: DonutDisplayTypeProperties;\n\n private readonly _data$ = new BehaviorSubject<DonutData | null>(null);\n\n public readonly donutData$: Observable<ChartTabularData> = this._data$.pipe(\n filter(data => !!data),\n map(\n data =>\n data?.values.map(dataValue => ({\n group: dataValue.label,\n value: dataValue.value,\n })) || []\n )\n );\n\n public readonly donutChartOptions$: Observable<DonutChartOptions> =\n this.themeService.currentTheme$.pipe(\n map(currentTheme => ({\n resizable: true,\n toolbar: {enabled: false},\n height: '300px',\n theme: currentTheme,\n donut: {\n alignment: 'center',\n center: {\n label: this.displayTypeProperties.label,\n },\n },\n pie: {\n labels: {\n enabled: false,\n },\n },\n legend: {\n truncation: {\n numCharacter: 28,\n },\n },\n }))\n );\n\n constructor(private readonly themeService: CdsThemeService) {}\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-donut-widget__header\">\n <h3 class=\"valtimo-donut-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-donut-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-donut-widget__content\">\n <ng-container *ngIf=\"donutData$ | async as donutData\">\n @if (donutData.length > 0) {\n <ibm-donut-chart\n type=\"donut\"\n class=\"n-chart\"\n [data]=\"donutData\"\n [options]=\"donutChartOptions$ | async\"\n ></ibm-donut-chart>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './donut-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './donut-configuration';\nexport * from './donut-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {DonutConfigurationComponent, DonutDisplayComponent} from './components';\n\nexport const donutSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'donut',\n displayComponent: DonutDisplayComponent,\n configurationComponent: DonutConfigurationComponent,\n width: 1,\n height: 2,\n translations: {\n nl: {\n title: 'Donut-diagram',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n },\n en: {\n title: 'Donut chart',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n },\n de: {\n title: 'Donut-Diagramm',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBERS],\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {donutSpecification} from './donut.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {DonutConfigurationComponent, DonutDisplayComponent} from './components';\nimport {ChartsModule} from '@carbon/charts-angular';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [DonutDisplayComponent, DonutConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n CommonModule,\n ChartsModule,\n CarbonListModule,\n TranslateModule,\n ],\n exports: [DonutDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: donutSpecification, multi: true}],\n})\nexport class DonutModule {}\n","/*\n * Copyright 2015-2025 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\ninterface DonutData {\n values: DonutItem[];\n}\n\ninterface DonutItem {\n value: number;\n label: string;\n}\n\ninterface DonutDisplayTypeProperties {\n title: string;\n subtitle: string;\n label?: string;\n}\n\nexport {DonutData, DonutItem, DonutDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './donut.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './donut.module';\nexport * from './donut.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {GaugeDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './gauge-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaugeConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n label: this.fb.control(''),\n useKPI: this.fb.control(false, [Validators.required]),\n });\n\n @Input() public readonly displayTypeKey: string;\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n public get label(): AbstractControl<string> {\n return this.form.get('label');\n }\n\n @Input() set prefillConfiguration(configurationValue: GaugeDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n this.label.setValue(configurationValue.label || '');\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<GaugeDisplayTypeProperties>\n >();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: formValue as GaugeDisplayTypeProperties,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'labelHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"label.dirty && label.invalid\"\n >\n {{ 'label' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"label\" [invalid]=\"label.dirty && label.invalid\" />\n </cds-label>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge-configuration.component';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent} from '../../../../models';\nimport {GaugeData, GaugeDisplayTypeProperties} from '../../models';\nimport {type ChartTabularData, GaugeChartOptions} from '@carbon/charts-angular';\nimport {BehaviorSubject, combineLatest, filter, map, Observable} from 'rxjs';\nimport {CdsThemeService} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\n\n@Component({\n standalone: false,\n selector: 'valtimo-gauge-display',\n templateUrl: './gauge-display.component.html',\n styleUrls: ['./gauge-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GaugeDisplayComponent implements DisplayComponent {\n @Input() public readonly displayTypeKey: string;\n @Input() public set data(value: GaugeData) {\n if (!value) return;\n this._data$.next(value);\n }\n @Input() public readonly displayTypeProperties: GaugeDisplayTypeProperties;\n\n private readonly _DELTA: number = -1.0;\n\n private readonly _data$ = new BehaviorSubject<GaugeData | null>(null);\n\n public readonly chartData$: Observable<ChartTabularData> = this._data$.pipe(\n filter(data => !!data),\n map(data => [\n {\n group: 'value',\n value: this.calculatePercentage(data?.value || 0, data?.total || 0),\n },\n {\n group: 'delta',\n value: this._DELTA,\n },\n ])\n );\n\n public readonly gaugeChartOptions$: Observable<GaugeChartOptions> = combineLatest([\n this.themeService.currentTheme$,\n this.translateService.stream('key'),\n ]).pipe(\n map(([currentTheme]) => ({\n resizable: true,\n toolbar: {enabled: false},\n height: '110px',\n theme: currentTheme == 'g10' ? 'white' : 'g100',\n gauge: {\n alignment: 'center',\n numberFormatter: value => this.numberFormatter(this, value),\n deltaArrow: {\n enabled: false,\n },\n showPercentageSymbol: false,\n type: 'semi',\n },\n }))\n );\n\n constructor(\n private readonly themeService: CdsThemeService,\n private readonly translateService: TranslateService\n ) {}\n\n private calculatePercentage(value: number, total?: number): number {\n return (value * 100.0) / (total || 100.0);\n }\n\n private numberFormatter(scope: GaugeDisplayComponent, value: number): string {\n const scopeData = scope._data$.getValue();\n\n if (value == scope._DELTA) {\n return `${this.translateService.instant('dashboard.of')} ${scopeData?.total || 0} ${scope.displayTypeProperties.label} `;\n }\n\n return Math.round(value * (scopeData?.total || 0)) / 100.0 + '';\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-gauge-widget__header\">\n <h3 class=\"valtimo-gauge-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-gauge-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-gauge-widget__content\">\n <ibm-gauge-chart\n *ngIf=\"chartData$ | async as chartData\"\n type=\"gauge\"\n class=\"n-chart\"\n [data]=\"chartData\"\n [options]=\"gaugeChartOptions$ | async\"\n ></ibm-gauge-chart>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge-configuration';\nexport * from './gauge-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {GaugeConfigurationComponent, GaugeDisplayComponent} from './components';\n\nexport const gaugeSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'gauge',\n displayComponent: GaugeDisplayComponent,\n configurationComponent: GaugeConfigurationComponent,\n width: 1,\n height: 1,\n translations: {\n nl: {\n title: 'Graadmeter',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n },\n en: {\n title: 'Gauge',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n },\n de: {\n title: 'Messgerät',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBER, DATA_FEATURES.TOTAL],\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {gaugeSpecification} from './gauge.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {GaugeConfigurationComponent, GaugeDisplayComponent} from './components';\nimport {ChartsModule} from '@carbon/charts-angular';\n\n@NgModule({\n declarations: [GaugeDisplayComponent, GaugeConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n CommonModule,\n ChartsModule,\n ],\n exports: [GaugeDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: gaugeSpecification, multi: true}],\n})\nexport class GaugeModule {}\n","/*\n * Copyright 2015-2025 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\ninterface GaugeData {\n value: number;\n total?: number;\n}\n\ninterface GaugeDisplayTypeProperties {\n title: string;\n subtitle: string;\n label?: string;\n}\n\nexport {GaugeData, GaugeDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './gauge.module';\nexport * from './gauge.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DisplayTypeConfigurationComponent} from '../../../../models';\nimport {startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder, Validators} from '@angular/forms';\nimport {MeterDisplayTypeProperties} from '../../models';\n\n@Component({\n standalone: false,\n templateUrl: './meter-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MeterConfigurationComponent\n implements OnInit, OnDestroy, DisplayTypeConfigurationComponent\n{\n public readonly form = this.fb.group({\n title: this.fb.control('', [Validators.required]),\n subtitle: this.fb.control(''),\n });\n\n @Input() public readonly displayTypeKey: string;\n\n @Input() set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get title(): AbstractControl<string> {\n return this.form.get('title');\n }\n\n public get subtitle(): AbstractControl<string> {\n return this.form.get('subtitle');\n }\n\n @Input() set prefillConfiguration(configurationValue: MeterDisplayTypeProperties) {\n if (configurationValue) {\n this.title.setValue(configurationValue.title || '');\n this.subtitle.setValue(configurationValue.subtitle || '');\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<MeterDisplayTypeProperties>\n >();\n\n private _subscriptions = new Subscription();\n\n constructor(private readonly fb: FormBuilder) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: formValue as MeterDisplayTypeProperties,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'formTitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"title.dirty && title.invalid\"\n >\n {{ 'formTitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"title\" [invalid]=\"title.dirty && title.invalid\" />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalidText]=\"'subtitleHelperText' | widgetTranslate: displayTypeKey | async\"\n [invalid]=\"subtitle.dirty && subtitle.invalid\"\n >\n {{ 'subtitle' | widgetTranslate: displayTypeKey | async }}\n\n <input cdsText formControlName=\"subtitle\" [invalid]=\"subtitle.dirty && subtitle.invalid\" />\n </cds-label>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './meter-configuration.component';\n","/*\n * Copyright 2015-2025 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 {ChangeDetectionStrategy, Component, Input} from '@angular/core';\nimport {DisplayComponent} from '../../../../models';\nimport {MeterData, MeterDisplayTypeProperties} from '../../models';\nimport {type ChartTabularData, MeterChartOptions} from '@carbon/charts-angular';\nimport {CdsThemeService} from '@valtimo/components';\nimport {BehaviorSubject, combineLatest, filter, map, Observable} from 'rxjs';\n\n@Component({\n standalone: false,\n selector: 'valtimo-meter-display',\n templateUrl: './meter-display.component.html',\n styleUrls: ['./meter-display.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MeterDisplayComponent implements DisplayComponent {\n @Input() public readonly displayTypeKey: string;\n @Input() public set data(value: MeterData) {\n if (!value) return;\n this._data$.next(value);\n }\n @Input() public readonly displayTypeProperties: MeterDisplayTypeProperties;\n\n private readonly _data$ = new BehaviorSubject<MeterData | null>(null);\n\n public readonly meterData$: Observable<ChartTabularData> = this._data$.pipe(\n filter(data => !!data),\n map(\n data =>\n data?.values.map(dataValue => ({\n group: dataValue.label,\n value: dataValue.value,\n })) || []\n )\n );\n\n public readonly meterChartOptions$: Observable<MeterChartOptions> = combineLatest([\n this.themeService.currentTheme$,\n this.meterData$,\n ]).pipe(\n map(([currentTheme, meterData]) => ({\n resizable: true,\n toolbar: {enabled: false},\n theme: currentTheme,\n height: '60px',\n meter: {\n height: 60,\n showLabels: false,\n title: {\n percentageIndicator: {\n enabled: false,\n },\n },\n proportional: {\n total: meterData.reduce((acc, curr) => acc + curr.value, 0),\n },\n },\n }))\n );\n\n constructor(private readonly themeService: CdsThemeService) {}\n}\n","<!--\n ~ Copyright 2015-2025 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<section class=\"valtimo-donut-widget__header\">\n <h3 class=\"valtimo-donut-widget__title\">{{ displayTypeProperties.title }}</h3>\n\n <span *ngIf=\"displayTypeProperties.subtitle\" class=\"valtimo-donut-widget__subtitle\">\n {{ displayTypeProperties.subtitle }}\n </span>\n</section>\n\n<section class=\"valtimo-donut-widget__content\">\n <ng-container *ngIf=\"meterData$ | async as meterData\">\n @if (meterData.length > 0) {\n <ibm-meter-chart [data]=\"meterData\" [options]=\"meterChartOptions$ | async\"></ibm-meter-chart>\n } @else {\n <valtimo-no-results\n [collapseVertically]=\"true\"\n [description]=\"'widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n","/*\n * Copyright 2015-2025 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\nexport * from './meter-display.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './meter-configuration';\nexport * from './meter-display';\n","/*\n * Copyright 2015-2025 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 {DisplayTypeSpecification} from '../../models';\nimport {DATA_FEATURES} from '../../constants';\nimport {MeterConfigurationComponent, MeterDisplayComponent} from './components';\n\nexport const meterSpecification: DisplayTypeSpecification = {\n displayTypeKey: 'meter',\n displayComponent: MeterDisplayComponent,\n configurationComponent: MeterConfigurationComponent,\n width: 2,\n height: 1,\n translations: {\n nl: {\n title: 'Meter',\n formTitle: 'Titel (vereist)',\n formTitleHelperText: 'De titel die wordt weergegeven in de widget',\n subtitle: 'Ondertitel',\n subtitleHelperText: 'De ondertitel weergegeven in de widget',\n label: 'Label',\n labelHelperText: 'Het label dat wordt weergegeven in de widget',\n },\n en: {\n title: 'Meter',\n formTitle: 'Title (required)',\n formTitleHelperText: 'The title displayed in the widget',\n subtitle: 'Subtitle',\n subtitleHelperText: 'The subtitle displayed in the widget',\n label: 'Label',\n labelHelperText: 'The label displayed in the widget',\n },\n de: {\n title: 'Meter',\n formTitle: 'Titel (erforderlich)',\n formTitleHelperText: 'Der im Widget angezeigte Titel',\n subtitle: 'Untertitel',\n subtitleHelperText: 'Der im Widget angezeigte Untertitel',\n label: 'Beschriftung',\n labelHelperText: 'Die im Widget angezeigte Beschriftung',\n },\n },\n requiredDataFeatures: [DATA_FEATURES.NUMBERS],\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DISPLAY_TYPE_TOKEN} from '../../constants';\nimport {meterSpecification} from './meter.specification';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {CheckboxModule, InputModule} from 'carbon-components-angular';\nimport {MeterConfigurationComponent, MeterDisplayComponent} from './components';\nimport {ChartsModule} from '@carbon/charts-angular';\nimport {CarbonListModule} from '@valtimo/components';\nimport {TranslateModule} from '@ngx-translate/core';\n\n@NgModule({\n declarations: [MeterDisplayComponent, MeterConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n CheckboxModule,\n CommonModule,\n ChartsModule,\n CarbonListModule,\n TranslateModule,\n ],\n exports: [MeterDisplayComponent],\n providers: [{provide: DISPLAY_TYPE_TOKEN, useValue: meterSpecification, multi: true}],\n})\nexport class MeterModule {}\n","/*\n * Copyright 2015-2025 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\ninterface MeterItem {\n value: number;\n label: string;\n}\n\ninterface MeterData {\n values: MeterItem[];\n}\n\ninterface MeterDisplayTypeProperties {\n title: string;\n subtitle: string;\n}\n\nexport {MeterData, MeterItem, MeterDisplayTypeProperties};\n","/*\n * Copyright 2015-2025 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\nexport * from './meter.model';\n","/*\n * Copyright 2015-2025 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\nexport * from './meter.module';\nexport * from './meter.specification';\nexport * from './components';\nexport * from './models';\n","/*\n * Copyright 2015-2025 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 {BarChartModule} from './bar-chart';\nimport {BigNumberModule} from './big-number';\nimport {DonutModule} from './donut';\nimport {GaugeModule} from './gauge';\nimport {MeterModule} from './meter';\n\n@NgModule({\n imports: [BarChartModule, BigNumberModule, DonutModule, GaugeModule, MeterModule],\n})\nexport class DisplayWidgetTypesModule {}\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DataSourceConfigurationComponent} from '../../../../models';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, Subscription} from 'rxjs';\nimport {FormBuilder, Validators} from '@angular/forms';\nimport {CaseCountConfiguration} from '../../models';\nimport {DocumentService} from '@valtimo/document';\nimport {ListItem} from 'carbon-components-angular';\nimport {\n ListItemWithId,\n MultiInputKeyValue,\n MultiInputValues,\n ValuePathSelectorPrefix,\n} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Operator} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './case-count-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./case-count-configuration.component.scss'],\n})\nexport class CaseCountConfigurationComponent\n implements OnInit, OnDestroy, DataSourceConfigurationComponent\n{\n @Input() public dataSourceKey: string;\n\n public readonly form = this.fb.group({\n documentDefinition: this.fb.control(null, [Validators.required]),\n queryConditions: this.fb.control(null),\n });\n\n @Input() public set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public readonly selectedDocumentDefinition$ = new BehaviorSubject<string>('');\n\n public readonly documentItems$: Observable<Array<ListItem>> = combineLatest([\n this.documentService.getAllDefinitions(),\n this.selectedDocumentDefinition$,\n ]).pipe(\n map(([documentDefinitions, selectedDocumentDefintion]) =>\n documentDefinitions.content.map(definition => ({\n content: definition.id.name,\n selected: definition.id.name === selectedDocumentDefintion,\n }))\n )\n );\n\n private readonly _OPERATORS: Array<Operator> = [\n Operator.NOT_EQUAL_TO,\n Operator.EQUAL_TO,\n Operator.GREATER_THAN,\n Operator.GREATER_THAN_OR_EQUAL_TO,\n Operator.LESS_THAN,\n Operator.LESS_THAN_OR_EQUAL_TO,\n ];\n\n public readonly operatorItems$: Observable<Array<ListItemWithId>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this._OPERATORS.map(operator => ({\n id: operator,\n content: this.translateService.instant('condition.operator.' + operator),\n selected: false,\n }))\n )\n );\n\n public readonly defaultConditionValues$ = new BehaviorSubject<MultiInputValues | null>(null);\n public readonly allConditionsValid$ = new BehaviorSubject<boolean>(true);\n\n public get documentDefinition() {\n return this.form.get('documentDefinition');\n }\n\n public get queryConditions() {\n return this.form.get('queryConditions');\n }\n\n @Input() set prefillConfiguration(configurationValue: CaseCountConfiguration) {\n if (configurationValue) {\n this.documentDefinitionSelected({\n item: {\n content: configurationValue.documentDefinition,\n },\n } as any);\n this.defaultConditionValues$.next(\n configurationValue.queryConditions.map(condition => ({\n key: condition.queryPath,\n dropdown: condition.queryOperator,\n value: condition.queryValue,\n }))\n );\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<CaseCountConfiguration>\n >();\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public documentDefinitionSelected(documentDefinitionItem: ListItem): void {\n if (!documentDefinitionItem) {\n return;\n }\n\n this.selectedDocumentDefinition$.next(documentDefinitionItem?.item?.content);\n this.documentDefinition.setValue(documentDefinitionItem?.item?.content);\n }\n\n public conditionsValueChange(values: Array<MultiInputKeyValue>): void {\n if (values.length === 0) {\n this.queryConditions.setValue(null);\n } else {\n this.queryConditions.setValue(\n values.map(value => ({\n queryPath: value.key,\n queryOperator: value.dropdown,\n queryValue: value.value,\n }))\n );\n }\n }\n\n onAllConditionsValid(allConditionsValid: boolean): void {\n this.allConditionsValid$.next(allConditionsValid);\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.form.valueChanges.pipe(startWith(this.form.value)),\n this.allConditionsValid$,\n ]).subscribe(([formValue, allConditionsValid]) => {\n this.configurationEvent.emit({\n valid: this.form.valid && allConditionsValid,\n data: formValue as CaseCountConfiguration,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form\n class=\"case-count-configuration-form\"\n *ngIf=\"{documentItems: documentItems$ | async, operatorItems: operatorItems$} as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"documentDefinition\"\n [helperText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"documentDefinition.dirty && documentDefinition.invalid\"\n [label]=\"'documentDefinition' | widgetTranslate: dataSourceKey | async\"\n (selected)=\"documentDefinitionSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs?.documentItems || []\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <div class=\"form__element conditions-multi-input\">\n <cds-label\n [helperText]=\"'conditionsHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"conditions-label\"\n >{{ 'conditions' | widgetTranslate: dataSourceKey | async }}</cds-label\n >\n <valtimo-carbon-multi-input\n type=\"valuePathSelectorDropdownValue\"\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"defaultConditionValues$ | async\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"0\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"0\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n (allValuesValidEvent)=\"onAllConditionsValid($event)\"\n (valueChange)=\"conditionsValueChange($event)\"\n valuePathSelectorNotation=\"dots\"\n [valuePathSelectorPrefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [valuePathSelectorShowCaseDefinitionSelector]=\"false\"\n [valuePathSelectorCaseDefinitionKey]=\"selectedDocumentDefinition$ | async\"\n [keyColumnFlex]=\"2\"\n [dropdownColumnFlex]=\"1\"\n [valueColumnFlex]=\"1\"\n ></valtimo-carbon-multi-input>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './case-count-configuration.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './case-count-configuration';\n","/*\n * Copyright 2015-2025 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 {QueryCondition} from '../../../models';\n\ninterface CaseCountConfiguration {\n documentDefinition: string;\n queryConditions: QueryCondition[];\n}\n\nexport {CaseCountConfiguration};\n","/*\n * Copyright 2015-2025 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\nexport * from './case-count.model';\n","/*\n * Copyright 2015-2025 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 *\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\nconst CONDITIONS_HELPER_TEXTS = {\n DE: (example = 'case:createdBy') =>\n `Zum Beispiel: ‘${example}’, ‘Not equal to’, ‘test@test.com’. Um mit leeren Werten zu vergleichen, kann ‘\\${null}’ als Wert verwendet werden. Um mit dem aktuellen Datum zu vergleichen, kann ‘\\${localDateTimeNow}’ als Wert verwendet werden. Zusätzlich wird Logik wie ‘\\${localDateTimeNow.minusWeeks(2)}’ unterstützt. Die Platzhalter ‘\\${currentUserId}’, ‘\\${currentUserEmail}’ und ‘\\${currentUserIdentifier}’ ermöglichen die Anzeige personalisierter Informationen für den aktuellen Dashboard-Benutzer.`,\n NL: (example = 'case:createdBy') =>\n `Bijvoorbeeld: ‘${example}’, ‘Not equal to’, ‘test@test.com’. Om te vergelijken met lege waarden, kun je ‘\\${null}’ gebruiken als waarde. Om te vergelijken met de huidige datum, gebruik je ‘\\${localDateTimeNow}’ als waarde. Hier wordt logica zoals ‘\\${localDateTimeNow.minusWeeks(2)}’ ondersteund. De placeholders ‘\\${currentUserId}’, ‘\\${currentUserEmail}’ en ‘\\${currentUserIdentifier}’ maken het mogelijk om gepersonaliseerde informatie weer te geven voor de huidige dashboardgebruiker.`,\n EN: (example = 'case:createdBy') =>\n `For example: '${example}', 'Not equal to', 'test@test.com'. To compare against empty values, you can use '\\${null}' as a value. To compare with the current date, use '\\${localDateTimeNow}' as a value. Additionally, logic such as '\\${localDateTimeNow.minusWeeks(2)}' is supported. The placeholders '\\${currentUserId}', '\\${currentUserEmail}', and '\\${currentUserIdentifier}' enable the display of personalized information for the current dashboard user.`,\n};\n\nexport {CONDITIONS_HELPER_TEXTS};\n","/*\n * Copyright 2015-2025 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\nexport * from './conditions';\n","/*\n * Copyright 2015-2025 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 {DataSourceSpecification} from '../../models';\nimport {CaseCountConfigurationComponent} from './components';\nimport {CONDITIONS_HELPER_TEXTS} from '../shared';\n\nexport const caseCountDataSourceSpecification: DataSourceSpecification = {\n dataSourceKey: 'case-count',\n configurationComponent: CaseCountConfigurationComponent,\n translations: {\n de: {\n title: 'Fallzahl',\n documentDefinition: 'Falltyp (erforderlich)',\n documentDefinitionHelperText: 'Der Falltyp, für den die Anzahl abgerufen wird',\n path: 'Pfad',\n operator: 'Operator',\n value: 'Wert',\n conditions: 'Bedingungen',\n conditionsHelperText: `Geben Sie optionale Bedingungen zum Abrufen der Anzahl der Fälle für den ausgewählten Falltyp an. ${CONDITIONS_HELPER_TEXTS.DE()}`,\n addCondition: 'Bedingung hinzufügen',\n },\n en: {\n title: 'Case count',\n documentDefinition: 'Case type (required)',\n documentDefinitionHelperText: 'The case type for which the count is retrieved',\n path: 'Path (required)',\n operator: 'Operator',\n value: 'Value',\n conditions: 'Conditions',\n conditionsHelperText: `Specify optional conditions for retrieving the number of cases for the selected case type. ${CONDITIONS_HELPER_TEXTS.EN()}`,\n addCondition: 'Add condition',\n },\n nl: {\n title: 'Aantal dossiers',\n documentDefinition: 'Dossiertype (vereist)',\n documentDefinitionHelperText: 'Het dossiertype waarvoor de telling wordt opgehaald',\n path: 'Pad',\n operator: 'Operator',\n value: 'Waarde',\n conditions: 'Condities',\n conditionsHelperText: `Geef optionele condities op voor het ophalen van het aantal zaken voor het geselecteerde dossiertype. ${CONDITIONS_HELPER_TEXTS.NL()}}`,\n addCondition: 'Conditie toevoegen',\n },\n },\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DATA_SOURCE_TOKEN} from '../../constants';\nimport {caseCountDataSourceSpecification} from './case-count.specification';\nimport {CaseCountConfigurationComponent} from './components';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {DropdownModule, InputModule} from 'carbon-components-angular';\nimport {CarbonMultiInputModule} from '@valtimo/components';\n\n@NgModule({\n declarations: [CaseCountConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n DropdownModule,\n CarbonMultiInputModule,\n ],\n exports: [CaseCountConfigurationComponent],\n providers: [\n {provide: DATA_SOURCE_TOKEN, useValue: caseCountDataSourceSpecification, multi: true},\n ],\n})\nexport class CaseCountDataSourceModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './components';\nexport * from './models';\nexport * from './case-count.module';\nexport * from './case-count.specification';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {ConfigurationOutput, DataSourceConfigurationComponent} from '../../../../models';\nimport {\n BehaviorSubject,\n combineLatest,\n distinctUntilChanged,\n map,\n Observable,\n startWith,\n Subscription,\n} from 'rxjs';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {CaseCountsConfiguration, CaseCountsQueryItem, CaseCountsQueryItemForm} from '../../models';\nimport {DocumentService} from '@valtimo/document';\nimport {IconService, ListItem} from 'carbon-components-angular';\nimport {ListItemWithId, MultiInputValues, ValuePathSelectorPrefix} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {isEqual} from 'lodash';\nimport {Add16, TrashCan16} from '@carbon/icons';\nimport {Operator} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './case-counts-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./case-counts-configuration.component.scss'],\n})\nexport class CaseCountsConfigurationComponent\n implements OnInit, OnDestroy, DataSourceConfigurationComponent\n{\n @Input() public dataSourceKey: string;\n\n private readonly _EMPTY_QUERY_ITEM_VALUE: CaseCountsQueryItemForm = {\n label: '',\n queryConditions: [{key: '', value: '', dropdown: ''}],\n };\n\n public readonly form = this.fb.group({\n documentDefinition: this.fb.control(null, [Validators.required]),\n queryItems: this.fb.control(\n [this._EMPTY_QUERY_ITEM_VALUE, this._EMPTY_QUERY_ITEM_VALUE],\n [this.queryItemsValidator()]\n ),\n });\n\n @Input() public set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public get queryItems(): AbstractControl<CaseCountsQueryItemForm[]> {\n return this.form.get('queryItems');\n }\n\n public get queryItemsValue$(): Observable<CaseCountsQueryItemForm[]> {\n return this.queryItems.valueChanges.pipe(startWith(this.queryItems.value || []));\n }\n\n public get queryItemsList$(): Observable<null[]> {\n return this.queryItemsValue$.pipe(\n map(queryItemsValue => queryItemsValue.map(() => null)),\n distinctUntilChanged((previous, current) => isEqual(previous, current))\n );\n }\n\n public get documentDefinition() {\n return this.form.get('documentDefinition');\n }\n\n public get formDisabled(): boolean {\n return this.form.disabled;\n }\n\n @Input() set prefillConfiguration(configurationValue: CaseCountsConfiguration) {\n if (!configurationValue) return;\n\n this.documentDefinitionSelected({\n item: {\n content: configurationValue.documentDefinition,\n },\n } as any);\n this.documentDefinition.patchValue(configurationValue.documentDefinition);\n\n this.queryItems.patchValue(this.queryItemsToMultiInputValues(configurationValue.queryItems));\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<CaseCountsConfiguration>\n >();\n\n public readonly selectedDocumentDefinition$ = new BehaviorSubject<string>('');\n\n public readonly documentItems$: Observable<Array<ListItem>> = combineLatest([\n this.documentService.getAllDefinitions(),\n this.selectedDocumentDefinition$,\n ]).pipe(\n map(([documentDefinitions, selectedDocumentDefintion]) =>\n documentDefinitions.content.map(definition => ({\n content: definition.id.name,\n selected: definition.id.name === selectedDocumentDefintion,\n }))\n )\n );\n\n private readonly _OPERATORS: Array<Operator> = [\n Operator.NOT_EQUAL_TO,\n Operator.EQUAL_TO,\n Operator.GREATER_THAN,\n Operator.GREATER_THAN_OR_EQUAL_TO,\n Operator.LESS_THAN,\n Operator.LESS_THAN_OR_EQUAL_TO,\n ];\n\n public readonly operatorItems$: Observable<Array<ListItemWithId>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this._OPERATORS.map(operator => ({\n id: operator,\n content: this.translateService.instant('condition.operator.' + operator),\n selected: false,\n }))\n )\n );\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n private readonly iconService: IconService\n ) {\n this.iconService.registerAll([Add16, TrashCan16]);\n }\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public documentDefinitionSelected(documentDefinitionItem: ListItem): void {\n const documentDefinitionName = documentDefinitionItem?.item?.content;\n\n if (!documentDefinitionName) {\n return;\n }\n\n this.selectedDocumentDefinition$.next(documentDefinitionName);\n this.documentDefinition.setValue(documentDefinitionName);\n }\n\n public conditionsValueChange(index: number, values: MultiInputValues): void {\n const currentQueryItemsValues = this.queryItems.value;\n\n if (isEqual(currentQueryItemsValues[index].queryConditions, values)) return;\n\n this.queryItems.patchValue(\n currentQueryItemsValues.map((item, itemIndex) =>\n itemIndex === index ? {...item, queryConditions: values} : item\n )\n );\n }\n\n public labelValueChange(index: number, value: string): void {\n const currentQueryItemsValues = this.queryItems.value;\n\n if (currentQueryItemsValues[index].label === value) return;\n\n this.queryItems.patchValue(\n currentQueryItemsValues.map((item, itemIndex) =>\n itemIndex === index ? {...item, label: value} : item\n )\n );\n }\n\n public addQueryItem(): void {\n const currentQueryItems = this.queryItems.value;\n this.queryItems.patchValue([...currentQueryItems, this._EMPTY_QUERY_ITEM_VALUE]);\n }\n\n public deleteCount(i: number): void {\n const currentQueryItems = this.queryItems.value;\n this.queryItems.patchValue(currentQueryItems.filter((_, index) => index !== i));\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: {\n documentDefinition: formValue?.documentDefinition,\n queryItems: this.multiInputValuesToQueryItems(formValue.queryItems),\n } as CaseCountsConfiguration,\n });\n })\n );\n }\n\n private queryItemsToMultiInputValues(\n queryItems: CaseCountsQueryItem[]\n ): CaseCountsQueryItemForm[] {\n return queryItems.map(queryItem => ({\n ...queryItem,\n queryConditions: queryItem.queryConditions.map(condition => ({\n key: condition.queryPath,\n dropdown: condition.queryOperator,\n value: condition.queryValue,\n })),\n }));\n }\n\n private multiInputValuesToQueryItems(\n multiInputValues: CaseCountsQueryItemForm[]\n ): CaseCountsQueryItem[] {\n return multiInputValues.map(queryItem => ({\n ...queryItem,\n queryConditions: queryItem.queryConditions.map(condition => ({\n queryPath: condition.key,\n queryOperator: condition.dropdown,\n queryValue: condition.value,\n })),\n }));\n }\n\n private queryItemsValidator(): ValidatorFn {\n return (control: AbstractControl<CaseCountsQueryItemForm[]>): ValidationErrors | null => {\n const queryItems = control.value;\n const validQueryItems = queryItems.filter(item => {\n const validLabel = !!item.label;\n const validConditions = item.queryConditions.filter(\n condition => !!condition.value && !!condition.key && !!condition.dropdown\n );\n\n return (\n validLabel &&\n validConditions.length > 0 &&\n item.queryConditions.length === validConditions.length\n );\n });\n\n return validQueryItems.length > 1 && validQueryItems.length === queryItems.length\n ? null\n : {\n invalidQueryItems: 'invalid',\n };\n };\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form\n class=\"case-counts-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\n queryItemsValue: queryItemsValue$ | async,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n } as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"documentDefinition\"\n [helperText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"documentDefinition.dirty && documentDefinition.invalid\"\n [label]=\"'documentDefinition' | widgetTranslate: dataSourceKey | async\"\n (selected)=\"documentDefinitionSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs?.documentItems || []\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <cds-label class=\"conditions__label\">{{\n 'counts' | widgetTranslate: dataSourceKey | async\n }}</cds-label>\n\n <p class=\"conditions__helper-text cds--form__helper-text\">\n {{ 'countsHelperText' | widgetTranslate: dataSourceKey | async }}\n </p>\n\n @for (_ of queryItemsList$ | async; track $index; let i = $index) {\n <cds-tile class=\"count-tile\" [cdsLayer]=\"1\">\n <div class=\"count-tile__input\" [cdsLayer]=\"0\">\n <v-input\n [title]=\"'countTitle' | widgetTranslate: dataSourceKey | async\"\n [margin]=\"true\"\n [defaultValue]=\"obs.queryItemsValue[i]?.label\"\n [disabled]=\"formDisabled\"\n [required]=\"true\"\n [fullWidth]=\"true\"\n (valueChange)=\"labelValueChange(i, $event)\"\n >\n </v-input>\n\n <valtimo-carbon-multi-input\n type=\"valuePathSelectorDropdownValue\"\n [disabled]=\"formDisabled\"\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"obs.queryItemsValue[i]?.queryConditions\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"1\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"1\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n valuePathSelectorNotation=\"dots\"\n [valuePathSelectorPrefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [valuePathSelectorShowCaseDefinitionSelector]=\"false\"\n [valuePathSelectorCaseDefinitionKey]=\"obs.selectedDocumentDefinition\"\n [keyColumnFlex]=\"2\"\n [dropdownColumnFlex]=\"1\"\n [valueColumnFlex]=\"1\"\n (valueChange)=\"conditionsValueChange(i, $event)\"\n ></valtimo-carbon-multi-input>\n </div>\n\n <div class=\"count-tile__delete-button\">\n <cds-icon-button\n [disabled]=\"formDisabled || i < 2\"\n (click)=\"deleteCount(i)\"\n kind=\"danger\"\n size=\"sm\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n </cds-tile>\n }\n\n <button\n class=\"add-count-button\"\n cdsButton=\"primary\"\n [disabled]=\"formDisabled\"\n (click)=\"addQueryItem()\"\n >\n {{ 'Aantal toevoegen' }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './case-counts-configuration.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './case-counts-configuration';\n","/*\n * Copyright 2015-2025 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 {QueryCondition} from '../../../models';\nimport {MultiInputValues} from '@valtimo/components';\n\ninterface CaseCountsQueryItem {\n label: string;\n queryConditions: QueryCondition[];\n}\n\ninterface CaseCountsConfiguration {\n documentDefinition: string;\n queryItems: CaseCountsQueryItem[];\n}\n\ninterface CaseCountsQueryItemForm {\n label: string;\n queryConditions: MultiInputValues;\n}\n\nexport {CaseCountsConfiguration, CaseCountsQueryItemForm, CaseCountsQueryItem};\n","/*\n * Copyright 2015-2025 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\nexport * from './case-counts.model';\n","/*\n * Copyright 2015-2025 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 {DataSourceSpecification} from '../../models';\nimport {CaseCountsConfigurationComponent} from './components';\nimport {CONDITIONS_HELPER_TEXTS} from '../shared';\n\nexport const caseCountsDataSourceSpecification: DataSourceSpecification = {\n dataSourceKey: 'case-counts',\n configurationComponent: CaseCountsConfigurationComponent,\n translations: {\n de: {\n title: 'Mehrere Fallanzahllen',\n documentDefinition: 'Falltyp (erforderlich)',\n documentDefinitionHelperText: 'Der Falltyp, für den die Anzahllen abgeruft wirden',\n path: 'Pfad',\n operator: 'Operator',\n value: 'Wert',\n counts: 'Anzahllen',\n countsHelperText: `Geben Sie eine oder mehrere Bedingungen für jede anzuzeigende Zählung an. Konfigurieren Sie mindestens zwei Zählungen und mindestens eine Bedingung pro Zählung. ${CONDITIONS_HELPER_TEXTS.DE()}`,\n addCondition: 'Bedingung hinzufügen',\n countTitle: 'Anzahltitel',\n },\n en: {\n title: 'Multiple case counts',\n documentDefinition: 'Case type (required)',\n documentDefinitionHelperText: 'The case type for which the counts are retrieved',\n path: 'Path (required)',\n operator: 'Operator',\n value: 'Value',\n counts: 'Counts',\n countsHelperText: `Specify one or more conditions for each count that should be displayed. Configure at least two counts and at least one condition per count. ${CONDITIONS_HELPER_TEXTS.EN()}`,\n addCondition: 'Add condition',\n countTitle: 'Count title',\n },\n nl: {\n title: 'Meerdere dossieraantallen',\n documentDefinition: 'Dossiertype (vereist)',\n documentDefinitionHelperText: 'Het dossiertype waarvoor de aantallen worden opgehaald',\n path: 'Pad',\n operator: 'Operator',\n value: 'Waarde',\n counts: 'Aantallen',\n countsHelperText: `Geef een of meer condities op voor elk aantal dat moet worden weergegeven. Configureer minimaal twee aantallen en minimaal één conditie per aantal. ${CONDITIONS_HELPER_TEXTS.NL()}`,\n addCondition: 'Conditie toevoegen',\n countTitle: 'Aantaltitel',\n },\n },\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DATA_SOURCE_TOKEN} from '../../constants';\nimport {CaseCountsConfigurationComponent} from './components';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {\n ButtonModule,\n DropdownModule,\n IconModule,\n LayerModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {CarbonMultiInputModule, InputModule} from '@valtimo/components';\nimport {caseCountsDataSourceSpecification} from './case-counts.specification';\n\n@NgModule({\n declarations: [CaseCountsConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n DropdownModule,\n CarbonMultiInputModule,\n InputModule,\n ButtonModule,\n TilesModule,\n LayerModule,\n IconModule,\n ],\n exports: [CaseCountsConfigurationComponent],\n providers: [\n {provide: DATA_SOURCE_TOKEN, useValue: caseCountsDataSourceSpecification, multi: true},\n ],\n})\nexport class CaseCountsDataSourceModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './components';\nexport * from './models';\nexport * from './case-counts.module';\nexport * from './case-counts.specification';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n ConfigurationOutput,\n DataSourceConfigurationComponent,\n QueryCondition,\n} from '../../../../models';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, Subscription} from 'rxjs';\nimport {\n AbstractControl,\n FormBuilder,\n ValidationErrors,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {\n CaseGroupByConfiguration,\n CaseGroupByConfigurationFormValue,\n CaseGroupByEnum,\n} from '../../models';\nimport {DocumentService} from '@valtimo/document';\nimport {ListItem} from 'carbon-components-angular';\nimport {ListItemWithId, MultiInputValues, ValuePathSelectorPrefix} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {isEqual} from 'lodash';\nimport {Operator} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './case-group-by-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./case-group-by-configuration.component.scss'],\n})\nexport class CaseGroupByConfigurationComponent\n implements OnInit, OnDestroy, DataSourceConfigurationComponent\n{\n @Input() public dataSourceKey: string;\n\n public readonly form = this.fb.group({\n documentDefinition: this.fb.control(null, [Validators.required]),\n path: this.fb.control(null, [Validators.required]),\n queryConditions: this.fb.control([], [this.queryConditionsValidator()]),\n enum: this.fb.control([], [this.enumValidator()]),\n });\n\n public get documentDefinition(): AbstractControl<string> {\n return this.form.get('documentDefinition');\n }\n\n public get path(): AbstractControl<string> {\n return this.form.get('path');\n }\n\n public get queryConditions(): AbstractControl<MultiInputValues> {\n return this.form.get('queryConditions');\n }\n\n public get enum(): AbstractControl<MultiInputValues> {\n return this.form.get('enum');\n }\n\n public get formDisabled(): boolean {\n return this.form.disabled;\n }\n\n public get formValue$(): Observable<Partial<CaseGroupByConfigurationFormValue>> {\n return this.form.valueChanges.pipe(startWith(this.form.value));\n }\n\n @Input() public set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n public readonly selectedDocumentDefinition$ = new BehaviorSubject<string>('');\n\n public readonly documentItems$: Observable<Array<ListItem>> = combineLatest([\n this.documentService.getAllDefinitions(),\n this.selectedDocumentDefinition$,\n ]).pipe(\n map(([documentDefinitions, selectedDocumentDefintion]) =>\n documentDefinitions.content.map(definition => ({\n content: definition.id.name,\n selected: definition.id.name === selectedDocumentDefintion,\n }))\n )\n );\n\n private readonly _OPERATORS: Array<Operator> = [\n Operator.NOT_EQUAL_TO,\n Operator.EQUAL_TO,\n Operator.GREATER_THAN,\n Operator.GREATER_THAN_OR_EQUAL_TO,\n Operator.LESS_THAN,\n Operator.LESS_THAN_OR_EQUAL_TO,\n ];\n\n public readonly operatorItems$: Observable<Array<ListItemWithId>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this._OPERATORS.map(operator => ({\n id: operator,\n content: this.translateService.instant('condition.operator.' + operator),\n selected: false,\n }))\n )\n );\n\n @Input() set prefillConfiguration(configurationValue: CaseGroupByConfiguration) {\n if (!configurationValue) return;\n\n this.documentDefinitionSelected({\n item: {\n content: configurationValue.documentDefinition,\n },\n } as any);\n\n this.queryConditions.patchValue(\n this.queryConditionsToMultiInputValues(configurationValue.queryConditions)\n );\n this.enum.patchValue(this.enumToMultiInputValues(configurationValue.enum));\n this.path.patchValue(configurationValue.path);\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<CaseGroupByConfiguration>\n >();\n\n public readonly ValuePathSelectorPrefix = ValuePathSelectorPrefix;\n\n private _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public documentDefinitionSelected(documentDefinitionItem: ListItem): void {\n const documentDefinitionName = documentDefinitionItem?.item?.content;\n\n if (!documentDefinitionName) {\n return;\n }\n\n this.selectedDocumentDefinition$.next(documentDefinitionName);\n this.documentDefinition.setValue(documentDefinitionName);\n }\n\n public conditionsValueChange(values: MultiInputValues): void {\n if (!values) return;\n\n const currentValue = this.queryConditions.value;\n\n if (isEqual(values, currentValue)) return;\n\n this.queryConditions.patchValue(values);\n }\n\n public enumValueChange(values: MultiInputValues): void {\n if (!values) return;\n\n const currentValue = this.enum.value;\n\n if (isEqual(values, currentValue)) return;\n\n this.enum.patchValue(values);\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {\n this.configurationEvent.emit({\n valid: this.form.valid,\n data: {\n ...formValue,\n queryConditions: this.multiInputValuesToQueryConditions(formValue.queryConditions),\n enum: this.multiInputValuesToEnum(formValue.enum),\n } as CaseGroupByConfiguration,\n });\n })\n );\n }\n\n private queryConditionsValidator(): ValidatorFn {\n return (control: AbstractControl<MultiInputValues>): ValidationErrors | null => {\n const queryConditions = control.value;\n const validConditions = queryConditions.filter(\n condition => !!condition.value && !!condition.key && !!condition.dropdown\n );\n\n return validConditions.length === queryConditions.length\n ? null\n : {\n invalidQueryItems: 'invalid',\n };\n };\n }\n\n private enumValidator(): ValidatorFn {\n return (control: AbstractControl<MultiInputValues>): ValidationErrors | null => {\n const enumeration = control.value || [];\n const enumLength = enumeration.length;\n const validEnumKeysLength = enumeration.filter(entry => !!entry.key).length;\n const validEnumValuesLength = enumeration.filter(entry => !!entry.value).length;\n\n return enumLength === validEnumKeysLength && enumLength === validEnumValuesLength\n ? null\n : {\n invalidEnum: 'invalid',\n };\n };\n }\n\n private enumToMultiInputValues(enumeration?: CaseGroupByEnum): MultiInputValues {\n return Object.keys(enumeration || {}).reduce(\n (acc, key) => [...acc, {key, value: enumeration[key]}],\n []\n );\n }\n\n private multiInputValuesToEnum(values?: MultiInputValues): CaseGroupByEnum {\n return (values || []).reduce((acc, curr) => ({...acc, [curr.key]: curr.value}), {});\n }\n\n private queryConditionsToMultiInputValues(queryConditions?: QueryCondition[]): MultiInputValues {\n return (queryConditions || []).map(condition => ({\n key: condition.queryPath,\n dropdown: condition.queryOperator,\n value: condition.queryValue,\n }));\n }\n\n private multiInputValuesToQueryConditions(values?: MultiInputValues): QueryCondition[] {\n return (values || []).map(condition => ({\n queryPath: condition.key,\n queryOperator: condition.dropdown,\n queryValue: condition.value,\n }));\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form\n class=\"case-count-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\n selectedDocumentDefinition: selectedDocumentDefinition$ | async,\n formValue: formValue$ | async,\n } as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element\">\n <cds-dropdown\n [appendInline]=\"true\"\n formControlName=\"documentDefinition\"\n [helperText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'documentDefinitionHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"documentDefinition.dirty && documentDefinition.invalid\"\n [label]=\"'documentDefinition' | widgetTranslate: dataSourceKey | async\"\n (selected)=\"documentDefinitionSelected($event)\"\n >\n <cds-dropdown-list [items]=\"obs?.documentItems || []\" type=\"multi\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'pathHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'pathHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"full-width\"\n >\n {{ 'path' | widgetTranslate: dataSourceKey | async }}\n\n <valtimo-value-path-selector\n formControlName=\"path\"\n [caseDefinitionKey]=\"obs.selectedDocumentDefinition\"\n [prefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n ></valtimo-value-path-selector>\n </cds-label>\n </div>\n\n <div class=\"form__element conditions-multi-input\">\n <cds-label\n [helperText]=\"'conditionsHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"conditions-label\"\n >{{ 'conditions' | widgetTranslate: dataSourceKey | async }}</cds-label\n >\n <valtimo-carbon-multi-input\n type=\"valuePathSelectorDropdownValue\"\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"obs.formValue?.queryConditions\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"0\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"0\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n valuePathSelectorNotation=\"dots\"\n [valuePathSelectorPrefixes]=\"[ValuePathSelectorPrefix.DOC, ValuePathSelectorPrefix.CASE]\"\n [valuePathSelectorShowCaseDefinitionSelector]=\"false\"\n [valuePathSelectorCaseDefinitionKey]=\"obs.selectedDocumentDefinition\"\n [keyColumnFlex]=\"2\"\n [dropdownColumnFlex]=\"1\"\n [valueColumnFlex]=\"1\"\n (valueChange)=\"conditionsValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </div>\n\n <div class=\"form__element conditions-multi-input\">\n <cds-label\n [helperText]=\"'enumHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"conditions-label\"\n >{{ 'enum' | widgetTranslate: dataSourceKey | async }}</cds-label\n >\n <valtimo-carbon-multi-input\n [addRowText]=\"'addDisplay' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"obs.formValue?.enum\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"0\"\n [keyColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"0\"\n [valueColumnTitle]=\"'displayValue' | widgetTranslate: dataSourceKey | async\"\n type=\"keyValue\"\n (valueChange)=\"enumValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './case-group-by-configuration.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './case-group-by-configuration';\n","/*\n * Copyright 2015-2025 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 {QueryCondition} from '../../../models';\nimport {MultiInputValues} from '@valtimo/components';\n\ntype CaseGroupByEnum = {[key: string]: string};\n\ninterface CaseGroupByConfiguration {\n documentDefinition: string;\n path: string;\n queryConditions?: QueryCondition[];\n enum?: CaseGroupByEnum;\n}\n\ninterface CaseGroupByConfigurationFormValue {\n documentDefinition: string;\n path: string;\n queryConditions?: MultiInputValues;\n enum?: MultiInputValues;\n}\n\nexport {CaseGroupByConfiguration, CaseGroupByEnum, CaseGroupByConfigurationFormValue};\n","/*\n * Copyright 2015-2025 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\nexport * from './case-group-by.model';\n","/*\n * Copyright 2015-2025 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 {DataSourceSpecification} from '../../models';\nimport {CaseGroupByConfigurationComponent} from './components';\nimport {CONDITIONS_HELPER_TEXTS} from '../shared';\n\nexport const caseGroupByDataSourceSpecification: DataSourceSpecification = {\n dataSourceKey: 'case-group-by',\n configurationComponent: CaseGroupByConfigurationComponent,\n translations: {\n de: {\n title: 'Gruppe',\n documentDefinition: 'Falltyp (erforderlich)',\n documentDefinitionHelperText: 'Der Falltyp, für den die Anzahl abgerufen wird',\n path: 'Pfad',\n pathHelperText: 'Der Pfad innerhalb der Fall, deren Werte gruppiert werden sollen',\n operator: 'Operator',\n value: 'Wert',\n conditions: 'Bedingungen',\n conditionsHelperText: `Geben Sie optionale Bedingungen an, um die Gruppierung für den ausgewählten Falltyp abzurufen. ${CONDITIONS_HELPER_TEXTS.DE()}`,\n addCondition: 'Bedingung hinzufügen',\n enum: 'Anzeige der Werte',\n enumHelperText:\n \"Einige Werte aus der Datenbank sind für den Endbenutzer nicht lesbar. Geben Sie hier an, wie die Werte angezeigt werden sollen. Beispiel: Wert: 'anfrage-gesendet', Anzeige: 'Anfrage gesendet'.\",\n displayValue: 'Anzeige',\n addDisplay: 'Ansicht hinzufügen',\n },\n en: {\n title: 'Group by',\n documentDefinition: 'Case type (required)',\n documentDefinitionHelperText: 'The case type for which the count is retrieved',\n path: 'Path (required)',\n pathHelperText: 'The path within the case of which the values should be grouped',\n operator: 'Operator',\n value: 'Value',\n conditions: 'Conditions',\n conditionsHelperText: `Specify optional conditions for retrieving the grouping for the selected case type. ${CONDITIONS_HELPER_TEXTS.EN()}`,\n addCondition: 'Add condition',\n enum: 'Display of values',\n enumHelperText:\n \"Some values from the database will not be readable by the end user. Specify here how the values should be displayed. For example: Value: 'request-sent', Display: 'Request sent'.\",\n displayValue: 'Display',\n addDisplay: 'Add display',\n },\n nl: {\n title: 'Groepering',\n documentDefinition: 'Dossiertype (vereist)',\n documentDefinitionHelperText: 'Het dossiertype waarvoor de telling wordt opgehaald',\n path: 'Pad',\n pathHelperText: 'Het pad binnen het dossier waarvan de waardes gegroepeerd moeten worden',\n operator: 'Operator',\n value: 'Waarde',\n conditions: 'Condities',\n conditionsHelperText: `Geef optionele condities op voor het ophalen van de groepering voor het geselecteerde dossiertype. ${CONDITIONS_HELPER_TEXTS.NL()}`,\n addCondition: 'Conditie toevoegen',\n enum: 'Weergave van waardes',\n enumHelperText:\n \"Sommige waardes uit de database zullen niet leesbaar zijn voor de eindgebruiker. Geef hier op hoe de waardes weergegeven moeten worden. Bijvoorbeeld: Waarde: 'aanvraag-verzonden', Weergave: 'Aanvraag verzonden'.\",\n displayValue: 'Weergave',\n addDisplay: 'Weergave toevoegen',\n },\n },\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DATA_SOURCE_TOKEN} from '../../constants';\nimport {caseGroupByDataSourceSpecification} from './case-group-by.specification';\nimport {CaseGroupByConfigurationComponent} from './components';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {DropdownModule, InputModule} from 'carbon-components-angular';\nimport {CarbonMultiInputModule, ValuePathSelectorComponent} from '@valtimo/components';\n\n@NgModule({\n declarations: [CaseGroupByConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n DropdownModule,\n CarbonMultiInputModule,\n ValuePathSelectorComponent,\n ],\n exports: [CaseGroupByConfigurationComponent],\n providers: [\n {provide: DATA_SOURCE_TOKEN, useValue: caseGroupByDataSourceSpecification, multi: true},\n ],\n})\nexport class CaseGroupByDataSourceModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './components';\nexport * from './models';\nexport * from './case-group-by.module';\nexport * from './case-group-by.specification';\n","/*\n * Copyright 2015-2025 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 OnDestroy,\n OnInit,\n Output,\n} from '@angular/core';\nimport {\n ConfigurationOutput,\n DataSourceConfigurationComponent,\n QueryCondition,\n} from '../../../../models';\nimport {BehaviorSubject, combineLatest, map, Observable, startWith, Subscription} from 'rxjs';\nimport {AbstractControl, FormBuilder} from '@angular/forms';\nimport {TaskCountConfiguration} from '../../models';\nimport {ListItemWithId, MultiInputKeyValue, MultiInputValues} from '@valtimo/components';\nimport {TranslateService} from '@ngx-translate/core';\nimport {Operator} from '@valtimo/shared';\n\n@Component({\n standalone: false,\n templateUrl: './task-count-configuration.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrls: ['./task-count-configuration.component.scss'],\n})\nexport class TaskCountConfigurationComponent\n implements OnInit, OnDestroy, DataSourceConfigurationComponent\n{\n @Input() public dataSourceKey: string;\n\n public readonly form = this.fb.group({\n queryConditions: this.fb.control(null),\n });\n\n @Input() public set disabled(disabledValue: boolean) {\n if (disabledValue) {\n this.form.disable();\n } else {\n this.form.enable();\n }\n }\n\n private readonly _OPERATORS: Array<Operator> = [\n Operator.NOT_EQUAL_TO,\n Operator.EQUAL_TO,\n Operator.GREATER_THAN,\n Operator.GREATER_THAN_OR_EQUAL_TO,\n Operator.LESS_THAN,\n Operator.LESS_THAN_OR_EQUAL_TO,\n ];\n\n public readonly operatorItems$: Observable<Array<ListItemWithId>> = this.translateService\n .stream('key')\n .pipe(\n map(() =>\n this._OPERATORS.map(operator => ({\n id: operator,\n content: this.translateService.instant('condition.operator.' + operator),\n selected: false,\n }))\n )\n );\n\n public readonly defaultConditionValues$ = new BehaviorSubject<MultiInputValues | null>(null);\n public readonly allConditionsValid$ = new BehaviorSubject<boolean>(true);\n\n public get queryConditions(): AbstractControl<QueryCondition[]> {\n return this.form.get('queryConditions');\n }\n\n @Input() set prefillConfiguration(configurationValue: TaskCountConfiguration) {\n if (configurationValue) {\n this.defaultConditionValues$.next(\n configurationValue.queryConditions.map(condition => ({\n key: condition.queryPath,\n dropdown: condition.queryOperator,\n value: condition.queryValue,\n }))\n );\n }\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<TaskCountConfiguration>\n >();\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly fb: FormBuilder,\n private readonly translateService: TranslateService\n ) {}\n\n public ngOnInit(): void {\n this.openFormSubscription();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public conditionsValueChange(values: Array<MultiInputKeyValue>): void {\n if (values.length === 0) {\n this.queryConditions.setValue(null);\n } else {\n this.queryConditions.setValue(\n values.map(value => ({\n queryPath: value.key,\n queryOperator: value.dropdown,\n queryValue: value.value,\n }))\n );\n }\n }\n\n public onAllConditionsValid(allConditionsValid: boolean): void {\n this.allConditionsValid$.next(allConditionsValid);\n }\n\n private openFormSubscription(): void {\n this._subscriptions.add(\n combineLatest([\n this.form.valueChanges.pipe(startWith(this.form.value)),\n this.allConditionsValid$,\n ]).subscribe(([formValue, allConditionsValid]) => {\n this.configurationEvent.emit({\n valid: this.form.valid && allConditionsValid,\n data: formValue as TaskCountConfiguration,\n });\n })\n );\n }\n}\n","<!--\n ~ Copyright 2015-2025 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<form\n class=\"task-count-configuration-form\"\n *ngIf=\"{operatorItems: operatorItems$} as obs\"\n [formGroup]=\"form\"\n>\n <div class=\"form__element conditions-multi-input\">\n <cds-label\n [helperText]=\"'conditionsHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"conditions-label\"\n >{{ 'conditions' | widgetTranslate: dataSourceKey | async }}</cds-label\n >\n <valtimo-carbon-multi-input\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [defaultValues]=\"defaultConditionValues$ | async\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems$ | async\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"0\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n [minimumAmountOfRows]=\"0\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n type=\"keyDropdownValue\"\n (allValuesValidEvent)=\"onAllConditionsValid($event)\"\n (valueChange)=\"conditionsValueChange($event)\"\n ></valtimo-carbon-multi-input>\n </div>\n</form>\n","/*\n * Copyright 2015-2025 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\nexport * from './task-count-configuration.component';\n","/*\n * Copyright 2015-2025 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\nexport * from './task-count-configuration';\n","/*\n * Copyright 2015-2025 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 {QueryCondition} from '../../../models';\n\ninterface TaskCountConfiguration {\n queryConditions: QueryCondition[];\n}\n\nexport {TaskCountConfiguration};\n","/*\n * Copyright 2015-2025 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\nexport * from './task-count.model';\n","/*\n * Copyright 2015-2025 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 {DataSourceSpecification} from '../../models';\nimport {CONDITIONS_HELPER_TEXTS} from '../shared';\nimport {TaskCountConfigurationComponent} from './components';\n\nexport const taskCountSpecification: DataSourceSpecification = {\n dataSourceKey: 'task-count',\n configurationComponent: TaskCountConfigurationComponent,\n translations: {\n de: {\n title: 'Aufgabenanzahl',\n path: 'Pfad',\n operator: 'Operator',\n value: 'Wert',\n conditions: 'Bedingungen',\n conditionsHelperText: `Geben Sie optionale Bedingungen zum Abrufen der Anzahl der Aufgaben. ${CONDITIONS_HELPER_TEXTS.DE('task:assignee')}`,\n addCondition: 'Bedingung hinzufügen',\n },\n en: {\n title: 'Task count',\n path: 'Path (required)',\n operator: 'Operator',\n value: 'Value',\n conditions: 'Conditions',\n conditionsHelperText: `Specify optional conditions for retrieving the number of tasks. ${CONDITIONS_HELPER_TEXTS.EN('task:assignee')}`,\n addCondition: 'Add condition',\n },\n nl: {\n title: 'Aantal taken',\n path: 'Pad',\n operator: 'Operator',\n value: 'Waarde',\n conditions: 'Condities',\n conditionsHelperText: `Geef optionele condities op voor het ophalen van het aantal taken. ${CONDITIONS_HELPER_TEXTS.NL('task:assignee')}}`,\n addCondition: 'Conditie toevoegen',\n },\n },\n};\n","/*\n * Copyright 2015-2025 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 {CommonModule} from '@angular/common';\nimport {DATA_SOURCE_TOKEN} from '../../constants';\nimport {taskCountSpecification} from './task-count.specification';\nimport {TaskCountConfigurationComponent} from './components';\nimport {ReactiveFormsModule} from '@angular/forms';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {DropdownModule, InputModule} from 'carbon-components-angular';\nimport {CarbonMultiInputModule} from '@valtimo/components';\n\n@NgModule({\n declarations: [TaskCountConfigurationComponent],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n WidgetTranslatePipeModule,\n InputModule,\n DropdownModule,\n CarbonMultiInputModule,\n ],\n exports: [TaskCountConfigurationComponent],\n providers: [{provide: DATA_SOURCE_TOKEN, useValue: taskCountSpecification, multi: true}],\n})\nexport class TaskCountDataSourceModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './components';\nexport * from './models';\nexport * from './task-count.module';\nexport * from './task-count.specification';\n","/*\n * Copyright 2015-2025 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 {CaseCountDataSourceModule} from './case-count';\nimport {CaseCountsDataSourceModule} from './case-counts';\nimport {CaseGroupByDataSourceModule} from './case-group-by';\nimport {TaskCountDataSourceModule} from './task-count';\n\n@NgModule({\n imports: [\n CaseCountDataSourceModule,\n CaseCountsDataSourceModule,\n CaseGroupByDataSourceModule,\n TaskCountDataSourceModule,\n ],\n})\nexport class DataSourcesModule {}\n","/*\n * Copyright 2015-2025 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 {RouterModule, Routes} from '@angular/router';\nimport {ROLE_USER} from '@valtimo/shared';\nimport {AuthGuardService} from '@valtimo/security';\nimport {WidgetDashboardComponent} from './components/widget-dashboard/widget-dashboard.component';\n\nconst routes: Routes = [\n {\n path: '',\n component: WidgetDashboardComponent,\n canActivate: [AuthGuardService],\n data: {title: 'Dashboard', roles: [ROLE_USER], hidePageTitle: true},\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [CommonModule, RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class DashboardRoutingModule {}\n","/*\n * Copyright 2015-2025 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 {HttpClient} from '@angular/common/http';\nimport {NgModule} from '@angular/core';\nimport {TranslateLoader, TranslateModule} from '@ngx-translate/core';\nimport {TranslateHttpLoader} from '@ngx-translate/http-loader';\nimport {\n AlertModule,\n BpmnJsDiagramModule,\n CarbonListModule,\n SpinnerModule,\n WidgetModule,\n} from '@valtimo/components';\nimport {TaskModule} from '@valtimo/task';\nimport {LoadingModule, TabsModule, ThemeModule} from 'carbon-components-angular';\nimport {DashboardComponent} from './components/dashboard/dashboard.component';\nimport {WidgetDashboardContentComponent} from './components/widget-dashboard-content/widget-dashboard-content.component';\nimport {WidgetDashboardComponent} from './components/widget-dashboard/widget-dashboard.component';\nimport {DATA_SOURCE_TOKEN, DISPLAY_TYPE_TOKEN} from './constants';\nimport {DashboardRoutingModule} from './dashboard-routing.module';\nimport {WidgetTranslatePipeModule} from './pipes';\nimport {DisplayWidgetTypesModule} from './display-types/display-widget-types.module';\nimport {DataSourcesModule} from './data-sources/data-sources.module';\n\n// AoT requires an exported function for factories\nexport function HttpLoaderFactory(httpClient: HttpClient) {\n return new TranslateHttpLoader(httpClient);\n}\n\n@NgModule({\n declarations: [DashboardComponent, WidgetDashboardComponent, WidgetDashboardContentComponent],\n imports: [\n CommonModule,\n DashboardRoutingModule,\n WidgetModule,\n BpmnJsDiagramModule,\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient],\n },\n }),\n AlertModule,\n TaskModule,\n SpinnerModule,\n TabsModule,\n ThemeModule,\n WidgetTranslatePipeModule,\n LoadingModule,\n CarbonListModule,\n DisplayWidgetTypesModule,\n DataSourcesModule,\n ],\n exports: [DashboardComponent, WidgetDashboardComponent],\n providers: [\n {provide: DISPLAY_TYPE_TOKEN, useValue: null, multi: true},\n {provide: DATA_SOURCE_TOKEN, useValue: null, multi: true},\n ],\n})\nexport class DashboardModule {}\n","/*\n * Copyright 2015-2025 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\nexport * from './case-count';\nexport * from './case-counts';\nexport * from './case-group-by';\nexport * from './task-count';\n","/*\n * Copyright 2015-2025 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\nexport * from './big-number';\nexport * from './donut';\nexport * from './gauge';\nexport * from './meter';\n","/*\n * Copyright 2015-2025 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\n */\n\nexport * from './lib/components/dashboard/dashboard.component';\nexport * from './lib/components/widget-dashboard-content/widget-dashboard-content.component';\nexport * from './lib/components/widget-dashboard/widget-dashboard.component';\nexport * from './lib/display-types/display-widget-types.module';\nexport * from './lib/data-sources/data-sources.module';\nexport * from './lib/constants';\nexport * from './lib/dashboard.module';\nexport * from './lib/data-sources';\nexport * from './lib/display-types';\nexport * from './lib/models';\nexport * from './lib/pipes';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i4","i5","i1","i2","map","i2.WidgetService","i1.WidgetLayoutService","i3","i6","i7","i1.DashboardService","i2.WidgetApiService","i6.WidgetDashboardContentComponent","i1.WidgetTranslationService","i4.WidgetTranslatePipe","i7.WidgetTranslatePipe","InputModule","i6.WidgetTranslatePipe"],"mappings":"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"}