@provoly/dashboard 0.14.9 → 0.14.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/admin/components/admin-layout/admin-layout.component.d.ts +5 -3
  2. package/assets/svgs/map.svg +1 -1
  3. package/components/metadata-editor/metadata-editor.component.d.ts +1 -3
  4. package/esm2022/admin/components/admin-dataset/admin-select-dataset/admin-select-dataset.component.mjs +1 -1
  5. package/esm2022/admin/components/admin-layout/admin-layout.component.mjs +10 -7
  6. package/esm2022/admin/components/admin-user/admin-user-select/admin-user-select.component.mjs +1 -1
  7. package/esm2022/admin/i18n/en.translations.mjs +2 -2
  8. package/esm2022/admin/i18n/fr.translations.mjs +4 -4
  9. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +8 -29
  10. package/esm2022/lib/core/components/about/about.component.mjs +29 -0
  11. package/esm2022/lib/core/components/about/pry-about.module.mjs +21 -0
  12. package/esm2022/lib/core/components/icon/icon.component.mjs +5 -1
  13. package/esm2022/lib/core/i18n/en.translations.mjs +12 -2
  14. package/esm2022/lib/core/i18n/fr.translations.mjs +12 -2
  15. package/esm2022/lib/core/i18n/i18n.pipe.mjs +4 -3
  16. package/esm2022/lib/core/i18n/i18n.service.mjs +5 -5
  17. package/esm2022/lib/core/model/widget-map-manifest.interface.mjs +1 -1
  18. package/esm2022/lib/core/public-api.mjs +3 -1
  19. package/esm2022/lib/core/store/class/class.effects.mjs +1 -1
  20. package/esm2022/lib/core/store/config/config.actions.mjs +5 -2
  21. package/esm2022/lib/core/store/config/config.effects.mjs +4 -1
  22. package/esm2022/lib/core/store/config/config.reducer.mjs +9 -2
  23. package/esm2022/lib/core/store/config/config.selectors.mjs +6 -4
  24. package/esm2022/lib/core/store/config/config.service.mjs +36 -2
  25. package/esm2022/lib/core/store/config/versions.interface.mjs +2 -0
  26. package/esm2022/lib/core/toolbox/toolbox-menu.service.mjs +1 -16
  27. package/esm2022/lib/dashboard/components/manifests/manifests.component.mjs +3 -1
  28. package/esm2022/lib/dashboard/components/widgets/base-widget.component.mjs +3 -2
  29. package/esm2022/lib/dashboard/store/dashboard.actions.mjs +2 -2
  30. package/esm2022/lib/dashboard/store/dashboard.effects.mjs +12 -4
  31. package/esm2022/lib/dashboard/store/dashboard.reducers.mjs +7 -1
  32. package/esm2022/lib/dashboard/store/manifest.service.mjs +2 -3
  33. package/esm2022/notification/store/notification.effects.mjs +3 -3
  34. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +23 -18
  35. package/esm2022/presentation/components/presentation.component.mjs +18 -18
  36. package/esm2022/presentation/style/css.component.mjs +2 -2
  37. package/esm2022/restitution/components/restitution-list/restitution-list.component.mjs +3 -3
  38. package/esm2022/restitution/components/restitution-list-item/restitution-list-item.component.mjs +6 -3
  39. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.mjs +6 -3
  40. package/esm2022/supervision/components/supervision-integration-errors/supervision-integration-errors.component.mjs +2 -2
  41. package/esm2022/supervision/components/supervision-layout/supervision-layout.component.mjs +2 -2
  42. package/esm2022/supervision/components/supervision.component.mjs +2 -2
  43. package/esm2022/supervision/store/supervision.actions.mjs +1 -1
  44. package/esm2022/supervision/store/supervision.reducer.mjs +3 -2
  45. package/esm2022/supervision/store/supervision.selectors.mjs +2 -2
  46. package/esm2022/tooltips/attribute/attribute-tooltip.component.mjs +18 -11
  47. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +20 -6
  48. package/esm2022/widgets/widget-aggregated-chart/i18n/fr.translations.mjs +1 -2
  49. package/esm2022/widgets/widget-map/component/widget-map-layer.service.mjs +2 -2
  50. package/fesm2022/provoly-dashboard-admin.mjs +14 -11
  51. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  52. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +7 -28
  53. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  54. package/fesm2022/provoly-dashboard-notification.mjs +2 -2
  55. package/fesm2022/provoly-dashboard-notification.mjs.map +1 -1
  56. package/fesm2022/provoly-dashboard-presentation.mjs +41 -37
  57. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  58. package/fesm2022/provoly-dashboard-restitution.mjs +7 -4
  59. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  60. package/fesm2022/provoly-dashboard-supervision.mjs +11 -8
  61. package/fesm2022/provoly-dashboard-supervision.mjs.map +1 -1
  62. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs +17 -10
  63. package/fesm2022/provoly-dashboard-tooltips-attribute.mjs.map +1 -1
  64. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +19 -6
  65. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  66. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
  67. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  68. package/fesm2022/provoly-dashboard.mjs +165 -54
  69. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  70. package/lib/core/components/about/about.component.d.ts +12 -0
  71. package/lib/core/components/about/pry-about.module.d.ts +10 -0
  72. package/lib/core/i18n/en.translations.d.ts +10 -0
  73. package/lib/core/i18n/fr.translations.d.ts +10 -0
  74. package/lib/core/i18n/i18n.service.d.ts +2 -2
  75. package/lib/core/model/widget-map-manifest.interface.d.ts +2 -0
  76. package/lib/core/public-api.d.ts +2 -0
  77. package/lib/core/store/config/config.actions.d.ts +12 -0
  78. package/lib/core/store/config/config.effects.d.ts +6 -0
  79. package/lib/core/store/config/config.reducer.d.ts +2 -0
  80. package/lib/core/store/config/config.selectors.d.ts +1 -0
  81. package/lib/core/store/config/config.service.d.ts +2 -0
  82. package/lib/core/store/config/versions.interface.d.ts +10 -0
  83. package/lib/dashboard/store/dashboard.actions.d.ts +4 -4
  84. package/lib/dashboard/store/manifest.service.d.ts +1 -1
  85. package/package.json +25 -25
  86. package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +4 -3
  87. package/presentation/components/presentation.component.d.ts +2 -2
  88. package/presentation/style/_o-pry-new-presentation.scss +7 -0
  89. package/restitution/components/restitution-list-item/restitution-list-item.component.d.ts +3 -2
  90. package/styles/layout/_o-base-layout.scss +8 -1
  91. package/supervision/components/supervision-integration-errors/supervision-integration-errors-select/supervision-integration-errors-select.component.d.ts +1 -1
  92. package/supervision/store/supervision.actions.d.ts +2 -2
  93. package/supervision/store/supervision.reducer.d.ts +1 -1
  94. package/supervision/store/supervision.selectors.d.ts +1 -1
  95. package/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.d.ts +7 -0
  96. package/widgets/widget-aggregated-chart/i18n/fr.translations.d.ts +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-widgets-widget-aggregated-chart.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/service/base-aggregation.service.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.html","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/widget-aggregated-chart.module.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/service/frontend-aggregation.service.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/service/backend-aggregation.service.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/provoly-dashboard-widgets-widget-aggregated-chart.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ChartAggregatedWidgetOptions, Operation, ValueType } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\n\nexport interface AggregationResult {\n operation: Operation;\n values: (\n | {\n key: ValueType;\n value: ValueType;\n }\n | {\n key: ValueType;\n groupBy: {\n key: ValueType;\n value: ValueType;\n }[];\n }\n )[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PryAggregationService {\n aggregate(datasource: string[], options: ChartAggregatedWidgetOptions): Observable<AggregationResult> {\n throw new Error(\n 'You must declare the use of an aggregation service. Add PryBackendAggregationService, PryFrontendAggregationService or a custom service'\n );\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-aggregated-chart-css',\n template: '',\n styleUrls: ['./_o-widget-chart.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetAggregatedChartCssComponent {}\n","import { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n ChartAggregatedWidgetOptions,\n Class,\n ClassSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n GraphType,\n Operation,\n PryI18nService,\n ValueType,\n VegaColorType,\n VegaType,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, Observable, Subject, switchMap, withLatestFrom } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport { View } from 'vega';\nimport embed, { vega } from 'vega-embed';\nimport { mergeDeep, TopLevelSpec } from 'vega-lite';\nimport { fontConfig } from 'vega-lite/build/src/config';\nimport { PryAggregationService } from '../service/base-aggregation.service';\n\nexport type RadarValue = {\n category: number;\n key: string;\n value: number;\n};\n\nvega.scheme('KO/W/OK', ['#C04D3F', '#FD9843', '#9ABE29']);\n\n@Component({\n selector: 'pry-widget-aggregated-chart',\n templateUrl: './widget-aggregated-chart.component.html'\n})\nexport class WidgetAggregatedChartComponent extends DataWidgetComponent implements AfterViewInit {\n @ViewChild('vega') vega!: ElementRef;\n options$: Observable<ChartAggregatedWidgetOptions>;\n optionsCopy$ = new BehaviorSubject<ChartAggregatedWidgetOptions | null>(null);\n view?: View;\n trigger$ = new Subject<void>();\n vegaLiteSpec$: Observable<TopLevelSpec>;\n fields$: Observable<Field[]>;\n classes$: Observable<Class[]>;\n attributeTypes$: Observable<{\n ordinate: { vegaType: VegaType; fieldType: any };\n abscissa: { vegaType: VegaType; fieldType: any };\n }>;\n aggregatedValues$: Observable<{ data: any; operation: any }>;\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n GraphType = GraphType;\n Operation = Operation;\n isChartValid$: Observable<boolean>;\n typeOptions: { id: string; label: string }[] = [];\n operations$: Observable<{ id: string; label: string }[]>;\n abscissaAttributes$: Observable<Attribute[]>;\n classes: Class[] = [];\n fields: Field[] = [];\n ordinateAttributes$: Observable<Attribute[]>;\n triggerOrdinateAttributes$ = new Subject<void>();\n copyAbscissaField?: Field;\n copyOrdinateField?: Field;\n schemes: { id: string }[] = [];\n noData$: Observable<boolean>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(\n store: Store<any>,\n private translateService: PryI18nService,\n el: ElementRef,\n private aggregationService: PryAggregationService\n ) {\n super(store, el);\n this.schemes = Object.values(VegaColorType).map((id) => ({ id }));\n this.typeOptions = Object.values(GraphType)\n .map((v) => ({\n id: v,\n label: this.translateService.instant('@pry.widget.chart.graphType.' + v)\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n\n this.options$ = this.manifest$.pipe(\n map(\n (manifest) =>\n mergeDeep(\n {\n graph: { type: GraphType.BAR, tooltip: true, legend: false },\n abscissa: { keep0: true },\n ordinate: { keep0: true }\n } as ChartAggregatedWidgetOptions,\n (manifest.options ?? {}) as ChartAggregatedWidgetOptions\n ) as ChartAggregatedWidgetOptions\n )\n );\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy$.next(JSON.parse(JSON.stringify(options)));\n });\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n this.operations$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(\n map(([rs, classes, fields]) =>\n classes\n .filter((clazz) => Object.keys(rs.items).includes(clazz.id))\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field;\n });\n return !!field && [FieldType.INTEGER, FieldType.DECIMAL, FieldType.LONG].includes(field.type);\n })\n )\n .reduce((a, b) => [...a, ...b], [])\n .filter((attr) => !!attr)\n ),\n map((attributes) =>\n (attributes.length > 0 ? Object.values(Operation) : [Operation.COUNT, Operation.DISTINCT, Operation.NONE])\n .map((v) => ({\n id: v,\n label: this.translateService.instant('@pry.widget.chart.operation.' + v)\n }))\n .sort((a, b) => a.label.localeCompare(b.label))\n )\n );\n\n this.subscriptions.add(this.fields$.subscribe((fields) => (this.fields = fields)));\n this.subscriptions.add(this.classes$.subscribe((classes) => (this.classes = classes)));\n\n this.abscissaAttributes$ = combineLatest([this.classes$, this.fields$, this.resultSet$, this.optionsCopy$]).pipe(\n map(([classes, fields, rs, optionCopy]) =>\n classes\n .filter((clazz) => Object.keys(rs.items).includes(clazz.id))\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field;\n });\n return (\n !!field &&\n field.type !== FieldType.RAW &&\n field.type !== FieldType.STRING &&\n (optionCopy?.graph.type !== GraphType.HISTOGRAM || field.type !== FieldType.KEYWORD)\n );\n })\n )\n .reduce((a, b) => [...a, ...b], [])\n )\n );\n\n this.ordinateAttributes$ = combineLatest([\n this.classes$,\n this.fields$,\n this.resultSet$,\n this.triggerOrdinateAttributes$\n ]).pipe(\n map(([classes, fields, rs]) =>\n classes\n .filter((clazz) => Object.keys(rs.items).includes(clazz.id))\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field;\n });\n if (\n this.optionsCopy$.value &&\n [\n Operation.MAX,\n Operation.MIN,\n Operation.SUM,\n Operation.Q1,\n Operation.Q3,\n Operation.AVERAGE,\n Operation.MEDIAN,\n Operation.NONE\n ].includes(this.optionsCopy$.value.ordinate.operation)\n ) {\n return (\n !!field &&\n [FieldType.INTEGER, FieldType.INSTANT, FieldType.LONG, FieldType.DECIMAL].includes(field.type)\n );\n }\n return !!field && field.type !== FieldType.RAW && field.type !== FieldType.STRING;\n })\n )\n .reduce((a, b) => [...a, ...b], [])\n )\n );\n\n this.isChartValid$ = combineLatest([this.options$, this.abscissaAttributes$, this.ordinateAttributes$]).pipe(\n map(([options, abscissaAttrs, ordinateAttrs]) => {\n return (\n !!options.abscissa.attribute &&\n abscissaAttrs.map((attr) => attr.id).includes(options.abscissa.attribute) &&\n (options.ordinate.attribute\n ? ordinateAttrs.map((attr) => attr.id).includes(options.ordinate.attribute)\n : true)\n );\n })\n );\n\n this.attributeTypes$ = combineLatest([this.options$, this.fields$, this.classes$]).pipe(\n filter(([options, fields, classes]) => !!options.abscissa && !!options.ordinate),\n map(([options, fields, classes]) => {\n const abscissa = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.abscissa.attribute))\n .find((attr) => !!attr);\n const ordinate = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.ordinate.attribute))\n .find((attr) => !!attr);\n const abscissaFieldType = fields.find((field) => field.id === abscissa?.field)?.type ?? FieldType.STRING;\n const ordinateFieldType = fields.find((field) => field.id === ordinate?.field)?.type ?? FieldType.STRING;\n return {\n abscissa: {\n fieldType: abscissaFieldType,\n vegaType: this.translateToVegaType(abscissaFieldType, abscissa?.name ?? '')\n },\n ordinate: {\n fieldType: ordinateFieldType,\n vegaType:\n options.ordinate.operation === Operation.COUNT || options.ordinate.operation === Operation.DISTINCT\n ? VegaType.QUANTITATIVE\n : this.translateToVegaType(ordinateFieldType, ordinate?.name ?? '')\n }\n };\n })\n );\n\n this.aggregatedValues$ = combineLatest([this.datasourceIds$, this.options$, this.resultSet$]).pipe(\n switchMap(([datasources, options]) => this.aggregationService.aggregate(datasources, options)),\n debounceTime(100),\n withLatestFrom(this.options$),\n map(([aggregate, options]) => {\n // @ts-ignore\n if (aggregate.values.length > 0 && !aggregate.values[0].groupBy) {\n return {\n operation: aggregate.operation,\n data: aggregate.values.map((value) => ({ ...value, series: options.ordinate.label }))\n };\n }\n const flattened = (\n aggregate.values as {\n key: ValueType;\n groupBy: {\n key: ValueType;\n value: ValueType;\n }[];\n }[]\n )\n .map((value) =>\n value.groupBy.map((groupBy) => ({\n key: value.key,\n series: groupBy.key,\n value: groupBy.value\n }))\n )\n .reduce((a, b) => [...a, ...b], []);\n return { operation: aggregate.operation, data: flattened };\n })\n );\n\n this.noData$ = this.aggregatedValues$.pipe(map(({ operation, data }) => data.length === 0));\n\n this.vegaLiteSpec$ = combineLatest([\n this.options$,\n this.attributeTypes$,\n this.aggregatedValues$,\n this.widgetSize$.pipe(debounceTime(100)),\n this.displayHeader$\n ]).pipe(\n map(([options, types, values, size, display]) => {\n const isCircular = [GraphType.CIRCULAR, GraphType.DONUT].includes(options.graph.type);\n const stacked = options.graph.type.startsWith('bar') ? !options.graph.stacked : options.graph.stacked;\n return mergeDeep(\n {\n $schema: 'https://vega.github.io/schema/vega-lite/v5.json',\n title: this.getTitle(options),\n width: 'container',\n height: (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT : 0),\n padding: 10,\n autosize: { type: 'fit', contains: 'padding' },\n data: { values: JSON.parse(JSON.stringify(values.data)) },\n layer: [\n {\n mark: {\n type: options.graph.type.split('-')[0] as 'arc' | 'line' | 'point' | 'bar' | 'area',\n point: options.graph.type.indexOf('point') >= 0,\n line: options.graph.type.indexOf('line') >= 0,\n innerRadius: options.graph.donutSize ?? 30\n },\n encoding: {\n x: !isCircular\n ? {\n field: 'key',\n title: options.abscissa.label,\n type: types.abscissa.vegaType,\n timeUnit:\n types.abscissa.vegaType === VegaType.TEMPORAL && options.abscissa.limit?.isTimeLimit\n ? options.abscissa.limit.interval\n : undefined,\n bin: options.graph.type.indexOf('histogram') >= 0,\n axis: {\n //format: types.abscissa.vegaType === VegaType.TEMPORAL ? '%Y-%B-%dT%H:%M:%S' : undefined,\n grid: false,\n ...WidgetAggregatedChartComponent.minTick(types.abscissa.fieldType),\n labelExpr: `height < 300 ? ${\n types.abscissa.vegaType === VegaType.TEMPORAL\n ? \"timeFormat(datum.value, '%Y-%B-%dT%H:%M:%S')\"\n : 'truncate(datum.value, 10)'\n } : ${\n types.abscissa.vegaType === VegaType.TEMPORAL\n ? \"timeFormat(datum.value, '%Y-%B-%dT%H:%M:%S')\"\n : 'datum.value'\n }`\n },\n scale: {\n // Force a false value here so that vega understands properly\n zero: !!options.abscissa.keep0\n //type: WidgetChartComponent.isTimeUnitUTC(variables[0]) ? 'utc' : undefined\n }\n }\n : undefined,\n y: !isCircular\n ? {\n field: 'value',\n title: options.ordinate.label,\n type: types.ordinate.vegaType,\n axis: {\n ...WidgetAggregatedChartComponent.minTick(types.ordinate.fieldType),\n ...this.setTickCount(values.data)\n },\n scale: {\n zero: types.ordinate.vegaType === VegaType.QUANTITATIVE ? !!options.ordinate.keep0 : false\n },\n ...(stacked ? { stack: true } : {})\n }\n : undefined,\n theta: isCircular ? { field: 'value', type: types.ordinate.vegaType } : undefined,\n color: {\n title: this.translateService.instant(\n options.groupBy ? '@pry.widget.chart.series' : '@pry.widget.chart.legendLabel'\n ),\n field: !isCircular ? 'series' : 'key',\n legend: options.graph.legend,\n scale: options.graph.legend ? { scheme: options.groupBy?.color ?? this.schemes[0].id } : undefined\n },\n xOffset: stacked && options.groupBy ? { field: 'series' } : undefined,\n tooltip: options.graph.tooltip\n ? options.groupBy\n ? [\n {\n field: 'key',\n type: types.abscissa.vegaType,\n title: options.abscissa.label,\n ...(types.abscissa.vegaType === 'temporal' ? { format: '%Y-%B-%dT%H:%M:%S' } : {})\n },\n { field: 'value', type: types.ordinate.vegaType, title: options.ordinate.label },\n {\n field: 'series',\n title: this.translateService.instant('@pry.widget.chart.series'),\n type: 'nominal'\n }\n ]\n : [\n {\n field: 'key',\n type: types.abscissa.vegaType,\n title: options.abscissa.label,\n ...(types.abscissa.vegaType === 'temporal' ? { format: '%Y-%B-%dT%H:%M:%S' } : {})\n },\n { field: 'value', type: types.ordinate.vegaType, title: options.ordinate.label }\n ]\n : undefined\n }\n }\n ],\n config: fontConfig('Ubuntu, sans-serif')\n } as any,\n options.additionalSpec\n );\n })\n );\n }\n\n ngAfterViewInit() {\n this.subscriptions.add(\n combineLatest([this.vegaLiteSpec$, this.trigger$]).subscribe(([spec, _]) => {\n if (this.vega) {\n this.view?.finalize();\n console.log(spec);\n embed(this.vega.nativeElement, JSON.parse(JSON.stringify(spec)), {\n actions: false,\n renderer: 'canvas',\n formatLocale: this.translateService.instantObject('@pry.widget.chart.numberLocale') as any,\n timeFormatLocale: this.translateService.instantObject('@pry.widget.chart.timeFormatLocale') as any\n }).then((result) => (this.view = result.view));\n } else {\n setTimeout(() => this.trigger$.next(), 100);\n }\n })\n );\n this.trigger$.next();\n }\n\n translateToVegaType(type?: FieldType, name?: string): VegaType {\n let idRegex = new RegExp(/_id|id_|_ID|ID_|_Id|Id_/, 'g');\n if (idRegex.test(name ?? '-------')) {\n return VegaType.ORDINAL;\n }\n\n switch (type) {\n case FieldType.DECIMAL:\n case FieldType.INTEGER:\n case FieldType.LONG:\n return VegaType.QUANTITATIVE;\n case FieldType.INSTANT:\n return VegaType.TEMPORAL;\n case FieldType.KEYWORD:\n case FieldType.STRING:\n return VegaType.NOMINAL;\n default:\n return VegaType.NOMINAL;\n }\n }\n\n static minTick(type: FieldType): { tickMinStep: number } | {} {\n switch (type) {\n case FieldType.INTEGER:\n case FieldType.LONG:\n return { tickMinStep: 1 };\n case FieldType.DECIMAL:\n case FieldType.INSTANT:\n case FieldType.KEYWORD:\n case FieldType.STRING:\n default:\n return {};\n }\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: {\n ...this.manifest,\n options: { ...this.optionsCopy$.getValue() }\n }\n });\n }\n\n openSettings() {\n (this.open$ as Subject<void>).next(undefined);\n }\n\n private getTitle(options: ChartAggregatedWidgetOptions) {\n return options.graph?.title ?? (options.abscissa.label ?? 'key') + ' / ' + (options.ordinate.label ?? 'value');\n }\n\n changeChartTitle($event: string) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value?.graph, title: $event }\n });\n }\n }\n\n changeType($event: GraphType) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value?.graph, type: $event }\n });\n if ([GraphType.CIRCULAR, GraphType.DONUT].includes($event)) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: undefined\n });\n }\n if ([GraphType.HISTOGRAM].includes($event)) {\n this.limitElements(true);\n }\n }\n }\n\n changeDonutSize($event: number) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value?.graph, donutSize: $event }\n });\n }\n }\n\n changeOperation($event: Operation) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, operation: $event }\n });\n if ($event === Operation.COUNT || $event === Operation.DISTINCT) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: {\n ...this.optionsCopy$.value?.ordinate,\n label: this.translateService.instant('@pry.widget.chart.operation.' + $event),\n attribute: undefined\n }\n });\n }\n setTimeout(() => this.triggerOrdinateAttributes$.next(), 10);\n }\n }\n\n changeAbscissa($event: string) {\n if ($event && this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, attribute: $event }\n });\n const attr = this.classes\n .map((clazz) => clazz.attributes)\n .reduce((a, b) => [...a, ...b], [])\n .find((attr) => attr.id === $event);\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, label: attr?.name ?? 'attr-not-found' }\n });\n\n this.copyAbscissaField = this.fields.find((field) => attr?.field === field.id);\n\n this.limitElements(!!this.optionsCopy$.value?.abscissa.limit);\n }\n }\n\n changeAbscissaLabel($event: string) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, label: $event }\n });\n }\n }\n\n changeOrdinate($event: any) {\n if ($event && this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, attribute: $event }\n });\n const attr = this.classes\n .map((clazz) => clazz.attributes)\n .reduce((a, b) => [...a, ...b], [])\n .find((attr) => attr.id === $event);\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, label: attr?.name ?? 'attr-not-found' }\n });\n\n this.copyOrdinateField = this.fields.find((field) => attr?.field === field.id);\n }\n }\n\n changeOrdinateLabel($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, label: $event }\n });\n }\n }\n\n changeKeep0Abscissa($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, keep0: $event }\n });\n }\n }\n\n changeKeep0Ordinate($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, keep0: $event }\n });\n }\n }\n\n limitElements($event: any) {\n if (this.optionsCopy$.value) {\n if ($event) {\n if (\n this.copyAbscissaField?.type !== FieldType.INSTANT &&\n this.optionsCopy$.value?.abscissa?.limit &&\n 'at' in this.optionsCopy$.value?.abscissa?.limit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: {\n at: this.optionsCopy$.value?.abscissa?.limit?.at ?? 3,\n others: false,\n order: 'asc',\n isTimeLimit: false\n }\n }\n });\n } else {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, limit: { interval: 'second', isTimeLimit: true } }\n });\n }\n } else {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, limit: undefined }\n });\n }\n }\n }\n\n changeLimit($event: any) {\n if (\n this.optionsCopy$.value &&\n this.optionsCopy$.value.abscissa.limit &&\n !this.optionsCopy$.value.abscissa.limit.isTimeLimit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: {\n ...this.optionsCopy$.value?.abscissa.limit,\n at: $event\n }\n }\n });\n }\n }\n\n changeLimitOthers($event: any) {\n if (\n this.optionsCopy$.value &&\n this.optionsCopy$.value.abscissa.limit &&\n !this.optionsCopy$.value.abscissa.limit.isTimeLimit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: {\n ...this.optionsCopy$.value?.abscissa.limit,\n others: $event\n }\n }\n });\n }\n }\n\n changeLimitOrder($event: any) {\n if (\n this.optionsCopy$.value &&\n this.optionsCopy$.value.abscissa.limit &&\n !this.optionsCopy$.value.abscissa.limit.isTimeLimit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: {\n ...this.optionsCopy$.value?.abscissa.limit,\n order: $event ? 'asc' : 'desc'\n }\n }\n });\n }\n }\n\n changeTimeLimit($event: any) {\n if (\n this.optionsCopy$.value &&\n this.optionsCopy$.value.abscissa.limit &&\n this.optionsCopy$.value.abscissa.limit.isTimeLimit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value.abscissa,\n limit: {\n ...this.optionsCopy$.value.abscissa.limit,\n interval: $event\n }\n }\n });\n }\n }\n\n toggleLegend($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value.graph, legend: $event }\n });\n }\n }\n\n toggleTooltip($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value?.graph, tooltip: $event }\n });\n }\n }\n\n toggleGroupBy($event: any) {\n if (this.optionsCopy$.value) {\n if ($event) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: { attribute: this.optionsCopy$.value?.groupBy?.attribute ?? '', color: this.schemes[0].id }\n });\n } else {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: undefined\n });\n }\n }\n }\n\n changeGroupBy($event: any) {\n if (typeof $event === 'string' && this.optionsCopy$.value && this.optionsCopy$.value.groupBy) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: {\n ...this.optionsCopy$.value?.groupBy,\n attribute: $event\n }\n });\n }\n }\n\n changeColorScheme($event: any) {\n if (this.optionsCopy$.value && this.optionsCopy$.value.groupBy) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: {\n attribute: this.optionsCopy$.value.groupBy?.attribute,\n color: $event\n }\n });\n }\n }\n\n setTickCount(data: any) {\n return Math.max(...data.map((val: any) => val.value)) < 3\n ? { tickCount: Math.max(...data.map((val: any) => val.value)) }\n : {};\n }\n\n scheme() {\n return vega.scheme(this.optionsCopy$.value?.groupBy?.color ?? '');\n }\n\n toggleStacked($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: {\n ...this.optionsCopy$.value?.graph,\n stacked: $event\n }\n });\n }\n }\n\n override toImage(): Promise<string> {\n return new Promise((resolve, reject) => {\n resolve(this.vega.nativeElement.querySelectorAll('canvas')[0].toDataURL('image/png'));\n });\n }\n}\n","<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 >\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 <div class=\"no-result\" *ngIf=\"(isChartValid$ | async) === false\">\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 </div>\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.chooseParameters' | i18n }}\n </p>\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\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.noData' | i18n }}\n </p>\n </div>\n </ng-container>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n chart: {\n numberLocale: {\n decimal: '.',\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n },\n timeFormatLocale: {\n dateTime: '%Y %B %d %H:%M:%S',\n date: '%d/%m/%Y',\n time: '%H:%M:%S',\n periods: ['AM', 'PM'],\n days: ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'],\n shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],\n shortMonths: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n },\n operation: {\n none: 'Attribute value',\n count: 'Count',\n sum: 'Sum',\n cardinality: 'Distinct elements',\n avg: 'Average',\n median: 'Median',\n q1: 'Lower quartile',\n q3: 'Upper Quartile',\n min: 'Minimum',\n max: 'Maximum',\n percent: 'Percent',\n title: 'Operation'\n },\n chooseParameters: 'Please select parameters to display chart.',\n series: 'Series',\n type: 'Chart type',\n title: 'Chart title',\n graphType: {\n 'area-default': 'Area',\n 'area-with-lines-and-points': 'Curve with lines and points',\n 'bar-default': 'Bar',\n 'arc-default': 'Circular',\n 'line-default': 'Curve',\n 'line-with-points': 'Curve with points',\n 'arc-donut': 'Donut',\n 'bar-histogram': 'Histogram',\n 'point-default': 'Points'\n },\n donutSize: 'Donut inner radius',\n abscissa: 'Abscissa',\n ordinate: 'Ordinate',\n dataLabel: 'Data label',\n origin: 'Axis containing 0',\n limit: 'Limit elements',\n asc: 'Biggest elements',\n desc: 'Smallest elements',\n timeInterval: 'Time interval',\n others: 'Regroup remaining values in category \"Other\"',\n order: 'Component selection',\n groupBy: 'Group by',\n groupAttr: 'Grouping attribute',\n colorScheme: 'Color scheme',\n legend: 'Display legend',\n legendLabel: 'Legend',\n tooltip: 'Display tooltip',\n stacked: 'Vertical stacking',\n noData: 'No data to display',\n scheme: {\n accent: '8 colors n°1',\n set2: '8 colors n°2',\n dark2: '8 dark colors',\n pastel2: '8 pastel colors',\n set1: '9 colors',\n pastel1: '9 pastel colors',\n category10: '10 colors',\n tableau10: '10 different colors',\n set3: '12 colors',\n paired: '12 different colors',\n tableau20: '20 colors',\n category20: '20 colors with 2 shades',\n category20b: '20 colors with 4 shades n°1',\n category20c: '20 colors with 4 shades n°2',\n 'KO/W/OK': 'Traffic light'\n },\n time: {\n second: 'Second',\n minute: 'Minute',\n hour: 'Hour',\n day: 'Day',\n week: 'Week',\n month: 'Month',\n quarter: 'Quarter',\n year: 'Year'\n }\n }\n },\n message: {\n 'backend-only-1-datasource': 'Aggregation service can only manage the first datasource linked to the widget.',\n 'cannot-aggregate-virtual-ds':\n 'Aggregation service cannot perform aggregation on virtual datasets such as current search.'\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n chart: {\n numberLocale: {\n decimal: '.',\n thousands: ' ',\n grouping: [3],\n currency: ['€', '']\n },\n timeFormatLocale: {\n dateTime: '%Y %B %d %H:%M:%S',\n date: '%d/%m/%Y',\n time: '%H:%M:%S',\n periods: ['AM', 'PM'],\n days: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],\n shortDays: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n months: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],\n shortMonths: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n },\n operation: {\n none: \"Valeur de l'attribut\",\n count: 'Nombre',\n sum: 'Somme',\n cardinality: \"Nombre d'éléments distincts\",\n avg: 'Moyenne',\n median: 'Médiane',\n q1: 'Quartile inférieur',\n q3: 'Quartile supérieur',\n min: 'Minimum',\n max: 'Maximum',\n percent: 'Pourcentage',\n title: 'Opération'\n },\n chooseParameters: \"Merci de sélectionner les paramètres afin d'afficher le graphique\",\n series: 'Regroupement',\n type: 'Type de graphique',\n title: 'Titre du graphique',\n graphType: {\n 'area-default': 'Aire',\n 'area-with-lines-and-points': 'Aire avec lignes et marques',\n 'bar-default': 'Barres',\n 'arc-default': 'Circulaire',\n 'line-default': 'Courbe',\n 'line-with-points': 'Courbe avec marques',\n 'arc-donut': 'Diagramme anneau',\n 'bar-histogram': 'Histogramme',\n 'point-default': 'Points'\n },\n donutSize: \"Diamètre intérieur de l'anneau\",\n abscissa: 'Abscisse',\n ordinate: 'Ordonnée',\n dataLabel: 'Libellé de la donnée',\n origin: 'Axe contenant 0',\n limit: 'Limiter les éléments',\n asc: 'Aux plus grands éléments',\n desc: 'Aux plus petits éléments',\n timeInterval: 'Intervalle de temps',\n others: 'Regrouper les valeurs restantes dans une catégorie \"Autre\"',\n order: 'Choix des éléments',\n groupBy: 'Regroupement',\n groupAttr: 'Attribut de regroupement',\n colorScheme: 'Schéma de couleur',\n legend: 'Afficher la légende',\n legendLabel: 'Légende',\n tooltip: 'Affichage des info-bulles',\n stacked: 'Superposition verticale',\n noData: 'Aucune donnée à afficher',\n scheme: {\n accent: '8 couleurs n°1',\n set2: '8 couleurs n°2',\n dark2: '8 couleurs sombre',\n pastel2: '8 couleurs pastel',\n set1: '9 couleurs',\n pastel1: '9 couleurs pastel',\n category10: '10 couleurs',\n tableau10: '10 couleurs différentes',\n set3: '12 couleurs',\n paired: '12 couleurs différentes',\n tableau20: '20 couleurs',\n category20: '20 couleurs avec 2 nuances',\n category20b: '20 couleurs avec 4 nuances n°1',\n category20c: '20 couleurs avec 4 nuances n°2',\n 'KO/W/OK': 'Feu de signalisation'\n },\n time: {\n second: 'Seconde',\n minute: 'Minute',\n hour: 'Heure',\n day: 'Jour',\n week: 'Semaine',\n month: 'Mois',\n quarter: 'Trimestre',\n year: 'Année'\n }\n }\n },\n message: {\n 'backend-only-1-datasource':\n 'Le service aggregation ne peut prendre en compte que la première datasource associée au widget.',\n 'cannot-aggregate-virtual-ds':\n 'Le service aggregation ne peut pas agréger sur des dataset virtuels tels que la recherche courante.'\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryEditInputModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryRangeModule,\n PrySelectModule,\n PrySortModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetAggregatedChartComponent } from './component/widget-aggregated-chart.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryAggregationService } from './service/base-aggregation.service';\nimport { PryWidgetAggregatedChartCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [WidgetAggregatedChartComponent, PryWidgetAggregatedChartCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryEditInputModule,\n PryI18nModule,\n PryRangeModule,\n PrySortModule\n ],\n exports: [WidgetAggregatedChartComponent],\n providers: [PryAggregationService]\n})\nexport class WidgetAggregatedChartModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-aggregated-chart', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-aggregated-chart', enTranslations);\n }\n\n override getComponent() {\n return WidgetAggregatedChartComponent as Type<BaseWidgetComponent>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n AtLimit,\n ChartAggregatedWidgetOptions,\n ClassSelectors,\n DashboardSelectors,\n Item,\n ItemUtils,\n Operation,\n ResultsetUtils,\n TimeLimit,\n ValueType\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { AggregationResult, PryAggregationService } from './base-aggregation.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PryFrontendAggregationService extends PryAggregationService {\n constructor(private store: Store) {\n super();\n }\n\n // @ts-ignore\n override aggregate(datasource: string[], options: ChartAggregatedWidgetOptions): Observable<AggregationResult> {\n return combineLatest([\n this.store.select(DashboardSelectors.resultSets),\n this.store.select(ClassSelectors.classes)\n ]).pipe(\n map(([resultSets, classes]) => {\n const abscissa = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.abscissa.attribute))\n .find((attr) => !!attr)?.name;\n const ordinate = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.ordinate.attribute))\n .find((attr) => !!attr)?.name;\n if (!abscissa || !ordinate) {\n throw new Error('abscissaorodinateinvalid');\n }\n let data = datasource.map((rsName) => resultSets[rsName ?? '']).filter((rsName) => !!rsName);\n const resultSet = data.reduce((rs1, rs2) => ResultsetUtils.mergeResultSets(rs1, rs2), {\n items: {},\n relations: [],\n merged: data.length\n });\n let items: Item[] = Object.keys(resultSet.items)\n .map((classId) => resultSet.items[classId])\n .reduce((prev, curr) => [...prev, ...curr], []) as Item[];\n if (!!options.groupBy) {\n const groupBy = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.groupBy?.attribute))\n .find((attr) => !!attr)?.name;\n if (!groupBy) {\n throw new Error('groupByAttributeisinvalid');\n }\n const itemsGrouped: { [key: string | number]: Item[] } = this.groupBy(items, groupBy);\n const values: { key: ValueType; groupBy: {}[] }[] = [];\n Object.keys(itemsGrouped).forEach((key) => {\n values.push({\n key,\n groupBy: this.getValueFromOperation(\n itemsGrouped[key],\n options.ordinate.operation,\n abscissa,\n ordinate,\n options.abscissa.limit\n )\n });\n });\n return { operation: options.ordinate.operation, values: values } as AggregationResult;\n }\n const values = this.getValueFromOperation(\n items,\n options.ordinate.operation,\n abscissa,\n ordinate,\n options.abscissa.limit\n );\n return { operation: options.ordinate.operation, values: values } as AggregationResult;\n })\n );\n }\n\n getValueFromOperation(\n items: Item[],\n operation: Operation,\n abscissa: string,\n ordinate: string,\n limit?: AtLimit | TimeLimit\n ) {\n let result: { key: ValueType; value: ValueType }[] = [];\n const groupByAbscissa = this.groupBy(items, abscissa);\n groupByAbscissa.map((test: any) => console.log(groupByAbscissa[test]));\n switch (operation) {\n case Operation.COUNT:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: groupByAbscissa[key].length\n }))\n );\n break;\n case Operation.SUM:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getSum(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n case Operation.DISTINCT:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getDistinct(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n case Operation.AVERAGE:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getAverage(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n case Operation.MEDIAN:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getQuartile(groupByAbscissa[key], ordinate, 0.5)\n }))\n );\n break;\n case Operation.Q1:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getQuartile(groupByAbscissa[key], ordinate, 0.25)\n }))\n );\n break;\n case Operation.Q3:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getQuartile(groupByAbscissa[key], ordinate, 0.75)\n }))\n );\n break;\n case Operation.MIN:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getMin(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n default:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getMax(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n }\n if (limit) {\n result = this.formatByLimit(result, limit);\n }\n return result;\n }\n\n groupBy(items: Item[], attribute: string) {\n let distincts: any = [];\n items.forEach((item: Item) => {\n let value = this.getValueFromAttribute(item, attribute);\n if (distincts[value.value as string | number]) {\n distincts[value.value as string | number].push(item);\n } else {\n distincts[value.value as string | number] = [item];\n }\n });\n return distincts;\n }\n\n getValueFromAttribute(item: Item, attribute: string) {\n let value = ItemUtils.getAttributeValue(item, attribute);\n return Array.isArray(value) ? value[0] : value;\n }\n\n getSum(items: Item[], attribute: string) {\n let sum: number = 0;\n items.forEach((item) => {\n sum += this.getValueFromAttribute(item, attribute).value as number;\n });\n return sum;\n }\n\n getMin(items: Item[], attribute: string) {\n const result = items.reduce((prev: any, curr: any) => {\n const prevValue = this.getValueFromAttribute(prev, attribute).value;\n const currValue = this.getValueFromAttribute(curr, attribute).value;\n return prevValue < currValue ? prev : curr;\n });\n return this.getValueFromAttribute(result, attribute).value;\n }\n\n getMax(items: Item[], attribute: string) {\n const result = items.reduce((prev: any, curr: any) => {\n const prevValue = this.getValueFromAttribute(prev, attribute).value;\n const currValue = this.getValueFromAttribute(curr, attribute).value;\n return prevValue > currValue ? prev : curr;\n });\n return this.getValueFromAttribute(result, attribute).value;\n }\n\n getAverage(items: Item[], attribute: string) {\n const allValues = items.map((item) => this.getValueFromAttribute(item, attribute).value as number);\n return allValues.reduce((acc, val) => acc + val, 0) / allValues.length;\n }\n\n getDistinct(items: Item[], attribute: string) {\n return [...new Set(items.map((item) => this.getValueFromAttribute(item, attribute).value))].length;\n }\n\n getQuartile(items: Item[], attribute: string, q: number) {\n const allValues = items.map((item) => this.getValueFromAttribute(item, attribute).value as number);\n const allValuesSorted = allValues.sort((a: number, b: number) => a - b);\n\n let pos = (allValuesSorted.length - 1) * q;\n if (pos % 1 === 0) {\n return allValuesSorted[pos];\n }\n\n pos = Math.floor(pos);\n if (allValuesSorted[pos + 1] !== undefined) {\n return (allValuesSorted[pos] + allValuesSorted[pos + 1]) / 2;\n }\n\n return allValuesSorted[pos];\n }\n\n getPercentile(items: Item[], attribute: string, q: number) {\n const allValues = items.map((item) => this.getValueFromAttribute(item, attribute).value as number);\n const allValuesSorted = allValues.sort((a: number, b: number) => a - b);\n return (\n (100 * allValuesSorted.reduce((acc, v) => acc + (v < q ? 1 : 0) + (v === q ? 0.5 : 0), 0)) /\n allValuesSorted.length\n );\n }\n\n formatByLimit(data: { key: ValueType; value: ValueType }[], limit: AtLimit | TimeLimit) {\n if (!limit.isTimeLimit) {\n data\n .sort((a, b) => (limit.order === 'asc' ? (a.value > b.value ? 1 : -1) : a.value < b.value ? 1 : -1))\n .splice(limit.at);\n return data;\n }\n return data;\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ChartAggregatedWidgetOptions,\n Class,\n ClassSelectors,\n ConfigSelectors,\n DashboardSelectors,\n DEFAULT_NAMED_QUERY_ID,\n EXPLORE_NAMED_QUERY_ID,\n Field,\n FieldSelectors,\n FilterContext,\n Operation,\n PryI18nService,\n PrySnackbarService,\n ResultSets,\n SearchService\n} from '@provoly/dashboard';\nimport { map, Observable, of, switchMap } from 'rxjs';\nimport { AggregationResult, PryAggregationService } from './base-aggregation.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PryBackendAggregationService extends PryAggregationService {\n private rs: ResultSets = {};\n private classes: Class[] = [];\n private fields: Field[] = [];\n private filters: { [datasource: string]: FilterContext[] } = {};\n\n constructor(\n private store: Store,\n private snackBar: PrySnackbarService,\n private translateService: PryI18nService,\n private httpClient: HttpClient,\n private searchService: SearchService\n ) {\n super();\n\n this.store.select(DashboardSelectors.resultSets).subscribe((rs) => (this.rs = rs as ResultSets));\n this.store.select(ClassSelectors.classes).subscribe((classes) => (this.classes = classes));\n this.store.select(FieldSelectors.fields).subscribe((fields) => (this.fields = fields));\n this.store.select(DashboardSelectors.datasourceFilters).subscribe((filters) => (this.filters = filters));\n }\n\n override aggregate(datasources: string[], options: ChartAggregatedWidgetOptions): Observable<AggregationResult> {\n const targetDatasource = datasources.find((ds) => ![DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID].includes(ds));\n\n if (datasources.length > 1) {\n this.snackBar.open({\n type: 'warning',\n message: this.translateService.instant('@pry.message.backend-only-1-datasource'),\n timeout: 4000\n });\n }\n\n if (datasources.includes(DEFAULT_NAMED_QUERY_ID) || datasources.includes(EXPLORE_NAMED_QUERY_ID)) {\n this.snackBar.open({\n type: 'warning',\n message: this.translateService.instant('@pry.message.cannot-aggregate-virtual-ds'),\n timeout: 4000\n });\n }\n\n if (!options.abscissa || !options.ordinate) {\n console.warn('Abscissa and ordinate must both be defined');\n return of({ operation: 'none', values: [] } as AggregationResult);\n }\n\n if (!targetDatasource) {\n console.warn('Aggregation needs a target datasource.');\n return of({ operation: options.ordinate.operation, values: [] } as AggregationResult);\n }\n\n let params = new HttpParams();\n if (options.abscissa.attribute) {\n params = params.set('aggregatedBy', options.abscissa.attribute);\n } else {\n console.warn('Aggregation needs an aggregatedBy member.');\n return of({ operation: options.ordinate.operation, values: [] } as AggregationResult);\n }\n if (options.abscissa.limit) {\n if (options.abscissa.limit.isTimeLimit) {\n params = params.set('dateInterval', options.abscissa.limit.interval);\n } else {\n params = params.set('interval', options.abscissa.limit.at);\n params = params.set('limitOrder', options.abscissa.limit.order);\n params = params.set('limitOthers', options.abscissa.limit.others);\n }\n }\n const operation = options.ordinate.operation?.replace(/^none$/, Operation.SUM);\n params = params.set('operation', operation);\n if (!!options.ordinate.attribute) {\n params = params.set('valueField', options.ordinate.attribute);\n }\n if (options.groupBy) {\n params = params.set('groupBy', options.groupBy.attribute);\n }\n params = this.searchService.getItemsFilter(targetDatasource, params);\n\n return this.store.select(ConfigSelectors.dataUrl).pipe(\n switchMap((url) =>\n this.httpClient\n .get<AggregationResult>(`${url}/data-sources/id/${targetDatasource}/items/aggregate`, {\n params\n })\n .pipe(\n map((result) => ({\n ...result,\n operation: options.ordinate.operation === Operation.NONE ? Operation.NONE : result.operation\n }))\n )\n )\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.PryAggregationService","i7.PryWidgetAggregatedChartCssComponent","i1","map"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-widgets-widget-aggregated-chart.mjs","sources":["../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/service/base-aggregation.service.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/style/css.component.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.html","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/i18n/en.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/i18n/fr.translations.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/widget-aggregated-chart.module.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/service/frontend-aggregation.service.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/service/backend-aggregation.service.ts","../../../../projects/provoly/dashboard/widgets/widget-aggregated-chart/provoly-dashboard-widgets-widget-aggregated-chart.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { ChartAggregatedWidgetOptions, Operation, ValueType } from '@provoly/dashboard';\nimport { Observable } from 'rxjs';\n\nexport interface AggregationResult {\n operation: Operation;\n values: (\n | {\n key: ValueType;\n value: ValueType;\n }\n | {\n key: ValueType;\n groupBy: {\n key: ValueType;\n value: ValueType;\n }[];\n }\n )[];\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PryAggregationService {\n aggregate(datasource: string[], options: ChartAggregatedWidgetOptions): Observable<AggregationResult> {\n throw new Error(\n 'You must declare the use of an aggregation service. Add PryBackendAggregationService, PryFrontendAggregationService or a custom service'\n );\n }\n}\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'pry-widget-aggregated-chart-css',\n template: '',\n styleUrls: ['./_o-widget-chart.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class PryWidgetAggregatedChartCssComponent {}\n","import { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n Attribute,\n ChartAggregatedWidgetOptions,\n Class,\n ClassSelectors,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n GraphType,\n Operation,\n PryI18nService,\n ValueType,\n VegaColorType,\n VegaType,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport { BehaviorSubject, combineLatest, Observable, Subject, switchMap, withLatestFrom } from 'rxjs';\nimport { debounceTime, filter, map } from 'rxjs/operators';\nimport { View } from 'vega';\nimport embed, { vega } from 'vega-embed';\nimport { mergeDeep, TopLevelSpec } from 'vega-lite';\nimport { fontConfig } from 'vega-lite/build/src/config';\nimport { PryAggregationService } from '../service/base-aggregation.service';\n\nexport type RadarValue = {\n category: number;\n key: string;\n value: number;\n};\n\nvega.scheme('KO/W/OK', ['#C04D3F', '#FD9843', '#9ABE29']);\n\n@Component({\n selector: 'pry-widget-aggregated-chart',\n templateUrl: './widget-aggregated-chart.component.html'\n})\nexport class WidgetAggregatedChartComponent extends DataWidgetComponent implements AfterViewInit {\n @ViewChild('vega') vega!: ElementRef;\n options$: Observable<ChartAggregatedWidgetOptions>;\n optionsCopy$ = new BehaviorSubject<ChartAggregatedWidgetOptions | null>(null);\n view?: View;\n trigger$ = new Subject<void>();\n vegaLiteSpec$: Observable<TopLevelSpec>;\n fields$: Observable<Field[]>;\n classes$: Observable<Class[]>;\n attributeTypes$: Observable<{\n ordinate: { vegaType: VegaType; fieldType: any; name: string };\n abscissa: { vegaType: VegaType; fieldType: any; name: string };\n groupBy: { vegaType?: VegaType; fieldType?: any; name: string };\n }>;\n aggregatedValues$: Observable<{ data: any; operation: any }>;\n WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n GraphType = GraphType;\n Operation = Operation;\n isChartValid$: Observable<boolean>;\n typeOptions: { id: string; label: string }[] = [];\n operations$: Observable<{ id: string; label: string }[]>;\n abscissaAttributes$: Observable<Attribute[]>;\n classes: Class[] = [];\n fields: Field[] = [];\n ordinateAttributes$: Observable<Attribute[]>;\n triggerOrdinateAttributes$ = new Subject<void>();\n copyAbscissaField?: Field;\n copyOrdinateField?: Field;\n schemes: { id: string }[] = [];\n noData$: Observable<boolean>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n\n constructor(\n store: Store<any>,\n private translateService: PryI18nService,\n el: ElementRef,\n private aggregationService: PryAggregationService\n ) {\n super(store, el);\n this.schemes = Object.values(VegaColorType).map((id) => ({ id }));\n this.typeOptions = Object.values(GraphType)\n .map((v) => ({\n id: v,\n label: this.translateService.instant('@pry.widget.chart.graphType.' + v)\n }))\n .sort((a, b) => a.label.localeCompare(b.label));\n\n this.options$ = this.manifest$.pipe(\n map(\n (manifest) =>\n mergeDeep(\n {\n graph: { type: GraphType.BAR, tooltip: true, legend: false },\n abscissa: { keep0: true },\n ordinate: { keep0: true }\n } as ChartAggregatedWidgetOptions,\n (manifest.options ?? {}) as ChartAggregatedWidgetOptions\n ) as ChartAggregatedWidgetOptions\n )\n );\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy$.next(JSON.parse(JSON.stringify(options)));\n });\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.classes$ = this.store.select(ClassSelectors.classes);\n\n this.operations$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(\n map(([rs, classes, fields]) =>\n classes\n .filter((clazz) => Object.keys(rs.items).includes(clazz.id))\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field;\n });\n return !!field && [FieldType.INTEGER, FieldType.DECIMAL, FieldType.LONG].includes(field.type);\n })\n )\n .reduce((a, b) => [...a, ...b], [])\n .filter((attr) => !!attr)\n ),\n map((attributes) =>\n (attributes.length > 0 ? Object.values(Operation) : [Operation.COUNT, Operation.DISTINCT, Operation.NONE])\n .map((v) => ({\n id: v,\n label: this.translateService.instant('@pry.widget.chart.operation.' + v)\n }))\n .sort((a, b) => a.label.localeCompare(b.label))\n )\n );\n\n this.subscriptions.add(this.fields$.subscribe((fields) => (this.fields = fields)));\n this.subscriptions.add(this.classes$.subscribe((classes) => (this.classes = classes)));\n\n this.abscissaAttributes$ = combineLatest([this.classes$, this.fields$, this.resultSet$, this.optionsCopy$]).pipe(\n map(([classes, fields, rs, optionCopy]) =>\n classes\n .filter((clazz) => Object.keys(rs.items).includes(clazz.id))\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field;\n });\n return (\n !!field &&\n field.type !== FieldType.RAW &&\n field.type !== FieldType.STRING &&\n (optionCopy?.graph.type !== GraphType.HISTOGRAM || field.type !== FieldType.KEYWORD)\n );\n })\n )\n .reduce((a, b) => [...a, ...b], [])\n )\n );\n\n this.ordinateAttributes$ = combineLatest([\n this.classes$,\n this.fields$,\n this.resultSet$,\n this.triggerOrdinateAttributes$\n ]).pipe(\n map(([classes, fields, rs]) =>\n classes\n .filter((clazz) => Object.keys(rs.items).includes(clazz.id))\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field;\n });\n if (\n this.optionsCopy$.value &&\n [\n Operation.MAX,\n Operation.MIN,\n Operation.SUM,\n Operation.Q1,\n Operation.Q3,\n Operation.AVERAGE,\n Operation.MEDIAN,\n Operation.NONE\n ].includes(this.optionsCopy$.value.ordinate.operation)\n ) {\n return (\n !!field &&\n [FieldType.INTEGER, FieldType.INSTANT, FieldType.LONG, FieldType.DECIMAL].includes(field.type)\n );\n }\n return !!field && field.type !== FieldType.RAW && field.type !== FieldType.STRING;\n })\n )\n .reduce((a, b) => [...a, ...b], [])\n )\n );\n\n this.isChartValid$ = combineLatest([this.options$, this.abscissaAttributes$, this.ordinateAttributes$]).pipe(\n map(([options, abscissaAttrs, ordinateAttrs]) => {\n return (\n !!options.abscissa.attribute &&\n abscissaAttrs.map((attr) => attr.id).includes(options.abscissa.attribute) &&\n (options.ordinate.attribute\n ? ordinateAttrs.map((attr) => attr.id).includes(options.ordinate.attribute)\n : true)\n );\n })\n );\n\n this.attributeTypes$ = combineLatest([this.options$, this.fields$, this.classes$]).pipe(\n filter(([options, fields, classes]) => !!options.abscissa && !!options.ordinate),\n map(([options, fields, classes]) => {\n const abscissa = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.abscissa.attribute))\n .find((attr) => !!attr);\n const ordinate = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.ordinate.attribute))\n .find((attr) => !!attr);\n const groupBy = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.groupBy?.attribute))\n .find((attr) => !!attr);\n const abscissaFieldType = fields.find((field) => field.id === abscissa?.field)?.type ?? FieldType.STRING;\n const ordinateFieldType = fields.find((field) => field.id === ordinate?.field)?.type ?? FieldType.STRING;\n const groupByFieldType = fields.find((field) => field.id === groupBy?.field)?.type ?? FieldType.STRING;\n return {\n abscissa: {\n fieldType: abscissaFieldType,\n vegaType: this.translateToVegaType(abscissaFieldType, abscissa?.name ?? ''),\n name: abscissa?.name ?? ''\n },\n ordinate: {\n fieldType: ordinateFieldType,\n vegaType:\n options.ordinate.operation === Operation.COUNT || options.ordinate.operation === Operation.DISTINCT\n ? VegaType.QUANTITATIVE\n : this.translateToVegaType(ordinateFieldType, ordinate?.name ?? ''),\n name: ordinate?.name ?? ''\n },\n groupBy: {\n fieldType: groupByFieldType,\n vegaType: this.translateToVegaType(groupByFieldType, groupBy?.name),\n name: groupBy?.name ?? ''\n }\n };\n })\n );\n\n this.aggregatedValues$ = combineLatest([this.datasourceIds$, this.options$, this.resultSet$]).pipe(\n switchMap(([datasources, options]) => this.aggregationService.aggregate(datasources, options)),\n debounceTime(100),\n withLatestFrom(this.options$),\n map(([aggregate, options]) => {\n // @ts-ignore\n if (aggregate.values.length > 0 && !aggregate.values[0].groupBy) {\n return {\n operation: aggregate.operation,\n data: aggregate.values.map((value) => ({ ...value, series: options.ordinate.label }))\n };\n }\n const flattened = (\n aggregate.values as {\n key: ValueType;\n groupBy: {\n key: ValueType;\n value: ValueType;\n }[];\n }[]\n )\n .map((value) =>\n value.groupBy.map((groupBy) => ({\n key: value.key,\n series: groupBy.key,\n value: groupBy.value\n }))\n )\n .reduce((a, b) => [...a, ...b], []);\n return { operation: aggregate.operation, data: flattened };\n })\n );\n\n this.noData$ = this.aggregatedValues$.pipe(map(({ operation, data }) => data.length === 0));\n\n this.vegaLiteSpec$ = combineLatest([\n this.options$,\n this.attributeTypes$,\n this.aggregatedValues$,\n this.widgetSize$.pipe(debounceTime(100)),\n this.displayHeader$\n ]).pipe(\n map(([options, types, values, size, display]) => {\n const isCircular = [GraphType.CIRCULAR, GraphType.DONUT].includes(options.graph.type);\n const stacked = options.graph.type.startsWith('bar') ? !options.graph.stacked : options.graph.stacked;\n const legendTitle = this.translateService.instant(\n options.groupBy ? types.groupBy.name ?? '' : '@pry.widget.chart.legendLabel'\n );\n return mergeDeep(\n {\n $schema: 'https://vega.github.io/schema/vega-lite/v5.json',\n title: this.getTitle(options),\n width: 'container',\n height: (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT : 0),\n padding: 10,\n autosize: { type: 'fit', contains: 'padding' },\n data: { values: JSON.parse(JSON.stringify(values.data)) },\n layer: [\n {\n mark: {\n type: options.graph.type.split('-')[0] as 'arc' | 'line' | 'point' | 'bar' | 'area',\n point: options.graph.type.indexOf('point') >= 0,\n line: options.graph.type.indexOf('line') >= 0,\n innerRadius: options.graph.donutSize ?? 30\n },\n encoding: {\n x: !isCircular\n ? {\n field: 'key',\n title: options.abscissa.label,\n type: types.abscissa.vegaType,\n timeUnit:\n types.abscissa.vegaType === VegaType.TEMPORAL && options.abscissa.limit?.isTimeLimit\n ? options.abscissa.limit.interval\n : undefined,\n bin: options.graph.type.indexOf('histogram') >= 0,\n axis: {\n //format: types.abscissa.vegaType === VegaType.TEMPORAL ? '%Y-%B-%dT%H:%M:%S' : undefined,\n grid: false,\n ...WidgetAggregatedChartComponent.minTick(types.abscissa.fieldType),\n labelExpr: `height < 300 ? ${\n types.abscissa.vegaType === VegaType.TEMPORAL\n ? \"timeFormat(datum.value, '%Y-%B-%dT%H:%M:%S')\"\n : 'truncate(datum.value, 10)'\n } : ${\n types.abscissa.vegaType === VegaType.TEMPORAL\n ? \"timeFormat(datum.value, '%Y-%B-%dT%H:%M:%S')\"\n : 'datum.value'\n }`\n },\n scale: {\n // Force a false value here so that vega understands properly\n zero: !!options.abscissa.keep0\n //type: WidgetChartComponent.isTimeUnitUTC(variables[0]) ? 'utc' : undefined\n }\n }\n : undefined,\n y: !isCircular\n ? {\n field: 'value',\n title: options.ordinate.label,\n type: types.ordinate.vegaType,\n axis: {\n ...WidgetAggregatedChartComponent.minTick(types.ordinate.fieldType),\n ...this.setTickCount(values.data)\n },\n scale: {\n zero: types.ordinate.vegaType === VegaType.QUANTITATIVE ? !!options.ordinate.keep0 : false\n },\n ...(stacked ? { stack: true } : {})\n }\n : undefined,\n theta: isCircular ? { field: 'value', type: types.ordinate.vegaType } : undefined,\n color: {\n title: legendTitle,\n field: !isCircular ? 'series' : 'key',\n legend: options.graph.legend,\n scale: options.graph.legend ? { scheme: options.groupBy?.color ?? this.schemes[0].id } : undefined\n },\n xOffset: stacked && options.groupBy ? { field: 'series' } : undefined,\n tooltip: options.graph.tooltip\n ? options.groupBy\n ? [\n {\n field: 'key',\n type: types.abscissa.vegaType,\n title: options.abscissa.label,\n ...(types.abscissa.vegaType === 'temporal' ? { format: '%Y-%B-%dT%H:%M:%S' } : {})\n },\n { field: 'value', type: types.ordinate.vegaType, title: options.ordinate.label },\n {\n field: 'series',\n title: legendTitle,\n type: 'nominal'\n }\n ]\n : [\n {\n field: 'key',\n type: types.abscissa.vegaType,\n title: options.abscissa.label,\n ...(types.abscissa.vegaType === 'temporal' ? { format: '%Y-%B-%dT%H:%M:%S' } : {})\n },\n { field: 'value', type: types.ordinate.vegaType, title: options.ordinate.label }\n ]\n : undefined\n }\n }\n ],\n config: fontConfig('Ubuntu, sans-serif')\n } as any,\n options.additionalSpec\n );\n })\n );\n }\n\n ngAfterViewInit() {\n this.subscriptions.add(\n combineLatest([this.vegaLiteSpec$, this.trigger$]).subscribe(([spec, _]) => {\n if (this.vega) {\n this.view?.finalize();\n console.log(spec);\n embed(this.vega.nativeElement, JSON.parse(JSON.stringify(spec)), {\n actions: false,\n renderer: 'canvas',\n formatLocale: this.translateService.instantObject('@pry.widget.chart.numberLocale') as any,\n timeFormatLocale: this.translateService.instantObject('@pry.widget.chart.timeFormatLocale') as any\n })\n .then((result) => (this.view = result.view))\n .catch((err) => console.error('Cannot display chart', err));\n } else {\n setTimeout(() => this.trigger$.next(), 100);\n }\n })\n );\n this.trigger$.next();\n }\n\n translateToVegaType(type?: FieldType, name?: string): VegaType {\n let idRegex = new RegExp(/_id|id_|_ID|ID_|_Id|Id_/, 'g');\n if (idRegex.test(name ?? '-------')) {\n return VegaType.ORDINAL;\n }\n\n switch (type) {\n case FieldType.DECIMAL:\n case FieldType.INTEGER:\n case FieldType.LONG:\n return VegaType.QUANTITATIVE;\n case FieldType.INSTANT:\n return VegaType.TEMPORAL;\n case FieldType.KEYWORD:\n case FieldType.STRING:\n return VegaType.NOMINAL;\n default:\n return VegaType.NOMINAL;\n }\n }\n\n static minTick(type: FieldType): { tickMinStep: number } | {} {\n switch (type) {\n case FieldType.INTEGER:\n case FieldType.LONG:\n return { tickMinStep: 1 };\n case FieldType.DECIMAL:\n case FieldType.INSTANT:\n case FieldType.KEYWORD:\n case FieldType.STRING:\n default:\n return {};\n }\n }\n\n emitManifest() {\n this.manifestModified.emit({\n widgetIndex: this.widgetIndex,\n manifest: {\n ...this.manifest,\n options: { ...this.optionsCopy$.getValue() }\n }\n });\n }\n\n openSettings() {\n (this.open$ as Subject<void>).next(undefined);\n }\n\n private getTitle(options: ChartAggregatedWidgetOptions) {\n return options.graph?.title ?? (options.abscissa.label ?? 'key') + ' / ' + (options.ordinate.label ?? 'value');\n }\n\n changeChartTitle($event: string) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value?.graph, title: $event }\n });\n }\n }\n\n changeType($event: GraphType) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value?.graph, type: $event }\n });\n if ([GraphType.CIRCULAR, GraphType.DONUT].includes($event)) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: undefined\n });\n }\n if ([GraphType.HISTOGRAM].includes($event)) {\n this.limitElements(true);\n }\n }\n }\n\n changeDonutSize($event: number) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value?.graph, donutSize: $event }\n });\n }\n }\n\n changeOperation($event: Operation) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, operation: $event }\n });\n if ($event === Operation.COUNT || $event === Operation.DISTINCT) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: {\n ...this.optionsCopy$.value?.ordinate,\n label: this.translateService.instant('@pry.widget.chart.operation.' + $event),\n attribute: undefined\n }\n });\n }\n setTimeout(() => this.triggerOrdinateAttributes$.next(), 10);\n }\n }\n\n changeAbscissa($event: string) {\n if ($event && this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, attribute: $event }\n });\n const attr = this.classes\n .map((clazz) => clazz.attributes)\n .reduce((a, b) => [...a, ...b], [])\n .find((attr) => attr.id === $event);\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, label: attr?.name ?? 'attr-not-found' }\n });\n\n this.copyAbscissaField = this.fields.find((field) => attr?.field === field.id);\n\n this.limitElements(!!this.optionsCopy$.value?.abscissa.limit);\n }\n }\n\n changeAbscissaLabel($event: string) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, label: $event }\n });\n }\n }\n\n changeOrdinate($event: any) {\n if ($event && this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, attribute: $event }\n });\n const attr = this.classes\n .map((clazz) => clazz.attributes)\n .reduce((a, b) => [...a, ...b], [])\n .find((attr) => attr.id === $event);\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, label: attr?.name ?? 'attr-not-found' }\n });\n\n this.copyOrdinateField = this.fields.find((field) => attr?.field === field.id);\n }\n }\n\n changeOrdinateLabel($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, label: $event }\n });\n }\n }\n\n changeKeep0Abscissa($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, keep0: $event }\n });\n }\n }\n\n changeKeep0Ordinate($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n ordinate: { ...this.optionsCopy$.value?.ordinate, keep0: $event }\n });\n }\n }\n\n limitElements($event: any) {\n if (this.optionsCopy$.value) {\n if ($event) {\n if (\n this.copyAbscissaField?.type !== FieldType.INSTANT &&\n this.optionsCopy$.value?.abscissa?.limit &&\n 'at' in this.optionsCopy$.value?.abscissa?.limit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: {\n at: this.optionsCopy$.value?.abscissa?.limit?.at ?? 3,\n others: false,\n order: 'asc',\n isTimeLimit: false\n }\n }\n });\n } else {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, limit: { interval: 'second', isTimeLimit: true } }\n });\n }\n } else {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: { ...this.optionsCopy$.value?.abscissa, limit: undefined }\n });\n }\n }\n }\n\n changeLimit($event: any) {\n if (\n this.optionsCopy$.value &&\n this.optionsCopy$.value.abscissa.limit &&\n !this.optionsCopy$.value.abscissa.limit.isTimeLimit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: {\n ...this.optionsCopy$.value?.abscissa.limit,\n at: $event\n }\n }\n });\n }\n }\n\n changeLimitOthers($event: any) {\n if (\n this.optionsCopy$.value &&\n this.optionsCopy$.value.abscissa.limit &&\n !this.optionsCopy$.value.abscissa.limit.isTimeLimit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: {\n ...this.optionsCopy$.value?.abscissa.limit,\n others: $event\n }\n }\n });\n }\n }\n\n changeLimitOrder($event: any) {\n if (\n this.optionsCopy$.value &&\n this.optionsCopy$.value.abscissa.limit &&\n !this.optionsCopy$.value.abscissa.limit.isTimeLimit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: {\n ...this.optionsCopy$.value?.abscissa.limit,\n order: $event ? 'asc' : 'desc'\n }\n }\n });\n }\n }\n\n changeTimeLimit($event: any) {\n if (\n this.optionsCopy$.value &&\n this.optionsCopy$.value.abscissa.limit &&\n this.optionsCopy$.value.abscissa.limit.isTimeLimit\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value.abscissa,\n limit: {\n ...this.optionsCopy$.value.abscissa.limit,\n interval: $event\n }\n }\n });\n }\n }\n\n toggleLegend($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value.graph, legend: $event }\n });\n }\n }\n\n toggleTooltip($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: { ...this.optionsCopy$.value?.graph, tooltip: $event }\n });\n }\n }\n\n toggleGroupBy($event: any) {\n if (this.optionsCopy$.value) {\n if ($event) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: { attribute: this.optionsCopy$.value?.groupBy?.attribute ?? '', color: this.schemes[0].id }\n });\n } else {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: undefined\n });\n }\n }\n }\n\n changeGroupBy($event: any) {\n if (typeof $event === 'string' && this.optionsCopy$.value && this.optionsCopy$.value.groupBy) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: {\n ...this.optionsCopy$.value?.groupBy,\n attribute: $event\n }\n });\n }\n }\n\n changeColorScheme($event: any) {\n if (this.optionsCopy$.value && this.optionsCopy$.value.groupBy) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: {\n attribute: this.optionsCopy$.value.groupBy?.attribute,\n color: $event\n }\n });\n }\n }\n\n setTickCount(data: any) {\n return Math.max(...data.map((val: any) => val.value)) < 3\n ? { tickCount: Math.max(...data.map((val: any) => val.value)) }\n : {};\n }\n\n scheme() {\n return vega.scheme(this.optionsCopy$.value?.groupBy?.color ?? '');\n }\n\n toggleStacked($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: {\n ...this.optionsCopy$.value?.graph,\n stacked: $event\n }\n });\n }\n }\n\n override toImage(): Promise<string> {\n return new Promise((resolve, reject) => {\n resolve(this.vega.nativeElement.querySelectorAll('canvas')[0].toDataURL('image/png'));\n });\n }\n}\n","<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 >\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 <div class=\"no-result\" *ngIf=\"(isChartValid$ | async) === false\">\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 </div>\n <ng-container *ngIf=\"(isChartValid$ | async) && !(noData$ | async)\">\n <div #vega></div>\n </ng-container>\n\n <ng-container *ngIf=\"!(isChartValid$ | async)\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.chooseParameters' | i18n }}\n </p>\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\">\n <div class=\"o-widget__choose-parameters\">\n <p class=\"a-p\">\n {{ '@pry.widget.chart.noData' | i18n }}\n </p>\n </div>\n </ng-container>\n</div>\n","export const enTranslations = {\n '@pry': {\n widget: {\n chart: {\n numberLocale: {\n decimal: '.',\n thousands: ',',\n grouping: [3],\n currency: ['$', '']\n },\n timeFormatLocale: {\n dateTime: '%Y %B %d %H:%M:%S',\n date: '%d/%m/%Y',\n time: '%H:%M:%S',\n periods: ['AM', 'PM'],\n days: ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'],\n shortDays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n months: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],\n shortMonths: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n },\n operation: {\n none: 'Attribute value',\n count: 'Count',\n sum: 'Sum',\n cardinality: 'Distinct elements',\n avg: 'Average',\n median: 'Median',\n q1: 'Lower quartile',\n q3: 'Upper Quartile',\n min: 'Minimum',\n max: 'Maximum',\n percent: 'Percent',\n title: 'Operation'\n },\n chooseParameters: 'Please select parameters to display chart.',\n series: 'Series',\n type: 'Chart type',\n title: 'Chart title',\n graphType: {\n 'area-default': 'Area',\n 'area-with-lines-and-points': 'Curve with lines and points',\n 'bar-default': 'Bar',\n 'arc-default': 'Circular',\n 'line-default': 'Curve',\n 'line-with-points': 'Curve with points',\n 'arc-donut': 'Donut',\n 'bar-histogram': 'Histogram',\n 'point-default': 'Points'\n },\n donutSize: 'Donut inner radius',\n abscissa: 'Abscissa',\n ordinate: 'Ordinate',\n dataLabel: 'Data label',\n origin: 'Axis containing 0',\n limit: 'Limit elements',\n asc: 'Biggest elements',\n desc: 'Smallest elements',\n timeInterval: 'Time interval',\n others: 'Regroup remaining values in category \"Other\"',\n order: 'Component selection',\n groupBy: 'Group by',\n groupAttr: 'Grouping attribute',\n colorScheme: 'Color scheme',\n legend: 'Display legend',\n legendLabel: 'Legend',\n tooltip: 'Display tooltip',\n stacked: 'Vertical stacking',\n noData: 'No data to display',\n scheme: {\n accent: '8 colors n°1',\n set2: '8 colors n°2',\n dark2: '8 dark colors',\n pastel2: '8 pastel colors',\n set1: '9 colors',\n pastel1: '9 pastel colors',\n category10: '10 colors',\n tableau10: '10 different colors',\n set3: '12 colors',\n paired: '12 different colors',\n tableau20: '20 colors',\n category20: '20 colors with 2 shades',\n category20b: '20 colors with 4 shades n°1',\n category20c: '20 colors with 4 shades n°2',\n 'KO/W/OK': 'Traffic light'\n },\n time: {\n second: 'Second',\n minute: 'Minute',\n hour: 'Hour',\n day: 'Day',\n week: 'Week',\n month: 'Month',\n quarter: 'Quarter',\n year: 'Year'\n }\n }\n },\n message: {\n 'backend-only-1-datasource': 'Aggregation service can only manage the first datasource linked to the widget.',\n 'cannot-aggregate-virtual-ds':\n 'Aggregation service cannot perform aggregation on virtual datasets such as current search.'\n }\n }\n};\n","export const frTranslations = {\n '@pry': {\n widget: {\n chart: {\n numberLocale: {\n decimal: '.',\n thousands: ' ',\n grouping: [3],\n currency: ['€', '']\n },\n timeFormatLocale: {\n dateTime: '%Y %B %d %H:%M:%S',\n date: '%d/%m/%Y',\n time: '%H:%M:%S',\n periods: ['AM', 'PM'],\n days: ['dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'],\n shortDays: ['dim.', 'lun.', 'mar.', 'mer.', 'jeu.', 'ven.', 'sam.'],\n months: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'],\n shortMonths: ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']\n },\n operation: {\n none: \"Valeur de l'attribut\",\n count: 'Nombre',\n sum: 'Somme',\n cardinality: \"Nombre d'éléments distincts\",\n avg: 'Moyenne',\n median: 'Médiane',\n q1: 'Quartile inférieur',\n q3: 'Quartile supérieur',\n min: 'Minimum',\n max: 'Maximum',\n percent: 'Pourcentage',\n title: 'Opération'\n },\n chooseParameters: \"Merci de sélectionner les paramètres afin d'afficher le graphique\",\n type: 'Type de graphique',\n title: 'Titre du graphique',\n graphType: {\n 'area-default': 'Aire',\n 'area-with-lines-and-points': 'Aire avec lignes et marques',\n 'bar-default': 'Barres',\n 'arc-default': 'Circulaire',\n 'line-default': 'Courbe',\n 'line-with-points': 'Courbe avec marques',\n 'arc-donut': 'Diagramme anneau',\n 'bar-histogram': 'Histogramme',\n 'point-default': 'Points'\n },\n donutSize: \"Diamètre intérieur de l'anneau\",\n abscissa: 'Abscisse',\n ordinate: 'Ordonnée',\n dataLabel: 'Libellé de la donnée',\n origin: 'Axe contenant 0',\n limit: 'Limiter les éléments',\n asc: 'Aux plus grands éléments',\n desc: 'Aux plus petits éléments',\n timeInterval: 'Intervalle de temps',\n others: 'Regrouper les valeurs restantes dans une catégorie \"Autre\"',\n order: 'Choix des éléments',\n groupBy: 'Regroupement',\n groupAttr: 'Attribut de regroupement',\n colorScheme: 'Schéma de couleur',\n legend: 'Afficher la légende',\n legendLabel: 'Légende',\n tooltip: 'Affichage des info-bulles',\n stacked: 'Superposition verticale',\n noData: 'Aucune donnée à afficher',\n scheme: {\n accent: '8 couleurs n°1',\n set2: '8 couleurs n°2',\n dark2: '8 couleurs sombre',\n pastel2: '8 couleurs pastel',\n set1: '9 couleurs',\n pastel1: '9 couleurs pastel',\n category10: '10 couleurs',\n tableau10: '10 couleurs différentes',\n set3: '12 couleurs',\n paired: '12 couleurs différentes',\n tableau20: '20 couleurs',\n category20: '20 couleurs avec 2 nuances',\n category20b: '20 couleurs avec 4 nuances n°1',\n category20c: '20 couleurs avec 4 nuances n°2',\n 'KO/W/OK': 'Feu de signalisation'\n },\n time: {\n second: 'Seconde',\n minute: 'Minute',\n hour: 'Heure',\n day: 'Jour',\n week: 'Semaine',\n month: 'Mois',\n quarter: 'Trimestre',\n year: 'Année'\n }\n }\n },\n message: {\n 'backend-only-1-datasource':\n 'Le service aggregation ne peut prendre en compte que la première datasource associée au widget.',\n 'cannot-aggregate-virtual-ds':\n 'Le service aggregation ne peut pas agréger sur des dataset virtuels tels que la recherche courante.'\n }\n }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryCoreModule,\n PryDashboardModule,\n PryEditInputModule,\n PryI18nModule,\n PryI18nService,\n PryIconModule,\n PryRangeModule,\n PrySelectModule,\n PrySortModule,\n PryToggleModule\n} from '@provoly/dashboard';\nimport { PryCheckboxModule } from '@provoly/dashboard/components/checkbox';\nimport { WidgetAggregatedChartComponent } from './component/widget-aggregated-chart.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { PryAggregationService } from './service/base-aggregation.service';\nimport { PryWidgetAggregatedChartCssComponent } from './style/css.component';\n\n@NgModule({\n declarations: [WidgetAggregatedChartComponent, PryWidgetAggregatedChartCssComponent],\n imports: [\n CommonModule,\n FormsModule,\n OverlayModule,\n PryCoreModule,\n PryDashboardModule,\n PrySelectModule,\n PryIconModule,\n PryCheckboxModule,\n PryToggleModule,\n PryEditInputModule,\n PryI18nModule,\n PryRangeModule,\n PrySortModule\n ],\n exports: [WidgetAggregatedChartComponent],\n providers: [PryAggregationService]\n})\nexport class WidgetAggregatedChartModule extends BaseWidgetModule {\n constructor(private pryTranslateService: PryI18nService) {\n super();\n this.pryTranslateService.addLangObject('fr', 'widget-aggregated-chart', frTranslations);\n this.pryTranslateService.addLangObject('en', 'widget-aggregated-chart', enTranslations);\n }\n\n override getComponent() {\n return WidgetAggregatedChartComponent as Type<BaseWidgetComponent>;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n AtLimit,\n ChartAggregatedWidgetOptions,\n ClassSelectors,\n DashboardSelectors,\n Item,\n ItemUtils,\n Operation,\n ResultsetUtils,\n TimeLimit,\n ValueType\n} from '@provoly/dashboard';\nimport { combineLatest, map, Observable } from 'rxjs';\nimport { AggregationResult, PryAggregationService } from './base-aggregation.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PryFrontendAggregationService extends PryAggregationService {\n constructor(private store: Store) {\n super();\n }\n\n // @ts-ignore\n override aggregate(datasource: string[], options: ChartAggregatedWidgetOptions): Observable<AggregationResult> {\n return combineLatest([\n this.store.select(DashboardSelectors.resultSets),\n this.store.select(ClassSelectors.classes)\n ]).pipe(\n map(([resultSets, classes]) => {\n const abscissa = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.abscissa.attribute))\n .find((attr) => !!attr)?.name;\n const ordinate = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.ordinate.attribute))\n .find((attr) => !!attr)?.name;\n if (!abscissa || !ordinate) {\n throw new Error('abscissaorodinateinvalid');\n }\n let data = datasource.map((rsName) => resultSets[rsName ?? '']).filter((rsName) => !!rsName);\n const resultSet = data.reduce((rs1, rs2) => ResultsetUtils.mergeResultSets(rs1, rs2), {\n items: {},\n relations: [],\n merged: data.length\n });\n let items: Item[] = Object.keys(resultSet.items)\n .map((classId) => resultSet.items[classId])\n .reduce((prev, curr) => [...prev, ...curr], []) as Item[];\n if (!!options.groupBy) {\n const groupBy = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.groupBy?.attribute))\n .find((attr) => !!attr)?.name;\n if (!groupBy) {\n throw new Error('groupByAttributeisinvalid');\n }\n const itemsGrouped: { [key: string | number]: Item[] } = this.groupBy(items, groupBy);\n const values: { key: ValueType; groupBy: {}[] }[] = [];\n Object.keys(itemsGrouped).forEach((key) => {\n values.push({\n key,\n groupBy: this.getValueFromOperation(\n itemsGrouped[key],\n options.ordinate.operation,\n abscissa,\n ordinate,\n options.abscissa.limit\n )\n });\n });\n return { operation: options.ordinate.operation, values: values } as AggregationResult;\n }\n const values = this.getValueFromOperation(\n items,\n options.ordinate.operation,\n abscissa,\n ordinate,\n options.abscissa.limit\n );\n return { operation: options.ordinate.operation, values: values } as AggregationResult;\n })\n );\n }\n\n getValueFromOperation(\n items: Item[],\n operation: Operation,\n abscissa: string,\n ordinate: string,\n limit?: AtLimit | TimeLimit\n ) {\n let result: { key: ValueType; value: ValueType }[] = [];\n const groupByAbscissa = this.groupBy(items, abscissa);\n groupByAbscissa.map((test: any) => console.log(groupByAbscissa[test]));\n switch (operation) {\n case Operation.COUNT:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: groupByAbscissa[key].length\n }))\n );\n break;\n case Operation.SUM:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getSum(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n case Operation.DISTINCT:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getDistinct(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n case Operation.AVERAGE:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getAverage(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n case Operation.MEDIAN:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getQuartile(groupByAbscissa[key], ordinate, 0.5)\n }))\n );\n break;\n case Operation.Q1:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getQuartile(groupByAbscissa[key], ordinate, 0.25)\n }))\n );\n break;\n case Operation.Q3:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getQuartile(groupByAbscissa[key], ordinate, 0.75)\n }))\n );\n break;\n case Operation.MIN:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getMin(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n default:\n result.push(\n ...Object.keys(groupByAbscissa).map((key) => ({\n key: key,\n value: this.getMax(groupByAbscissa[key], ordinate)\n }))\n );\n break;\n }\n if (limit) {\n result = this.formatByLimit(result, limit);\n }\n return result;\n }\n\n groupBy(items: Item[], attribute: string) {\n let distincts: any = [];\n items.forEach((item: Item) => {\n let value = this.getValueFromAttribute(item, attribute);\n if (distincts[value.value as string | number]) {\n distincts[value.value as string | number].push(item);\n } else {\n distincts[value.value as string | number] = [item];\n }\n });\n return distincts;\n }\n\n getValueFromAttribute(item: Item, attribute: string) {\n let value = ItemUtils.getAttributeValue(item, attribute);\n return Array.isArray(value) ? value[0] : value;\n }\n\n getSum(items: Item[], attribute: string) {\n let sum: number = 0;\n items.forEach((item) => {\n sum += this.getValueFromAttribute(item, attribute).value as number;\n });\n return sum;\n }\n\n getMin(items: Item[], attribute: string) {\n const result = items.reduce((prev: any, curr: any) => {\n const prevValue = this.getValueFromAttribute(prev, attribute).value;\n const currValue = this.getValueFromAttribute(curr, attribute).value;\n return prevValue < currValue ? prev : curr;\n });\n return this.getValueFromAttribute(result, attribute).value;\n }\n\n getMax(items: Item[], attribute: string) {\n const result = items.reduce((prev: any, curr: any) => {\n const prevValue = this.getValueFromAttribute(prev, attribute).value;\n const currValue = this.getValueFromAttribute(curr, attribute).value;\n return prevValue > currValue ? prev : curr;\n });\n return this.getValueFromAttribute(result, attribute).value;\n }\n\n getAverage(items: Item[], attribute: string) {\n const allValues = items.map((item) => this.getValueFromAttribute(item, attribute).value as number);\n return allValues.reduce((acc, val) => acc + val, 0) / allValues.length;\n }\n\n getDistinct(items: Item[], attribute: string) {\n return [...new Set(items.map((item) => this.getValueFromAttribute(item, attribute).value))].length;\n }\n\n getQuartile(items: Item[], attribute: string, q: number) {\n const allValues = items.map((item) => this.getValueFromAttribute(item, attribute).value as number);\n const allValuesSorted = allValues.sort((a: number, b: number) => a - b);\n\n let pos = (allValuesSorted.length - 1) * q;\n if (pos % 1 === 0) {\n return allValuesSorted[pos];\n }\n\n pos = Math.floor(pos);\n if (allValuesSorted[pos + 1] !== undefined) {\n return (allValuesSorted[pos] + allValuesSorted[pos + 1]) / 2;\n }\n\n return allValuesSorted[pos];\n }\n\n getPercentile(items: Item[], attribute: string, q: number) {\n const allValues = items.map((item) => this.getValueFromAttribute(item, attribute).value as number);\n const allValuesSorted = allValues.sort((a: number, b: number) => a - b);\n return (\n (100 * allValuesSorted.reduce((acc, v) => acc + (v < q ? 1 : 0) + (v === q ? 0.5 : 0), 0)) /\n allValuesSorted.length\n );\n }\n\n formatByLimit(data: { key: ValueType; value: ValueType }[], limit: AtLimit | TimeLimit) {\n if (!limit.isTimeLimit) {\n data\n .sort((a, b) => (limit.order === 'asc' ? (a.value > b.value ? 1 : -1) : a.value < b.value ? 1 : -1))\n .splice(limit.at);\n return data;\n }\n return data;\n }\n}\n","import { HttpClient, HttpParams } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n ChartAggregatedWidgetOptions,\n Class,\n ClassSelectors,\n ConfigSelectors,\n DashboardSelectors,\n DEFAULT_NAMED_QUERY_ID,\n EXPLORE_NAMED_QUERY_ID,\n Field,\n FieldSelectors,\n FilterContext,\n Operation,\n PryI18nService,\n PrySnackbarService,\n ResultSets,\n SearchService\n} from '@provoly/dashboard';\nimport { map, Observable, of, switchMap } from 'rxjs';\nimport { AggregationResult, PryAggregationService } from './base-aggregation.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PryBackendAggregationService extends PryAggregationService {\n private rs: ResultSets = {};\n private classes: Class[] = [];\n private fields: Field[] = [];\n private filters: { [datasource: string]: FilterContext[] } = {};\n\n constructor(\n private store: Store,\n private snackBar: PrySnackbarService,\n private translateService: PryI18nService,\n private httpClient: HttpClient,\n private searchService: SearchService\n ) {\n super();\n\n this.store.select(DashboardSelectors.resultSets).subscribe((rs) => (this.rs = rs as ResultSets));\n this.store.select(ClassSelectors.classes).subscribe((classes) => (this.classes = classes));\n this.store.select(FieldSelectors.fields).subscribe((fields) => (this.fields = fields));\n this.store.select(DashboardSelectors.datasourceFilters).subscribe((filters) => (this.filters = filters));\n }\n\n override aggregate(datasources: string[], options: ChartAggregatedWidgetOptions): Observable<AggregationResult> {\n const targetDatasource = datasources.find((ds) => ![DEFAULT_NAMED_QUERY_ID, EXPLORE_NAMED_QUERY_ID].includes(ds));\n\n if (datasources.length > 1) {\n this.snackBar.open({\n type: 'warning',\n message: this.translateService.instant('@pry.message.backend-only-1-datasource'),\n timeout: 4000\n });\n }\n\n if (datasources.includes(DEFAULT_NAMED_QUERY_ID) || datasources.includes(EXPLORE_NAMED_QUERY_ID)) {\n this.snackBar.open({\n type: 'warning',\n message: this.translateService.instant('@pry.message.cannot-aggregate-virtual-ds'),\n timeout: 4000\n });\n }\n\n if (!options.abscissa || !options.ordinate) {\n console.warn('Abscissa and ordinate must both be defined');\n return of({ operation: 'none', values: [] } as AggregationResult);\n }\n\n if (!targetDatasource) {\n console.warn('Aggregation needs a target datasource.');\n return of({ operation: options.ordinate.operation, values: [] } as AggregationResult);\n }\n\n let params = new HttpParams();\n if (options.abscissa.attribute) {\n params = params.set('aggregatedBy', options.abscissa.attribute);\n } else {\n console.warn('Aggregation needs an aggregatedBy member.');\n return of({ operation: options.ordinate.operation, values: [] } as AggregationResult);\n }\n if (options.abscissa.limit) {\n if (options.abscissa.limit.isTimeLimit) {\n params = params.set('dateInterval', options.abscissa.limit.interval);\n } else {\n params = params.set('interval', options.abscissa.limit.at);\n params = params.set('limitOrder', options.abscissa.limit.order);\n params = params.set('limitOthers', options.abscissa.limit.others);\n }\n }\n const operation = options.ordinate.operation?.replace(/^none$/, Operation.SUM);\n params = params.set('operation', operation);\n if (!!options.ordinate.attribute) {\n params = params.set('valueField', options.ordinate.attribute);\n }\n if (options.groupBy) {\n params = params.set('groupBy', options.groupBy.attribute);\n }\n params = this.searchService.getItemsFilter(targetDatasource, params);\n\n return this.store.select(ConfigSelectors.dataUrl).pipe(\n switchMap((url) =>\n this.httpClient\n .get<AggregationResult>(`${url}/data-sources/id/${targetDatasource}/items/aggregate`, {\n params\n })\n .pipe(\n map((result) => ({\n ...result,\n operation: options.ordinate.operation === Operation.NONE ? Operation.NONE : result.operation\n }))\n )\n )\n );\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3.PryAggregationService","i7.PryWidgetAggregatedChartCssComponent","i1","map"],"mappings":"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"}