{"version":3,"file":"onepoint-yap-dashboard-widgets-widget-chart.mjs","sources":["../../../../projects/onepoint-yap/dashboard/widgets/widget-chart/component/vega-error.handler.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-chart/component/vega-spec.constant.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-chart/style/css.component.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-chart/component/widget-chart.component.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-chart/component/widget-chart.component.html","../../../../projects/onepoint-yap/dashboard/widgets/widget-chart/i18n/en.translations.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-chart/i18n/fr.translations.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-chart/widget-chart.module.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-chart/onepoint-yap-dashboard-widgets-widget-chart.ts"],"sourcesContent":["import { YAP_CUSTOMEVENT_TYPE, YapSnackMessage } from '@onepoint-yap/dashboard';\nimport { View } from 'vega';\nimport { ViewOptions } from 'vega-typings/types/runtime';\nimport { Runtime } from 'vega-typings/types/runtime/runtime';\n\nlet yapLogger = {\n  ...console,\n  debug: () => {},\n  level: () => {},\n  // @ts-ignore\n  error: (err) => {\n    // Making specific Vega error message trapping\n    const customEvent = new CustomEvent<YapSnackMessage>(YAP_CUSTOMEVENT_TYPE, {\n      detail: {\n        type: 'error',\n        message: '@yap.snack.default'\n      },\n      bubbles: true,\n      cancelable: true\n    });\n\n    if (err.stack.includes('Error: missing:')) {\n      customEvent.detail.message = '@yap.snack.missingParent';\n    } else if (err.stack.includes(\"TypeError: Cannot read properties of undefined (reading 'value')\")) {\n      customEvent.detail.message = '@yap.snack.missingValue';\n    } else if (err.stack.includes('Expected number')) {\n      customEvent.detail.message = '@yap.snack.emptyValues';\n    }\n\n    document.dispatchEvent(customEvent);\n  }\n};\n\nexport class VegaErrorHandler extends View {\n  constructor(runtime: Runtime, opt?: ViewOptions) {\n    // @ts-ignore\n    super(runtime, { ...opt, logger: yapLogger });\n  }\n}\n","export const vegaBaseConf = {\n  $schema: 'https://vega.github.io/schema/vega-lite/v5.json',\n  title: '',\n  width: 'container',\n  height: 'container',\n  padding: 0,\n  autosize: { type: 'fit', contains: 'padding' },\n  data: { values: {} },\n  layer: [\n    {\n      mark: {\n        type: '',\n        point: '',\n        innerRadius: 30\n      },\n      encoding: {}\n    }\n  ]\n} as any;\n\nexport const vegaRadarConf = {\n  $schema: 'https://vega.github.io/schema/vega/v5.json',\n  title: '',\n  width: 'container',\n  height: 'container',\n  padding: 40,\n  autosize: { type: 'none', contains: 'padding' },\n  signals: [{ name: 'radius', update: 'height / 2' }],\n  data: [\n    {\n      name: 'table',\n      values: []\n    },\n    {\n      name: 'keys',\n      source: 'table',\n      transform: [\n        {\n          type: 'aggregate',\n          groupby: ['key']\n        }\n      ]\n    }\n  ],\n  scales: [\n    {\n      name: 'angular',\n      type: 'point',\n      range: { signal: '[-PI, PI]' },\n      padding: 0.5,\n      domain: { data: 'table', field: 'key' }\n    },\n    {\n      name: 'radial',\n      type: 'linear',\n      range: { signal: '[0, radius]' },\n      zero: true,\n      nice: false,\n      domain: { data: 'table', field: 'value' },\n      domainMin: 0\n    },\n    {\n      name: 'color',\n      type: 'ordinal',\n      domain: { data: 'table', field: 'category' },\n      range: { scheme: 'category10' }\n    }\n  ],\n\n  encode: {\n    enter: {\n      x: { signal: 'radius' },\n      y: { signal: 'radius' }\n    }\n  },\n\n  marks: [\n    {\n      type: 'group',\n      name: 'categories',\n      zindex: 1,\n      from: {\n        facet: { data: 'table', name: 'facet', groupby: ['category'] }\n      },\n      marks: [\n        {\n          type: 'line',\n          name: 'category-line',\n          from: { data: 'facet' },\n          encode: {\n            enter: {\n              interpolate: { value: 'linear-closed' },\n              x: { signal: \"scale('radial', datum.value) * cos(scale('angular', datum.key))\" },\n              y: { signal: \"scale('radial', datum.value) * sin(scale('angular', datum.key))\" },\n              stroke: { scale: 'color', field: 'category' },\n              strokeWidth: { value: 1 },\n              fill: { scale: 'color', field: 'category' },\n              fillOpacity: { value: 0.1 }\n            }\n          }\n        },\n        {\n          type: 'text',\n          name: 'value-text',\n          from: { data: 'category-line' },\n          encode: {\n            enter: {\n              x: { signal: 'datum.x' },\n              y: { signal: 'datum.y' },\n              text: { signal: 'datum.datum.value' },\n              align: { value: 'center' },\n              baseline: { value: 'middle' },\n              fill: { value: 'black' }\n            }\n          }\n        }\n      ]\n    },\n    {\n      type: 'rule',\n      name: 'radial-grid',\n      from: { data: 'keys' },\n      zindex: 0,\n      encode: {\n        enter: {\n          x: { value: 0 },\n          y: { value: 0 },\n          x2: { signal: \"radius * cos(scale('angular', datum.key))\" },\n          y2: { signal: \"radius * sin(scale('angular', datum.key))\" },\n          stroke: { value: 'lightgray' },\n          strokeWidth: { value: 1 }\n        }\n      }\n    },\n    {\n      type: 'text',\n      name: 'key-label',\n      from: { data: 'keys' },\n      zindex: 1,\n      encode: {\n        enter: {\n          x: { signal: \"(radius + 5) * cos(scale('angular', datum.key))\" },\n          y: { signal: \"(radius + 5) * sin(scale('angular', datum.key))\" },\n          text: { field: 'key' },\n          align: [\n            {\n              test: \"abs(scale('angular', datum.key)) > PI / 2\",\n              value: 'right'\n            },\n            {\n              value: 'left'\n            }\n          ],\n          baseline: [\n            {\n              test: \"scale('angular', datum.key) > 0\",\n              value: 'top'\n            },\n            {\n              test: \"scale('angular', datum.key) == 0\",\n              value: 'middle'\n            },\n            {\n              value: 'bottom'\n            }\n          ],\n          fill: { value: 'black' },\n          fontWeight: { value: 'bold' }\n        }\n      }\n    },\n    {\n      type: 'line',\n      name: 'outer-line',\n      from: { data: 'radial-grid' },\n      encode: {\n        enter: {\n          interpolate: { value: 'linear-closed' },\n          x: { field: 'x2' },\n          y: { field: 'y2' },\n          stroke: { value: 'lightgray' },\n          strokeWidth: { value: 1 }\n        }\n      }\n    }\n  ]\n} as any;\n\nexport const vegaCirclePackConf = {\n  $schema: 'https://vega.github.io/schema/vega/v5.json',\n  description: 'An example of a circle packing layout for hierarchical data.',\n  width: 'container',\n  height: 'container',\n  padding: 0,\n  autosize: { type: 'fit', contains: 'padding' },\n\n  data: [\n    {\n      name: 'table',\n      values: []\n    },\n    {\n      name: 'tree',\n      source: 'table',\n      transform: [\n        {\n          type: 'stratify',\n          key: 'id',\n          parentKey: 'parent'\n        },\n        {\n          type: 'pack',\n          field: 'size',\n          sort: { field: 'value' },\n          size: [{ signal: 'width' }, { signal: 'height' }]\n        }\n      ]\n    }\n  ],\n\n  scales: [\n    {\n      name: 'color',\n      type: 'ordinal',\n      domain: { data: 'tree', field: 'depth' },\n      range: { scheme: 'category20' }\n    }\n  ],\n\n  marks: [\n    {\n      type: 'symbol',\n      from: { data: 'tree' },\n      encode: {\n        enter: {\n          shape: { value: 'circle' },\n          fill: { scale: 'color', field: 'depth' },\n          tooltip: { signal: \"datum.name + (datum.size ? ', ' + datum.size + ' bytes' : '')\" }\n        },\n        update: {\n          x: { field: 'x' },\n          y: { field: 'y' },\n          size: { signal: '4 * datum.r * datum.r' },\n          stroke: { value: 'white' },\n          strokeWidth: { value: 0.5 }\n        },\n        hover: {\n          stroke: { value: 'red' },\n          strokeWidth: { value: 2 }\n        }\n      }\n    }\n  ]\n};\n","import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'yap-widget-chart-css',\n  template: '',\n  styleUrls: ['./_o-widget-chart.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class YapWidgetChartCssComponent {}\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  Aggregation,\n  Attribute,\n  AttributeSimpleValue,\n  ChartOption,\n  ChartSubTypeDefinition,\n  ChartWidgetOptions,\n  Class,\n  ClassSelectors,\n  ConfigSelectors,\n  DashboardSelectors,\n  DataWidgetComponent,\n  Field,\n  FieldSelectors,\n  FieldType,\n  Item,\n  ItemUtils,\n  MarkSubType,\n  MarkType,\n  VariableDefinition,\n  VegaColorType,\n  VegaType,\n  WIDGET_HEADER_HEIGHT,\n  YapI18nService\n} from '@onepoint-yap/dashboard';\nimport equal from 'fast-deep-equal/es6';\nimport { BehaviorSubject, combineLatest, delay, Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, filter, map } from 'rxjs/operators';\nimport { TimeUnit, View } from 'vega';\nimport embed, { vega } from 'vega-embed';\nimport { mergeDeep, TopLevelSpec } from 'vega-lite';\nimport { fontConfig } from 'vega-lite/build/src/config';\nimport { VegaErrorHandler } from './vega-error.handler';\nimport { vegaBaseConf, vegaCirclePackConf, vegaRadarConf } from './vega-spec.constant';\n\nexport type RadarValue = {\n  category: number;\n  key: string;\n  value: number;\n};\n\nvega.scheme('KO/W/OK', ['#C04D3F', '#FD9843', '#9ABE29']);\n\n@Component({\n  selector: 'yap-widget-chart',\n  templateUrl: './widget-chart.component.html'\n})\nexport class WidgetChartComponent extends DataWidgetComponent implements AfterViewInit {\n  @ViewChild('vega') vega!: ElementRef;\n  typeOptions: {\n    type: MarkType;\n    subType: MarkSubType;\n    label: MarkType | MarkSubType;\n    id: string;\n    translated?: string;\n  }[] = [];\n  markTypes: MarkType[] = [];\n  subTypes?: Partial<ChartSubTypeDefinition>;\n  schemes?: { id: VegaColorType; translated: string }[];\n  MarkType = MarkType;\n  MarkSubType = MarkSubType;\n  WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n\n  timeUnits: TimeUnit[] = ['year', 'quarter', 'month', 'week', 'day', 'hours', 'minutes'];\n  options$: Observable<ChartWidgetOptions>;\n  optionsCopy: ChartWidgetOptions = {} as ChartWidgetOptions;\n  classes$: Observable<Class[]>;\n  fields$: Observable<Field[]>;\n  variables$: Observable<VariableDefinition[]>;\n  vegaLiteSpec$: Observable<TopLevelSpec>;\n  variableAttributes$: Observable<Attribute[]>;\n  possibleSecondaryAttributes$: Observable<Attribute[]>;\n  triggerCalculatePossibleAttributes$ = new BehaviorSubject<void>(undefined);\n  items$: Observable<Item[]>;\n  filterDataForOptions$: Observable<Item[]>;\n  filterDataForOptionsCopy$: Observable<Item[]>;\n  variables: VariableDefinition[] = [];\n  aggregations: any[] = [];\n  variableAttributes: Attribute[] = [];\n  fields: Field[] = [];\n  isChartValid$: Observable<boolean>;\n  numericProperties$: Observable<Attribute[]>;\n  textProperties$: Observable<Attribute[]>;\n  comparisons = [\n    {\n      id: 'item',\n      name: this.translateService.instant('@yap.widget.chart.comparison.item')\n    },\n    {\n      id: 'value',\n      name: this.translateService.instant('@yap.widget.chart.comparison.value')\n    }\n  ];\n  view?: View;\n  trigger$ = new Subject<void>();\n  invalidJson: boolean = false;\n\n  constructor(\n    store: Store<any>,\n    private translateService: YapI18nService,\n    el: ElementRef,\n    private cdRef: ChangeDetectorRef\n  ) {\n    super(store, el);\n\n    this.store.select(ConfigSelectors.chartOption).subscribe((chartOptions: ChartOption) => {\n      this.aggregations = chartOptions.aggregation;\n      this.schemes = chartOptions.color.map((scheme) => ({ id: scheme, translated: '' }));\n      this.markTypes = chartOptions.type;\n      this.subTypes = chartOptions.subType;\n\n      this.typeOptions = this.markTypes\n        .map((type: MarkType) => {\n          // @ts-ignore\n          return this.subTypes && this.subTypes[type] ? this.subTypes[type].map((subType) => ({ type, subType })) : [];\n        })\n        .reduce((p, c) => [...p, ...c], [])\n        .map((options: any) => ({\n          ...options,\n          id: `${options.type}-${options.subType}`,\n          label: options.subType === MarkSubType.DEFAULT ? options.type : options.subType\n        }))\n        .map((options: any) => ({\n          ...options,\n          translated: this.translateService.instant('@yap.widget.chart.markType.' + options.label)\n        }));\n      this.typeOptions.sort((a, b) => a.translated?.localeCompare(b.translated ?? '') ?? -1);\n    });\n    this.classes$ = this.store.select(ClassSelectors.classes);\n    this.fields$ = this.store.select(FieldSelectors.fields);\n\n    this.variableAttributes$ = combineLatest([this.resultSet$, this.classes$, this.fields$]).pipe(\n      map(([resultSet, classes, fields]) => ItemUtils.getAttributesFromRs(resultSet, classes, fields)),\n      map((fields: Attribute[]) => fields.sort((a, b) => a.name.localeCompare(b.name))),\n      map((props) => WidgetChartComponent.uniqueAttributesByNames(props)),\n      distinctUntilChanged((p, c) => equal(p, c))\n    );\n\n    this.subscriptions.add(this.variableAttributes$.subscribe((attrs) => (this.variableAttributes = attrs)));\n    this.subscriptions.add(this.fields$.subscribe((attrs) => (this.fields = attrs)));\n\n    this.variables$ = combineLatest([this.variableAttributes$, this.fields$]).pipe(\n      map(([attributes, fields]) => {\n        return attributes.map(\n          (attr) =>\n            (({\n              name: attr.name,\n              label: attr.name,\n              type: this.translateToVegaType(\n                fields.find((field) => field.id === attr.field)?.type ?? FieldType.STRING,\n                attr.name\n              )\n            } as VariableDefinition) ?? [])\n        );\n      })\n    );\n\n    this.options$ = combineLatest([\n      this.variables$,\n      this.manifest$.pipe(map((manifest) => manifest.options as ChartWidgetOptions))\n    ]).pipe(\n      map(([variables, options]) => ({\n        ...options,\n        title: options?.title ?? ((variables[0]?.label ?? '') + ', ' + (variables[1]?.label ?? '')).replace(/^, $/, ''),\n        selectedVariables: options?.selectedVariables ?? [{}, {}],\n        // Here, we do not presume of the type of graph that the user wants, and prefer to display a button to go to params\n        type: options?.type ?? undefined,\n        aggregation: options?.aggregation ?? Aggregation.COUNT,\n        tooltip: options?.tooltip ?? true,\n        legend: options.legend ?? true,\n        locale: 'fr'\n      }))\n    );\n\n    this.items$ = this.resultSet$.pipe(\n      filter((resultSet) => !!resultSet),\n      map((resultSet) => {\n        return Object.keys(resultSet?.items)\n          .map((classId) => resultSet.items[classId])\n          .reduce((prev, curr) => [...prev, ...curr], []);\n      })\n    );\n\n    this.possibleSecondaryAttributes$ = combineLatest([\n      this.variableAttributes$,\n      this.items$,\n      this.fields$,\n      this.triggerCalculatePossibleAttributes$\n    ]).pipe(\n      map(([variableFields, items, fields, _]) => {\n        return variableFields\n          .filter((attribute) => {\n            // Keep only numeric values when necessary\n            if (\n              !this.optionsCopy.aggregation ||\n              [Aggregation.NONE, Aggregation.DISTINCT, Aggregation.COUNT].includes(this.optionsCopy.aggregation)\n            ) {\n              return true;\n            } else {\n              const field = fields.find((field) => field.id === attribute.field);\n              return [FieldType.DECIMAL, FieldType.INSTANT, FieldType.LONG, FieldType.INTEGER].includes(\n                field?.type ?? FieldType.STRING\n              );\n            }\n          })\n          .filter((attribute) =>\n            items.find(\n              (item) =>\n                Object.keys(item.attributes).includes(this.optionsCopy.selectedVariables[0].label) &&\n                Object.keys(item.attributes).includes(attribute.name) &&\n                !!(item.attributes[this.optionsCopy.selectedVariables[0].label] as AttributeSimpleValue).value &&\n                (item.attributes[attribute.name] as AttributeSimpleValue).value !== undefined\n            )\n          );\n      }),\n      map((props) => WidgetChartComponent.uniqueAttributesByNames(props))\n    );\n\n    this.numericProperties$ = combineLatest([\n      this.variableAttributes$,\n      this.items$,\n      this.fields$,\n      this.triggerCalculatePossibleAttributes$\n    ]).pipe(\n      map(([variableFields, items, fields, _]) => {\n        return variableFields\n          .filter((attribute) => {\n            const field = fields.find((field) => field.id === attribute.field);\n            return [FieldType.DECIMAL, FieldType.INSTANT, FieldType.LONG, FieldType.INTEGER].includes(\n              field?.type ?? FieldType.STRING\n            );\n          })\n          .filter((attribute) =>\n            items.find(\n              (item) =>\n                Object.keys(item.attributes).includes(attribute.name) &&\n                (item.attributes[attribute.name] as AttributeSimpleValue).value !== undefined\n            )\n          );\n      }),\n      map((props) => {\n        return WidgetChartComponent.uniqueAttributesByNames(props);\n      })\n    );\n\n    this.textProperties$ = combineLatest([\n      this.variableAttributes$,\n      this.items$,\n      this.fields$,\n      this.triggerCalculatePossibleAttributes$\n    ]).pipe(\n      map(([variableFields, items, fields, _]) => {\n        return variableFields\n          .filter((attribute) => {\n            const field = fields.find((field) => field.id === attribute.field);\n            return [FieldType.STRING, FieldType.KEYWORD].includes(field?.type ?? FieldType.INTEGER);\n          })\n          .filter((attribute) =>\n            items.find(\n              (item) =>\n                Object.keys(item.attributes).includes(attribute.name) &&\n                (item.attributes[attribute.name] as AttributeSimpleValue).value !== undefined\n            )\n          );\n      }),\n      map((props) => {\n        return WidgetChartComponent.uniqueAttributesByNames(props);\n      })\n    );\n\n    this.filterDataForOptions$ = combineLatest([this.items$, this.options$, this.variableAttributes$]).pipe(\n      filter(([items, options]) => options.selectedVariables && options.selectedVariables.length > 0),\n      map(([items, options, variables]) => WidgetChartComponent.matchingItems(items, options, variables))\n    );\n\n    this.filterDataForOptionsCopy$ = combineLatest([\n      this.items$,\n      this.triggerCalculatePossibleAttributes$.pipe(delay(200)),\n      this.variableAttributes$\n    ]).pipe(\n      filter(([items, _]) => this.optionsCopy.selectedVariables && this.optionsCopy.selectedVariables.length > 0),\n      map(([items, _, variables]) => WidgetChartComponent.matchingItems(items, this.optionsCopy, variables))\n    );\n\n    this.subscriptions.add(\n      this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n        this.optionsCopy = JSON.parse(JSON.stringify(options));\n        this.updateAdvancedEdit(JSON.stringify(this.optionsCopy.specToMerge));\n        this.optionsCopy.type = !this.markTypes.includes(this.optionsCopy.type)\n          ? this.markTypes[0]\n          : this.optionsCopy.type;\n        this.optionsCopy.subType = this.optionsCopy.subType ?? MarkSubType.DEFAULT;\n        this.optionsCopy.aggregation = !this.aggregations.includes(this.optionsCopy.aggregation)\n          ? this.aggregations[0]\n          : this.optionsCopy.aggregation;\n        if (this.optionsCopy.series) {\n          this.optionsCopy.series.scheme =\n            this.optionsCopy.series?.scheme &&\n            this.schemes &&\n            !this.schemes.find((s) => s.id === this.optionsCopy?.series?.scheme)\n              ? this.schemes[0].id\n              : this.optionsCopy.series?.scheme;\n        }\n      })\n    );\n\n    this.vegaLiteSpec$ = combineLatest([\n      this.store.select(DashboardSelectors.windowManifest),\n      this.manifest$,\n      this.widgetSize$,\n      this.filterDataForOptions$,\n      this.options$,\n      this.displayHeader$,\n      this.variableAttributes$\n    ]).pipe(\n      map(([windowManifest, widgetManifest, size, data, options, displayHeader, variableField]) => {\n        let spec = vegaBaseConf;\n        switch (options.type) {\n          case MarkType.RADAR:\n            spec = vegaRadarConf;\n            break;\n          case MarkType.CIRCLE_PACK:\n            spec = vegaCirclePackConf;\n        }\n\n        spec.title = options.customTitle ?? options.title;\n\n        switch (options.type) {\n          case MarkType.RADAR:\n            spec.signals[0].update = size.width > size.height ? 'height / 2' : 'width / 2';\n            spec.data[0].values = WidgetChartComponent.buildDataVegaRadar(data, options);\n            spec.scales[2].range.scheme = options.series?.scheme;\n            break;\n          case MarkType.CIRCLE_PACK:\n            spec.data[0].values = JSON.parse(JSON.stringify(data));\n            spec.data[1].transform[0].key = 'attributes.' + options.packing?.id + '.value';\n            spec.data[1].transform[0].parentKey = 'attributes.' + options.packing?.parentId + '.value';\n            spec.data[1].transform[1].field = 'attributes.' + options.packing?.packField + '.value';\n            spec.marks[0].encode.enter.tooltip.signal = `datum.attributes.${\n              options.packing?.tooltip ?? options.packing?.id\n            }.value + ' : ' + datum.attributes.${options.packing?.packField}.value`;\n            break;\n          default:\n            spec.data = { values: JSON.parse(JSON.stringify(data)) };\n            spec.layer = [\n              {\n                mark: {\n                  type: options.type,\n                  point:\n                    options.type === MarkType.POINT ||\n                    options.subType === MarkSubType.WITH_LINES_AND_POINTS ||\n                    options.subType === MarkSubType.WITH_POINTS,\n                  line: options.type === MarkType.LINE || options.subType === MarkSubType.WITH_LINES_AND_POINTS,\n                  innerRadius: options.innerRadius,\n                  tooltip: options.tooltip ?? true\n                },\n                encoding: WidgetChartComponent.calculateEncoding(options)\n              }\n            ];\n            if (options.fill) {\n              spec.layer[0].mark.fill = options.fill;\n            }\n            if (options.subType === MarkSubType.AREASTACKED || options.subType === MarkSubType.HISTOSTACKED) {\n              spec.data.transform = [\n                {\n                  type: 'stack',\n                  groupby: [options.selectedVariables[0].name],\n                  sort: { field: options.series?.groupBy },\n                  field: options.selectedVariables[1].name\n                }\n              ];\n            }\n        }\n        const merged = mergeDeep(spec, { config: fontConfig('Ubuntu, sans-serif') } as any, options.specToMerge);\n\n        if (!!options.specToMerge) {\n          console.log(JSON.stringify(spec));\n        }\n\n        return merged;\n      })\n    );\n\n    this.isChartValid$ = this.options$.pipe(\n      map(\n        (options) =>\n          !!options.type &&\n          // We must have the correct number of variables to draw the graph\n          (options.selectedVariables.filter((v) => !!v.type).length > 1 ||\n            (options.selectedVariables.filter((v) => !!v.type).length > 0 &&\n              (options.aggregation === Aggregation.COUNT ||\n                options.aggregation === Aggregation.DISTINCT ||\n                options.aggregation === Aggregation.NONE)))\n      )\n    );\n  }\n\n  ngAfterViewInit() {\n    this.subscriptions.add(\n      combineLatest([this.vegaLiteSpec$, this.trigger$]).subscribe(([spec, _]) => {\n        if (this.vega) {\n          this.view?.finalize();\n          embed(this.vega.nativeElement, JSON.parse(JSON.stringify(spec)), {\n            actions: false,\n            renderer: 'svg',\n            formatLocale:\n              this.optionsCopy.locale === 'fr'\n                ? {\n                    decimal: ',',\n                    thousands: '\\u00a0',\n                    grouping: [3],\n                    currency: ['', '\\u00a0€'],\n                    percent: '\\u202f%'\n                  }\n                : {\n                    decimal: '.',\n                    thousands: ',',\n                    grouping: [3],\n                    currency: ['$', '']\n                  },\n            // @ts-ignore\n            viewClass: VegaErrorHandler\n          }).then((result) => (this.view = result.view));\n        } else {\n          setTimeout(() => this.trigger$.next(), 100);\n        }\n      })\n    );\n    this.trigger$.next();\n  }\n\n  static calculateEncoding(options: ChartWidgetOptions) {\n    const variables = options.selectedVariables ?? [{}, {}];\n    switch (options.type) {\n      case MarkType.ARC:\n        return {\n          theta: {\n            field: `attributes.${variables[1].name}.value`,\n            title: variables[1].label,\n            type: variables[1].type,\n            aggregate: 'count'\n          },\n          color: {\n            field: `attributes.${variables[0].name}.value`,\n            title: variables[0].label,\n            type: variables[0].type,\n            legend: options.legend ?? true,\n            scale: options.scale ?? { scheme: options.series?.scheme ?? 'category20c' }\n          }\n        };\n      case MarkType.RADAR:\n        return {};\n      default:\n        const encoding = {\n          x: {\n            field: `attributes.${variables[0].name}.value`,\n            title: variables[0].label,\n            type: variables[0].type,\n            timeUnit: variables[0].type === VegaType.TEMPORAL ? variables[0].timeUnit : undefined,\n            bin: options.subType === MarkSubType.HISTOGRAM,\n            axis: variables[0].axisOptions,\n            scale: {\n              // Force a false value here so that vega understand properly\n              zero: !!variables[0].origin0,\n              type: WidgetChartComponent.isTimeUnitUTC(variables[0]) ? 'utc' : undefined\n            }\n          },\n          y: {\n            field: `attributes.${variables[1].name}.value`,\n            title: variables[1].label,\n            type: options.aggregation === Aggregation.COUNT ? VegaType.QUANTITATIVE : variables[1].type,\n            timeUnit: variables[1].type === VegaType.TEMPORAL ? variables[1].timeUnit : undefined,\n            axis: variables[1].axisOptions,\n            aggregate: options.aggregation !== Aggregation.NONE ? options.aggregation : undefined,\n            scale: {\n              zero: variables[1].origin0,\n              type: WidgetChartComponent.isTimeUnitUTC(variables[1]) ? 'utc' : undefined\n            }\n          }\n        };\n        if (options.series) {\n          // @ts-ignore\n          encoding.color = {\n            title: `${options.series.groupBy}`,\n            field: `attributes.${options.series.groupBy}.value`,\n            legend: options.legend\n          };\n          if (options.series.scheme) {\n            // @ts-ignore\n            encoding.color.scale = { scheme: options.series.scheme };\n          }\n        }\n        return encoding;\n    }\n  }\n\n  static buildDataVegaRadar(items: Item[], options: ChartWidgetOptions): RadarValue[] {\n    if (options.radar?.compare === 'item') {\n      return items\n        .map((item, idx) =>\n          (options.radar?.props ?? []).map((prop: string) => {\n            const itemValueMultiple = ItemUtils.getAttributeValue(item, prop);\n            const itemValue = Array.isArray(itemValueMultiple) ? itemValueMultiple[0] : itemValueMultiple;\n            return {\n              category: idx,\n              key: prop,\n              value: itemValue?.value\n            } as RadarValue;\n          })\n        )\n        .reduce((a: RadarValue[], b: RadarValue[]) => [...a, ...b], [])\n        .filter((a: RadarValue) => a.value !== undefined && a.value !== null);\n    } else {\n      return items\n        .map(\n          (item, idx) =>\n            ({\n              category: (item.attributes[options.radar?.categoryProp ?? ''] as AttributeSimpleValue)?.value ?? 'object',\n              key: (item.attributes[options.radar?.keyProp ?? ''] as AttributeSimpleValue)?.value,\n              value: (item.attributes[options.radar?.valueProp ?? ''] as AttributeSimpleValue)?.value\n            } as RadarValue)\n        )\n        .filter((a: RadarValue) => a.value !== undefined && a.value !== null && !!a.key);\n    }\n  }\n\n  static matchingItems(items: Item[], options: ChartWidgetOptions, attributes: Attribute[]) {\n    return items.filter((item) => {\n      switch (options.type) {\n        case MarkType.CIRCLE_PACK:\n          return !!options.packing?.id && !!options.packing.parentId && !!options.packing.packField;\n        case MarkType.RADAR:\n          return (\n            ((options.radar?.compare === 'item' && (options.radar.props?.length ?? []) > 2) ||\n              (options.radar?.compare !== 'item' &&\n                !!options.radar?.keyProp &&\n                !!options.radar.valueProp &&\n                !!options.radar.categoryProp)) &&\n            WidgetChartComponent.buildDataVegaRadar(items, options).length > 0\n          );\n        default:\n          return (\n            Object.keys(item.attributes).includes(options.selectedVariables[0].name) &&\n            (item.attributes[options.selectedVariables[0].name] as AttributeSimpleValue).value !== undefined &&\n            ((Object.keys(item.attributes).includes(options.selectedVariables[1].name) &&\n              (item.attributes[options.selectedVariables[1].name] as AttributeSimpleValue).value !== undefined) ||\n              options.aggregation === Aggregation.DISTINCT ||\n              options.aggregation === Aggregation.COUNT)\n          );\n      }\n    });\n  }\n\n  static uniqueAttributesByNames(attributes: Attribute[]): Attribute[] {\n    return [...new Set(attributes.map((attr) => attr.name))].map(\n      (attrName) => attributes.find((attr) => attr.name === attrName) ?? ({} as Attribute)\n    );\n  }\n\n  templateTypeTranslationFn = (item: any, args: any[]) =>\n    `${args[0]}${item === MarkSubType.DEFAULT ? item : args[1] + args[2] + item}`;\n\n  translateAggregations = (item: any) => this.translateService.instant('@yap.widget.chart.aggregation.' + item);\n  advancedEdit: string = '{}';\n\n  changeChartTitle(title: string) {\n    this.optionsCopy.customTitle = title;\n  }\n\n  changeTimeUnit($event: TimeUnit, variable: VariableDefinition) {\n    variable.timeUnit = $event;\n  }\n\n  changeAggregation($event: Aggregation) {\n    this.optionsCopy.aggregation = $event;\n    if ([Aggregation.COUNT, Aggregation.DISTINCT].includes($event!)) {\n      this.optionsCopy.selectedVariables[1].axisOptions = { tickMinStep: 1 };\n    } else {\n      delete this.optionsCopy.selectedVariables[1].axisOptions;\n    }\n    this.triggerCalculatePossibleAttributes$.next();\n  }\n\n  changeProperty(attrName: string, index: number) {\n    const attr = this.variableAttributes.find((attr) => attr.name === attrName);\n    if (!!attr) {\n      this.optionsCopy.selectedVariables[index].name = attr.name;\n      this.optionsCopy.selectedVariables[index].label = attr.name;\n      const field = this.fields.find((field) => field.id === attr.field)?.type ?? FieldType.STRING;\n      this.optionsCopy.selectedVariables[index].type = this.translateToVegaType(field, attr.name);\n      this.optionsCopy.selectedVariables[index].axisOptions = this.minTick(field);\n      this.optionsCopy.title =\n        this.optionsCopy.selectedVariables[0].label + ', ' + this.optionsCopy.selectedVariables[1].label;\n    }\n    this.triggerCalculatePossibleAttributes$.next();\n  }\n\n  static isTimeUnitUTC(variableDef: VariableDefinition): boolean {\n    let utcRegex = new RegExp(/_utc|utc_|_UTC|UTC_|_Utc|Utc_/, 'g');\n    return utcRegex.test(variableDef?.label);\n  }\n\n  changeLabel(label: string, index: number) {\n    let updateTitle = false;\n    if (\n      this.optionsCopy.title ===\n      this.optionsCopy.selectedVariables[0].label + ', ' + this.optionsCopy.selectedVariables[1].label\n    ) {\n      updateTitle = true;\n    }\n\n    this.optionsCopy.selectedVariables[index].label = label;\n    if (updateTitle) {\n      //update title if it has not been modified manually\n      this.optionsCopy.title =\n        this.optionsCopy.selectedVariables[0].label + ', ' + this.optionsCopy.selectedVariables[1].label;\n    }\n  }\n\n  toggleOriginAtZero(variable: VariableDefinition, $event: boolean) {\n    variable.origin0 = $event;\n  }\n\n  changeType(typeOptionsId: string) {\n    this.optionsCopy = JSON.parse(JSON.stringify(this.optionsCopy));\n    const [type, subType] = typeOptionsId.split('-');\n    // @ts-ignore\n    this.optionsCopy.type = type;\n    this.optionsCopy.subType = subType ?? MarkSubType.DEFAULT;\n\n    if (this.optionsCopy.type === MarkType.CIRCLE_PACK) {\n      this.optionsCopy.packing = {};\n    } else {\n      delete this.optionsCopy.packing;\n    }\n\n    if (this.optionsCopy.type === MarkType.RADAR) {\n      this.optionsCopy.radar = {};\n    } else {\n      delete this.optionsCopy.radar;\n    }\n\n    switch (this.optionsCopy.type) {\n      case MarkType.BAR:\n      case MarkType.LINE:\n        this.optionsCopy.selectedVariables[0].type =\n          this.optionsCopy.selectedVariables[0].type !== VegaType.TEMPORAL ? VegaType.NOMINAL : VegaType.TEMPORAL;\n        break;\n      case MarkType.POINT:\n        this.optionsCopy.selectedVariables[1].type =\n          this.optionsCopy.selectedVariables[1].type !== VegaType.TEMPORAL ? VegaType.QUANTITATIVE : VegaType.TEMPORAL;\n        break;\n    }\n\n    if (this.optionsCopy.subType === MarkSubType.AREASTACKED || this.optionsCopy.subType === MarkSubType.HISTOSTACKED) {\n      this.optionsCopy.series = this.optionsCopy.series ?? {};\n    }\n\n    this.resetChart();\n\n    if (subType === MarkSubType.DONUT) {\n      this.optionsCopy.innerRadius = this.optionsCopy.innerRadius ?? 50;\n    }\n  }\n\n  resetChart() {\n    if (this.optionsCopy.selectedVariables?.length > 2) {\n      this.optionsCopy.selectedVariables.pop();\n    }\n  }\n\n  emitManifest() {\n    this.manifestModified.emit({\n      widgetIndex: this.widgetIndex,\n      manifest: {\n        ...this.manifest,\n        options: { ...this.optionsCopy }\n      }\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    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  minTick(type: FieldType): { tickMinStep: number } | undefined {\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 undefined;\n    }\n  }\n\n  trigger() {\n    this.triggerCalculatePossibleAttributes$.next();\n  }\n\n  proposeTitle() {\n    setTimeout(() => {\n      if (this.optionsCopy.type === MarkType.RADAR) {\n        if (this.optionsCopy.radar?.compare === 'item') {\n          this.optionsCopy.title = this.translateService.instant('@yap.widget.chart.radar.titleItem', {\n            props: (this.optionsCopy.radar.props || []).join(', ')\n          });\n        }\n        if (this.optionsCopy.radar?.compare === 'value') {\n          this.optionsCopy.title = this.translateService.instant('@yap.widget.chart.radar.titleList', {\n            key: this.optionsCopy.radar.keyProp ?? this.translateService.instant('@yap.widget.chart.radar.defineKey'),\n            value:\n              this.optionsCopy.radar.valueProp ?? this.translateService.instant('@yap.widget.chart.radar.defineValue'),\n            category:\n              this.optionsCopy.radar.categoryProp ??\n              this.translateService.instant('@yap.widget.chart.radar.defineCategory')\n          });\n        }\n      }\n      if (this.optionsCopy.type === MarkType.CIRCLE_PACK) {\n        this.optionsCopy.title = this.translateService.instant('@yap.widget.chart.circle.title', {\n          field: this.optionsCopy.packing?.packField ?? ''\n        });\n      }\n    }, 100);\n  }\n\n  changeInnerRadius($event: string) {\n    // @ts-ignore\n    this.optionsCopy.innerRadius = parseInt($event, 10);\n  }\n\n  openSettings() {\n    (this.open$ as Subject<void>).next(undefined);\n  }\n\n  toggleSeries($event: any) {\n    if ($event) {\n      this.optionsCopy.series = {};\n    } else {\n      delete this.optionsCopy.series;\n    }\n  }\n\n  changeSeries($event: any) {\n    if (!this.optionsCopy.series) {\n      this.optionsCopy.series = {};\n    }\n    this.optionsCopy.series.groupBy = $event;\n  }\n\n  changeSeriesScheme($event: any) {\n    if (!this.optionsCopy.series) {\n      this.optionsCopy.series = {};\n    }\n    this.optionsCopy.series.scheme = $event;\n  }\n\n  toggleSeriesLegend($event: any) {\n    this.optionsCopy.legend = $event;\n  }\n\n  toggleTooltip($event: any) {\n    this.optionsCopy.tooltip = $event;\n  }\n\n  axeLabel(i: number, optionsCopy: ChartWidgetOptions) {\n    if (optionsCopy?.type === MarkType.ARC) {\n      return i === 0 ? '@yap.widget.chart.encoding.group' : '@yap.widget.chart.encoding.values';\n    }\n    return i === 0 ? '@yap.widget.chart.encoding.horizontal' : '@yap.widget.chart.encoding.vertical';\n  }\n\n  hasNoType(options: ChartWidgetOptions) {\n    return !options || !options.type || options.type.includes('undefined') || options.type.includes('null');\n  }\n\n  scheme() {\n    return vega.scheme(this.optionsCopy.series?.scheme ?? '');\n  }\n\n  toggleSpecToMerge($event: any) {\n    if ($event) {\n      this.optionsCopy.specToMerge = {};\n      this.advancedEdit = '{}';\n    } else {\n      delete this.optionsCopy.specToMerge;\n      this.advancedEdit = '{}';\n    }\n  }\n\n  updateAdvancedEdit($event: any) {\n    const value = $event?.target?.value ?? $event;\n    if (value) {\n      try {\n        this.optionsCopy.specToMerge = JSON.parse(value);\n        this.advancedEdit = JSON.stringify(this.optionsCopy.specToMerge, undefined, 4);\n        this.invalidJson = false;\n      } catch (e) {\n        console.error('Invalid json provided');\n        this.invalidJson = true;\n      }\n      this.cdRef.markForCheck();\n    } else {\n      delete this.optionsCopy.specToMerge;\n      this.advancedEdit = '{}';\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","<yap-widget-chart-css></yap-widget-chart-css>\n<div class=\"o-widget o-widget--chart\">\n  <yap-widget-header\n    [datasourceIds$]=\"datasourceIds$\"\n    *ngIf=\"displayHeader$ | async\"\n    [widgetIndex]=\"widgetIndex\"\n    [manifest]=\"manifest\"\n    (manifestModified)=\"manifestModified.emit($event)\"\n    #header\n    [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n  >\n    <yap-settings\n      (saveTriggered)=\"emitManifest()\"\n      [headerPresent]=\"displayHeader$ | async\"\n      [isDisable]=\"(filterDataForOptionsCopy$ | async)?.length === 0 || hasNoType(optionsCopy)\"\n      [widgetIndex]=\"widgetIndex\"\n      [open$]=\"open$\"\n      [header]=\"header\"\n      class=\"o-settings\"\n    >\n      <div class=\"o-settings__popup__content__fields -condensed\">\n        <yap-edit-input\n          label=\"@yap.widget.chart.title\"\n          (ngModelChange)=\"changeChartTitle($event)\"\n          [ngModel]=\"optionsCopy.customTitle ?? optionsCopy.title\"\n        ></yap-edit-input>\n\n        <div class=\"m-form-label-field\">\n          <ng-container *ngIf=\"(filterDataForOptionsCopy$ | async)?.length === 0; else data\">\n            <p class=\"a-label a-label--help -error\">{{ '@yap.widget.chart.params.noParams' | i18n }}</p>\n          </ng-container>\n          <ng-template #data>\n            <div *ngIf=\"optionsCopy?.type !== MarkType.RADAR\">\n              {{ '@yap.widget.chart.params.multipleParams' | i18n }}{{ (filterDataForOptionsCopy$ | async)?.length }}\n            </div>\n          </ng-template>\n        </div>\n\n        <div *ngIf=\"optionsCopy\" class=\"m-form-label-field\">\n          <label class=\"a-label\" for=\"chart_type\">{{ '@yap.widget.chart.type' | i18n }}</label>\n          <yap-select\n            (ngModelChange)=\"changeType($event)\"\n            [itemsAsOption]=\"true\"\n            [items]=\"typeOptions\"\n            [labelTranslate]=\"true\"\n            [ngModel]=\"optionsCopy.type + '-' + optionsCopy.subType\"\n            baseTranslate=\"@yap.widget.chart.markType.\"\n            class=\"a-yap-select\"\n            bindLabel=\"label\"\n            bindValue=\"id\"\n            id=\"chart_type\"\n          ></yap-select>\n        </div>\n      </div>\n\n      <ng-container *ngIf=\"optionsCopy?.type !== MarkType.RADAR && optionsCopy?.type !== MarkType.CIRCLE_PACK\">\n        <ng-container *ngIf=\"optionsCopy?.subType === MarkSubType.DONUT\">\n          <yap-range\n            [ngModel]=\"optionsCopy.innerRadius\"\n            (ngModelChange)=\"changeInnerRadius($event)\"\n            labelTranslate=\"@yap.widget.chart.innerRadius\"\n            min=\"1\"\n            max=\"500\"\n          ></yap-range>\n        </ng-container>\n\n        <div\n          *ngFor=\"let variableDef of optionsCopy?.selectedVariables; let i = index\"\n          class=\"o-settings__popup__content__fields -condensed\"\n        >\n          <div class=\"m-form-label-field\" *ngIf=\"i === 1\">\n            <label class=\"a-label\" for=\"aggregations\">{{ '@yap.widget.chart.encoding.group' | i18n }}</label>\n            <yap-select\n              (ngModelChange)=\"changeAggregation($event)\"\n              *ngIf=\"i === 1\"\n              [bindData]=\"true\"\n              [itemsAsOption]=\"true\"\n              [items]=\"aggregations\"\n              [labelTranslate]=\"true\"\n              [ngModel]=\"optionsCopy.aggregation\"\n              [translationFn]=\"translateAggregations\"\n              class=\"a-yap-select\"\n              id=\"aggregations\"\n            ></yap-select>\n          </div>\n\n          <div class=\"m-form-label-field\" *ngIf=\"i !== 1 || optionsCopy.aggregation !== 'count'\">\n            <label class=\"a-label\" for=\"aggregation_property\">\n              {{ axeLabel(i, optionsCopy) | i18n }}\n            </label>\n            <yap-select\n              (ngModelChange)=\"changeProperty($event, i)\"\n              [itemsAsOption]=\"true\"\n              [items]=\"(i !== 1 ? variableAttributes$ : possibleSecondaryAttributes$) | async\"\n              [ngModel]=\"variableDef.name\"\n              bindLabel=\"name\"\n              bindValue=\"name\"\n              class=\"a-yap-select\"\n              id=\"aggregation_property\"\n            ></yap-select>\n          </div>\n\n          <yap-edit-input\n            label=\"@yap.widget.chart.dataLabel\"\n            (ngModelChange)=\"changeLabel($event, i)\"\n            [ngModel]=\"variableDef.label\"\n          ></yap-edit-input>\n\n          <div *ngIf=\"variableDef.type === 'temporal'\" class=\"m-form-label-field\">\n            <label class=\"a-label\" for=\"chart_timeUnit\">{{ '@yap.widget.chart.timeUnit' | i18n }}</label>\n            <yap-select\n              (ngModelChange)=\"changeTimeUnit($event, variableDef)\"\n              [bindData]=\"true\"\n              [itemsAsOption]=\"true\"\n              [items]=\"timeUnits\"\n              [labelTranslate]=\"true\"\n              [ngModel]=\"variableDef.timeUnit\"\n              baseTranslate=\"@yap.widget.chart.timeUnitList.\"\n              class=\"a-yap-select\"\n              id=\"chart_timeUnit\"\n            ></yap-select>\n          </div>\n\n          <div *ngIf=\"variableDef.type === 'quantitative' && optionsCopy?.type !== 'arc'\" class=\"m-form-label-field\">\n            <yap-checkbox (ngModelChange)=\"toggleOriginAtZero(variableDef, $event)\" [ngModel]=\"variableDef.origin0\"\n              >{{ '@yap.widget.chart.origin' | i18n }}\n            </yap-checkbox>\n          </div>\n        </div>\n\n        <div class=\"o-settings__popup__content__fields -condensed\">\n          <div class=\"m-form-label-field\">\n            <yap-checkbox\n              (ngModelChange)=\"toggleSeries($event)\"\n              [ngModel]=\"!!optionsCopy.series\"\n              *ngIf=\"optionsCopy?.type !== MarkType.ARC && optionsCopy?.type !== MarkType.RADAR\"\n              [disabled]=\"\n                this.optionsCopy.subType === MarkSubType.AREASTACKED ||\n                this.optionsCopy.subType === MarkSubType.HISTOSTACKED\n              \"\n              >{{ '@yap.widget.chart.series' | i18n }}\n            </yap-checkbox>\n          </div>\n\n          <div\n            class=\"m-form-label-field\"\n            *ngIf=\"optionsCopy?.type !== MarkType.ARC && optionsCopy?.type !== MarkType.RADAR && !!optionsCopy.series\"\n          >\n            <label class=\"a-label\" for=\"chart_seriesAttr\">{{ '@yap.widget.chart.seriesAttr' | i18n }}</label>\n            <yap-select\n              (ngModelChange)=\"changeSeries($event)\"\n              [ngModel]=\"optionsCopy.series.groupBy!\"\n              [itemsAsOption]=\"true\"\n              [items]=\"variableAttributes$ | async\"\n              bindLabel=\"name\"\n              bindValue=\"name\"\n              class=\"a-yap-select\"\n              id=\"chart_seriesAttr\"\n            ></yap-select>\n          </div>\n\n          <div\n            class=\"m-form-label-field\"\n            *ngIf=\"\n              (optionsCopy?.type === MarkType.ARC || optionsCopy?.type === MarkType.RADAR || !!optionsCopy.series) &&\n              schemes\n            \"\n          >\n            <label class=\"a-label\" for=\"chart_seriesScheme\" [title]=\"'@yap.widget.chart.seriesSchemeAlt' | i18n\">{{\n              '@yap.widget.chart.seriesScheme' | i18n\n            }}</label>\n            <yap-select\n              (ngModelChange)=\"changeSeriesScheme($event)\"\n              [ngModel]=\"optionsCopy.series?.scheme!\"\n              [itemsAsOption]=\"true\"\n              [items]=\"schemes\"\n              id=\"chart_seriesScheme\"\n              [labelTranslate]=\"true\"\n              baseTranslate=\"@yap.widget.chart.scheme.\"\n              bindValue=\"id\"\n              bindLabel=\"id\"\n            ></yap-select>\n          </div>\n\n          <div class=\"o-widget--chart-color-thumb\">\n            <div\n              *ngFor=\"let schemeColor of scheme()\"\n              class=\"o-widget--chart-color-thumb-item\"\n              [title]=\"schemeColor\"\n              [style.background-color]=\"schemeColor\"\n            ></div>\n          </div>\n\n          <div class=\"m-form-label-field\">\n            <yap-checkbox\n              (ngModelChange)=\"toggleSeriesLegend($event)\"\n              [ngModel]=\"!!optionsCopy.legend!\"\n              *ngIf=\"optionsCopy?.type !== MarkType.RADAR || !!optionsCopy.series\"\n              >{{ '@yap.widget.chart.seriesLegend' | i18n }}\n            </yap-checkbox>\n          </div>\n\n          <div class=\"m-form-label-field\">\n            <yap-checkbox (ngModelChange)=\"toggleTooltip($event)\" [ngModel]=\"!!optionsCopy.tooltip!\"\n              >{{ '@yap.widget.chart.tooltip' | i18n }}\n            </yap-checkbox>\n          </div>\n        </div>\n      </ng-container>\n\n      <ng-container *ngIf=\"optionsCopy?.type === MarkType.RADAR && optionsCopy.radar !== undefined\">\n        <div class=\"o-settings__popup__content__fields -condensed\">\n          <div class=\"m-form-label-field\">\n            <yap-select\n              (ngModelChange)=\"trigger(); proposeTitle()\"\n              [(ngModel)]=\"optionsCopy.radar.compare\"\n              [itemsAsOption]=\"true\"\n              [items]=\"comparisons\"\n              bindLabel=\"name\"\n              bindValue=\"id\"\n              class=\"a-yap-select\"\n            ></yap-select>\n          </div>\n\n          <ng-container *ngIf=\"optionsCopy.radar.compare === 'item'\">\n            <div class=\"m-form-label-field\">\n              <yap-select\n                (ngModelChange)=\"trigger(); proposeTitle()\"\n                [(ngModel)]=\"optionsCopy.radar.props\"\n                [itemsAsOption]=\"true\"\n                [items]=\"numericProperties$ | async\"\n                [multiple]=\"true\"\n                bindLabel=\"name\"\n                bindValue=\"name\"\n                class=\"a-yap-select\"\n              ></yap-select>\n            </div>\n          </ng-container>\n\n          <ng-container *ngIf=\"optionsCopy.radar.compare === 'value'\">\n            <div class=\"m-form-label-field\">\n              <label class=\"a-label\" for=\"comparison_key\">{{ '@yap.widget.chart.comparison.key' | i18n }}</label>\n              <yap-select\n                (ngModelChange)=\"trigger(); proposeTitle()\"\n                [(ngModel)]=\"optionsCopy.radar.keyProp\"\n                [itemsAsOption]=\"true\"\n                [items]=\"textProperties$ | async\"\n                bindLabel=\"name\"\n                bindValue=\"name\"\n                class=\"a-yap-select\"\n                id=\"comparison_key\"\n              ></yap-select>\n            </div>\n\n            <div class=\"m-form-label-field\">\n              <label class=\"a-label\" for=\"comparison_values\">{{ '@yap.widget.chart.comparison.values' | i18n }}</label>\n              <yap-select\n                (ngModelChange)=\"trigger(); proposeTitle()\"\n                [(ngModel)]=\"optionsCopy.radar.valueProp\"\n                [itemsAsOption]=\"true\"\n                [items]=\"numericProperties$ | async\"\n                bindLabel=\"name\"\n                bindValue=\"name\"\n                class=\"a-yap-select\"\n                id=\"comparison_values\"\n              ></yap-select>\n            </div>\n\n            <div class=\"m-form-label-field\">\n              <label class=\"a-label\" for=\"comparison_category\">{{\n                '@yap.widget.chart.comparison.category' | i18n\n              }}</label>\n              <yap-select\n                (ngModelChange)=\"trigger(); proposeTitle()\"\n                [(ngModel)]=\"optionsCopy.radar.categoryProp\"\n                [itemsAsOption]=\"true\"\n                [items]=\"textProperties$ | async\"\n                bindLabel=\"name\"\n                bindValue=\"name\"\n                class=\"a-yap-select\"\n                id=\"comparison_category\"\n              ></yap-select>\n            </div>\n          </ng-container>\n          <ng-container *ngIf=\"schemes\">\n            <label\n              class=\"a-label\"\n              for=\"chart_seriesScheme_radar\"\n              [title]=\"'@yap.widget.chart.seriesSchemeAlt' | i18n\"\n              >{{ '@yap.widget.chart.seriesScheme' | i18n }}</label\n            >\n            <yap-select\n              (ngModelChange)=\"changeSeriesScheme($event)\"\n              [ngModel]=\"optionsCopy.series?.scheme!\"\n              [bindData]=\"true\"\n              [itemsAsOption]=\"false\"\n              [items]=\"schemes\"\n              id=\"chart_seriesScheme_radar\"\n            ></yap-select>\n          </ng-container>\n        </div>\n      </ng-container>\n\n      <ng-container *ngIf=\"optionsCopy?.type === MarkType.CIRCLE_PACK && optionsCopy.packing !== undefined\">\n        <div class=\"o-settings__popup__content__fields -condensed\">\n          <div class=\"m-form-label-field\">\n            <label class=\"a-label\" for=\"chart_circle_id\">{{ '@yap.widget.chart.circle.id' | i18n }}</label>\n            <yap-select\n              (ngModelChange)=\"trigger(); proposeTitle()\"\n              [(ngModel)]=\"optionsCopy.packing.id\"\n              [itemsAsOption]=\"true\"\n              [items]=\"variableAttributes$ | async\"\n              bindLabel=\"name\"\n              bindValue=\"name\"\n              class=\"a-yap-select\"\n              id=\"chart_circle_id\"\n            ></yap-select>\n          </div>\n\n          <div class=\"m-form-label-field\">\n            <label class=\"a-label\" for=\"chart_circle_pid\">{{ '@yap.widget.chart.circle.pid' | i18n }}</label>\n            <yap-select\n              (ngModelChange)=\"trigger(); proposeTitle()\"\n              [(ngModel)]=\"optionsCopy.packing.parentId\"\n              [itemsAsOption]=\"true\"\n              [items]=\"variableAttributes$ | async\"\n              bindLabel=\"name\"\n              bindValue=\"name\"\n              class=\"a-yap-select\"\n              id=\"chart_circle_pid\"\n            ></yap-select>\n          </div>\n\n          <div class=\"m-form-label-field\">\n            <label class=\"a-label\" for=\"chart_circle_field\">{{ '@yap.widget.chart.circle.field' | i18n }}</label>\n            <yap-select\n              (ngModelChange)=\"trigger(); proposeTitle()\"\n              [(ngModel)]=\"optionsCopy.packing.packField\"\n              [itemsAsOption]=\"true\"\n              [items]=\"numericProperties$ | async\"\n              bindLabel=\"name\"\n              bindValue=\"name\"\n              class=\"a-yap-select\"\n              id=\"chart_circle_field\"\n            ></yap-select>\n          </div>\n\n          <div class=\"m-form-label-field\">\n            <label class=\"a-label\" for=\"chart_circle_tooltip\">{{ '@yap.widget.chart.circle.tooltip' | i18n }}</label>\n            <yap-select\n              (ngModelChange)=\"trigger(); proposeTitle()\"\n              [(ngModel)]=\"optionsCopy.packing.tooltip\"\n              [itemsAsOption]=\"true\"\n              [items]=\"variableAttributes$ | async\"\n              bindLabel=\"name\"\n              bindValue=\"name\"\n              class=\"a-yap-select\"\n              id=\"chart_circle_tooltip\"\n            ></yap-select>\n          </div>\n        </div>\n      </ng-container>\n\n      <div class=\"o-settings__popup__content__fields -condensed\">\n        <yap-checkbox (ngModelChange)=\"toggleSpecToMerge($event)\" [ngModel]=\"!!optionsCopy.specToMerge\"\n          >{{ '@yap.widget.chart.moreOptions' | i18n }}\n        </yap-checkbox>\n\n        <ng-container *ngIf=\"!!optionsCopy.specToMerge\">\n          <textarea\n            [ngModel]=\"advancedEdit\"\n            (focusout)=\"updateAdvancedEdit($event)\"\n            class=\"o-settings__popup__content__area\"\n            [class.-invalid]=\"invalidJson\"\n          ></textarea>\n        </ng-container>\n      </div>\n    </yap-settings>\n  </yap-widget-header>\n  <ng-container *ngIf=\"isChartValid$ | async\">\n    <div\n      #vega\n      [style.height.px]=\"\n        ((widgetSize$ | async)?.height ?? 0) - ((displayHeader$ | async) ? 1 : 0) * WIDGET_HEADER_HEIGHT\n      \"\n      [style.width.px]=\"(widgetSize$ | async)?.width\"\n    ></div>\n  </ng-container>\n\n  <ng-container *ngIf=\"!(isChartValid$ | async)\">\n    <div class=\"o-widget__choose-parameters\">\n      <p class=\"a-p\">\n        {{ '@yap.widget.chart.chooseParameters' | i18n }}\n      </p>\n      <button type=\"button\" (click)=\"openSettings()\" class=\"a-btn a-btn--primary\">\n        <yap-icon [height]=\"20\" [width]=\"20\" iconSvg=\"control\"></yap-icon>\n        <span>{{ '@yap.widget.settings.title' | i18n }}</span>\n      </button>\n    </div>\n  </ng-container>\n</div>\n","export const enTranslations = {\n  '@yap': {\n    widget: {\n      chart: {\n        title: 'Chart title',\n        tooltip: 'Display tooltip',\n        params: {\n          noParams: 'No data for chart with selected settings',\n          multipleParams: 'Number of data with selected parameters: '\n        },\n        encoding: {\n          horizontal: 'Horizontal axis',\n          vertical: 'Vertical axis',\n          group: 'Operation type',\n          values: 'Values'\n        },\n        markType: {\n          null: '',\n          bar: 'Bar chart',\n          line: 'Line',\n          point: 'Points',\n          area: 'Area',\n          arc: 'Arc',\n          radar: 'Radar',\n          circle_pack: 'Circle packing',\n          histogram: 'Histogram',\n          timehistogram: 'Time histogram',\n          grouped: 'Grouped bar chart',\n          histostacked: 'Stacked bar chart',\n          withPoints: 'Line with points',\n          multi: 'Multi series line chart',\n          scatterColor: 'Scatter plot with color',\n          withLinesAndPoints: 'Area chart with overlaying lines and point markers',\n          areastacked: 'Stacked area chart',\n          pie: 'Pie Chart',\n          donut: 'Donut chart'\n        },\n        scheme: {\n          accent: '8 colors n°1',\n          set2: '8 colors n°2',\n          dark2: '8 dark colors',\n          pastel2: '8 pastel colors',\n          set1: '9 colors',\n          pastel1: '9 pastel colors',\n          category10: '10 colors',\n          tableau10: '10 different colors',\n          set3: '12 colors',\n          paired: '12 different colors',\n          tableau20: '20 colors',\n          category20: '20 colors with 2 shades',\n          category20b: '20 colors with 4 shades n°1',\n          category20c: '20 colors with 4 shades n°2',\n          'KO/W/OK': 'Traffic light'\n        },\n        dataLabel: 'Data label',\n        origin: 'Origin at zero',\n        series: 'Group as series',\n        seriesAttr: 'grouping attribute',\n        seriesScheme: 'Color scheme',\n        seriesSchemeAlt: 'https://vega.github.io/vega/docs/schemes/',\n        seriesLegend: 'Display legend',\n        chooseParameters: 'Please select parameters to display chart.',\n        timeUnit: 'Time unit',\n        timeUnitList: {\n          year: 'Year',\n          quarter: 'Quarter',\n          month: 'Month',\n          week: 'Week',\n          day: 'Day',\n          hours: 'Hours',\n          minutes: 'Minutes'\n        },\n        type: 'Chart type',\n        template: 'Chart template',\n        aggregation: {\n          none: 'Value',\n          count: 'Count',\n          sum: 'Sum',\n          distinct: 'Distinct elements',\n          average: 'Average',\n          median: 'Median',\n          q1: 'Lower quartile',\n          q3: 'Upper Quartile',\n          min: 'Minimum',\n          max: 'Maximum'\n        },\n        comparison: {\n          item: 'Compare objects',\n          value: 'Value list',\n          key: 'Branch property',\n          values: 'Value property',\n          category: 'Object property'\n        },\n        radar: {\n          titleItem: 'Compare displaying {{props}}',\n          titleList: 'Branches {{key}}, diplaying {{value}}, grouped by {{category}}',\n          defineKey: '«Key»',\n          defineValue: '«Value»',\n          defineCategory: '«Category»'\n        },\n        circle: {\n          id: 'Field for item identifier',\n          pid: 'Field for parent item identifier',\n          field: 'Field containing value',\n          title: 'Circle packing displaying {{field}}',\n          tooltip: 'Property to display in tooltip'\n        },\n        innerRadius: 'Inner radius',\n        moreOptions: 'Advanced mode'\n      }\n    }\n  }\n};\n","export const frTranslations = {\n  '@yap': {\n    widget: {\n      chart: {\n        title: 'Titre du graphique',\n        tooltip: 'Affichage des info-bulles',\n        params: {\n          noParams: 'Aucune donnée pour le graphique avec les paramètres sélectionnés',\n          multipleParams: 'Nombre de données avec les paramètres sélectionnés: '\n        },\n        encoding: {\n          horizontal: 'Axe horizontal',\n          vertical: 'Axe vertical',\n          group: 'Type de calcul',\n          values: 'Valeurs'\n        },\n        markType: {\n          null: '',\n          bar: 'Barres',\n          line: 'Courbe',\n          point: 'Points',\n          area: 'Aire',\n          arc: 'Circulaire',\n          radar: 'Radar',\n          circle_pack: 'Paquets de cercles',\n          histogram: 'Histogramme',\n          timehistogram: 'Histogramme de temps',\n          grouped: 'Histogramme empilé',\n          histostacked: 'Histogramme groupé',\n          withPoints: 'Courbe avec marques',\n          multi: 'Courbes empilées',\n          scatterColor: 'Nuages de points avec couleurs',\n          withLinesAndPoints: 'Aire avec lignes et marques',\n          areastacked: 'Aires empilées',\n          pie: 'Diagramme circulaire',\n          donut: 'Diagramme anneau'\n        },\n        scheme: {\n          accent: '8 couleurs n°1',\n          set2: '8 couleurs n°2',\n          dark2: '8 couleurs sombre',\n          pastel2: '8 couleurs pastel',\n          set1: '9 couleurs',\n          pastel1: '9 couleurs pastel',\n          category10: '10 couleurs',\n          tableau10: '10 couleurs différentes',\n          set3: '12 couleurs',\n          paired: '12 couleurs différentes',\n          tableau20: '20 couleurs',\n          category20: '20 couleurs avec 2 nuances',\n          category20b: '20 couleurs avec 4 nuances n°1',\n          category20c: '20 couleurs avec 4 nuances n°2',\n          'KO/W/OK': 'Feu de signalisation'\n        },\n        dataLabel: 'Libellé de la donnée',\n        origin: 'Axe affichant la valeur zéro',\n        series: 'Regrouper en séries',\n        seriesAttr: 'Attribut de regroupement',\n        seriesScheme: 'Jeu de couleur',\n        seriesSchemeAlt: 'https://vega.github.io/vega/docs/schemes/',\n        seriesLegend: 'Afficher la légende',\n        chooseParameters: \"Merci de sélectionner les paramètres afin d'afficher le graphique\",\n        timeUnit: 'Unité de temps',\n        timeUnitList: {\n          year: 'Année',\n          quarter: 'Trimestre',\n          month: 'Mois',\n          week: 'Semaine',\n          day: 'Jour',\n          hours: 'Heures',\n          minutes: 'Minutes'\n        },\n        type: 'Type de graphique',\n        template: 'Modèle de graphique',\n        aggregation: {\n          none: 'Valeur',\n          count: 'Nombre',\n          sum: 'Somme',\n          distinct: \"Nombre d'éléments distincts\",\n          average: 'Moyenne',\n          median: 'Médiane',\n          q1: 'Quartile inférieur',\n          q3: 'Quartile supérieur',\n          min: 'Minimum',\n          max: 'Maximum'\n        },\n        comparison: {\n          item: \"Comparaison d'objets\",\n          value: 'Liste de valeurs',\n          key: 'Propriété contenant la branche',\n          values: 'Propriété contenant la valeur',\n          category: \"Propriété contenant l'objet\"\n        },\n        radar: {\n          titleItem: 'Comparaisons affichant {{props}}',\n          titleList: 'Branches {{key}}, affichant {{value}}, regroupées par {{category}}',\n          defineKey: '«Clé»',\n          defineValue: '«Valeur»',\n          defineCategory: '«Catégorie»'\n        },\n        circle: {\n          id: \"Champ identifiant l'item\",\n          pid: 'Champ identifiant le parent',\n          field: 'Champ identifiant la valeur',\n          title: 'Paquets de cercles présentant {{field}}',\n          tooltip: 'Champ à afficher dans le tooltip'\n        },\n        innerRadius: 'Taille du rayon interne',\n        moreOptions: 'Mode avancé'\n      }\n    }\n  }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n  BaseWidgetComponent,\n  BaseWidgetModule,\n  YapCoreModule,\n  YapDashboardModule,\n  YapEditInputModule,\n  YapIconModule,\n  YapSelectModule,\n  YapToggleModule,\n  YapI18nModule,\n  YapI18nService,\n  YapRangeModule\n} from '@onepoint-yap/dashboard';\nimport { YapCheckboxModule } from '@onepoint-yap/dashboard/components/checkbox';\nimport { WidgetChartComponent } from './component/widget-chart.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { YapWidgetChartCssComponent } from './style/css.component';\n\n@NgModule({\n  declarations: [WidgetChartComponent, YapWidgetChartCssComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    YapCoreModule,\n    YapDashboardModule,\n    YapSelectModule,\n    YapIconModule,\n    YapCheckboxModule,\n    YapToggleModule,\n    YapEditInputModule,\n    YapI18nModule,\n    YapRangeModule\n  ],\n  exports: [WidgetChartComponent]\n})\nexport class WidgetChartModule extends BaseWidgetModule {\n  constructor(private yapTranslateService: YapI18nService) {\n    super();\n    this.yapTranslateService.addLangObject('fr', 'widget-chart', frTranslations);\n    this.yapTranslateService.addLangObject('en', 'widget-chart', enTranslations);\n  }\n\n  override getComponent() {\n    return WidgetChartComponent as Type<BaseWidgetComponent>;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i6.YapWidgetChartCssComponent","i1"],"mappings":"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"}