@visionaris-bruno/vs-echarts 7.1.3 → 8.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { provideEchartsCore, NgxEchartsDirective } from 'ngx-echarts';
2
2
  import * as echarts from 'echarts/core';
3
3
  import { BarChart, PieChart, LineChart, ScatterChart, FunnelChart, SunburstChart } from 'echarts/charts';
4
- import { TitleComponent, TooltipComponent, GridComponent, LegendComponent, GraphicComponent, ToolboxComponent, PolarComponent } from 'echarts/components';
4
+ import { TitleComponent, TooltipComponent, GridComponent, LegendComponent, GraphicComponent, ToolboxComponent, PolarComponent, DatasetComponent } from 'echarts/components';
5
5
  import { CanvasRenderer, SVGRenderer } from 'echarts/renderers';
6
6
  import * as i0 from '@angular/core';
7
7
  import { EventEmitter, Output, Input, ViewChild, Directive, Component } from '@angular/core';
@@ -75,6 +75,7 @@ function initializeEcharts() {
75
75
  GraphicComponent,
76
76
  ToolboxComponent,
77
77
  PolarComponent,
78
+ DatasetComponent,
78
79
  ]);
79
80
  initialized = true;
80
81
  }
@@ -175,7 +176,7 @@ function defaultOptionsOverrides() {
175
176
  class BaseEchartsComponent {
176
177
  chartContainer;
177
178
  /** Datos normalizados para graficar */
178
- data = { categories: [], series: [] };
179
+ data = { dimensions: [], source: [] };
179
180
  optionsOverrides = defaultOptionsOverrides();
180
181
  /** Paleta de colores básica */
181
182
  palette;
@@ -406,12 +407,12 @@ function getLegendOptions(overrides) {
406
407
  return merge({}, defaults, overrides);
407
408
  }
408
409
  function getCategoryAxisOptions(overrides) {
409
- const categories = resolveCategoryNames(overrides?.data);
410
- const autoRotate = categories.length > 10 ? 45 : 0;
410
+ const categories = overrides?.data ? overrides.data.map(c => typeof c === 'string' ? c : (c?.name || String(c))) : undefined;
411
+ const autoRotate = categories && categories.length > 10 ? 45 : 0;
411
412
  const defaults = {
412
413
  type: 'category',
413
414
  triggerEvent: true,
414
- data: categories,
415
+ ...(categories ? { data: categories } : {}),
415
416
  axisLabel: {
416
417
  rotate: autoRotate,
417
418
  interval: 0,
@@ -429,7 +430,7 @@ function getCategoryAxisOptions(overrides) {
429
430
  }
430
431
  }
431
432
  };
432
- return merge({}, defaults, { ...overrides, data: categories });
433
+ return merge({}, defaults, overrides);
433
434
  }
434
435
  function getValueAxisOptions(overrides) {
435
436
  const defaults = {
@@ -598,12 +599,11 @@ function applyLineSelectionStyle(series, selectedCategoryIndex, selectedSeriesIn
598
599
  /**
599
600
  * Resolves the unique key of a category safely.
600
601
  */
601
- function getCategoryKey(categories, index) {
602
- if (!categories || !categories[index]) {
602
+ function getCategoryKey(dimensions, index) {
603
+ if (!dimensions || !dimensions[index]) {
603
604
  return String(index);
604
605
  }
605
- const node = categories[index];
606
- return node.key || node.name || String(index);
606
+ return dimensions[index].name;
607
607
  }
608
608
  /**
609
609
  * Resolves the numeric value from a series data point.
@@ -613,128 +613,35 @@ function getCellValue(val) {
613
613
  return 0;
614
614
  return val;
615
615
  }
616
- function flattenCategoriesToFirstLevel(categories) {
617
- if (!categories)
618
- return [];
619
- return categories.map(cat => ({
620
- name: cat.name,
621
- key: cat.key
622
- }));
623
- }
624
- function getLeafIndicesMap(categories) {
625
- let leafCount = 0;
626
- const topLevelLeaves = [];
627
- const countLeaves = (node) => {
628
- if (!node.children || node.children.length === 0) {
629
- return 1;
630
- }
631
- let sum = 0;
632
- for (const child of node.children) {
633
- sum += countLeaves(child);
634
- }
635
- return sum;
636
- };
637
- for (const cat of categories) {
638
- const leavesUnderCat = countLeaves(cat);
639
- topLevelLeaves.push({
640
- start: leafCount,
641
- end: leafCount + leavesUnderCat
642
- });
643
- leafCount += leavesUnderCat;
644
- }
645
- return {
646
- topLevelLeaves,
647
- totalLeaves: leafCount
648
- };
649
- }
650
- function collectLeafSeries(nodes, parentNamePath = []) {
651
- const leaves = [];
652
- for (const node of nodes) {
653
- const currentPath = [...parentNamePath, node.name];
654
- if (node.children && node.children.length > 0) {
655
- leaves.push(...collectLeafSeries(node.children, currentPath));
656
- }
657
- else {
658
- const combinedName = currentPath.join(' ');
659
- leaves.push({
660
- ...node,
661
- name: combinedName
662
- });
663
- }
664
- }
665
- return leaves;
666
- }
667
- function flattenEChartData(data) {
668
- if (!data)
669
- return { categories: [], series: [] };
670
- const categories = data.categories || [];
671
- const series = data.series || [];
672
- const topLevelCategories = flattenCategoriesToFirstLevel(categories);
673
- const { topLevelLeaves } = getLeafIndicesMap(categories);
674
- const flatSeries = collectLeafSeries(series).map(s => {
675
- const aggregatedData = [];
676
- for (const range of topLevelLeaves) {
677
- let sum = 0;
678
- for (let j = range.start; j < range.end; j++) {
679
- sum += s.data[j] ?? 0;
680
- }
681
- aggregatedData.push(sum);
682
- }
683
- return {
684
- ...s,
685
- data: aggregatedData
686
- };
687
- });
688
- return {
689
- categories: topLevelCategories,
690
- series: flatSeries
691
- };
692
- }
693
- /**
694
- * Normalizes category nodes into an array of string names for category axes.
695
- */
696
- function resolveCategoryNames(categories) {
697
- if (!categories)
698
- return [];
699
- return categories.map(c => {
700
- if (!c)
701
- return '';
702
- if (typeof c === 'string')
703
- return c;
704
- if (typeof c === 'object' && 'name' in c)
705
- return c.name;
706
- return String(c);
707
- });
708
- }
709
- /**
710
- * Maps categories and series data into a flat array of objects suitable for Pie/Ring/Funnel charts.
711
- */
712
- function mapToChartItems(categories, seriesNode) {
713
- if (!categories || !seriesNode || !seriesNode.data)
714
- return [];
715
- return categories.map((catNode, catIndex) => ({
716
- name: catNode.name,
717
- value: getCellValue(seriesNode.data[catIndex]),
718
- originalMeassureKey: seriesNode.originalKey || getCategoryKey(categories, catIndex)
719
- }));
720
- }
721
616
  /**
722
617
  * Formatter generator for 'item' trigger strategy in tooltips.
723
618
  */
724
619
  function getItemTooltipFormatter(data, formatCellValue, opts) {
725
- const totalSeries = data.series.length;
726
620
  return (params) => {
621
+ let title = '', subtitle = '', valFormatted = '', auxVal = '';
727
622
  const showSerieName = opts?.showSerieName ?? true;
728
- const seriesObj = data.series[params.seriesIndex];
729
- const key = params.data?.originalMeassureKey || seriesObj?.originalKey || getCategoryKey(data.categories, params.dataIndex);
730
- const valFormatted = formatCellValue(params.value, key);
623
+ const row = params.value;
624
+ const dimension = data.dimensions[params.seriesIndex + 1];
625
+ const dimensionName = dimension ? dimension.name : '';
626
+ if (!dimensionName)
627
+ return '';
628
+ const rawValue = (row && typeof row === 'object') ? row[dimensionName] : params.value;
731
629
  const serieName = showSerieName ? `${params.marker} ${params.seriesName}<br/ >` : '';
732
- //TODO: Unificar salida del tooltip
733
- if (params.percent !== undefined) {
734
- const seriesHeader = totalSeries > 1 ? serieName : '';
735
- return `<div style="text-align: center;"><b>${params.name}</b><br/>${seriesHeader} <b>${valFormatted}</b> (${params.percent}%)</div>`;
630
+ title = params.name || (row && typeof row === 'object' ? row.category : '');
631
+ subtitle = (params.percent !== undefined && data.dimensions.length <= 2) ? '' : serieName;
632
+ valFormatted = formatCellValue(Number(rawValue ?? 0), dimensionName);
633
+ auxVal = params.percent !== undefined ? ` (${params.percent}%)` : '';
634
+ // sunburst treemap
635
+ if (params.treePathInfo) {
636
+ const lastLevelIndex = params.treePathInfo.length - 1, parentNodeIndex = lastLevelIndex - 1;
637
+ const parentNode = params.treePathInfo[parentNodeIndex];
638
+ const oldParentNode = params.treePathInfo[1];
639
+ if (parentNode.name) {
640
+ title = `${parentNode.name}->${params.name}`;
641
+ subtitle = `${params.marker} ${oldParentNode.name}<br/ >`;
642
+ }
736
643
  }
737
- return `<div style="text-align: center;"><b>${params.name}</b><br/>${serieName}<b>${valFormatted}</b></div>`;
644
+ return `<div style="text-align: center;"><b>${title}</b><br/>${subtitle}<b>${valFormatted}</b>${auxVal}</div>`;
738
645
  };
739
646
  }
740
647
  /**
@@ -748,13 +655,17 @@ function getAxisTooltipFormatter(data, formatCellValue, opts) {
748
655
  if (items.length === 0)
749
656
  return '';
750
657
  const firstItem = items[0];
751
- let html = `<b>${firstItem.name}</b><br/>`;
658
+ const row = firstItem.value;
659
+ const title = firstItem.name || (row && typeof row === 'object' ? row.category : '');
660
+ let html = `<b>${title}</b><br/>`;
752
661
  for (const item of items) {
753
- const seriesObj = data.series[item.seriesIndex];
754
- if (!seriesObj)
662
+ const dimension = data.dimensions[item.seriesIndex + 1];
663
+ const dimensionName = dimension ? dimension.name : '';
664
+ if (!dimensionName)
755
665
  continue;
756
- const key = seriesObj.originalKey || getCategoryKey(data.categories, item.dataIndex);
757
- const valFormatted = formatCellValue(item.value, key);
666
+ const itemRow = item.value;
667
+ const rawValue = (itemRow && typeof itemRow === 'object') ? itemRow[dimensionName] : item.value;
668
+ const valFormatted = formatCellValue(Number(rawValue ?? 0), dimensionName);
758
669
  html += `${item.marker} ${item.seriesName}: <b>${valFormatted}</b><br/>`;
759
670
  }
760
671
  return html;
@@ -788,63 +699,43 @@ function getCommons(opts) {
788
699
  return common;
789
700
  }
790
701
  /**
791
- * Maps hierarchical category nodes and an array of series into a nested structure
792
- * suitable for Sunburst/Treemap charts.
793
- * The categories form the levels closest to the center, and the series form the leaf level.
702
+ * Maps hierarchical category nodes and their measures into a nested structure
703
+ * suitable for Sunburst/Treemap charts from the IEChartDataNode children.
794
704
  */
795
- function mapHierarchicalData(categories, series) {
796
- if (!categories) {
705
+ function mapHierarchicalData(source, dimensions) {
706
+ if (!source) {
797
707
  return [];
798
708
  }
799
- let leafIndex = 0;
800
- function mapSeriesTree(seriesNodes, index) {
801
- if (!seriesNodes) {
802
- return [];
803
- }
804
- return seriesNodes.map(s => {
805
- const node = {
806
- name: s.name,
807
- };
808
- if (s.children && s.children.length > 0) {
809
- node.children = mapSeriesTree(s.children, index);
810
- }
811
- else {
812
- // Leaf series node: extract value from s.data[index]
813
- const dataVal = s.data?.[index];
814
- if (dataVal !== undefined && dataVal !== null) {
815
- const value = typeof dataVal === 'object' && 'value' in dataVal ? dataVal.value : dataVal;
816
- node.value = getCellValue(value);
817
- }
818
- else {
819
- node.value = 0;
820
- }
821
- node.originalMeassureKey = s.originalKey;
822
- }
823
- return node;
824
- });
825
- }
709
+ const measureDims = dimensions.filter(d => d.name !== 'category');
826
710
  function traverse(nodes) {
827
- return nodes.map(cat => {
828
- const node = {
829
- name: cat.name,
711
+ return nodes.map(node => {
712
+ const item = {
713
+ name: node.category,
830
714
  };
831
- if (cat.children && cat.children.length > 0) {
832
- node.children = traverse(cat.children);
715
+ if (node.children && node.children.length > 0) {
716
+ item.children = traverse(node.children);
833
717
  }
834
718
  else {
835
- // Leaf category node: append the series tree as children
836
- if (series && series.length > 0) {
837
- node.children = mapSeriesTree(series, leafIndex);
719
+ // Leaf category node: append the series (measures) as the final level of children
720
+ if (measureDims.length > 0) {
721
+ item.children = measureDims.map(dim => {
722
+ const rawValue = node[dim.name];
723
+ const value = typeof rawValue === 'object' && rawValue !== null && 'value' in rawValue ? rawValue.value : rawValue;
724
+ return {
725
+ name: dim.displayName || dim.name,
726
+ value: getCellValue(Number(value ?? 0)),
727
+ originalMeassureKey: dim.name
728
+ };
729
+ });
838
730
  }
839
731
  else {
840
- node.value = 0;
732
+ item.value = 0;
841
733
  }
842
- leafIndex++;
843
734
  }
844
- return node;
735
+ return item;
845
736
  });
846
737
  }
847
- return traverse(categories);
738
+ return traverse(source);
848
739
  }
849
740
  /**
850
741
  * Calculates the maximum depth of a tree structure.
@@ -891,10 +782,14 @@ class RingBuilder {
891
782
  merge(this.result, common);
892
783
  }
893
784
  addSeries(data, overrides) {
894
- const flatData = flattenEChartData(data);
895
- if (!flatData || !flatData.series.length)
785
+ if (!data || !data.dimensions || !data.source || data.source.length === 0)
896
786
  return;
897
- const totalRings = flatData.series.length; // Cada serie es un anillo
787
+ this.result.dataset = {
788
+ dimensions: data.dimensions,
789
+ source: data.source
790
+ };
791
+ const measureDims = data.dimensions.filter(d => d.name !== 'category');
792
+ const totalRings = measureDims.length; // Cada serie es un anillo
898
793
  // Configuración dinámica de radios y márgenes
899
794
  const margin = totalRings > 1 ? Math.max(0.5, 2.5 - (totalRings * 0.1)) : 0;
900
795
  const minInnerRadius = totalRings === 1 ? 45 : (totalRings > 5 ? Math.max(15, 40 - (totalRings * 1.2)) : 40);
@@ -903,12 +798,14 @@ class RingBuilder {
903
798
  const thickness = availableSpan / totalRings;
904
799
  const borderRadius = totalRings === 1 ? 10 : Math.max(2, Math.min(10, thickness * 0.8));
905
800
  const borderWidth = totalRings === 1 ? 2 : Math.max(0.5, Math.min(2, thickness * 0.15));
906
- const series = flatData.series.map((s, ringIndex) => {
801
+ const series = measureDims.map((dim, ringIndex) => {
802
+ const dimKey = dim.name;
803
+ const friendlyName = dim.displayName || dim.name;
907
804
  const inner = minInnerRadius + (ringIndex * (thickness + margin));
908
805
  const outer = inner + thickness;
909
- const pieData = mapToChartItems(flatData.categories, s);
910
806
  const dynamicRingSeriesOptions = {
911
- name: s.name,
807
+ name: friendlyName,
808
+ type: 'pie',
912
809
  radius: [`${inner}%`, `${outer}%`],
913
810
  itemStyle: {
914
811
  borderRadius: borderRadius,
@@ -924,7 +821,10 @@ class RingBuilder {
924
821
  borderWidth: borderWidth,
925
822
  },
926
823
  },
927
- data: pieData,
824
+ encode: {
825
+ itemName: 'category',
826
+ value: dimKey
827
+ },
928
828
  id: `ring_${ringIndex}`,
929
829
  };
930
830
  const seriesOption = merge(dynamicRingSeriesOptions, overrides);
@@ -960,9 +860,8 @@ class RingBuilder {
960
860
  }];
961
861
  }
962
862
  addTooltip(data, overrides) {
963
- const flatData = flattenEChartData(data);
964
863
  merge(overrides, {
965
- formatter: getTooltipFormatter(overrides.trigger, flatData, this.formatCellValue.bind(this)),
864
+ formatter: getTooltipFormatter(overrides.trigger, data, this.formatCellValue.bind(this)),
966
865
  });
967
866
  const tooltip = getTooltipOptions(overrides);
968
867
  this.result.tooltip = tooltip;
@@ -1019,12 +918,13 @@ class VSECDirector {
1019
918
  //chart callbacks
1020
919
  this.builder.setValueFormatter(valueFormatter);
1021
920
  this.builder.setPalette(palette);
1022
- this.builder.setValueFormatter(valueFormatter);
921
+ this.builder.setColorResolver(colorResolver);
1023
922
  const product = this.builder.baseProduct;
1024
- const seriesOverrides = merge$1(product.baseOptions.series, overrides[product.chartKey].series);
923
+ const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
1025
924
  // chart components
1026
925
  this.builder.addCommons();
1027
- this.builder.addSeries(data, seriesOverrides);
926
+ const layoutOpts = { axisTypes };
927
+ this.builder.addSeries(data, seriesOverrides, layoutOpts);
1028
928
  this.builder.addXAxis(data, overrides.axis, axisTypes.x);
1029
929
  this.builder.addYAxis(data, overrides.axis, axisTypes.y);
1030
930
  this.builder.addTooltip(data, overrides.tooltip);
@@ -1041,12 +941,13 @@ class VSECDirector {
1041
941
  //chart callbacks
1042
942
  this.builder.setValueFormatter(valueFormatter);
1043
943
  this.builder.setPalette(palette);
1044
- this.builder.setValueFormatter(valueFormatter);
944
+ this.builder.setColorResolver(colorResolver);
1045
945
  const product = this.builder.baseProduct;
1046
946
  const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
1047
947
  // chart components
1048
948
  this.builder.addCommons();
1049
- this.builder.addSeries(data, seriesOverrides);
949
+ const layoutOpts = { axisTypes, coordinateSystem: 'polar' };
950
+ this.builder.addSeries(data, seriesOverrides, layoutOpts);
1050
951
  this.builder.addPolar();
1051
952
  this.builder.addAngleAxis(data, overrides['axis']);
1052
953
  this.builder.addRadiusAxis(data, overrides['axis']);
@@ -1064,12 +965,13 @@ class VSECDirector {
1064
965
  //chart callbacks
1065
966
  this.builder.setValueFormatter(valueFormatter);
1066
967
  this.builder.setPalette(palette);
1067
- this.builder.setValueFormatter(valueFormatter);
968
+ this.builder.setColorResolver(colorResolver);
1068
969
  const product = this.builder.baseProduct;
1069
970
  const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
1070
971
  // chart components
1071
972
  this.builder.addCommons();
1072
- this.builder.addSeries(data, seriesOverrides);
973
+ const layoutOpts = { axisTypes };
974
+ this.builder.addSeries(data, seriesOverrides, layoutOpts);
1073
975
  this.builder.addXAxis(data, overrides.axis, axisTypes.x);
1074
976
  this.builder.addYAxis(data, overrides.axis, axisTypes.y);
1075
977
  this.builder.addTooltip(data, overrides.tooltip);
@@ -1084,12 +986,13 @@ class VSECDirector {
1084
986
  // El orden importa, primero callbacks y despues componentes.
1085
987
  this.builder.setValueFormatter(valueFormatter);
1086
988
  this.builder.setPalette(palette);
1087
- this.builder.setValueFormatter(valueFormatter);
989
+ this.builder.setColorResolver(colorResolver);
1088
990
  const product = this.builder.baseProduct;
1089
991
  const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
1090
992
  // chart components
1091
993
  this.builder.addCommons();
1092
- this.builder.addSeries(data, seriesOverrides);
994
+ const layoutOpts = { axisTypes };
995
+ this.builder.addSeries(data, seriesOverrides, layoutOpts);
1093
996
  this.builder.addXAxis(data, overrides.axis, axisTypes.x);
1094
997
  this.builder.addYAxis(data, overrides.axis, axisTypes.y);
1095
998
  this.builder.addTooltip(data, overrides.tooltip);
@@ -1106,7 +1009,8 @@ class VSECDirector {
1106
1009
  const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
1107
1010
  // chart components
1108
1011
  this.builder.addCommons();
1109
- this.builder.addSeries(data, seriesOverrides);
1012
+ const layoutOpts = {};
1013
+ this.builder.addSeries(data, seriesOverrides, layoutOpts);
1110
1014
  this.builder.addGraphic();
1111
1015
  this.builder.addTooltip(data, overrides.tooltip);
1112
1016
  this.builder.addLegend();
@@ -1122,7 +1026,8 @@ class VSECDirector {
1122
1026
  const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
1123
1027
  // chart components
1124
1028
  this.builder.addCommons();
1125
- this.builder.addSeries(data, seriesOverrides);
1029
+ const layoutOpts = {};
1030
+ this.builder.addSeries(data, seriesOverrides, layoutOpts);
1126
1031
  this.builder.addTooltip(data, overrides.tooltip);
1127
1032
  this.builder.addLegend();
1128
1033
  }
@@ -1137,7 +1042,8 @@ class VSECDirector {
1137
1042
  const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
1138
1043
  // chart components
1139
1044
  this.builder.addCommons();
1140
- this.builder.addSeries(data, seriesOverrides);
1045
+ const layoutOpts = {};
1046
+ this.builder.addSeries(data, seriesOverrides, layoutOpts);
1141
1047
  this.builder.addTooltip(data, overrides.tooltip);
1142
1048
  this.builder.addLegend();
1143
1049
  }
@@ -1152,7 +1058,8 @@ class VSECDirector {
1152
1058
  const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
1153
1059
  // chart components
1154
1060
  this.builder.addCommons();
1155
- this.builder.addSeries(data, seriesOverrides);
1061
+ const layoutOpts = {};
1062
+ this.builder.addSeries(data, seriesOverrides, layoutOpts);
1156
1063
  this.builder.addTooltip(data, overrides.tooltip);
1157
1064
  // this.builder.addLegend();
1158
1065
  }
@@ -1318,18 +1225,26 @@ class PieBuilder {
1318
1225
  merge(this.result, common);
1319
1226
  }
1320
1227
  addSeries(data, overrides) {
1321
- const flatData = flattenEChartData(data);
1322
- if (!flatData || !flatData.series.length)
1228
+ if (!data || !data.dimensions || !data.source || data.source.length === 0)
1323
1229
  return;
1324
- const totalSeries = flatData.series.length;
1230
+ this.result.dataset = {
1231
+ dimensions: data.dimensions,
1232
+ source: data.source
1233
+ };
1234
+ const measureDims = data.dimensions.filter(d => d.name !== 'category');
1235
+ const totalSeries = measureDims.length;
1325
1236
  let series = [];
1326
1237
  if (totalSeries === 1) {
1327
- const s = flatData.series[0];
1328
- const pieData = mapToChartItems(flatData.categories, s);
1238
+ const dim = measureDims[0];
1239
+ const dimKey = dim.name;
1240
+ const friendlyName = dim.displayName || dim.name;
1329
1241
  const dynamicPieSeriesOptions = {
1330
- name: s.name,
1242
+ name: friendlyName,
1331
1243
  type: 'pie',
1332
- data: pieData,
1244
+ encode: {
1245
+ itemName: 'category',
1246
+ value: dimKey
1247
+ },
1333
1248
  id: `pie_0`,
1334
1249
  radius: [0, '50%'],
1335
1250
  label: {
@@ -1354,8 +1269,9 @@ class PieBuilder {
1354
1269
  const numRings = totalSeries - 1;
1355
1270
  const availableSpan = maxOuterRadius - (centerPieRadius + margin) - (margin * (numRings - 1));
1356
1271
  const thickness = availableSpan / numRings;
1357
- series = flatData.series.map((s, idx) => {
1358
- const pieData = mapToChartItems(flatData.categories, s);
1272
+ series = measureDims.map((dim, idx) => {
1273
+ const dimKey = dim.name;
1274
+ const friendlyName = dim.displayName || dim.name;
1359
1275
  let radius;
1360
1276
  let labelPosition;
1361
1277
  let labelLineShow;
@@ -1376,7 +1292,7 @@ class PieBuilder {
1376
1292
  labelLineShow = true;
1377
1293
  }
1378
1294
  const dynamicPieSeriesOptions = {
1379
- name: s.name,
1295
+ name: friendlyName,
1380
1296
  type: 'pie',
1381
1297
  radius: radius,
1382
1298
  label: {
@@ -1386,7 +1302,10 @@ class PieBuilder {
1386
1302
  labelLine: {
1387
1303
  show: labelLineShow
1388
1304
  },
1389
- data: pieData,
1305
+ encode: {
1306
+ itemName: 'category',
1307
+ value: dimKey
1308
+ },
1390
1309
  id: `pie_${idx}`,
1391
1310
  };
1392
1311
  const seriesOption = merge(dynamicPieSeriesOptions, overrides);
@@ -1400,9 +1319,8 @@ class PieBuilder {
1400
1319
  this.result.series = series;
1401
1320
  }
1402
1321
  addTooltip(data, overrides) {
1403
- const flatData = flattenEChartData(data);
1404
1322
  merge(overrides, {
1405
- formatter: getTooltipFormatter(overrides.trigger, flatData, this.formatCellValue.bind(this)),
1323
+ formatter: getTooltipFormatter(overrides.trigger, data, this.formatCellValue.bind(this)),
1406
1324
  });
1407
1325
  const tooltip = getTooltipOptions(overrides);
1408
1326
  this.result.tooltip = tooltip;
@@ -1526,39 +1444,45 @@ class FunnelBuilder {
1526
1444
  merge(this.result, common);
1527
1445
  }
1528
1446
  addSeries(data, overrides) {
1529
- const flatData = flattenEChartData(data);
1530
- if (!flatData || !flatData.series.length)
1447
+ if (!data || !data.dimensions || !data.source || data.source.length === 0)
1531
1448
  return;
1532
- const series = flatData.series.map((s, seriesIndex) => {
1533
- const funnelData = mapToChartItems(flatData.categories, s);
1534
- let left = '10%';
1535
- let width = '80%';
1536
- const seriesValues = s.data.filter(val => typeof val === 'number');
1537
- const minVal = seriesValues.length > 0 ? Math.min(...seriesValues) : 0;
1538
- const maxVal = seriesValues.length > 0 ? Math.max(...seriesValues) : 100;
1539
- const dynamicFunnelSeriesOptions = {
1540
- name: s.name,
1541
- type: 'funnel',
1542
- left: left,
1543
- width: width,
1544
- min: minVal,
1545
- max: maxVal,
1546
- data: funnelData,
1547
- id: `funnel_${seriesIndex}`
1548
- };
1549
- const seriesOption = merge({}, overrides, dynamicFunnelSeriesOptions);
1550
- // Inject color resolver if provided
1551
- if (this.colorResolver && seriesOption.itemStyle) {
1552
- seriesOption.itemStyle.color = this.colorResolver;
1553
- }
1554
- return seriesOption;
1555
- });
1556
- this.result.series = series.shift();
1449
+ this.result.dataset = {
1450
+ dimensions: data.dimensions,
1451
+ source: data.source
1452
+ };
1453
+ const measureDims = data.dimensions.filter(d => d.name !== 'category');
1454
+ if (measureDims.length === 0)
1455
+ return;
1456
+ const dim = measureDims[0];
1457
+ const dimKey = dim.name;
1458
+ const friendlyName = dim.displayName || dim.name;
1459
+ // Obtener los valores para min/max
1460
+ const seriesValues = data.source.map(row => Number(row[dimKey] ?? 0));
1461
+ const minVal = seriesValues.length > 0 ? Math.min(...seriesValues) : 0;
1462
+ const maxVal = seriesValues.length > 0 ? Math.max(...seriesValues) : 100;
1463
+ const dynamicFunnelSeriesOptions = {
1464
+ name: friendlyName,
1465
+ type: 'funnel',
1466
+ left: '10%',
1467
+ width: '80%',
1468
+ min: minVal,
1469
+ max: maxVal,
1470
+ encode: {
1471
+ itemName: 'category',
1472
+ value: dimKey
1473
+ },
1474
+ id: `funnel_0`
1475
+ };
1476
+ const seriesOption = merge({}, overrides, dynamicFunnelSeriesOptions);
1477
+ // Inject color resolver if provided
1478
+ if (this.colorResolver && seriesOption.itemStyle) {
1479
+ seriesOption.itemStyle.color = this.colorResolver;
1480
+ }
1481
+ this.result.series = seriesOption;
1557
1482
  }
1558
1483
  addTooltip(data, overrides) {
1559
- const flatData = flattenEChartData(data);
1560
1484
  merge(overrides, {
1561
- formatter: getTooltipFormatter(overrides.trigger, flatData, this.formatCellValue.bind(this)),
1485
+ formatter: getTooltipFormatter(overrides.trigger, data, this.formatCellValue.bind(this)),
1562
1486
  });
1563
1487
  const tooltip = getTooltipOptions(overrides);
1564
1488
  this.result.tooltip = tooltip;
@@ -1607,7 +1531,7 @@ class EchartsFunnelComponent extends BaseEchartsComponent {
1607
1531
  type: 'funnel',
1608
1532
  left: '10%',
1609
1533
  width: '80%',
1610
- minSize: '0.4%',
1534
+ minSize: '0.01%',
1611
1535
  maxSize: '100%',
1612
1536
  sort: 'descending',
1613
1537
  gap: 2,
@@ -1702,18 +1626,43 @@ class EChartBuilder {
1702
1626
  * @param overrides
1703
1627
  * @returns
1704
1628
  */
1705
- addSeries(data, overrides) {
1706
- const flatData = flattenEChartData(data);
1707
- if (!flatData || !flatData.series.length)
1629
+ addSeries(data, overrides, opts) {
1630
+ if (!data || !data.dimensions || !data.source || data.source.length === 0)
1708
1631
  return;
1709
- const series = flatData.series.map((s) => {
1632
+ this.result.dataset = {
1633
+ dimensions: data.dimensions,
1634
+ source: data.source
1635
+ };
1636
+ const measureDims = data.dimensions.filter(d => d.name !== 'category');
1637
+ const isPolar = opts?.coordinateSystem === 'polar';
1638
+ const isHorizontal = opts?.axisTypes?.x === 'value' && opts?.axisTypes?.y === 'category';
1639
+ const series = measureDims.map((dim) => {
1640
+ const friendlyName = dim.displayName || dim.name;
1641
+ const dimKey = dim.name;
1642
+ let encode = {
1643
+ x: 'category',
1644
+ y: dimKey
1645
+ };
1646
+ if (isPolar) {
1647
+ encode = {
1648
+ angle: 'category',
1649
+ radius: dimKey
1650
+ };
1651
+ }
1652
+ else if (isHorizontal) {
1653
+ encode = {
1654
+ x: dimKey,
1655
+ y: 'category'
1656
+ };
1657
+ }
1710
1658
  const dynamicOverrides = {
1711
- name: s.name,
1712
- data: s.data,
1659
+ name: friendlyName,
1660
+ encode,
1713
1661
  label: {
1714
1662
  formatter: (params) => {
1715
- const key = s.originalKey || getCategoryKey(flatData.categories, params.dataIndex);
1716
- return this.formatCellValue(params.value, key);
1663
+ const row = params.value;
1664
+ const rawValue = (row && typeof row === 'object') ? row[dimKey] : params.value;
1665
+ return this.formatCellValue(Number(rawValue ?? 0), dimKey);
1717
1666
  }
1718
1667
  }
1719
1668
  };
@@ -1733,9 +1682,8 @@ class EChartBuilder {
1733
1682
  */
1734
1683
  addTooltip(data, overrides) {
1735
1684
  // inyecto formateador a overrides de tooltip
1736
- const flatData = flattenEChartData(data);
1737
1685
  merge$1(overrides, {
1738
- formatter: getTooltipFormatter(overrides.trigger, flatData, this.formatCellValue.bind(this)),
1686
+ formatter: getTooltipFormatter(overrides.trigger, data, this.formatCellValue.bind(this)),
1739
1687
  });
1740
1688
  const tooltip = getTooltipOptions(overrides);
1741
1689
  this.result.tooltip = tooltip;
@@ -1852,10 +1800,9 @@ class EChartBuilder {
1852
1800
  }
1853
1801
  // Utils
1854
1802
  getCategoryAxisOptions(data, overrides) {
1855
- const flatCategories = flattenCategoriesToFirstLevel(data.categories);
1803
+ // No explicit data needed on category axis when using ECharts dataset
1856
1804
  const categoryAxisOptionsOverrides = {
1857
- ...overrides.categoryAxis[0],
1858
- data: resolveCategoryNames(flatCategories),
1805
+ ...overrides.categoryAxis[0]
1859
1806
  };
1860
1807
  const categoryAxisOptions = getCategoryAxisOptions(categoryAxisOptionsOverrides);
1861
1808
  return categoryAxisOptions;
@@ -1960,11 +1907,11 @@ class EChartsHBarComponent extends EchartsBarComponent {
1960
1907
  this.director.makeBar(this.data, this.optionsOverrides, makeOpts);
1961
1908
  }
1962
1909
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsHBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1963
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsHBarComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
1910
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsHBarComponent, isStandalone: true, selector: "vs-echarts-hbar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
1964
1911
  }
1965
1912
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsHBarComponent, decorators: [{
1966
1913
  type: Component,
1967
- args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
1914
+ args: [{ selector: 'vs-echarts-hbar', standalone: true, imports: [
1968
1915
  CommonModule,
1969
1916
  NgxEchartsDirective,
1970
1917
  ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
@@ -1990,11 +1937,11 @@ class EChartsBarStackedComponent extends EchartsBarComponent {
1990
1937
  builder = new EChartBuilder(this.variantBaseProduct);
1991
1938
  director = new VSECDirector(this.builder);
1992
1939
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsBarStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1993
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsBarStackedComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
1940
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsBarStackedComponent, isStandalone: true, selector: "vs-echarts-stacked-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
1994
1941
  }
1995
1942
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsBarStackedComponent, decorators: [{
1996
1943
  type: Component,
1997
- args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
1944
+ args: [{ selector: 'vs-echarts-stacked-bar', standalone: true, imports: [
1998
1945
  CommonModule,
1999
1946
  NgxEchartsDirective,
2000
1947
  ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
@@ -2032,11 +1979,11 @@ class EChartsHBarStackedComponent extends EchartsBarComponent {
2032
1979
  this.director.makeBar(this.data, this.optionsOverrides, makeOpts);
2033
1980
  }
2034
1981
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsHBarStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2035
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsHBarStackedComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
1982
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsHBarStackedComponent, isStandalone: true, selector: "vs-echarts-hbar-stacked", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
2036
1983
  }
2037
1984
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsHBarStackedComponent, decorators: [{
2038
1985
  type: Component,
2039
- args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
1986
+ args: [{ selector: 'vs-echarts-hbar-stacked', standalone: true, imports: [
2040
1987
  CommonModule,
2041
1988
  NgxEchartsDirective,
2042
1989
  ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
@@ -2071,11 +2018,11 @@ class EChartsBarStackedRadialComponent extends EchartsBarComponent {
2071
2018
  this.director.makeBarRadial(this.data, this.optionsOverrides, makeOpts);
2072
2019
  }
2073
2020
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsBarStackedRadialComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2074
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsBarStackedRadialComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
2021
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsBarStackedRadialComponent, isStandalone: true, selector: "vs-echarts-bar-stacked-radial", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
2075
2022
  }
2076
2023
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsBarStackedRadialComponent, decorators: [{
2077
2024
  type: Component,
2078
- args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
2025
+ args: [{ selector: 'vs-echarts-bar-stacked-radial', standalone: true, imports: [
2079
2026
  CommonModule,
2080
2027
  NgxEchartsDirective,
2081
2028
  ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
@@ -2168,11 +2115,11 @@ class EChartsAreaComponent extends EchartsLineComponent {
2168
2115
  builder = new EChartBuilder(this.variantBaseProduct);
2169
2116
  director = new VSECDirector(this.builder);
2170
2117
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2171
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsAreaComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
2118
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsAreaComponent, isStandalone: true, selector: "vs-echarts-area", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
2172
2119
  }
2173
2120
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsAreaComponent, decorators: [{
2174
2121
  type: Component,
2175
- args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
2122
+ args: [{ selector: 'vs-echarts-area', standalone: true, imports: [
2176
2123
  CommonModule,
2177
2124
  NgxEchartsDirective,
2178
2125
  ], providers: [provideVSEcharts()], template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
@@ -2193,11 +2140,11 @@ class EChartsAreaStackComponent extends EchartsLineComponent {
2193
2140
  builder = new EChartBuilder(this.variantBaseProduct);
2194
2141
  director = new VSECDirector(this.builder);
2195
2142
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsAreaStackComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2196
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsAreaStackComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
2143
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsAreaStackComponent, isStandalone: true, selector: "vs-echarts-area-stack", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
2197
2144
  }
2198
2145
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsAreaStackComponent, decorators: [{
2199
2146
  type: Component,
2200
- args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
2147
+ args: [{ selector: 'vs-echarts-area-stack', standalone: true, imports: [
2201
2148
  CommonModule,
2202
2149
  NgxEchartsDirective,
2203
2150
  ], providers: [provideVSEcharts()], template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
@@ -2225,6 +2172,9 @@ class EchartsScatterComponent extends BaseEchartsComponent {
2225
2172
  },
2226
2173
  selectedMode: 'single',
2227
2174
  select: {
2175
+ label: {
2176
+ show: true,
2177
+ },
2228
2178
  itemStyle: {
2229
2179
  borderWidth: 2,
2230
2180
  borderColor: EChartsTokens.sBorderColor,
@@ -2281,10 +2231,10 @@ class SunburstBuilder {
2281
2231
  this.result = {};
2282
2232
  }
2283
2233
  addSeries(data, overrides) {
2284
- if (!data || !data.series || data.series.length === 0) {
2234
+ if (!data || !data.source || data.source.length === 0) {
2285
2235
  return;
2286
2236
  }
2287
- const sunburstData = mapHierarchicalData(data.categories, data.series);
2237
+ const sunburstData = mapHierarchicalData(data.source, data.dimensions);
2288
2238
  const depth = getTreeDepth(sunburstData);
2289
2239
  const levels = [];
2290
2240
  for (let i = 0; i <= depth; i++) {
@@ -2362,18 +2312,18 @@ class SunburstBuilder {
2362
2312
  class EChartsSunburstComponent extends BaseEchartsComponent {
2363
2313
  baseSeriesOptions = {
2364
2314
  type: 'sunburst',
2365
- radius: ['15%', '85%'],
2315
+ radius: [0, '85%'],
2366
2316
  sort: undefined,
2367
2317
  emphasis: {
2368
2318
  focus: 'ancestor'
2369
2319
  },
2370
- itemStyle: {
2371
- borderWidth: 1.5,
2372
- borderColor: '#fff'
2373
- },
2374
2320
  levels: [
2375
2321
  {},
2376
2322
  {
2323
+ r0: '15%',
2324
+ itemStyle: {
2325
+ borderWidth: 2
2326
+ },
2377
2327
  label: {
2378
2328
  rotate: 'tangential'
2379
2329
  }
@@ -2397,14 +2347,14 @@ class EChartsSunburstComponent extends BaseEchartsComponent {
2397
2347
  this.director.makeSunburst(this.data, this.optionsOverrides, makeOpts);
2398
2348
  }
2399
2349
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsSunburstComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
2400
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsSunburstComponent, isStandalone: true, selector: "vs-echarts-sunburst", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
2350
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsSunburstComponent, isStandalone: true, selector: "vs-echarts-sunburst", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
2401
2351
  }
2402
2352
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsSunburstComponent, decorators: [{
2403
2353
  type: Component,
2404
2354
  args: [{ selector: 'vs-echarts-sunburst', standalone: true, imports: [
2405
2355
  CommonModule,
2406
2356
  NgxEchartsDirective,
2407
- ], providers: [provideVSEcharts()], template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
2357
+ ], providers: [provideVSEcharts()], template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
2408
2358
  }] });
2409
2359
 
2410
2360
  // Interfaces de Inputs de Base EChart Component //