@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 = {
|
|
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 =
|
|
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,
|
|
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(
|
|
602
|
-
if (!
|
|
602
|
+
function getCategoryKey(dimensions, index) {
|
|
603
|
+
if (!dimensions || !dimensions[index]) {
|
|
603
604
|
return String(index);
|
|
604
605
|
}
|
|
605
|
-
|
|
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
|
|
729
|
-
const
|
|
730
|
-
const
|
|
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
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
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>${
|
|
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
|
-
|
|
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
|
|
754
|
-
|
|
662
|
+
const dimension = data.dimensions[item.seriesIndex + 1];
|
|
663
|
+
const dimensionName = dimension ? dimension.name : '';
|
|
664
|
+
if (!dimensionName)
|
|
755
665
|
continue;
|
|
756
|
-
const
|
|
757
|
-
const
|
|
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
|
|
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(
|
|
796
|
-
if (!
|
|
705
|
+
function mapHierarchicalData(source, dimensions) {
|
|
706
|
+
if (!source) {
|
|
797
707
|
return [];
|
|
798
708
|
}
|
|
799
|
-
|
|
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(
|
|
828
|
-
const
|
|
829
|
-
name:
|
|
711
|
+
return nodes.map(node => {
|
|
712
|
+
const item = {
|
|
713
|
+
name: node.category,
|
|
830
714
|
};
|
|
831
|
-
if (
|
|
832
|
-
|
|
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
|
|
836
|
-
if (
|
|
837
|
-
|
|
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
|
-
|
|
732
|
+
item.value = 0;
|
|
841
733
|
}
|
|
842
|
-
leafIndex++;
|
|
843
734
|
}
|
|
844
|
-
return
|
|
735
|
+
return item;
|
|
845
736
|
});
|
|
846
737
|
}
|
|
847
|
-
return traverse(
|
|
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
|
-
|
|
895
|
-
if (!flatData || !flatData.series.length)
|
|
785
|
+
if (!data || !data.dimensions || !data.source || data.source.length === 0)
|
|
896
786
|
return;
|
|
897
|
-
|
|
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 =
|
|
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:
|
|
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
|
-
|
|
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,
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
1322
|
-
if (!flatData || !flatData.series.length)
|
|
1228
|
+
if (!data || !data.dimensions || !data.source || data.source.length === 0)
|
|
1323
1229
|
return;
|
|
1324
|
-
|
|
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
|
|
1328
|
-
const
|
|
1238
|
+
const dim = measureDims[0];
|
|
1239
|
+
const dimKey = dim.name;
|
|
1240
|
+
const friendlyName = dim.displayName || dim.name;
|
|
1329
1241
|
const dynamicPieSeriesOptions = {
|
|
1330
|
-
name:
|
|
1242
|
+
name: friendlyName,
|
|
1331
1243
|
type: 'pie',
|
|
1332
|
-
|
|
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 =
|
|
1358
|
-
const
|
|
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:
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
1530
|
-
if (!flatData || !flatData.series.length)
|
|
1447
|
+
if (!data || !data.dimensions || !data.source || data.source.length === 0)
|
|
1531
1448
|
return;
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
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,
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
1712
|
-
|
|
1659
|
+
name: friendlyName,
|
|
1660
|
+
encode,
|
|
1713
1661
|
label: {
|
|
1714
1662
|
formatter: (params) => {
|
|
1715
|
-
const
|
|
1716
|
-
|
|
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,
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
2234
|
+
if (!data || !data.source || data.source.length === 0) {
|
|
2285
2235
|
return;
|
|
2286
2236
|
}
|
|
2287
|
-
const sunburstData = mapHierarchicalData(data.
|
|
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: [
|
|
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
|
|
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
|
|
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 //
|