@provoly/dashboard 0.18.2 → 0.18.4
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/assets/svgs/clear_filter.svg +12 -0
- package/assets/svgs/refresh_data.svg +15 -0
- package/assets/svgs/refresh_filter.svg +13 -0
- package/assets/svgs/trash.svg +1 -0
- package/components/color-picker/color-picker.component.d.ts +58 -0
- package/components/color-picker/color-picker.module.d.ts +9 -0
- package/components/color-picker/index.d.ts +5 -0
- package/components/color-picker/public-api.d.ts +2 -0
- package/components/scheme-picker/index.d.ts +5 -0
- package/components/scheme-picker/public-api.d.ts +3 -0
- package/components/scheme-picker/scheme-picker.component.d.ts +34 -0
- package/components/scheme-picker/scheme-picker.module.d.ts +11 -0
- package/components/scheme-picker/scheme.service.d.ts +12 -0
- package/dataset/components/dataset-card/dataset-card.component.d.ts +11 -3
- package/dataset/i18n/en.translations.d.ts +1 -0
- package/dataset/i18n/fr.translations.d.ts +1 -0
- package/dataset/style/_o-pry-dataset-card.scss +16 -1
- package/dataset/style/_o-pry-dataset.scss +18 -3
- package/esm2022/admin/components/admin-dataset/shared/admin-form-dataset/admin-form-dataset.component.mjs +7 -5
- package/esm2022/components/color-picker/color-picker.component.mjs +314 -0
- package/esm2022/components/color-picker/color-picker.module.mjs +20 -0
- package/esm2022/components/color-picker/provoly-dashboard-components-color-picker.mjs +5 -0
- package/esm2022/components/color-picker/public-api.mjs +3 -0
- package/esm2022/components/scheme-picker/provoly-dashboard-components-scheme-picker.mjs +5 -0
- package/esm2022/components/scheme-picker/public-api.mjs +4 -0
- package/esm2022/components/scheme-picker/scheme-picker.component.mjs +104 -0
- package/esm2022/components/scheme-picker/scheme-picker.module.mjs +22 -0
- package/esm2022/components/scheme-picker/scheme.service.mjs +47 -0
- package/esm2022/dataset/components/dataset-card/dataset-card.component.mjs +26 -9
- package/esm2022/dataset/components/dataset-detail/dataset-detail.component.mjs +3 -3
- package/esm2022/dataset/components/dataset.component.mjs +3 -3
- package/esm2022/dataset/i18n/en.translations.mjs +2 -1
- package/esm2022/dataset/i18n/fr.translations.mjs +2 -1
- package/esm2022/dataset/style/css.component.mjs +2 -2
- package/esm2022/lib/core/i18n/en.translations.mjs +6 -2
- package/esm2022/lib/core/i18n/fr.translations.mjs +6 -2
- package/esm2022/lib/core/model/widget-aggregated-chart-manifest.interface.mjs +1 -1
- package/esm2022/lib/core/model/widget-chart-manifest.interface.mjs +2 -1
- package/esm2022/lib/core/store/aggregation/backend-aggregation.service.mjs +4 -1
- package/esm2022/lib/core/store/data-source/data-source.model.mjs +1 -1
- package/esm2022/lib/core/store/search/search.actions.mjs +3 -2
- package/esm2022/lib/core/store/search/search.reducer.mjs +6 -1
- package/esm2022/lib/dashboard/components/dashboard.component.mjs +16 -11
- package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +3 -3
- package/esm2022/presentation/style/css.component.mjs +2 -2
- package/esm2022/restitution/components/restitution/restitution.component.mjs +11 -20
- package/esm2022/restitution/model/restitution.model.mjs +1 -1
- package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +134 -26
- package/esm2022/widgets/widget-aggregated-chart/i18n/en.translations.mjs +19 -2
- package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +19 -2
- package/esm2022/widgets/widget-aggregated-chart/widget-aggregated-chart.module.mjs +16 -5
- package/esm2022/widgets/widget-chart/i18n/en.translations.mjs +3 -2
- package/esm2022/widgets/widget-chart/i18n/fr.translations.mjs +3 -2
- package/esm2022/widgets/widget-map/component/widget-map.component.mjs +2 -2
- package/fesm2022/provoly-dashboard-admin.mjs +6 -4
- package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-components-color-picker.mjs +337 -0
- package/fesm2022/provoly-dashboard-components-color-picker.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +171 -0
- package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -0
- package/fesm2022/provoly-dashboard-dataset.mjs +29 -14
- package/fesm2022/provoly-dashboard-dataset.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-presentation.mjs +4 -4
- package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-restitution.mjs +10 -19
- package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +183 -30
- package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +4 -2
- package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
- package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
- package/fesm2022/provoly-dashboard.mjs +37 -13
- package/fesm2022/provoly-dashboard.mjs.map +1 -1
- package/lib/core/i18n/en.translations.d.ts +4 -0
- package/lib/core/i18n/fr.translations.d.ts +4 -0
- package/lib/core/model/widget-aggregated-chart-manifest.interface.d.ts +7 -0
- package/lib/core/model/widget-chart-manifest.interface.d.ts +1 -0
- package/lib/core/store/data-source/data-source.model.d.ts +0 -2
- package/lib/core/store/search/search.actions.d.ts +7 -0
- package/lib/dashboard/components/dashboard.component.d.ts +2 -0
- package/package.json +19 -7
- package/presentation/style/_o-pry-new-presentation.scss +2 -1
- package/restitution/components/restitution/restitution.component.d.ts +0 -2
- package/restitution/model/restitution.model.d.ts +1 -1
- package/styles/components/_a-color-picker.scss +62 -0
- package/styles/components/_a-page-loader.scss +14 -0
- package/styles/components/_m-color-scheme.scss +20 -0
- package/styles/main.scss +3 -0
- package/styles-theme/components-theme/_o-pry-admin-classes-customize.theme.scss +4 -0
- package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +17 -5
- package/widgets/widget-aggregated-chart/i18n/en.translations.d.ts +17 -0
- package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +17 -0
- package/widgets/widget-aggregated-chart/widget-aggregated-chart.module.d.ts +3 -1
- package/widgets/widget-chart/i18n/en.translations.d.ts +1 -0
- package/widgets/widget-chart/i18n/fr.translations.d.ts +1 -0
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
import { OverlayModule } from '@angular/cdk/overlay';
|
|
2
|
-
import * as
|
|
2
|
+
import * as i4 from '@angular/common';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import * as i0 from '@angular/core';
|
|
5
5
|
import { Component, ViewEncapsulation, ViewChild, NgModule } from '@angular/core';
|
|
6
|
-
import * as
|
|
7
|
-
import { FormsModule } from '@angular/forms';
|
|
6
|
+
import * as i5 from '@angular/forms';
|
|
7
|
+
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
8
8
|
import * as i2 from '@provoly/dashboard';
|
|
9
|
-
import { DataWidgetComponent, WIDGET_HEADER_HEIGHT, GraphType, Operation,
|
|
10
|
-
import * as
|
|
9
|
+
import { DataWidgetComponent, WIDGET_HEADER_HEIGHT, GraphType, Operation, FieldSelectors, ClassSelectors, FieldType, NamedQueryTypes, VegaType, SearchActions, BaseWidgetModule, PryCoreModule, PryDashboardModule, PrySelectModule, PryIconModule, PryToggleModule, PryEditInputModule, PryI18nModule, PryRangeModule, PrySortModule, PryAggregationService } from '@provoly/dashboard';
|
|
10
|
+
import * as i6 from '@provoly/dashboard/components/checkbox';
|
|
11
11
|
import { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';
|
|
12
|
-
import { BehaviorSubject, Subject, map, filter, combineLatest, fromEvent, startWith, debounceTime, switchMap, withLatestFrom, share } from 'rxjs';
|
|
12
|
+
import { BehaviorSubject, Subject, map, filter, combineLatest, fromEvent, startWith, debounceTime, tap, switchMap, withLatestFrom, share } from 'rxjs';
|
|
13
13
|
import embed, { vega } from 'vega-embed';
|
|
14
14
|
import { mergeDeep } from 'vega-lite';
|
|
15
15
|
import { fontConfig } from 'vega-lite/build/src/config';
|
|
16
16
|
import * as i1 from '@ngrx/store';
|
|
17
|
+
import * as i3 from '@provoly/dashboard/components/scheme-picker';
|
|
18
|
+
import { PrySchemePickerModule } from '@provoly/dashboard/components/scheme-picker';
|
|
19
|
+
import * as i7 from '@provoly/dashboard/components/color-picker';
|
|
20
|
+
import { PryColorPickerModule } from '@provoly/dashboard/components/color-picker';
|
|
17
21
|
|
|
18
22
|
class PryWidgetAggregatedChartCssComponent {
|
|
19
23
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: PryWidgetAggregatedChartCssComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -24,12 +28,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
24
28
|
args: [{ selector: 'pry-widget-aggregated-chart-css', template: '', encapsulation: ViewEncapsulation.None, styles: [".o-widget--chart-color-thumb{display:flex;flex-direction:row;margin-bottom:20px}.o-widget--chart-color-thumb-item{flex:1 1 20px;height:20px;border-radius:4px}.o-widget--chart div.vega-embed{display:block}.o-widget--chart div.vega-embed.has-actions{display:block;height:100%;padding-right:0}.o-widget--chart div.vega-embed.has-actions>div.chart-wrapper.fit-y.fit-x{height:100%;overflow:hidden}.o-widget--chart div.vega-embed.has-actions>details>summary{right:25px}.o-widget--chart div.vega-embed.has-actions>details .vega-actions{right:16px}\n"] }]
|
|
25
29
|
}] });
|
|
26
30
|
|
|
27
|
-
vega.scheme('KO/W/OK', ['#C04D3F', '#FD9843', '#9ABE29']);
|
|
28
31
|
class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
29
|
-
constructor(store, translateService, el, aggregationService) {
|
|
32
|
+
constructor(store, translateService, el, aggregationService, schemeService) {
|
|
30
33
|
super(store, el);
|
|
31
34
|
this.translateService = translateService;
|
|
32
35
|
this.aggregationService = aggregationService;
|
|
36
|
+
this.schemeService = schemeService;
|
|
33
37
|
this.optionsCopy$ = new BehaviorSubject(null);
|
|
34
38
|
this.trigger$ = new Subject();
|
|
35
39
|
this.WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;
|
|
@@ -39,10 +43,13 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
39
43
|
this.classes = [];
|
|
40
44
|
this.fields = [];
|
|
41
45
|
this.triggerOrdinateAttributes$ = new Subject();
|
|
42
|
-
this.schemes = [];
|
|
43
46
|
this.sortActive = 'name';
|
|
44
47
|
this.sortDirection = 'asc';
|
|
45
|
-
this.
|
|
48
|
+
this.sortDirections = [
|
|
49
|
+
{ value: 'asc', label: '' },
|
|
50
|
+
{ value: 'desc', label: '' }
|
|
51
|
+
];
|
|
52
|
+
this.colors = vega.scheme('Provoly');
|
|
46
53
|
this.typeOptions = Object.values(GraphType)
|
|
47
54
|
.map((v) => ({
|
|
48
55
|
id: v,
|
|
@@ -141,7 +148,7 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
141
148
|
? ordinateAttrs.map((attr) => attr.id).includes(options.ordinate.attribute)
|
|
142
149
|
: true));
|
|
143
150
|
}));
|
|
144
|
-
this.attributeTypes$ = combineLatest([this.
|
|
151
|
+
this.attributeTypes$ = combineLatest([this.optionsCopy$, this.fields$, this.classes$]).pipe(filter(([options, fields, classes]) => !!options && !!options.abscissa && !!options.ordinate), map(([options, fields, classes]) => {
|
|
145
152
|
const abscissa = classes
|
|
146
153
|
.map((clazz) => clazz.attributes.find((attr) => attr.id === options.abscissa.attribute))
|
|
147
154
|
.find((attr) => !!attr);
|
|
@@ -149,7 +156,7 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
149
156
|
.map((clazz) => clazz.attributes.find((attr) => attr.id === options.ordinate.attribute))
|
|
150
157
|
.find((attr) => !!attr);
|
|
151
158
|
const groupBy = classes
|
|
152
|
-
.map((clazz) => clazz.attributes.find((attr) => attr.id === options
|
|
159
|
+
.map((clazz) => clazz.attributes.find((attr) => attr.id === options?.groupBy?.attribute))
|
|
153
160
|
.find((attr) => !!attr);
|
|
154
161
|
const abscissaFieldType = fields.find((field) => field.id === abscissa?.field)?.type ?? FieldType.STRING;
|
|
155
162
|
const ordinateFieldType = fields.find((field) => field.id === ordinate?.field)?.type ?? FieldType.STRING;
|
|
@@ -178,7 +185,9 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
178
185
|
this.datasourceIds$,
|
|
179
186
|
this.options$,
|
|
180
187
|
combineLatest([fromEvent(window, 'datasourceRefresh'), this.datasourceIds$]).pipe(filter(([event, datasources]) => datasources.includes(event.detail)), startWith(undefined))
|
|
181
|
-
]).pipe(debounceTime(100),
|
|
188
|
+
]).pipe(debounceTime(100), tap(([datasources]) => this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: true }))), switchMap(([datasources, options]) => this.aggregationService
|
|
189
|
+
.aggregate(datasources, options)
|
|
190
|
+
.pipe(tap(() => this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: false }))))), withLatestFrom(this.options$), map(([aggregate, options]) => {
|
|
182
191
|
// @ts-ignore
|
|
183
192
|
if (aggregate.values.length > 0 && !aggregate.values[0].groupBy) {
|
|
184
193
|
return {
|
|
@@ -207,6 +216,9 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
207
216
|
const isCircular = [GraphType.CIRCULAR, GraphType.DONUT].includes(options.graph.type);
|
|
208
217
|
const stacked = options.graph.type.startsWith('bar') ? !options.graph.stacked : options.graph.stacked;
|
|
209
218
|
const legendTitle = this.translateService.instant(options.groupBy ? types.groupBy.name ?? '' : '@pry.widget.chart.legendLabel');
|
|
219
|
+
[options.groupBy?.color, options.circleColorScheme].filter((scheme) => !!scheme).forEach((scheme) => {
|
|
220
|
+
this.schemeService.assertScheme(scheme);
|
|
221
|
+
});
|
|
210
222
|
return mergeDeep({
|
|
211
223
|
$schema: 'https://vega.github.io/schema/vega-lite/v5.json',
|
|
212
224
|
title: this.getTitle(options),
|
|
@@ -268,9 +280,16 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
268
280
|
theta: isCircular ? { field: 'value', type: types.ordinate.vegaType } : undefined,
|
|
269
281
|
color: {
|
|
270
282
|
title: legendTitle,
|
|
271
|
-
field: !isCircular ? 'series' : 'key',
|
|
283
|
+
field: !isCircular ? (!options.groupBy ? undefined : 'series') : 'key',
|
|
272
284
|
legend: options.graph.legend,
|
|
273
|
-
scale:
|
|
285
|
+
scale: !isCircular
|
|
286
|
+
? options.groupBy
|
|
287
|
+
? { scheme: options.groupBy?.color ?? this.schemeService.getDefaultScheme() }
|
|
288
|
+
: undefined
|
|
289
|
+
: { scheme: options.circleColorScheme ?? this.schemeService.getDefaultScheme() },
|
|
290
|
+
value: !isCircular && !options.groupBy
|
|
291
|
+
? options.baseColor ?? this.schemeService.getSchemeColors(this.schemeService.getDefaultScheme())
|
|
292
|
+
: undefined
|
|
274
293
|
},
|
|
275
294
|
xOffset: stacked && options.groupBy ? { field: 'series' } : undefined,
|
|
276
295
|
tooltip: options.graph.tooltip
|
|
@@ -305,12 +324,48 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
305
324
|
config: fontConfig('Ubuntu, sans-serif')
|
|
306
325
|
}, options.additionalSpec);
|
|
307
326
|
}));
|
|
327
|
+
this.sortAttributes$ = this.optionsCopy$.pipe(map((options) => {
|
|
328
|
+
return [
|
|
329
|
+
{ id: options?.abscissa.attribute, label: options?.abscissa.label },
|
|
330
|
+
{ id: options?.ordinate.attribute, label: options?.ordinate.label }
|
|
331
|
+
].filter((attribute) => !!attribute.id);
|
|
332
|
+
}));
|
|
333
|
+
this.subscriptions.add(this.sortAttributes$.subscribe((attributes) => {
|
|
334
|
+
if (this.optionsCopy$.value?.graph.sort &&
|
|
335
|
+
!attributes.map((attribute) => attribute.id).includes(this.optionsCopy$.value?.graph.sort?.attribute)) {
|
|
336
|
+
this.optionsCopy$.next({
|
|
337
|
+
...this.optionsCopy$.value,
|
|
338
|
+
graph: {
|
|
339
|
+
...this.optionsCopy$.value?.graph,
|
|
340
|
+
sort: {
|
|
341
|
+
...this.optionsCopy$.value?.graph.sort,
|
|
342
|
+
attribute: attributes[0].id ?? ''
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
}
|
|
347
|
+
}));
|
|
348
|
+
this.subscriptions.add(combineLatest([this.optionsCopy$, this.attributeTypes$, this.classes$]).subscribe(([options, attrTypes, classes]) => {
|
|
349
|
+
this.sortDirections = this.sortDirections
|
|
350
|
+
.map((sort) => {
|
|
351
|
+
let attribute = classes
|
|
352
|
+
.map((clazz) => clazz.attributes.find((attr) => attr.id === options?.graph.sort?.attribute))
|
|
353
|
+
.find((attr) => !!attr);
|
|
354
|
+
return {
|
|
355
|
+
value: sort.value,
|
|
356
|
+
label: this.translateService.instant(`@pry.widget.chart.sort.${sort.value}.${attrTypes.abscissa.name === attribute?.name
|
|
357
|
+
? attrTypes.abscissa.vegaType
|
|
358
|
+
: attrTypes.ordinate.vegaType}`)
|
|
359
|
+
};
|
|
360
|
+
})
|
|
361
|
+
.sort((a, b) => a.label.localeCompare(b.label));
|
|
362
|
+
}));
|
|
308
363
|
}
|
|
309
364
|
ngAfterViewInit() {
|
|
310
365
|
this.subscriptions.add(combineLatest([this.vegaLiteSpec$, this.trigger$]).subscribe(([spec, _]) => {
|
|
311
366
|
if (this.vega) {
|
|
312
367
|
this.view?.finalize();
|
|
313
|
-
//console.log(spec);
|
|
368
|
+
//console.log(JSON.stringify(spec));
|
|
314
369
|
embed(this.vega.nativeElement, JSON.parse(JSON.stringify(spec)), {
|
|
315
370
|
actions: false,
|
|
316
371
|
renderer: 'canvas',
|
|
@@ -393,7 +448,8 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
393
448
|
if ([GraphType.CIRCULAR, GraphType.DONUT].includes($event)) {
|
|
394
449
|
this.optionsCopy$.next({
|
|
395
450
|
...this.optionsCopy$.value,
|
|
396
|
-
groupBy: undefined
|
|
451
|
+
groupBy: undefined,
|
|
452
|
+
circleColorScheme: this.optionsCopy$.value?.circleColorScheme ?? 'Provoly'
|
|
397
453
|
});
|
|
398
454
|
}
|
|
399
455
|
if ([GraphType.HISTOGRAM].includes($event)) {
|
|
@@ -614,7 +670,10 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
614
670
|
if ($event) {
|
|
615
671
|
this.optionsCopy$.next({
|
|
616
672
|
...this.optionsCopy$.value,
|
|
617
|
-
groupBy: {
|
|
673
|
+
groupBy: {
|
|
674
|
+
attribute: this.optionsCopy$.value?.groupBy?.attribute ?? '',
|
|
675
|
+
color: this.schemeService.getDefaultScheme()
|
|
676
|
+
}
|
|
618
677
|
});
|
|
619
678
|
}
|
|
620
679
|
else {
|
|
@@ -652,9 +711,6 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
652
711
|
? { tickCount: Math.max(...data.map((val) => val.value)) }
|
|
653
712
|
: {};
|
|
654
713
|
}
|
|
655
|
-
scheme() {
|
|
656
|
-
return vega.scheme(this.optionsCopy$.value?.groupBy?.color ?? '');
|
|
657
|
-
}
|
|
658
714
|
toggleStacked($event) {
|
|
659
715
|
if (this.optionsCopy$.value) {
|
|
660
716
|
this.optionsCopy$.next({
|
|
@@ -666,18 +722,72 @@ class WidgetAggregatedChartComponent extends DataWidgetComponent {
|
|
|
666
722
|
});
|
|
667
723
|
}
|
|
668
724
|
}
|
|
725
|
+
toggleSort($event) {
|
|
726
|
+
if (this.optionsCopy$.value) {
|
|
727
|
+
this.optionsCopy$.next({
|
|
728
|
+
...this.optionsCopy$.value,
|
|
729
|
+
graph: {
|
|
730
|
+
...this.optionsCopy$.value.graph,
|
|
731
|
+
sort: $event
|
|
732
|
+
? this.optionsCopy$.value.graph.sort ?? {
|
|
733
|
+
attribute: this.optionsCopy$.value.abscissa.attribute,
|
|
734
|
+
direction: 'asc'
|
|
735
|
+
}
|
|
736
|
+
: undefined
|
|
737
|
+
}
|
|
738
|
+
});
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
changeSortAttribute($event) {
|
|
742
|
+
if (this.optionsCopy$.value) {
|
|
743
|
+
this.optionsCopy$.next({
|
|
744
|
+
...this.optionsCopy$.value,
|
|
745
|
+
graph: {
|
|
746
|
+
...this.optionsCopy$.value.graph,
|
|
747
|
+
sort: { ...this.optionsCopy$.value.graph.sort, attribute: $event }
|
|
748
|
+
}
|
|
749
|
+
});
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
changeSortDirection($event) {
|
|
753
|
+
if (this.optionsCopy$.value) {
|
|
754
|
+
this.optionsCopy$.next({
|
|
755
|
+
...this.optionsCopy$.value,
|
|
756
|
+
graph: {
|
|
757
|
+
...this.optionsCopy$.value?.graph,
|
|
758
|
+
sort: { ...this.optionsCopy$.value?.graph.sort, direction: $event }
|
|
759
|
+
}
|
|
760
|
+
});
|
|
761
|
+
}
|
|
762
|
+
}
|
|
669
763
|
toImage() {
|
|
670
764
|
return new Promise((resolve, reject) => {
|
|
671
765
|
resolve(this.vega.nativeElement.querySelectorAll('canvas')[0].toDataURL('image/png'));
|
|
672
766
|
});
|
|
673
767
|
}
|
|
674
|
-
|
|
675
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetAggregatedChartComponent, selector: "pry-widget-aggregated-chart", viewQueries: [{ propertyName: "vega", first: true, predicate: ["vega"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n<div class=\"o-widget o-widget--chart\" *ngIf=\"optionsCopy$ | async as optionsCopy\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n [openData$]=\"openData$\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n class=\"a-pry-select\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.graph.type === GraphType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.graph.donutSize\"\n (ngModelChange)=\"changeDonutSize($event)\"\n labelTranslate=\"@pry.widget.chart.donutSize\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleLegend($event)\" [ngModel]=\"!!optionsCopy.graph.legend\">\n {{ '@pry.widget.chart.legend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.graph.tooltip\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.graph.type\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abscissa\">{{ '@pry.widget.chart.abscissa' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAbscissa($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"abscissaAttributes$ | async | prySortData : sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n\n <div\n *ngIf=\"\n ['quantitative', 'temporal'].includes(translateToVegaType(copyAbscissaField?.type)) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n \"\n class=\"m-form-label-field\"\n >\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox\n (ngModelChange)=\"limitElements($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.limit\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit\">\n <ng-container *ngIf=\"optionsCopy.abscissa.limit.isTimeLimit === false\">\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.limit.at\"\n (ngModelChange)=\"changeLimit($event)\"\n labelTranslate=\"@pry.widget.chart.limit\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n\n <ng-container *ngIf=\"optionsCopy.graph.type !== GraphType.HISTOGRAM\">\n <pry-checkbox\n (ngModelChange)=\"changeLimitOthers($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit.others\"\n >{{ '@pry.widget.chart.others' | i18n }}\n </pry-checkbox>\n\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.order' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLimitOrder($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[{ id: 'asc' }, { id: 'desc' }]\"\n [ngModel]=\"optionsCopy.abscissa.limit.order\"\n [baseTranslate]=\"'@pry.widget.chart.'\"\n [labelTranslate]=\"true\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"other_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit.isTimeLimit\">\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeLimit($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[\n { id: 'second' },\n { id: 'minute' },\n { id: 'hour' },\n { id: 'day' },\n { id: 'week' },\n { id: 'month' },\n { id: 'quarter' },\n { id: 'year' }\n ]\"\n [ngModel]=\"optionsCopy.abscissa.limit.interval\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.time.\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"date_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"operations\">{{ '@pry.widget.chart.operation.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.ordinate.operation !== Operation.COUNT\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"ordinate\">{{ '@pry.widget.chart.ordinate' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOrdinate($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"ordinateAttributes$ | async | prySortData : sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n </ng-container>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"translateToVegaType(copyOrdinateField?.type) === 'quantitative'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Ordinate($event)\" [ngModel]=\"optionsCopy.ordinate.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleGroupBy($event)\" [ngModel]=\"!!optionsCopy.groupBy\"\n >{{ '@pry.widget.chart.groupBy' | i18n }}\n </pry-checkbox>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.groupBy\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.groupAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeGroupBy($event)\"\n [ngModel]=\"optionsCopy.groupBy.attribute\"\n [items]=\"abscissaAttributes$ | async | prySortData : sortActive : sortDirection\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesScheme\">{{ '@pry.widget.chart.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n [itemsAsOption]=\"true\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.scheme.\"\n bindValue=\"id\"\n bindLabel=\"id\"\n ></pry-select>\n </div>\n\n <div class=\"o-widget--chart-color-thumb\">\n <div\n *ngFor=\"let schemeColor of scheme()\"\n class=\"o-widget--chart-color-thumb-item\"\n [title]=\"schemeColor\"\n [style.background-color]=\"schemeColor\"\n ></div>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </pry-settings>\n </pry-widget-header>\n\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async) && !(noAggregationData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"noData$ | async\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n <button type=\"button\" (click)=\"openData()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.readSearch' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(noData$ | async) && (noAggregationData$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.aggNoResult' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.aggNoResult' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(noData$ | async) && !(noAggregationData$ | async) && !(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.chooseParameters' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.chooseParameters' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n</div>\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: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i5.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i2.PryEditInputComponent, selector: "pry-edit-input", inputs: ["label"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: PryWidgetAggregatedChartCssComponent, selector: "pry-widget-aggregated-chart-css" }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: i2.PrySortDataPipe, name: "prySortData" }] }); }
|
|
768
|
+
changeCircleColorScheme($event) {
|
|
769
|
+
if (this.optionsCopy$.value) {
|
|
770
|
+
this.optionsCopy$.next({
|
|
771
|
+
...this.optionsCopy$.value,
|
|
772
|
+
circleColorScheme: $event
|
|
773
|
+
});
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
changeBaseColor($event) {
|
|
777
|
+
if (this.optionsCopy$.value) {
|
|
778
|
+
this.optionsCopy$.next({
|
|
779
|
+
...this.optionsCopy$.value,
|
|
780
|
+
baseColor: $event
|
|
781
|
+
});
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetAggregatedChartComponent, deps: [{ token: i1.Store }, { token: i2.PryI18nService }, { token: i0.ElementRef }, { token: i2.PryAggregationService }, { token: i3.PrySchemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
785
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.6", type: WidgetAggregatedChartComponent, selector: "pry-widget-aggregated-chart", viewQueries: [{ propertyName: "vega", first: true, predicate: ["vega"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n<div class=\"o-widget o-widget--chart\" *ngIf=\"optionsCopy$ | async as optionsCopy\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n [openData$]=\"openData$\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n class=\"a-pry-select\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.graph.type === GraphType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.graph.donutSize\"\n (ngModelChange)=\"changeDonutSize($event)\"\n labelTranslate=\"@pry.widget.chart.donutSize\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleLegend($event)\" [ngModel]=\"!!optionsCopy.graph.legend\">\n {{ '@pry.widget.chart.legend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.graph.tooltip\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.graph.type\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abscissa\">{{ '@pry.widget.chart.abscissa' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAbscissa($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"abscissaAttributes$ | async | prySortData : sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n\n <div\n *ngIf=\"\n ['quantitative', 'temporal'].includes(translateToVegaType(copyAbscissaField?.type)) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n \"\n class=\"m-form-label-field\"\n >\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox\n (ngModelChange)=\"limitElements($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.limit\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit\">\n <ng-container *ngIf=\"optionsCopy.abscissa.limit.isTimeLimit === false\">\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.limit.at\"\n (ngModelChange)=\"changeLimit($event)\"\n labelTranslate=\"@pry.widget.chart.limit\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n\n <ng-container *ngIf=\"optionsCopy.graph.type !== GraphType.HISTOGRAM\">\n <pry-checkbox\n (ngModelChange)=\"changeLimitOthers($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit.others\"\n >{{ '@pry.widget.chart.others' | i18n }}\n </pry-checkbox>\n\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.order' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLimitOrder($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[{ id: 'asc' }, { id: 'desc' }]\"\n [ngModel]=\"optionsCopy.abscissa.limit.order\"\n [baseTranslate]=\"'@pry.widget.chart.'\"\n [labelTranslate]=\"true\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"other_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit.isTimeLimit\">\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeLimit($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[\n { id: 'second' },\n { id: 'minute' },\n { id: 'hour' },\n { id: 'day' },\n { id: 'week' },\n { id: 'month' },\n { id: 'quarter' },\n { id: 'year' }\n ]\"\n [ngModel]=\"optionsCopy.abscissa.limit.interval\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.time.\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"date_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"operations\">{{ '@pry.widget.chart.operation.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.ordinate.operation !== Operation.COUNT\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"ordinate\">{{ '@pry.widget.chart.ordinate' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOrdinate($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"ordinateAttributes$ | async | prySortData : sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n </ng-container>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"translateToVegaType(copyOrdinateField?.type) === 'quantitative'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Ordinate($event)\" [ngModel]=\"optionsCopy.ordinate.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleGroupBy($event)\" [ngModel]=\"!!optionsCopy.groupBy\"\n >{{ '@pry.widget.chart.groupBy' | i18n }}\n </pry-checkbox>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.groupBy\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.groupAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeGroupBy($event)\"\n [ngModel]=\"optionsCopy.groupBy.attribute\"\n [items]=\"abscissaAttributes$ | async | prySortData : sortActive : sortDirection\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-scheme-picker\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n ></pry-scheme-picker>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n </ng-container>\n </div>\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleSort($event)\" [ngModel]=\"!!optionsCopy.graph.sort\"\n >{{ '@pry.widget.chart.sort.title' | i18n }}\n </pry-checkbox>\n </div>\n <ng-container *ngIf=\"!!optionsCopy.graph.sort\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">Attribute</label>\n <pry-select\n (ngModelChange)=\"changeSortAttribute($event)\"\n [ngModel]=\"optionsCopy.graph.sort.attribute\"\n [items]=\"sortAttributes$ | async\"\n bindValue=\"id\"\n bindLabel=\"label\"\n class=\"a-pry-select\"\n id=\"chart_sortAttr\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">Sort</label>\n <pry-select\n (ngModelChange)=\"changeSortDirection($event)\"\n [ngModel]=\"optionsCopy.graph.sort.direction\"\n [items]=\"sortDirections\"\n bindValue=\"value\"\n bindLabel=\"label\"\n class=\"a-pry-select\"\n id=\"chart_sortDirection\"\n ></pry-select>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type === GraphType.DONUT || optionsCopy.graph.type === GraphType.CIRCULAR\"\n >\n <pry-scheme-picker\n (ngModelChange)=\"changeCircleColorScheme($event)\"\n [ngModel]=\"optionsCopy.circleColorScheme\"\n ></pry-scheme-picker>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR &&\n !optionsCopy.groupBy\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_baseColor\">{{ '@pry.widget.chart.color' | i18n }}</label>\n <pry-color-picker\n (ngModelChange)=\"changeBaseColor($event)\"\n [ngModel]=\"optionsCopy.baseColor\"\n id=\"chart_baseColor\"\n class=\"a-pry-select\"\n ></pry-color-picker>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <div class=\"a-chips -md\" [style.background-color]=\"item\">{{ item }}</div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n </pry-settings>\n </pry-widget-header>\n\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async) && !(noAggregationData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"noData$ | async\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n <button type=\"button\" (click)=\"openData()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.readSearch' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(noData$ | async) && (noAggregationData$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.aggNoResult' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.aggNoResult' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(noData$ | async) && !(noAggregationData$ | async) && !(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.chooseParameters' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.chooseParameters' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i2.SettingsComponent, selector: "pry-settings", inputs: ["widgetIndex", "isDisable", "headerPresent", "open$", "header"], outputs: ["triggerClick", "saveTriggered", "changeTitle"] }, { kind: "component", type: i2.PryWidgetHeaderComponent, selector: "pry-widget-header", inputs: ["manifest", "openData$", "additionalOptions", "headerOptions", "displayCount", "datasourceIds", "widgetIndex"], outputs: ["manifestModified"] }, { kind: "component", type: i2.PrySelectComponent, selector: "pry-select", inputs: ["labelTranslate", "baseTranslate", "translationFn", "translationFnArgs", "clearable", "multiple", "multipleClearRight", "closeOnSelect", "placeholder", "isForm", "required", "name", "readonly", "items", "itemsAsOption", "bindData", "bindValue", "bindLabel", "bindIcon", "iconSize", "templateLabel", "templateOption", "autocomplete"] }, { kind: "component", type: i2.PryIconComponent, selector: "pry-icon", inputs: ["color", "iconSvg", "animation", "iconImage", "alt", "width", "height", "classes"] }, { kind: "component", type: i6.PryCheckboxComponent, selector: "pry-checkbox", inputs: ["circle"] }, { kind: "component", type: i2.PryEditInputComponent, selector: "pry-edit-input", inputs: ["label"] }, { kind: "component", type: i2.PryRangeComponent, selector: "pry-range", inputs: ["min", "max", "step", "disabled", "labelTranslate"] }, { kind: "component", type: i7.PryColorPickerComponent, selector: "pry-color-picker" }, { kind: "component", type: i3.PrySchemePickerComponent, selector: "pry-scheme-picker" }, { kind: "component", type: PryWidgetAggregatedChartCssComponent, selector: "pry-widget-aggregated-chart-css" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i2.I18nPipe, name: "i18n" }, { kind: "pipe", type: i2.PrySortDataPipe, name: "prySortData" }] }); }
|
|
676
786
|
}
|
|
677
787
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetAggregatedChartComponent, decorators: [{
|
|
678
788
|
type: Component,
|
|
679
|
-
args: [{ selector: 'pry-widget-aggregated-chart', template: "<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n<div class=\"o-widget o-widget--chart\" *ngIf=\"optionsCopy$ | async as optionsCopy\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n [openData$]=\"openData$\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n class=\"a-pry-select\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.graph.type === GraphType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.graph.donutSize\"\n (ngModelChange)=\"changeDonutSize($event)\"\n labelTranslate=\"@pry.widget.chart.donutSize\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleLegend($event)\" [ngModel]=\"!!optionsCopy.graph.legend\">\n {{ '@pry.widget.chart.legend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.graph.tooltip\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.graph.type\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abscissa\">{{ '@pry.widget.chart.abscissa' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAbscissa($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"abscissaAttributes$ | async | prySortData : sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n\n <div\n *ngIf=\"\n ['quantitative', 'temporal'].includes(translateToVegaType(copyAbscissaField?.type)) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n \"\n class=\"m-form-label-field\"\n >\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox\n (ngModelChange)=\"limitElements($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.limit\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit\">\n <ng-container *ngIf=\"optionsCopy.abscissa.limit.isTimeLimit === false\">\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.limit.at\"\n (ngModelChange)=\"changeLimit($event)\"\n labelTranslate=\"@pry.widget.chart.limit\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n\n <ng-container *ngIf=\"optionsCopy.graph.type !== GraphType.HISTOGRAM\">\n <pry-checkbox\n (ngModelChange)=\"changeLimitOthers($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit.others\"\n >{{ '@pry.widget.chart.others' | i18n }}\n </pry-checkbox>\n\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.order' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLimitOrder($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[{ id: 'asc' }, { id: 'desc' }]\"\n [ngModel]=\"optionsCopy.abscissa.limit.order\"\n [baseTranslate]=\"'@pry.widget.chart.'\"\n [labelTranslate]=\"true\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"other_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit.isTimeLimit\">\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeLimit($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[\n { id: 'second' },\n { id: 'minute' },\n { id: 'hour' },\n { id: 'day' },\n { id: 'week' },\n { id: 'month' },\n { id: 'quarter' },\n { id: 'year' }\n ]\"\n [ngModel]=\"optionsCopy.abscissa.limit.interval\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.time.\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"date_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"operations\">{{ '@pry.widget.chart.operation.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.ordinate.operation !== Operation.COUNT\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"ordinate\">{{ '@pry.widget.chart.ordinate' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOrdinate($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"ordinateAttributes$ | async | prySortData : sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n </ng-container>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"translateToVegaType(copyOrdinateField?.type) === 'quantitative'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Ordinate($event)\" [ngModel]=\"optionsCopy.ordinate.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleGroupBy($event)\" [ngModel]=\"!!optionsCopy.groupBy\"\n >{{ '@pry.widget.chart.groupBy' | i18n }}\n </pry-checkbox>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.groupBy\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.groupAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeGroupBy($event)\"\n [ngModel]=\"optionsCopy.groupBy.attribute\"\n [items]=\"abscissaAttributes$ | async | prySortData : sortActive : sortDirection\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesScheme\">{{ '@pry.widget.chart.colorScheme' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n [itemsAsOption]=\"true\"\n [items]=\"schemes\"\n id=\"chart_seriesScheme\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.scheme.\"\n bindValue=\"id\"\n bindLabel=\"id\"\n ></pry-select>\n </div>\n\n <div class=\"o-widget--chart-color-thumb\">\n <div\n *ngFor=\"let schemeColor of scheme()\"\n class=\"o-widget--chart-color-thumb-item\"\n [title]=\"schemeColor\"\n [style.background-color]=\"schemeColor\"\n ></div>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n </pry-settings>\n </pry-widget-header>\n\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async) && !(noAggregationData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"noData$ | async\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n <button type=\"button\" (click)=\"openData()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.readSearch' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(noData$ | async) && (noAggregationData$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.aggNoResult' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.aggNoResult' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(noData$ | async) && !(noAggregationData$ | async) && !(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.chooseParameters' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.chooseParameters' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n</div>\n" }]
|
|
680
|
-
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.PryI18nService }, { type: i0.ElementRef }, { type: i2.PryAggregationService }]; }, propDecorators: { vega: [{
|
|
789
|
+
args: [{ selector: 'pry-widget-aggregated-chart', template: "<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n<div class=\"o-widget o-widget--chart\" *ngIf=\"optionsCopy$ | async as optionsCopy\">\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n *ngIf=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n [openData$]=\"openData$\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n\n <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_type\">{{ '@pry.widget.chart.type' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeType($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n class=\"a-pry-select\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.graph.type === GraphType.DONUT\">\n <pry-range\n [ngModel]=\"optionsCopy.graph.donutSize\"\n (ngModelChange)=\"changeDonutSize($event)\"\n labelTranslate=\"@pry.widget.chart.donutSize\"\n min=\"1\"\n max=\"500\"\n ></pry-range>\n </ng-container>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleLegend($event)\" [ngModel]=\"!!optionsCopy.graph.legend\">\n {{ '@pry.widget.chart.legend' | i18n }}\n </pry-checkbox>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.graph.tooltip\"\n >{{ '@pry.widget.chart.tooltip' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.graph.type\">\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"abscissa\">{{ '@pry.widget.chart.abscissa' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeAbscissa($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"abscissaAttributes$ | async | prySortData : sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n\n <div\n *ngIf=\"\n ['quantitative', 'temporal'].includes(translateToVegaType(copyAbscissaField?.type)) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n \"\n class=\"m-form-label-field\"\n >\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n <pry-checkbox\n (ngModelChange)=\"limitElements($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.limit\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit\">\n <ng-container *ngIf=\"optionsCopy.abscissa.limit.isTimeLimit === false\">\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.limit.at\"\n (ngModelChange)=\"changeLimit($event)\"\n labelTranslate=\"@pry.widget.chart.limit\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n\n <ng-container *ngIf=\"optionsCopy.graph.type !== GraphType.HISTOGRAM\">\n <pry-checkbox\n (ngModelChange)=\"changeLimitOthers($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit.others\"\n >{{ '@pry.widget.chart.others' | i18n }}\n </pry-checkbox>\n\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.order' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeLimitOrder($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[{ id: 'asc' }, { id: 'desc' }]\"\n [ngModel]=\"optionsCopy.abscissa.limit.order\"\n [baseTranslate]=\"'@pry.widget.chart.'\"\n [labelTranslate]=\"true\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"other_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"!!optionsCopy.abscissa.limit.isTimeLimit\">\n <label class=\"a-label\" for=\"date_limit\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeLimit($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"[\n { id: 'second' },\n { id: 'minute' },\n { id: 'hour' },\n { id: 'day' },\n { id: 'week' },\n { id: 'month' },\n { id: 'quarter' },\n { id: 'year' }\n ]\"\n [ngModel]=\"optionsCopy.abscissa.limit.interval\"\n [labelTranslate]=\"true\"\n baseTranslate=\"@pry.widget.chart.time.\"\n bindLabel=\"id\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"date_limit\"\n ></pry-select>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"operations\">{{ '@pry.widget.chart.operation.title' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOperation($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n <ng-container *ngIf=\"optionsCopy.ordinate.operation !== Operation.COUNT\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"ordinate\">{{ '@pry.widget.chart.ordinate' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeOrdinate($event)\"\n [itemsAsOption]=\"true\"\n [items]=\"ordinateAttributes$ | async | prySortData : sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n </ng-container>\n\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n\n <div *ngIf=\"translateToVegaType(copyOrdinateField?.type) === 'quantitative'\" class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Ordinate($event)\" [ngModel]=\"optionsCopy.ordinate.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n </div>\n </div>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleGroupBy($event)\" [ngModel]=\"!!optionsCopy.groupBy\"\n >{{ '@pry.widget.chart.groupBy' | i18n }}\n </pry-checkbox>\n </div>\n\n <ng-container *ngIf=\"!!optionsCopy.groupBy\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@pry.widget.chart.groupAttr' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeGroupBy($event)\"\n [ngModel]=\"optionsCopy.groupBy.attribute\"\n [items]=\"abscissaAttributes$ | async | prySortData : sortActive : sortDirection\"\n bindLabel=\"name\"\n bindValue=\"id\"\n class=\"a-pry-select\"\n id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-scheme-picker\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n ></pry-scheme-picker>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n </ng-container>\n </div>\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleSort($event)\" [ngModel]=\"!!optionsCopy.graph.sort\"\n >{{ '@pry.widget.chart.sort.title' | i18n }}\n </pry-checkbox>\n </div>\n <ng-container *ngIf=\"!!optionsCopy.graph.sort\">\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">Attribute</label>\n <pry-select\n (ngModelChange)=\"changeSortAttribute($event)\"\n [ngModel]=\"optionsCopy.graph.sort.attribute\"\n [items]=\"sortAttributes$ | async\"\n bindValue=\"id\"\n bindLabel=\"label\"\n class=\"a-pry-select\"\n id=\"chart_sortAttr\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_seriesAttr\">Sort</label>\n <pry-select\n (ngModelChange)=\"changeSortDirection($event)\"\n [ngModel]=\"optionsCopy.graph.sort.direction\"\n [items]=\"sortDirections\"\n bindValue=\"value\"\n bindLabel=\"label\"\n class=\"a-pry-select\"\n id=\"chart_sortDirection\"\n ></pry-select>\n </div>\n </ng-container>\n </div>\n </ng-container>\n\n <ng-container\n *ngIf=\"optionsCopy.graph.type === GraphType.DONUT || optionsCopy.graph.type === GraphType.CIRCULAR\"\n >\n <pry-scheme-picker\n (ngModelChange)=\"changeCircleColorScheme($event)\"\n [ngModel]=\"optionsCopy.circleColorScheme\"\n ></pry-scheme-picker>\n </ng-container>\n\n <ng-container\n *ngIf=\"\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR &&\n !optionsCopy.groupBy\n \"\n >\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_baseColor\">{{ '@pry.widget.chart.color' | i18n }}</label>\n <pry-color-picker\n (ngModelChange)=\"changeBaseColor($event)\"\n [ngModel]=\"optionsCopy.baseColor\"\n id=\"chart_baseColor\"\n class=\"a-pry-select\"\n ></pry-color-picker>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <div class=\"a-chips -md\" [style.background-color]=\"item\">{{ item }}</div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </ng-container>\n </pry-settings>\n </pry-widget-header>\n\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async) && !(noAggregationData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"noData$ | async\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n <button type=\"button\" (click)=\"openData()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.readSearch' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(noData$ | async) && (noAggregationData$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.aggNoResult' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.aggNoResult' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!(noData$ | async) && !(noAggregationData$ | async) && !(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.chooseParameters' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.chooseParameters' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n </ng-container>\n</div>\n" }]
|
|
790
|
+
}], ctorParameters: function () { return [{ type: i1.Store }, { type: i2.PryI18nService }, { type: i0.ElementRef }, { type: i2.PryAggregationService }, { type: i3.PrySchemeService }]; }, propDecorators: { vega: [{
|
|
681
791
|
type: ViewChild,
|
|
682
792
|
args: ['vega']
|
|
683
793
|
}] } });
|
|
@@ -766,7 +876,8 @@ const enTranslations = {
|
|
|
766
876
|
category20: '20 colors with 2 shades',
|
|
767
877
|
category20b: '20 colors with 4 shades n°1',
|
|
768
878
|
category20c: '20 colors with 4 shades n°2',
|
|
769
|
-
'KO/W/OK': 'Traffic light'
|
|
879
|
+
'KO/W/OK': 'Traffic light',
|
|
880
|
+
Provoly: 'Provoly'
|
|
770
881
|
},
|
|
771
882
|
time: {
|
|
772
883
|
second: 'Second',
|
|
@@ -777,6 +888,22 @@ const enTranslations = {
|
|
|
777
888
|
month: 'Month',
|
|
778
889
|
quarter: 'Quarter',
|
|
779
890
|
year: 'Year'
|
|
891
|
+
},
|
|
892
|
+
color: 'Color',
|
|
893
|
+
sort: {
|
|
894
|
+
title: 'Sort',
|
|
895
|
+
asc: {
|
|
896
|
+
quantitative: 'Low to high',
|
|
897
|
+
nominal: 'Alphabetical',
|
|
898
|
+
ordinal: 'Alphabetical',
|
|
899
|
+
temporal: 'Chronological'
|
|
900
|
+
},
|
|
901
|
+
desc: {
|
|
902
|
+
quantitative: 'High to low',
|
|
903
|
+
nominal: 'Reverse alphabetical',
|
|
904
|
+
ordinal: 'Reverse alphabetical',
|
|
905
|
+
temporal: 'Antichronological'
|
|
906
|
+
}
|
|
780
907
|
}
|
|
781
908
|
}
|
|
782
909
|
},
|
|
@@ -870,7 +997,8 @@ const frTranslations = {
|
|
|
870
997
|
category20: '20 couleurs avec 2 nuances',
|
|
871
998
|
category20b: '20 couleurs avec 4 nuances n°1',
|
|
872
999
|
category20c: '20 couleurs avec 4 nuances n°2',
|
|
873
|
-
'KO/W/OK': 'Feu de signalisation'
|
|
1000
|
+
'KO/W/OK': 'Feu de signalisation',
|
|
1001
|
+
Provoly: 'Provoly'
|
|
874
1002
|
},
|
|
875
1003
|
time: {
|
|
876
1004
|
second: 'Seconde',
|
|
@@ -881,6 +1009,22 @@ const frTranslations = {
|
|
|
881
1009
|
month: 'Mois',
|
|
882
1010
|
quarter: 'Trimestre',
|
|
883
1011
|
year: 'Année'
|
|
1012
|
+
},
|
|
1013
|
+
color: 'Couleur',
|
|
1014
|
+
sort: {
|
|
1015
|
+
title: 'Tri',
|
|
1016
|
+
asc: {
|
|
1017
|
+
quantitative: 'Croissant',
|
|
1018
|
+
ordinal: 'Alphabétique',
|
|
1019
|
+
nominal: 'Alphabétique',
|
|
1020
|
+
temporal: 'Chronologique'
|
|
1021
|
+
},
|
|
1022
|
+
desc: {
|
|
1023
|
+
quantitative: 'Décroissant',
|
|
1024
|
+
ordinal: 'Anti-alphabétique',
|
|
1025
|
+
nominal: 'Anti-alphabétique',
|
|
1026
|
+
temporal: 'Antéchronologique'
|
|
1027
|
+
}
|
|
884
1028
|
}
|
|
885
1029
|
}
|
|
886
1030
|
},
|
|
@@ -914,7 +1058,10 @@ class WidgetAggregatedChartModule extends BaseWidgetModule {
|
|
|
914
1058
|
PryEditInputModule,
|
|
915
1059
|
PryI18nModule,
|
|
916
1060
|
PryRangeModule,
|
|
917
|
-
PrySortModule
|
|
1061
|
+
PrySortModule,
|
|
1062
|
+
ReactiveFormsModule,
|
|
1063
|
+
PryColorPickerModule,
|
|
1064
|
+
PrySchemePickerModule], exports: [WidgetAggregatedChartComponent] }); }
|
|
918
1065
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetAggregatedChartModule, providers: [PryAggregationService], imports: [CommonModule,
|
|
919
1066
|
FormsModule,
|
|
920
1067
|
OverlayModule,
|
|
@@ -927,7 +1074,10 @@ class WidgetAggregatedChartModule extends BaseWidgetModule {
|
|
|
927
1074
|
PryEditInputModule,
|
|
928
1075
|
PryI18nModule,
|
|
929
1076
|
PryRangeModule,
|
|
930
|
-
PrySortModule
|
|
1077
|
+
PrySortModule,
|
|
1078
|
+
ReactiveFormsModule,
|
|
1079
|
+
PryColorPickerModule,
|
|
1080
|
+
PrySchemePickerModule] }); }
|
|
931
1081
|
}
|
|
932
1082
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImport: i0, type: WidgetAggregatedChartModule, decorators: [{
|
|
933
1083
|
type: NgModule,
|
|
@@ -946,7 +1096,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.6", ngImpor
|
|
|
946
1096
|
PryEditInputModule,
|
|
947
1097
|
PryI18nModule,
|
|
948
1098
|
PryRangeModule,
|
|
949
|
-
PrySortModule
|
|
1099
|
+
PrySortModule,
|
|
1100
|
+
ReactiveFormsModule,
|
|
1101
|
+
PryColorPickerModule,
|
|
1102
|
+
PrySchemePickerModule
|
|
950
1103
|
],
|
|
951
1104
|
exports: [WidgetAggregatedChartComponent],
|
|
952
1105
|
providers: [PryAggregationService]
|