@valtimo/dashboard 13.45.1 → 13.47.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.
Files changed (26) hide show
  1. package/fesm2022/valtimo-dashboard.mjs +502 -74
  2. package/fesm2022/valtimo-dashboard.mjs.map +1 -1
  3. package/lib/data-sources/task-count/components/index.d.ts +1 -0
  4. package/lib/data-sources/task-count/components/index.d.ts.map +1 -1
  5. package/lib/data-sources/task-count/components/task-count-condition-group/index.d.ts +2 -0
  6. package/lib/data-sources/task-count/components/task-count-condition-group/index.d.ts.map +1 -0
  7. package/lib/data-sources/task-count/components/task-count-condition-group/task-count-condition-group.component.d.ts +68 -0
  8. package/lib/data-sources/task-count/components/task-count-condition-group/task-count-condition-group.component.d.ts.map +1 -0
  9. package/lib/data-sources/task-count/components/task-count-configuration/task-count-configuration.component.d.ts +43 -18
  10. package/lib/data-sources/task-count/components/task-count-configuration/task-count-configuration.component.d.ts.map +1 -1
  11. package/lib/data-sources/task-count/constants/index.d.ts +2 -0
  12. package/lib/data-sources/task-count/constants/index.d.ts.map +1 -0
  13. package/lib/data-sources/task-count/constants/task-count.test-ids.d.ts +11 -0
  14. package/lib/data-sources/task-count/constants/task-count.test-ids.d.ts.map +1 -0
  15. package/lib/data-sources/task-count/models/task-count.model.d.ts +50 -3
  16. package/lib/data-sources/task-count/models/task-count.model.d.ts.map +1 -1
  17. package/lib/data-sources/task-count/task-count.module.d.ts +2 -1
  18. package/lib/data-sources/task-count/task-count.module.d.ts.map +1 -1
  19. package/lib/data-sources/task-count/task-count.specification.d.ts.map +1 -1
  20. package/lib/data-sources/task-count/utils/index.d.ts +2 -0
  21. package/lib/data-sources/task-count/utils/index.d.ts.map +1 -0
  22. package/lib/data-sources/task-count/utils/task-count-conditions.utils.d.ts +27 -0
  23. package/lib/data-sources/task-count/utils/task-count-conditions.utils.d.ts.map +1 -0
  24. package/lib/models/data-source.model.d.ts +40 -1
  25. package/lib/models/data-source.model.d.ts.map +1 -1
  26. package/package.json +1 -1
@@ -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/dashboard.test-ids.ts","../../../../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 (dueDateChanged)=\"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-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 const DASHBOARD_TEST_IDS = {\n /** Wrapper around the whole user-facing dashboard view. */\n container: 'dashboardContainer',\n /** Title shown when the user has access to exactly one dashboard. */\n title: 'dashboardTitle',\n /** Empty state shown when the user has access to no dashboards at all. */\n noDashboards: 'dashboardNoDashboards',\n /** Grid that holds the rendered widgets of the selected dashboard. */\n widgetContainer: 'dashboardWidgetContainer',\n /** Empty state shown when the selected dashboard has no (supported) widgets. */\n noWidgets: 'dashboardNoWidgets',\n /** Spinner shown while the widget data of the selected dashboard is loading. */\n loading: 'dashboardLoading',\n} as const;\n\n/**\n * Prefix for a single rendered widget on the user-facing dashboard. The full test id\n * is `dashboardWidget-<widget key>`, e.g. `dashboardWidget-gauge_chart`.\n *\n * Only widgets whose `displayType` is registered in the frontend are rendered, so a\n * widget with an unsupported display type has no element and therefore no test id.\n */\nexport const DASHBOARD_WIDGET_TEST_ID_PREFIX = 'dashboardWidget-';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './dashboard.test-ids';\nexport * from './data-features.constants';\nexport * from './injection-tokens';\nexport * from './layout.constants';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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(400))\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 {resolveWidgetLayout, ResolvedWidgetLayout} from '@valtimo/components';\nimport {\n DASHBOARD_TEST_IDS,\n DASHBOARD_WIDGET_TEST_ID_PREFIX,\n WIDGET_1X_HEIGHT,\n} 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._resolvedLayout = resolveWidgetLayout(value?.widgetLayout);\n this.setWidgetConfigurations(value);\n }\n\n private _resolvedLayout: ResolvedWidgetLayout = resolveWidgetLayout(null);\n\n public readonly widgetConfigurations$ =\n new BehaviorSubject<Array<DashboardWidgetConfiguration> | null>(null);\n\n public readonly testIds = DASHBOARD_TEST_IDS;\n\n public widgetTestId(widgetKey: string): string {\n return `${DASHBOARD_WIDGET_TEST_ID_PREFIX}${widgetKey}`;\n }\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: this._resolvedLayout.muuriLayout,\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\" [attr.data-test-id]=\"testIds.loading\">\n <cds-loading></cds-loading>\n </div>\n</ng-container>\n\n<div\n #widgetContainer\n class=\"widget-container\"\n [attr.data-test-id]=\"testIds.widgetContainer\"\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\n #widgetConfiguration\n [id]=\"config.key\"\n [attr.data-test-id]=\"widgetTestId(config.key)\"\n class=\"widget-configuration\"\n >\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 [attr.data-test-id]=\"testIds.noWidgets\"\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_TEST_IDS} from '../../constants';\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 public readonly testIds = DASHBOARD_TEST_IDS;\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\n *ngIf=\"dashboards$ | async as dashboards\"\n class=\"dashboards-container\"\n [attr.data-test-id]=\"testIds.container\"\n>\n <valtimo-no-results\n *ngIf=\"!dashboards.length\"\n [attr.data-test-id]=\"testIds.noDashboards\"\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 [attr.data-test-id]=\"testIds.title\">{{ 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 theme: currentTheme,\n resizable: true,\n toolbar: {enabled: false},\n height: '300px',\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-simple-bar-chart\n [data]=\"barChartData\"\n [options]=\"barChartChartOptions$ | async\"\n ></ibm-simple-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\nimport {WidgetLayout} from '@valtimo/components';\n\ninterface Dashboard {\n key: string;\n title: string;\n widgets: Array<DashboardWidgetConfiguration>;\n widgetLayout?: WidgetLayout;\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: '100%',\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 {ExpressionOperator} 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<ExpressionOperator> = ['!=', '==', '>', '>=', '<', '<='];\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 {ExpressionOperator} 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<ExpressionOperator> = ['!=', '==', '>', '>=', '<', '<='];\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 {ExpressionOperator} 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<ExpressionOperator> = ['!=', '==', '>', '>=', '<', '<='];\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 {ExpressionOperator} 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<ExpressionOperator> = ['!=', '==', '>', '>=', '<', '<='];\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/dashboard.test-ids.ts","../../../../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/constants/task-count.test-ids.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/constants/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/utils/task-count-conditions.utils.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/utils/index.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/task-count-condition-group/task-count-condition-group.component.ts","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/task-count-condition-group/task-count-condition-group.component.html","../../../../projects/valtimo/dashboard/src/lib/data-sources/task-count/components/task-count-condition-group/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 (dueDateChanged)=\"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-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 const DASHBOARD_TEST_IDS = {\n /** Wrapper around the whole user-facing dashboard view. */\n container: 'dashboardContainer',\n /** Title shown when the user has access to exactly one dashboard. */\n title: 'dashboardTitle',\n /** Empty state shown when the user has access to no dashboards at all. */\n noDashboards: 'dashboardNoDashboards',\n /** Grid that holds the rendered widgets of the selected dashboard. */\n widgetContainer: 'dashboardWidgetContainer',\n /** Empty state shown when the selected dashboard has no (supported) widgets. */\n noWidgets: 'dashboardNoWidgets',\n /** Spinner shown while the widget data of the selected dashboard is loading. */\n loading: 'dashboardLoading',\n} as const;\n\n/**\n * Prefix for a single rendered widget on the user-facing dashboard. The full test id\n * is `dashboardWidget-<widget key>`, e.g. `dashboardWidget-gauge_chart`.\n *\n * Only widgets whose `displayType` is registered in the frontend are rendered, so a\n * widget with an unsupported display type has no element and therefore no test id.\n */\nexport const DASHBOARD_WIDGET_TEST_ID_PREFIX = 'dashboardWidget-';\n","/*\n * Copyright 2015-2025 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 './dashboard.test-ids';\nexport * from './data-features.constants';\nexport * from './injection-tokens';\nexport * from './layout.constants';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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(400))\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 {resolveWidgetLayout, ResolvedWidgetLayout} from '@valtimo/components';\nimport {\n DASHBOARD_TEST_IDS,\n DASHBOARD_WIDGET_TEST_ID_PREFIX,\n WIDGET_1X_HEIGHT,\n} 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._resolvedLayout = resolveWidgetLayout(value?.widgetLayout);\n this.setWidgetConfigurations(value);\n }\n\n private _resolvedLayout: ResolvedWidgetLayout = resolveWidgetLayout(null);\n\n public readonly widgetConfigurations$ =\n new BehaviorSubject<Array<DashboardWidgetConfiguration> | null>(null);\n\n public readonly testIds = DASHBOARD_TEST_IDS;\n\n public widgetTestId(widgetKey: string): string {\n return `${DASHBOARD_WIDGET_TEST_ID_PREFIX}${widgetKey}`;\n }\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: this._resolvedLayout.muuriLayout,\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\" [attr.data-test-id]=\"testIds.loading\">\n <cds-loading></cds-loading>\n </div>\n</ng-container>\n\n<div\n #widgetContainer\n class=\"widget-container\"\n [attr.data-test-id]=\"testIds.widgetContainer\"\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\n #widgetConfiguration\n [id]=\"config.key\"\n [attr.data-test-id]=\"widgetTestId(config.key)\"\n class=\"widget-configuration\"\n >\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 [attr.data-test-id]=\"testIds.noWidgets\"\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_TEST_IDS} from '../../constants';\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 public readonly testIds = DASHBOARD_TEST_IDS;\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\n *ngIf=\"dashboards$ | async as dashboards\"\n class=\"dashboards-container\"\n [attr.data-test-id]=\"testIds.container\"\n>\n <valtimo-no-results\n *ngIf=\"!dashboards.length\"\n [attr.data-test-id]=\"testIds.noDashboards\"\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 [attr.data-test-id]=\"testIds.title\">{{ 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 theme: currentTheme,\n resizable: true,\n toolbar: {enabled: false},\n height: '300px',\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-simple-bar-chart\n [data]=\"barChartData\"\n [options]=\"barChartChartOptions$ | async\"\n ></ibm-simple-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\nimport {WidgetLayout} from '@valtimo/components';\n\ninterface Dashboard {\n key: string;\n title: string;\n widgets: Array<DashboardWidgetConfiguration>;\n widgetLayout?: WidgetLayout;\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 {ExpressionOperator} from '@valtimo/shared';\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\n/**\n * A single condition as the configuration UI writes it: canonical keys and a scalar value.\n */\ninterface ConditionLeaf {\n path: string;\n operator: ExpressionOperator;\n value: string | number | boolean;\n}\n\ninterface AndConditionGroup {\n and: ConditionNode[];\n}\n\ninterface OrConditionGroup {\n or: ConditionNode[];\n}\n\ntype ConditionGroup = AndConditionGroup | OrConditionGroup;\n\ntype ConditionNode = ConditionLeaf | ConditionGroup;\n\n/**\n * A condition tree in the shape it can actually arrive in from the backend: leaves may use the\n * legacy [[QueryCondition]] aliases, values may be arrays (for the `in` operator) and operators\n * may be ones the configuration UI has no input for. Narrow to [[ConditionNode]] before relying\n * on a leaf's contents; nodes that cannot be narrowed are passed through unchanged.\n */\ninterface WireConditionLeaf {\n path?: string;\n operator?: string;\n value?: unknown;\n queryPath?: string;\n queryOperator?: string;\n queryValue?: unknown;\n}\n\ninterface WireAndConditionGroup {\n and: WireConditionNode[];\n}\n\ninterface WireOrConditionGroup {\n or: WireConditionNode[];\n}\n\ntype WireConditionGroup = WireAndConditionGroup | WireOrConditionGroup;\n\ntype WireConditionNode = WireConditionLeaf | WireConditionGroup;\n\nexport {\n DataSourceSpecification,\n QueryCondition,\n ConditionLeaf,\n AndConditionGroup,\n OrConditionGroup,\n ConditionGroup,\n ConditionNode,\n WireConditionLeaf,\n WireAndConditionGroup,\n WireOrConditionGroup,\n WireConditionGroup,\n WireConditionNode,\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 {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: '100%',\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 {ExpressionOperator} 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<ExpressionOperator> = ['!=', '==', '>', '>=', '<', '<='];\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 {ExpressionOperator} 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<ExpressionOperator> = ['!=', '==', '>', '>=', '<', '<='];\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 {ExpressionOperator} 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<ExpressionOperator> = ['!=', '==', '>', '>=', '<', '<='];\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-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 const TASK_COUNT_TEST_IDS = {\n caseDefinitionDropdown: 'taskCountCaseDefinitionDropdown',\n conditionGroup: 'taskCountConditionGroup',\n operatorSwitcher: 'taskCountGroupOperatorSwitcher',\n operatorAndButton: 'taskCountGroupOperatorAndButton',\n operatorOrButton: 'taskCountGroupOperatorOrButton',\n operatorMirror: 'taskCountGroupOperatorMirror',\n addGroupButton: 'taskCountAddGroupButton',\n deleteGroupButton: 'taskCountDeleteGroupButton',\n} as const;\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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.test-ids';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 {FormArray, FormControl, FormGroup, Validators} from '@angular/forms';\nimport {MultiInputKeyValue, MultiInputValues} from '@valtimo/components';\nimport {ExpressionOperator} from '@valtimo/shared';\nimport {\n ConditionLeaf,\n WireAndConditionGroup,\n WireConditionGroup,\n WireConditionLeaf,\n WireConditionNode,\n WireOrConditionGroup,\n} from '../../../models';\nimport {\n ConditionGroupForm,\n ConditionGroupOperator,\n ConditionGroupValue,\n SerializedConditionGroup,\n} from '../models';\n\n/** The operators the condition rows offer. Anything else is preserved but not editable. */\nexport const EDITABLE_CONDITION_OPERATORS: Array<ExpressionOperator> = [\n '!=',\n '==',\n '>',\n '>=',\n '<',\n '<=',\n];\n\nexport function createConditionGroup(\n operator: ConditionGroupOperator,\n rows: MultiInputValues = [],\n unsupportedNodes: WireConditionNode[] = []\n): ConditionGroupForm {\n return new FormGroup({\n operator: new FormControl<ConditionGroupOperator>(operator, {nonNullable: true}),\n rows: new FormControl<MultiInputValues>(rows, {nonNullable: true}),\n // The multi input drops incomplete rows from its value, so a group that is still being filled\n // in can only be recognised through the event the multi input emits for it. Until that event\n // arrives - and for a group that is never rendered - the rows themselves decide, so that a\n // group created with an empty row does not report itself as complete in the meantime.\n rowsComplete: new FormControl<boolean>(rows.every(isRowComplete), {\n nonNullable: true,\n validators: [Validators.requiredTrue],\n }),\n groups: new FormArray<ConditionGroupForm>([]),\n unsupportedNodes: new FormControl<WireConditionNode[]>(unsupportedNodes, {nonNullable: true}),\n });\n}\n\nexport function createEmptyConditionRow(): MultiInputKeyValue {\n return {key: '', dropdown: '', value: ''};\n}\n\n/**\n * Applies the conditions of a stored configuration to [root], leaving the form instance itself\n * intact so that subscriptions on it survive a prefill.\n *\n * A single group at the top level is adopted as the root group itself, so that its operator\n * survives a save/reload round-trip. Anything else - including a legacy flat list of conditions -\n * becomes a set of children combined with AND, matching the backend's list semantics.\n */\nexport function resetRootGroup(root: ConditionGroupForm, nodes: WireConditionNode[]): void {\n const [firstNode] = nodes;\n\n if (nodes.length === 1 && isWireGroup(firstNode)) {\n applyWireGroup(root, firstNode);\n\n return;\n }\n\n root.controls.operator.setValue('and');\n applyWireChildren(root, nodes);\n}\n\n/**\n * Walks [group] once and collects the wire node to emit and whether the tree holds nodes the editor\n * cannot render.\n *\n * Groups without a single condition serialize to `null`: the backend rejects empty `and`/`or`\n * groups, because `cb.or()` without predicates evaluates to false and would silently zero out the\n * count.\n */\nexport function serializeConditionGroup(group: ConditionGroupValue): SerializedConditionGroup {\n const children: WireConditionNode[] = [];\n let hasUnsupportedNodes = group.unsupportedNodes.length > 0;\n\n group.rows.filter(isRowComplete).forEach(row => children.push(rowToLeaf(row)));\n\n group.groups.forEach(nestedGroup => {\n const nested = serializeConditionGroup(nestedGroup);\n hasUnsupportedNodes = hasUnsupportedNodes || nested.hasUnsupportedNodes;\n\n if (nested.node) {\n children.push(nested.node);\n }\n });\n\n children.push(...group.unsupportedNodes);\n\n return {\n node: children.length ? toWireGroup(group.operator, children) : null,\n hasUnsupportedNodes,\n };\n}\n\nfunction toWireGroup(\n operator: ConditionGroupOperator,\n children: WireConditionNode[]\n): WireConditionGroup {\n return operator === 'or' ? {or: children} : {and: children};\n}\n\nfunction applyWireGroup(group: ConditionGroupForm, wireGroup: WireConditionGroup): void {\n if (isWireOrGroup(wireGroup)) {\n group.controls.operator.setValue('or');\n applyWireChildren(group, wireGroup.or);\n } else {\n group.controls.operator.setValue('and');\n applyWireChildren(group, wireGroup.and);\n }\n}\n\nfunction applyWireChildren(group: ConditionGroupForm, nodes: WireConditionNode[]): void {\n const rows: MultiInputValues = [];\n const unsupportedNodes: WireConditionNode[] = [];\n\n group.controls.groups.clear();\n\n nodes.forEach(node => {\n if (isWireGroup(node)) {\n const nestedGroup = createConditionGroup('and');\n applyWireGroup(nestedGroup, node);\n group.controls.groups.push(nestedGroup);\n } else if (isEditableLeaf(node)) {\n rows.push(wireLeafToRow(node));\n } else {\n unsupportedNodes.push(node);\n }\n });\n\n group.controls.rows.setValue(rows);\n // The rows that were reported as incomplete are gone, and a group whose rows are all removed no\n // longer renders a multi input to report on them, so the flag is reset here rather than waited on.\n group.controls.rowsComplete.setValue(rows.every(isRowComplete));\n group.controls.unsupportedNodes.setValue(unsupportedNodes);\n}\n\nfunction isWireOrGroup(node: WireConditionNode): node is WireOrConditionGroup {\n return Array.isArray((node as WireOrConditionGroup).or);\n}\n\nfunction isWireAndGroup(node: WireConditionNode): node is WireAndConditionGroup {\n return Array.isArray((node as WireAndConditionGroup).and);\n}\n\nfunction isWireGroup(node: WireConditionNode | undefined): node is WireConditionGroup {\n return !!node && (isWireOrGroup(node) || isWireAndGroup(node));\n}\n\n/** A leaf is editable when every part of it fits the three inputs of a condition row. */\nfunction isEditableLeaf(leaf: WireConditionLeaf): boolean {\n const value = leaf.value ?? leaf.queryValue;\n\n return (\n typeof (leaf.path ?? leaf.queryPath) === 'string' &&\n (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') &&\n EDITABLE_CONDITION_OPERATORS.includes(\n (leaf.operator ?? leaf.queryOperator) as ExpressionOperator\n )\n );\n}\n\nfunction wireLeafToRow(leaf: WireConditionLeaf): MultiInputKeyValue {\n return {\n key: (leaf.path ?? leaf.queryPath) as string,\n dropdown: (leaf.operator ?? leaf.queryOperator) as string,\n value: String(leaf.value ?? leaf.queryValue),\n };\n}\n\nfunction rowToLeaf(row: MultiInputKeyValue): ConditionLeaf {\n return {\n path: row.key,\n operator: row.dropdown as ExpressionOperator,\n value: parseRowValue(row.value),\n };\n}\n\n/**\n * Rows only hold strings. Restore the type - the backend compares a string as text, so '100' > '50'\n * is false. Only values that round-trip unchanged convert, keeping \"0050\" and \"50.10\" strings.\n */\nfunction parseRowValue(value: string): string | number | boolean {\n if (value === 'true' || value === 'false') {\n return value === 'true';\n }\n\n const asNumber = Number(value);\n\n return Number.isFinite(asNumber) && String(asNumber) === value ? asNumber : value;\n}\n\nfunction isRowComplete(row: MultiInputKeyValue): boolean {\n return !!row.key && !!row.dropdown && !!row.value;\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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-conditions.utils';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 {CommonModule} from '@angular/common';\nimport {ChangeDetectionStrategy, Component, EventEmitter, Input, Output} from '@angular/core';\nimport {FormArray, FormControl, ReactiveFormsModule} from '@angular/forms';\nimport {CarbonMultiInputModule, ListItemWithId, MultiInputValues} from '@valtimo/components';\nimport {Add16, TrashCan16} from '@carbon/icons';\nimport {\n ButtonModule,\n ContentSwitcherModule,\n IconModule,\n IconService,\n LayerModule,\n TilesModule,\n} from 'carbon-components-angular';\nimport {ConditionGroupForm, ConditionGroupOperator} from '../../models';\nimport {WidgetTranslatePipeModule} from '../../../../pipes';\nimport {TASK_COUNT_TEST_IDS} from '../../constants';\nimport {createConditionGroup, createEmptyConditionRow} from '../../utils';\n\n/**\n * A single condition group in the task count configuration: an AND/OR selector, the group's own\n * condition rows, and its nested groups. The component renders itself recursively, so groups can\n * be nested to any depth - matching the backend `AndConditionGroup`/`OrConditionGroup` tree.\n *\n * All state lives in the [group] form: the rows are bound to the multi input as a control, and a\n * nested group is a form in the `groups` array. Changes therefore reach the configuration component\n * through the form itself, without this component reporting them.\n */\n@Component({\n standalone: true,\n selector: 'valtimo-task-count-condition-group',\n templateUrl: './task-count-condition-group.component.html',\n styleUrls: ['./task-count-condition-group.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n ButtonModule,\n CarbonMultiInputModule,\n CommonModule,\n ContentSwitcherModule,\n IconModule,\n LayerModule,\n ReactiveFormsModule,\n TilesModule,\n WidgetTranslatePipeModule,\n ],\n})\nexport class TaskCountConditionGroupComponent {\n @Input() public group: ConditionGroupForm;\n @Input() public dataSourceKey: string;\n @Input() public disabled = false;\n @Input() public operatorItems: Array<ListItemWithId> = [];\n /** The outermost group cannot be deleted and starts out without condition rows. */\n @Input() public root = false;\n\n @Output() public deleteGroupEvent = new EventEmitter<void>();\n\n protected readonly testIds = TASK_COUNT_TEST_IDS;\n\n public get operator(): ConditionGroupOperator {\n return this.group.controls.operator.value;\n }\n\n public get rowsControl(): FormControl<MultiInputValues> {\n return this.group.controls.rows;\n }\n\n public get groups(): FormArray<ConditionGroupForm> {\n return this.group.controls.groups;\n }\n\n /**\n * Index of the connector that carries the interactive operator selector.\n *\n * The root renders a connector between every pair of sections, but a group has a single operator,\n * so all of them would set the same value. Only this one is a selector; the rest mirror it as\n * static text, to avoid suggesting that the sections can be joined by different operators.\n */\n public get interactiveConnectorIndex(): number {\n return this.rowsControl.value.length ? 0 : 1;\n }\n\n constructor(private readonly iconService: IconService) {\n this.iconService.registerAll([Add16, TrashCan16]);\n }\n\n public setOperator(operator: ConditionGroupOperator): void {\n if (this.operator === operator) {\n return;\n }\n\n this.group.controls.operator.setValue(operator);\n }\n\n /**\n * The multi input drops rows that are not filled in completely, so its value alone cannot tell a\n * half-filled group apart from a complete one. This event does, and marks the group invalid until\n * every row is either complete or removed.\n */\n public onAllRowsValid(allRowsValid: boolean): void {\n this.group.controls.rowsComplete.setValue(allRowsValid);\n }\n\n /**\n * Appends a section to this group, leaving the operator of the group untouched.\n *\n * How the sections relate is a single property of this group, shown on the connectors between\n * them and changed there with [setOperator]. An addition deliberately does not ask for it: the\n * operator of the group and the operator inside a section are two different levels, and the first\n * addition has nothing to relate the new section to yet. The new section starts out combining its\n * own conditions with 'and'; that operator is changed in the header of the section itself.\n */\n public addGroup(): void {\n this.groups.push(createConditionGroup('and', [createEmptyConditionRow()]));\n }\n\n public removeGroup(index: number): void {\n this.groups.removeAt(index);\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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<!-- The AND/OR selector for this group, in the header of a nested group or on the first connector\n between the root sections. -->\n<ng-template #operatorSwitcher>\n <cds-content-switcher\n class=\"condition-operator\"\n [attr.data-test-id]=\"testIds.operatorSwitcher\"\n size=\"sm\"\n >\n <button\n cdsContentOption\n type=\"button\"\n [active]=\"operator === 'and'\"\n [attr.data-test-id]=\"testIds.operatorAndButton\"\n [disabled]=\"disabled\"\n (selected)=\"setOperator('and')\"\n >\n {{ 'and' | widgetTranslate: dataSourceKey | async }}\n </button>\n\n <button\n cdsContentOption\n type=\"button\"\n [active]=\"operator === 'or'\"\n [attr.data-test-id]=\"testIds.operatorOrButton\"\n [disabled]=\"disabled\"\n (selected)=\"setOperator('or')\"\n >\n {{ 'or' | widgetTranslate: dataSourceKey | async }}\n </button>\n </cds-content-switcher>\n</ng-template>\n\n<!--\n The condition rows of this group. The multi input is a form control, so the rows are written and\n read through [rowsControl] and its disabled state follows the control - binding [disabled] here\n would set it on the form directive as well.\n-->\n<ng-template #conditionRows let-minimumAmountOfRows=\"minimumAmountOfRows\">\n <valtimo-carbon-multi-input\n [addRowText]=\"'addCondition' | widgetTranslate: dataSourceKey | async\"\n [dropdownColumnTitle]=\"'operator' | widgetTranslate: dataSourceKey | async\"\n [dropdownItems]=\"operatorItems\"\n [formControl]=\"rowsControl\"\n [fullWidth]=\"true\"\n [initialAmountOfRows]=\"minimumAmountOfRows\"\n [minimumAmountOfRows]=\"minimumAmountOfRows\"\n [valueColumnTitle]=\"'value' | widgetTranslate: dataSourceKey | async\"\n [keyColumnTitle]=\"'path' | widgetTranslate: dataSourceKey | async\"\n (allValuesValidEvent)=\"onAllRowsValid($event)\"\n addButtonType=\"tertiary\"\n deleteButtonType=\"danger--ghost\"\n type=\"keyDropdownValue\"\n ></valtimo-carbon-multi-input>\n</ng-template>\n\n@if (root) {\n <!--\n The root group is not a section of its own: it only groups the sections. Its single operator\n defines how all of the sections relate to each other, and is rendered as a connector between\n them - a selector on the first connector, static text on the ones after it. Connectors only\n appear once there is something to relate (two or more sections, or a section following\n root-level rows). Each section carries its own operator for the conditions inside it. \"Add\n condition group\" appends a new section. Direct root-level rows only exist for configuration\n authored in a file; they are kept editable so that saving does not drop them.\n -->\n <div class=\"condition-root\" [attr.data-test-id]=\"testIds.conditionGroup\">\n @if (rowsControl.value.length) {\n <ng-container\n *ngTemplateOutlet=\"conditionRows; context: {minimumAmountOfRows: 0}\"\n ></ng-container>\n }\n\n @for (nestedGroup of groups.controls; track nestedGroup; let index = $index) {\n @if (index === interactiveConnectorIndex) {\n <ng-container *ngTemplateOutlet=\"operatorSwitcher\"></ng-container>\n } @else if (index > interactiveConnectorIndex) {\n <p\n class=\"condition-root__operator-mirror\"\n [attr.data-test-id]=\"testIds.operatorMirror\"\n aria-hidden=\"true\"\n >\n {{ operator | widgetTranslate: dataSourceKey | async }}\n </p>\n }\n\n <valtimo-task-count-condition-group\n [dataSourceKey]=\"dataSourceKey\"\n [disabled]=\"disabled\"\n [group]=\"nestedGroup\"\n [operatorItems]=\"operatorItems\"\n (deleteGroupEvent)=\"removeGroup(index)\"\n ></valtimo-task-count-condition-group>\n }\n\n <button\n class=\"condition-root__add-button\"\n cdsButton=\"tertiary\"\n type=\"button\"\n [attr.data-test-id]=\"testIds.addGroupButton\"\n [disabled]=\"disabled\"\n (click)=\"addGroup()\"\n >\n {{ 'addGroup' | widgetTranslate: dataSourceKey | async }}\n\n <svg class=\"cds--btn__icon\" cdsIcon=\"add\" size=\"16\"></svg>\n </button>\n </div>\n} @else {\n <cds-tile class=\"condition-group\" [attr.data-test-id]=\"testIds.conditionGroup\" [cdsLayer]=\"0\">\n <div class=\"condition-group__header\">\n <ng-container *ngTemplateOutlet=\"operatorSwitcher\"></ng-container>\n\n <cds-icon-button\n [attr.data-test-id]=\"testIds.deleteGroupButton\"\n [description]=\"'deleteGroup' | widgetTranslate: dataSourceKey | async\"\n [disabled]=\"disabled\"\n (click)=\"deleteGroupEvent.emit()\"\n kind=\"danger--ghost\"\n size=\"sm\"\n >\n <svg class=\"cds--btn__icon\" cdsIcon=\"trash-can\" size=\"16\"></svg>\n </cds-icon-button>\n </div>\n\n <ng-container\n *ngTemplateOutlet=\"conditionRows; context: {minimumAmountOfRows: 1}\"\n ></ng-container>\n\n @for (nestedGroup of groups.controls; track nestedGroup; let index = $index) {\n <valtimo-task-count-condition-group\n [dataSourceKey]=\"dataSourceKey\"\n [disabled]=\"disabled\"\n [group]=\"nestedGroup\"\n [operatorItems]=\"operatorItems\"\n (deleteGroupEvent)=\"removeGroup(index)\"\n ></valtimo-task-count-condition-group>\n }\n </cds-tile>\n}\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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-condition-group.component';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 signal,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {combineLatest, map, Observable, shareReplay, startWith, Subscription} from 'rxjs';\nimport {ListItem, NotificationContent} from 'carbon-components-angular';\nimport {ListItemWithId} from '@valtimo/components';\nimport {DocumentService} from '@valtimo/document';\nimport {TranslateService} from '@ngx-translate/core';\nimport {ConfigurationOutput, DataSourceConfigurationComponent} from '../../../../models';\nimport {WidgetTranslationService} from '../../../../services';\nimport {TASK_COUNT_TEST_IDS} from '../../constants';\nimport {ConditionGroupValue, TaskCountConfiguration} from '../../models';\nimport {\n createConditionGroup,\n EDITABLE_CONDITION_OPERATORS,\n resetRootGroup,\n serializeConditionGroup,\n} from '../../utils';\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 @Input() public set disabled(disabledValue: boolean) {\n this.$disabled.set(disabledValue);\n this.applyDisabledState();\n }\n\n @Input() public set prefillConfiguration(configurationValue: TaskCountConfiguration) {\n if (!configurationValue) {\n return;\n }\n\n this._$selectedCaseDefinitionName.set(configurationValue.caseDefinitionName ?? undefined);\n resetRootGroup(\n this.conditionsForm,\n configurationValue.conditions ?? configurationValue.queryConditions ?? []\n );\n // Prefill runs after [disabled] and adds enabled groups, which re-enable their parents.\n this.applyDisabledState();\n }\n\n @Output() public configurationEvent = new EventEmitter<\n ConfigurationOutput<TaskCountConfiguration>\n >();\n\n public readonly $disabled = signal<boolean>(false);\n\n /**\n * The whole condition tree. Kept for the lifetime of the component - a prefill resets its\n * contents - so that the subscription below survives it.\n */\n public readonly conditionsForm = createConditionGroup('and');\n\n protected readonly testIds = TASK_COUNT_TEST_IDS;\n\n // Declared before the observables below, which read it at field-initialization time.\n private readonly _$selectedCaseDefinitionName = signal<string | undefined>(undefined);\n\n private readonly _serializedConditions$ = this.conditionsForm.valueChanges.pipe(\n startWith(null),\n map(() => serializeConditionGroup(this.conditionsForm.getRawValue() as ConditionGroupValue)),\n shareReplay({bufferSize: 1, refCount: true})\n );\n\n public readonly hasUnsupportedConditions$: Observable<boolean> = this._serializedConditions$.pipe(\n map(serialized => serialized.hasUnsupportedNodes)\n );\n\n /**\n * Emits once and then on every language change. Subscribing to a translation is the only way to\n * be notified, so the lists below are rebuilt whenever this fires.\n */\n private readonly _languageChange$: Observable<unknown> = this.translateService\n .stream('key')\n .pipe(shareReplay({bufferSize: 1, refCount: true}));\n\n public readonly caseDefinitionItems$: Observable<Array<ListItem>> = combineLatest([\n this.documentService.getAllDefinitions(),\n toObservable(this._$selectedCaseDefinitionName),\n this._languageChange$,\n ]).pipe(\n map(([definitions, selectedCaseDefinitionName]) => [\n {\n content: this.widgetTranslationService.instant('allCaseDefinitions', this.dataSourceKey),\n selected: selectedCaseDefinitionName === undefined,\n caseDefinitionName: undefined,\n },\n ...definitions.content.map(definition => ({\n content: definition.id.name,\n selected: definition.id.name === selectedCaseDefinitionName,\n caseDefinitionName: definition.id.name,\n })),\n ])\n );\n\n public readonly operatorItems$: Observable<Array<ListItemWithId>> = this._languageChange$.pipe(\n map(() =>\n EDITABLE_CONDITION_OPERATORS.map(operator => ({\n id: operator,\n content: this.translateService.instant('condition.operator.' + operator),\n selected: false,\n }))\n )\n );\n\n public readonly unsupportedConditionsNotification$: Observable<NotificationContent> =\n this._languageChange$.pipe(\n map(() => ({\n type: 'info',\n lowContrast: true,\n title: this.widgetTranslationService.instant(\n 'unsupportedConditionsNotification',\n this.dataSourceKey\n ),\n showClose: false,\n }))\n );\n\n private readonly _subscriptions = new Subscription();\n\n constructor(\n private readonly documentService: DocumentService,\n private readonly translateService: TranslateService,\n private readonly widgetTranslationService: WidgetTranslationService\n ) {}\n\n public ngOnInit(): void {\n this._subscriptions.add(this.conditionsForm.valueChanges.subscribe(() => this.emit()));\n this.emit();\n }\n\n public ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n public caseDefinitionSelected(event: {item?: ListItem}): void {\n if (!event) {\n return;\n }\n\n this._$selectedCaseDefinitionName.set(event.item?.caseDefinitionName ?? undefined);\n this.emit();\n }\n\n /** Rows are a form control, so the multi input follows the form, not a [disabled] binding. */\n private applyDisabledState(): void {\n this.$disabled()\n ? this.conditionsForm.disable({emitEvent: false})\n : this.conditionsForm.enable({emitEvent: false});\n }\n\n private emit(): void {\n const {node} = serializeConditionGroup(\n this.conditionsForm.getRawValue() as ConditionGroupValue\n );\n\n this.configurationEvent.emit({\n // A disabled form is neither valid nor invalid, so a read-only configuration is not reported\n // as an incomplete one.\n valid: !this.conditionsForm.invalid,\n data: {\n caseDefinitionName: this._$selectedCaseDefinitionName() ?? undefined,\n // Emitted as a single root node so that the operator of the outermost group survives a\n // save/reload round-trip. An empty root is omitted entirely: the backend rejects empty\n // `and`/`or` groups.\n conditions: node ? [node] : [],\n },\n });\n }\n}\n","<!--\n ~ Copyright 2015-2026 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF 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=\"task-count-configuration-form\">\n <div class=\"form__element\">\n <cds-dropdown\n [appendInline]=\"true\"\n [attr.data-test-id]=\"testIds.caseDefinitionDropdown\"\n [disabled]=\"$disabled()\"\n [helperText]=\"'caseDefinitionNameHelperText' | widgetTranslate: dataSourceKey | async\"\n [label]=\"'caseDefinitionName' | widgetTranslate: dataSourceKey | async\"\n (selected)=\"caseDefinitionSelected($event)\"\n >\n <cds-dropdown-list [items]=\"(caseDefinitionItems$ | async) || []\"></cds-dropdown-list>\n </cds-dropdown>\n </div>\n\n @if (hasUnsupportedConditions$ | async) {\n <div class=\"form__element\">\n <cds-inline-notification\n [notificationObj]=\"unsupportedConditionsNotification$ | async\"\n ></cds-inline-notification>\n </div>\n }\n\n <cds-label\n [helperText]=\"'conditionsHelperText' | widgetTranslate: dataSourceKey | async\"\n class=\"conditions-label\"\n >{{ 'conditions' | widgetTranslate: dataSourceKey | async }}</cds-label\n >\n\n <valtimo-task-count-condition-group\n [dataSourceKey]=\"dataSourceKey\"\n [disabled]=\"$disabled()\"\n [group]=\"conditionsForm\"\n [operatorItems]=\"(operatorItems$ | async) || []\"\n [root]=\"true\"\n ></valtimo-task-count-condition-group>\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\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-condition-group';\nexport * from './task-count-configuration';\n","/*\n * Copyright 2015-2026 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF 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 {FormArray, FormControl, FormGroup} from '@angular/forms';\nimport {MultiInputValues} from '@valtimo/components';\nimport {WireConditionNode} from '../../../models';\n\ninterface TaskCountConfiguration {\n caseDefinitionName?: string;\n conditions?: WireConditionNode[];\n /** Legacy alias for [conditions], used by configuration saved before groups existed. */\n queryConditions?: WireConditionNode[];\n}\n\ntype ConditionGroupOperator = 'and' | 'or';\n\ninterface ConditionGroupControls {\n /** Combines the rows and the nested groups of this group, mirroring `and`/`or` on the backend. */\n operator: FormControl<ConditionGroupOperator>;\n /**\n * The conditions of this group. Held as a single control because the multi input writes the whole\n * set of rows at once; it only ever contains complete rows, incomplete ones are reported through\n * [rowsComplete].\n */\n rows: FormControl<MultiInputValues>;\n /** False while the multi input holds a row that is not filled in completely. */\n rowsComplete: FormControl<boolean>;\n groups: FormArray<ConditionGroupForm>;\n /**\n * Children the editor cannot render (array values for the `in` operator, operators outside the\n * dropdown). Kept so that configuration authored in a file survives an edit in the admin UI.\n */\n unsupportedNodes: FormControl<WireConditionNode[]>;\n}\n\n/**\n * A single condition group as a form. Groups nest to arbitrary depth through [groups], so the\n * validity of the whole tree is the validity of this form.\n *\n * Declared as an interface rather than a type alias, so that the group can reference itself.\n */\ninterface ConditionGroupForm extends FormGroup<ConditionGroupControls> {}\n\n/** The raw value of a [ConditionGroupForm], which is what the serializer walks. */\ninterface ConditionGroupValue {\n operator: ConditionGroupOperator;\n rows: MultiInputValues;\n rowsComplete: boolean;\n groups: ConditionGroupValue[];\n unsupportedNodes: WireConditionNode[];\n}\n\n/** The result of walking a [ConditionGroupValue] tree once. */\ninterface SerializedConditionGroup {\n /** The group as a wire node, or null when it holds no condition at all. */\n node: WireConditionNode | null;\n /** True when the tree holds nodes the editor cannot render. */\n hasUnsupportedNodes: boolean;\n}\n\nexport {\n TaskCountConfiguration,\n ConditionGroupOperator,\n ConditionGroupControls,\n ConditionGroupForm,\n ConditionGroupValue,\n SerializedConditionGroup,\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 './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 (erforderlich)',\n operator: 'Operator',\n value: 'Wert',\n caseDefinitionName: 'Falltyp',\n caseDefinitionNameHelperText: 'Optional. Zählt nur Aufgaben, die zu diesem Falltyp gehören.',\n allCaseDefinitions: 'Alle Falltypen',\n conditions: 'Bedingungen (optional)',\n conditionsHelperText: `Geben Sie optionale Bedingungen zum Abrufen der Anzahl der Aufgaben. ${CONDITIONS_HELPER_TEXTS.DE('task:assignee')} Bedingungen innerhalb einer Gruppe werden mit dem Operator der Gruppe verknüpft.`,\n addCondition: 'Bedingung hinzufügen',\n and: 'UND',\n or: 'ODER',\n addGroup: 'Bedingungsgruppe hinzufügen',\n deleteGroup: 'Bedingungsgruppe löschen',\n unsupportedConditionsNotification:\n 'Dieses Widget enthält Bedingungen, die nur über Konfigurationsdateien bearbeitet werden können. Sie bleiben beim Speichern erhalten.',\n },\n en: {\n title: 'Task count',\n path: 'Path (required)',\n operator: 'Operator',\n value: 'Value',\n caseDefinitionName: 'Case type',\n caseDefinitionNameHelperText: 'Optional. Only counts tasks that belong to this case type.',\n allCaseDefinitions: 'All case types',\n conditions: 'Conditions (optional)',\n conditionsHelperText: `Specify optional conditions for retrieving the number of tasks. ${CONDITIONS_HELPER_TEXTS.EN('task:assignee')} Conditions within a group are combined using the operator of that group.`,\n addCondition: 'Add condition',\n and: 'AND',\n or: 'OR',\n addGroup: 'Add condition group',\n deleteGroup: 'Delete condition group',\n unsupportedConditionsNotification:\n 'This widget contains conditions that can only be edited through configuration files. They are preserved when you save.',\n },\n nl: {\n title: 'Aantal taken',\n path: 'Pad (verplicht)',\n operator: 'Operator',\n value: 'Waarde',\n caseDefinitionName: 'Zaaktype',\n caseDefinitionNameHelperText: 'Optioneel. Telt alleen taken die bij dit zaaktype horen.',\n allCaseDefinitions: 'Alle zaaktypes',\n conditions: 'Condities (optioneel)',\n conditionsHelperText: `Geef optionele condities op voor het ophalen van het aantal taken. ${CONDITIONS_HELPER_TEXTS.NL('task:assignee')} Condities binnen een groep worden gecombineerd met de operator van die groep.`,\n addCondition: 'Conditie toevoegen',\n and: 'EN',\n or: 'OF',\n addGroup: 'Conditiegroep toevoegen',\n deleteGroup: 'Conditiegroep verwijderen',\n unsupportedConditionsNotification:\n 'Dit widget bevat condities die alleen via configuratiebestanden bewerkt kunnen worden. Ze blijven behouden bij het opslaan.',\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 {ReactiveFormsModule} from '@angular/forms';\nimport {DATA_SOURCE_TOKEN} from '../../constants';\nimport {taskCountSpecification} from './task-count.specification';\nimport {TaskCountConditionGroupComponent, TaskCountConfigurationComponent} from './components';\nimport {WidgetTranslatePipeModule} from '../../pipes';\nimport {\n ButtonModule,\n ContentSwitcherModule,\n DropdownModule,\n IconModule,\n InputModule,\n LayerModule,\n NotificationModule,\n TilesModule,\n} 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 ButtonModule,\n ContentSwitcherModule,\n IconModule,\n LayerModule,\n NotificationModule,\n TilesModule,\n TaskCountConditionGroupComponent,\n ],\n exports: [TaskCountConditionGroupComponent, 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","i5.WidgetTranslatePipe","i3.WidgetTranslationService","i5.TaskCountConditionGroupComponent"],"mappings":"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"}