@visionaris-bruno/vs-echarts 9.0.4 → 9.0.7
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.
|
@@ -185,6 +185,7 @@ function defaultOptionsOverrides() {
|
|
|
185
185
|
},
|
|
186
186
|
};
|
|
187
187
|
}
|
|
188
|
+
const defaultValueFormatter = (value) => `${value}`;
|
|
188
189
|
|
|
189
190
|
// TODO: Exportar valores por defecto de vs-echarts.config.ts por este servicio y actualizar en logica de frontend.
|
|
190
191
|
class VSEchartsConfigService {
|
|
@@ -241,7 +242,7 @@ class BaseEchartsComponent {
|
|
|
241
242
|
/** Resolver de colores dinámico (Callback) */
|
|
242
243
|
colorResolver;
|
|
243
244
|
/** Formateador de valores para etiquetas y tooltips */
|
|
244
|
-
valueFormatter =
|
|
245
|
+
valueFormatter = defaultValueFormatter;
|
|
245
246
|
chartClick = new EventEmitter();
|
|
246
247
|
/** Subject para debouncing de actualizaciones. ReplaySubject asegura no perder el primer renderizado. */
|
|
247
248
|
updateSubject = new ReplaySubject(1);
|
|
@@ -683,7 +684,7 @@ function getCellValue(val) {
|
|
|
683
684
|
/**
|
|
684
685
|
* Formatter generator for 'item' trigger strategy in tooltips.
|
|
685
686
|
*/
|
|
686
|
-
function getItemTooltipFormatter(data,
|
|
687
|
+
function getItemTooltipFormatter(data, valueFormatter, opts) {
|
|
687
688
|
return (params) => {
|
|
688
689
|
let title = '', subtitle = '', valFormatted = '', percentVal = '';
|
|
689
690
|
const showSerieName = opts?.showSerieName ?? true;
|
|
@@ -694,15 +695,16 @@ function getItemTooltipFormatter(data, formatCellValue, opts) {
|
|
|
694
695
|
return '';
|
|
695
696
|
const rawValue = (row && typeof row === 'object') ? row[dimensionName] : params.value;
|
|
696
697
|
const serieName = showSerieName ? `${params.marker} ${params.seriesName}<br/ >` : '';
|
|
697
|
-
|
|
698
|
+
const categoryName = params.name || (row && typeof row === 'object' ? row.category : '');
|
|
699
|
+
title = categoryName;
|
|
698
700
|
subtitle = serieName;
|
|
699
|
-
valFormatted =
|
|
700
|
-
// pie/funnel series
|
|
701
|
+
valFormatted = valueFormatter(Number(rawValue ?? 0), dimensionName);
|
|
702
|
+
// pie/funnel/ring series
|
|
701
703
|
if (params.percent != undefined) {
|
|
702
704
|
percentVal = ` (${params.percent}%)`;
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
}
|
|
705
|
+
// invertir titulo y subtitulo
|
|
706
|
+
title = `${params.seriesName}`;
|
|
707
|
+
subtitle = `${params.marker} ${categoryName}</br>`;
|
|
706
708
|
}
|
|
707
709
|
// sankey
|
|
708
710
|
if (params.dataType != undefined) {
|
|
@@ -712,11 +714,11 @@ function getItemTooltipFormatter(data, formatCellValue, opts) {
|
|
|
712
714
|
const sourceName = params.data.source.split('___')[0];
|
|
713
715
|
const targetName = params.data.target.split('___')[0];
|
|
714
716
|
title = `${sourceName} → ${targetName}`;
|
|
715
|
-
valFormatted =
|
|
717
|
+
valFormatted = valueFormatter(Number(params.value ?? 0), dimensionName);
|
|
716
718
|
}
|
|
717
719
|
else if (dataType === 'node') {
|
|
718
720
|
title = params.name.split('___')[0];
|
|
719
|
-
valFormatted =
|
|
721
|
+
valFormatted = valueFormatter(Number(params.value ?? 0), dimensionName);
|
|
720
722
|
}
|
|
721
723
|
}
|
|
722
724
|
// sunburst treemap
|
|
@@ -735,7 +737,7 @@ function getItemTooltipFormatter(data, formatCellValue, opts) {
|
|
|
735
737
|
/**
|
|
736
738
|
* Formatter generator for 'axis' trigger strategy in tooltips.
|
|
737
739
|
*/
|
|
738
|
-
function getAxisTooltipFormatter(data,
|
|
740
|
+
function getAxisTooltipFormatter(data, valueFormatter, opts) {
|
|
739
741
|
return (params) => {
|
|
740
742
|
if (!params)
|
|
741
743
|
return '';
|
|
@@ -753,7 +755,7 @@ function getAxisTooltipFormatter(data, formatCellValue, opts) {
|
|
|
753
755
|
continue;
|
|
754
756
|
const itemRow = item.value;
|
|
755
757
|
const rawValue = (itemRow && typeof itemRow === 'object') ? itemRow[dimensionName] : item.value;
|
|
756
|
-
const valFormatted =
|
|
758
|
+
const valFormatted = valueFormatter(Number(rawValue ?? 0), dimensionName);
|
|
757
759
|
html += `${item.marker} ${item.seriesName}: <b>${valFormatted}</b><br/>`;
|
|
758
760
|
}
|
|
759
761
|
return html;
|
|
@@ -762,10 +764,10 @@ function getAxisTooltipFormatter(data, formatCellValue, opts) {
|
|
|
762
764
|
/**
|
|
763
765
|
* Unified tooltip formatter generator that selects the appropriate strategy based on the trigger.
|
|
764
766
|
*/
|
|
765
|
-
function getTooltipFormatter(trigger, data,
|
|
767
|
+
function getTooltipFormatter(trigger, data, valueFormatter, opts) {
|
|
766
768
|
return trigger === 'axis'
|
|
767
|
-
? getAxisTooltipFormatter(data,
|
|
768
|
-
: getItemTooltipFormatter(data,
|
|
769
|
+
? getAxisTooltipFormatter(data, valueFormatter, opts)
|
|
770
|
+
: getItemTooltipFormatter(data, valueFormatter, opts);
|
|
769
771
|
}
|
|
770
772
|
function getCommons(opts) {
|
|
771
773
|
const palette = opts?.palette ?? getDefaultPalette();
|
|
@@ -852,7 +854,7 @@ function getTreeDepth(nodes) {
|
|
|
852
854
|
*/
|
|
853
855
|
class RingBuilder {
|
|
854
856
|
baseProduct;
|
|
855
|
-
valueFormatter =
|
|
857
|
+
valueFormatter = defaultValueFormatter;
|
|
856
858
|
palette = [];
|
|
857
859
|
colorResolver;
|
|
858
860
|
result = {};
|
|
@@ -948,10 +950,10 @@ class RingBuilder {
|
|
|
948
950
|
}];
|
|
949
951
|
}
|
|
950
952
|
addTooltip(data, overrides) {
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
const tooltip = getTooltipOptions(
|
|
953
|
+
const tooltipOptsOverrides = {};
|
|
954
|
+
tooltipOptsOverrides.formatter = getTooltipFormatter(overrides.trigger, data, this.valueFormatter);
|
|
955
|
+
merge(tooltipOptsOverrides, overrides);
|
|
956
|
+
const tooltip = getTooltipOptions(tooltipOptsOverrides);
|
|
955
957
|
this.result.tooltip = tooltip;
|
|
956
958
|
}
|
|
957
959
|
addLegend() {
|
|
@@ -984,15 +986,12 @@ class RingBuilder {
|
|
|
984
986
|
getResult() {
|
|
985
987
|
return this.result;
|
|
986
988
|
}
|
|
987
|
-
formatCellValue(value, key) {
|
|
988
|
-
return this.valueFormatter(value, key);
|
|
989
|
-
}
|
|
990
989
|
}
|
|
991
990
|
|
|
992
991
|
class BoxPlotBuilder {
|
|
993
992
|
baseProduct;
|
|
994
993
|
translateService;
|
|
995
|
-
valueFormatter =
|
|
994
|
+
valueFormatter = defaultValueFormatter;
|
|
996
995
|
palette = [];
|
|
997
996
|
// TODO: Hay que implementar un valor por defecto.
|
|
998
997
|
colorResolver;
|
|
@@ -1042,7 +1041,9 @@ class BoxPlotBuilder {
|
|
|
1042
1041
|
};
|
|
1043
1042
|
}
|
|
1044
1043
|
;
|
|
1045
|
-
const resumen5NumerosXCat = data.source
|
|
1044
|
+
const resumen5NumerosXCat = data.source
|
|
1045
|
+
.reverse() // reverse para no modificar el orden original
|
|
1046
|
+
.map(s => {
|
|
1046
1047
|
// filtro category para excluirlo de la lista de métricas
|
|
1047
1048
|
const values = Object.entries(s)
|
|
1048
1049
|
.filter(([key, val]) => key !== 'category' && !isNaN(val))
|
|
@@ -1208,9 +1209,8 @@ class BoxPlotBuilder {
|
|
|
1208
1209
|
*/
|
|
1209
1210
|
class EChartBuilder {
|
|
1210
1211
|
baseProduct = undefined;
|
|
1211
|
-
valueFormatter =
|
|
1212
|
+
valueFormatter = defaultValueFormatter;
|
|
1212
1213
|
palette = [];
|
|
1213
|
-
// TODO: Hay que implementar un valor por defecto.
|
|
1214
1214
|
colorResolver;
|
|
1215
1215
|
result = {};
|
|
1216
1216
|
constructor(baseProduct) {
|
|
@@ -1263,19 +1263,21 @@ class EChartBuilder {
|
|
|
1263
1263
|
const dynamicOverrides = {
|
|
1264
1264
|
name: friendlyName,
|
|
1265
1265
|
encode,
|
|
1266
|
-
label: {
|
|
1267
|
-
formatter: (params) => {
|
|
1268
|
-
const row = params.value;
|
|
1269
|
-
const rawValue = (row && typeof row === 'object') ? row[dimKey] : params.value;
|
|
1270
|
-
return this.formatCellValue(Number(rawValue ?? 0), dimKey);
|
|
1271
|
-
}
|
|
1272
|
-
}
|
|
1273
1266
|
};
|
|
1274
1267
|
const seriesOption = merge$1(dynamicOverrides, overrides);
|
|
1275
1268
|
// Inyectar el resolver de color si existe
|
|
1276
1269
|
if (this.colorResolver && seriesOption.itemStyle) {
|
|
1277
1270
|
seriesOption.itemStyle.color = this.colorResolver;
|
|
1278
1271
|
}
|
|
1272
|
+
// Inyectar el formatter de etiquetas
|
|
1273
|
+
if (seriesOption.label && this.valueFormatter != undefined) {
|
|
1274
|
+
const valueFormatter = this.valueFormatter;
|
|
1275
|
+
seriesOption.label.formatter = (params) => {
|
|
1276
|
+
const row = params.value;
|
|
1277
|
+
const rawValue = (row && typeof row === 'object') ? row[dimKey] : params.value;
|
|
1278
|
+
return valueFormatter(Number(rawValue ?? 0), dimKey);
|
|
1279
|
+
};
|
|
1280
|
+
}
|
|
1279
1281
|
return seriesOption;
|
|
1280
1282
|
});
|
|
1281
1283
|
this.result.series = series;
|
|
@@ -1286,11 +1288,11 @@ class EChartBuilder {
|
|
|
1286
1288
|
* @param overrides
|
|
1287
1289
|
*/
|
|
1288
1290
|
addTooltip(data, overrides) {
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
const tooltip = getTooltipOptions(
|
|
1291
|
+
const optsOverrides = {};
|
|
1292
|
+
// inyecto formateador personalizado de tooltip
|
|
1293
|
+
optsOverrides.formatter = getTooltipFormatter(overrides.trigger, data, this.valueFormatter.bind(this));
|
|
1294
|
+
merge$1(optsOverrides, overrides);
|
|
1295
|
+
const tooltip = getTooltipOptions(optsOverrides);
|
|
1294
1296
|
this.result.tooltip = tooltip;
|
|
1295
1297
|
}
|
|
1296
1298
|
addPolar() {
|
|
@@ -1385,12 +1387,6 @@ class EChartBuilder {
|
|
|
1385
1387
|
return this.result;
|
|
1386
1388
|
}
|
|
1387
1389
|
;
|
|
1388
|
-
/**
|
|
1389
|
-
* Formatea un valor utilizando el callback inyectado.
|
|
1390
|
-
*/
|
|
1391
|
-
formatCellValue(value, key) {
|
|
1392
|
-
return this.valueFormatter(value, key);
|
|
1393
|
-
}
|
|
1394
1390
|
// Setters
|
|
1395
1391
|
/**
|
|
1396
1392
|
* Permite inyectar un formateador de valores externo.
|
|
@@ -1439,7 +1435,7 @@ class EChartBuilder {
|
|
|
1439
1435
|
*/
|
|
1440
1436
|
class PieBuilder {
|
|
1441
1437
|
baseProduct;
|
|
1442
|
-
valueFormatter =
|
|
1438
|
+
valueFormatter = defaultValueFormatter;
|
|
1443
1439
|
palette = [];
|
|
1444
1440
|
colorResolver;
|
|
1445
1441
|
result = {};
|
|
@@ -1551,10 +1547,10 @@ class PieBuilder {
|
|
|
1551
1547
|
this.result.series = series;
|
|
1552
1548
|
}
|
|
1553
1549
|
addTooltip(data, overrides) {
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
const tooltip = getTooltipOptions(
|
|
1550
|
+
const tooltipOptsOverrides = {};
|
|
1551
|
+
tooltipOptsOverrides.formatter = getTooltipFormatter(overrides.trigger, data, this.valueFormatter);
|
|
1552
|
+
merge(tooltipOptsOverrides, overrides);
|
|
1553
|
+
const tooltip = getTooltipOptions(tooltipOptsOverrides);
|
|
1558
1554
|
this.result.tooltip = tooltip;
|
|
1559
1555
|
}
|
|
1560
1556
|
addLegend() {
|
|
@@ -1588,9 +1584,6 @@ class PieBuilder {
|
|
|
1588
1584
|
getResult() {
|
|
1589
1585
|
return this.result;
|
|
1590
1586
|
}
|
|
1591
|
-
formatCellValue(value, key) {
|
|
1592
|
-
return this.valueFormatter(value, key);
|
|
1593
|
-
}
|
|
1594
1587
|
}
|
|
1595
1588
|
|
|
1596
1589
|
/**
|
|
@@ -1600,7 +1593,7 @@ class PieBuilder {
|
|
|
1600
1593
|
*/
|
|
1601
1594
|
class FunnelBuilder {
|
|
1602
1595
|
baseProduct;
|
|
1603
|
-
valueFormatter =
|
|
1596
|
+
valueFormatter = defaultValueFormatter;
|
|
1604
1597
|
palette = [];
|
|
1605
1598
|
colorResolver;
|
|
1606
1599
|
result = {};
|
|
@@ -1655,10 +1648,12 @@ class FunnelBuilder {
|
|
|
1655
1648
|
this.result.series = seriesOption;
|
|
1656
1649
|
}
|
|
1657
1650
|
addTooltip(data, overrides) {
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1661
|
-
|
|
1651
|
+
const tooltipOptsOverrides = {};
|
|
1652
|
+
if (this.valueFormatter != undefined) {
|
|
1653
|
+
tooltipOptsOverrides.formatter = getTooltipFormatter(overrides.trigger, data, this.valueFormatter);
|
|
1654
|
+
}
|
|
1655
|
+
merge(tooltipOptsOverrides, overrides);
|
|
1656
|
+
const tooltip = getTooltipOptions(tooltipOptsOverrides);
|
|
1662
1657
|
this.result.tooltip = tooltip;
|
|
1663
1658
|
}
|
|
1664
1659
|
addLegend() {
|
|
@@ -1692,14 +1687,11 @@ class FunnelBuilder {
|
|
|
1692
1687
|
getResult() {
|
|
1693
1688
|
return this.result;
|
|
1694
1689
|
}
|
|
1695
|
-
formatCellValue(value, key) {
|
|
1696
|
-
return this.valueFormatter(value, key);
|
|
1697
|
-
}
|
|
1698
1690
|
}
|
|
1699
1691
|
|
|
1700
1692
|
class SunburstBuilder {
|
|
1701
1693
|
baseProduct;
|
|
1702
|
-
valueFormatter =
|
|
1694
|
+
valueFormatter = defaultValueFormatter;
|
|
1703
1695
|
palette = [];
|
|
1704
1696
|
colorResolver;
|
|
1705
1697
|
result = {};
|
|
@@ -1738,10 +1730,10 @@ class SunburstBuilder {
|
|
|
1738
1730
|
this.result.series = serie;
|
|
1739
1731
|
}
|
|
1740
1732
|
addTooltip(data, overrides) {
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
const tooltip = getTooltipOptions(
|
|
1733
|
+
const tooltipOptsOverrides = {};
|
|
1734
|
+
tooltipOptsOverrides.formatter = getTooltipFormatter(overrides.trigger || 'item', data, this.valueFormatter);
|
|
1735
|
+
merge$1(tooltipOptsOverrides, overrides);
|
|
1736
|
+
const tooltip = getTooltipOptions(tooltipOptsOverrides);
|
|
1745
1737
|
this.result.tooltip = tooltip;
|
|
1746
1738
|
}
|
|
1747
1739
|
addCommons() {
|
|
@@ -1798,7 +1790,7 @@ class SunburstBuilder {
|
|
|
1798
1790
|
*/
|
|
1799
1791
|
class SankeyBuilder {
|
|
1800
1792
|
baseProduct;
|
|
1801
|
-
valueFormatter =
|
|
1793
|
+
valueFormatter = defaultValueFormatter;
|
|
1802
1794
|
palette = [];
|
|
1803
1795
|
colorResolver;
|
|
1804
1796
|
result = {};
|
|
@@ -1902,10 +1894,10 @@ class SankeyBuilder {
|
|
|
1902
1894
|
this.result.series = serie;
|
|
1903
1895
|
}
|
|
1904
1896
|
addTooltip(data, overrides) {
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
const tooltip = getTooltipOptions(
|
|
1897
|
+
const tooltipOptsOverrides = {};
|
|
1898
|
+
tooltipOptsOverrides.formatter = getTooltipFormatter(overrides.trigger || 'item', data, this.valueFormatter);
|
|
1899
|
+
merge$1(tooltipOptsOverrides, overrides);
|
|
1900
|
+
const tooltip = getTooltipOptions(tooltipOptsOverrides);
|
|
1909
1901
|
this.result.tooltip = tooltip;
|
|
1910
1902
|
}
|
|
1911
1903
|
addPolar() { }
|
|
@@ -3016,7 +3008,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
3016
3008
|
], template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
|
|
3017
3009
|
}] });
|
|
3018
3010
|
|
|
3019
|
-
// Interfaces de Inputs de Base EChart Component //
|
|
3011
|
+
// Interfaces de Inputs de Base EChart Component //
|
|
3012
|
+
// TopLevelFormatterParams
|
|
3020
3013
|
|
|
3021
3014
|
;
|
|
3022
3015
|
;
|