@valtimo/dashboard 12.0.0 → 12.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/widget-dashboard/widget-dashboard.component.mjs +7 -7
- package/esm2022/lib/components/widget-dashboard-content/widget-dashboard-content.component.mjs +57 -15
- package/esm2022/lib/constants/data-features.constants.mjs +2 -1
- package/esm2022/lib/data-sources/case-count/case-count.specification.mjs +4 -4
- package/esm2022/lib/data-sources/case-count/components/case-count-configuration/case-count-configuration.component.mjs +4 -4
- package/esm2022/lib/data-sources/case-count/models/case-count.model.mjs +2 -11
- package/esm2022/lib/data-sources/case-counts/case-counts.module.mjs +76 -0
- package/esm2022/lib/data-sources/case-counts/case-counts.specification.mjs +77 -0
- package/esm2022/lib/data-sources/case-counts/components/case-counts-configuration/case-counts-configuration.component.mjs +202 -0
- package/esm2022/lib/data-sources/case-counts/components/case-counts-configuration/index.mjs +17 -0
- package/esm2022/lib/data-sources/case-counts/components/index.mjs +17 -0
- package/esm2022/lib/data-sources/case-counts/index.mjs +20 -0
- package/esm2022/lib/data-sources/case-counts/models/case-counts.model.mjs +17 -0
- package/esm2022/lib/data-sources/case-counts/models/index.mjs +17 -0
- package/esm2022/lib/data-sources/case-group-by/case-group-by.module.mjs +61 -0
- package/esm2022/lib/data-sources/case-group-by/case-group-by.specification.mjs +89 -0
- package/esm2022/lib/data-sources/case-group-by/components/case-group-by-configuration/case-group-by-configuration.component.mjs +206 -0
- package/esm2022/lib/data-sources/case-group-by/components/case-group-by-configuration/index.mjs +17 -0
- package/esm2022/lib/{display-types/bar-chart → data-sources/case-group-by/components}/index.mjs +2 -5
- package/esm2022/lib/data-sources/case-group-by/index.mjs +20 -0
- package/esm2022/lib/data-sources/case-group-by/models/case-group-by.model.mjs +17 -0
- package/esm2022/lib/data-sources/case-group-by/models/index.mjs +17 -0
- package/esm2022/lib/data-sources/index.mjs +3 -2
- package/esm2022/lib/display-types/big-number/components/big-number-configuration/big-number-configuration.component.mjs +1 -1
- package/esm2022/lib/display-types/big-number/components/big-number-display/big-number-display.component.mjs +2 -2
- package/esm2022/lib/display-types/donut/components/donut-configuration/donut-configuration.component.mjs +89 -0
- package/esm2022/lib/display-types/donut/components/donut-configuration/index.mjs +17 -0
- package/esm2022/lib/display-types/donut/components/donut-display/donut-display.component.mjs +72 -0
- package/esm2022/lib/display-types/donut/components/donut-display/index.mjs +17 -0
- package/esm2022/lib/display-types/donut/components/index.mjs +18 -0
- package/esm2022/lib/display-types/donut/donut.module.mjs +68 -0
- package/esm2022/lib/display-types/donut/donut.specification.mjs +55 -0
- package/esm2022/lib/display-types/donut/index.mjs +20 -0
- package/esm2022/lib/display-types/donut/models/donut.model.mjs +17 -0
- package/esm2022/lib/display-types/donut/models/index.mjs +17 -0
- package/esm2022/lib/display-types/gauge/components/gauge-configuration/gauge-configuration.component.mjs +89 -0
- package/esm2022/lib/display-types/gauge/components/gauge-configuration/index.mjs +17 -0
- package/esm2022/lib/display-types/gauge/components/gauge-display/gauge-display.component.mjs +86 -0
- package/esm2022/lib/display-types/gauge/components/gauge-display/index.mjs +17 -0
- package/esm2022/lib/display-types/gauge/components/index.mjs +18 -0
- package/esm2022/lib/display-types/gauge/gauge.module.mjs +60 -0
- package/esm2022/lib/display-types/gauge/gauge.specification.mjs +55 -0
- package/esm2022/lib/display-types/gauge/index.mjs +20 -0
- package/esm2022/lib/display-types/gauge/models/gauge.model.mjs +17 -0
- package/esm2022/lib/display-types/gauge/models/index.mjs +17 -0
- package/esm2022/lib/display-types/index.mjs +3 -2
- package/esm2022/lib/display-types/meter/components/index.mjs +2 -1
- package/esm2022/lib/display-types/meter/components/meter-configuration/index.mjs +17 -0
- package/esm2022/lib/display-types/meter/components/meter-configuration/meter-configuration.component.mjs +83 -0
- package/esm2022/lib/display-types/meter/components/meter-display/meter-display.component.mjs +44 -5
- package/esm2022/lib/display-types/meter/index.mjs +2 -2
- package/esm2022/lib/display-types/meter/meter.module.mjs +38 -6
- package/esm2022/lib/display-types/meter/meter.specification.mjs +23 -3
- package/esm2022/lib/display-types/meter/models/meter.model.mjs +1 -1
- package/esm2022/lib/models/configuration.model.mjs +1 -1
- package/esm2022/lib/models/data-source.model.mjs +11 -2
- package/esm2022/lib/services/widget-layout.service.mjs +28 -82
- package/fesm2022/valtimo-dashboard.mjs +1783 -489
- package/fesm2022/valtimo-dashboard.mjs.map +1 -1
- package/lib/components/widget-dashboard/widget-dashboard.component.d.ts +1 -0
- package/lib/components/widget-dashboard/widget-dashboard.component.d.ts.map +1 -1
- package/lib/components/widget-dashboard-content/widget-dashboard-content.component.d.ts +9 -3
- package/lib/components/widget-dashboard-content/widget-dashboard-content.component.d.ts.map +1 -1
- package/lib/constants/data-features.constants.d.ts +1 -0
- package/lib/constants/data-features.constants.d.ts.map +1 -1
- package/lib/data-sources/case-count/components/case-count-configuration/case-count-configuration.component.d.ts +1 -1
- package/lib/data-sources/case-count/components/case-count-configuration/case-count-configuration.component.d.ts.map +1 -1
- package/lib/data-sources/case-count/models/case-count.model.d.ts +3 -15
- package/lib/data-sources/case-count/models/case-count.model.d.ts.map +1 -1
- package/lib/data-sources/case-counts/case-counts.module.d.ts +13 -0
- package/lib/data-sources/case-counts/case-counts.module.d.ts.map +1 -0
- package/lib/data-sources/case-counts/case-counts.specification.d.ts +3 -0
- package/lib/data-sources/case-counts/case-counts.specification.d.ts.map +1 -0
- package/lib/data-sources/case-counts/components/case-counts-configuration/case-counts-configuration.component.d.ts +52 -0
- package/lib/data-sources/case-counts/components/case-counts-configuration/case-counts-configuration.component.d.ts.map +1 -0
- package/lib/data-sources/case-counts/components/case-counts-configuration/index.d.ts +2 -0
- package/lib/data-sources/{test/components/test-configuration → case-counts/components/case-counts-configuration}/index.d.ts.map +1 -1
- package/lib/data-sources/case-counts/components/index.d.ts +2 -0
- package/lib/data-sources/case-counts/components/index.d.ts.map +1 -0
- package/lib/data-sources/case-counts/index.d.ts +5 -0
- package/lib/data-sources/case-counts/index.d.ts.map +1 -0
- package/lib/data-sources/case-counts/models/case-counts.model.d.ts +16 -0
- package/lib/data-sources/case-counts/models/case-counts.model.d.ts.map +1 -0
- package/lib/data-sources/case-counts/models/index.d.ts +2 -0
- package/lib/data-sources/{test/components → case-counts/models}/index.d.ts.map +1 -1
- package/lib/data-sources/case-group-by/case-group-by.module.d.ts +13 -0
- package/lib/data-sources/case-group-by/case-group-by.module.d.ts.map +1 -0
- package/lib/data-sources/case-group-by/case-group-by.specification.d.ts +3 -0
- package/lib/data-sources/case-group-by/case-group-by.specification.d.ts.map +1 -0
- package/lib/data-sources/case-group-by/components/case-group-by-configuration/case-group-by-configuration.component.d.ts +54 -0
- package/lib/data-sources/case-group-by/components/case-group-by-configuration/case-group-by-configuration.component.d.ts.map +1 -0
- package/lib/data-sources/case-group-by/components/case-group-by-configuration/index.d.ts +2 -0
- package/lib/data-sources/case-group-by/components/case-group-by-configuration/index.d.ts.map +1 -0
- package/lib/data-sources/case-group-by/components/index.d.ts +2 -0
- package/lib/data-sources/case-group-by/components/index.d.ts.map +1 -0
- package/lib/data-sources/case-group-by/index.d.ts +5 -0
- package/lib/data-sources/case-group-by/index.d.ts.map +1 -0
- package/lib/data-sources/case-group-by/models/case-group-by.model.d.ts +19 -0
- package/lib/data-sources/case-group-by/models/case-group-by.model.d.ts.map +1 -0
- package/lib/data-sources/case-group-by/models/index.d.ts +2 -0
- package/lib/data-sources/{test → case-group-by}/models/index.d.ts.map +1 -1
- package/lib/data-sources/index.d.ts +2 -1
- package/lib/data-sources/index.d.ts.map +1 -1
- package/lib/display-types/big-number/components/big-number-configuration/big-number-configuration.component.d.ts +10 -10
- package/lib/display-types/big-number/components/big-number-configuration/big-number-configuration.component.d.ts.map +1 -1
- package/lib/display-types/donut/components/donut-configuration/donut-configuration.component.d.ts +29 -0
- package/lib/display-types/donut/components/donut-configuration/donut-configuration.component.d.ts.map +1 -0
- package/lib/display-types/donut/components/donut-configuration/index.d.ts +2 -0
- package/lib/display-types/{bar-chart/components/bar-chart-display → donut/components/donut-configuration}/index.d.ts.map +1 -1
- package/lib/display-types/donut/components/donut-display/donut-display.component.d.ts +19 -0
- package/lib/display-types/donut/components/donut-display/donut-display.component.d.ts.map +1 -0
- package/lib/display-types/donut/components/donut-display/index.d.ts +2 -0
- package/lib/display-types/donut/components/donut-display/index.d.ts.map +1 -0
- package/lib/display-types/donut/components/index.d.ts +3 -0
- package/lib/display-types/donut/components/index.d.ts.map +1 -0
- package/lib/display-types/donut/donut.module.d.ts +16 -0
- package/lib/display-types/donut/donut.module.d.ts.map +1 -0
- package/lib/display-types/donut/donut.specification.d.ts +3 -0
- package/lib/display-types/donut/donut.specification.d.ts.map +1 -0
- package/lib/display-types/donut/index.d.ts +5 -0
- package/lib/display-types/donut/index.d.ts.map +1 -0
- package/lib/display-types/donut/models/donut.model.d.ts +14 -0
- package/lib/display-types/donut/models/donut.model.d.ts.map +1 -0
- package/lib/display-types/donut/models/index.d.ts +2 -0
- package/lib/display-types/{bar-chart → donut}/models/index.d.ts.map +1 -1
- package/lib/display-types/gauge/components/gauge-configuration/gauge-configuration.component.d.ts +29 -0
- package/lib/display-types/gauge/components/gauge-configuration/gauge-configuration.component.d.ts.map +1 -0
- package/lib/display-types/gauge/components/gauge-configuration/index.d.ts +2 -0
- package/lib/display-types/gauge/components/gauge-configuration/index.d.ts.map +1 -0
- package/lib/display-types/gauge/components/gauge-display/gauge-display.component.d.ts +24 -0
- package/lib/display-types/gauge/components/gauge-display/gauge-display.component.d.ts.map +1 -0
- package/lib/display-types/gauge/components/gauge-display/index.d.ts +2 -0
- package/lib/display-types/gauge/components/gauge-display/index.d.ts.map +1 -0
- package/lib/display-types/gauge/components/index.d.ts +3 -0
- package/lib/display-types/gauge/components/index.d.ts.map +1 -0
- package/lib/display-types/gauge/gauge.module.d.ts +14 -0
- package/lib/display-types/gauge/gauge.module.d.ts.map +1 -0
- package/lib/display-types/gauge/gauge.specification.d.ts +3 -0
- package/lib/display-types/gauge/gauge.specification.d.ts.map +1 -0
- package/lib/display-types/gauge/index.d.ts +5 -0
- package/lib/display-types/gauge/index.d.ts.map +1 -0
- package/lib/display-types/gauge/models/gauge.model.d.ts +11 -0
- package/lib/display-types/gauge/models/gauge.model.d.ts.map +1 -0
- package/lib/display-types/gauge/models/index.d.ts +2 -0
- package/lib/display-types/{bar-chart/components → gauge/models}/index.d.ts.map +1 -1
- package/lib/display-types/index.d.ts +2 -1
- package/lib/display-types/index.d.ts.map +1 -1
- package/lib/display-types/meter/components/index.d.ts +1 -0
- package/lib/display-types/meter/components/index.d.ts.map +1 -1
- package/lib/display-types/meter/components/meter-configuration/index.d.ts +2 -0
- package/lib/display-types/meter/components/meter-configuration/index.d.ts.map +1 -0
- package/lib/display-types/meter/components/meter-configuration/meter-configuration.component.d.ts +26 -0
- package/lib/display-types/meter/components/meter-configuration/meter-configuration.component.d.ts.map +1 -0
- package/lib/display-types/meter/components/meter-display/meter-display.component.d.ts +11 -3
- package/lib/display-types/meter/components/meter-display/meter-display.component.d.ts.map +1 -1
- package/lib/display-types/meter/index.d.ts +1 -1
- package/lib/display-types/meter/index.d.ts.map +1 -1
- package/lib/display-types/meter/meter.module.d.ts +9 -2
- package/lib/display-types/meter/meter.module.d.ts.map +1 -1
- package/lib/display-types/meter/meter.specification.d.ts.map +1 -1
- package/lib/display-types/meter/models/meter.model.d.ts +7 -2
- package/lib/display-types/meter/models/meter.model.d.ts.map +1 -1
- package/lib/models/configuration.model.d.ts +2 -2
- package/lib/models/configuration.model.d.ts.map +1 -1
- package/lib/models/data-source.model.d.ts +14 -1
- package/lib/models/data-source.model.d.ts.map +1 -1
- package/lib/services/widget-layout.service.d.ts +13 -18
- package/lib/services/widget-layout.service.d.ts.map +1 -1
- package/package.json +7 -3
- package/esm2022/lib/data-sources/test/components/index.mjs +0 -17
- package/esm2022/lib/data-sources/test/components/test-configuration/index.mjs +0 -17
- package/esm2022/lib/data-sources/test/components/test-configuration/test-configuration.component.mjs +0 -80
- package/esm2022/lib/data-sources/test/index.mjs +0 -20
- package/esm2022/lib/data-sources/test/models/index.mjs +0 -17
- package/esm2022/lib/data-sources/test/models/test.model.mjs +0 -17
- package/esm2022/lib/data-sources/test/test.module.mjs +0 -39
- package/esm2022/lib/data-sources/test/test.specification.mjs +0 -44
- package/esm2022/lib/display-types/bar-chart/bar-chart.module.mjs +0 -36
- package/esm2022/lib/display-types/bar-chart/bar-chart.specification.mjs +0 -35
- package/esm2022/lib/display-types/bar-chart/components/bar-chart-display/bar-chart-display.component.mjs +0 -32
- package/esm2022/lib/display-types/bar-chart/components/bar-chart-display/index.mjs +0 -17
- package/esm2022/lib/display-types/bar-chart/components/index.mjs +0 -17
- package/esm2022/lib/display-types/bar-chart/models/bar-chart.model.mjs +0 -17
- package/esm2022/lib/display-types/bar-chart/models/index.mjs +0 -17
- package/lib/data-sources/test/components/index.d.ts +0 -2
- package/lib/data-sources/test/components/test-configuration/index.d.ts +0 -2
- package/lib/data-sources/test/components/test-configuration/test-configuration.component.d.ts +0 -26
- package/lib/data-sources/test/components/test-configuration/test-configuration.component.d.ts.map +0 -1
- package/lib/data-sources/test/index.d.ts +0 -5
- package/lib/data-sources/test/index.d.ts.map +0 -1
- package/lib/data-sources/test/models/index.d.ts +0 -2
- package/lib/data-sources/test/models/test.model.d.ts +0 -6
- package/lib/data-sources/test/models/test.model.d.ts.map +0 -1
- package/lib/data-sources/test/test.module.d.ts +0 -12
- package/lib/data-sources/test/test.module.d.ts.map +0 -1
- package/lib/data-sources/test/test.specification.d.ts +0 -3
- package/lib/data-sources/test/test.specification.d.ts.map +0 -1
- package/lib/display-types/bar-chart/bar-chart.module.d.ts +0 -9
- package/lib/display-types/bar-chart/bar-chart.module.d.ts.map +0 -1
- package/lib/display-types/bar-chart/bar-chart.specification.d.ts +0 -3
- package/lib/display-types/bar-chart/bar-chart.specification.d.ts.map +0 -1
- package/lib/display-types/bar-chart/components/bar-chart-display/bar-chart-display.component.d.ts +0 -11
- package/lib/display-types/bar-chart/components/bar-chart-display/bar-chart-display.component.d.ts.map +0 -1
- package/lib/display-types/bar-chart/components/bar-chart-display/index.d.ts +0 -2
- package/lib/display-types/bar-chart/components/index.d.ts +0 -2
- package/lib/display-types/bar-chart/index.d.ts +0 -5
- package/lib/display-types/bar-chart/index.d.ts.map +0 -1
- package/lib/display-types/bar-chart/models/bar-chart.model.d.ts +0 -8
- package/lib/display-types/bar-chart/models/bar-chart.model.d.ts.map +0 -1
- package/lib/display-types/bar-chart/models/index.d.ts +0 -2
|
@@ -1,30 +1,34 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Component, ViewChild, InjectionToken, Injectable, Inject, ViewContainerRef, ViewChildren, Input, ViewEncapsulation, NgModule, Pipe, EventEmitter, ChangeDetectionStrategy, Output } from '@angular/core';
|
|
3
3
|
import moment from 'moment';
|
|
4
|
-
import { BehaviorSubject, filter,
|
|
5
|
-
import { take, map as map$1 } from 'rxjs/operators';
|
|
4
|
+
import { BehaviorSubject, filter, map, Subject, Subscription, combineLatest, debounceTime, tap, startWith, distinctUntilChanged } from 'rxjs';
|
|
5
|
+
import { take, map as map$1, delay } from 'rxjs/operators';
|
|
6
6
|
import * as i1 from '@valtimo/task';
|
|
7
7
|
import { TaskModule } from '@valtimo/task';
|
|
8
8
|
import * as i2 from '@angular/router';
|
|
9
9
|
import { RouterModule } from '@angular/router';
|
|
10
10
|
import * as i3 from '@angular/common';
|
|
11
11
|
import { CommonModule } from '@angular/common';
|
|
12
|
-
import * as
|
|
13
|
-
import { WidgetModule, ListModule, BpmnJsDiagramModule, AlertModule, SpinnerModule, CarbonListModule, CarbonMultiInputModule } from '@valtimo/components';
|
|
14
|
-
import * as
|
|
12
|
+
import * as i1$1 from '@valtimo/components';
|
|
13
|
+
import { WidgetModule, ListModule, BpmnJsDiagramModule, AlertModule, SpinnerModule, CarbonListModule, CarbonMultiInputModule, InputModule as InputModule$1 } from '@valtimo/components';
|
|
14
|
+
import * as i3$1 from '@ngx-translate/core';
|
|
15
15
|
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
|
|
16
|
-
import
|
|
16
|
+
import Muuri from 'muuri';
|
|
17
17
|
import * as i1$2 from '@angular/common/http';
|
|
18
18
|
import { HttpClient } from '@angular/common/http';
|
|
19
19
|
import * as i2$1 from '@valtimo/config';
|
|
20
20
|
import { ROLE_USER } from '@valtimo/config';
|
|
21
|
-
import * as
|
|
22
|
-
import { TabsModule, ThemeModule, LoadingModule, InputModule, DropdownModule, CheckboxModule } from 'carbon-components-angular';
|
|
21
|
+
import * as i5 from 'carbon-components-angular';
|
|
22
|
+
import { TabsModule, ThemeModule, LoadingModule, InputModule, DropdownModule, ButtonModule, TilesModule, LayerModule, IconModule, CheckboxModule } from 'carbon-components-angular';
|
|
23
23
|
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
24
24
|
import { AuthGuardService } from '@valtimo/security';
|
|
25
25
|
import * as i1$3 from '@angular/forms';
|
|
26
26
|
import { Validators, ReactiveFormsModule } from '@angular/forms';
|
|
27
27
|
import * as i2$2 from '@valtimo/document';
|
|
28
|
+
import { isEqual } from 'lodash';
|
|
29
|
+
import { Add16, TrashCan16 } from '@carbon/icons';
|
|
30
|
+
import * as i3$2 from '@carbon/charts-angular';
|
|
31
|
+
import { ChartsModule } from '@carbon/charts-angular';
|
|
28
32
|
|
|
29
33
|
/*
|
|
30
34
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -91,7 +95,7 @@ class DashboardComponent {
|
|
|
91
95
|
});
|
|
92
96
|
}
|
|
93
97
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DashboardComponent, deps: [{ token: i1.TaskService }, { token: i2.ActivatedRoute }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
94
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DashboardComponent, selector: "valtimo-dashboard", viewQueries: [{ propertyName: "taskDetail", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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-list\n [items]=\"openTasks\"\n [fields]=\"openTaskFields\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n ></valtimo-list>\n </valtimo-widget>\n </ng-container>\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"getOpenTasks()\"\n (assignmentOfTaskChanged)=\"getOpenTasks()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type:
|
|
98
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DashboardComponent, selector: "valtimo-dashboard", viewQueries: [{ propertyName: "taskDetail", first: true, predicate: ["taskDetail"], descendants: true }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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-list\n [items]=\"openTasks\"\n [fields]=\"openTaskFields\"\n (rowClicked)=\"rowOpenTaskClick($event)\"\n ></valtimo-list>\n </valtimo-widget>\n </ng-container>\n <valtimo-task-detail-modal\n #taskDetail\n (formSubmit)=\"getOpenTasks()\"\n (assignmentOfTaskChanged)=\"getOpenTasks()\"\n ></valtimo-task-detail-modal>\n</div>\n\n<ng-template #loading>\n <valtimo-spinner></valtimo-spinner>\n</ng-template>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$1.WidgetComponent, selector: "valtimo-widget", inputs: ["type", "name", "icon", "contrast", "divider", "title", "subtitle", "collapseAble", "collapse", "additionalClasses"] }, { kind: "component", type: i1$1.ListComponent, selector: "valtimo-list", inputs: ["items", "fields", "pagination", "viewMode", "isSearchable", "header", "actions", "paginationIdentifier", "initialSortState", "lastColumnTemplate"], outputs: ["rowClicked", "paginationClicked", "paginationSet", "search", "sortChanged"] }, { kind: "component", type: i1.TaskDetailModalComponent, selector: "valtimo-task-detail-modal", outputs: ["formSubmit", "assignmentOfTaskChanged"] }, { kind: "component", type: i1$1.SpinnerComponent, selector: "valtimo-spinner", inputs: ["useBootstrapSpinner", "name", "type", "size", "color", "bdColor", "fullScreen", "noMarginTop"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] }); }
|
|
95
99
|
}
|
|
96
100
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DashboardComponent, decorators: [{
|
|
97
101
|
type: Component,
|
|
@@ -119,6 +123,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
119
123
|
const DATA_FEATURES = {
|
|
120
124
|
NUMBER: 'number',
|
|
121
125
|
TOTAL: 'total',
|
|
126
|
+
NUMBERS: 'numbers',
|
|
122
127
|
};
|
|
123
128
|
|
|
124
129
|
/*
|
|
@@ -173,64 +178,6 @@ const WIDGET_1X_MIN_WIDTH = 275;
|
|
|
173
178
|
* limitations under the License.
|
|
174
179
|
*/
|
|
175
180
|
|
|
176
|
-
/*
|
|
177
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
178
|
-
*
|
|
179
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
180
|
-
* you may not use this file except in compliance with the License.
|
|
181
|
-
* You may obtain a copy of the License at
|
|
182
|
-
*
|
|
183
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
184
|
-
*
|
|
185
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
186
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
187
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
188
|
-
* See the License for the specific language governing permissions and
|
|
189
|
-
* limitations under the License.
|
|
190
|
-
*/
|
|
191
|
-
class WidgetService {
|
|
192
|
-
get supportedDisplayTypes$() {
|
|
193
|
-
return this._supportedDisplayTypes$.pipe(filter(specifications => !!specifications));
|
|
194
|
-
}
|
|
195
|
-
get supportedDataSources$() {
|
|
196
|
-
return this._supportedDataSources$.pipe(filter(specifications => !!specifications));
|
|
197
|
-
}
|
|
198
|
-
get supportedDisplayTypes() {
|
|
199
|
-
return this._supportedDisplayTypes$.getValue() || [];
|
|
200
|
-
}
|
|
201
|
-
get supportedDataSources() {
|
|
202
|
-
return this._supportedDataSources$.getValue() || [];
|
|
203
|
-
}
|
|
204
|
-
constructor(supportedDisplayTypesFromToken, supportedDataSourcesFromToken) {
|
|
205
|
-
this.supportedDisplayTypesFromToken = supportedDisplayTypesFromToken;
|
|
206
|
-
this.supportedDataSourcesFromToken = supportedDataSourcesFromToken;
|
|
207
|
-
this._supportedDisplayTypes$ = new BehaviorSubject(null);
|
|
208
|
-
this._supportedDataSources$ = new BehaviorSubject(null);
|
|
209
|
-
this.setSupportedDisplayTypes(supportedDisplayTypesFromToken);
|
|
210
|
-
this.setSupportedDataSources(supportedDataSourcesFromToken);
|
|
211
|
-
}
|
|
212
|
-
setSupportedDisplayTypes(supportedDisplayTypes) {
|
|
213
|
-
this._supportedDisplayTypes$.next(supportedDisplayTypes.filter(displayType => !!displayType));
|
|
214
|
-
}
|
|
215
|
-
setSupportedDataSources(supportedDataSources) {
|
|
216
|
-
this._supportedDataSources$.next(supportedDataSources.filter(dataSource => !!dataSource));
|
|
217
|
-
}
|
|
218
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetService, deps: [{ token: DISPLAY_TYPE_TOKEN }, { token: DATA_SOURCE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
219
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetService, providedIn: 'root' }); }
|
|
220
|
-
}
|
|
221
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetService, decorators: [{
|
|
222
|
-
type: Injectable,
|
|
223
|
-
args: [{
|
|
224
|
-
providedIn: 'root',
|
|
225
|
-
}]
|
|
226
|
-
}], ctorParameters: () => [{ type: Array, decorators: [{
|
|
227
|
-
type: Inject,
|
|
228
|
-
args: [DISPLAY_TYPE_TOKEN]
|
|
229
|
-
}] }, { type: Array, decorators: [{
|
|
230
|
-
type: Inject,
|
|
231
|
-
args: [DATA_SOURCE_TOKEN]
|
|
232
|
-
}] }] });
|
|
233
|
-
|
|
234
181
|
/*
|
|
235
182
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
236
183
|
*
|
|
@@ -247,34 +194,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
247
194
|
* limitations under the License.
|
|
248
195
|
*/
|
|
249
196
|
class WidgetLayoutService {
|
|
250
|
-
get
|
|
251
|
-
return this.
|
|
197
|
+
get muuri$() {
|
|
198
|
+
return this._muuriSubject$.pipe(filter(muuri => !!muuri));
|
|
199
|
+
}
|
|
200
|
+
get muuriSubject$() {
|
|
201
|
+
return this._muuriSubject$.asObservable();
|
|
252
202
|
}
|
|
253
203
|
get widgetContainerWidth$() {
|
|
254
204
|
return this._widgetContainerWidth$.asObservable().pipe(filter(width => !!width));
|
|
255
205
|
}
|
|
256
|
-
get
|
|
257
|
-
return
|
|
258
|
-
this.widgetService.supportedDisplayTypes$,
|
|
259
|
-
this._widgetConfigurations$,
|
|
260
|
-
]).pipe(map(([displayTypes, configurations]) => configurations.map(configuration => {
|
|
261
|
-
const specification = displayTypes.find(type => type.displayTypeKey === configuration.displayType);
|
|
262
|
-
return {
|
|
263
|
-
configurationKey: configuration.key,
|
|
264
|
-
width: specification.width,
|
|
265
|
-
height: specification.height,
|
|
266
|
-
};
|
|
267
|
-
})));
|
|
206
|
+
get amountOfColumns$() {
|
|
207
|
+
return this.widgetContainerWidth$.pipe(map(containerWidth => Math.floor(containerWidth / WIDGET_1X_MIN_WIDTH)));
|
|
268
208
|
}
|
|
269
|
-
constructor(
|
|
270
|
-
this.widgetService = widgetService;
|
|
209
|
+
constructor() {
|
|
271
210
|
this._widgetContainerWidth$ = new BehaviorSubject(null);
|
|
272
211
|
this._widgetConfigurations$ = new BehaviorSubject([]);
|
|
273
|
-
this.
|
|
274
|
-
this.
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
this._layoutSubscription?.unsubscribe();
|
|
212
|
+
this._muuriSubject$ = new BehaviorSubject(null);
|
|
213
|
+
this._triggerMuuriLayout$ = new Subject();
|
|
214
|
+
this._subscriptions = new Subscription();
|
|
215
|
+
this.openMuuriSubscription();
|
|
278
216
|
}
|
|
279
217
|
setWidgetContainerWidth(width) {
|
|
280
218
|
this._widgetContainerWidth$.next(width);
|
|
@@ -282,69 +220,26 @@ class WidgetLayoutService {
|
|
|
282
220
|
setWidgetConfigurations(configurations) {
|
|
283
221
|
this._widgetConfigurations$.next(configurations);
|
|
284
222
|
}
|
|
285
|
-
|
|
286
|
-
this.
|
|
287
|
-
this.widgetContainerWidth$,
|
|
288
|
-
this.widgetConfigurationBins$,
|
|
289
|
-
]).subscribe(([widgetContainerWidth, configurationBins]) => {
|
|
290
|
-
const amountOfMinWidthColumns = this.getAmountOfMinWidthColumns(widgetContainerWidth);
|
|
291
|
-
const widget1xWidth = this.getWidget1xWidth(widgetContainerWidth, amountOfMinWidthColumns);
|
|
292
|
-
const binsToFit = configurationBins.map(configurationBin => ({
|
|
293
|
-
...configurationBin,
|
|
294
|
-
width: configurationBin.width * widget1xWidth,
|
|
295
|
-
height: configurationBin.height * WIDGET_1X_HEIGHT,
|
|
296
|
-
}));
|
|
297
|
-
const heightConstraint = this.getHeightConstraint(configurationBins, amountOfMinWidthColumns);
|
|
298
|
-
const resultWithoutHeightConstraint = this.getPackResult(binsToFit, widgetContainerWidth);
|
|
299
|
-
const resultWithHeightConstraint = this.getPackResult(binsToFit, widgetContainerWidth, heightConstraint);
|
|
300
|
-
const resultWithHeightConstraintExceedsBoundary = this.checkIfPackResultExceedsBoundary(resultWithHeightConstraint, widgetContainerWidth);
|
|
301
|
-
const resultToUse = resultWithHeightConstraintExceedsBoundary
|
|
302
|
-
? resultWithoutHeightConstraint
|
|
303
|
-
: resultWithHeightConstraint;
|
|
304
|
-
const resultWithMaxWidth = this.getResultWithMaxWidth(resultToUse, widgetContainerWidth);
|
|
305
|
-
this._widgetPackResult$.next(resultWithMaxWidth);
|
|
306
|
-
});
|
|
307
|
-
}
|
|
308
|
-
getPackResult(binsToFit, maxWidth, maxHeight) {
|
|
309
|
-
return pack(binsToFit, {
|
|
310
|
-
maxWidth,
|
|
311
|
-
...(maxHeight && { maxHeight }),
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
checkIfPackResultExceedsBoundary(result, maxWidth) {
|
|
315
|
-
return !!result.items.find(item => item.width + item.x > maxWidth);
|
|
316
|
-
}
|
|
317
|
-
getAmountOfMinWidthColumns(containerWidth) {
|
|
318
|
-
return Math.floor(containerWidth / WIDGET_1X_MIN_WIDTH);
|
|
319
|
-
}
|
|
320
|
-
getWidget1xWidth(containerWidth, amountOfMinWidthColumns) {
|
|
321
|
-
const widget1xWidth = Math.floor(containerWidth / (amountOfMinWidthColumns || 1));
|
|
322
|
-
return widget1xWidth;
|
|
223
|
+
setMuuri(muuri) {
|
|
224
|
+
this._muuriSubject$.next(muuri);
|
|
323
225
|
}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
...result,
|
|
327
|
-
items: result.items.map(item => ({
|
|
328
|
-
...item,
|
|
329
|
-
width: item.width > containerWidth ? containerWidth : item.width,
|
|
330
|
-
})),
|
|
331
|
-
};
|
|
226
|
+
triggerMuuriLayout() {
|
|
227
|
+
this._triggerMuuriLayout$.next(null);
|
|
332
228
|
}
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
return amountOfRowsNeeded * WIDGET_1X_HEIGHT;
|
|
229
|
+
openMuuriSubscription() {
|
|
230
|
+
this._subscriptions.add(combineLatest([this.muuri$, this._triggerMuuriLayout$])
|
|
231
|
+
.pipe(debounceTime(150))
|
|
232
|
+
.subscribe(([muuri]) => {
|
|
233
|
+
muuri.refreshItems();
|
|
234
|
+
muuri.layout();
|
|
235
|
+
}));
|
|
341
236
|
}
|
|
342
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetLayoutService, deps: [
|
|
237
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetLayoutService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
343
238
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetLayoutService }); }
|
|
344
239
|
}
|
|
345
240
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetLayoutService, decorators: [{
|
|
346
241
|
type: Injectable
|
|
347
|
-
}], ctorParameters: () => [
|
|
242
|
+
}], ctorParameters: () => [] });
|
|
348
243
|
|
|
349
244
|
/*
|
|
350
245
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -380,6 +275,64 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
380
275
|
}]
|
|
381
276
|
}], ctorParameters: () => [{ type: i1$2.HttpClient }, { type: i2$1.ConfigService }] });
|
|
382
277
|
|
|
278
|
+
/*
|
|
279
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
280
|
+
*
|
|
281
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
282
|
+
* you may not use this file except in compliance with the License.
|
|
283
|
+
* You may obtain a copy of the License at
|
|
284
|
+
*
|
|
285
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
286
|
+
*
|
|
287
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
288
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
289
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
290
|
+
* See the License for the specific language governing permissions and
|
|
291
|
+
* limitations under the License.
|
|
292
|
+
*/
|
|
293
|
+
class WidgetService {
|
|
294
|
+
get supportedDisplayTypes$() {
|
|
295
|
+
return this._supportedDisplayTypes$.pipe(filter(specifications => !!specifications));
|
|
296
|
+
}
|
|
297
|
+
get supportedDataSources$() {
|
|
298
|
+
return this._supportedDataSources$.pipe(filter(specifications => !!specifications));
|
|
299
|
+
}
|
|
300
|
+
get supportedDisplayTypes() {
|
|
301
|
+
return this._supportedDisplayTypes$.getValue() || [];
|
|
302
|
+
}
|
|
303
|
+
get supportedDataSources() {
|
|
304
|
+
return this._supportedDataSources$.getValue() || [];
|
|
305
|
+
}
|
|
306
|
+
constructor(supportedDisplayTypesFromToken, supportedDataSourcesFromToken) {
|
|
307
|
+
this.supportedDisplayTypesFromToken = supportedDisplayTypesFromToken;
|
|
308
|
+
this.supportedDataSourcesFromToken = supportedDataSourcesFromToken;
|
|
309
|
+
this._supportedDisplayTypes$ = new BehaviorSubject(null);
|
|
310
|
+
this._supportedDataSources$ = new BehaviorSubject(null);
|
|
311
|
+
this.setSupportedDisplayTypes(supportedDisplayTypesFromToken);
|
|
312
|
+
this.setSupportedDataSources(supportedDataSourcesFromToken);
|
|
313
|
+
}
|
|
314
|
+
setSupportedDisplayTypes(supportedDisplayTypes) {
|
|
315
|
+
this._supportedDisplayTypes$.next(supportedDisplayTypes.filter(displayType => !!displayType));
|
|
316
|
+
}
|
|
317
|
+
setSupportedDataSources(supportedDataSources) {
|
|
318
|
+
this._supportedDataSources$.next(supportedDataSources.filter(dataSource => !!dataSource));
|
|
319
|
+
}
|
|
320
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetService, deps: [{ token: DISPLAY_TYPE_TOKEN }, { token: DATA_SOURCE_TOKEN }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
321
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetService, providedIn: 'root' }); }
|
|
322
|
+
}
|
|
323
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetService, decorators: [{
|
|
324
|
+
type: Injectable,
|
|
325
|
+
args: [{
|
|
326
|
+
providedIn: 'root',
|
|
327
|
+
}]
|
|
328
|
+
}], ctorParameters: () => [{ type: Array, decorators: [{
|
|
329
|
+
type: Inject,
|
|
330
|
+
args: [DISPLAY_TYPE_TOKEN]
|
|
331
|
+
}] }, { type: Array, decorators: [{
|
|
332
|
+
type: Inject,
|
|
333
|
+
args: [DATA_SOURCE_TOKEN]
|
|
334
|
+
}] }] });
|
|
335
|
+
|
|
383
336
|
/*
|
|
384
337
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
385
338
|
*
|
|
@@ -425,7 +378,7 @@ class WidgetTranslationService {
|
|
|
425
378
|
}
|
|
426
379
|
return translation || `${key}.${translateKey}`;
|
|
427
380
|
}
|
|
428
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetTranslationService, deps: [{ token:
|
|
381
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetTranslationService, deps: [{ token: i3$1.TranslateService }, { token: WidgetService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
429
382
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetTranslationService, providedIn: 'root' }); }
|
|
430
383
|
}
|
|
431
384
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetTranslationService, decorators: [{
|
|
@@ -433,7 +386,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
433
386
|
args: [{
|
|
434
387
|
providedIn: 'root',
|
|
435
388
|
}]
|
|
436
|
-
}], ctorParameters: () => [{ type:
|
|
389
|
+
}], ctorParameters: () => [{ type: i3$1.TranslateService }, { type: WidgetService }] });
|
|
437
390
|
|
|
438
391
|
/*
|
|
439
392
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -468,27 +421,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
468
421
|
*/
|
|
469
422
|
class WidgetDashboardContentComponent {
|
|
470
423
|
set widgetData(value) {
|
|
471
|
-
this.
|
|
424
|
+
this._isLoading$.next(value.loading);
|
|
472
425
|
this._widgetData$.next(value.data);
|
|
473
426
|
}
|
|
474
427
|
set dashboard(value) {
|
|
475
428
|
this.setWidgetConfigurations(value);
|
|
476
429
|
}
|
|
430
|
+
get _muuriInitialized$() {
|
|
431
|
+
return this._muuri$.pipe(map$1(muuri => !!muuri));
|
|
432
|
+
}
|
|
477
433
|
constructor(layoutService, widgetService, renderer) {
|
|
478
434
|
this.layoutService = layoutService;
|
|
479
435
|
this.widgetService = widgetService;
|
|
480
436
|
this.renderer = renderer;
|
|
481
|
-
this.
|
|
437
|
+
this._isLoading$ = new BehaviorSubject(true);
|
|
482
438
|
this._widgetData$ = new BehaviorSubject([]);
|
|
483
439
|
this.widgetConfigurations$ = new BehaviorSubject(null);
|
|
484
440
|
this._subscriptions = new Subscription();
|
|
441
|
+
this._muuri$ = this.layoutService.muuriSubject$;
|
|
442
|
+
this._creatingMuuri = false;
|
|
443
|
+
this._noResults$ = new BehaviorSubject(false);
|
|
444
|
+
this.loaded$ = combineLatest([
|
|
445
|
+
this._isLoading$,
|
|
446
|
+
this._muuriInitialized$,
|
|
447
|
+
this._noResults$,
|
|
448
|
+
]).pipe(map$1(([isLoading, muuriInitialized, noResults]) => !isLoading && (muuriInitialized || noResults)), delay(400));
|
|
485
449
|
}
|
|
486
450
|
ngAfterViewInit() {
|
|
487
451
|
this._observer = new ResizeObserver(event => {
|
|
488
452
|
this.observerMutation(event);
|
|
489
453
|
});
|
|
490
454
|
this._observer.observe(this._widgetContainerRef.nativeElement);
|
|
491
|
-
this.
|
|
455
|
+
this.openWidgetSizeSubscription();
|
|
492
456
|
this.renderWidgets();
|
|
493
457
|
}
|
|
494
458
|
ngOnDestroy() {
|
|
@@ -508,17 +472,34 @@ class WidgetDashboardContentComponent {
|
|
|
508
472
|
this.layoutService.setWidgetContainerWidth(widgetContainerWidth);
|
|
509
473
|
}
|
|
510
474
|
}
|
|
511
|
-
|
|
512
|
-
this._subscriptions.add(
|
|
513
|
-
this.
|
|
475
|
+
openWidgetSizeSubscription() {
|
|
476
|
+
this._subscriptions.add(combineLatest([
|
|
477
|
+
this.layoutService.amountOfColumns$,
|
|
478
|
+
this.widgetConfigurations$,
|
|
479
|
+
this.widgetService.supportedDisplayTypes$,
|
|
480
|
+
this._muuri$,
|
|
481
|
+
]).subscribe(([amountOfColumns, widgetConfigurations, supportedDisplayTypes, muuri]) => {
|
|
514
482
|
this._widgetConfigurationRefs.toArray().forEach(widgetConfigurationRef => {
|
|
515
483
|
const nativeElement = widgetConfigurationRef.nativeElement;
|
|
516
|
-
const
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
484
|
+
const widgetConfiguration = widgetConfigurations.find(config => config.key === nativeElement.id);
|
|
485
|
+
const specification = supportedDisplayTypes.find(type => type.displayTypeKey === widgetConfiguration.displayType);
|
|
486
|
+
const widthPercentage = specification.width > amountOfColumns
|
|
487
|
+
? 100
|
|
488
|
+
: (specification.width / amountOfColumns) * 100;
|
|
489
|
+
this.renderer.setStyle(nativeElement, 'height', `${WIDGET_1X_HEIGHT * specification.height}px`);
|
|
490
|
+
this.renderer.setStyle(nativeElement, 'width', `${widthPercentage}%`);
|
|
521
491
|
});
|
|
492
|
+
if (widgetConfigurations.length > 0) {
|
|
493
|
+
if (!muuri) {
|
|
494
|
+
this.initMuuri();
|
|
495
|
+
}
|
|
496
|
+
else {
|
|
497
|
+
this.layoutService.triggerMuuriLayout();
|
|
498
|
+
}
|
|
499
|
+
}
|
|
500
|
+
else {
|
|
501
|
+
this._noResults$.next(true);
|
|
502
|
+
}
|
|
522
503
|
}));
|
|
523
504
|
}
|
|
524
505
|
renderWidgets() {
|
|
@@ -542,12 +523,24 @@ class WidgetDashboardContentComponent {
|
|
|
542
523
|
});
|
|
543
524
|
}));
|
|
544
525
|
}
|
|
526
|
+
initMuuri() {
|
|
527
|
+
if (!this._widgetContainerRef || this._creatingMuuri)
|
|
528
|
+
return;
|
|
529
|
+
this._creatingMuuri = true;
|
|
530
|
+
this.layoutService.setMuuri(new Muuri(this._widgetContainerRef.nativeElement, {
|
|
531
|
+
layout: {
|
|
532
|
+
fillGaps: true,
|
|
533
|
+
},
|
|
534
|
+
layoutOnResize: false,
|
|
535
|
+
}));
|
|
536
|
+
this._creatingMuuri = false;
|
|
537
|
+
}
|
|
545
538
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetDashboardContentComponent, deps: [{ token: WidgetLayoutService }, { token: WidgetService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
546
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: WidgetDashboardContentComponent, selector: "valtimo-widget-dashboard-content", inputs: { widgetData: "widgetData", dashboard: "dashboard" }, providers: [WidgetLayoutService], viewQueries: [{ propertyName: "_widgetContainerRef", first: true, predicate: ["widgetContainer"], descendants: true }, { propertyName: "_widgetConfigurationRefs", predicate: ["widgetConfiguration"], descendants: true }, { propertyName: "_widgetConfigurationContentVcRefs", predicate: ["widgetConfigurationContent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<
|
|
539
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: WidgetDashboardContentComponent, selector: "valtimo-widget-dashboard-content", inputs: { widgetData: "widgetData", dashboard: "dashboard" }, providers: [WidgetLayoutService], viewQueries: [{ propertyName: "_widgetContainerRef", first: true, predicate: ["widgetContainer"], descendants: true }, { propertyName: "_widgetConfigurationRefs", predicate: ["widgetConfiguration"], descendants: true }, { propertyName: "_widgetConfigurationContentVcRefs", predicate: ["widgetConfigurationContent"], descendants: true, read: ViewContainerRef }], ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"{loaded: loaded$ | async} as obs\">\n <div *ngIf=\"!obs.loaded\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-container>\n\n<div\n #widgetContainer\n class=\"widget-container\"\n [ngClass]=\"{'widget-container__visible': loaded$ | async}\"\n>\n <ng-container *ngIf=\"widgetConfigurations$ | async as widgetConfigurations\">\n <ng-container *ngFor=\"let config of widgetConfigurations\">\n <div #widgetConfiguration [id]=\"config.key\" class=\"widget-configuration\">\n <div class=\"widget-configuration-content\">\n <ng-container #widgetConfigurationContent></ng-container>\n </div>\n </div>\n </ng-container>\n\n <valtimo-no-results\n *ngIf=\"!widgetConfigurations.length\"\n [title]=\"'dashboard.noWidgets' | translate\"\n [description]=\"'dashboard.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n </ng-container>\n</div>\n", styles: [":host{position:relative}.widget-container{margin-top:16px;width:calc(100% + 16px);margin-left:-8px;position:relative;visibility:hidden}.widget-container__visible{visibility:visible}.widget-configuration{position:absolute;display:flex;justify-content:center;align-items:center}.widget-configuration-content{width:calc(100% - 16px);height:calc(100% - 16px);background-color:#fff}.loading-container{padding-top:32px;position:absolute;top:0;display:flex;width:100%;justify-content:center}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.Loading, selector: "cds-loading, ibm-loading", inputs: ["title", "isActive", "size", "overlay"] }, { kind: "component", type: i1$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }] }); }
|
|
547
540
|
}
|
|
548
541
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetDashboardContentComponent, decorators: [{
|
|
549
542
|
type: Component,
|
|
550
|
-
args: [{ selector: 'valtimo-widget-dashboard-content', providers: [WidgetLayoutService], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<
|
|
543
|
+
args: [{ selector: 'valtimo-widget-dashboard-content', providers: [WidgetLayoutService], template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<ng-container *ngIf=\"{loaded: loaded$ | async} as obs\">\n <div *ngIf=\"!obs.loaded\" class=\"loading-container\">\n <cds-loading></cds-loading>\n </div>\n</ng-container>\n\n<div\n #widgetContainer\n class=\"widget-container\"\n [ngClass]=\"{'widget-container__visible': loaded$ | async}\"\n>\n <ng-container *ngIf=\"widgetConfigurations$ | async as widgetConfigurations\">\n <ng-container *ngFor=\"let config of widgetConfigurations\">\n <div #widgetConfiguration [id]=\"config.key\" class=\"widget-configuration\">\n <div class=\"widget-configuration-content\">\n <ng-container #widgetConfigurationContent></ng-container>\n </div>\n </div>\n </ng-container>\n\n <valtimo-no-results\n *ngIf=\"!widgetConfigurations.length\"\n [title]=\"'dashboard.noWidgets' | translate\"\n [description]=\"'dashboard.noWidgetsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-widgets.svg\"\n ></valtimo-no-results>\n </ng-container>\n</div>\n", styles: [":host{position:relative}.widget-container{margin-top:16px;width:calc(100% + 16px);margin-left:-8px;position:relative;visibility:hidden}.widget-container__visible{visibility:visible}.widget-configuration{position:absolute;display:flex;justify-content:center;align-items:center}.widget-configuration-content{width:calc(100% - 16px);height:calc(100% - 16px);background-color:#fff}.loading-container{padding-top:32px;position:absolute;top:0;display:flex;width:100%;justify-content:center}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
551
544
|
}], ctorParameters: () => [{ type: WidgetLayoutService }, { type: WidgetService }, { type: i0.Renderer2 }], propDecorators: { _widgetConfigurationRefs: [{
|
|
552
545
|
type: ViewChildren,
|
|
553
546
|
args: ['widgetConfiguration']
|
|
@@ -625,24 +618,24 @@ class WidgetDashboardComponent {
|
|
|
625
618
|
data: [],
|
|
626
619
|
loading: true,
|
|
627
620
|
});
|
|
621
|
+
this.selectedDashboardKey$ = new BehaviorSubject('');
|
|
628
622
|
}
|
|
629
623
|
onTabSelected(dashboardKey) {
|
|
624
|
+
this.selectedDashboardKey$.next(dashboardKey);
|
|
625
|
+
this.activeWidgetData$.next({ data: [], loading: true });
|
|
630
626
|
this.widgetApiService
|
|
631
627
|
.getWidgetData(dashboardKey)
|
|
632
|
-
.pipe(tap(() => {
|
|
633
|
-
this.activeWidgetData$.next({ data: [], loading: true });
|
|
634
|
-
}), take$1(1))
|
|
635
628
|
.subscribe((data) => this.activeWidgetData$.next({ data, loading: false }));
|
|
636
629
|
}
|
|
637
630
|
trackByIndex(index) {
|
|
638
631
|
return index;
|
|
639
632
|
}
|
|
640
633
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetDashboardComponent, deps: [{ token: DashboardService }, { token: WidgetApiService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
641
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: WidgetDashboardComponent, selector: "valtimo-widget-dashboard", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngIf=\"dashboards$ | async as dashboards\" class=\"dashboards-container\">\n <valtimo-no-results\n *ngIf=\"!dashboards.length\"\n [title]=\"'dashboard.noDashboards' | translate\"\n [description]=\"'dashboard.noDashboardsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-dashboards.svg\"\n ></valtimo-no-results>\n\n <div *ngIf=\"dashboards.length === 1\">\n <h4>{{ dashboards[0].title }}</h4>\n\n <valtimo-widget-dashboard-content\n [dashboard]=\"dashboards[0]\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </div>\n\n <div *ngIf=\"dashboards.length > 1\">\n <cds-tabs>\n <cds-tab\n *ngFor=\"let dashboard of dashboards; trackBy: trackByIndex\"\n [heading]=\"dashboard.title\"\n (selected)=\"onTabSelected(dashboard.key)\"\n >\n <valtimo-widget-dashboard-content\n [dashboard]=\"dashboard\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </cds-tab>\n </cds-tabs>\n </div>\n</div>\n", styles: [".dashboards-container .cds--tab-content{outline:0;padding:0}.dashboards-container .valtimo-no-results,.widget-container .valtimo-no-results{flex-wrap:wrap;align-items:flex-start;align-content:center;flex-direction:column;gap:16px!important}.dashboards-container .valtimo-no-results__content,.widget-container .valtimo-no-results__content{gap:16px!important;max-width:500px;line-height:20px}.dashboards-container .valtimo-no-results img,.widget-container .valtimo-no-results img{padding-left:0!important}.dashboards-container .valtimo-no-results span,.dashboards-container .valtimo-no-results h4,.widget-container .valtimo-no-results span,.widget-container .valtimo-no-results h4{width:100%!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type:
|
|
634
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: WidgetDashboardComponent, selector: "valtimo-widget-dashboard", ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngIf=\"dashboards$ | async as dashboards\" class=\"dashboards-container\">\n <valtimo-no-results\n *ngIf=\"!dashboards.length\"\n [title]=\"'dashboard.noDashboards' | translate\"\n [description]=\"'dashboard.noDashboardsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-dashboards.svg\"\n ></valtimo-no-results>\n\n <div *ngIf=\"dashboards.length === 1\">\n <h4>{{ dashboards[0].title }}</h4>\n\n <valtimo-widget-dashboard-content\n [dashboard]=\"dashboards[0]\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </div>\n\n <div *ngIf=\"dashboards.length > 1\">\n <cds-tabs>\n <cds-tab\n *ngFor=\"let dashboard of dashboards; trackBy: trackByIndex\"\n [heading]=\"dashboard.title\"\n (selected)=\"onTabSelected(dashboard.key)\"\n >\n <valtimo-widget-dashboard-content\n *ngIf=\"(selectedDashboardKey$ | async) === dashboard.key\"\n [dashboard]=\"dashboard\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </cds-tab>\n </cds-tabs>\n </div>\n</div>\n", styles: [".dashboards-container .cds--tab-content{outline:0;padding:0}.dashboards-container .valtimo-no-results,.widget-container .valtimo-no-results{flex-wrap:wrap;align-items:flex-start;align-content:center;flex-direction:column;gap:16px!important}.dashboards-container .valtimo-no-results__content,.widget-container .valtimo-no-results__content{gap:16px!important;max-width:500px;line-height:20px}.dashboards-container .valtimo-no-results img,.widget-container .valtimo-no-results img{padding-left:0!important}.dashboards-container .valtimo-no-results span,.dashboards-container .valtimo-no-results h4,.widget-container .valtimo-no-results span,.widget-container .valtimo-no-results h4{width:100%!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i5.Tabs, selector: "cds-tabs, ibm-tabs", inputs: ["position", "cacheActive", "followFocus", "isNavigation", "ariaLabel", "ariaLabelledby", "type", "theme", "skeleton"] }, { kind: "component", type: i5.Tab, selector: "cds-tab, ibm-tab", inputs: ["heading", "title", "context", "active", "disabled", "tabIndex", "id", "cacheActive"], outputs: ["selected"] }, { kind: "component", type: i1$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "component", type: WidgetDashboardContentComponent, selector: "valtimo-widget-dashboard-content", inputs: ["widgetData", "dashboard"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
642
635
|
}
|
|
643
636
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: WidgetDashboardComponent, decorators: [{
|
|
644
637
|
type: Component,
|
|
645
|
-
args: [{ selector: 'valtimo-widget-dashboard', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngIf=\"dashboards$ | async as dashboards\" class=\"dashboards-container\">\n <valtimo-no-results\n *ngIf=\"!dashboards.length\"\n [title]=\"'dashboard.noDashboards' | translate\"\n [description]=\"'dashboard.noDashboardsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-dashboards.svg\"\n ></valtimo-no-results>\n\n <div *ngIf=\"dashboards.length === 1\">\n <h4>{{ dashboards[0].title }}</h4>\n\n <valtimo-widget-dashboard-content\n [dashboard]=\"dashboards[0]\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </div>\n\n <div *ngIf=\"dashboards.length > 1\">\n <cds-tabs>\n <cds-tab\n *ngFor=\"let dashboard of dashboards; trackBy: trackByIndex\"\n [heading]=\"dashboard.title\"\n (selected)=\"onTabSelected(dashboard.key)\"\n >\n <valtimo-widget-dashboard-content\n [dashboard]=\"dashboard\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </cds-tab>\n </cds-tabs>\n </div>\n</div>\n", styles: [".dashboards-container .cds--tab-content{outline:0;padding:0}.dashboards-container .valtimo-no-results,.widget-container .valtimo-no-results{flex-wrap:wrap;align-items:flex-start;align-content:center;flex-direction:column;gap:16px!important}.dashboards-container .valtimo-no-results__content,.widget-container .valtimo-no-results__content{gap:16px!important;max-width:500px;line-height:20px}.dashboards-container .valtimo-no-results img,.widget-container .valtimo-no-results img{padding-left:0!important}.dashboards-container .valtimo-no-results span,.dashboards-container .valtimo-no-results h4,.widget-container .valtimo-no-results span,.widget-container .valtimo-no-results h4{width:100%!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
638
|
+
args: [{ selector: 'valtimo-widget-dashboard', encapsulation: ViewEncapsulation.None, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<div *ngIf=\"dashboards$ | async as dashboards\" class=\"dashboards-container\">\n <valtimo-no-results\n *ngIf=\"!dashboards.length\"\n [title]=\"'dashboard.noDashboards' | translate\"\n [description]=\"'dashboard.noDashboardsDescription' | translate\"\n illustration=\"valtimo-layout/img/no-dashboards.svg\"\n ></valtimo-no-results>\n\n <div *ngIf=\"dashboards.length === 1\">\n <h4>{{ dashboards[0].title }}</h4>\n\n <valtimo-widget-dashboard-content\n [dashboard]=\"dashboards[0]\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </div>\n\n <div *ngIf=\"dashboards.length > 1\">\n <cds-tabs>\n <cds-tab\n *ngFor=\"let dashboard of dashboards; trackBy: trackByIndex\"\n [heading]=\"dashboard.title\"\n (selected)=\"onTabSelected(dashboard.key)\"\n >\n <valtimo-widget-dashboard-content\n *ngIf=\"(selectedDashboardKey$ | async) === dashboard.key\"\n [dashboard]=\"dashboard\"\n [widgetData]=\"activeWidgetData$ | async\"\n ></valtimo-widget-dashboard-content>\n </cds-tab>\n </cds-tabs>\n </div>\n</div>\n", styles: [".dashboards-container .cds--tab-content{outline:0;padding:0}.dashboards-container .valtimo-no-results,.widget-container .valtimo-no-results{flex-wrap:wrap;align-items:flex-start;align-content:center;flex-direction:column;gap:16px!important}.dashboards-container .valtimo-no-results__content,.widget-container .valtimo-no-results__content{gap:16px!important;max-width:500px;line-height:20px}.dashboards-container .valtimo-no-results img,.widget-container .valtimo-no-results img{padding-left:0!important}.dashboards-container .valtimo-no-results span,.dashboards-container .valtimo-no-results h4,.widget-container .valtimo-no-results span,.widget-container .valtimo-no-results h4{width:100%!important}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
646
639
|
}], ctorParameters: () => [{ type: DashboardService }, { type: WidgetApiService }] });
|
|
647
640
|
|
|
648
641
|
/*
|
|
@@ -800,7 +793,7 @@ class DashboardModule {
|
|
|
800
793
|
DashboardRoutingModule,
|
|
801
794
|
WidgetModule,
|
|
802
795
|
ListModule,
|
|
803
|
-
BpmnJsDiagramModule,
|
|
796
|
+
BpmnJsDiagramModule, i3$1.TranslateModule, AlertModule,
|
|
804
797
|
TaskModule,
|
|
805
798
|
SpinnerModule,
|
|
806
799
|
TabsModule,
|
|
@@ -866,78 +859,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
866
859
|
}]
|
|
867
860
|
}] });
|
|
868
861
|
|
|
869
|
-
/*
|
|
870
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
871
|
-
*
|
|
872
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
873
|
-
* you may not use this file except in compliance with the License.
|
|
874
|
-
* You may obtain a copy of the License at
|
|
875
|
-
*
|
|
876
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
877
|
-
*
|
|
878
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
879
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
880
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
881
|
-
* See the License for the specific language governing permissions and
|
|
882
|
-
* limitations under the License.
|
|
883
|
-
*/
|
|
884
|
-
class TestConfigurationComponent {
|
|
885
|
-
set disabled(disabledValue) {
|
|
886
|
-
if (disabledValue) {
|
|
887
|
-
this.form.disable();
|
|
888
|
-
}
|
|
889
|
-
else {
|
|
890
|
-
this.form.enable();
|
|
891
|
-
}
|
|
892
|
-
}
|
|
893
|
-
get value() {
|
|
894
|
-
return this.form.get('value');
|
|
895
|
-
}
|
|
896
|
-
get total() {
|
|
897
|
-
return this.form.get('total');
|
|
898
|
-
}
|
|
899
|
-
set prefillConfiguration(configurationValue) {
|
|
900
|
-
if (configurationValue) {
|
|
901
|
-
this.value.setValue(configurationValue.value);
|
|
902
|
-
this.total.setValue(configurationValue.total);
|
|
903
|
-
}
|
|
904
|
-
}
|
|
905
|
-
constructor(fb) {
|
|
906
|
-
this.fb = fb;
|
|
907
|
-
this.form = this.fb.group({
|
|
908
|
-
value: this.fb.control(null, [Validators.required]),
|
|
909
|
-
total: this.fb.control(null, [Validators.required]),
|
|
910
|
-
});
|
|
911
|
-
this.configurationEvent = new EventEmitter();
|
|
912
|
-
this._subscriptions = new Subscription();
|
|
913
|
-
}
|
|
914
|
-
ngOnInit() {
|
|
915
|
-
this.openFormSubscription();
|
|
916
|
-
}
|
|
917
|
-
ngOnDestroy() {
|
|
918
|
-
this._subscriptions.unsubscribe();
|
|
919
|
-
}
|
|
920
|
-
openFormSubscription() {
|
|
921
|
-
this._subscriptions.add(this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {
|
|
922
|
-
this.configurationEvent.emit({ valid: this.form.valid, data: formValue });
|
|
923
|
-
}));
|
|
924
|
-
}
|
|
925
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TestConfigurationComponent, deps: [{ token: i1$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
926
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: TestConfigurationComponent, selector: "ng-component", inputs: { dataSourceKey: "dataSourceKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'valueHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'valueHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"value.dirty && value.invalid\"\n >\n {{ 'value' | widgetTranslate: dataSourceKey | async }}\n\n <input\n cdsText\n formControlName=\"value\"\n [invalid]=\"value.dirty && value.invalid\"\n type=\"number\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'totalHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'totalHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"total.dirty && total.invalid\"\n >\n {{ 'total' | widgetTranslate: dataSourceKey | async }}\n\n <input\n cdsText\n formControlName=\"total\"\n [invalid]=\"total.dirty && total.invalid\"\n type=\"number\"\n />\n </cds-label>\n </div>\n</form>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i4$1.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i4$1.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: WidgetTranslatePipe, name: "widgetTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
927
|
-
}
|
|
928
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TestConfigurationComponent, decorators: [{
|
|
929
|
-
type: Component,
|
|
930
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form [formGroup]=\"form\">\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'valueHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'valueHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"value.dirty && value.invalid\"\n >\n {{ 'value' | widgetTranslate: dataSourceKey | async }}\n\n <input\n cdsText\n formControlName=\"value\"\n [invalid]=\"value.dirty && value.invalid\"\n type=\"number\"\n />\n </cds-label>\n </div>\n\n <div class=\"form__element\">\n <cds-label\n [helperText]=\"'totalHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalidText]=\"'totalHelperText' | widgetTranslate: dataSourceKey | async\"\n [invalid]=\"total.dirty && total.invalid\"\n >\n {{ 'total' | widgetTranslate: dataSourceKey | async }}\n\n <input\n cdsText\n formControlName=\"total\"\n [invalid]=\"total.dirty && total.invalid\"\n type=\"number\"\n />\n </cds-label>\n </div>\n</form>\n", styles: ["/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
931
|
-
}], ctorParameters: () => [{ type: i1$3.FormBuilder }], propDecorators: { dataSourceKey: [{
|
|
932
|
-
type: Input
|
|
933
|
-
}], disabled: [{
|
|
934
|
-
type: Input
|
|
935
|
-
}], prefillConfiguration: [{
|
|
936
|
-
type: Input
|
|
937
|
-
}], configurationEvent: [{
|
|
938
|
-
type: Output
|
|
939
|
-
}] } });
|
|
940
|
-
|
|
941
862
|
/*
|
|
942
863
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
943
864
|
*
|
|
@@ -985,6 +906,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
985
906
|
* See the License for the specific language governing permissions and
|
|
986
907
|
* limitations under the License.
|
|
987
908
|
*/
|
|
909
|
+
var Operator;
|
|
910
|
+
(function (Operator) {
|
|
911
|
+
Operator["NOT_EQUAL_TO"] = "!=";
|
|
912
|
+
Operator["EQUAL_TO"] = "==";
|
|
913
|
+
Operator["GREATER_THAN"] = ">";
|
|
914
|
+
Operator["GREATER_THAN_OR_EQUAL_TO"] = ">=";
|
|
915
|
+
Operator["LESS_THAN"] = "<";
|
|
916
|
+
Operator["LESS_THAN_OR_EQUAL_TO"] = "<=";
|
|
917
|
+
})(Operator || (Operator = {}));
|
|
988
918
|
|
|
989
919
|
/*
|
|
990
920
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -1017,33 +947,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1017
947
|
* See the License for the specific language governing permissions and
|
|
1018
948
|
* limitations under the License.
|
|
1019
949
|
*/
|
|
1020
|
-
const testDataSourceSpecification = {
|
|
1021
|
-
dataSourceKey: 'test',
|
|
1022
|
-
configurationComponent: TestConfigurationComponent,
|
|
1023
|
-
translations: {
|
|
1024
|
-
de: {
|
|
1025
|
-
title: 'Test-Datenquelle',
|
|
1026
|
-
value: 'Wert (erforderlich)',
|
|
1027
|
-
valueHelperText: 'Der im Widget angezeigte Wert',
|
|
1028
|
-
total: 'Gesamtwert (erforderlich)',
|
|
1029
|
-
totalHelperText: 'Der im Widget angezeigte Gesamtwert',
|
|
1030
|
-
},
|
|
1031
|
-
en: {
|
|
1032
|
-
title: 'Test data source',
|
|
1033
|
-
value: 'Value (required)',
|
|
1034
|
-
valueHelperText: 'The value displayed in the widget',
|
|
1035
|
-
total: 'Total value (required)',
|
|
1036
|
-
totalHelperText: 'The total value displayed in the widget',
|
|
1037
|
-
},
|
|
1038
|
-
nl: {
|
|
1039
|
-
title: 'Testdatabron',
|
|
1040
|
-
value: 'Waarde (vereist)',
|
|
1041
|
-
valueHelperText: 'De waarde die wordt weergegeven in de widget',
|
|
1042
|
-
total: 'Totaalwaarde (vereist)',
|
|
1043
|
-
totalHelperText: 'De totaalwaarde die wordt weergegeven in de widget',
|
|
1044
|
-
},
|
|
1045
|
-
},
|
|
1046
|
-
};
|
|
1047
950
|
|
|
1048
951
|
/*
|
|
1049
952
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -1060,20 +963,6 @@ const testDataSourceSpecification = {
|
|
|
1060
963
|
* See the License for the specific language governing permissions and
|
|
1061
964
|
* limitations under the License.
|
|
1062
965
|
*/
|
|
1063
|
-
class TestDataSourceModule {
|
|
1064
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TestDataSourceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1065
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: TestDataSourceModule, declarations: [TestConfigurationComponent], imports: [CommonModule, ReactiveFormsModule, WidgetTranslatePipeModule, InputModule], exports: [TestConfigurationComponent] }); }
|
|
1066
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TestDataSourceModule, providers: [{ provide: DATA_SOURCE_TOKEN, useValue: testDataSourceSpecification, multi: true }], imports: [CommonModule, ReactiveFormsModule, WidgetTranslatePipeModule, InputModule] }); }
|
|
1067
|
-
}
|
|
1068
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TestDataSourceModule, decorators: [{
|
|
1069
|
-
type: NgModule,
|
|
1070
|
-
args: [{
|
|
1071
|
-
declarations: [TestConfigurationComponent],
|
|
1072
|
-
imports: [CommonModule, ReactiveFormsModule, WidgetTranslatePipeModule, InputModule],
|
|
1073
|
-
exports: [TestConfigurationComponent],
|
|
1074
|
-
providers: [{ provide: DATA_SOURCE_TOKEN, useValue: testDataSourceSpecification, multi: true }],
|
|
1075
|
-
}]
|
|
1076
|
-
}] });
|
|
1077
966
|
|
|
1078
967
|
/*
|
|
1079
968
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -1090,31 +979,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1090
979
|
* See the License for the specific language governing permissions and
|
|
1091
980
|
* limitations under the License.
|
|
1092
981
|
*/
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1102
|
-
*
|
|
1103
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1104
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
1105
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1106
|
-
* See the License for the specific language governing permissions and
|
|
1107
|
-
* limitations under the License.
|
|
1108
|
-
*/
|
|
1109
|
-
var Operator;
|
|
1110
|
-
(function (Operator) {
|
|
1111
|
-
Operator["NOT_EQUAL_TO"] = "!=";
|
|
1112
|
-
Operator["EQUAL_TO"] = "==";
|
|
1113
|
-
Operator["GREATER_THAN"] = ">";
|
|
1114
|
-
Operator["GREATER_THAN_OR_EQUAL_TO"] = ">=";
|
|
1115
|
-
Operator["LESS_THAN"] = "<";
|
|
1116
|
-
Operator["LESS_THAN_OR_EQUAL_TO"] = "<=";
|
|
1117
|
-
})(Operator || (Operator = {}));
|
|
982
|
+
var WidgetSeverity;
|
|
983
|
+
(function (WidgetSeverity) {
|
|
984
|
+
WidgetSeverity["BLACK"] = "valtimo-severity__black";
|
|
985
|
+
WidgetSeverity["GREEN"] = "valtimo-severity__green";
|
|
986
|
+
WidgetSeverity["YELLOW"] = "valtimo-severity__yellow";
|
|
987
|
+
WidgetSeverity["ORANGE"] = "valtimo-severity__orange";
|
|
988
|
+
WidgetSeverity["RED"] = "valtimo-severity__red";
|
|
989
|
+
})(WidgetSeverity || (WidgetSeverity = {}));
|
|
1118
990
|
|
|
1119
991
|
/*
|
|
1120
992
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -1252,13 +1124,13 @@ class CaseCountConfigurationComponent {
|
|
|
1252
1124
|
});
|
|
1253
1125
|
}));
|
|
1254
1126
|
}
|
|
1255
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseCountConfigurationComponent, deps: [{ token: i1$3.FormBuilder }, { token: i2$2.DocumentService }, { token:
|
|
1256
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: CaseCountConfigurationComponent, selector: "ng-component", inputs: { dataSourceKey: "dataSourceKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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 [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
|
|
1127
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseCountConfigurationComponent, deps: [{ token: i1$3.FormBuilder }, { token: i2$2.DocumentService }, { token: i3$1.TranslateService }, { token: WidgetTranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1128
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: CaseCountConfigurationComponent, selector: "ng-component", inputs: { dataSourceKey: "dataSourceKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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 [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", styles: ["::ng-deep .case-count-configuration-form .conditions-label{margin-bottom:16px}::ng-deep .case-count-configuration-form .conditions-multi-input .cds--form__helper-text{font-style:italic}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "component", type: i5.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i1$1.CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: ["name", "title", "titleTranslationKey", "type", "arbitraryValueAmount", "arbitraryAmountTitles", "initialAmountOfRows", "minimumAmountOfRows", "maxRows", "addRowText", "addRowTranslationKey", "deleteRowText", "deleteRowTranslationKey", "disabled", "defaultValues", "margin", "tooltip", "required", "keyColumnTitle", "valueColumnTitle", "dropdownColumnTitle", "hideDeleteButton", "hideAddButton", "dropdownItems", "dropdownWidth", "fullWidth", "carbonTheme"], outputs: ["valueChange", "allValuesValidEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: WidgetTranslatePipe, name: "widgetTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1257
1129
|
}
|
|
1258
1130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseCountConfigurationComponent, decorators: [{
|
|
1259
1131
|
type: Component,
|
|
1260
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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 [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
|
|
1261
|
-
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: i2$2.DocumentService }, { type:
|
|
1132
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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 [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", styles: ["::ng-deep .case-count-configuration-form .conditions-label{margin-bottom:16px}::ng-deep .case-count-configuration-form .conditions-multi-input .cds--form__helper-text{font-style:italic}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1133
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: i2$2.DocumentService }, { type: i3$1.TranslateService }, { type: WidgetTranslationService }], propDecorators: { dataSourceKey: [{
|
|
1262
1134
|
type: Input
|
|
1263
1135
|
}], disabled: [{
|
|
1264
1136
|
type: Input
|
|
@@ -1300,6 +1172,38 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1300
1172
|
* limitations under the License.
|
|
1301
1173
|
*/
|
|
1302
1174
|
|
|
1175
|
+
/*
|
|
1176
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1177
|
+
*
|
|
1178
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1179
|
+
* you may not use this file except in compliance with the License.
|
|
1180
|
+
* You may obtain a copy of the License at
|
|
1181
|
+
*
|
|
1182
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1183
|
+
*
|
|
1184
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1185
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1186
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1187
|
+
* See the License for the specific language governing permissions and
|
|
1188
|
+
* limitations under the License.
|
|
1189
|
+
*/
|
|
1190
|
+
|
|
1191
|
+
/*
|
|
1192
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1193
|
+
*
|
|
1194
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1195
|
+
* you may not use this file except in compliance with the License.
|
|
1196
|
+
* You may obtain a copy of the License at
|
|
1197
|
+
*
|
|
1198
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1199
|
+
*
|
|
1200
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1201
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1202
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1203
|
+
* See the License for the specific language governing permissions and
|
|
1204
|
+
* limitations under the License.
|
|
1205
|
+
*/
|
|
1206
|
+
|
|
1303
1207
|
/*
|
|
1304
1208
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1305
1209
|
*
|
|
@@ -1333,7 +1237,7 @@ const caseCountDataSourceSpecification = {
|
|
|
1333
1237
|
operator: 'Operator',
|
|
1334
1238
|
value: 'Wert',
|
|
1335
1239
|
conditions: 'Bedingungen',
|
|
1336
|
-
conditionsHelperText: "Geben Sie optionale Bedingungen zum Abrufen der Anzahl der Fälle für den ausgewählten Falltyp an. Zum Beispiel: 'case:createdBy', 'Gleich', 'test@test.com'.",
|
|
1240
|
+
conditionsHelperText: "Geben Sie optionale Bedingungen zum Abrufen der Anzahl der Fälle für den ausgewählten Falltyp an. Zum Beispiel: 'case:createdBy', 'Gleich', 'test@test.com'. Zum Vergleichen mit leeren Werten kann als Wert '${null}' eingegeben werden. Zum Vergleichen mit dem aktuellen Datum kann als Wert '${localDateTimeNow}' eingegeben werden. Damit wird beispielsweise auch folgende Logik unterstützt: '${localDateTimeNow.minusWeeks(2)}'.",
|
|
1337
1241
|
addCondition: 'Bedingung hinzufügen',
|
|
1338
1242
|
},
|
|
1339
1243
|
en: {
|
|
@@ -1350,7 +1254,7 @@ const caseCountDataSourceSpecification = {
|
|
|
1350
1254
|
operator: 'Operator',
|
|
1351
1255
|
value: 'Value',
|
|
1352
1256
|
conditions: 'Conditions',
|
|
1353
|
-
conditionsHelperText: "Specify optional conditions for retrieving the number of cases for the selected case type. For example: 'case:createdBy', 'Equal to', 'test@test.com'.",
|
|
1257
|
+
conditionsHelperText: "Specify optional conditions for retrieving the number of cases for the selected case type. For example: 'case:createdBy', 'Equal to', 'test@test.com'. To compare with empty values, '${null}' can be entered as a value. To compare with the current date, '${localDateTimeNow}' can be entered as a value. This also supports, for example, the following logic: '${localDateTimeNow.minusWeeks(2)}'.",
|
|
1354
1258
|
addCondition: 'Add condition',
|
|
1355
1259
|
},
|
|
1356
1260
|
nl: {
|
|
@@ -1367,7 +1271,7 @@ const caseCountDataSourceSpecification = {
|
|
|
1367
1271
|
operator: 'Operator',
|
|
1368
1272
|
value: 'Waarde',
|
|
1369
1273
|
conditions: 'Condities',
|
|
1370
|
-
conditionsHelperText: "Geef optionele condities op voor het ophalen van het aantal zaken voor het geselecteerde zaaktype. Bijvoorbeeld: 'case:createdBy', 'Gelijk aan', 'test@test.com'.",
|
|
1274
|
+
conditionsHelperText: "Geef optionele condities op voor het ophalen van het aantal zaken voor het geselecteerde zaaktype. Bijvoorbeeld: 'case:createdBy', 'Gelijk aan', 'test@test.com'. Voor het vergelijken met lege waardes kan '${null}' ingevuld worden als waarde. Voor het vergelijken met de huidige datum kan '${localDateTimeNow}' ingevuld worden als waarde. Deze ondersteunt ook bijvoorbeeld de volgende logica: '${localDateTimeNow.minusWeeks(2)}'.",
|
|
1371
1275
|
addCondition: 'Conditie toevoegen',
|
|
1372
1276
|
},
|
|
1373
1277
|
},
|
|
@@ -1455,6 +1359,177 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1455
1359
|
* See the License for the specific language governing permissions and
|
|
1456
1360
|
* limitations under the License.
|
|
1457
1361
|
*/
|
|
1362
|
+
class CaseCountsConfigurationComponent {
|
|
1363
|
+
set disabled(disabledValue) {
|
|
1364
|
+
if (disabledValue) {
|
|
1365
|
+
this.form.disable();
|
|
1366
|
+
}
|
|
1367
|
+
else {
|
|
1368
|
+
this.form.enable();
|
|
1369
|
+
}
|
|
1370
|
+
}
|
|
1371
|
+
get queryItems() {
|
|
1372
|
+
return this.form.get('queryItems');
|
|
1373
|
+
}
|
|
1374
|
+
get queryItemsValue$() {
|
|
1375
|
+
return this.queryItems.valueChanges.pipe(startWith(this.queryItems.value || []));
|
|
1376
|
+
}
|
|
1377
|
+
get queryItemsList$() {
|
|
1378
|
+
return this.queryItemsValue$.pipe(map(queryItemsValue => queryItemsValue.map(() => null)), distinctUntilChanged((previous, current) => isEqual(previous, current)));
|
|
1379
|
+
}
|
|
1380
|
+
get documentDefinition() {
|
|
1381
|
+
return this.form.get('documentDefinition');
|
|
1382
|
+
}
|
|
1383
|
+
get formDisabled() {
|
|
1384
|
+
return this.form.disabled;
|
|
1385
|
+
}
|
|
1386
|
+
set prefillConfiguration(configurationValue) {
|
|
1387
|
+
if (!configurationValue)
|
|
1388
|
+
return;
|
|
1389
|
+
this.documentDefinitionSelected({
|
|
1390
|
+
item: {
|
|
1391
|
+
content: configurationValue.documentDefinition,
|
|
1392
|
+
},
|
|
1393
|
+
});
|
|
1394
|
+
this.documentDefinition.patchValue(configurationValue.documentDefinition);
|
|
1395
|
+
this.queryItems.patchValue(this.queryItemsToMultiInputValues(configurationValue.queryItems));
|
|
1396
|
+
}
|
|
1397
|
+
constructor(fb, documentService, translateService, widgetTranslationService, iconService) {
|
|
1398
|
+
this.fb = fb;
|
|
1399
|
+
this.documentService = documentService;
|
|
1400
|
+
this.translateService = translateService;
|
|
1401
|
+
this.widgetTranslationService = widgetTranslationService;
|
|
1402
|
+
this.iconService = iconService;
|
|
1403
|
+
this._EMPTY_QUERY_ITEM_VALUE = {
|
|
1404
|
+
label: '',
|
|
1405
|
+
queryConditions: [{ key: '', value: '', dropdown: '' }],
|
|
1406
|
+
};
|
|
1407
|
+
this.form = this.fb.group({
|
|
1408
|
+
documentDefinition: this.fb.control(null, [Validators.required]),
|
|
1409
|
+
queryItems: this.fb.control([this._EMPTY_QUERY_ITEM_VALUE, this._EMPTY_QUERY_ITEM_VALUE], [this.queryItemsValidator()]),
|
|
1410
|
+
});
|
|
1411
|
+
this.configurationEvent = new EventEmitter();
|
|
1412
|
+
this._selectedDocumentDefinition$ = new BehaviorSubject('');
|
|
1413
|
+
this.documentItems$ = combineLatest([
|
|
1414
|
+
this.documentService.getAllDefinitions(),
|
|
1415
|
+
this._selectedDocumentDefinition$,
|
|
1416
|
+
]).pipe(map(([documentDefinitions, selectedDocumentDefintion]) => documentDefinitions.content.map(definition => ({
|
|
1417
|
+
content: definition.id.name,
|
|
1418
|
+
selected: definition.id.name === selectedDocumentDefintion,
|
|
1419
|
+
}))));
|
|
1420
|
+
this._OPERATORS = [
|
|
1421
|
+
Operator.NOT_EQUAL_TO,
|
|
1422
|
+
Operator.EQUAL_TO,
|
|
1423
|
+
Operator.GREATER_THAN,
|
|
1424
|
+
Operator.GREATER_THAN_OR_EQUAL_TO,
|
|
1425
|
+
Operator.LESS_THAN,
|
|
1426
|
+
Operator.LESS_THAN_OR_EQUAL_TO,
|
|
1427
|
+
];
|
|
1428
|
+
this.operatorItems$ = this.translateService
|
|
1429
|
+
.stream('key')
|
|
1430
|
+
.pipe(map(() => this._OPERATORS.map(operator => ({
|
|
1431
|
+
id: operator,
|
|
1432
|
+
content: this.widgetTranslationService.instant(operator, this.dataSourceKey),
|
|
1433
|
+
selected: false,
|
|
1434
|
+
}))));
|
|
1435
|
+
this._subscriptions = new Subscription();
|
|
1436
|
+
this.iconService.registerAll([Add16, TrashCan16]);
|
|
1437
|
+
}
|
|
1438
|
+
ngOnInit() {
|
|
1439
|
+
this.openFormSubscription();
|
|
1440
|
+
}
|
|
1441
|
+
ngOnDestroy() {
|
|
1442
|
+
this._subscriptions.unsubscribe();
|
|
1443
|
+
}
|
|
1444
|
+
documentDefinitionSelected(documentDefinitionItem) {
|
|
1445
|
+
if (!documentDefinitionItem) {
|
|
1446
|
+
return;
|
|
1447
|
+
}
|
|
1448
|
+
this._selectedDocumentDefinition$.next(documentDefinitionItem?.item?.content);
|
|
1449
|
+
}
|
|
1450
|
+
conditionsValueChange(index, values) {
|
|
1451
|
+
const currentQueryItemsValues = this.queryItems.value;
|
|
1452
|
+
if (isEqual(currentQueryItemsValues[index].queryConditions, values))
|
|
1453
|
+
return;
|
|
1454
|
+
this.queryItems.patchValue(currentQueryItemsValues.map((item, itemIndex) => itemIndex === index ? { ...item, queryConditions: values } : item));
|
|
1455
|
+
}
|
|
1456
|
+
labelValueChange(index, value) {
|
|
1457
|
+
const currentQueryItemsValues = this.queryItems.value;
|
|
1458
|
+
if (currentQueryItemsValues[index].label === value)
|
|
1459
|
+
return;
|
|
1460
|
+
this.queryItems.patchValue(currentQueryItemsValues.map((item, itemIndex) => itemIndex === index ? { ...item, label: value } : item));
|
|
1461
|
+
}
|
|
1462
|
+
addQueryItem() {
|
|
1463
|
+
const currentQueryItems = this.queryItems.value;
|
|
1464
|
+
this.queryItems.patchValue([...currentQueryItems, this._EMPTY_QUERY_ITEM_VALUE]);
|
|
1465
|
+
}
|
|
1466
|
+
deleteCount(i) {
|
|
1467
|
+
const currentQueryItems = this.queryItems.value;
|
|
1468
|
+
this.queryItems.patchValue(currentQueryItems.filter((_, index) => index !== i));
|
|
1469
|
+
}
|
|
1470
|
+
openFormSubscription() {
|
|
1471
|
+
this._subscriptions.add(this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {
|
|
1472
|
+
this.configurationEvent.emit({
|
|
1473
|
+
valid: this.form.valid,
|
|
1474
|
+
data: {
|
|
1475
|
+
...formValue,
|
|
1476
|
+
queryItems: this.multiInputValuesToQueryItems(formValue.queryItems),
|
|
1477
|
+
},
|
|
1478
|
+
});
|
|
1479
|
+
}));
|
|
1480
|
+
}
|
|
1481
|
+
queryItemsToMultiInputValues(queryItems) {
|
|
1482
|
+
return queryItems.map(queryItem => ({
|
|
1483
|
+
...queryItem,
|
|
1484
|
+
queryConditions: queryItem.queryConditions.map(condition => ({
|
|
1485
|
+
key: condition.queryPath,
|
|
1486
|
+
dropdown: condition.queryOperator,
|
|
1487
|
+
value: condition.queryValue,
|
|
1488
|
+
})),
|
|
1489
|
+
}));
|
|
1490
|
+
}
|
|
1491
|
+
multiInputValuesToQueryItems(multiInputValues) {
|
|
1492
|
+
return multiInputValues.map(queryItem => ({
|
|
1493
|
+
...queryItem,
|
|
1494
|
+
queryConditions: queryItem.queryConditions.map(condition => ({
|
|
1495
|
+
queryPath: condition.key,
|
|
1496
|
+
queryOperator: condition.dropdown,
|
|
1497
|
+
queryValue: condition.value,
|
|
1498
|
+
})),
|
|
1499
|
+
}));
|
|
1500
|
+
}
|
|
1501
|
+
queryItemsValidator() {
|
|
1502
|
+
return (control) => {
|
|
1503
|
+
const queryItems = control.value;
|
|
1504
|
+
const validQueryItems = queryItems.filter(item => {
|
|
1505
|
+
const validLabel = !!item.label;
|
|
1506
|
+
const validConditions = item.queryConditions.filter(condition => !!condition.value && !!condition.key && !!condition.dropdown);
|
|
1507
|
+
return (validLabel &&
|
|
1508
|
+
validConditions.length > 0 &&
|
|
1509
|
+
item.queryConditions.length === validConditions.length);
|
|
1510
|
+
});
|
|
1511
|
+
return validQueryItems.length > 1 && validQueryItems.length === queryItems.length
|
|
1512
|
+
? null
|
|
1513
|
+
: {
|
|
1514
|
+
invalidQueryItems: 'invalid',
|
|
1515
|
+
};
|
|
1516
|
+
};
|
|
1517
|
+
}
|
|
1518
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseCountsConfigurationComponent, deps: [{ token: i1$3.FormBuilder }, { token: i2$2.DocumentService }, { token: i3$1.TranslateService }, { token: WidgetTranslationService }, { token: i5.IconService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1519
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: CaseCountsConfigurationComponent, selector: "ng-component", inputs: { dataSourceKey: "dataSourceKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n class=\"case-counts-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\n queryItemsValue: queryItemsValue$ | 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\">\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 [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 type=\"keyDropdownValue\"\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", styles: ["::ng-deep .case-counts-configuration-form .conditions__label{display:flex;margin-bottom:8px}::ng-deep .case-counts-configuration-form .conditions__helper-text{font-style:italic;display:flex;margin-bottom:16px}::ng-deep .case-counts-configuration-form .count-tile{display:flex;flex-direction:row;gap:32px;justify-content:space-between;margin-bottom:16px}::ng-deep .case-counts-configuration-form .count-tile__input{width:100%}::ng-deep .case-counts-configuration-form .add-count-button{margin-bottom:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i1$1.InputComponent, selector: "v-input", inputs: ["name", "type", "title", "titleTranslationKey", "defaultValue", "widthPx", "fullWidth", "margin", "smallMargin", "disabled", "step", "min", "maxLength", "tooltip", "required", "hideNumberSpinBox", "smallLabel", "rows", "clear$", "carbonTheme", "placeholder"], outputs: ["valueChange"] }, { kind: "component", type: i5.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i1$1.CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: ["name", "title", "titleTranslationKey", "type", "arbitraryValueAmount", "arbitraryAmountTitles", "initialAmountOfRows", "minimumAmountOfRows", "maxRows", "addRowText", "addRowTranslationKey", "deleteRowText", "deleteRowTranslationKey", "disabled", "defaultValues", "margin", "tooltip", "required", "keyColumnTitle", "valueColumnTitle", "dropdownColumnTitle", "hideDeleteButton", "hideAddButton", "dropdownItems", "dropdownWidth", "fullWidth", "carbonTheme"], outputs: ["valueChange", "allValuesValidEvent"] }, { kind: "directive", type: i5.Button, selector: "[cdsButton], [ibmButton]", inputs: ["ibmButton", "cdsButton", "size", "skeleton", "iconOnly", "isExpressive"] }, { kind: "component", type: i5.IconButton, selector: "cds-icon-button, ibm-icon-button", inputs: ["buttonNgClass", "buttonAttributes", "buttonId", "kind", "size", "type", "isExpressive", "disabled", "description"], outputs: ["click", "focus", "blur", "tooltipClick"] }, { kind: "component", type: i5.Tile, selector: "cds-tile, ibm-tile", inputs: ["theme"] }, { kind: "directive", type: i5.LayerDirective, selector: "[cdsLayer], [ibmLayer]", inputs: ["ibmLayer", "cdsLayer"], exportAs: ["layer"] }, { kind: "directive", type: i5.IconDirective, selector: "[cdsIcon], [ibmIcon]", inputs: ["ibmIcon", "cdsIcon", "size", "title", "ariaLabel", "ariaLabelledBy", "ariaHidden", "isFocusable"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: WidgetTranslatePipe, name: "widgetTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1520
|
+
}
|
|
1521
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseCountsConfigurationComponent, decorators: [{
|
|
1522
|
+
type: Component,
|
|
1523
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n class=\"case-counts-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\n queryItemsValue: queryItemsValue$ | 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\">\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 [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 type=\"keyDropdownValue\"\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", styles: ["::ng-deep .case-counts-configuration-form .conditions__label{display:flex;margin-bottom:8px}::ng-deep .case-counts-configuration-form .conditions__helper-text{font-style:italic;display:flex;margin-bottom:16px}::ng-deep .case-counts-configuration-form .count-tile{display:flex;flex-direction:row;gap:32px;justify-content:space-between;margin-bottom:16px}::ng-deep .case-counts-configuration-form .count-tile__input{width:100%}::ng-deep .case-counts-configuration-form .add-count-button{margin-bottom:16px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1524
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: i2$2.DocumentService }, { type: i3$1.TranslateService }, { type: WidgetTranslationService }, { type: i5.IconService }], propDecorators: { dataSourceKey: [{
|
|
1525
|
+
type: Input
|
|
1526
|
+
}], disabled: [{
|
|
1527
|
+
type: Input
|
|
1528
|
+
}], prefillConfiguration: [{
|
|
1529
|
+
type: Input
|
|
1530
|
+
}], configurationEvent: [{
|
|
1531
|
+
type: Output
|
|
1532
|
+
}] } });
|
|
1458
1533
|
|
|
1459
1534
|
/*
|
|
1460
1535
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -1488,36 +1563,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1488
1563
|
* limitations under the License.
|
|
1489
1564
|
*/
|
|
1490
1565
|
|
|
1491
|
-
/*
|
|
1492
|
-
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1493
|
-
*
|
|
1494
|
-
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1495
|
-
* you may not use this file except in compliance with the License.
|
|
1496
|
-
* You may obtain a copy of the License at
|
|
1497
|
-
*
|
|
1498
|
-
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1499
|
-
*
|
|
1500
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
1501
|
-
* distributed under the License is distributed on an "AS IS" basis,
|
|
1502
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1503
|
-
* See the License for the specific language governing permissions and
|
|
1504
|
-
* limitations under the License.
|
|
1505
|
-
*/
|
|
1506
|
-
class BarChartDisplayComponent {
|
|
1507
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BarChartDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1508
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: BarChartDisplayComponent, selector: "valtimo-bar-chart-display", inputs: { displayTypeKey: "displayTypeKey", data: "data", displayTypeProperties: "displayTypeProperties" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\nbar chart works\n", styles: [":host{display:flex;padding:20px;width:100%;height:100%}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1509
|
-
}
|
|
1510
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BarChartDisplayComponent, decorators: [{
|
|
1511
|
-
type: Component,
|
|
1512
|
-
args: [{ selector: 'valtimo-bar-chart-display', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\nbar chart works\n", styles: [":host{display:flex;padding:20px;width:100%;height:100%}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1513
|
-
}], propDecorators: { displayTypeKey: [{
|
|
1514
|
-
type: Input
|
|
1515
|
-
}], data: [{
|
|
1516
|
-
type: Input
|
|
1517
|
-
}], displayTypeProperties: [{
|
|
1518
|
-
type: Input
|
|
1519
|
-
}] } });
|
|
1520
|
-
|
|
1521
1566
|
/*
|
|
1522
1567
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1523
1568
|
*
|
|
@@ -1565,23 +1610,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1565
1610
|
* See the License for the specific language governing permissions and
|
|
1566
1611
|
* limitations under the License.
|
|
1567
1612
|
*/
|
|
1568
|
-
const
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
width: 1,
|
|
1572
|
-
height: 2,
|
|
1613
|
+
const caseCountsDataSourceSpecification = {
|
|
1614
|
+
dataSourceKey: 'case-counts',
|
|
1615
|
+
configurationComponent: CaseCountsConfigurationComponent,
|
|
1573
1616
|
translations: {
|
|
1574
|
-
|
|
1575
|
-
title: '
|
|
1617
|
+
de: {
|
|
1618
|
+
title: 'Mehrere Fallanzahllen',
|
|
1619
|
+
documentDefinition: 'Falltyp (erforderlich)',
|
|
1620
|
+
documentDefinitionHelperText: 'Der Falltyp, für den die Anzahllen abgeruft wirden',
|
|
1621
|
+
'!=': 'Nicht gleichzusetzen mit',
|
|
1622
|
+
'==': 'Gleich',
|
|
1623
|
+
'>': 'Größer als',
|
|
1624
|
+
'>=': 'Größer als oder gleich wie',
|
|
1625
|
+
'<': 'Weniger als',
|
|
1626
|
+
'<=': 'Gleich oder kleiner als',
|
|
1627
|
+
path: 'Pfad',
|
|
1628
|
+
operator: 'Operator',
|
|
1629
|
+
value: 'Wert',
|
|
1630
|
+
counts: 'Anzahllen',
|
|
1631
|
+
countsHelperText: "Geben Sie eine oder mehrere Bedingungen für mindestens zwei Anzahllen an. Zum Beispiel: 'case:createdBy', 'Gleich', 'test@test.com'. Zum Vergleichen mit leeren Werten kann als Wert '${null}' eingegeben werden. Zum Vergleichen mit dem aktuellen Datum kann als Wert '${localDateTimeNow}' eingegeben werden. Damit wird beispielsweise auch folgende Logik unterstützt: '${localDateTimeNow.minusWeeks(2)}'.",
|
|
1632
|
+
addCondition: 'Bedingung hinzufügen',
|
|
1633
|
+
countTitle: 'Anzahltitel',
|
|
1576
1634
|
},
|
|
1577
1635
|
en: {
|
|
1578
|
-
title: '
|
|
1636
|
+
title: 'Multiple case counts',
|
|
1637
|
+
documentDefinition: 'Case type (required)',
|
|
1638
|
+
documentDefinitionHelperText: 'The case type for which the counts are retrieved',
|
|
1639
|
+
'!=': 'Not equal to',
|
|
1640
|
+
'==': 'Equal to',
|
|
1641
|
+
'>': 'Greater than',
|
|
1642
|
+
'>=': 'Greater than or equal to',
|
|
1643
|
+
'<': 'Less than',
|
|
1644
|
+
'<=': 'Less than or equal to',
|
|
1645
|
+
path: 'Path (required)',
|
|
1646
|
+
operator: 'Operator',
|
|
1647
|
+
value: 'Value',
|
|
1648
|
+
counts: 'Counts',
|
|
1649
|
+
countsHelperText: "Specify one or more conditions for each count that should be displayed. For example: 'case:createdBy', 'Equal to', 'test@test.com'. Configure at least two counts and at least one condition per count.",
|
|
1650
|
+
addCondition: 'Add condition',
|
|
1651
|
+
countTitle: 'Count title',
|
|
1579
1652
|
},
|
|
1580
|
-
|
|
1581
|
-
title: '
|
|
1653
|
+
nl: {
|
|
1654
|
+
title: 'Meerdere dossieraantallen',
|
|
1655
|
+
documentDefinition: 'Dossiertype (vereist)',
|
|
1656
|
+
documentDefinitionHelperText: 'Het dossiertype waarvoor de aantallen worden opgehaald',
|
|
1657
|
+
'!=': 'Niet gelijk aan',
|
|
1658
|
+
'==': 'Gelijk aan',
|
|
1659
|
+
'>': 'Groter dan',
|
|
1660
|
+
'>=': 'Groter dan of gelijk aan',
|
|
1661
|
+
'<': 'Minder dan',
|
|
1662
|
+
'<=': 'Minder dan of gelijk aan',
|
|
1663
|
+
path: 'Pad',
|
|
1664
|
+
operator: 'Operator',
|
|
1665
|
+
value: 'Waarde',
|
|
1666
|
+
counts: 'Aantallen',
|
|
1667
|
+
countsHelperText: "Geef een of meer condities op voor een minimum van twee aantallen. Bijvoorbeeld: 'case:createdBy', 'Gelijk aan', 'test@test.com'. Voor het vergelijken met lege waardes kan '${null}' ingevuld worden als waarde. Voor het vergelijken met de huidige datum kan '${localDateTimeNow}' ingevuld worden als waarde. Deze ondersteunt ook bijvoorbeeld de volgende logica: '${localDateTimeNow.minusWeeks(2)}'.",
|
|
1668
|
+
addCondition: 'Conditie toevoegen',
|
|
1669
|
+
countTitle: 'Aantaltitel',
|
|
1582
1670
|
},
|
|
1583
1671
|
},
|
|
1584
|
-
requiredDataFeatures: [],
|
|
1585
1672
|
};
|
|
1586
1673
|
|
|
1587
1674
|
/*
|
|
@@ -1599,18 +1686,54 @@ const barChartSpecification = {
|
|
|
1599
1686
|
* See the License for the specific language governing permissions and
|
|
1600
1687
|
* limitations under the License.
|
|
1601
1688
|
*/
|
|
1602
|
-
class
|
|
1603
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type:
|
|
1604
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type:
|
|
1605
|
-
|
|
1689
|
+
class CaseCountsDataSourceModule {
|
|
1690
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseCountsDataSourceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
1691
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: CaseCountsDataSourceModule, declarations: [CaseCountsConfigurationComponent], imports: [CommonModule,
|
|
1692
|
+
ReactiveFormsModule,
|
|
1693
|
+
WidgetTranslatePipeModule,
|
|
1694
|
+
InputModule$1,
|
|
1695
|
+
DropdownModule,
|
|
1696
|
+
CarbonMultiInputModule,
|
|
1697
|
+
InputModule$1,
|
|
1698
|
+
ButtonModule,
|
|
1699
|
+
TilesModule,
|
|
1700
|
+
LayerModule,
|
|
1701
|
+
IconModule], exports: [CaseCountsConfigurationComponent] }); }
|
|
1702
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseCountsDataSourceModule, providers: [
|
|
1703
|
+
{ provide: DATA_SOURCE_TOKEN, useValue: caseCountsDataSourceSpecification, multi: true },
|
|
1704
|
+
], imports: [CommonModule,
|
|
1705
|
+
ReactiveFormsModule,
|
|
1706
|
+
WidgetTranslatePipeModule,
|
|
1707
|
+
InputModule$1,
|
|
1708
|
+
DropdownModule,
|
|
1709
|
+
CarbonMultiInputModule,
|
|
1710
|
+
InputModule$1,
|
|
1711
|
+
ButtonModule,
|
|
1712
|
+
TilesModule,
|
|
1713
|
+
LayerModule,
|
|
1714
|
+
IconModule] }); }
|
|
1606
1715
|
}
|
|
1607
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type:
|
|
1716
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseCountsDataSourceModule, decorators: [{
|
|
1608
1717
|
type: NgModule,
|
|
1609
1718
|
args: [{
|
|
1610
|
-
declarations: [
|
|
1611
|
-
imports: [
|
|
1612
|
-
|
|
1613
|
-
|
|
1719
|
+
declarations: [CaseCountsConfigurationComponent],
|
|
1720
|
+
imports: [
|
|
1721
|
+
CommonModule,
|
|
1722
|
+
ReactiveFormsModule,
|
|
1723
|
+
WidgetTranslatePipeModule,
|
|
1724
|
+
InputModule$1,
|
|
1725
|
+
DropdownModule,
|
|
1726
|
+
CarbonMultiInputModule,
|
|
1727
|
+
InputModule$1,
|
|
1728
|
+
ButtonModule,
|
|
1729
|
+
TilesModule,
|
|
1730
|
+
LayerModule,
|
|
1731
|
+
IconModule,
|
|
1732
|
+
],
|
|
1733
|
+
exports: [CaseCountsConfigurationComponent],
|
|
1734
|
+
providers: [
|
|
1735
|
+
{ provide: DATA_SOURCE_TOKEN, useValue: caseCountsDataSourceSpecification, multi: true },
|
|
1736
|
+
],
|
|
1614
1737
|
}]
|
|
1615
1738
|
}] });
|
|
1616
1739
|
|
|
@@ -1645,7 +1768,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1645
1768
|
* See the License for the specific language governing permissions and
|
|
1646
1769
|
* limitations under the License.
|
|
1647
1770
|
*/
|
|
1648
|
-
class
|
|
1771
|
+
class CaseGroupByConfigurationComponent {
|
|
1772
|
+
get documentDefinition() {
|
|
1773
|
+
return this.form.get('documentDefinition');
|
|
1774
|
+
}
|
|
1775
|
+
get path() {
|
|
1776
|
+
return this.form.get('path');
|
|
1777
|
+
}
|
|
1778
|
+
get queryConditions() {
|
|
1779
|
+
return this.form.get('queryConditions');
|
|
1780
|
+
}
|
|
1781
|
+
get enum() {
|
|
1782
|
+
return this.form.get('enum');
|
|
1783
|
+
}
|
|
1784
|
+
get formDisabled() {
|
|
1785
|
+
return this.form.disabled;
|
|
1786
|
+
}
|
|
1787
|
+
get formValue$() {
|
|
1788
|
+
return this.form.valueChanges.pipe(startWith(this.form.value));
|
|
1789
|
+
}
|
|
1649
1790
|
set disabled(disabledValue) {
|
|
1650
1791
|
if (disabledValue) {
|
|
1651
1792
|
this.form.disable();
|
|
@@ -1654,35 +1795,444 @@ class BigNumberConfigurationComponent {
|
|
|
1654
1795
|
this.form.enable();
|
|
1655
1796
|
}
|
|
1656
1797
|
}
|
|
1657
|
-
get title() {
|
|
1658
|
-
return this.form.get('title');
|
|
1659
|
-
}
|
|
1660
|
-
get subtitle() {
|
|
1661
|
-
return this.form.get('subtitle');
|
|
1662
|
-
}
|
|
1663
|
-
get label() {
|
|
1664
|
-
return this.form.get('label');
|
|
1665
|
-
}
|
|
1666
|
-
get useKPI() {
|
|
1667
|
-
return this.form.get('useKPI');
|
|
1668
|
-
}
|
|
1669
|
-
get lowSeverityThreshold() {
|
|
1670
|
-
return this.form.get('lowSeverityThreshold');
|
|
1671
|
-
}
|
|
1672
|
-
get mediumSeverityThreshold() {
|
|
1673
|
-
return this.form.get('mediumSeverityThreshold');
|
|
1674
|
-
}
|
|
1675
|
-
get highSeverityThreshold() {
|
|
1676
|
-
return this.form.get('highSeverityThreshold');
|
|
1677
|
-
}
|
|
1678
1798
|
set prefillConfiguration(configurationValue) {
|
|
1679
|
-
if (configurationValue)
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1799
|
+
if (!configurationValue)
|
|
1800
|
+
return;
|
|
1801
|
+
this.documentDefinitionSelected({
|
|
1802
|
+
item: {
|
|
1803
|
+
content: configurationValue.documentDefinition,
|
|
1804
|
+
},
|
|
1805
|
+
});
|
|
1806
|
+
this.queryConditions.patchValue(this.queryConditionsToMultiInputValues(configurationValue.queryConditions));
|
|
1807
|
+
this.enum.patchValue(this.enumToMultiInputValues(configurationValue.enum));
|
|
1808
|
+
this.path.patchValue(configurationValue.path);
|
|
1809
|
+
}
|
|
1810
|
+
constructor(fb, documentService, translateService, widgetTranslationService) {
|
|
1811
|
+
this.fb = fb;
|
|
1812
|
+
this.documentService = documentService;
|
|
1813
|
+
this.translateService = translateService;
|
|
1814
|
+
this.widgetTranslationService = widgetTranslationService;
|
|
1815
|
+
this.form = this.fb.group({
|
|
1816
|
+
documentDefinition: this.fb.control(null, [Validators.required]),
|
|
1817
|
+
path: this.fb.control(null, [Validators.required]),
|
|
1818
|
+
queryConditions: this.fb.control([], [this.queryConditionsValidator()]),
|
|
1819
|
+
enum: this.fb.control([], [this.enumValidator()]),
|
|
1820
|
+
});
|
|
1821
|
+
this._selectedDocumentDefinition$ = new BehaviorSubject('');
|
|
1822
|
+
this.documentItems$ = combineLatest([
|
|
1823
|
+
this.documentService.getAllDefinitions(),
|
|
1824
|
+
this._selectedDocumentDefinition$,
|
|
1825
|
+
]).pipe(map(([documentDefinitions, selectedDocumentDefintion]) => documentDefinitions.content.map(definition => ({
|
|
1826
|
+
content: definition.id.name,
|
|
1827
|
+
selected: definition.id.name === selectedDocumentDefintion,
|
|
1828
|
+
}))));
|
|
1829
|
+
this._OPERATORS = [
|
|
1830
|
+
Operator.NOT_EQUAL_TO,
|
|
1831
|
+
Operator.EQUAL_TO,
|
|
1832
|
+
Operator.GREATER_THAN,
|
|
1833
|
+
Operator.GREATER_THAN_OR_EQUAL_TO,
|
|
1834
|
+
Operator.LESS_THAN,
|
|
1835
|
+
Operator.LESS_THAN_OR_EQUAL_TO,
|
|
1836
|
+
];
|
|
1837
|
+
this.operatorItems$ = this.translateService
|
|
1838
|
+
.stream('key')
|
|
1839
|
+
.pipe(map(() => this._OPERATORS.map(operator => ({
|
|
1840
|
+
id: operator,
|
|
1841
|
+
content: this.widgetTranslationService.instant(operator, this.dataSourceKey),
|
|
1842
|
+
selected: false,
|
|
1843
|
+
}))));
|
|
1844
|
+
this.configurationEvent = new EventEmitter();
|
|
1845
|
+
this._subscriptions = new Subscription();
|
|
1846
|
+
}
|
|
1847
|
+
ngOnInit() {
|
|
1848
|
+
this.openFormSubscription();
|
|
1849
|
+
}
|
|
1850
|
+
ngOnDestroy() {
|
|
1851
|
+
this._subscriptions.unsubscribe();
|
|
1852
|
+
}
|
|
1853
|
+
documentDefinitionSelected(documentDefinitionItem) {
|
|
1854
|
+
if (!documentDefinitionItem) {
|
|
1855
|
+
return;
|
|
1856
|
+
}
|
|
1857
|
+
this._selectedDocumentDefinition$.next(documentDefinitionItem?.item?.content);
|
|
1858
|
+
this.documentDefinition.setValue(documentDefinitionItem?.item?.content);
|
|
1859
|
+
}
|
|
1860
|
+
conditionsValueChange(values) {
|
|
1861
|
+
if (!values)
|
|
1862
|
+
return;
|
|
1863
|
+
const currentValue = this.queryConditions.value;
|
|
1864
|
+
if (isEqual(values, currentValue))
|
|
1865
|
+
return;
|
|
1866
|
+
this.queryConditions.patchValue(values);
|
|
1867
|
+
}
|
|
1868
|
+
enumValueChange(values) {
|
|
1869
|
+
if (!values)
|
|
1870
|
+
return;
|
|
1871
|
+
const currentValue = this.enum.value;
|
|
1872
|
+
if (isEqual(values, currentValue))
|
|
1873
|
+
return;
|
|
1874
|
+
this.enum.patchValue(values);
|
|
1875
|
+
}
|
|
1876
|
+
openFormSubscription() {
|
|
1877
|
+
this._subscriptions.add(this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {
|
|
1878
|
+
this.configurationEvent.emit({
|
|
1879
|
+
valid: this.form.valid,
|
|
1880
|
+
data: {
|
|
1881
|
+
...formValue,
|
|
1882
|
+
queryConditions: this.multiInputValuesToQueryConditions(formValue.queryConditions),
|
|
1883
|
+
enum: this.multiInputValuesToEnum(formValue.enum),
|
|
1884
|
+
},
|
|
1885
|
+
});
|
|
1886
|
+
}));
|
|
1887
|
+
}
|
|
1888
|
+
queryConditionsValidator() {
|
|
1889
|
+
return (control) => {
|
|
1890
|
+
const queryConditions = control.value;
|
|
1891
|
+
const validConditions = queryConditions.filter(condition => !!condition.value && !!condition.key && !!condition.dropdown);
|
|
1892
|
+
return validConditions.length === queryConditions.length
|
|
1893
|
+
? null
|
|
1894
|
+
: {
|
|
1895
|
+
invalidQueryItems: 'invalid',
|
|
1896
|
+
};
|
|
1897
|
+
};
|
|
1898
|
+
}
|
|
1899
|
+
enumValidator() {
|
|
1900
|
+
return (control) => {
|
|
1901
|
+
const enumeration = control.value || [];
|
|
1902
|
+
const enumLength = enumeration.length;
|
|
1903
|
+
const validEnumKeysLength = enumeration.filter(entry => !!entry.key).length;
|
|
1904
|
+
const validEnumValuesLength = enumeration.filter(entry => !!entry.value).length;
|
|
1905
|
+
return enumLength === validEnumKeysLength && enumLength === validEnumValuesLength
|
|
1906
|
+
? null
|
|
1907
|
+
: {
|
|
1908
|
+
invalidEnum: 'invalid',
|
|
1909
|
+
};
|
|
1910
|
+
};
|
|
1911
|
+
}
|
|
1912
|
+
enumToMultiInputValues(enumeration) {
|
|
1913
|
+
return Object.keys(enumeration || {}).reduce((acc, key) => [...acc, { key, value: enumeration[key] }], []);
|
|
1914
|
+
}
|
|
1915
|
+
multiInputValuesToEnum(values) {
|
|
1916
|
+
return (values || []).reduce((acc, curr) => ({ ...acc, [curr.key]: curr.value }), {});
|
|
1917
|
+
}
|
|
1918
|
+
queryConditionsToMultiInputValues(queryConditions) {
|
|
1919
|
+
return (queryConditions || []).map(condition => ({
|
|
1920
|
+
key: condition.queryPath,
|
|
1921
|
+
dropdown: condition.queryOperator,
|
|
1922
|
+
value: condition.queryValue,
|
|
1923
|
+
}));
|
|
1924
|
+
}
|
|
1925
|
+
multiInputValuesToQueryConditions(values) {
|
|
1926
|
+
return (values || []).map(condition => ({
|
|
1927
|
+
queryPath: condition.key,
|
|
1928
|
+
queryOperator: condition.dropdown,
|
|
1929
|
+
queryValue: condition.value,
|
|
1930
|
+
}));
|
|
1931
|
+
}
|
|
1932
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseGroupByConfigurationComponent, deps: [{ token: i1$3.FormBuilder }, { token: i2$2.DocumentService }, { token: i3$1.TranslateService }, { token: WidgetTranslationService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1933
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: CaseGroupByConfigurationComponent, selector: "ng-component", inputs: { dataSourceKey: "dataSourceKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n class=\"case-count-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\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 [invalid]=\"path.dirty && path.invalid\"\n >\n {{ 'path' | widgetTranslate: dataSourceKey | async }}\n\n <input cdsText formControlName=\"path\" [invalid]=\"path.dirty && path.invalid\" />\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 [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 type=\"keyDropdownValue\"\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", styles: ["::ng-deep .case-count-configuration-form .conditions-label{margin-bottom:16px}::ng-deep .case-count-configuration-form .conditions-multi-input .cds--form__helper-text{font-style:italic}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i5.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: i5.Dropdown, selector: "cds-dropdown, ibm-dropdown", inputs: ["id", "label", "helperText", "placeholder", "displayValue", "clearText", "size", "type", "theme", "disabled", "skeleton", "inline", "disableArrowKeys", "invalid", "invalidText", "warn", "warnText", "appendInline", "scrollableContainer", "itemValueKey", "selectionFeedback", "menuButtonLabel", "selectedLabel", "dropUp"], outputs: ["selected", "onClose", "close"] }, { kind: "component", type: i5.DropdownList, selector: "cds-dropdown-list, ibm-dropdown-list", inputs: ["ariaLabel", "items", "listTpl", "type", "showTitles"], outputs: ["select", "scroll", "blurIntent"] }, { kind: "component", type: i1$1.CarbonMultiInputComponent, selector: "valtimo-carbon-multi-input", inputs: ["name", "title", "titleTranslationKey", "type", "arbitraryValueAmount", "arbitraryAmountTitles", "initialAmountOfRows", "minimumAmountOfRows", "maxRows", "addRowText", "addRowTranslationKey", "deleteRowText", "deleteRowTranslationKey", "disabled", "defaultValues", "margin", "tooltip", "required", "keyColumnTitle", "valueColumnTitle", "dropdownColumnTitle", "hideDeleteButton", "hideAddButton", "dropdownItems", "dropdownWidth", "fullWidth", "carbonTheme"], outputs: ["valueChange", "allValuesValidEvent"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: WidgetTranslatePipe, name: "widgetTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1934
|
+
}
|
|
1935
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseGroupByConfigurationComponent, decorators: [{
|
|
1936
|
+
type: Component,
|
|
1937
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<form\n class=\"case-count-configuration-form\"\n *ngIf=\"{\n documentItems: documentItems$ | async,\n operatorItems: operatorItems$,\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 [invalid]=\"path.dirty && path.invalid\"\n >\n {{ 'path' | widgetTranslate: dataSourceKey | async }}\n\n <input cdsText formControlName=\"path\" [invalid]=\"path.dirty && path.invalid\" />\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 [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 type=\"keyDropdownValue\"\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", styles: ["::ng-deep .case-count-configuration-form .conditions-label{margin-bottom:16px}::ng-deep .case-count-configuration-form .conditions-multi-input .cds--form__helper-text{font-style:italic}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
1938
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }, { type: i2$2.DocumentService }, { type: i3$1.TranslateService }, { type: WidgetTranslationService }], propDecorators: { dataSourceKey: [{
|
|
1939
|
+
type: Input
|
|
1940
|
+
}], disabled: [{
|
|
1941
|
+
type: Input
|
|
1942
|
+
}], prefillConfiguration: [{
|
|
1943
|
+
type: Input
|
|
1944
|
+
}], configurationEvent: [{
|
|
1945
|
+
type: Output
|
|
1946
|
+
}] } });
|
|
1947
|
+
|
|
1948
|
+
/*
|
|
1949
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1950
|
+
*
|
|
1951
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1952
|
+
* you may not use this file except in compliance with the License.
|
|
1953
|
+
* You may obtain a copy of the License at
|
|
1954
|
+
*
|
|
1955
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1956
|
+
*
|
|
1957
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1958
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1959
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1960
|
+
* See the License for the specific language governing permissions and
|
|
1961
|
+
* limitations under the License.
|
|
1962
|
+
*/
|
|
1963
|
+
|
|
1964
|
+
/*
|
|
1965
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1966
|
+
*
|
|
1967
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1968
|
+
* you may not use this file except in compliance with the License.
|
|
1969
|
+
* You may obtain a copy of the License at
|
|
1970
|
+
*
|
|
1971
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1972
|
+
*
|
|
1973
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1974
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1975
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1976
|
+
* See the License for the specific language governing permissions and
|
|
1977
|
+
* limitations under the License.
|
|
1978
|
+
*/
|
|
1979
|
+
|
|
1980
|
+
/*
|
|
1981
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1982
|
+
*
|
|
1983
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
1984
|
+
* you may not use this file except in compliance with the License.
|
|
1985
|
+
* You may obtain a copy of the License at
|
|
1986
|
+
*
|
|
1987
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
1988
|
+
*
|
|
1989
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
1990
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
1991
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
1992
|
+
* See the License for the specific language governing permissions and
|
|
1993
|
+
* limitations under the License.
|
|
1994
|
+
*/
|
|
1995
|
+
|
|
1996
|
+
/*
|
|
1997
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1998
|
+
*
|
|
1999
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2000
|
+
* you may not use this file except in compliance with the License.
|
|
2001
|
+
* You may obtain a copy of the License at
|
|
2002
|
+
*
|
|
2003
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2004
|
+
*
|
|
2005
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2006
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2007
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2008
|
+
* See the License for the specific language governing permissions and
|
|
2009
|
+
* limitations under the License.
|
|
2010
|
+
*/
|
|
2011
|
+
|
|
2012
|
+
/*
|
|
2013
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2014
|
+
*
|
|
2015
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2016
|
+
* you may not use this file except in compliance with the License.
|
|
2017
|
+
* You may obtain a copy of the License at
|
|
2018
|
+
*
|
|
2019
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2020
|
+
*
|
|
2021
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2022
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2023
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2024
|
+
* See the License for the specific language governing permissions and
|
|
2025
|
+
* limitations under the License.
|
|
2026
|
+
*/
|
|
2027
|
+
const caseGroupByDataSourceSpecification = {
|
|
2028
|
+
dataSourceKey: 'case-group-by',
|
|
2029
|
+
configurationComponent: CaseGroupByConfigurationComponent,
|
|
2030
|
+
translations: {
|
|
2031
|
+
de: {
|
|
2032
|
+
title: 'Gruppe',
|
|
2033
|
+
documentDefinition: 'Falltyp (erforderlich)',
|
|
2034
|
+
documentDefinitionHelperText: 'Der Falltyp, für den die Anzahl abgerufen wird',
|
|
2035
|
+
'!=': 'Nicht gleichzusetzen mit',
|
|
2036
|
+
'==': 'Gleich',
|
|
2037
|
+
'>': 'Größer als',
|
|
2038
|
+
'>=': 'Größer als oder gleich wie',
|
|
2039
|
+
'<': 'Weniger als',
|
|
2040
|
+
'<=': 'Gleich oder kleiner als',
|
|
2041
|
+
path: 'Pfad',
|
|
2042
|
+
pathHelperText: 'Der Pfad innerhalb der Fall, deren Werte gruppiert werden sollen',
|
|
2043
|
+
operator: 'Operator',
|
|
2044
|
+
value: 'Wert',
|
|
2045
|
+
conditions: 'Bedingungen',
|
|
2046
|
+
conditionsHelperText: "Geben Sie optionale Bedingungen zum Abrufen der Gruppierung für den ausgewählten Falltyp an. Zum Beispiel: 'case:createdBy', 'Nicht gleichzusetzen mit', 'test@test.com'.",
|
|
2047
|
+
addCondition: 'Bedingung hinzufügen',
|
|
2048
|
+
enum: 'Anzeige der Werte',
|
|
2049
|
+
enumHelperText: "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'.",
|
|
2050
|
+
displayValue: 'Anzeige',
|
|
2051
|
+
addDisplay: 'Ansicht hinzufügen',
|
|
2052
|
+
},
|
|
2053
|
+
en: {
|
|
2054
|
+
title: 'Group by',
|
|
2055
|
+
documentDefinition: 'Case type (required)',
|
|
2056
|
+
documentDefinitionHelperText: 'The case type for which the count is retrieved',
|
|
2057
|
+
'!=': 'Not equal to',
|
|
2058
|
+
'==': 'Equal to',
|
|
2059
|
+
'>': 'Greater than',
|
|
2060
|
+
'>=': 'Greater than or equal to',
|
|
2061
|
+
'<': 'Less than',
|
|
2062
|
+
'<=': 'Less than or equal to',
|
|
2063
|
+
path: 'Path (required)',
|
|
2064
|
+
pathHelperText: 'The path within the case of which the values should be grouped',
|
|
2065
|
+
operator: 'Operator',
|
|
2066
|
+
value: 'Value',
|
|
2067
|
+
conditions: 'Conditions',
|
|
2068
|
+
conditionsHelperText: "Specify optional conditions for retrieving the grouping for the selected case type. For example: 'case:createdBy', 'Not equal to', 'test@test.com'. To compare with empty values, '${null}' can be entered as a value. To compare with the current date, '${localDateTimeNow}' can be entered as a value. This also supports, for example, the following logic: '${localDateTimeNow.minusWeeks(2)}'.",
|
|
2069
|
+
addCondition: 'Add condition',
|
|
2070
|
+
enum: 'Display of values',
|
|
2071
|
+
enumHelperText: "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'.",
|
|
2072
|
+
displayValue: 'Display',
|
|
2073
|
+
addDisplay: 'Add display',
|
|
2074
|
+
},
|
|
2075
|
+
nl: {
|
|
2076
|
+
title: 'Groepering',
|
|
2077
|
+
documentDefinition: 'Dossiertype (vereist)',
|
|
2078
|
+
documentDefinitionHelperText: 'Het dossiertype waarvoor de telling wordt opgehaald',
|
|
2079
|
+
'!=': 'Niet gelijk aan',
|
|
2080
|
+
'==': 'Gelijk aan',
|
|
2081
|
+
'>': 'Groter dan',
|
|
2082
|
+
'>=': 'Groter dan of gelijk aan',
|
|
2083
|
+
'<': 'Minder dan',
|
|
2084
|
+
'<=': 'Minder dan of gelijk aan',
|
|
2085
|
+
path: 'Pad',
|
|
2086
|
+
pathHelperText: 'Het pad binnen het dossier waarvan de waardes gegroepeerd moeten worden',
|
|
2087
|
+
operator: 'Operator',
|
|
2088
|
+
value: 'Waarde',
|
|
2089
|
+
conditions: 'Condities',
|
|
2090
|
+
conditionsHelperText: "Geef optionele condities op voor het ophalen van de groepering voor het geselecteerde dossiertype. Bijvoorbeeld: 'case:createdBy', 'Niet gelijk aan', 'test@test.com'. Voor het vergelijken met lege waardes kan '${null}' ingevuld worden als waarde. Voor het vergelijken met de huidige datum kan '${localDateTimeNow}' ingevuld worden als waarde. Deze ondersteunt ook bijvoorbeeld de volgende logica: '${localDateTimeNow.minusWeeks(2)}'.",
|
|
2091
|
+
addCondition: 'Conditie toevoegen',
|
|
2092
|
+
enum: 'Weergave van waardes',
|
|
2093
|
+
enumHelperText: "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'.",
|
|
2094
|
+
displayValue: 'Weergave',
|
|
2095
|
+
addDisplay: 'Weergave toevoegen',
|
|
2096
|
+
},
|
|
2097
|
+
},
|
|
2098
|
+
};
|
|
2099
|
+
|
|
2100
|
+
/*
|
|
2101
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2102
|
+
*
|
|
2103
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2104
|
+
* you may not use this file except in compliance with the License.
|
|
2105
|
+
* You may obtain a copy of the License at
|
|
2106
|
+
*
|
|
2107
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2108
|
+
*
|
|
2109
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2110
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2111
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2112
|
+
* See the License for the specific language governing permissions and
|
|
2113
|
+
* limitations under the License.
|
|
2114
|
+
*/
|
|
2115
|
+
class CaseGroupByDataSourceModule {
|
|
2116
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseGroupByDataSourceModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2117
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: CaseGroupByDataSourceModule, declarations: [CaseGroupByConfigurationComponent], imports: [CommonModule,
|
|
2118
|
+
ReactiveFormsModule,
|
|
2119
|
+
WidgetTranslatePipeModule,
|
|
2120
|
+
InputModule,
|
|
2121
|
+
DropdownModule,
|
|
2122
|
+
CarbonMultiInputModule], exports: [CaseGroupByConfigurationComponent] }); }
|
|
2123
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseGroupByDataSourceModule, providers: [
|
|
2124
|
+
{ provide: DATA_SOURCE_TOKEN, useValue: caseGroupByDataSourceSpecification, multi: true },
|
|
2125
|
+
], imports: [CommonModule,
|
|
2126
|
+
ReactiveFormsModule,
|
|
2127
|
+
WidgetTranslatePipeModule,
|
|
2128
|
+
InputModule,
|
|
2129
|
+
DropdownModule,
|
|
2130
|
+
CarbonMultiInputModule] }); }
|
|
2131
|
+
}
|
|
2132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CaseGroupByDataSourceModule, decorators: [{
|
|
2133
|
+
type: NgModule,
|
|
2134
|
+
args: [{
|
|
2135
|
+
declarations: [CaseGroupByConfigurationComponent],
|
|
2136
|
+
imports: [
|
|
2137
|
+
CommonModule,
|
|
2138
|
+
ReactiveFormsModule,
|
|
2139
|
+
WidgetTranslatePipeModule,
|
|
2140
|
+
InputModule,
|
|
2141
|
+
DropdownModule,
|
|
2142
|
+
CarbonMultiInputModule,
|
|
2143
|
+
],
|
|
2144
|
+
exports: [CaseGroupByConfigurationComponent],
|
|
2145
|
+
providers: [
|
|
2146
|
+
{ provide: DATA_SOURCE_TOKEN, useValue: caseGroupByDataSourceSpecification, multi: true },
|
|
2147
|
+
],
|
|
2148
|
+
}]
|
|
2149
|
+
}] });
|
|
2150
|
+
|
|
2151
|
+
/*
|
|
2152
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2153
|
+
*
|
|
2154
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2155
|
+
* you may not use this file except in compliance with the License.
|
|
2156
|
+
* You may obtain a copy of the License at
|
|
2157
|
+
*
|
|
2158
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2159
|
+
*
|
|
2160
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2161
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2162
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2163
|
+
* See the License for the specific language governing permissions and
|
|
2164
|
+
* limitations under the License.
|
|
2165
|
+
*/
|
|
2166
|
+
|
|
2167
|
+
/*
|
|
2168
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2169
|
+
*
|
|
2170
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2171
|
+
* you may not use this file except in compliance with the License.
|
|
2172
|
+
* You may obtain a copy of the License at
|
|
2173
|
+
*
|
|
2174
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2175
|
+
*
|
|
2176
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2177
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2178
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2179
|
+
* See the License for the specific language governing permissions and
|
|
2180
|
+
* limitations under the License.
|
|
2181
|
+
*/
|
|
2182
|
+
|
|
2183
|
+
/*
|
|
2184
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2185
|
+
*
|
|
2186
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2187
|
+
* you may not use this file except in compliance with the License.
|
|
2188
|
+
* You may obtain a copy of the License at
|
|
2189
|
+
*
|
|
2190
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2191
|
+
*
|
|
2192
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2193
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2194
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2195
|
+
* See the License for the specific language governing permissions and
|
|
2196
|
+
* limitations under the License.
|
|
2197
|
+
*/
|
|
2198
|
+
class BigNumberConfigurationComponent {
|
|
2199
|
+
set disabled(disabledValue) {
|
|
2200
|
+
if (disabledValue) {
|
|
2201
|
+
this.form.disable();
|
|
2202
|
+
}
|
|
2203
|
+
else {
|
|
2204
|
+
this.form.enable();
|
|
2205
|
+
}
|
|
2206
|
+
}
|
|
2207
|
+
get title() {
|
|
2208
|
+
return this.form.get('title');
|
|
2209
|
+
}
|
|
2210
|
+
get subtitle() {
|
|
2211
|
+
return this.form.get('subtitle');
|
|
2212
|
+
}
|
|
2213
|
+
get label() {
|
|
2214
|
+
return this.form.get('label');
|
|
2215
|
+
}
|
|
2216
|
+
get useKPI() {
|
|
2217
|
+
return this.form.get('useKPI');
|
|
2218
|
+
}
|
|
2219
|
+
get lowSeverityThreshold() {
|
|
2220
|
+
return this.form.get('lowSeverityThreshold');
|
|
2221
|
+
}
|
|
2222
|
+
get mediumSeverityThreshold() {
|
|
2223
|
+
return this.form.get('mediumSeverityThreshold');
|
|
2224
|
+
}
|
|
2225
|
+
get highSeverityThreshold() {
|
|
2226
|
+
return this.form.get('highSeverityThreshold');
|
|
2227
|
+
}
|
|
2228
|
+
set prefillConfiguration(configurationValue) {
|
|
2229
|
+
if (configurationValue) {
|
|
2230
|
+
this.title.setValue(configurationValue.title || '');
|
|
2231
|
+
this.subtitle.setValue(configurationValue.subtitle || '');
|
|
2232
|
+
this.label.setValue(configurationValue.label || '');
|
|
2233
|
+
this.useKPI.setValue(configurationValue.useKPI || false);
|
|
2234
|
+
this.lowSeverityThreshold.setValue(configurationValue.lowSeverityThreshold || null);
|
|
2235
|
+
this.mediumSeverityThreshold.setValue(configurationValue.mediumSeverityThreshold || null);
|
|
1686
2236
|
this.highSeverityThreshold.setValue(configurationValue.highSeverityThreshold || null);
|
|
1687
2237
|
}
|
|
1688
2238
|
}
|
|
@@ -1693,49 +2243,387 @@ class BigNumberConfigurationComponent {
|
|
|
1693
2243
|
subtitle: this.fb.control(''),
|
|
1694
2244
|
label: this.fb.control(''),
|
|
1695
2245
|
useKPI: this.fb.control(false, [Validators.required]),
|
|
1696
|
-
lowSeverityThreshold: this.fb.control(null),
|
|
1697
|
-
mediumSeverityThreshold: this.fb.control(null),
|
|
1698
|
-
highSeverityThreshold: this.fb.control(null),
|
|
2246
|
+
lowSeverityThreshold: this.fb.control(null),
|
|
2247
|
+
mediumSeverityThreshold: this.fb.control(null),
|
|
2248
|
+
highSeverityThreshold: this.fb.control(null),
|
|
2249
|
+
});
|
|
2250
|
+
this.configurationEvent = new EventEmitter();
|
|
2251
|
+
this._subscriptions = new Subscription();
|
|
2252
|
+
}
|
|
2253
|
+
ngOnInit() {
|
|
2254
|
+
this.openFormSubscription();
|
|
2255
|
+
this.openKPISubscription();
|
|
2256
|
+
}
|
|
2257
|
+
ngOnDestroy() {
|
|
2258
|
+
this._subscriptions.unsubscribe();
|
|
2259
|
+
}
|
|
2260
|
+
openFormSubscription() {
|
|
2261
|
+
this._subscriptions.add(this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {
|
|
2262
|
+
this.configurationEvent.emit({ valid: this.form.valid, data: formValue });
|
|
2263
|
+
}));
|
|
2264
|
+
}
|
|
2265
|
+
openKPISubscription() {
|
|
2266
|
+
this._subscriptions.add(this.useKPI.valueChanges.pipe(startWith(this.useKPI.value)).subscribe(useKpi => {
|
|
2267
|
+
const validators = [Validators.required];
|
|
2268
|
+
if (useKpi) {
|
|
2269
|
+
this.lowSeverityThreshold.setValidators(validators);
|
|
2270
|
+
this.mediumSeverityThreshold.setValidators(validators);
|
|
2271
|
+
this.highSeverityThreshold.setValidators(validators);
|
|
2272
|
+
}
|
|
2273
|
+
else {
|
|
2274
|
+
this.lowSeverityThreshold.clearValidators();
|
|
2275
|
+
this.mediumSeverityThreshold.clearValidators();
|
|
2276
|
+
this.highSeverityThreshold.clearValidators();
|
|
2277
|
+
}
|
|
2278
|
+
this.lowSeverityThreshold.updateValueAndValidity();
|
|
2279
|
+
this.mediumSeverityThreshold.updateValueAndValidity();
|
|
2280
|
+
this.highSeverityThreshold.updateValueAndValidity();
|
|
2281
|
+
}));
|
|
2282
|
+
}
|
|
2283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BigNumberConfigurationComponent, deps: [{ token: i1$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2284
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: BigNumberConfigurationComponent, selector: "ng-component", inputs: { displayTypeKey: "displayTypeKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i5.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "component", type: i5.Checkbox, selector: "cds-checkbox, ibm-checkbox", inputs: ["disabled", "skeleton", "hideLabel", "name", "id", "required", "value", "ariaLabel", "ariaLabelledby", "indeterminate", "checked"], outputs: ["click", "checkedChange", "indeterminateChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: WidgetTranslatePipe, name: "widgetTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2285
|
+
}
|
|
2286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BigNumberConfigurationComponent, decorators: [{
|
|
2287
|
+
type: Component,
|
|
2288
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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" }]
|
|
2289
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }], propDecorators: { displayTypeKey: [{
|
|
2290
|
+
type: Input
|
|
2291
|
+
}], disabled: [{
|
|
2292
|
+
type: Input
|
|
2293
|
+
}], prefillConfiguration: [{
|
|
2294
|
+
type: Input
|
|
2295
|
+
}], configurationEvent: [{
|
|
2296
|
+
type: Output
|
|
2297
|
+
}] } });
|
|
2298
|
+
|
|
2299
|
+
/*
|
|
2300
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2301
|
+
*
|
|
2302
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2303
|
+
* you may not use this file except in compliance with the License.
|
|
2304
|
+
* You may obtain a copy of the License at
|
|
2305
|
+
*
|
|
2306
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2307
|
+
*
|
|
2308
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2309
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2310
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2311
|
+
* See the License for the specific language governing permissions and
|
|
2312
|
+
* limitations under the License.
|
|
2313
|
+
*/
|
|
2314
|
+
|
|
2315
|
+
/*
|
|
2316
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2317
|
+
*
|
|
2318
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2319
|
+
* you may not use this file except in compliance with the License.
|
|
2320
|
+
* You may obtain a copy of the License at
|
|
2321
|
+
*
|
|
2322
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2323
|
+
*
|
|
2324
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2325
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2326
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2327
|
+
* See the License for the specific language governing permissions and
|
|
2328
|
+
* limitations under the License.
|
|
2329
|
+
*/
|
|
2330
|
+
class BigNumberDisplayComponent {
|
|
2331
|
+
get severityClass() {
|
|
2332
|
+
if (!this.displayTypeProperties.useKPI) {
|
|
2333
|
+
return WidgetSeverity.BLACK;
|
|
2334
|
+
}
|
|
2335
|
+
const value = this.data?.value;
|
|
2336
|
+
if (value < this.displayTypeProperties.lowSeverityThreshold) {
|
|
2337
|
+
return WidgetSeverity.GREEN;
|
|
2338
|
+
}
|
|
2339
|
+
else if (value < this.displayTypeProperties.mediumSeverityThreshold) {
|
|
2340
|
+
return WidgetSeverity.YELLOW;
|
|
2341
|
+
}
|
|
2342
|
+
else if (value < this.displayTypeProperties.highSeverityThreshold) {
|
|
2343
|
+
return WidgetSeverity.ORANGE;
|
|
2344
|
+
}
|
|
2345
|
+
return WidgetSeverity.RED;
|
|
2346
|
+
}
|
|
2347
|
+
get numberFontSize() {
|
|
2348
|
+
if (!this.data) {
|
|
2349
|
+
return 122;
|
|
2350
|
+
}
|
|
2351
|
+
return Math.floor(122 / this.data.value.toString().length) + 20;
|
|
2352
|
+
}
|
|
2353
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BigNumberDisplayComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2354
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: BigNumberDisplayComponent, selector: "valtimo-big-number-display", inputs: { displayTypeKey: "displayTypeKey", data: "data", displayTypeProperties: "displayTypeProperties" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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", styles: [":host{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:20px}.valtimo-big-number-widget__title,.valtimo-big-number-widget__subtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valtimo-big-number-widget__title{font-size:20px;margin-bottom:12px}.valtimo-big-number-widget__subtitle{font-size:14px}.valtimo-big-number-widget__number{font-weight:lighter;font-size:122px;line-height:.75em}.valtimo-big-number-widget__label{font-size:12px;margin-left:12px;margin-bottom:-1px}.valtimo-big-number-widget__content{display:flex;align-items:flex-end}.valtimo-severity__black{color:#000}.valtimo-severity__green{color:#42be65}.valtimo-severity__yellow{color:#f1c21b}.valtimo-severity__orange{color:#ff832b}.valtimo-severity__red{color:#da1e28}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2355
|
+
}
|
|
2356
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BigNumberDisplayComponent, decorators: [{
|
|
2357
|
+
type: Component,
|
|
2358
|
+
args: [{ selector: 'valtimo-big-number-display', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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", styles: [":host{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:20px}.valtimo-big-number-widget__title,.valtimo-big-number-widget__subtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valtimo-big-number-widget__title{font-size:20px;margin-bottom:12px}.valtimo-big-number-widget__subtitle{font-size:14px}.valtimo-big-number-widget__number{font-weight:lighter;font-size:122px;line-height:.75em}.valtimo-big-number-widget__label{font-size:12px;margin-left:12px;margin-bottom:-1px}.valtimo-big-number-widget__content{display:flex;align-items:flex-end}.valtimo-severity__black{color:#000}.valtimo-severity__green{color:#42be65}.valtimo-severity__yellow{color:#f1c21b}.valtimo-severity__orange{color:#ff832b}.valtimo-severity__red{color:#da1e28}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2359
|
+
}], propDecorators: { displayTypeKey: [{
|
|
2360
|
+
type: Input
|
|
2361
|
+
}], data: [{
|
|
2362
|
+
type: Input
|
|
2363
|
+
}], displayTypeProperties: [{
|
|
2364
|
+
type: Input
|
|
2365
|
+
}] } });
|
|
2366
|
+
|
|
2367
|
+
/*
|
|
2368
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2369
|
+
*
|
|
2370
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2371
|
+
* you may not use this file except in compliance with the License.
|
|
2372
|
+
* You may obtain a copy of the License at
|
|
2373
|
+
*
|
|
2374
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2375
|
+
*
|
|
2376
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2377
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2378
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2379
|
+
* See the License for the specific language governing permissions and
|
|
2380
|
+
* limitations under the License.
|
|
2381
|
+
*/
|
|
2382
|
+
|
|
2383
|
+
/*
|
|
2384
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2385
|
+
*
|
|
2386
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2387
|
+
* you may not use this file except in compliance with the License.
|
|
2388
|
+
* You may obtain a copy of the License at
|
|
2389
|
+
*
|
|
2390
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2391
|
+
*
|
|
2392
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2393
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2394
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2395
|
+
* See the License for the specific language governing permissions and
|
|
2396
|
+
* limitations under the License.
|
|
2397
|
+
*/
|
|
2398
|
+
|
|
2399
|
+
/*
|
|
2400
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2401
|
+
*
|
|
2402
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2403
|
+
* you may not use this file except in compliance with the License.
|
|
2404
|
+
* You may obtain a copy of the License at
|
|
2405
|
+
*
|
|
2406
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2407
|
+
*
|
|
2408
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2409
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2410
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2411
|
+
* See the License for the specific language governing permissions and
|
|
2412
|
+
* limitations under the License.
|
|
2413
|
+
*/
|
|
2414
|
+
const bigNumberSpecification = {
|
|
2415
|
+
displayTypeKey: 'number',
|
|
2416
|
+
displayComponent: BigNumberDisplayComponent,
|
|
2417
|
+
configurationComponent: BigNumberConfigurationComponent,
|
|
2418
|
+
width: 1,
|
|
2419
|
+
height: 1,
|
|
2420
|
+
translations: {
|
|
2421
|
+
nl: {
|
|
2422
|
+
title: 'Groot getal',
|
|
2423
|
+
formTitle: 'Titel (vereist)',
|
|
2424
|
+
formTitleHelperText: 'De titel die wordt weergegeven in de widget',
|
|
2425
|
+
subtitle: 'Ondertitel',
|
|
2426
|
+
subtitleHelperText: 'De ondertitel weergegeven in de widget',
|
|
2427
|
+
label: 'Label',
|
|
2428
|
+
labelHelperText: 'Het label dat wordt weergegeven in de widget',
|
|
2429
|
+
useKPI: 'KPI gebruiken',
|
|
2430
|
+
lowSeverityThreshold: 'Lage ernstdrempel (vereist)',
|
|
2431
|
+
mediumSeverityThreshold: 'Middelmatige ernstdrempel (vereist)',
|
|
2432
|
+
highSeverityThreshold: 'Hoge ernstdrempel (vereist)',
|
|
2433
|
+
},
|
|
2434
|
+
en: {
|
|
2435
|
+
title: 'Big number',
|
|
2436
|
+
formTitle: 'Title (required)',
|
|
2437
|
+
formTitleHelperText: 'The title displayed in the widget',
|
|
2438
|
+
subtitle: 'Subtitle',
|
|
2439
|
+
subtitleHelperText: 'The subtitle displayed in the widget',
|
|
2440
|
+
label: 'Label',
|
|
2441
|
+
labelHelperText: 'The label displayed in the widget',
|
|
2442
|
+
useKPI: 'Use KPI',
|
|
2443
|
+
lowSeverityThreshold: 'Low severity threshold (required)',
|
|
2444
|
+
mediumSeverityThreshold: 'Medium severity threshold (required)',
|
|
2445
|
+
highSeverityThreshold: 'High severity threshold (required)',
|
|
2446
|
+
},
|
|
2447
|
+
de: {
|
|
2448
|
+
title: 'Große Nummer',
|
|
2449
|
+
formTitle: 'Titel (erforderlich)',
|
|
2450
|
+
formTitleHelperText: 'Der im Widget angezeigte Titel',
|
|
2451
|
+
subtitle: 'Untertitel',
|
|
2452
|
+
subtitleHelperText: 'Der im Widget angezeigte Untertitel',
|
|
2453
|
+
label: 'Beschriftung',
|
|
2454
|
+
labelHelperText: 'Die im Widget angezeigte Beschriftung',
|
|
2455
|
+
useKPI: 'Verwenden Sie KPI',
|
|
2456
|
+
lowSeverityThreshold: 'Niedriger Schweregradschwellenwert (erforderlich)',
|
|
2457
|
+
mediumSeverityThreshold: 'Mittlerer Schweregradschwellenwert (erforderlich)',
|
|
2458
|
+
highSeverityThreshold: 'Hoher Schweregradschwellenwert (erforderlich)',
|
|
2459
|
+
},
|
|
2460
|
+
},
|
|
2461
|
+
requiredDataFeatures: [DATA_FEATURES.NUMBER],
|
|
2462
|
+
};
|
|
2463
|
+
|
|
2464
|
+
/*
|
|
2465
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2466
|
+
*
|
|
2467
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2468
|
+
* you may not use this file except in compliance with the License.
|
|
2469
|
+
* You may obtain a copy of the License at
|
|
2470
|
+
*
|
|
2471
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2472
|
+
*
|
|
2473
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2474
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2475
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2476
|
+
* See the License for the specific language governing permissions and
|
|
2477
|
+
* limitations under the License.
|
|
2478
|
+
*/
|
|
2479
|
+
class BigNumberModule {
|
|
2480
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BigNumberModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2481
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: BigNumberModule, declarations: [BigNumberDisplayComponent, BigNumberConfigurationComponent], imports: [CommonModule,
|
|
2482
|
+
ReactiveFormsModule,
|
|
2483
|
+
WidgetTranslatePipeModule,
|
|
2484
|
+
InputModule,
|
|
2485
|
+
CheckboxModule], exports: [BigNumberDisplayComponent] }); }
|
|
2486
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BigNumberModule, providers: [{ provide: DISPLAY_TYPE_TOKEN, useValue: bigNumberSpecification, multi: true }], imports: [CommonModule,
|
|
2487
|
+
ReactiveFormsModule,
|
|
2488
|
+
WidgetTranslatePipeModule,
|
|
2489
|
+
InputModule,
|
|
2490
|
+
CheckboxModule] }); }
|
|
2491
|
+
}
|
|
2492
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BigNumberModule, decorators: [{
|
|
2493
|
+
type: NgModule,
|
|
2494
|
+
args: [{
|
|
2495
|
+
declarations: [BigNumberDisplayComponent, BigNumberConfigurationComponent],
|
|
2496
|
+
imports: [
|
|
2497
|
+
CommonModule,
|
|
2498
|
+
ReactiveFormsModule,
|
|
2499
|
+
WidgetTranslatePipeModule,
|
|
2500
|
+
InputModule,
|
|
2501
|
+
CheckboxModule,
|
|
2502
|
+
],
|
|
2503
|
+
exports: [BigNumberDisplayComponent],
|
|
2504
|
+
providers: [{ provide: DISPLAY_TYPE_TOKEN, useValue: bigNumberSpecification, multi: true }],
|
|
2505
|
+
}]
|
|
2506
|
+
}] });
|
|
2507
|
+
|
|
2508
|
+
/*
|
|
2509
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2510
|
+
*
|
|
2511
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2512
|
+
* you may not use this file except in compliance with the License.
|
|
2513
|
+
* You may obtain a copy of the License at
|
|
2514
|
+
*
|
|
2515
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2516
|
+
*
|
|
2517
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2518
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2519
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2520
|
+
* See the License for the specific language governing permissions and
|
|
2521
|
+
* limitations under the License.
|
|
2522
|
+
*/
|
|
2523
|
+
|
|
2524
|
+
/*
|
|
2525
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2526
|
+
*
|
|
2527
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2528
|
+
* you may not use this file except in compliance with the License.
|
|
2529
|
+
* You may obtain a copy of the License at
|
|
2530
|
+
*
|
|
2531
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2532
|
+
*
|
|
2533
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2534
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2535
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2536
|
+
* See the License for the specific language governing permissions and
|
|
2537
|
+
* limitations under the License.
|
|
2538
|
+
*/
|
|
2539
|
+
|
|
2540
|
+
/*
|
|
2541
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2542
|
+
*
|
|
2543
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2544
|
+
* you may not use this file except in compliance with the License.
|
|
2545
|
+
* You may obtain a copy of the License at
|
|
2546
|
+
*
|
|
2547
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2548
|
+
*
|
|
2549
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2550
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2551
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2552
|
+
* See the License for the specific language governing permissions and
|
|
2553
|
+
* limitations under the License.
|
|
2554
|
+
*/
|
|
2555
|
+
|
|
2556
|
+
/*
|
|
2557
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2558
|
+
*
|
|
2559
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2560
|
+
* you may not use this file except in compliance with the License.
|
|
2561
|
+
* You may obtain a copy of the License at
|
|
2562
|
+
*
|
|
2563
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2564
|
+
*
|
|
2565
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2566
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2567
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2568
|
+
* See the License for the specific language governing permissions and
|
|
2569
|
+
* limitations under the License.
|
|
2570
|
+
*/
|
|
2571
|
+
class DonutConfigurationComponent {
|
|
2572
|
+
set disabled(disabledValue) {
|
|
2573
|
+
if (disabledValue) {
|
|
2574
|
+
this.form.disable();
|
|
2575
|
+
}
|
|
2576
|
+
else {
|
|
2577
|
+
this.form.enable();
|
|
2578
|
+
}
|
|
2579
|
+
}
|
|
2580
|
+
get title() {
|
|
2581
|
+
return this.form.get('title');
|
|
2582
|
+
}
|
|
2583
|
+
get subtitle() {
|
|
2584
|
+
return this.form.get('subtitle');
|
|
2585
|
+
}
|
|
2586
|
+
get label() {
|
|
2587
|
+
return this.form.get('label');
|
|
2588
|
+
}
|
|
2589
|
+
set prefillConfiguration(configurationValue) {
|
|
2590
|
+
if (configurationValue) {
|
|
2591
|
+
this.title.setValue(configurationValue.title || '');
|
|
2592
|
+
this.subtitle.setValue(configurationValue.subtitle || '');
|
|
2593
|
+
this.label.setValue(configurationValue.label || '');
|
|
2594
|
+
}
|
|
2595
|
+
}
|
|
2596
|
+
constructor(fb) {
|
|
2597
|
+
this.fb = fb;
|
|
2598
|
+
this.form = this.fb.group({
|
|
2599
|
+
title: this.fb.control('', [Validators.required]),
|
|
2600
|
+
subtitle: this.fb.control(''),
|
|
2601
|
+
label: this.fb.control(''),
|
|
2602
|
+
useKPI: this.fb.control(false, [Validators.required]),
|
|
1699
2603
|
});
|
|
1700
2604
|
this.configurationEvent = new EventEmitter();
|
|
1701
2605
|
this._subscriptions = new Subscription();
|
|
1702
2606
|
}
|
|
1703
2607
|
ngOnInit() {
|
|
1704
2608
|
this.openFormSubscription();
|
|
1705
|
-
this.openKPISubscription();
|
|
1706
2609
|
}
|
|
1707
2610
|
ngOnDestroy() {
|
|
1708
2611
|
this._subscriptions.unsubscribe();
|
|
1709
2612
|
}
|
|
1710
2613
|
openFormSubscription() {
|
|
1711
2614
|
this._subscriptions.add(this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {
|
|
1712
|
-
this.configurationEvent.emit({
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
this._subscriptions.add(this.useKPI.valueChanges.pipe(startWith(this.useKPI.value)).subscribe(useKpi => {
|
|
1717
|
-
const validators = [Validators.required];
|
|
1718
|
-
if (useKpi) {
|
|
1719
|
-
this.lowSeverityThreshold.setValidators(validators);
|
|
1720
|
-
this.mediumSeverityThreshold.setValidators(validators);
|
|
1721
|
-
this.highSeverityThreshold.setValidators(validators);
|
|
1722
|
-
}
|
|
1723
|
-
else {
|
|
1724
|
-
this.lowSeverityThreshold.clearValidators();
|
|
1725
|
-
this.mediumSeverityThreshold.clearValidators();
|
|
1726
|
-
this.highSeverityThreshold.clearValidators();
|
|
1727
|
-
}
|
|
1728
|
-
this.lowSeverityThreshold.updateValueAndValidity();
|
|
1729
|
-
this.mediumSeverityThreshold.updateValueAndValidity();
|
|
1730
|
-
this.highSeverityThreshold.updateValueAndValidity();
|
|
2615
|
+
this.configurationEvent.emit({
|
|
2616
|
+
valid: this.form.valid,
|
|
2617
|
+
data: formValue,
|
|
2618
|
+
});
|
|
1731
2619
|
}));
|
|
1732
2620
|
}
|
|
1733
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type:
|
|
1734
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type:
|
|
2621
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DonutConfigurationComponent, deps: [{ token: i1$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2622
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: DonutConfigurationComponent, selector: "ng-component", inputs: { displayTypeKey: "displayTypeKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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</form>\n", dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i5.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: WidgetTranslatePipe, name: "widgetTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1735
2623
|
}
|
|
1736
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type:
|
|
2624
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DonutConfigurationComponent, decorators: [{
|
|
1737
2625
|
type: Component,
|
|
1738
|
-
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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
|
|
2626
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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</form>\n" }]
|
|
1739
2627
|
}], ctorParameters: () => [{ type: i1$3.FormBuilder }], propDecorators: { displayTypeKey: [{
|
|
1740
2628
|
type: Input
|
|
1741
2629
|
}], disabled: [{
|
|
@@ -1762,6 +2650,71 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1762
2650
|
* limitations under the License.
|
|
1763
2651
|
*/
|
|
1764
2652
|
|
|
2653
|
+
/*
|
|
2654
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2655
|
+
*
|
|
2656
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2657
|
+
* you may not use this file except in compliance with the License.
|
|
2658
|
+
* You may obtain a copy of the License at
|
|
2659
|
+
*
|
|
2660
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2661
|
+
*
|
|
2662
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2663
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2664
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2665
|
+
* See the License for the specific language governing permissions and
|
|
2666
|
+
* limitations under the License.
|
|
2667
|
+
*/
|
|
2668
|
+
class DonutDisplayComponent {
|
|
2669
|
+
set data(value) {
|
|
2670
|
+
if (!value)
|
|
2671
|
+
return;
|
|
2672
|
+
this._data$.next(value);
|
|
2673
|
+
}
|
|
2674
|
+
constructor(themeService) {
|
|
2675
|
+
this.themeService = themeService;
|
|
2676
|
+
this._data$ = new BehaviorSubject(null);
|
|
2677
|
+
this.donutData$ = this._data$.pipe(filter(data => !!data), map(data => data?.values.map(dataValue => ({
|
|
2678
|
+
group: dataValue.label,
|
|
2679
|
+
value: dataValue.value,
|
|
2680
|
+
})) || []));
|
|
2681
|
+
this.donutChartOptions$ = this.themeService.currentTheme$.pipe(map(currentTheme => ({
|
|
2682
|
+
resizable: true,
|
|
2683
|
+
toolbar: { enabled: false },
|
|
2684
|
+
height: '300px',
|
|
2685
|
+
theme: currentTheme,
|
|
2686
|
+
donut: {
|
|
2687
|
+
alignment: 'center',
|
|
2688
|
+
center: {
|
|
2689
|
+
label: this.displayTypeProperties.label,
|
|
2690
|
+
},
|
|
2691
|
+
},
|
|
2692
|
+
pie: {
|
|
2693
|
+
labels: {
|
|
2694
|
+
enabled: false,
|
|
2695
|
+
},
|
|
2696
|
+
},
|
|
2697
|
+
legend: {
|
|
2698
|
+
truncation: {
|
|
2699
|
+
numCharacter: 28,
|
|
2700
|
+
},
|
|
2701
|
+
},
|
|
2702
|
+
})));
|
|
2703
|
+
}
|
|
2704
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DonutDisplayComponent, deps: [{ token: i1$1.CdsThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2705
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: DonutDisplayComponent, selector: "valtimo-donut-display", inputs: { displayTypeKey: "displayTypeKey", data: "data", displayTypeProperties: "displayTypeProperties" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n", styles: [":host{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:20px}.valtimo-donut-widget__title,.valtimo-donut-widget__subtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valtimo-donut-widget__title{font-size:20px;margin-bottom:12px}.valtimo-donut-widget__subtitle{font-size:14px}.valtimo-donut-widget__label{font-size:12px;margin-left:12px;margin-bottom:-1px}.valtimo-donut-widget__content{display:flex;align-items:flex-end;justify-content:center;margin-bottom:12px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.DonutChartComponent, selector: "ibm-donut-chart" }, { kind: "component", type: i1$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2706
|
+
}
|
|
2707
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DonutDisplayComponent, decorators: [{
|
|
2708
|
+
type: Component,
|
|
2709
|
+
args: [{ selector: 'valtimo-donut-display', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n", styles: [":host{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:20px}.valtimo-donut-widget__title,.valtimo-donut-widget__subtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valtimo-donut-widget__title{font-size:20px;margin-bottom:12px}.valtimo-donut-widget__subtitle{font-size:14px}.valtimo-donut-widget__label{font-size:12px;margin-left:12px;margin-bottom:-1px}.valtimo-donut-widget__content{display:flex;align-items:flex-end;justify-content:center;margin-bottom:12px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
2710
|
+
}], ctorParameters: () => [{ type: i1$1.CdsThemeService }], propDecorators: { displayTypeKey: [{
|
|
2711
|
+
type: Input
|
|
2712
|
+
}], data: [{
|
|
2713
|
+
type: Input
|
|
2714
|
+
}], displayTypeProperties: [{
|
|
2715
|
+
type: Input
|
|
2716
|
+
}] } });
|
|
2717
|
+
|
|
1765
2718
|
/*
|
|
1766
2719
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
1767
2720
|
*
|
|
@@ -1809,6 +2762,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1809
2762
|
* See the License for the specific language governing permissions and
|
|
1810
2763
|
* limitations under the License.
|
|
1811
2764
|
*/
|
|
2765
|
+
const donutSpecification = {
|
|
2766
|
+
displayTypeKey: 'donut',
|
|
2767
|
+
displayComponent: DonutDisplayComponent,
|
|
2768
|
+
configurationComponent: DonutConfigurationComponent,
|
|
2769
|
+
width: 1,
|
|
2770
|
+
height: 2,
|
|
2771
|
+
translations: {
|
|
2772
|
+
nl: {
|
|
2773
|
+
title: 'Donut-diagram',
|
|
2774
|
+
formTitle: 'Titel (vereist)',
|
|
2775
|
+
formTitleHelperText: 'De titel die wordt weergegeven in de widget',
|
|
2776
|
+
subtitle: 'Ondertitel',
|
|
2777
|
+
subtitleHelperText: 'De ondertitel weergegeven in de widget',
|
|
2778
|
+
label: 'Label',
|
|
2779
|
+
labelHelperText: 'Het label dat wordt weergegeven in de widget',
|
|
2780
|
+
},
|
|
2781
|
+
en: {
|
|
2782
|
+
title: 'Donut chart',
|
|
2783
|
+
formTitle: 'Title (required)',
|
|
2784
|
+
formTitleHelperText: 'The title displayed in the widget',
|
|
2785
|
+
subtitle: 'Subtitle',
|
|
2786
|
+
subtitleHelperText: 'The subtitle displayed in the widget',
|
|
2787
|
+
label: 'Label',
|
|
2788
|
+
labelHelperText: 'The label displayed in the widget',
|
|
2789
|
+
},
|
|
2790
|
+
de: {
|
|
2791
|
+
title: 'Donut-Diagramm',
|
|
2792
|
+
formTitle: 'Titel (erforderlich)',
|
|
2793
|
+
formTitleHelperText: 'Der im Widget angezeigte Titel',
|
|
2794
|
+
subtitle: 'Untertitel',
|
|
2795
|
+
subtitleHelperText: 'Der im Widget angezeigte Untertitel',
|
|
2796
|
+
label: 'Beschriftung',
|
|
2797
|
+
labelHelperText: 'Die im Widget angezeigte Beschriftung',
|
|
2798
|
+
},
|
|
2799
|
+
},
|
|
2800
|
+
requiredDataFeatures: [DATA_FEATURES.NUMBERS],
|
|
2801
|
+
};
|
|
1812
2802
|
|
|
1813
2803
|
/*
|
|
1814
2804
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -1825,6 +2815,46 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1825
2815
|
* See the License for the specific language governing permissions and
|
|
1826
2816
|
* limitations under the License.
|
|
1827
2817
|
*/
|
|
2818
|
+
class DonutModule {
|
|
2819
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DonutModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2820
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: DonutModule, declarations: [DonutDisplayComponent, DonutConfigurationComponent], imports: [CommonModule,
|
|
2821
|
+
ReactiveFormsModule,
|
|
2822
|
+
WidgetTranslatePipeModule,
|
|
2823
|
+
InputModule,
|
|
2824
|
+
CheckboxModule,
|
|
2825
|
+
CommonModule,
|
|
2826
|
+
ChartsModule,
|
|
2827
|
+
CarbonListModule,
|
|
2828
|
+
TranslateModule], exports: [DonutDisplayComponent] }); }
|
|
2829
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DonutModule, providers: [{ provide: DISPLAY_TYPE_TOKEN, useValue: donutSpecification, multi: true }], imports: [CommonModule,
|
|
2830
|
+
ReactiveFormsModule,
|
|
2831
|
+
WidgetTranslatePipeModule,
|
|
2832
|
+
InputModule,
|
|
2833
|
+
CheckboxModule,
|
|
2834
|
+
CommonModule,
|
|
2835
|
+
ChartsModule,
|
|
2836
|
+
CarbonListModule,
|
|
2837
|
+
TranslateModule] }); }
|
|
2838
|
+
}
|
|
2839
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: DonutModule, decorators: [{
|
|
2840
|
+
type: NgModule,
|
|
2841
|
+
args: [{
|
|
2842
|
+
declarations: [DonutDisplayComponent, DonutConfigurationComponent],
|
|
2843
|
+
imports: [
|
|
2844
|
+
CommonModule,
|
|
2845
|
+
ReactiveFormsModule,
|
|
2846
|
+
WidgetTranslatePipeModule,
|
|
2847
|
+
InputModule,
|
|
2848
|
+
CheckboxModule,
|
|
2849
|
+
CommonModule,
|
|
2850
|
+
ChartsModule,
|
|
2851
|
+
CarbonListModule,
|
|
2852
|
+
TranslateModule,
|
|
2853
|
+
],
|
|
2854
|
+
exports: [DonutDisplayComponent],
|
|
2855
|
+
providers: [{ provide: DISPLAY_TYPE_TOKEN, useValue: donutSpecification, multi: true }],
|
|
2856
|
+
}]
|
|
2857
|
+
}] });
|
|
1828
2858
|
|
|
1829
2859
|
/*
|
|
1830
2860
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -1873,14 +2903,87 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1873
2903
|
* See the License for the specific language governing permissions and
|
|
1874
2904
|
* limitations under the License.
|
|
1875
2905
|
*/
|
|
1876
|
-
|
|
1877
|
-
|
|
1878
|
-
|
|
1879
|
-
|
|
1880
|
-
|
|
1881
|
-
|
|
1882
|
-
|
|
1883
|
-
|
|
2906
|
+
|
|
2907
|
+
/*
|
|
2908
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2909
|
+
*
|
|
2910
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
2911
|
+
* you may not use this file except in compliance with the License.
|
|
2912
|
+
* You may obtain a copy of the License at
|
|
2913
|
+
*
|
|
2914
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
2915
|
+
*
|
|
2916
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
2917
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
2918
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
2919
|
+
* See the License for the specific language governing permissions and
|
|
2920
|
+
* limitations under the License.
|
|
2921
|
+
*/
|
|
2922
|
+
class GaugeConfigurationComponent {
|
|
2923
|
+
set disabled(disabledValue) {
|
|
2924
|
+
if (disabledValue) {
|
|
2925
|
+
this.form.disable();
|
|
2926
|
+
}
|
|
2927
|
+
else {
|
|
2928
|
+
this.form.enable();
|
|
2929
|
+
}
|
|
2930
|
+
}
|
|
2931
|
+
get title() {
|
|
2932
|
+
return this.form.get('title');
|
|
2933
|
+
}
|
|
2934
|
+
get subtitle() {
|
|
2935
|
+
return this.form.get('subtitle');
|
|
2936
|
+
}
|
|
2937
|
+
get label() {
|
|
2938
|
+
return this.form.get('label');
|
|
2939
|
+
}
|
|
2940
|
+
set prefillConfiguration(configurationValue) {
|
|
2941
|
+
if (configurationValue) {
|
|
2942
|
+
this.title.setValue(configurationValue.title || '');
|
|
2943
|
+
this.subtitle.setValue(configurationValue.subtitle || '');
|
|
2944
|
+
this.label.setValue(configurationValue.label || '');
|
|
2945
|
+
}
|
|
2946
|
+
}
|
|
2947
|
+
constructor(fb) {
|
|
2948
|
+
this.fb = fb;
|
|
2949
|
+
this.form = this.fb.group({
|
|
2950
|
+
title: this.fb.control('', [Validators.required]),
|
|
2951
|
+
subtitle: this.fb.control(''),
|
|
2952
|
+
label: this.fb.control(''),
|
|
2953
|
+
useKPI: this.fb.control(false, [Validators.required]),
|
|
2954
|
+
});
|
|
2955
|
+
this.configurationEvent = new EventEmitter();
|
|
2956
|
+
this._subscriptions = new Subscription();
|
|
2957
|
+
}
|
|
2958
|
+
ngOnInit() {
|
|
2959
|
+
this.openFormSubscription();
|
|
2960
|
+
}
|
|
2961
|
+
ngOnDestroy() {
|
|
2962
|
+
this._subscriptions.unsubscribe();
|
|
2963
|
+
}
|
|
2964
|
+
openFormSubscription() {
|
|
2965
|
+
this._subscriptions.add(this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {
|
|
2966
|
+
this.configurationEvent.emit({
|
|
2967
|
+
valid: this.form.valid,
|
|
2968
|
+
data: formValue,
|
|
2969
|
+
});
|
|
2970
|
+
}));
|
|
2971
|
+
}
|
|
2972
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GaugeConfigurationComponent, deps: [{ token: i1$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2973
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: GaugeConfigurationComponent, selector: "ng-component", inputs: { displayTypeKey: "displayTypeKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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</form>\n", dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i5.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: WidgetTranslatePipe, name: "widgetTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2974
|
+
}
|
|
2975
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GaugeConfigurationComponent, decorators: [{
|
|
2976
|
+
type: Component,
|
|
2977
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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</form>\n" }]
|
|
2978
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }], propDecorators: { displayTypeKey: [{
|
|
2979
|
+
type: Input
|
|
2980
|
+
}], disabled: [{
|
|
2981
|
+
type: Input
|
|
2982
|
+
}], prefillConfiguration: [{
|
|
2983
|
+
type: Input
|
|
2984
|
+
}], configurationEvent: [{
|
|
2985
|
+
type: Output
|
|
2986
|
+
}] } });
|
|
1884
2987
|
|
|
1885
2988
|
/*
|
|
1886
2989
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
@@ -1913,36 +3016,63 @@ var WidgetSeverity;
|
|
|
1913
3016
|
* See the License for the specific language governing permissions and
|
|
1914
3017
|
* limitations under the License.
|
|
1915
3018
|
*/
|
|
1916
|
-
class
|
|
1917
|
-
|
|
1918
|
-
if (!
|
|
1919
|
-
return
|
|
1920
|
-
|
|
1921
|
-
const value = this.data?.value;
|
|
1922
|
-
if (value < this.displayTypeProperties.lowSeverityThreshold) {
|
|
1923
|
-
return WidgetSeverity.GREEN;
|
|
1924
|
-
}
|
|
1925
|
-
else if (value < this.displayTypeProperties.mediumSeverityThreshold) {
|
|
1926
|
-
return WidgetSeverity.YELLOW;
|
|
1927
|
-
}
|
|
1928
|
-
else if (value < this.displayTypeProperties.highSeverityThreshold) {
|
|
1929
|
-
return WidgetSeverity.ORANGE;
|
|
1930
|
-
}
|
|
1931
|
-
return WidgetSeverity.RED;
|
|
3019
|
+
class GaugeDisplayComponent {
|
|
3020
|
+
set data(value) {
|
|
3021
|
+
if (!value)
|
|
3022
|
+
return;
|
|
3023
|
+
this._data$.next(value);
|
|
1932
3024
|
}
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
3025
|
+
constructor(themeService, translateService) {
|
|
3026
|
+
this.themeService = themeService;
|
|
3027
|
+
this.translateService = translateService;
|
|
3028
|
+
this._DELTA = -1.0;
|
|
3029
|
+
this._data$ = new BehaviorSubject(null);
|
|
3030
|
+
this.chartData$ = this._data$.pipe(filter(data => !!data), map(data => [
|
|
3031
|
+
{
|
|
3032
|
+
group: 'value',
|
|
3033
|
+
value: this.calculatePercentage(data?.value || 0, data?.total || 0),
|
|
3034
|
+
},
|
|
3035
|
+
{
|
|
3036
|
+
group: 'delta',
|
|
3037
|
+
value: this._DELTA,
|
|
3038
|
+
},
|
|
3039
|
+
]));
|
|
3040
|
+
this.gaugeChartOptions$ = combineLatest([
|
|
3041
|
+
this.themeService.currentTheme$,
|
|
3042
|
+
this.translateService.stream('key'),
|
|
3043
|
+
]).pipe(map(([currentTheme]) => ({
|
|
3044
|
+
resizable: true,
|
|
3045
|
+
toolbar: { enabled: false },
|
|
3046
|
+
height: '110px',
|
|
3047
|
+
theme: currentTheme == 'g10' ? 'white' : 'g100',
|
|
3048
|
+
gauge: {
|
|
3049
|
+
alignment: 'center',
|
|
3050
|
+
numberFormatter: value => this.numberFormatter(this, value),
|
|
3051
|
+
deltaArrow: {
|
|
3052
|
+
enabled: false,
|
|
3053
|
+
},
|
|
3054
|
+
showPercentageSymbol: false,
|
|
3055
|
+
type: 'semi',
|
|
3056
|
+
},
|
|
3057
|
+
})));
|
|
3058
|
+
}
|
|
3059
|
+
calculatePercentage(value, total) {
|
|
3060
|
+
return (value * 100.0) / (total || 100.0);
|
|
3061
|
+
}
|
|
3062
|
+
numberFormatter(scope, value) {
|
|
3063
|
+
const scopeData = scope._data$.getValue();
|
|
3064
|
+
if (value == scope._DELTA) {
|
|
3065
|
+
return `${this.translateService.instant('dashboard.of')} ${scopeData?.total || 0} ${scope.displayTypeProperties.label} `;
|
|
1936
3066
|
}
|
|
1937
|
-
return Math.
|
|
3067
|
+
return Math.round(value * (scopeData?.total || 0)) / 100.0 + '';
|
|
1938
3068
|
}
|
|
1939
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type:
|
|
1940
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type:
|
|
3069
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GaugeDisplayComponent, deps: [{ token: i1$1.CdsThemeService }, { token: i3$1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3070
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: GaugeDisplayComponent, selector: "valtimo-gauge-display", inputs: { displayTypeKey: "displayTypeKey", data: "data", displayTypeProperties: "displayTypeProperties" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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", styles: [":host{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:20px}.valtimo-gauge-widget__title,.valtimo-gauge-widget__subtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valtimo-gauge-widget__title{font-size:20px;margin-bottom:12px}.valtimo-gauge-widget__subtitle{font-size:14px}.valtimo-gauge-widget__label{font-size:12px;margin-left:12px;margin-bottom:-1px}.valtimo-gauge-widget__content{display:flex;align-items:flex-end;margin-bottom:12px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.GaugeChartComponent, selector: "ibm-gauge-chart" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1941
3071
|
}
|
|
1942
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type:
|
|
3072
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GaugeDisplayComponent, decorators: [{
|
|
1943
3073
|
type: Component,
|
|
1944
|
-
args: [{ selector: 'valtimo-
|
|
1945
|
-
}], propDecorators: { displayTypeKey: [{
|
|
3074
|
+
args: [{ selector: 'valtimo-gauge-display', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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", styles: [":host{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:20px}.valtimo-gauge-widget__title,.valtimo-gauge-widget__subtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valtimo-gauge-widget__title{font-size:20px;margin-bottom:12px}.valtimo-gauge-widget__subtitle{font-size:14px}.valtimo-gauge-widget__label{font-size:12px;margin-left:12px;margin-bottom:-1px}.valtimo-gauge-widget__content{display:flex;align-items:flex-end;margin-bottom:12px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
3075
|
+
}], ctorParameters: () => [{ type: i1$1.CdsThemeService }, { type: i3$1.TranslateService }], propDecorators: { displayTypeKey: [{
|
|
1946
3076
|
type: Input
|
|
1947
3077
|
}], data: [{
|
|
1948
3078
|
type: Input
|
|
@@ -1997,54 +3127,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
1997
3127
|
* See the License for the specific language governing permissions and
|
|
1998
3128
|
* limitations under the License.
|
|
1999
3129
|
*/
|
|
2000
|
-
const
|
|
2001
|
-
displayTypeKey: '
|
|
2002
|
-
displayComponent:
|
|
2003
|
-
configurationComponent:
|
|
3130
|
+
const gaugeSpecification = {
|
|
3131
|
+
displayTypeKey: 'gauge',
|
|
3132
|
+
displayComponent: GaugeDisplayComponent,
|
|
3133
|
+
configurationComponent: GaugeConfigurationComponent,
|
|
2004
3134
|
width: 1,
|
|
2005
3135
|
height: 1,
|
|
2006
3136
|
translations: {
|
|
2007
3137
|
nl: {
|
|
2008
|
-
title: '
|
|
3138
|
+
title: 'Graadmeter',
|
|
2009
3139
|
formTitle: 'Titel (vereist)',
|
|
2010
3140
|
formTitleHelperText: 'De titel die wordt weergegeven in de widget',
|
|
2011
3141
|
subtitle: 'Ondertitel',
|
|
2012
3142
|
subtitleHelperText: 'De ondertitel weergegeven in de widget',
|
|
2013
3143
|
label: 'Label',
|
|
2014
3144
|
labelHelperText: 'Het label dat wordt weergegeven in de widget',
|
|
2015
|
-
useKPI: 'KPI gebruiken',
|
|
2016
|
-
lowSeverityThreshold: 'Lage ernstdrempel (vereist)',
|
|
2017
|
-
mediumSeverityThreshold: 'Middelmatige ernstdrempel (vereist)',
|
|
2018
|
-
highSeverityThreshold: 'Hoge ernstdrempel (vereist)',
|
|
2019
3145
|
},
|
|
2020
3146
|
en: {
|
|
2021
|
-
title: '
|
|
3147
|
+
title: 'Gauge',
|
|
2022
3148
|
formTitle: 'Title (required)',
|
|
2023
3149
|
formTitleHelperText: 'The title displayed in the widget',
|
|
2024
3150
|
subtitle: 'Subtitle',
|
|
2025
3151
|
subtitleHelperText: 'The subtitle displayed in the widget',
|
|
2026
3152
|
label: 'Label',
|
|
2027
3153
|
labelHelperText: 'The label displayed in the widget',
|
|
2028
|
-
useKPI: 'Use KPI',
|
|
2029
|
-
lowSeverityThreshold: 'Low severity threshold (required)',
|
|
2030
|
-
mediumSeverityThreshold: 'Medium severity threshold (required)',
|
|
2031
|
-
highSeverityThreshold: 'High severity threshold (required)',
|
|
2032
3154
|
},
|
|
2033
3155
|
de: {
|
|
2034
|
-
title: '
|
|
3156
|
+
title: 'Messgerät',
|
|
2035
3157
|
formTitle: 'Titel (erforderlich)',
|
|
2036
3158
|
formTitleHelperText: 'Der im Widget angezeigte Titel',
|
|
2037
3159
|
subtitle: 'Untertitel',
|
|
2038
3160
|
subtitleHelperText: 'Der im Widget angezeigte Untertitel',
|
|
2039
3161
|
label: 'Beschriftung',
|
|
2040
3162
|
labelHelperText: 'Die im Widget angezeigte Beschriftung',
|
|
2041
|
-
useKPI: 'Verwenden Sie KPI',
|
|
2042
|
-
lowSeverityThreshold: 'Niedriger Schweregradschwellenwert (erforderlich)',
|
|
2043
|
-
mediumSeverityThreshold: 'Mittlerer Schweregradschwellenwert (erforderlich)',
|
|
2044
|
-
highSeverityThreshold: 'Hoher Schweregradschwellenwert (erforderlich)',
|
|
2045
3163
|
},
|
|
2046
3164
|
},
|
|
2047
|
-
requiredDataFeatures: [DATA_FEATURES.NUMBER],
|
|
3165
|
+
requiredDataFeatures: [DATA_FEATURES.NUMBER, DATA_FEATURES.TOTAL],
|
|
2048
3166
|
};
|
|
2049
3167
|
|
|
2050
3168
|
/*
|
|
@@ -2062,32 +3180,38 @@ const bigNumberSpecification = {
|
|
|
2062
3180
|
* See the License for the specific language governing permissions and
|
|
2063
3181
|
* limitations under the License.
|
|
2064
3182
|
*/
|
|
2065
|
-
class
|
|
2066
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type:
|
|
2067
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type:
|
|
3183
|
+
class GaugeModule {
|
|
3184
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GaugeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
3185
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: GaugeModule, declarations: [GaugeDisplayComponent, GaugeConfigurationComponent], imports: [CommonModule,
|
|
2068
3186
|
ReactiveFormsModule,
|
|
2069
3187
|
WidgetTranslatePipeModule,
|
|
2070
3188
|
InputModule,
|
|
2071
|
-
CheckboxModule
|
|
2072
|
-
|
|
3189
|
+
CheckboxModule,
|
|
3190
|
+
CommonModule,
|
|
3191
|
+
ChartsModule], exports: [GaugeDisplayComponent] }); }
|
|
3192
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GaugeModule, providers: [{ provide: DISPLAY_TYPE_TOKEN, useValue: gaugeSpecification, multi: true }], imports: [CommonModule,
|
|
2073
3193
|
ReactiveFormsModule,
|
|
2074
3194
|
WidgetTranslatePipeModule,
|
|
2075
3195
|
InputModule,
|
|
2076
|
-
CheckboxModule
|
|
3196
|
+
CheckboxModule,
|
|
3197
|
+
CommonModule,
|
|
3198
|
+
ChartsModule] }); }
|
|
2077
3199
|
}
|
|
2078
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type:
|
|
3200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: GaugeModule, decorators: [{
|
|
2079
3201
|
type: NgModule,
|
|
2080
3202
|
args: [{
|
|
2081
|
-
declarations: [
|
|
3203
|
+
declarations: [GaugeDisplayComponent, GaugeConfigurationComponent],
|
|
2082
3204
|
imports: [
|
|
2083
3205
|
CommonModule,
|
|
2084
3206
|
ReactiveFormsModule,
|
|
2085
3207
|
WidgetTranslatePipeModule,
|
|
2086
3208
|
InputModule,
|
|
2087
3209
|
CheckboxModule,
|
|
3210
|
+
CommonModule,
|
|
3211
|
+
ChartsModule,
|
|
2088
3212
|
],
|
|
2089
|
-
exports: [
|
|
2090
|
-
providers: [{ provide: DISPLAY_TYPE_TOKEN, useValue:
|
|
3213
|
+
exports: [GaugeDisplayComponent],
|
|
3214
|
+
providers: [{ provide: DISPLAY_TYPE_TOKEN, useValue: gaugeSpecification, multi: true }],
|
|
2091
3215
|
}]
|
|
2092
3216
|
}] });
|
|
2093
3217
|
|
|
@@ -2139,6 +3263,97 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
2139
3263
|
* limitations under the License.
|
|
2140
3264
|
*/
|
|
2141
3265
|
|
|
3266
|
+
/*
|
|
3267
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3268
|
+
*
|
|
3269
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
3270
|
+
* you may not use this file except in compliance with the License.
|
|
3271
|
+
* You may obtain a copy of the License at
|
|
3272
|
+
*
|
|
3273
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
3274
|
+
*
|
|
3275
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3276
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
3277
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3278
|
+
* See the License for the specific language governing permissions and
|
|
3279
|
+
* limitations under the License.
|
|
3280
|
+
*/
|
|
3281
|
+
class MeterConfigurationComponent {
|
|
3282
|
+
set disabled(disabledValue) {
|
|
3283
|
+
if (disabledValue) {
|
|
3284
|
+
this.form.disable();
|
|
3285
|
+
}
|
|
3286
|
+
else {
|
|
3287
|
+
this.form.enable();
|
|
3288
|
+
}
|
|
3289
|
+
}
|
|
3290
|
+
get title() {
|
|
3291
|
+
return this.form.get('title');
|
|
3292
|
+
}
|
|
3293
|
+
get subtitle() {
|
|
3294
|
+
return this.form.get('subtitle');
|
|
3295
|
+
}
|
|
3296
|
+
set prefillConfiguration(configurationValue) {
|
|
3297
|
+
if (configurationValue) {
|
|
3298
|
+
this.title.setValue(configurationValue.title || '');
|
|
3299
|
+
this.subtitle.setValue(configurationValue.subtitle || '');
|
|
3300
|
+
}
|
|
3301
|
+
}
|
|
3302
|
+
constructor(fb) {
|
|
3303
|
+
this.fb = fb;
|
|
3304
|
+
this.form = this.fb.group({
|
|
3305
|
+
title: this.fb.control('', [Validators.required]),
|
|
3306
|
+
subtitle: this.fb.control(''),
|
|
3307
|
+
});
|
|
3308
|
+
this.configurationEvent = new EventEmitter();
|
|
3309
|
+
this._subscriptions = new Subscription();
|
|
3310
|
+
}
|
|
3311
|
+
ngOnInit() {
|
|
3312
|
+
this.openFormSubscription();
|
|
3313
|
+
}
|
|
3314
|
+
ngOnDestroy() {
|
|
3315
|
+
this._subscriptions.unsubscribe();
|
|
3316
|
+
}
|
|
3317
|
+
openFormSubscription() {
|
|
3318
|
+
this._subscriptions.add(this.form.valueChanges.pipe(startWith(this.form.value)).subscribe(formValue => {
|
|
3319
|
+
this.configurationEvent.emit({
|
|
3320
|
+
valid: this.form.valid,
|
|
3321
|
+
data: formValue,
|
|
3322
|
+
});
|
|
3323
|
+
}));
|
|
3324
|
+
}
|
|
3325
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MeterConfigurationComponent, deps: [{ token: i1$3.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3326
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", type: MeterConfigurationComponent, selector: "ng-component", inputs: { displayTypeKey: "displayTypeKey", disabled: "disabled", prefillConfiguration: "prefillConfiguration" }, outputs: { configurationEvent: "configurationEvent" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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", dependencies: [{ kind: "directive", type: i1$3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$3.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5.Label, selector: "cds-label, ibm-label", inputs: ["labelInputID", "disabled", "skeleton", "helperText", "invalidText", "invalid", "warn", "warnText", "ariaLabel"] }, { kind: "directive", type: i5.TextInput, selector: "[cdsText], [ibmText]", inputs: ["theme", "size", "invalid", "warn", "skeleton"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: WidgetTranslatePipe, name: "widgetTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3327
|
+
}
|
|
3328
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MeterConfigurationComponent, decorators: [{
|
|
3329
|
+
type: Component,
|
|
3330
|
+
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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" }]
|
|
3331
|
+
}], ctorParameters: () => [{ type: i1$3.FormBuilder }], propDecorators: { displayTypeKey: [{
|
|
3332
|
+
type: Input
|
|
3333
|
+
}], disabled: [{
|
|
3334
|
+
type: Input
|
|
3335
|
+
}], prefillConfiguration: [{
|
|
3336
|
+
type: Input
|
|
3337
|
+
}], configurationEvent: [{
|
|
3338
|
+
type: Output
|
|
3339
|
+
}] } });
|
|
3340
|
+
|
|
3341
|
+
/*
|
|
3342
|
+
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
3343
|
+
*
|
|
3344
|
+
* Licensed under EUPL, Version 1.2 (the "License");
|
|
3345
|
+
* you may not use this file except in compliance with the License.
|
|
3346
|
+
* You may obtain a copy of the License at
|
|
3347
|
+
*
|
|
3348
|
+
* https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
|
|
3349
|
+
*
|
|
3350
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
3351
|
+
* distributed under the License is distributed on an "AS IS" basis,
|
|
3352
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
3353
|
+
* See the License for the specific language governing permissions and
|
|
3354
|
+
* limitations under the License.
|
|
3355
|
+
*/
|
|
3356
|
+
|
|
2142
3357
|
/*
|
|
2143
3358
|
* Copyright 2015-2024 Ritense BV, the Netherlands.
|
|
2144
3359
|
*
|
|
@@ -2155,13 +3370,47 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
2155
3370
|
* limitations under the License.
|
|
2156
3371
|
*/
|
|
2157
3372
|
class MeterDisplayComponent {
|
|
2158
|
-
|
|
2159
|
-
|
|
3373
|
+
set data(value) {
|
|
3374
|
+
if (!value)
|
|
3375
|
+
return;
|
|
3376
|
+
this._data$.next(value);
|
|
3377
|
+
}
|
|
3378
|
+
constructor(themeService) {
|
|
3379
|
+
this.themeService = themeService;
|
|
3380
|
+
this._data$ = new BehaviorSubject(null);
|
|
3381
|
+
this.meterData$ = this._data$.pipe(filter(data => !!data), map(data => data?.values.map(dataValue => ({
|
|
3382
|
+
group: dataValue.label,
|
|
3383
|
+
value: dataValue.value,
|
|
3384
|
+
})) || []));
|
|
3385
|
+
this.meterChartOptions$ = combineLatest([
|
|
3386
|
+
this.themeService.currentTheme$,
|
|
3387
|
+
this.meterData$,
|
|
3388
|
+
]).pipe(map(([currentTheme, meterData]) => ({
|
|
3389
|
+
resizable: true,
|
|
3390
|
+
toolbar: { enabled: false },
|
|
3391
|
+
theme: currentTheme,
|
|
3392
|
+
height: '60px',
|
|
3393
|
+
meter: {
|
|
3394
|
+
height: 60,
|
|
3395
|
+
showLabels: false,
|
|
3396
|
+
title: {
|
|
3397
|
+
percentageIndicator: {
|
|
3398
|
+
enabled: false,
|
|
3399
|
+
},
|
|
3400
|
+
},
|
|
3401
|
+
proportional: {
|
|
3402
|
+
total: meterData.reduce((acc, curr) => acc + curr.value, 0),
|
|
3403
|
+
},
|
|
3404
|
+
},
|
|
3405
|
+
})));
|
|
3406
|
+
}
|
|
3407
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MeterDisplayComponent, deps: [{ token: i1$1.CdsThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3408
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: MeterDisplayComponent, selector: "valtimo-meter-display", inputs: { displayTypeKey: "displayTypeKey", data: "data", displayTypeProperties: "displayTypeProperties" }, ngImport: i0, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n", styles: [":host{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:20px}.valtimo-donut-widget__title,.valtimo-donut-widget__subtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valtimo-donut-widget__title{font-size:20px;margin-bottom:12px}.valtimo-donut-widget__subtitle{font-size:14px}.valtimo-donut-widget__label{font-size:12px;margin-left:12px;margin-bottom:-1px}.valtimo-donut-widget__content{display:flex;align-items:flex-end;justify-content:center;margin-bottom:12px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3$2.MeterChartComponent, selector: "ibm-meter-chart" }, { kind: "component", type: i1$1.CarbonNoResultsComponent, selector: "valtimo-no-results", inputs: ["action", "description", "illustration", "title", "smallPadding", "collapseVertically", "alwaysRenderVertically"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3$1.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2160
3409
|
}
|
|
2161
3410
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MeterDisplayComponent, decorators: [{
|
|
2162
3411
|
type: Component,
|
|
2163
|
-
args: [{ selector: 'valtimo-meter-display', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\
|
|
2164
|
-
}], propDecorators: { displayTypeKey: [{
|
|
3412
|
+
args: [{ selector: 'valtimo-meter-display', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\n ~ Copyright 2015-2024 Ritense BV, the Netherlands.\n ~\n ~ Licensed under EUPL, Version 1.2 (the \"License\");\n ~ you may not use this file except in compliance with the License.\n ~ You may obtain a copy of the License at\n ~\n ~ https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n ~\n ~ Unless required by applicable law or agreed to in writing, software\n ~ distributed under the License is distributed on an \"AS IS\" basis,\n ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n ~ See the License for the specific language governing permissions and\n ~ limitations under the License.\n -->\n\n<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]=\"'dossier.widgets.noData' | translate\"\n [smallPadding]=\"true\"\n ></valtimo-no-results>\n }\n </ng-container>\n</section>\n", styles: [":host{display:flex;flex-direction:column;justify-content:space-between;width:100%;height:100%;padding:20px}.valtimo-donut-widget__title,.valtimo-donut-widget__subtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.valtimo-donut-widget__title{font-size:20px;margin-bottom:12px}.valtimo-donut-widget__subtitle{font-size:14px}.valtimo-donut-widget__label{font-size:12px;margin-left:12px;margin-bottom:-1px}.valtimo-donut-widget__content{display:flex;align-items:flex-end;justify-content:center;margin-bottom:12px}\n/*!\n * Copyright 2015-2024 Ritense BV, the Netherlands.\n *\n * Licensed under EUPL, Version 1.2 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" basis,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n"] }]
|
|
3413
|
+
}], ctorParameters: () => [{ type: i1$1.CdsThemeService }], propDecorators: { displayTypeKey: [{
|
|
2165
3414
|
type: Input
|
|
2166
3415
|
}], data: [{
|
|
2167
3416
|
type: Input
|
|
@@ -2219,20 +3468,39 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
2219
3468
|
const meterSpecification = {
|
|
2220
3469
|
displayTypeKey: 'meter',
|
|
2221
3470
|
displayComponent: MeterDisplayComponent,
|
|
3471
|
+
configurationComponent: MeterConfigurationComponent,
|
|
2222
3472
|
width: 2,
|
|
2223
3473
|
height: 1,
|
|
2224
3474
|
translations: {
|
|
2225
3475
|
nl: {
|
|
2226
3476
|
title: 'Meter',
|
|
3477
|
+
formTitle: 'Titel (vereist)',
|
|
3478
|
+
formTitleHelperText: 'De titel die wordt weergegeven in de widget',
|
|
3479
|
+
subtitle: 'Ondertitel',
|
|
3480
|
+
subtitleHelperText: 'De ondertitel weergegeven in de widget',
|
|
3481
|
+
label: 'Label',
|
|
3482
|
+
labelHelperText: 'Het label dat wordt weergegeven in de widget',
|
|
2227
3483
|
},
|
|
2228
3484
|
en: {
|
|
2229
3485
|
title: 'Meter',
|
|
3486
|
+
formTitle: 'Title (required)',
|
|
3487
|
+
formTitleHelperText: 'The title displayed in the widget',
|
|
3488
|
+
subtitle: 'Subtitle',
|
|
3489
|
+
subtitleHelperText: 'The subtitle displayed in the widget',
|
|
3490
|
+
label: 'Label',
|
|
3491
|
+
labelHelperText: 'The label displayed in the widget',
|
|
2230
3492
|
},
|
|
2231
3493
|
de: {
|
|
2232
3494
|
title: 'Meter',
|
|
3495
|
+
formTitle: 'Titel (erforderlich)',
|
|
3496
|
+
formTitleHelperText: 'Der im Widget angezeigte Titel',
|
|
3497
|
+
subtitle: 'Untertitel',
|
|
3498
|
+
subtitleHelperText: 'Der im Widget angezeigte Untertitel',
|
|
3499
|
+
label: 'Beschriftung',
|
|
3500
|
+
labelHelperText: 'Die im Widget angezeigte Beschriftung',
|
|
2233
3501
|
},
|
|
2234
3502
|
},
|
|
2235
|
-
requiredDataFeatures: [],
|
|
3503
|
+
requiredDataFeatures: [DATA_FEATURES.NUMBERS],
|
|
2236
3504
|
};
|
|
2237
3505
|
|
|
2238
3506
|
/*
|
|
@@ -2252,14 +3520,40 @@ const meterSpecification = {
|
|
|
2252
3520
|
*/
|
|
2253
3521
|
class MeterModule {
|
|
2254
3522
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MeterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
2255
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: MeterModule, declarations: [MeterDisplayComponent], imports: [CommonModule
|
|
2256
|
-
|
|
3523
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: MeterModule, declarations: [MeterDisplayComponent, MeterConfigurationComponent], imports: [CommonModule,
|
|
3524
|
+
ReactiveFormsModule,
|
|
3525
|
+
WidgetTranslatePipeModule,
|
|
3526
|
+
InputModule,
|
|
3527
|
+
CheckboxModule,
|
|
3528
|
+
CommonModule,
|
|
3529
|
+
ChartsModule,
|
|
3530
|
+
CarbonListModule,
|
|
3531
|
+
TranslateModule], exports: [MeterDisplayComponent] }); }
|
|
3532
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MeterModule, providers: [{ provide: DISPLAY_TYPE_TOKEN, useValue: meterSpecification, multi: true }], imports: [CommonModule,
|
|
3533
|
+
ReactiveFormsModule,
|
|
3534
|
+
WidgetTranslatePipeModule,
|
|
3535
|
+
InputModule,
|
|
3536
|
+
CheckboxModule,
|
|
3537
|
+
CommonModule,
|
|
3538
|
+
ChartsModule,
|
|
3539
|
+
CarbonListModule,
|
|
3540
|
+
TranslateModule] }); }
|
|
2257
3541
|
}
|
|
2258
3542
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: MeterModule, decorators: [{
|
|
2259
3543
|
type: NgModule,
|
|
2260
3544
|
args: [{
|
|
2261
|
-
declarations: [MeterDisplayComponent],
|
|
2262
|
-
imports: [
|
|
3545
|
+
declarations: [MeterDisplayComponent, MeterConfigurationComponent],
|
|
3546
|
+
imports: [
|
|
3547
|
+
CommonModule,
|
|
3548
|
+
ReactiveFormsModule,
|
|
3549
|
+
WidgetTranslatePipeModule,
|
|
3550
|
+
InputModule,
|
|
3551
|
+
CheckboxModule,
|
|
3552
|
+
CommonModule,
|
|
3553
|
+
ChartsModule,
|
|
3554
|
+
CarbonListModule,
|
|
3555
|
+
TranslateModule,
|
|
3556
|
+
],
|
|
2263
3557
|
exports: [MeterDisplayComponent],
|
|
2264
3558
|
providers: [{ provide: DISPLAY_TYPE_TOKEN, useValue: meterSpecification, multi: true }],
|
|
2265
3559
|
}]
|
|
@@ -2352,5 +3646,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImpor
|
|
|
2352
3646
|
* Generated bundle index. Do not edit.
|
|
2353
3647
|
*/
|
|
2354
3648
|
|
|
2355
|
-
export {
|
|
3649
|
+
export { BigNumberConfigurationComponent, BigNumberDisplayComponent, BigNumberModule, CaseCountConfigurationComponent, CaseCountDataSourceModule, CaseCountsConfigurationComponent, CaseCountsDataSourceModule, CaseGroupByConfigurationComponent, CaseGroupByDataSourceModule, DATA_FEATURES, DATA_SOURCE_TOKEN, DISPLAY_TYPE_TOKEN, DashboardComponent, DashboardModule, DashboardService, DonutConfigurationComponent, DonutDisplayComponent, DonutModule, GaugeConfigurationComponent, GaugeDisplayComponent, GaugeModule, HttpLoaderFactory, MeterConfigurationComponent, MeterDisplayComponent, MeterModule, Operator, WIDGET_1X_HEIGHT, WIDGET_1X_MIN_WIDTH, WidgetDashboardComponent, WidgetDashboardContentComponent, WidgetService, WidgetSeverity, WidgetTranslatePipe, WidgetTranslatePipeModule, WidgetTranslationService, bigNumberSpecification, caseCountDataSourceSpecification, caseCountsDataSourceSpecification, caseGroupByDataSourceSpecification, donutSpecification, gaugeSpecification, meterSpecification };
|
|
2356
3650
|
//# sourceMappingURL=valtimo-dashboard.mjs.map
|