@provoly/dashboard 1.4.58 → 1.4.60

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 (101) hide show
  1. package/esm2022/admin/components/admin-abac-rules/admin-abac-rules-form/admin-abac-rules-form.component.mjs +1 -1
  2. package/esm2022/admin/components/admin-abac-rules/components/attribute-condition/attribute-condition.component.mjs +1 -1
  3. package/esm2022/admin/components/admin-abac-rules/components/metadata-condition/metadata-condition.component.mjs +1 -1
  4. package/esm2022/admin/components/admin-classes/admin-classes-customize/symbol/admin-classes-customize-symbol.component.mjs +1 -1
  5. package/esm2022/admin/components/admin-classes/admin-classes-customize/tooltip/admin-classes-customize-tooltip.component.mjs +1 -1
  6. package/esm2022/admin/components/admin-classes/admin-classes-form/admin-classes-form.component.mjs +1 -1
  7. package/esm2022/admin/components/admin-classes/admin-classes-view/admin-attributes-form/admin-attributes-form.component.mjs +1 -1
  8. package/esm2022/admin/components/admin-dataset/admin-form-dataset/admin-form-dataset.component.mjs +1 -1
  9. package/esm2022/admin/components/admin-environment/admin-environment-form/admin-environment-form.component.mjs +1 -1
  10. package/esm2022/admin/components/admin-fields/admin-fields-form/admin-fields-form.component.mjs +1 -1
  11. package/esm2022/admin/components/admin-links/admin-links-new/admin-links-new.component.mjs +1 -1
  12. package/esm2022/admin/components/admin-metadata/shared/form-metadata/form-metadata.component.mjs +1 -1
  13. package/esm2022/admin/components/admin-metadata-rules/shared/admin-form-metadata-rules/admin-form-metadata-rules.component.mjs +1 -1
  14. package/esm2022/components/metadata-editor/metadata-editor.component.mjs +1 -1
  15. package/esm2022/components/scheme-picker/scheme-picker.component.mjs +1 -1
  16. package/esm2022/filters/autocomplete/autocomplete.component.mjs +1 -1
  17. package/esm2022/filters/list/list-filter.component.mjs +1 -1
  18. package/esm2022/import/components/form/import-form.component.mjs +1 -1
  19. package/esm2022/import/components/list/import-list.component.mjs +1 -1
  20. package/esm2022/lib/core/components/select/select.component.mjs +8 -4
  21. package/esm2022/lib/core/components/share/access-rights-share/access-rights-share.component.mjs +1 -1
  22. package/esm2022/lib/core/components/share/legacy-share/share.component.mjs +1 -1
  23. package/esm2022/lib/dashboard/components/context-menu/object-edition/object-edition.component.mjs +1 -1
  24. package/esm2022/lib/dashboard/components/dashboard.component.mjs +22 -12
  25. package/esm2022/lib/dashboard/components/widgets/datasource-selector/datasource-list/datasource-list.component.mjs +1 -1
  26. package/esm2022/lib/dashboard/components/widgets/header/widget-header.component.mjs +90 -19
  27. package/esm2022/lib/dashboard/store/dashboard.selectors.mjs +3 -2
  28. package/esm2022/lib/dashboard/store/manifest.service.mjs +5 -3
  29. package/esm2022/pipeline-components/filter/component/filter.component.mjs +1 -1
  30. package/esm2022/pipeline-components/input-datasource/component/input-datasource.component.mjs +1 -1
  31. package/esm2022/pipeline-components/output-dataset/component/output-dataset.component.mjs +1 -1
  32. package/esm2022/presentation/components/add-edit-presentation/add-edit-presentation.component.mjs +39 -30
  33. package/esm2022/presentation/components/presentation.component.mjs +6 -3
  34. package/esm2022/restitution/components/restitution/restitution.component.mjs +1 -1
  35. package/esm2022/search/search-mono-class/components/search-condition/search-condition.component.mjs +1 -1
  36. package/esm2022/search/search-mono-class/components/search-mono-class/search-mono-class.component.mjs +1 -1
  37. package/esm2022/search/search-mono-class/components/search-order/search-order.component.mjs +1 -1
  38. package/esm2022/search/search-multi-class/components/multi-class-condition/multi-class-condition.component.mjs +1 -1
  39. package/esm2022/toolbox/components/filter-settings/filter-settings.component.mjs +1 -1
  40. package/esm2022/toolbox/shared/presentation-form/presentation-form.component.mjs +1 -1
  41. package/esm2022/widgets/widget-aggregated-chart/component/widget-aggregated-chart.component.mjs +1 -1
  42. package/esm2022/widgets/widget-analytic/component/widget-analytic.component.mjs +1 -1
  43. package/esm2022/widgets/widget-chart/component/widget-chart.component.mjs +1 -1
  44. package/esm2022/widgets/widget-graph/component/widget-graph.component.mjs +1 -1
  45. package/esm2022/widgets/widget-map/component/widget-map.component.mjs +1 -1
  46. package/esm2022/widgets/widget-table/component/widget-table.component.mjs +1 -1
  47. package/esm2022/widgets/widget-tile/component/widget-tile.component.mjs +1 -1
  48. package/esm2022/widgets/widget-vega/component/widget-vega.component.mjs +5 -5
  49. package/fesm2022/provoly-dashboard-admin.mjs +13 -13
  50. package/fesm2022/provoly-dashboard-admin.mjs.map +1 -1
  51. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs +1 -1
  52. package/fesm2022/provoly-dashboard-components-metadata-editor.mjs.map +1 -1
  53. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs +1 -1
  54. package/fesm2022/provoly-dashboard-components-scheme-picker.mjs.map +1 -1
  55. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs +1 -1
  56. package/fesm2022/provoly-dashboard-filters-autocomplete.mjs.map +1 -1
  57. package/fesm2022/provoly-dashboard-filters-list.mjs +1 -1
  58. package/fesm2022/provoly-dashboard-filters-list.mjs.map +1 -1
  59. package/fesm2022/provoly-dashboard-import.mjs +2 -2
  60. package/fesm2022/provoly-dashboard-import.mjs.map +1 -1
  61. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs +1 -1
  62. package/fesm2022/provoly-dashboard-pipeline-components-filter.mjs.map +1 -1
  63. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs +1 -1
  64. package/fesm2022/provoly-dashboard-pipeline-components-input-datasource.mjs.map +1 -1
  65. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs +1 -1
  66. package/fesm2022/provoly-dashboard-pipeline-components-output-dataset.mjs.map +1 -1
  67. package/fesm2022/provoly-dashboard-presentation.mjs +43 -31
  68. package/fesm2022/provoly-dashboard-presentation.mjs.map +1 -1
  69. package/fesm2022/provoly-dashboard-restitution.mjs +1 -1
  70. package/fesm2022/provoly-dashboard-restitution.mjs.map +1 -1
  71. package/fesm2022/provoly-dashboard-search.mjs +4 -4
  72. package/fesm2022/provoly-dashboard-search.mjs.map +1 -1
  73. package/fesm2022/provoly-dashboard-toolbox.mjs +2 -2
  74. package/fesm2022/provoly-dashboard-toolbox.mjs.map +1 -1
  75. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs +1 -1
  76. package/fesm2022/provoly-dashboard-widgets-widget-aggregated-chart.mjs.map +1 -1
  77. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs +1 -1
  78. package/fesm2022/provoly-dashboard-widgets-widget-analytic.mjs.map +1 -1
  79. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs +1 -1
  80. package/fesm2022/provoly-dashboard-widgets-widget-chart.mjs.map +1 -1
  81. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs +1 -1
  82. package/fesm2022/provoly-dashboard-widgets-widget-graph.mjs.map +1 -1
  83. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs +1 -1
  84. package/fesm2022/provoly-dashboard-widgets-widget-map.mjs.map +1 -1
  85. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs +1 -1
  86. package/fesm2022/provoly-dashboard-widgets-widget-table.mjs.map +1 -1
  87. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs +1 -1
  88. package/fesm2022/provoly-dashboard-widgets-widget-tile.mjs.map +1 -1
  89. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs +4 -4
  90. package/fesm2022/provoly-dashboard-widgets-widget-vega.mjs.map +1 -1
  91. package/fesm2022/provoly-dashboard.mjs +202 -116
  92. package/fesm2022/provoly-dashboard.mjs.map +1 -1
  93. package/lib/core/components/select/select.component.d.ts +3 -2
  94. package/lib/dashboard/components/dashboard.component.d.ts +8 -1
  95. package/lib/dashboard/components/widgets/header/widget-header.component.d.ts +18 -1
  96. package/lib/dashboard/store/dashboard.selectors.d.ts +17 -0
  97. package/lib/dashboard/store/manifest.service.d.ts +11 -2
  98. package/package.json +7 -7
  99. package/presentation/components/add-edit-presentation/add-edit-presentation.component.d.ts +2 -1
  100. package/presentation/components/presentation.component.d.ts +2 -1
  101. package/styles/components/_o-widget.scss +28 -0
@@ -1 +1 @@
1
- {"version":3,"file":"provoly-dashboard-widgets-widget-aggregated-chart.mjs","sources":["../../../../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/provoly-dashboard-widgets-widget-aggregated-chart.ts"],"sourcesContent":["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 AggregationResult,\n Attribute,\n ChartAggregatedWidgetOptions,\n Class,\n ClassSelectors,\n Dataset,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n GraphType,\n MonoClassSearchPayload,\n MultiClassSearchPayload,\n NamedQuery,\n NamedQueryTypes,\n Operation,\n PryAggregationService,\n PryI18nService,\n SearchActions,\n Sort,\n ValueType,\n VegaType,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n filter,\n fromEvent,\n map,\n Observable,\n share,\n startWith,\n Subject,\n switchMap,\n tap,\n throwError,\n withLatestFrom\n} from 'rxjs';\nimport { View } from 'vega';\nimport embed, { vega } from 'vega-embed';\nimport { DeepPartial, mergeDeep, TopLevelSpec } from 'vega-lite';\nimport { initConfig } from 'vega-lite/build/src/config';\nimport { PrySchemeService } from '@provoly/dashboard/components/scheme-picker';\n\nexport const CHART_INTERVAL_STEP = 3;\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; name: any; field: any };\n groupBy: { vegaType: VegaType; field: any; name: any };\n abscissa: { vegaType: VegaType; field: any; name: 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 copyOrdinateField?: Field;\n noData$: Observable<boolean>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n sortValues$: Observable<{ value: 'key' | 'value'; attrId?: string; label?: string; isDisplayed: boolean }[]>;\n sortDirections = [\n { value: 'asc', label: '' },\n { value: 'desc', label: '' }\n ];\n noAggregationData$: Observable<boolean>;\n allowedClasses$: Observable<Class[]>;\n // @ts-ignore\n colors = vega.scheme('Provoly');\n DEFAULT_ITEM_LIMIT = 20;\n\n constructor(\n store: Store<any>,\n private translateService: PryI18nService,\n el: ElementRef,\n private aggregationService: PryAggregationService,\n private schemeService: PrySchemeService\n ) {\n super(store, el);\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.classes$ = this.store.select(ClassSelectors.classes);\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$ = combineLatest([this.manifest$, this.classes$]).pipe(\n map(([manifest, classes]) => {\n const options = manifest.options as ChartAggregatedWidgetOptions;\n const abscissa = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.abscissa?.attribute))\n .find((attr) => !!attr);\n\n const fixInterval = this.fixInterval(options, abscissa);\n\n return mergeDeep(\n {\n graph: { type: GraphType.BAR, tooltip: true, legend: false },\n abscissa: { keep0: true },\n ordinate: { keep0: true }\n } as ChartAggregatedWidgetOptions,\n (options ?? {}) as DeepPartial<ChartAggregatedWidgetOptions>,\n fixInterval as DeepPartial<ChartAggregatedWidgetOptions>\n ) as ChartAggregatedWidgetOptions;\n })\n );\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy$.next(structuredClone(options));\n });\n\n this.operations$ = combineLatest([this.usedDatasources$, this.classes$, this.fields$]).pipe(\n map(([datasources, classes, fields]) =>\n classes\n .filter((clazz) => datasources.map((ds) => ('oClass' in ds ? ds.oClass : undefined)).includes(clazz.id))\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => [FieldType.INTEGER, FieldType.DECIMAL, FieldType.LONG].includes(attr.field.type))\n )\n .reduce((a, b) => [...a, ...b], [])\n .filter((attr) => !!attr)\n ),\n map((attributes) =>\n (attributes.length > 0\n ? Object.values(Operation).filter((operation) => operation !== Operation.EXTENT)\n : [Operation.COUNT, Operation.DISTINCT, Operation.NONE]\n )\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.allowedClasses$ = combineLatest([this.classes$, this.usedDatasources$]).pipe(\n map(([classes, datasources]) => {\n const hasFullText = datasources\n .map((ds) => ds.sourceType === 'namedQuery' && ds.request.type === NamedQueryTypes.MULTI_CLASS)\n .reduce((p, c) => p || c, false);\n\n const multiClassDatasourcesClasses = datasources\n .filter((ds) => ds.sourceType === 'namedQuery' && ds.request.type === NamedQueryTypes.MULTI_CLASS)\n .map((multiDs) => (multiDs as NamedQuery).request as MultiClassSearchPayload)\n .map((payload) => payload.oClasses);\n\n const hasMultiNoClass = multiClassDatasourcesClasses.includes(undefined);\n\n const multiClasses = (\n multiClassDatasourcesClasses.filter((classes) => !!classes) as unknown as string[]\n ).reduce((p, c) => [...p, ...c], [] as string[]);\n\n const singleClasses = datasources\n .filter(\n (ds) =>\n (ds.sourceType === 'namedQuery' && ds.request.type === NamedQueryTypes.MONO_CLASS) ||\n ds.sourceType === 'dataset'\n )\n .map(\n (singleDs) =>\n (singleDs as Dataset).oClass ?? ((singleDs as NamedQuery).request as MonoClassSearchPayload).oClass\n );\n\n return classes.filter(\n (clazz) =>\n hasFullText || hasMultiNoClass || multiClasses.includes(clazz.id) || singleClasses.includes(clazz.id)\n );\n })\n );\n\n this.abscissaAttributes$ = combineLatest([this.fields$, this.allowedClasses$, this.optionsCopy$]).pipe(\n map(([fields, allowedClasses, optionCopy]) =>\n allowedClasses\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field.id;\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.fields$,\n this.allowedClasses$,\n this.triggerOrdinateAttributes$\n ]).pipe(\n map(([fields, allowedClasses]) =>\n allowedClasses\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field.id;\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 ]\n .map((op) => op.toString())\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.optionsCopy$, this.fields$, this.classes$]).pipe(\n filter(([options, fields, classes]) => !!options && !!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 return {\n abscissa: {\n field: abscissa?.field,\n vegaType: this.translateToVegaType(abscissa?.field.type, abscissa?.name ?? ''),\n name: abscissa?.name ?? ''\n },\n ordinate: {\n field: ordinate?.field,\n vegaType:\n options!.ordinate.operation === Operation.COUNT || options!.ordinate.operation === Operation.DISTINCT\n ? VegaType.QUANTITATIVE\n : this.translateToVegaType(ordinate?.field.type, ordinate?.name ?? ''),\n name: ordinate?.name ?? ''\n },\n groupBy: {\n field: groupBy?.field,\n vegaType: this.translateToVegaType(groupBy?.field.type, groupBy?.name),\n name: groupBy?.name ?? ''\n }\n };\n })\n );\n\n this.aggregatedValues$ = combineLatest([\n this.datasourceIds$,\n this.options$,\n combineLatest([fromEvent(window, 'datasourceRefresh'), this.datasourceIds$]).pipe(\n filter(([event, datasources]) =>\n datasources.includes((event as CustomEvent).detail.replace(/$aggregate!/, ''))\n ),\n startWith(undefined)\n )\n ]).pipe(\n debounceTime(100),\n tap(([datasources]) => this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: true }))),\n switchMap(([datasources, options]) =>\n this.aggregationService.aggregate(datasources, options).pipe(\n tap(() => this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: false }))),\n catchError((err) => {\n this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: false }));\n return throwError(err);\n })\n )\n ) as any,\n withLatestFrom(this.options$),\n map(([aggregate, options]: [AggregationResult, ChartAggregatedWidgetOptions]) => {\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 }) as any,\n startWith({ operation: Operation.NONE, data: {} }) as any,\n share()\n );\n\n this.noData$ = this.datasourceIds$.pipe(map((ids) => ids.length === 0));\n this.noAggregationData$ = this.aggregatedValues$.pipe(map(({ 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\n ([options.groupBy?.color, options.circleColorScheme].filter((scheme) => !!scheme) as string[]).forEach(\n (scheme) => {\n this.schemeService.assertScheme(scheme);\n }\n );\n return mergeDeep(\n {\n $schema: 'https://vega.github.io/schema/vega-lite/v5.json',\n title: this.getTitle(options as ChartAggregatedWidgetOptions),\n width: 'container',\n height: (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT.value : 0),\n padding: 10,\n autosize: { type: 'fit', contains: 'padding' },\n data: { values: structuredClone(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: this.getAbscissaType(types.abscissa.vegaType, options),\n axis: {\n grid: false,\n ...WidgetAggregatedChartComponent.minTick(types.abscissa.field?.type ?? FieldType.STRING),\n labelExpr: this.getLabelExpr(\n 'x',\n types.abscissa.vegaType,\n options?.abscissa?.interval as any,\n types.abscissa.field\n ),\n ...this.getLabelAngle(types.abscissa.vegaType, values.data)\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 reverse: this.reverseAxis(options, types)\n },\n ...this.getSort(options.abscissa.attribute, options.graph?.sort),\n timeUnit: this.getTimeUnit(options, types)\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.field?.type ?? FieldType.STRING),\n ...this.setTickCount(values.data),\n labelExpr: this.getLabelExpr('y', types.ordinate.vegaType, undefined, types.ordinate.field)\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 ? (!options.groupBy ? undefined : 'series') : 'key',\n legend: options.graph.legend,\n scale: !isCircular\n ? options.groupBy\n ? { scheme: options.groupBy?.color ?? this.schemeService.getDefaultScheme() }\n : undefined\n : { scheme: options.circleColorScheme ?? this.schemeService.getDefaultScheme() },\n value:\n !isCircular && !options.groupBy\n ? options.baseColor ?? this.schemeService.getSchemeColors(this.schemeService.getDefaultScheme())\n : undefined\n },\n xOffset:\n stacked &&\n options.groupBy &&\n this.getAbscissaType(types.abscissa.vegaType, options) !== VegaType.TEMPORAL\n ? { field: 'series' }\n : 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 ...this.getDataFormat(\n types.abscissa.vegaType,\n options?.abscissa?.interval as any,\n types.abscissa.field\n )\n },\n {\n field: 'value',\n type: types.ordinate.vegaType,\n title: options.ordinate.label,\n ...this.getDataFormat(types.ordinate.vegaType, undefined, types.ordinate.field)\n },\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 ...this.getDataFormat(\n types.abscissa.vegaType,\n options?.abscissa?.interval as any,\n types.abscissa.field\n )\n },\n {\n field: 'value',\n type: types.ordinate.vegaType,\n title: options.ordinate.label,\n ...this.getDataFormat(types.ordinate.vegaType, undefined, types.ordinate.field)\n }\n ]\n : undefined\n }\n }\n ],\n config: this.getChartConfig()\n } as any,\n options.additionalSpec\n );\n })\n );\n\n this.sortValues$ = this.optionsCopy$.pipe(\n map((options) => {\n return [\n {\n attrId: options?.abscissa.attribute,\n label: options?.abscissa.label,\n value: 'key' as 'key' | 'value',\n isDisplayed: true\n },\n {\n attrId: options?.ordinate.attribute,\n label: options?.ordinate.attribute\n ? options?.ordinate.label\n : this.translateService.instant(`@pry.widget.chart.sort.by.operation.${options?.ordinate.operation}`),\n value: 'value' as 'key' | 'value',\n isDisplayed: !!options?.ordinate\n }\n ].filter((value) => value.isDisplayed);\n })\n );\n\n this.subscriptions.add(\n combineLatest([this.optionsCopy$, this.sortValues$, this.attributeTypes$, this.classes$]).subscribe(\n ([options, sortValues, attrTypes, classes]) => {\n this.sortDirections = this.sortDirections\n .map((sortDir) => {\n let attribute = classes\n .map((clazz) =>\n clazz.attributes.find(\n (attr) =>\n attr.id === sortValues.find((sortValue) => sortValue.value === options?.graph.sort?.value)?.attrId\n )\n )\n .find((attr) => !!attr);\n return {\n value: sortDir.value,\n label: this.translateService.instant(\n `@pry.widget.chart.sort.${sortDir.value}.${\n attrTypes.abscissa.name === attribute?.name\n ? attrTypes.abscissa.vegaType\n : attrTypes.ordinate.vegaType\n }`\n )\n };\n })\n .sort((a, b) => a.label.localeCompare(b.label));\n }\n )\n );\n }\n\n private fixInterval(\n options: ChartAggregatedWidgetOptions,\n abscissa: Attribute | undefined\n ): Partial<ChartAggregatedWidgetOptions> {\n const fixInterval = { abscissa: options.abscissa ?? {} } as ChartAggregatedWidgetOptions;\n if (options?.graph?.type !== GraphType.HISTOGRAM) {\n fixInterval.abscissa.interval = undefined;\n return fixInterval;\n }\n if (!!abscissa) {\n let newIntervalValue =\n options.abscissa?.interval ?? (abscissa.field.type !== FieldType.INSTANT ? CHART_INTERVAL_STEP : 'second');\n // if date time interval and field is not date, reinitializing interval value\n if (typeof options?.abscissa?.interval === 'string' && abscissa.field.type !== FieldType.INSTANT) {\n newIntervalValue = CHART_INTERVAL_STEP;\n }\n // if numeric interval and field is date, reinitializing interval value\n if (typeof options?.abscissa?.interval !== 'string' && abscissa.field.type === FieldType.INSTANT) {\n newIntervalValue = 'second';\n }\n fixInterval.abscissa.interval = newIntervalValue;\n }\n return fixInterval;\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(JSON.stringify(spec));\n embed(this.vega.nativeElement, structuredClone(spec), {\n actions: false,\n renderer: 'canvas',\n formatLocale: this.translateService.instantObject('@pry.widget.chart.numberLocale'),\n timeFormatLocale: this.translateService.instantObject('@pry.widget.chart.timeFormatLocale'),\n tooltip: {\n theme: 'custom'\n }\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 if (\n this.optionsCopy$.value &&\n (!!this.optionsCopy$.value?.abscissa.limit || this.optionsCopy$.value?.abscissa.limit === undefined)\n ) {\n this.toggleLimitItems(true);\n }\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 getSort(abscissa: string, sort?: Sort) {\n return sort ? { sort: { field: sort.value, order: sort.direction + 'ending' } } : {};\n }\n\n override 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 openData() {\n (this.openData$ as Subject<void>).next(undefined);\n }\n\n private getTitle(options: ChartAggregatedWidgetOptions) {\n return options.graph?.title ?? undefined;\n }\n\n getChartConfig() {\n return initConfig({\n style: {\n 'guide-label': {\n // axis tick titles\n font: 'Ubuntu, sans-serif',\n fontSize: 12,\n fontWeight: 400,\n fill: '#263340'\n },\n 'guide-title': {\n // axis title\n font: 'Ubuntu, sans-serif',\n fontSize: 12,\n fontWeight: 600,\n fill: '#3E546A'\n },\n 'group-title': {\n // chart title\n font: 'Ubuntu, sans-serif',\n fontSize: 12,\n fontWeight: 400,\n fill: '#263340'\n },\n 'group-subtitle': {\n // not sure\n font: 'Ubuntu, sans-serif',\n fontSize: 12,\n fontWeight: 600,\n fill: '#263340'\n }\n }\n });\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n if ([GraphType.CIRCULAR, GraphType.DONUT].map((gt) => gt.toString()).includes($event)) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: undefined,\n circleColorScheme: this.optionsCopy$.value?.circleColorScheme ?? 'Provoly'\n } as ChartAggregatedWidgetOptions);\n }\n this.enableIntervals([GraphType.HISTOGRAM.toString()].includes($event));\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n }\n setTimeout(() => this.triggerOrdinateAttributes$.next(), 10);\n }\n }\n\n changeAbscissa($event: string) {\n if ($event && this.optionsCopy$.value) {\n const attr = this.classes\n .map((clazz) => clazz.attributes)\n .reduce((a, b) => [...a, ...b], [])\n .find((attr) => attr.id === $event);\n\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n attribute: $event,\n label: attr?.name ?? 'attr-not-found',\n interval: this.fixInterval(\n { ...this.optionsCopy$.value!, abscissa: { ...this.optionsCopy$.value!.abscissa, attribute: $event } },\n attr\n ).abscissa?.interval\n }\n } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n\n this.copyOrdinateField = this.fields.find((field) => attr?.field.id === 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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n }\n }\n\n enableIntervals($event: any) {\n const attr = this.classes\n .map((clazz) => clazz.attributes)\n .reduce((a, b) => [...a, ...b], [])\n .find((attr) => attr.id === this.optionsCopy$.value?.abscissa?.attribute);\n if (attr) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n interval: $event ? this.fixInterval(this.optionsCopy$.value!, attr).abscissa?.interval : undefined\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeInterval($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n interval: +$event\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeTimeInterval($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n interval: $event\n }\n } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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: {\n attribute: this.optionsCopy$.value?.groupBy?.attribute ?? '',\n color: this.schemeService.getDefaultScheme()\n }\n } as ChartAggregatedWidgetOptions);\n } else {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: undefined\n } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeColorScheme($event: any) {\n if (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 } as ChartAggregatedWidgetOptions);\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 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 } as ChartAggregatedWidgetOptions);\n }\n }\n\n toggleSort($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: {\n ...this.optionsCopy$.value?.graph,\n sort: $event\n ? this.optionsCopy$.value?.graph.sort ?? {\n value: 'key',\n direction: 'asc'\n }\n : undefined\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeSortValue($event: 'key' | 'value') {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: {\n ...this.optionsCopy$.value?.graph,\n sort: {\n ...this.optionsCopy$.value?.graph.sort!,\n value: $event,\n direction:\n this.optionsCopy$.value.graph.type === GraphType.HISTOGRAM\n ? 'asc'\n : this.optionsCopy$.value?.graph.sort?.direction\n }\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeSortDirection($event: 'asc' | 'desc') {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: {\n ...this.optionsCopy$.value?.graph,\n sort: { ...this.optionsCopy$.value?.graph.sort!, direction: $event }\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n toggleLimitItems($event: boolean) {\n if (this.optionsCopy$.value) {\n if (\n $event !== !!this.optionsCopy$.value?.abscissa.limit ||\n this.optionsCopy$.value?.abscissa.limit === undefined\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: this.optionsCopy$.value?.abscissa.limit ? null : this.DEFAULT_ITEM_LIMIT\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n }\n\n changeLimitValue($event: number | null) {\n if (this.optionsCopy$.value && $event !== null) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: $event > 0 ? $event : 1\n }\n } as ChartAggregatedWidgetOptions);\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 changeCircleColorScheme($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n circleColorScheme: $event\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeBaseColor($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n baseColor: $event\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n getLabelAngle(abscissaType: VegaType, data: { key: string | number; value: any }[]) {\n if (\n ([VegaType.NOMINAL, VegaType.ORDINAL].map((vt) => vt.toString()).includes(abscissaType) &&\n data.some((item: { key: string | number; value: any }) => item.key.toString().length > 10)) ||\n [VegaType.TEMPORAL].map((vt) => vt.toString()).includes(abscissaType)\n ) {\n return { labelAngle: -30 };\n }\n return {};\n }\n\n getAbscissaType(abscissaVegaType: VegaType, options: ChartAggregatedWidgetOptions) {\n if (abscissaVegaType === VegaType.TEMPORAL) {\n return options.graph.type !== GraphType.BAR\n ? abscissaVegaType\n : options.graph.sort?.value === 'value'\n ? VegaType.ORDINAL\n : VegaType.TEMPORAL;\n }\n return !!options.graph.sort ? VegaType.ORDINAL : abscissaVegaType;\n }\n\n isTimeInterval(abscissaInterval: string | number) {\n return typeof abscissaInterval === 'string';\n }\n\n getLabelExpr(axis: 'x' | 'y', axisType: string, interval: string | undefined, field?: Field) {\n const truncateBasedOn = axis === 'x' ? 'height < 300' : 'width < 100';\n const timeFormat = `timeFormat(datum.value, '${this.getLocaleFormat(field?.format, interval)}')`;\n const numberFormat = field?.decimalPrecision\n ? `format(datum.value, '.${field?.decimalPrecision}f')`\n : 'datum.value';\n const truncatedFormat = 'truncate(datum.value, 10)';\n\n return axisType === VegaType.TEMPORAL\n ? timeFormat\n : `${axisType === VegaType.QUANTITATIVE ? numberFormat : `${truncateBasedOn} ? ${truncatedFormat} : datum.value`}`;\n }\n\n getDataFormat(axisType: string, interval: string | undefined, field?: Field) {\n switch (axisType) {\n case VegaType.TEMPORAL:\n return { format: this.getLocaleFormat(field?.format, interval), scale: { type: 'utc' } };\n case VegaType.QUANTITATIVE:\n return field?.decimalPrecision ? { format: `.${field?.decimalPrecision}f` } : {};\n default:\n return {};\n }\n }\n\n getLocaleFormat(type: string | undefined, interval: string | undefined) {\n if (!interval) {\n const formats = this.translateService.instantObject('@pry.widget.chart.specializedLocale');\n return formats[type ?? 'default'];\n } else {\n const formats = this.translateService.instantObject('@pry.widget.chart.specializedLocale.interval');\n return formats[interval ?? 'default'];\n }\n }\n\n private getTimeUnit(options: ChartAggregatedWidgetOptions, types: any) {\n if (\n options?.graph.type !== GraphType.HISTOGRAM ||\n types.abscissa.vegaType !== VegaType.TEMPORAL ||\n !options?.abscissa?.interval\n ) {\n return undefined;\n }\n const vegaTimeUnits = {\n year: 'binnedyear',\n month: 'binnedyearmonth',\n week: 'binnedyearweek',\n day: 'binnedyearmonthdate',\n hour: 'binnedyearmonthdatehours',\n minute: 'binnedyearmonthdatehoursminutes',\n second: 'binnedyearmonthdatehoursminutesseconds'\n } as { [key: string]: string };\n\n return vegaTimeUnits[options.abscissa.interval as string];\n }\n\n private reverseAxis(options: ChartAggregatedWidgetOptions, types: any) {\n if (options?.graph.type !== GraphType.HISTOGRAM && options?.graph.type !== GraphType.BAR) {\n return undefined;\n }\n return (\n types.abscissa.vegaType === VegaType.TEMPORAL &&\n options?.graph.sort?.value === 'key' &&\n options?.graph.sort?.direction === 'desc'\n );\n }\n}\n","<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n@if (optionsCopy$ | async; as optionsCopy) {\n <div class=\"o-widget o-widget--chart\" [class.-has-header]=\"displayHeader$ | async\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n [openData$]=\"openData$\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n </div>\n\n @if (optionsCopy) {\n <div 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 [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n }\n\n @if (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 }\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 </div>\n\n @if (!!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 [items]=\"abscissaAttributes$ | async | prySortData: sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n </div>\n\n @if (\n ['quantitative', 'temporal'].includes(\n (attributeTypes$ | async)?.abscissa?.vegaType?.toString() ?? '--'\n ) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n ) {\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n @if (optionsCopy.graph.type === GraphType.HISTOGRAM) {\n <pry-checkbox\n (ngModelChange)=\"enableIntervals($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.interval\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.interval' | i18n }}\n </pry-checkbox>\n\n @if (!!optionsCopy.abscissa.interval) {\n @if (!isTimeInterval(optionsCopy.abscissa.interval)) {\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.interval\"\n (ngModelChange)=\"changeInterval($event)\"\n labelTranslate=\"@pry.widget.chart.specifyInterval\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n } @else {\n <label class=\"a-label\" for=\"time_interval\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeInterval($event)\"\n [items]=\"['second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year']\"\n [ngModel]=\"optionsCopy.abscissa.interval\"\n i18nPrefix=\"@pry.widget.chart.time.\"\n id=\"time_interval\"\n ></pry-select>\n }\n }\n }\n </div>\n }\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 [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n @if (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 [items]=\"ordinateAttributes$ | async | prySortData: sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n }\n\n <div class=\"m-form-label-field\">\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n </div>\n\n @if (translateToVegaType(copyOrdinateField?.type) === 'quantitative') {\n <div 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 }\n </div>\n\n @if (optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR) {\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 @if (!!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 id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-scheme-picker\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n ></pry-scheme-picker>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n }\n </div>\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox\n (ngModelChange)=\"toggleLimitItems($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit !== undefined && optionsCopy.abscissa.limit !== null\"\n >\n {{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n </div>\n @if (optionsCopy.abscissa.limit !== undefined && optionsCopy.abscissa.limit !== null) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_limitItemsValue\">{{\n '@pry.widget.chart.limitMaxNb' | i18n\n }}</label>\n <input\n type=\"number\"\n id=\"chart_limitItemsValue\"\n class=\"a-form-field\"\n [ngModel]=\"optionsCopy.abscissa.limit\"\n (ngModelChange)=\"changeLimitValue($event)\"\n min=\"1\"\n step=\"1\"\n [attr.aria-invalid]=\"optionsCopy.abscissa.limit < 1\"\n />\n </div>\n }\n </div>\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleSort($event)\" [ngModel]=\"!!optionsCopy.graph.sort\"\n >{{ '@pry.widget.chart.sort.title' | i18n }}\n </pry-checkbox>\n </div>\n @if (!!optionsCopy.graph.sort) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_sortValue\">{{ '@pry.widget.chart.sort.attribute' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSortValue($event)\"\n [ngModel]=\"optionsCopy.graph.sort.value\"\n [items]=\"sortValues$ | async\"\n bindValue=\"value\"\n bindLabel=\"label\"\n id=\"chart_sortValue\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_sortDirection\">{{\n '@pry.widget.chart.sort.direction' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeSortDirection($event)\"\n [ngModel]=\"optionsCopy.graph.sort.direction\"\n [items]=\"sortDirections\"\n bindValue=\"value\"\n bindLabel=\"label\"\n id=\"chart_sortDirection\"\n ></pry-select>\n </div>\n }\n </div>\n }\n\n @if (optionsCopy.graph.type === GraphType.DONUT || optionsCopy.graph.type === GraphType.CIRCULAR) {\n <pry-scheme-picker\n (ngModelChange)=\"changeCircleColorScheme($event)\"\n [ngModel]=\"optionsCopy.circleColorScheme\"\n ></pry-scheme-picker>\n }\n\n @if (\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR &&\n !optionsCopy.groupBy\n ) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_baseColor\">{{ '@pry.widget.chart.color' | i18n }}</label>\n <pry-color-picker\n (ngModelChange)=\"changeBaseColor($event)\"\n [ngModel]=\"optionsCopy.baseColor\"\n id=\"chart_baseColor\"\n ></pry-color-picker>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <div class=\"a-chip -md\" [style.background-color]=\"item\">{{ item }}</div>\n </div>\n </ng-template>\n </div>\n }\n }\n </pry-settings>\n </pry-widget-header>\n }\n\n @if ((isChartValid$ | async) && !(noData$ | async) && !(noAggregationData$ | async)) {\n <div #vega></div>\n }\n\n @if (noData$ | async) {\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n <button type=\"button\" (click)=\"openData()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.readSearch' | i18n }}</span>\n </button>\n </div>\n }\n\n @if (!(noData$ | async) && (noAggregationData$ | async)) {\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.aggNoResult' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.aggNoResult' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n }\n\n @if (!(noData$ | async) && !(noAggregationData$ | async) && !(isChartValid$ | async)) {\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.chooseParameters' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.chooseParameters' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n }\n </div>\n}\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 specializedLocale: {\n default: '%Y-%m-%dT%H:%M:%S',\n DATETIME: '%Y-%m-%dT%H:%M:%S',\n DATE: '%Y-%m-%d',\n MONTH_YEAR: '%m-%Y',\n DAY_MONTH: '%d-%m',\n YEAR: '%Y',\n MONTH: '%m',\n DAY: '%d',\n interval: {\n default: '%Y-%m-%dT%H:%M:%S',\n second: '%Y-%m-%dT%H:%M:%S',\n minute: '%Y-%m-%dT%H:%M',\n hour: '%Y-%m-%dT%H:00',\n day: '%Y-%m-%d',\n week: '%Y-%V',\n month: '%Y-%m',\n year: '%Y'\n }\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 the number of abscissa elements',\n limitMaxNb: 'Maximum number of 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 selected datasource',\n aggNoResult: 'No results to display',\n interval: 'Specify interval step',\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 Provoly: 'Provoly'\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 color: 'Color',\n sort: {\n title: 'Sort',\n attribute: 'Attribute',\n direction: 'Direction',\n asc: {\n quantitative: 'Low to high',\n nominal: 'Alphabetical',\n ordinal: 'Alphabetical',\n temporal: 'Chronological'\n },\n desc: {\n quantitative: 'High to low',\n nominal: 'Reverse alphabetical',\n ordinal: 'Reverse alphabetical',\n temporal: 'Antichronological'\n },\n by: {\n operation: {\n none: 'Ordinate',\n count: 'Occurrence',\n cardinality: 'Unique occurrences'\n }\n }\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 specializedLocale: {\n default: '%Y-%m-%dT%H:%M:%S',\n DATETIME: '%Y/%m/%d %H:%M:%S',\n DATE: '%d/%m/%Y',\n MONTH_YEAR: '%m/%Y',\n DAY_MONTH: '%d/%m',\n YEAR: '%Y',\n MONTH: '%m',\n DAY: '%d',\n interval: {\n default: '%Y-%m-%dT%H:%M:%S',\n second: '%d/%m/%Y %H:%M:%S',\n minute: '%d/%m/%Y %H:%M',\n hour: '%d/%m/%Y %H:00',\n day: '%d/%m/%Y',\n week: '%V %Y',\n month: '%m %Y',\n year: '%Y'\n }\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 le nombre d'éléments affichés en abscisses\",\n limitMaxNb: \"Nombre d'élements maximum\",\n interval: 'Intervalle des données',\n timeInterval: 'Intervalle de temps',\n specifyInterval: \"Spécifier le pas de l'intevalle\",\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 datasource sélectionnée',\n aggNoResult: '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 Provoly: 'Provoly'\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 color: 'Couleur',\n sort: {\n title: 'Tri',\n attribute: 'Attribut',\n direction: 'Direction',\n asc: {\n quantitative: 'Croissant',\n ordinal: 'Alphabétique',\n nominal: 'Alphabétique',\n temporal: 'Chronologique'\n },\n desc: {\n quantitative: 'Décroissant',\n ordinal: 'Anti-alphabétique',\n nominal: 'Anti-alphabétique',\n temporal: 'Antéchronologique'\n },\n by: {\n operation: {\n none: 'Ordonnée',\n count: \"Nombre d'occurences\",\n cardinality: \"Nombre d'occurences uniques\"\n }\n }\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, ReactiveFormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryAggregationService,\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 { PryWidgetAggregatedChartCssComponent } from './style/css.component';\nimport { PryColorPickerModule } from '@provoly/dashboard/components/color-picker';\nimport { PrySchemePickerModule } from '@provoly/dashboard/components/scheme-picker';\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 ReactiveFormsModule,\n PryColorPickerModule,\n PrySchemePickerModule\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7.PryWidgetAggregatedChartCssComponent","i1"],"mappings":"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"}
1
+ {"version":3,"file":"provoly-dashboard-widgets-widget-aggregated-chart.mjs","sources":["../../../../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/provoly-dashboard-widgets-widget-aggregated-chart.ts"],"sourcesContent":["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 AggregationResult,\n Attribute,\n ChartAggregatedWidgetOptions,\n Class,\n ClassSelectors,\n Dataset,\n DataWidgetComponent,\n Field,\n FieldSelectors,\n FieldType,\n GraphType,\n MonoClassSearchPayload,\n MultiClassSearchPayload,\n NamedQuery,\n NamedQueryTypes,\n Operation,\n PryAggregationService,\n PryI18nService,\n SearchActions,\n Sort,\n ValueType,\n VegaType,\n WIDGET_HEADER_HEIGHT\n} from '@provoly/dashboard';\nimport {\n BehaviorSubject,\n catchError,\n combineLatest,\n debounceTime,\n filter,\n fromEvent,\n map,\n Observable,\n share,\n startWith,\n Subject,\n switchMap,\n tap,\n throwError,\n withLatestFrom\n} from 'rxjs';\nimport { View } from 'vega';\nimport embed, { vega } from 'vega-embed';\nimport { DeepPartial, mergeDeep, TopLevelSpec } from 'vega-lite';\nimport { initConfig } from 'vega-lite/build/src/config';\nimport { PrySchemeService } from '@provoly/dashboard/components/scheme-picker';\n\nexport const CHART_INTERVAL_STEP = 3;\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; name: any; field: any };\n groupBy: { vegaType: VegaType; field: any; name: any };\n abscissa: { vegaType: VegaType; field: any; name: 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 copyOrdinateField?: Field;\n noData$: Observable<boolean>;\n sortActive? = 'name';\n sortDirection? = 'asc';\n sortValues$: Observable<{ value: 'key' | 'value'; attrId?: string; label?: string; isDisplayed: boolean }[]>;\n sortDirections = [\n { value: 'asc', label: '' },\n { value: 'desc', label: '' }\n ];\n noAggregationData$: Observable<boolean>;\n allowedClasses$: Observable<Class[]>;\n // @ts-ignore\n colors = vega.scheme('Provoly');\n DEFAULT_ITEM_LIMIT = 20;\n\n constructor(\n store: Store<any>,\n private translateService: PryI18nService,\n el: ElementRef,\n private aggregationService: PryAggregationService,\n private schemeService: PrySchemeService\n ) {\n super(store, el);\n this.fields$ = this.store.select(FieldSelectors.fields);\n this.classes$ = this.store.select(ClassSelectors.classes);\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$ = combineLatest([this.manifest$, this.classes$]).pipe(\n map(([manifest, classes]) => {\n const options = manifest.options as ChartAggregatedWidgetOptions;\n const abscissa = classes\n .map((clazz) => clazz.attributes.find((attr) => attr.id === options.abscissa?.attribute))\n .find((attr) => !!attr);\n\n const fixInterval = this.fixInterval(options, abscissa);\n\n return mergeDeep(\n {\n graph: { type: GraphType.BAR, tooltip: true, legend: false },\n abscissa: { keep0: true },\n ordinate: { keep0: true }\n } as ChartAggregatedWidgetOptions,\n (options ?? {}) as DeepPartial<ChartAggregatedWidgetOptions>,\n fixInterval as DeepPartial<ChartAggregatedWidgetOptions>\n ) as ChartAggregatedWidgetOptions;\n })\n );\n this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n this.optionsCopy$.next(structuredClone(options));\n });\n\n this.operations$ = combineLatest([this.usedDatasources$, this.classes$, this.fields$]).pipe(\n map(([datasources, classes, fields]) =>\n classes\n .filter((clazz) => datasources.map((ds) => ('oClass' in ds ? ds.oClass : undefined)).includes(clazz.id))\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => [FieldType.INTEGER, FieldType.DECIMAL, FieldType.LONG].includes(attr.field.type))\n )\n .reduce((a, b) => [...a, ...b], [])\n .filter((attr) => !!attr)\n ),\n map((attributes) =>\n (attributes.length > 0\n ? Object.values(Operation).filter((operation) => operation !== Operation.EXTENT)\n : [Operation.COUNT, Operation.DISTINCT, Operation.NONE]\n )\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.allowedClasses$ = combineLatest([this.classes$, this.usedDatasources$]).pipe(\n map(([classes, datasources]) => {\n const hasFullText = datasources\n .map((ds) => ds.sourceType === 'namedQuery' && ds.request.type === NamedQueryTypes.MULTI_CLASS)\n .reduce((p, c) => p || c, false);\n\n const multiClassDatasourcesClasses = datasources\n .filter((ds) => ds.sourceType === 'namedQuery' && ds.request.type === NamedQueryTypes.MULTI_CLASS)\n .map((multiDs) => (multiDs as NamedQuery).request as MultiClassSearchPayload)\n .map((payload) => payload.oClasses);\n\n const hasMultiNoClass = multiClassDatasourcesClasses.includes(undefined);\n\n const multiClasses = (\n multiClassDatasourcesClasses.filter((classes) => !!classes) as unknown as string[]\n ).reduce((p, c) => [...p, ...c], [] as string[]);\n\n const singleClasses = datasources\n .filter(\n (ds) =>\n (ds.sourceType === 'namedQuery' && ds.request.type === NamedQueryTypes.MONO_CLASS) ||\n ds.sourceType === 'dataset'\n )\n .map(\n (singleDs) =>\n (singleDs as Dataset).oClass ?? ((singleDs as NamedQuery).request as MonoClassSearchPayload).oClass\n );\n\n return classes.filter(\n (clazz) =>\n hasFullText || hasMultiNoClass || multiClasses.includes(clazz.id) || singleClasses.includes(clazz.id)\n );\n })\n );\n\n this.abscissaAttributes$ = combineLatest([this.fields$, this.allowedClasses$, this.optionsCopy$]).pipe(\n map(([fields, allowedClasses, optionCopy]) =>\n allowedClasses\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field.id;\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.fields$,\n this.allowedClasses$,\n this.triggerOrdinateAttributes$\n ]).pipe(\n map(([fields, allowedClasses]) =>\n allowedClasses\n .map((clazz) => clazz.attributes)\n .map((attrs) =>\n attrs.filter((attr) => {\n const field = fields.find((field) => {\n return field.id === attr.field.id;\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 ]\n .map((op) => op.toString())\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.optionsCopy$, this.fields$, this.classes$]).pipe(\n filter(([options, fields, classes]) => !!options && !!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 return {\n abscissa: {\n field: abscissa?.field,\n vegaType: this.translateToVegaType(abscissa?.field.type, abscissa?.name ?? ''),\n name: abscissa?.name ?? ''\n },\n ordinate: {\n field: ordinate?.field,\n vegaType:\n options!.ordinate.operation === Operation.COUNT || options!.ordinate.operation === Operation.DISTINCT\n ? VegaType.QUANTITATIVE\n : this.translateToVegaType(ordinate?.field.type, ordinate?.name ?? ''),\n name: ordinate?.name ?? ''\n },\n groupBy: {\n field: groupBy?.field,\n vegaType: this.translateToVegaType(groupBy?.field.type, groupBy?.name),\n name: groupBy?.name ?? ''\n }\n };\n })\n );\n\n this.aggregatedValues$ = combineLatest([\n this.datasourceIds$,\n this.options$,\n combineLatest([fromEvent(window, 'datasourceRefresh'), this.datasourceIds$]).pipe(\n filter(([event, datasources]) =>\n datasources.includes((event as CustomEvent).detail.replace(/$aggregate!/, ''))\n ),\n startWith(undefined)\n )\n ]).pipe(\n debounceTime(100),\n tap(([datasources]) => this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: true }))),\n switchMap(([datasources, options]) =>\n this.aggregationService.aggregate(datasources, options).pipe(\n tap(() => this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: false }))),\n catchError((err) => {\n this.store.dispatch(SearchActions.setSearchLoading({ datasources, start: false }));\n return throwError(err);\n })\n )\n ) as any,\n withLatestFrom(this.options$),\n map(([aggregate, options]: [AggregationResult, ChartAggregatedWidgetOptions]) => {\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 }) as any,\n startWith({ operation: Operation.NONE, data: {} }) as any,\n share()\n );\n\n this.noData$ = this.datasourceIds$.pipe(map((ids) => ids.length === 0));\n this.noAggregationData$ = this.aggregatedValues$.pipe(map(({ 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\n ([options.groupBy?.color, options.circleColorScheme].filter((scheme) => !!scheme) as string[]).forEach(\n (scheme) => {\n this.schemeService.assertScheme(scheme);\n }\n );\n return mergeDeep(\n {\n $schema: 'https://vega.github.io/schema/vega-lite/v5.json',\n title: this.getTitle(options as ChartAggregatedWidgetOptions),\n width: 'container',\n height: (size.height ?? 100) - (display ? WIDGET_HEADER_HEIGHT.value : 0),\n padding: 10,\n autosize: { type: 'fit', contains: 'padding' },\n data: { values: structuredClone(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: this.getAbscissaType(types.abscissa.vegaType, options),\n axis: {\n grid: false,\n ...WidgetAggregatedChartComponent.minTick(types.abscissa.field?.type ?? FieldType.STRING),\n labelExpr: this.getLabelExpr(\n 'x',\n types.abscissa.vegaType,\n options?.abscissa?.interval as any,\n types.abscissa.field\n ),\n ...this.getLabelAngle(types.abscissa.vegaType, values.data)\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 reverse: this.reverseAxis(options, types)\n },\n ...this.getSort(options.abscissa.attribute, options.graph?.sort),\n timeUnit: this.getTimeUnit(options, types)\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.field?.type ?? FieldType.STRING),\n ...this.setTickCount(values.data),\n labelExpr: this.getLabelExpr('y', types.ordinate.vegaType, undefined, types.ordinate.field)\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 ? (!options.groupBy ? undefined : 'series') : 'key',\n legend: options.graph.legend,\n scale: !isCircular\n ? options.groupBy\n ? { scheme: options.groupBy?.color ?? this.schemeService.getDefaultScheme() }\n : undefined\n : { scheme: options.circleColorScheme ?? this.schemeService.getDefaultScheme() },\n value:\n !isCircular && !options.groupBy\n ? options.baseColor ?? this.schemeService.getSchemeColors(this.schemeService.getDefaultScheme())\n : undefined\n },\n xOffset:\n stacked &&\n options.groupBy &&\n this.getAbscissaType(types.abscissa.vegaType, options) !== VegaType.TEMPORAL\n ? { field: 'series' }\n : 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 ...this.getDataFormat(\n types.abscissa.vegaType,\n options?.abscissa?.interval as any,\n types.abscissa.field\n )\n },\n {\n field: 'value',\n type: types.ordinate.vegaType,\n title: options.ordinate.label,\n ...this.getDataFormat(types.ordinate.vegaType, undefined, types.ordinate.field)\n },\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 ...this.getDataFormat(\n types.abscissa.vegaType,\n options?.abscissa?.interval as any,\n types.abscissa.field\n )\n },\n {\n field: 'value',\n type: types.ordinate.vegaType,\n title: options.ordinate.label,\n ...this.getDataFormat(types.ordinate.vegaType, undefined, types.ordinate.field)\n }\n ]\n : undefined\n }\n }\n ],\n config: this.getChartConfig()\n } as any,\n options.additionalSpec\n );\n })\n );\n\n this.sortValues$ = this.optionsCopy$.pipe(\n map((options) => {\n return [\n {\n attrId: options?.abscissa.attribute,\n label: options?.abscissa.label,\n value: 'key' as 'key' | 'value',\n isDisplayed: true\n },\n {\n attrId: options?.ordinate.attribute,\n label: options?.ordinate.attribute\n ? options?.ordinate.label\n : this.translateService.instant(`@pry.widget.chart.sort.by.operation.${options?.ordinate.operation}`),\n value: 'value' as 'key' | 'value',\n isDisplayed: !!options?.ordinate\n }\n ].filter((value) => value.isDisplayed);\n })\n );\n\n this.subscriptions.add(\n combineLatest([this.optionsCopy$, this.sortValues$, this.attributeTypes$, this.classes$]).subscribe(\n ([options, sortValues, attrTypes, classes]) => {\n this.sortDirections = this.sortDirections\n .map((sortDir) => {\n let attribute = classes\n .map((clazz) =>\n clazz.attributes.find(\n (attr) =>\n attr.id === sortValues.find((sortValue) => sortValue.value === options?.graph.sort?.value)?.attrId\n )\n )\n .find((attr) => !!attr);\n return {\n value: sortDir.value,\n label: this.translateService.instant(\n `@pry.widget.chart.sort.${sortDir.value}.${\n attrTypes.abscissa.name === attribute?.name\n ? attrTypes.abscissa.vegaType\n : attrTypes.ordinate.vegaType\n }`\n )\n };\n })\n .sort((a, b) => a.label.localeCompare(b.label));\n }\n )\n );\n }\n\n private fixInterval(\n options: ChartAggregatedWidgetOptions,\n abscissa: Attribute | undefined\n ): Partial<ChartAggregatedWidgetOptions> {\n const fixInterval = { abscissa: options.abscissa ?? {} } as ChartAggregatedWidgetOptions;\n if (options?.graph?.type !== GraphType.HISTOGRAM) {\n fixInterval.abscissa.interval = undefined;\n return fixInterval;\n }\n if (!!abscissa) {\n let newIntervalValue =\n options.abscissa?.interval ?? (abscissa.field.type !== FieldType.INSTANT ? CHART_INTERVAL_STEP : 'second');\n // if date time interval and field is not date, reinitializing interval value\n if (typeof options?.abscissa?.interval === 'string' && abscissa.field.type !== FieldType.INSTANT) {\n newIntervalValue = CHART_INTERVAL_STEP;\n }\n // if numeric interval and field is date, reinitializing interval value\n if (typeof options?.abscissa?.interval !== 'string' && abscissa.field.type === FieldType.INSTANT) {\n newIntervalValue = 'second';\n }\n fixInterval.abscissa.interval = newIntervalValue;\n }\n return fixInterval;\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(JSON.stringify(spec));\n embed(this.vega.nativeElement, structuredClone(spec), {\n actions: false,\n renderer: 'canvas',\n formatLocale: this.translateService.instantObject('@pry.widget.chart.numberLocale'),\n timeFormatLocale: this.translateService.instantObject('@pry.widget.chart.timeFormatLocale'),\n tooltip: {\n theme: 'custom'\n }\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 if (\n this.optionsCopy$.value &&\n (!!this.optionsCopy$.value?.abscissa.limit || this.optionsCopy$.value?.abscissa.limit === undefined)\n ) {\n this.toggleLimitItems(true);\n }\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 getSort(abscissa: string, sort?: Sort) {\n return sort ? { sort: { field: sort.value, order: sort.direction + 'ending' } } : {};\n }\n\n override 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 openData() {\n (this.openData$ as Subject<void>).next(undefined);\n }\n\n private getTitle(options: ChartAggregatedWidgetOptions) {\n return options.graph?.title ?? undefined;\n }\n\n getChartConfig() {\n return initConfig({\n style: {\n 'guide-label': {\n // axis tick titles\n font: 'Ubuntu, sans-serif',\n fontSize: 12,\n fontWeight: 400,\n fill: '#263340'\n },\n 'guide-title': {\n // axis title\n font: 'Ubuntu, sans-serif',\n fontSize: 12,\n fontWeight: 600,\n fill: '#3E546A'\n },\n 'group-title': {\n // chart title\n font: 'Ubuntu, sans-serif',\n fontSize: 12,\n fontWeight: 400,\n fill: '#263340'\n },\n 'group-subtitle': {\n // not sure\n font: 'Ubuntu, sans-serif',\n fontSize: 12,\n fontWeight: 600,\n fill: '#263340'\n }\n }\n });\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n if ([GraphType.CIRCULAR, GraphType.DONUT].map((gt) => gt.toString()).includes($event)) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: undefined,\n circleColorScheme: this.optionsCopy$.value?.circleColorScheme ?? 'Provoly'\n } as ChartAggregatedWidgetOptions);\n }\n this.enableIntervals([GraphType.HISTOGRAM.toString()].includes($event));\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n }\n setTimeout(() => this.triggerOrdinateAttributes$.next(), 10);\n }\n }\n\n changeAbscissa($event: string) {\n if ($event && this.optionsCopy$.value) {\n const attr = this.classes\n .map((clazz) => clazz.attributes)\n .reduce((a, b) => [...a, ...b], [])\n .find((attr) => attr.id === $event);\n\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n attribute: $event,\n label: attr?.name ?? 'attr-not-found',\n interval: this.fixInterval(\n { ...this.optionsCopy$.value!, abscissa: { ...this.optionsCopy$.value!.abscissa, attribute: $event } },\n attr\n ).abscissa?.interval\n }\n } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n\n this.copyOrdinateField = this.fields.find((field) => attr?.field.id === 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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n }\n }\n\n enableIntervals($event: any) {\n const attr = this.classes\n .map((clazz) => clazz.attributes)\n .reduce((a, b) => [...a, ...b], [])\n .find((attr) => attr.id === this.optionsCopy$.value?.abscissa?.attribute);\n if (attr) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n interval: $event ? this.fixInterval(this.optionsCopy$.value!, attr).abscissa?.interval : undefined\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeInterval($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n interval: +$event\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeTimeInterval($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n interval: $event\n }\n } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\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: {\n attribute: this.optionsCopy$.value?.groupBy?.attribute ?? '',\n color: this.schemeService.getDefaultScheme()\n }\n } as ChartAggregatedWidgetOptions);\n } else {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n groupBy: undefined\n } as ChartAggregatedWidgetOptions);\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 } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeColorScheme($event: any) {\n if (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 } as ChartAggregatedWidgetOptions);\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 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 } as ChartAggregatedWidgetOptions);\n }\n }\n\n toggleSort($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: {\n ...this.optionsCopy$.value?.graph,\n sort: $event\n ? this.optionsCopy$.value?.graph.sort ?? {\n value: 'key',\n direction: 'asc'\n }\n : undefined\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeSortValue($event: 'key' | 'value') {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: {\n ...this.optionsCopy$.value?.graph,\n sort: {\n ...this.optionsCopy$.value?.graph.sort!,\n value: $event,\n direction:\n this.optionsCopy$.value.graph.type === GraphType.HISTOGRAM\n ? 'asc'\n : this.optionsCopy$.value?.graph.sort?.direction\n }\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeSortDirection($event: 'asc' | 'desc') {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n graph: {\n ...this.optionsCopy$.value?.graph,\n sort: { ...this.optionsCopy$.value?.graph.sort!, direction: $event }\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n toggleLimitItems($event: boolean) {\n if (this.optionsCopy$.value) {\n if (\n $event !== !!this.optionsCopy$.value?.abscissa.limit ||\n this.optionsCopy$.value?.abscissa.limit === undefined\n ) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: this.optionsCopy$.value?.abscissa.limit ? null : this.DEFAULT_ITEM_LIMIT\n }\n } as ChartAggregatedWidgetOptions);\n }\n }\n }\n\n changeLimitValue($event: number | null) {\n if (this.optionsCopy$.value && $event !== null) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n abscissa: {\n ...this.optionsCopy$.value?.abscissa,\n limit: $event > 0 ? $event : 1\n }\n } as ChartAggregatedWidgetOptions);\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 changeCircleColorScheme($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n circleColorScheme: $event\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n changeBaseColor($event: any) {\n if (this.optionsCopy$.value) {\n this.optionsCopy$.next({\n ...this.optionsCopy$.value,\n baseColor: $event\n } as ChartAggregatedWidgetOptions);\n }\n }\n\n getLabelAngle(abscissaType: VegaType, data: { key: string | number; value: any }[]) {\n if (\n ([VegaType.NOMINAL, VegaType.ORDINAL].map((vt) => vt.toString()).includes(abscissaType) &&\n data.some((item: { key: string | number; value: any }) => item.key.toString().length > 10)) ||\n [VegaType.TEMPORAL].map((vt) => vt.toString()).includes(abscissaType)\n ) {\n return { labelAngle: -30 };\n }\n return {};\n }\n\n getAbscissaType(abscissaVegaType: VegaType, options: ChartAggregatedWidgetOptions) {\n if (abscissaVegaType === VegaType.TEMPORAL) {\n return options.graph.type !== GraphType.BAR\n ? abscissaVegaType\n : options.graph.sort?.value === 'value'\n ? VegaType.ORDINAL\n : VegaType.TEMPORAL;\n }\n return !!options.graph.sort ? VegaType.ORDINAL : abscissaVegaType;\n }\n\n isTimeInterval(abscissaInterval: string | number) {\n return typeof abscissaInterval === 'string';\n }\n\n getLabelExpr(axis: 'x' | 'y', axisType: string, interval: string | undefined, field?: Field) {\n const truncateBasedOn = axis === 'x' ? 'height < 300' : 'width < 100';\n const timeFormat = `timeFormat(datum.value, '${this.getLocaleFormat(field?.format, interval)}')`;\n const numberFormat = field?.decimalPrecision\n ? `format(datum.value, '.${field?.decimalPrecision}f')`\n : 'datum.value';\n const truncatedFormat = 'truncate(datum.value, 10)';\n\n return axisType === VegaType.TEMPORAL\n ? timeFormat\n : `${axisType === VegaType.QUANTITATIVE ? numberFormat : `${truncateBasedOn} ? ${truncatedFormat} : datum.value`}`;\n }\n\n getDataFormat(axisType: string, interval: string | undefined, field?: Field) {\n switch (axisType) {\n case VegaType.TEMPORAL:\n return { format: this.getLocaleFormat(field?.format, interval), scale: { type: 'utc' } };\n case VegaType.QUANTITATIVE:\n return field?.decimalPrecision ? { format: `.${field?.decimalPrecision}f` } : {};\n default:\n return {};\n }\n }\n\n getLocaleFormat(type: string | undefined, interval: string | undefined) {\n if (!interval) {\n const formats = this.translateService.instantObject('@pry.widget.chart.specializedLocale');\n return formats[type ?? 'default'];\n } else {\n const formats = this.translateService.instantObject('@pry.widget.chart.specializedLocale.interval');\n return formats[interval ?? 'default'];\n }\n }\n\n private getTimeUnit(options: ChartAggregatedWidgetOptions, types: any) {\n if (\n options?.graph.type !== GraphType.HISTOGRAM ||\n types.abscissa.vegaType !== VegaType.TEMPORAL ||\n !options?.abscissa?.interval\n ) {\n return undefined;\n }\n const vegaTimeUnits = {\n year: 'binnedyear',\n month: 'binnedyearmonth',\n week: 'binnedyearweek',\n day: 'binnedyearmonthdate',\n hour: 'binnedyearmonthdatehours',\n minute: 'binnedyearmonthdatehoursminutes',\n second: 'binnedyearmonthdatehoursminutesseconds'\n } as { [key: string]: string };\n\n return vegaTimeUnits[options.abscissa.interval as string];\n }\n\n private reverseAxis(options: ChartAggregatedWidgetOptions, types: any) {\n if (options?.graph.type !== GraphType.HISTOGRAM && options?.graph.type !== GraphType.BAR) {\n return undefined;\n }\n return (\n types.abscissa.vegaType === VegaType.TEMPORAL &&\n options?.graph.sort?.value === 'key' &&\n options?.graph.sort?.direction === 'desc'\n );\n }\n}\n","<pry-widget-aggregated-chart-css></pry-widget-aggregated-chart-css>\n@if (optionsCopy$ | async; as optionsCopy) {\n <div class=\"o-widget o-widget--chart\" [class.-has-header]=\"displayHeader$ | async\">\n @if (displayHeader$ | async) {\n <pry-widget-header\n [datasourceIds]=\"(datasourceIds$ | async) ?? []\"\n [widgetIndex]=\"widgetIndex\"\n [manifest]=\"manifest\"\n (manifestModified)=\"manifestModified.emit($event)\"\n #header\n [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n [displayCount]=\"false\"\n [openData$]=\"openData$\"\n >\n <pry-settings\n (saveTriggered)=\"emitManifest()\"\n (changeTitle)=\"changeWidgetTitle($event)\"\n [headerPresent]=\"displayHeader$ | async\"\n [widgetIndex]=\"widgetIndex\"\n [open$]=\"open$\"\n [header]=\"header\"\n class=\"o-settings\"\n >\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-edit-input\n label=\"@pry.widget.chart.title\"\n (ngModelChange)=\"changeChartTitle($event)\"\n [ngModel]=\"optionsCopy.graph.title\"\n ></pry-edit-input>\n </div>\n\n @if (optionsCopy) {\n <div 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 [items]=\"typeOptions\"\n [ngModel]=\"optionsCopy.graph.type\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"chart_type\"\n ></pry-select>\n </div>\n }\n\n @if (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 }\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 </div>\n\n @if (!!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 [items]=\"abscissaAttributes$ | async | prySortData: sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.abscissa.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n id=\"abscissa\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeAbscissaLabel($event)\"\n [ngModel]=\"optionsCopy.abscissa.label\"\n ></pry-edit-input>\n </div>\n\n @if (\n ['quantitative', 'temporal'].includes(\n (attributeTypes$ | async)?.abscissa?.vegaType?.toString() ?? '--'\n ) &&\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR\n ) {\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"changeKeep0Abscissa($event)\" [ngModel]=\"optionsCopy.abscissa.keep0\"\n >{{ '@pry.widget.chart.origin' | i18n }}\n </pry-checkbox>\n\n @if (optionsCopy.graph.type === GraphType.HISTOGRAM) {\n <pry-checkbox\n (ngModelChange)=\"enableIntervals($event)\"\n [ngModel]=\"!!optionsCopy.abscissa.interval\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n >{{ '@pry.widget.chart.interval' | i18n }}\n </pry-checkbox>\n\n @if (!!optionsCopy.abscissa.interval) {\n @if (!isTimeInterval(optionsCopy.abscissa.interval)) {\n <pry-range\n [ngModel]=\"optionsCopy.abscissa.interval\"\n (ngModelChange)=\"changeInterval($event)\"\n labelTranslate=\"@pry.widget.chart.specifyInterval\"\n min=\"1\"\n max=\"10\"\n ></pry-range>\n } @else {\n <label class=\"a-label\" for=\"time_interval\">{{ '@pry.widget.chart.timeInterval' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeTimeInterval($event)\"\n [items]=\"['second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year']\"\n [ngModel]=\"optionsCopy.abscissa.interval\"\n i18nPrefix=\"@pry.widget.chart.time.\"\n id=\"time_interval\"\n ></pry-select>\n }\n }\n }\n </div>\n }\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 [items]=\"operations$ | async\"\n [ngModel]=\"optionsCopy.ordinate.operation\"\n bindLabel=\"label\"\n bindValue=\"id\"\n id=\"operations\"\n ></pry-select>\n </div>\n\n @if (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 [items]=\"ordinateAttributes$ | async | prySortData: sortActive : sortDirection\"\n [ngModel]=\"optionsCopy.ordinate.attribute\"\n bindLabel=\"name\"\n bindValue=\"id\"\n id=\"ordinate\"\n ></pry-select>\n </div>\n }\n\n <div class=\"m-form-label-field\">\n <pry-edit-input\n label=\"@pry.widget.chart.dataLabel\"\n (ngModelChange)=\"changeOrdinateLabel($event)\"\n [ngModel]=\"optionsCopy.ordinate.label\"\n ></pry-edit-input>\n </div>\n\n @if (translateToVegaType(copyOrdinateField?.type) === 'quantitative') {\n <div 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 }\n </div>\n\n @if (optionsCopy.graph.type !== GraphType.DONUT && optionsCopy.graph.type !== GraphType.CIRCULAR) {\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 @if (!!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 id=\"chart_seriesAttr\"\n ></pry-select>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-scheme-picker\n (ngModelChange)=\"changeColorScheme($event)\"\n [ngModel]=\"optionsCopy.groupBy.color\"\n ></pry-scheme-picker>\n </div>\n\n <div class=\"m-form-label-field\">\n <pry-checkbox [ngModel]=\"optionsCopy.graph.stacked\" (ngModelChange)=\"toggleStacked($event)\">\n {{ '@pry.widget.chart.stacked' | i18n }}\n </pry-checkbox>\n </div>\n }\n </div>\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox\n (ngModelChange)=\"toggleLimitItems($event)\"\n [ngModel]=\"optionsCopy.abscissa.limit !== undefined && optionsCopy.abscissa.limit !== null\"\n >\n {{ '@pry.widget.chart.limit' | i18n }}\n </pry-checkbox>\n </div>\n @if (optionsCopy.abscissa.limit !== undefined && optionsCopy.abscissa.limit !== null) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_limitItemsValue\">{{\n '@pry.widget.chart.limitMaxNb' | i18n\n }}</label>\n <input\n type=\"number\"\n id=\"chart_limitItemsValue\"\n class=\"a-form-field\"\n [ngModel]=\"optionsCopy.abscissa.limit\"\n (ngModelChange)=\"changeLimitValue($event)\"\n min=\"1\"\n step=\"1\"\n [attr.aria-invalid]=\"optionsCopy.abscissa.limit < 1\"\n />\n </div>\n }\n </div>\n <div class=\"o-settings__popup__content__fields -condensed\">\n <div class=\"m-form-label-field\">\n <pry-checkbox (ngModelChange)=\"toggleSort($event)\" [ngModel]=\"!!optionsCopy.graph.sort\"\n >{{ '@pry.widget.chart.sort.title' | i18n }}\n </pry-checkbox>\n </div>\n @if (!!optionsCopy.graph.sort) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_sortValue\">{{ '@pry.widget.chart.sort.attribute' | i18n }}</label>\n <pry-select\n (ngModelChange)=\"changeSortValue($event)\"\n [ngModel]=\"optionsCopy.graph.sort.value\"\n [items]=\"sortValues$ | async\"\n bindValue=\"value\"\n bindLabel=\"label\"\n id=\"chart_sortValue\"\n [disabled]=\"optionsCopy.graph.type === GraphType.HISTOGRAM\"\n ></pry-select>\n </div>\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_sortDirection\">{{\n '@pry.widget.chart.sort.direction' | i18n\n }}</label>\n <pry-select\n (ngModelChange)=\"changeSortDirection($event)\"\n [ngModel]=\"optionsCopy.graph.sort.direction\"\n [items]=\"sortDirections\"\n bindValue=\"value\"\n bindLabel=\"label\"\n id=\"chart_sortDirection\"\n ></pry-select>\n </div>\n }\n </div>\n }\n\n @if (optionsCopy.graph.type === GraphType.DONUT || optionsCopy.graph.type === GraphType.CIRCULAR) {\n <pry-scheme-picker\n (ngModelChange)=\"changeCircleColorScheme($event)\"\n [ngModel]=\"optionsCopy.circleColorScheme\"\n ></pry-scheme-picker>\n }\n\n @if (\n optionsCopy.graph.type !== GraphType.DONUT &&\n optionsCopy.graph.type !== GraphType.CIRCULAR &&\n !optionsCopy.groupBy\n ) {\n <div class=\"m-form-label-field\">\n <label class=\"a-label\" for=\"chart_baseColor\">{{ '@pry.widget.chart.color' | i18n }}</label>\n <pry-color-picker\n (ngModelChange)=\"changeBaseColor($event)\"\n [ngModel]=\"optionsCopy.baseColor\"\n id=\"chart_baseColor\"\n ></pry-color-picker>\n <ng-template #templateOption let-item=\"item\">\n <div class=\"aligned-option\">\n <div class=\"a-chip -md\" [style.background-color]=\"item\">{{ item }}</div>\n </div>\n </ng-template>\n </div>\n }\n }\n </pry-settings>\n </pry-widget-header>\n }\n\n @if ((isChartValid$ | async) && !(noData$ | async) && !(noAggregationData$ | async)) {\n <div #vega></div>\n }\n\n @if (noData$ | async) {\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.noData' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.noData' | i18n }}</span>\n <button type=\"button\" (click)=\"openData()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.tooltip.readSearch' | i18n }}</span>\n </button>\n </div>\n }\n\n @if (!(noData$ | async) && (noAggregationData$ | async)) {\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.aggNoResult' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.aggNoResult' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n }\n\n @if (!(noData$ | async) && !(noAggregationData$ | async) && !(isChartValid$ | async)) {\n <div class=\"o-widget__choose-parameters\">\n <img\n class=\"no-result__search\"\n src=\"../../../assets/svgs/pry_recherche_pas_de_resultat.svg\"\n alt=\"{{ '@pry.widget.chart.chooseParameters' | i18n }}\"\n aria-hidden=\"true\"\n />\n <span class=\"no-result__text\">{{ '@pry.widget.chart.chooseParameters' | i18n }}</span>\n <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n <pry-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></pry-icon>\n <span>{{ '@pry.widget.settings.title' | i18n }}</span>\n </button>\n </div>\n }\n </div>\n}\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 specializedLocale: {\n default: '%Y-%m-%dT%H:%M:%S',\n DATETIME: '%Y-%m-%dT%H:%M:%S',\n DATE: '%Y-%m-%d',\n MONTH_YEAR: '%m-%Y',\n DAY_MONTH: '%d-%m',\n YEAR: '%Y',\n MONTH: '%m',\n DAY: '%d',\n interval: {\n default: '%Y-%m-%dT%H:%M:%S',\n second: '%Y-%m-%dT%H:%M:%S',\n minute: '%Y-%m-%dT%H:%M',\n hour: '%Y-%m-%dT%H:00',\n day: '%Y-%m-%d',\n week: '%Y-%V',\n month: '%Y-%m',\n year: '%Y'\n }\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 the number of abscissa elements',\n limitMaxNb: 'Maximum number of 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 selected datasource',\n aggNoResult: 'No results to display',\n interval: 'Specify interval step',\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 Provoly: 'Provoly'\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 color: 'Color',\n sort: {\n title: 'Sort',\n attribute: 'Attribute',\n direction: 'Direction',\n asc: {\n quantitative: 'Low to high',\n nominal: 'Alphabetical',\n ordinal: 'Alphabetical',\n temporal: 'Chronological'\n },\n desc: {\n quantitative: 'High to low',\n nominal: 'Reverse alphabetical',\n ordinal: 'Reverse alphabetical',\n temporal: 'Antichronological'\n },\n by: {\n operation: {\n none: 'Ordinate',\n count: 'Occurrence',\n cardinality: 'Unique occurrences'\n }\n }\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 specializedLocale: {\n default: '%Y-%m-%dT%H:%M:%S',\n DATETIME: '%Y/%m/%d %H:%M:%S',\n DATE: '%d/%m/%Y',\n MONTH_YEAR: '%m/%Y',\n DAY_MONTH: '%d/%m',\n YEAR: '%Y',\n MONTH: '%m',\n DAY: '%d',\n interval: {\n default: '%Y-%m-%dT%H:%M:%S',\n second: '%d/%m/%Y %H:%M:%S',\n minute: '%d/%m/%Y %H:%M',\n hour: '%d/%m/%Y %H:00',\n day: '%d/%m/%Y',\n week: '%V %Y',\n month: '%m %Y',\n year: '%Y'\n }\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 le nombre d'éléments affichés en abscisses\",\n limitMaxNb: \"Nombre d'élements maximum\",\n interval: 'Intervalle des données',\n timeInterval: 'Intervalle de temps',\n specifyInterval: \"Spécifier le pas de l'intevalle\",\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 datasource sélectionnée',\n aggNoResult: '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 Provoly: 'Provoly'\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 color: 'Couleur',\n sort: {\n title: 'Tri',\n attribute: 'Attribut',\n direction: 'Direction',\n asc: {\n quantitative: 'Croissant',\n ordinal: 'Alphabétique',\n nominal: 'Alphabétique',\n temporal: 'Chronologique'\n },\n desc: {\n quantitative: 'Décroissant',\n ordinal: 'Anti-alphabétique',\n nominal: 'Anti-alphabétique',\n temporal: 'Antéchronologique'\n },\n by: {\n operation: {\n none: 'Ordonnée',\n count: \"Nombre d'occurences\",\n cardinality: \"Nombre d'occurences uniques\"\n }\n }\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, ReactiveFormsModule } from '@angular/forms';\nimport {\n BaseWidgetComponent,\n BaseWidgetModule,\n PryAggregationService,\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 { PryWidgetAggregatedChartCssComponent } from './style/css.component';\nimport { PryColorPickerModule } from '@provoly/dashboard/components/color-picker';\nimport { PrySchemePickerModule } from '@provoly/dashboard/components/scheme-picker';\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 ReactiveFormsModule,\n PryColorPickerModule,\n PrySchemePickerModule\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7.PryWidgetAggregatedChartCssComponent","i1"],"mappings":"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"}