@visionaris-bruno/vs-echarts 6.0.0 → 6.0.1
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.
package/README.md
CHANGED
|
@@ -16,10 +16,6 @@ Para instalar la librería en tu proyecto Angular, utiliza npm:
|
|
|
16
16
|
npm install @visionaris-bruno/vs-echarts
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
> **Nota para el equipo de Visionaris**: Para desarrollo local vinculando el código fuente (hot-reload), recuerda:
|
|
20
|
-
> 1. Ejecutar `npm install` en la raíz de `reusable/vs-ng-library` para asegurar que las dependencias de la librería estén presentes.
|
|
21
|
-
> 2. Consultar los archivos `tsconfig.dev.json` de la aplicación principal para verificar los mapeos de rutas (`paths`).
|
|
22
|
-
|
|
23
19
|
## 🛠️ Uso Básico
|
|
24
20
|
|
|
25
21
|
```typescript
|
|
@@ -40,3 +36,10 @@ import { EchartsRingComponent } from '@visionaris-bruno/vs-echarts';
|
|
|
40
36
|
```
|
|
41
37
|
|
|
42
38
|
## 📖 Documentación Detallada
|
|
39
|
+
|
|
40
|
+
- [Arquitectura y Patrón Builder](docs/architecture.md)
|
|
41
|
+
|
|
42
|
+
## 💻 Desarrollo Local
|
|
43
|
+
|
|
44
|
+
Para desarrollo local y vinculación de código fuente (hot-reload), consulta la [Guía de Desarrollo Local](docs/development.md).
|
|
45
|
+
|
|
@@ -614,13 +614,13 @@ function getCommons(opts) {
|
|
|
614
614
|
*
|
|
615
615
|
*/
|
|
616
616
|
class RingBuilder {
|
|
617
|
-
|
|
617
|
+
baseProduct;
|
|
618
618
|
valueFormatter = (value) => value.toLocaleString();
|
|
619
619
|
palette = [];
|
|
620
620
|
colorResolver;
|
|
621
621
|
result = {};
|
|
622
|
-
constructor(
|
|
623
|
-
this.
|
|
622
|
+
constructor(baseProduct) {
|
|
623
|
+
this.baseProduct = baseProduct;
|
|
624
624
|
}
|
|
625
625
|
reset() {
|
|
626
626
|
this.result = {};
|
|
@@ -770,7 +770,7 @@ class VSECDirector {
|
|
|
770
770
|
this.builder.setValueFormatter(valueFormatter);
|
|
771
771
|
this.builder.setPalette(palette);
|
|
772
772
|
this.builder.setValueFormatter(valueFormatter);
|
|
773
|
-
const product = this.builder.
|
|
773
|
+
const product = this.builder.baseProduct;
|
|
774
774
|
const seriesOverrides = merge$1(product.baseOptions.series, overrides[product.chartKey].series);
|
|
775
775
|
// chart components
|
|
776
776
|
this.builder.addCommons();
|
|
@@ -792,7 +792,7 @@ class VSECDirector {
|
|
|
792
792
|
this.builder.setValueFormatter(valueFormatter);
|
|
793
793
|
this.builder.setPalette(palette);
|
|
794
794
|
this.builder.setValueFormatter(valueFormatter);
|
|
795
|
-
const product = this.builder.
|
|
795
|
+
const product = this.builder.baseProduct;
|
|
796
796
|
const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
|
|
797
797
|
// chart components
|
|
798
798
|
this.builder.addCommons();
|
|
@@ -815,7 +815,7 @@ class VSECDirector {
|
|
|
815
815
|
this.builder.setValueFormatter(valueFormatter);
|
|
816
816
|
this.builder.setPalette(palette);
|
|
817
817
|
this.builder.setValueFormatter(valueFormatter);
|
|
818
|
-
const product = this.builder.
|
|
818
|
+
const product = this.builder.baseProduct;
|
|
819
819
|
const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
|
|
820
820
|
// chart components
|
|
821
821
|
this.builder.addCommons();
|
|
@@ -832,7 +832,7 @@ class VSECDirector {
|
|
|
832
832
|
this.builder.setValueFormatter(valueFormatter);
|
|
833
833
|
this.builder.setPalette(palette);
|
|
834
834
|
this.builder.setColorResolver(colorResolver);
|
|
835
|
-
const product = this.builder.
|
|
835
|
+
const product = this.builder.baseProduct;
|
|
836
836
|
const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
|
|
837
837
|
// chart components
|
|
838
838
|
this.builder.addCommons();
|
|
@@ -876,13 +876,13 @@ class EchartsRingComponent extends BaseEchartsComponent {
|
|
|
876
876
|
animationType: 'scale',
|
|
877
877
|
animationEasing: 'elasticOut',
|
|
878
878
|
};
|
|
879
|
-
|
|
879
|
+
baseProduct = {
|
|
880
880
|
chartKey: 'ring',
|
|
881
881
|
baseOptions: {
|
|
882
882
|
series: this.baseSeriesOptions,
|
|
883
883
|
}
|
|
884
884
|
};
|
|
885
|
-
builder = new RingBuilder(this.
|
|
885
|
+
builder = new RingBuilder(this.baseProduct);
|
|
886
886
|
director = new VSECDirector(this.builder);
|
|
887
887
|
lastSelectedSeriesIndex = null;
|
|
888
888
|
lastSelectedDataIndex = null;
|
|
@@ -1036,14 +1036,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
|
|
|
1036
1036
|
* Puede verse utilizado en graficos como Lineas y Bars. Siempre que se pueda priorizar utilizar este.
|
|
1037
1037
|
*/
|
|
1038
1038
|
class EChartBuilder {
|
|
1039
|
-
|
|
1039
|
+
baseProduct = undefined;
|
|
1040
1040
|
valueFormatter = (value) => value.toLocaleString();
|
|
1041
1041
|
palette = [];
|
|
1042
1042
|
// TODO: Hay que implementar un valor por defecto.
|
|
1043
1043
|
colorResolver;
|
|
1044
1044
|
result = {};
|
|
1045
|
-
constructor(
|
|
1046
|
-
this.
|
|
1045
|
+
constructor(baseProduct) {
|
|
1046
|
+
this.baseProduct = baseProduct;
|
|
1047
1047
|
}
|
|
1048
1048
|
reset() {
|
|
1049
1049
|
this.result = {};
|
|
@@ -1242,13 +1242,13 @@ class EchartsBarComponent extends BaseEchartsComponent {
|
|
|
1242
1242
|
}
|
|
1243
1243
|
};
|
|
1244
1244
|
// va a tener que estar en el base como "abstract".
|
|
1245
|
-
|
|
1245
|
+
baseProduct = {
|
|
1246
1246
|
chartKey: 'bar',
|
|
1247
1247
|
baseOptions: {
|
|
1248
1248
|
series: this.baseSeriesOptions,
|
|
1249
1249
|
}
|
|
1250
1250
|
};
|
|
1251
|
-
builder = new EChartBuilder(this.
|
|
1251
|
+
builder = new EChartBuilder(this.baseProduct);
|
|
1252
1252
|
director = new VSECDirector(this.builder);
|
|
1253
1253
|
constructor() {
|
|
1254
1254
|
super();
|
|
@@ -1373,13 +1373,13 @@ class EChartsHBarComponent extends EchartsBarComponent {
|
|
|
1373
1373
|
borderRadius: [0, 4, 4, 0],
|
|
1374
1374
|
}
|
|
1375
1375
|
});
|
|
1376
|
-
|
|
1376
|
+
variantBaseProduct = {
|
|
1377
1377
|
chartKey: 'hBar',
|
|
1378
1378
|
baseOptions: {
|
|
1379
1379
|
series: this.variantSeriesOptionsBase,
|
|
1380
1380
|
}
|
|
1381
1381
|
};
|
|
1382
|
-
builder = new EChartBuilder(this.
|
|
1382
|
+
builder = new EChartBuilder(this.variantBaseProduct);
|
|
1383
1383
|
director = new VSECDirector(this.builder);
|
|
1384
1384
|
make(makeOpts) {
|
|
1385
1385
|
makeOpts.axisTypes = {
|
|
@@ -1410,13 +1410,13 @@ class EChartsBarStackedComponent extends EchartsBarComponent {
|
|
|
1410
1410
|
focus: 'series',
|
|
1411
1411
|
}
|
|
1412
1412
|
});
|
|
1413
|
-
|
|
1413
|
+
variantBaseProduct = {
|
|
1414
1414
|
chartKey: 'barStacked',
|
|
1415
1415
|
baseOptions: {
|
|
1416
1416
|
series: this.variantSeriesOptionsBase,
|
|
1417
1417
|
}
|
|
1418
1418
|
};
|
|
1419
|
-
builder = new EChartBuilder(this.
|
|
1419
|
+
builder = new EChartBuilder(this.variantBaseProduct);
|
|
1420
1420
|
director = new VSECDirector(this.builder);
|
|
1421
1421
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsBarStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1422
1422
|
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 [options]=\"chartOptions\" [autoResize]=\"true\" (chartInit)=\"onChartInit($event)\" (chartClick)=\"onChartClick($event)\" (legendSelectChanged)=\"onLegendSelectChanged($event)\"></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"] }] });
|
|
@@ -1440,13 +1440,13 @@ class EChartsHBarStackedComponent extends EchartsBarComponent {
|
|
|
1440
1440
|
focus: 'series',
|
|
1441
1441
|
}
|
|
1442
1442
|
});
|
|
1443
|
-
|
|
1443
|
+
variantBaseProduct = {
|
|
1444
1444
|
chartKey: 'hBarStacked',
|
|
1445
1445
|
baseOptions: {
|
|
1446
1446
|
series: this.variantSeriesOptionsBase,
|
|
1447
1447
|
}
|
|
1448
1448
|
};
|
|
1449
|
-
builder = new EChartBuilder(this.
|
|
1449
|
+
builder = new EChartBuilder(this.variantBaseProduct);
|
|
1450
1450
|
director = new VSECDirector(this.builder);
|
|
1451
1451
|
make(makeOpts) {
|
|
1452
1452
|
makeOpts.axisTypes = {
|
|
@@ -1478,13 +1478,13 @@ class EChartsBarStackedRadialComponent extends EchartsBarComponent {
|
|
|
1478
1478
|
},
|
|
1479
1479
|
coordinateSystem: 'polar',
|
|
1480
1480
|
});
|
|
1481
|
-
|
|
1481
|
+
variantBaseProduct = {
|
|
1482
1482
|
chartKey: 'barStackedRadial',
|
|
1483
1483
|
baseOptions: {
|
|
1484
1484
|
series: this.variantSeriesOptionsBase,
|
|
1485
1485
|
}
|
|
1486
1486
|
};
|
|
1487
|
-
builder = new EChartBuilder(this.
|
|
1487
|
+
builder = new EChartBuilder(this.variantBaseProduct);
|
|
1488
1488
|
director = new VSECDirector(this.builder);
|
|
1489
1489
|
make(makeOpts) {
|
|
1490
1490
|
this.director.makeBarRadial(this.data, this.optionsOverrides, makeOpts);
|
|
@@ -1608,13 +1608,13 @@ class EchartsLineComponent extends BaseEchartsComponent {
|
|
|
1608
1608
|
}
|
|
1609
1609
|
},
|
|
1610
1610
|
};
|
|
1611
|
-
|
|
1611
|
+
baseProduct = {
|
|
1612
1612
|
chartKey: 'line',
|
|
1613
1613
|
baseOptions: {
|
|
1614
1614
|
series: this.baseSeriesOptions,
|
|
1615
1615
|
}
|
|
1616
1616
|
};
|
|
1617
|
-
builder = new EChartBuilder(this.
|
|
1617
|
+
builder = new EChartBuilder(this.baseProduct);
|
|
1618
1618
|
director = new VSECDirector(this.builder);
|
|
1619
1619
|
constructor() {
|
|
1620
1620
|
super();
|
|
@@ -1673,13 +1673,13 @@ class EChartsAreaComponent extends EchartsLineComponent {
|
|
|
1673
1673
|
smooth: true,
|
|
1674
1674
|
areaStyle: {},
|
|
1675
1675
|
});
|
|
1676
|
-
|
|
1676
|
+
variantBaseProduct = {
|
|
1677
1677
|
chartKey: 'area',
|
|
1678
1678
|
baseOptions: {
|
|
1679
1679
|
series: this.variantSeriesOptionsBase,
|
|
1680
1680
|
}
|
|
1681
1681
|
};
|
|
1682
|
-
builder = new EChartBuilder(this.
|
|
1682
|
+
builder = new EChartBuilder(this.variantBaseProduct);
|
|
1683
1683
|
director = new VSECDirector(this.builder);
|
|
1684
1684
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsAreaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1685
1685
|
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]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($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"] }] });
|
|
@@ -1698,13 +1698,13 @@ class EChartsAreaStackComponent extends EchartsLineComponent {
|
|
|
1698
1698
|
areaStyle: {},
|
|
1699
1699
|
stack: 'total',
|
|
1700
1700
|
});
|
|
1701
|
-
|
|
1701
|
+
variantBaseProduct = {
|
|
1702
1702
|
chartKey: 'areaStack',
|
|
1703
1703
|
baseOptions: {
|
|
1704
1704
|
series: this.variantSeriesOptionsBase,
|
|
1705
1705
|
}
|
|
1706
1706
|
};
|
|
1707
|
-
builder = new EChartBuilder(this.
|
|
1707
|
+
builder = new EChartBuilder(this.variantBaseProduct);
|
|
1708
1708
|
director = new VSECDirector(this.builder);
|
|
1709
1709
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsAreaStackComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1710
1710
|
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]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($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"] }] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visionaris-bruno-vs-echarts.mjs","sources":["../../../projects/vs-echarts/src/lib/vs-echarts.utils.ts","../../../projects/vs-echarts/src/lib/vs-echarts.config.ts","../../../projects/vs-echarts/src/lib/charts/base-echart.component.ts","../../../projects/vs-echarts/src/lib/builders/builders.utils.ts","../../../projects/vs-echarts/src/lib/builders/ring.builder.ts","../../../projects/vs-echarts/src/lib/builders/director.ts","../../../projects/vs-echarts/src/lib/charts/echarts-ring/echarts-ring.ts","../../../projects/vs-echarts/src/lib/charts/echarts-ring/echarts-ring.html","../../../projects/vs-echarts/src/lib/builders/echart.builder.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-bar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-bar.html","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-hBar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-stackedBar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-hBarStacked.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-barStackedRadial.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.utils.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.html","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-area.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-areaStack.ts","../../../projects/vs-echarts/src/lib/vs-echarts-api.interfaces.ts","../../../projects/vs-echarts/src/lib/vs-echarts.interfaces.ts","../../../projects/vs-echarts/src/public-api.ts","../../../projects/vs-echarts/src/visionaris-bruno-vs-echarts.ts"],"sourcesContent":["/**\n * Global Design Tokens for ECharts\n */\nexport const EChartsTokens = {\n fontFamily: \"'Inter', 'Roboto', sans-serif\",\n fontSize: 11,\n axisColor: '#666',\n lineColor: '#ddd',\n primaryColor: '#08B1D5',\n tooltipBg: 'rgba(255, 255, 255, 0.95)',\n defaultPalette: ['#08B1D5', '#2C3E50', '#F39C12', '#E74C3C', '#27AE60', '#8E44AD', '#3498DB', '#16A085', '#D35400', '#2980B9']\n};\n\n/**\n * Exposes the default Visionaris palette for internal fallbacks.\n */\nexport function getDefaultPalette(): string[] {\n return [...EChartsTokens.defaultPalette];\n}","import { provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { BarChart, LineChart, PieChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n GraphicComponent,\n ToolboxComponent,\n PolarComponent\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsTokens } from './vs-echarts.utils';\nimport { IOptionsOverridesWrapper } from './vs-echarts-api.interfaces';\n\n/**\n * Inicialización centralizada de ECharts para evitar duplicación y efectos secundarios \n * no controlados en componentes standalone.\n */\nlet initialized = false;\n\nexport function initializeEcharts() {\n if (initialized) return;\n \n echarts.use([\n BarChart,\n PieChart,\n LineChart,\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n CanvasRenderer,\n GraphicComponent,\n ToolboxComponent,\n PolarComponent,\n ]);\n \n initialized = true;\n}\n\n/**\n * Provee la configuración de ECharts para ngx-echarts.\n * Llama automáticamente a la inicialización de módulos.\n */\nexport function provideVSEcharts() {\n initializeEcharts();\n return provideEchartsCore({ echarts });\n}\n\nexport function defaultOptionsOverrides(): IOptionsOverridesWrapper {\n return {\n tooltip: {\n trigger: 'item',\n },\n axis: {\n categoryAxis: [\n {\n axisLabel: {\n fontFamily: EChartsTokens.fontFamily,\n width: 100,\n fontSize: 9,\n margin: 12,\n color: EChartsTokens.axisColor,\n fontWeight: 'normal',\n }\n }\n ],\n valueAxis: [],\n },\n \n line: {\n series: {\n smooth: true,\n },\n },\n area: {\n series: {\n smooth: true,\n },\n },\n areaStack: {\n series: {\n smooth: true,\n },\n },\n bar: {\n series: {\n showBackground: true,\n },\n },\n barStacked: {\n series: {\n showBackground: false,\n }\n },\n barStackedRadial: {\n series: {\n showBackground: false,\n }\n },\n hBar: {\n series: {\n showBackground: true,\n }\n },\n hBarStacked: {\n series: {\n showBackground: false,\n }\n },\n ring: {\n series: {}\n }\n }\n}","import { Input, OnChanges, SimpleChanges, ViewChild, ElementRef, Output, EventEmitter, OnDestroy, Directive, OnInit } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport type * as echarts from 'echarts';\nimport { IEChartData, EChartValueFormatter, ChartColorResolver, IOptionsOverridesWrapper } from '../vs-echarts-api.interfaces';\nimport { EChartClickType, VSEChartProduct, IEChartBuilder } from '../vs-echarts.interfaces';\nimport { defaultOptionsOverrides } from '../vs-echarts.config';\nimport merge from 'lodash/merge';\nimport { MakeOpts, VSECDirector } from '../builders/director';\nimport { SeriesOption } from 'echarts';\n\n@Directive({\n standalone: true\n})\n/**\n * BaseEchartsComponent\n * \n * Clase base para componentes especialistas de ECharts.\n * Gestiona el ciclo de vida, redimensionado dinámico y debouncing de actualizaciones.\n * \n * @see {@link vs-echarts/docs/internal-architecture.md}\n */\nexport abstract class BaseEchartsComponent implements OnChanges, OnDestroy {\n @ViewChild('chartContainer', { static: true }) chartContainer!: ElementRef;\n \n /** Datos normalizados para graficar */\n @Input() data: IEChartData = { categories: [], series: [] };\n \n @Input({\n \"transform\": (values: Partial<IOptionsOverridesWrapper> | null) => {\n return merge(defaultOptionsOverrides(), values || {});\n }}) optionsOverrides: IOptionsOverridesWrapper = defaultOptionsOverrides();\n\n /** Paleta de colores básica */\n @Input() palette?: string[];\n\n /** Resolver de colores dinámico (Callback) */\n @Input() colorResolver?: ChartColorResolver;\n\n /** Formateador de valores para etiquetas y tooltips */\n @Input() valueFormatter?: EChartValueFormatter;\n \n @Output() chartClick = new EventEmitter<{type: EChartClickType, data: any}>(); \n\n /** Subject para debouncing de actualizaciones. ReplaySubject asegura no perder el primer renderizado. */\n private updateSubject = new ReplaySubject<echarts.EChartsOption>(1);\n private updateSubscription?: Subscription;\n\n /**\n * producto base/inicial para el builder.\n */\n protected abstract product: VSEChartProduct;\n protected abstract builder: IEChartBuilder;\n /**\n * director de construcción.\n * \n * Es quien tendra las instrucciones de armado de los distintos productos\n * y sus variantes.\n * \n * Ver: https://refactoring.guru/es/design-patterns/builder \n */\n protected abstract director: VSECDirector;\n protected abstract make(makeOpts: MakeOpts): void;\n /**\n * Opciones de series escenciales, inmutables y estaticas minimas\n * necesarias para el dibujado de las series del grafico.\n */\n protected abstract baseSeriesOptions: SeriesOption;\n\n protected chartInstance?: echarts.ECharts;\n protected currentLegendSelected: any = null;\n /** Estado de selección para filtros cruzados */\n protected selectedCategoryIndex: number | null = null;\n protected selectedSeriesIndex: number | null = null;\n \n /** Opciones configuradas para ngx-echarts */\n public chartOptions: any = {};\n\n constructor() {\n this.updateSubscription = this.updateSubject.pipe(\n debounceTime(150)\n ).subscribe(options => {\n this.updateOptions(options);\n });\n }\n\n\n ngOnChanges(changes: SimpleChanges) {\n this.onInputChanges(changes);\n }\n\n ngOnDestroy() {\n this.updateSubscription?.unsubscribe();\n this.chartInstance?.dispose();\n }\n\n /**\n * Captura la instancia de echarts (usado por ngx-echarts)\n */\n onChartInit(instance: any) {\n this.chartInstance = instance;\n this.setupBaseInteractions();\n this.updateChartOptions();\n }\n\n /**\n * Configura interacciones base como el clic en el fondo para limpiar selección.\n */\n private setupBaseInteractions(): void {\n if (!this.chartInstance) return;\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n this.clearSelection();\n }\n });\n }\n\n onChartClick(event: any): void {\n if (event.componentType === 'series') {\n const index = event.dataIndex;\n const seriesIndex = event.seriesIndex;\n\n if (index !== undefined && index >= 0) {\n this.handleSelection(index, seriesIndex);\n\n // Emit standardized payload for cross-filtering\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n }\n\n /**\n * Maneja la lógica de alternancia de selección.\n */\n protected handleSelection(dataIndex: number, seriesIndex: number): void {\n const isSamePoint = this.selectedCategoryIndex === dataIndex && this.selectedSeriesIndex === seriesIndex;\n \n if (isSamePoint) {\n this.clearSelection();\n } else {\n this.selectedCategoryIndex = dataIndex;\n this.selectedSeriesIndex = seriesIndex;\n this.updateChartOptions();\n }\n }\n\n /**\n * Limpia el estado de selección actual.\n */\n protected clearSelection(): void {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.updateChartOptions();\n }\n \n dispatchAction(type: string, d: { seriesIndex?: number[], dataIndex?: number[] }) {\n if (this.chartInstance == undefined) return;\n \n const {\n seriesIndex = [],\n dataIndex = [],\n } = d;\n\n this.chartInstance.dispatchAction({\n type,\n seriesIndex,\n dataIndex,\n });\n }\n\n /**\n * Maneja clics en la leyenda para persistir filtros.\n */\n onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n private updateOptions(options: echarts.EChartsOption) {\n this.chartOptions = { ...options };\n this.chartInstance?.setOption(options, { notMerge: true });\n }\n\n /**\n * Hook de template method invocado por `ngOnChanges`.\n * Las subclases lo sobreescriben para añadir lógica propia\n * y deben llamar a `super.onInputChanges(changes)` para preservar\n * el comportamiento base (detectar inputs relevantes y actualizar el chart).\n */\n protected onInputChanges(changes: SimpleChanges): void {\n if (changes['data'] || changes['optionsOverrides'] || changes['palette'] || changes['colorResolver'] || changes['valueFormatter']) {\n this.updateChartOptions();\n }\n }\n\n protected abstract updateChartOptions(): void;\n \n /**\n * Gatilla actualización en ngx-echarts\n */\n protected triggerUpdate(options: echarts.EChartsOption) {\n this.updateSubject.next(options);\n }\n\n /**\n * Método público para forzar el redimensionado desde el padre\n */\n public resize() {\n this.chartInstance?.resize();\n }\n}\n","/**\n * ECharts Builder utils\n * \n * Biblioteca de fragmentos de configuración y tokens de diseño para asegurar \n * una estética cohesiva en todos los gráficos de Visionaris.\n * \n * @see {@link VisionarisFrontEnd/docs/technical/echarts-architecture.md}\n */\n\nimport { EChartsOption, LineSeriesOption } from \"echarts\";\nimport { XAXisOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { IEChartData, EChartValueFormatter } from \"../vs-echarts-api.interfaces\";\nimport merge from 'lodash/merge';\nimport { EChartsTokens, getDefaultPalette } from \"../vs-echarts.utils\";\n\n// Pre-cached native formatter for performance in axis ticks\nexport const compactFormatter = new Intl.NumberFormat('es-AR', {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: 1\n});\n\n/**\n * Formats a value using native browser SI suffixes (k, M, B).\n */\nexport function formatAxisValue(value: number): string {\n return compactFormatter.format(value);\n}\n\n/**\n * Common legend configuration with scroll to prevent \"cannibalization\".\n * Atomic Pattern: Provides the scrollable container with Visionaris styling.\n */\nexport function getLegendOptions(overrides?: any): any {\n const defaults = {\n show: true,\n type: 'scroll',\n orient: 'horizontal',\n bottom: 0,\n left: 'center',\n height: 60,\n textStyle: {\n color: '#333',\n fontSize: EChartsTokens.fontSize,\n fontFamily: EChartsTokens.fontFamily\n },\n pageButtonPosition: 'end',\n pageIconColor: EChartsTokens.primaryColor,\n pageIconInactiveColor: '#ccc',\n pageIconSize: 12,\n pageTextStyle: {\n color: '#666'\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\nexport function getCategoryAxisOptions(overrides?: CategoryAxisBaseOption): any {\n const categories = overrides?.data ?? [];\n const autoRotate = categories.length > 10 ? 45 : 0;\n\n const defaults: CategoryAxisBaseOption = {\n type: 'category',\n triggerEvent: true,\n data: categories,\n axisLabel: {\n rotate: autoRotate,\n interval: 0, \n fontFamily: EChartsTokens.fontFamily,\n color: EChartsTokens.axisColor,\n fontSize: EChartsTokens.fontSize,\n margin: 8,\n fontWeight: 'normal',\n overflow: 'break',\n width: 1000,\n },\n axisLine: {\n lineStyle: {\n color: EChartsTokens.lineColor\n }\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\nexport function getValueAxisOptions(overrides?: ValueAxisBaseOption): any {\n const defaults: ValueAxisBaseOption = {\n type: 'value',\n splitLine: { \n show: true,\n lineStyle: { \n type: 'dashed',\n color: '#f0f0f0'\n } \n },\n axisLabel: {\n formatter: (value: number) => formatAxisValue(value),\n color: EChartsTokens.axisColor,\n fontSize: EChartsTokens.fontSize\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\n/**\n * Callback function to dynamically position the tooltip inside the chart container boundaries.\n */\nexport function getTooltipPositionCallback(\n point: [number, number],\n params: any,\n dom: any,\n rect: any,\n size: { contentSize: [number, number]; viewSize: [number, number] }\n): [number, number] {\n const [x, y] = point;\n const tooltipWidth = size?.contentSize?.[0] || dom?.offsetWidth || 150;\n const tooltipHeight = size?.contentSize?.[1] || dom?.offsetHeight || 100;\n const containerWidth = size?.viewSize?.[0] || 400;\n const containerHeight = size?.viewSize?.[1] || 300;\n\n const offset = 15; // Safe distance from cursor\n let posX = x - tooltipWidth / 2;\n let posY = y - tooltipHeight - offset; // default: above the cursor\n\n // Left and right boundary checks\n if (posX < 0) {\n // Overflows left boundary: place to the right of the cursor\n posX = x + offset;\n } else if (posX + tooltipWidth > containerWidth) {\n // Overflows right boundary: place to the left of the cursor\n posX = x - tooltipWidth - offset;\n }\n\n // Final safety clamp to container boundaries\n if (posX + tooltipWidth > containerWidth) {\n posX = Math.max(0, containerWidth - tooltipWidth);\n }\n if (posX < 0) {\n posX = 0;\n }\n\n // Top and bottom boundary checks\n if (posY < 0) {\n // Overflows top boundary: place below the cursor\n posY = y + offset;\n } else if (posY + tooltipHeight > containerHeight) {\n // Overflows bottom boundary: place above the cursor\n posY = y - tooltipHeight - offset;\n }\n\n // Final safety clamp to container boundaries\n if (posY + tooltipHeight > containerHeight) {\n posY = Math.max(0, containerHeight - tooltipHeight);\n }\n if (posY < 0) {\n posY = 0;\n }\n\n return [posX, posY];\n}\n\n/**\n * Common Tooltip configuration.\n * Atomic Pattern: Enforces consistent glassmorphism and pointer styles.\n */\nexport function getTooltipOptions(overrides?: any): any {\n const trigger = overrides?.trigger || 'axis';\n const isAxis = trigger === 'axis';\n\n const defaults = {\n show: true,\n trigger: trigger,\n position: getTooltipPositionCallback,\n backgroundColor: EChartsTokens.tooltipBg,\n borderColor: '#eee',\n borderWidth: 1,\n textStyle: {\n color: '#333',\n fontSize: 12\n },\n extraCssText: 'box-shadow: 0 0 10px rgba(0,0,0,0.1); border-radius: 8px;',\n ...(isAxis ? {\n axisPointer: {\n type: 'shadow'\n }\n } : {})\n };\n\n return merge({}, defaults, overrides);\n}\n\n/**\n * Applies a visual selection effect to line-based series.\n * Highlights the selected series and point, and dims everything else.\n * \n * @param series The series array to modify\n * @param selectedCategoryIndex Index of the selected category\n * @param selectedSeriesIndex Index of the selected series\n * @returns Modified series array\n */\nexport function applyLineSelectionStyle(\n series: LineSeriesOption[],\n selectedCategoryIndex: number | null,\n selectedSeriesIndex: number | null\n): LineSeriesOption[] {\n if (selectedCategoryIndex === null || !series) return series;\n\n return series.map((s, sIdx) => {\n const isSelectedSeries = sIdx === selectedSeriesIndex;\n\n // Serie seleccionada: Línea con opacidad 1 para que destaque la tendencia.\n // Serie NO seleccionada: Opacidad 0.20 para atenuar fuertemente.\n const seriesOpacity = isSelectedSeries ? 1 : 0.20;\n \n return {\n ...s,\n emphasis: {\n disabled: true // Deshabilitar el énfasis (hover) cuando hay una selección activa\n },\n itemStyle: {\n ...s.itemStyle,\n opacity: seriesOpacity\n },\n lineStyle: {\n ...s.lineStyle,\n opacity: seriesOpacity\n },\n ...(s.areaStyle ? {\n areaStyle: {\n ...s.areaStyle,\n opacity: isSelectedSeries ? 0.6 : 0.1\n }\n } : {}),\n // Personalizamos los puntos individualmente\n data: (s.data || []).map((val: any, idx: number) => {\n const isSelectedPoint = isSelectedSeries && idx === selectedCategoryIndex;\n const isOtherPointInSelectedSeries = isSelectedSeries && idx !== selectedCategoryIndex;\n \n const originalPoint = (val && typeof val === 'object') ? val : { value: val };\n \n if (isSelectedPoint) {\n return {\n ...originalPoint,\n z: 10, // Asegurar que el punto seleccionado esté por encima de los demás\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 1,\n borderWidth: 2,\n borderColor: '#fff',\n shadowBlur: 10,\n shadowColor: 'rgba(0,0,0,0.5)'\n },\n symbolSize: 12\n };\n } else if (isOtherPointInSelectedSeries) {\n // Puntos de la serie seleccionada que NO son el clicado: un poco más pequeños y traslúcidos\n return {\n ...originalPoint,\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 0.5\n },\n symbolSize: 6\n };\n }\n \n // Puntos de otras series o por defecto\n return val;\n })\n };\n });\n}\n\n/**\n * Formatter generator for 'item' trigger strategy in tooltips.\n */\nexport function getItemTooltipFormatter(\n data: IEChartData,\n formatCellValue: EChartValueFormatter\n): (params: any) => string {\n return (params: any) => {\n const seriesObj = data.series[params.seriesIndex];\n const key = seriesObj?.originalKey || (data.categoryKeys ? data.categoryKeys[params.dataIndex] : String(params.dataIndex));\n const valFormatted = formatCellValue(params.value, key);\n return `<div style=\"text-align: center;\"><b>${params.name}</b><br/>${params.marker} ${params.seriesName}<br/><b>${valFormatted}</b></div>`;\n };\n}\n\n/**\n * Formatter generator for 'axis' trigger strategy in tooltips.\n */\nexport function getAxisTooltipFormatter(\n data: IEChartData,\n formatCellValue: EChartValueFormatter\n): (params: any) => string {\n return (params: any) => {\n if (!params) return '';\n const items = Array.isArray(params) ? params : [params];\n if (items.length === 0) return '';\n\n const firstItem = items[0];\n let html = `<b>${firstItem.name}</b><br/>`;\n\n for (const item of items) {\n const seriesObj = data.series[item.seriesIndex];\n if (!seriesObj) continue;\n\n const key = seriesObj.originalKey || (data.categoryKeys ? data.categoryKeys[item.dataIndex] : String(item.dataIndex));\n const valFormatted = formatCellValue(item.value, key);\n html += `${item.marker} ${item.seriesName}: <b>${valFormatted}</b><br/>`;\n }\n\n return html;\n };\n}\n\n/**\n * Unified tooltip formatter generator that selects the appropriate strategy based on the trigger.\n */\nexport function getTooltipFormatter(\n trigger: string | undefined,\n data: IEChartData,\n formatCellValue: EChartValueFormatter\n): (params: any) => string {\n return trigger === 'axis'\n ? getAxisTooltipFormatter(data, formatCellValue)\n : getItemTooltipFormatter(data, formatCellValue);\n}\n\nexport function getCommons(opts?: {palette: string[]}) {\n const palette = opts?.palette ?? getDefaultPalette();\n\n const common: EChartsOption = {\n backgroundColor: 'transparent',\n textStyle: {\n fontFamily: \"'Inter', 'Roboto', 'Open Sans', sans-serif\",\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '15%',\n top: '20px',\n containLabel: true,\n },\n };\n\n // Aplicar paleta global: Prioridad Palette Inyectada > Default Visionaris\n common.color = (palette && palette.length > 0) ? palette : getDefaultPalette();\n\n return common;\n}","import { EChartsOption, PieSeriesOption, SeriesOption } from 'echarts';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport {\n ChartColorResolver,\n EChartValueFormatter,\n IEChartData,\n} from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport merge from 'lodash/merge';\n\n/**\n * RingBuilder\n * \n * Builder concreto para el grafico de Ring. \n * \n */\nexport class RingBuilder implements IEChartBuilder {\n product: VSEChartProduct;\n\n protected valueFormatter: EChartValueFormatter = (value: number) => value.toLocaleString();\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(product: VSEChartProduct) {\n this.product = product;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n const common: EChartsOption = BuilderUtils.getCommons(opts);\n\n merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: SeriesOption): void {\n if (!data || !data.series.length) return;\n\n const totalRings = data.series.length; // Cada serie es un anillo\n \n // Configuración dinámica de radios y márgenes\n const margin = totalRings > 1 ? Math.max(0.5, 2.5 - (totalRings * 0.1)) : 0;\n const minInnerRadius = totalRings === 1 ? 45 : (totalRings > 5 ? Math.max(15, 40 - (totalRings * 1.2)) : 40);\n const maxOuterRadius = totalRings === 1 ? 72 : (totalRings > 5 ? Math.min(90, 72 + (totalRings * 0.5)) : 72);\n\n const availableSpan = maxOuterRadius - minInnerRadius - (margin * (totalRings - 1));\n const thickness = availableSpan / totalRings;\n\n const borderRadius = totalRings === 1 ? 10 : Math.max(2, Math.min(10, thickness * 0.8));\n const borderWidth = totalRings === 1 ? 2 : Math.max(0.5, Math.min(2, thickness * 0.15));\n\n const series = data.series.map((s, ringIndex) => {\n const inner = minInnerRadius + (ringIndex * (thickness + margin));\n const outer = inner + thickness;\n\n const pieData = data.categories.map((catName, catIndex) => ({\n name: catName,\n value: s.data[catIndex],\n originalMeassureKey: s.originalKey || (data.categoryKeys ? data.categoryKeys[catIndex] : '')\n }));\n\n const dynamicRingSeriesOptions: PieSeriesOption = {\n name: s.name,\n radius: [`${inner}%`, `${outer}%`],\n itemStyle: {\n borderRadius: borderRadius,\n borderWidth: borderWidth,\n },\n emphasis: { \n itemStyle: {\n borderWidth: borderWidth,\n },\n },\n select: {\n itemStyle: {\n borderWidth: borderWidth,\n },\n },\n data: pieData,\n id: `ring_${ringIndex}`,\n };\n\n const seriesOption = merge(dynamicRingSeriesOptions, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n this.result.series = series;\n }\n\n addGraphic(): void {\n // Add graphic element for the center KPI\n this.result.graphic = [{\n id: 'center-kpi',\n type: 'text' as const,\n left: 'center',\n top: 'middle',\n z: 100,\n transition: ['style'],\n style: {\n text: '',\n fontSize: 22,\n fontWeight: 'bold',\n fill: '#333',\n stroke: '#fff',\n lineWidth: 1,\n paintOrder: 'stroke',\n textAlign: 'center',\n textVerticalAlign: 'middle',\n opacity: 0,\n } as any,\n } as any];\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const totalRings = data.series.length;\n merge(overrides, {\n formatter: (params: any) => {\n const key = (params.data as any).originalMeassureKey || '';\n const valFormatted = this.formatCellValue(params.value as number, key);\n const seriesHeader = totalRings > 1 ? `<b>${params.seriesName}</b><br/>` : '';\n return `${seriesHeader}${params.name}<br/>${params.marker} <b>${valFormatted}</b> (${params.percent}%)`;\n },\n });\n const tooltip = BuilderUtils.getTooltipOptions(overrides);\n this.result.tooltip = tooltip;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for ring charts\n addPolar(): void {}\n addXAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addYAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n\n // Callback setters\n setValueFormatter(formatter: EChartValueFormatter | undefined): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[] | undefined): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver | undefined): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n\n private formatCellValue(value: number, key: string): string {\n return this.valueFormatter(value, key);\n }\n}\n","import { BarSeriesOption, LineSeriesOption, SeriesOption } from \"echarts\";\nimport { ChartColorResolver, EChartValueFormatter, IEChartData, IOptionsOverridesWrapper } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder } from \"../vs-echarts.interfaces\";\nimport { merge } from \"lodash\";\n\nexport type MakeOpts = {\n valueFormatter?: EChartValueFormatter,\n palette?: string[],\n colorResolver?: ChartColorResolver,\n axisTypes?: {\n x: 'category'|'value';\n y: 'value'|'category';\n },\n};\n\nexport type MakeBarOpts = MakeOpts;\nexport type MakeLineOpts = MakeOpts;\n\n/**\n * Director de Builds.\n */\nexport class VSECDirector {\n\n private builder: IEChartBuilder = undefined!;\n\n constructor(builder: IEChartBuilder) {\n this.builder = builder;\n }\n\n public makeBar(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBarOpts = {}\n ) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbaks y despues componentes.\n\n //chart callbacks\n this.builder.setValueFormatter(valueFormatter);\n this.builder.setPalette(palette);\n this.builder.setValueFormatter(valueFormatter);\n\n const product = this.builder.product;\n const seriesOverrides = merge(product.baseOptions.series as SeriesOption & BarSeriesOption & LineSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeBarRadial(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBarOpts = {}\n ) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbaks y despues componentes.\n\n //chart callbacks\n this.builder.setValueFormatter(valueFormatter);\n this.builder.setPalette(palette);\n this.builder.setValueFormatter(valueFormatter);\n\n const product = this.builder.product;\n const seriesOverrides = merge({}, product.baseOptions.series as SeriesOption & BarSeriesOption & LineSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addPolar();\n this.builder.addAngleAxis(data, overrides['axis']);\n this.builder.addRadiusAxis(data, overrides['axis']);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeLine(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeLineOpts = {}\n ) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbaks y despues componentes.\n\n //chart callbacks\n this.builder.setValueFormatter(valueFormatter);\n this.builder.setPalette(palette);\n this.builder.setValueFormatter(valueFormatter);\n\n const product = this.builder.product;\n const seriesOverrides = merge({}, product.baseOptions.series as SeriesOption & BarSeriesOption & LineSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeRing(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n this.builder.setValueFormatter(valueFormatter);\n this.builder.setPalette(palette);\n this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.product;\n const seriesOverrides = merge({}, product.baseOptions.series, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides as any);\n this.builder.addGraphic();\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { RingBuilder } from '../../builders/ring.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { PieSeriesOption } from 'echarts';\n\n/**\n * EchartsRingComponent\n * \n * Especialista en visualización de tipo Ring. Soporta multi-medidas y KPI central.\n * @see {@link vs-echarts/docs/charts/ring-patterns.md}\n */\n@Component({\n selector: 'vs-echarts-ring',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-ring.html',\n styleUrls: ['./echarts-ring.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EchartsRingComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: PieSeriesOption = {\n type: 'pie',\n center: ['50%', '50%'],\n avoidLabelOverlap: true,\n minAngle: 3,\n selectedMode: 'single',\n selectedOffset: 4,\n itemStyle: {\n borderColor: '#fff',\n },\n label: { show: false },\n emphasis: { \n scale: true,\n scaleSize: 2,\n itemStyle: {\n borderColor: '#fff',\n },\n },\n select: {\n itemStyle: {\n borderColor: '#fff',\n },\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n }\n \n protected product: VSEChartProduct = {\n chartKey: 'ring',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder = new RingBuilder(this.product);\n protected director = new VSECDirector(this.builder);\n \n private lastSelectedSeriesIndex: number | null = null;\n private lastSelectedDataIndex: number | null = null;\n private selectedPercent: string | null = null;\n\n private currentGraphicText: string = '';\n\n constructor() {\n super();\n }\n\n protected override make(makeOpts: MakeOpts): void {\n this.director.makeRing(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n // Reset selection only if data changed\n if (changes['data']) {\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentLegendSelected = null;\n this.currentGraphicText = '';\n }\n super.onInputChanges(changes);\n }\n\n /**\n * Maneja clics en los sectores del ring.\n * Soporta múltiples series (anillos) y actualiza el KPI central.\n */\n override onChartClick(event: any): void {\n if (this.chartInstance && event && event.dataIndex !== undefined) {\n const isSameSelection = \n event.seriesIndex === this.lastSelectedSeriesIndex && \n event.dataIndex === this.lastSelectedDataIndex;\n\n if (isSameSelection) {\n // Toggle OFF\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.setGraphicText('');\n \n this.chartInstance.dispatchAction({\n type: 'unselect',\n seriesIndex: event.seriesIndex,\n dataIndex: event.dataIndex\n });\n } else {\n // SELECT\n this.lastSelectedSeriesIndex = event.seriesIndex;\n this.lastSelectedDataIndex = event.dataIndex;\n this.selectedPercent = (event.percent !== undefined) ? event.percent + '%' : '';\n this.setGraphicText(this.selectedPercent);\n }\n\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n\n onChartMouseOver(event: any): void {\n if (this.selectedPercent === null && event && event.percent !== undefined) {\n this.setGraphicText(event.percent + '%');\n }\n }\n\n onChartMouseOut(event: any): void {\n if (this.selectedPercent === null) {\n this.setGraphicText('');\n }\n }\n\n /**\n * Captura los cambios en la selección de la leyenda para persistirlos.\n */\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n \n // Resetear la selección actual al cambiar el contexto de la leyenda\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentGraphicText = '';\n \n this.updateChartOptions();\n }\n }\n\n /**\n * Actualiza el texto del Graphic central y persiste la selección en el modelo de opciones.\n */\n private setGraphicText(text: string): void {\n this.currentGraphicText = text;\n this.updateChartOptions();\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n \n // 1. Configuramos el builder (Formateadores, Colores, etc se manejan en la base)\n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.make(makeOpts);\n\n // 2. Obtenemos las bases del chart usando el builder\n let options = this.builder.getResult();\n\n // 3. Persistencia de GRAPHIC (KPI central)\n if (options.graphic && Array.isArray(options.graphic)) {\n const graphic = (options.graphic as any)[0];\n if (graphic && graphic.style) {\n graphic.style.text = this.currentGraphicText;\n graphic.style.opacity = this.currentGraphicText ? 1 : 0;\n }\n }\n\n // 4. Persistencia de SELECCIÓN (sector elevado)\n if (options.series && Array.isArray(options.series)) {\n options.series.forEach((s: any, sIdx: number) => {\n if (s.data && Array.isArray(s.data)) {\n s.data.forEach((item: any, dIdx: number) => {\n if (typeof item === 'object') {\n item.selected = (sIdx === this.lastSelectedSeriesIndex && dIdx === this.lastSelectedDataIndex);\n }\n });\n }\n });\n }\n\n // 5. Persistencia de LEYENDA (filtros de usuario)\n if (this.currentLegendSelected && options.legend) {\n options.legend = {\n ...(options.legend as any),\n selected: { ...this.currentLegendSelected }\n };\n }\n\n // Gatillar actualización en ngx-echarts\n this.triggerUpdate(options);\n }\n}\n","<div class=\"echarts-container\" \n echarts \n [options]=\"chartOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartLegendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>\n ","import { BarSeriesOption, EChartsOption, LineSeriesOption, SeriesOption } from 'echarts';\nimport { IEChartData, EChartValueFormatter, ChartColorResolver } from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport { merge } from 'lodash';\nimport { AngleAxisOption, PolarOption, RadiusAxisOption } from 'echarts/types/dist/shared';\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\n\n/**\n * Builder principal.\n * \n * Es muy completo, tiene soporte para ejes y sistema cartesiano polar. \n * \n * Puede verse utilizado en graficos como Lineas y Bars. Siempre que se pueda priorizar utilizar este.\n */\nexport class EChartBuilder implements IEChartBuilder {\n\n product: VSEChartProduct = undefined!;\n\n protected valueFormatter: EChartValueFormatter = (value: number) => value.toLocaleString();\n protected palette: string[] = [];\n // TODO: Hay que implementar un valor por defecto.\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(product: VSEChartProduct) {\n this.product = product;\n }\n\n reset() {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n merge(this.result, BuilderUtils.getCommons(opts)); \n }\n\n /**\n * \n * @param data \n * @param overrides\n * @returns \n */\n addSeries(data: IEChartData, overrides: SeriesOption & BarSeriesOption & LineSeriesOption): void {\n if (!data || !data.series.length) return;\n\n const series = data.series.map((s) => {\n const dynamicOverrides: any = {\n name: s.name,\n data: s.data,\n label: {\n formatter: (params: any) => {\n const key = s.originalKey || (data.categoryKeys ? data.categoryKeys[params.dataIndex] : String(params.dataIndex));\n return this.formatCellValue(params.value as number, key);\n }\n }\n };\n const seriesOption = merge(dynamicOverrides, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n this.result.series = series;\n }\n \n /**\n * TODO: Mejorar funcion, no me convence como se implemento el tooltip formatter.\n * @param data \n * @param overrides \n */\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n // inyecto formateador a overrides de tooltip \n merge(overrides, {\n formatter: BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.formatCellValue.bind(this)),\n });\n const tooltip = BuilderUtils.getTooltipOptions(overrides);\n this.result.tooltip = tooltip;\n }\n\n addPolar(): void {\n const polar: PolarOption[] = [];\n polar.push({\n radius: '65%',\n center: [\"50%\", \"44%\"],\n });\n this.result.polar = polar;\n }\n\n addXAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'= 'category'): void {\n const xAxis = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n const valueAxisOptions = this.getValueAxisOptions(data, overrides);\n if (type == 'category') {\n xAxis.push(categoryAxisOptions);\n } else if (type == 'value') {\n xAxis.push(valueAxisOptions);\n }\n\n this.result.xAxis = xAxis;\n }\n\n addYAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'= 'value'): void {\n const yAxis = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n const valueAxisOptions = this.getValueAxisOptions(data, overrides);\n if (type == 'category') {\n yAxis.push(categoryAxisOptions);\n } else if (type == 'value') {\n yAxis.push(valueAxisOptions);\n }\n\n this.result.yAxis = yAxis;\n }\n\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {\n const radiusAxis: RadiusAxisOption[] = [];\n /** estilos exclusivos hardcodeados para el eje de valores del sistema de coordenadas polar*/\n const radiusAxisOverrides: RadiusAxisOption = {\n axisTick: {\n show: false,\n },\n axisLabel: {\n margin: 2,\n fontSize: 8,\n align: 'right',\n rotate: 20,\n verticalAlign: 'top',\n },\n axisLine: {\n lineStyle: {\n type: 'dashed',\n },\n }\n };\n const radialAxisOptions = BuilderUtils.getValueAxisOptions(radiusAxisOverrides as ValueAxisBaseOption);\n radiusAxis.push(radialAxisOptions);\n\n this.result.radiusAxis = radiusAxis;\n }\n\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {\n const angleAxis: AngleAxisOption[] = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n angleAxis.push(categoryAxisOptions as AngleAxisOption);\n\n this.result.angleAxis = angleAxis;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for ring charts\n addGraphic(): void {}\n\n getResult() {\n return this.result;\n };\n\n /**\n * Formatea un valor utilizando el callback inyectado.\n */\n private formatCellValue(value: number, key: string): string {\n return this.valueFormatter(value, key);\n }\n\n // Setters \n /**\n * Permite inyectar un formateador de valores externo.\n */\n public setValueFormatter(formatter: EChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n /**\n * Permite inyectar una paleta de colores básica.\n */\n public setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n /**\n * Permite inyectar un resolver de colores dinámico.\n */\n public setColorResolver(resolver: ChartColorResolver): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n // Utils\n protected getCategoryAxisOptions(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"]) {\n const categoryAxisOptionsOverrides: CategoryAxisBaseOption = {\n ...overrides.categoryAxis[0],\n data: data.categories,\n };\n const categoryAxisOptions: CategoryAxisBaseOption = BuilderUtils.getCategoryAxisOptions(categoryAxisOptionsOverrides);\n return categoryAxisOptions;\n }\n\n protected getValueAxisOptions(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"]) {\n const valueAxisOptions = BuilderUtils.getValueAxisOptions();\n return valueAxisOptions;\n }\n}\n","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\nimport { MakeBarOpts, VSECDirector } from '../../builders/director';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { BarSeriesOption } from 'echarts';\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport abstract class EchartsBarComponent extends BaseEchartsComponent {\n\n /**\n * Opciones escenciales inmutables estaticas comunes a todos los charts de barras.\n */\n protected baseSeriesOptions: BarSeriesOption = {\n type: 'bar',\n barMaxWidth: 50,\n barGap: '15%',\n barCategoryGap: '35%',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n itemStyle: {\n borderRadius: [4,4,0,0],\n },\n stack: undefined,\n emphasis: {\n focus: 'none'\n },\n showBackground: true,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)' // gris claro\n },\n label: {\n show: false,\n position: 'top',\n }\n };\n\n\n protected abstract variantProduct: VSEChartProduct;\n\n // va a tener que estar en el base como \"abstract\".\n protected product: VSEChartProduct = {\n chartKey: 'bar',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n }\n\n protected builder = new EChartBuilder(this.product);\n protected director = new VSECDirector(this.builder);\n\n constructor() {\n super();\n }\n\n // va a tener que estar en el base como \"abstract\".\n protected make(makeOpts: MakeBarOpts) {\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override updateChartOptions(): void {\n\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n const makeBarOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n }\n this.make(makeBarOpts);\n\n const baseOptions = this.builder.getResult();\n\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n const seriesArray = baseOptions.series as any[];\n baseOptions.series = seriesArray.map((s, sIdx) => {\n if (s.type === 'bar' && Array.isArray(s.data)) {\n return {\n ...s,\n emphasis: {\n disabled: true\n },\n data: s.data.map((val: any, idx: number) => {\n const isSelected = idx === this.selectedCategoryIndex;\n const isBarSelected = isSelected && sIdx === this.selectedSeriesIndex;\n \n const itemVal = (val && typeof val === 'object' && val.value !== undefined) ? val.value : val;\n \n return {\n value: itemVal,\n itemStyle: {\n opacity: isSelected ? (isBarSelected ? 1 : 0.5) : 0.15,\n borderWidth: 0\n }\n };\n })\n };\n }\n return s;\n });\n }\n\n this.triggerUpdate(baseOptions);\n }\n\n\n override onChartInit(instance: any): void {\n super.onChartInit(instance);\n this.setupAdditionalInteractions();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n private setupAdditionalInteractions(): void {\n if (!this.chartInstance) return;\n\n // 1. ZRender click para sectores de fondo (específico para barras)\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n const pointInPixel = [params.offsetX, params.offsetY];\n if (this.chartInstance!.containPixel('grid', pointInPixel)) {\n const xIndexResult = this.chartInstance!.convertFromPixel({ xAxisIndex: 0 }, pointInPixel);\n const xIndex = Array.isArray(xIndexResult) ? xIndexResult[0] : xIndexResult;\n \n if (typeof xIndex === 'number' && xIndex >= 0) {\n this.handleSelection(xIndex, -1);\n }\n }\n }\n });\n }\n\n private highlightSector(index: number): void {\n if (!this.chartInstance || this.selectedCategoryIndex !== null) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i),\n dataIndex: index\n });\n }\n\n private clearHighlight(): void {\n if (!this.chartInstance) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'downplay',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i)\n });\n }\n\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n}\n","<div class=\"echarts-container\" echarts [options]=\"chartOptions\" [autoResize]=\"true\" (chartInit)=\"onChartInit($event)\" (chartClick)=\"onChartClick($event)\" (legendSelectChanged)=\"onLegendSelectChanged($event)\"></div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { BarSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsHBarComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n itemStyle: {\n borderRadius: [0,4,4,0],\n }\n });\n\n protected variantProduct: VSEChartProduct = {\n chartKey: 'hBar',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(makeOpts: MakeBarOpts ): void {\n makeOpts.axisTypes = {\n x: 'value',\n y: 'category',\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsBarStackedComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n });\n\n protected variantProduct: VSEChartProduct = {\n chartKey: 'barStacked',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsHBarStackedComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n });\n\n protected variantProduct: VSEChartProduct = {\n chartKey: 'hBarStacked',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(makeOpts: MakeBarOpts ): void {\n makeOpts.axisTypes = {\n x: 'value',\n y: 'category',\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsBarStackedRadialComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n },\n coordinateSystem: 'polar',\n });\n\n protected variantProduct: VSEChartProduct = {\n chartKey: 'barStackedRadial',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(makeOpts: MakeBarOpts): void {\n this.director.makeBarRadial(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { LineSeriesOption } from \"echarts\";\n\n/**\n * Applies a visual selection effect to line-based series.\n * Highlights the selected series and point, and dims everything else.\n * \n * @param series The series array to modify\n * @param selectedCategoryIndex Index of the selected category\n * @param selectedSeriesIndex Index of the selected series\n * @returns Modified series array\n */\nexport function applyLineSelectionStyle(\n series: LineSeriesOption[],\n selectedCategoryIndex: number | null,\n selectedSeriesIndex: number | null\n): LineSeriesOption[] {\n if (selectedCategoryIndex === null || !series) return series;\n\n return series.map((s, sIdx) => {\n const isSelectedSeries = sIdx === selectedSeriesIndex;\n\n // Serie seleccionada: Línea con opacidad 1 para que destaque la tendencia.\n // Serie NO seleccionada: Opacidad 0.20 para atenuar fuertemente.\n const seriesOpacity = isSelectedSeries ? 1 : 0.20;\n \n return {\n ...s,\n emphasis: {\n disabled: true // Deshabilitar el énfasis (hover) cuando hay una selección activa\n },\n itemStyle: {\n ...s.itemStyle,\n opacity: seriesOpacity\n },\n lineStyle: {\n ...s.lineStyle,\n opacity: seriesOpacity\n },\n ...(s.areaStyle ? {\n areaStyle: {\n ...s.areaStyle,\n opacity: isSelectedSeries ? 0.6 : 0.1\n }\n } : {}),\n // Personalizamos los puntos individualmente\n data: (s.data || []).map((val: any, idx: number) => {\n const isSelectedPoint = isSelectedSeries && idx === selectedCategoryIndex;\n const isOtherPointInSelectedSeries = isSelectedSeries && idx !== selectedCategoryIndex;\n \n const originalPoint = (val && typeof val === 'object') ? val : { value: val };\n \n if (isSelectedPoint) {\n return {\n ...originalPoint,\n z: 10, // Asegurar que el punto seleccionado esté por encima de los demás\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 1,\n borderWidth: 2,\n borderColor: '#fff',\n shadowBlur: 10,\n shadowColor: 'rgba(0,0,0,0.5)'\n },\n symbolSize: 12\n };\n } else if (isOtherPointInSelectedSeries) {\n // Puntos de la serie seleccionada que NO son el clicado: un poco más pequeños y traslúcidos\n return {\n ...originalPoint,\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 0.5\n },\n symbolSize: 6\n };\n }\n \n // Puntos de otras series o por defecto\n return val;\n })\n };\n });\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { provideVSEcharts } from '../../vs-echarts.config';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport * as EChartsOptions from '../../vs-echarts.utils';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { MakeLineOpts, VSECDirector } from '../../builders/director';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { LineSeriesOption } from 'echarts';\nimport { applyLineSelectionStyle } from './echarts-line.utils';\n\n@Component({\n selector: 'vs-echarts-line',\n templateUrl: './echarts-line.html',\n styleUrl: './echarts-line.scss',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n providers: [\n provideVSEcharts(),\n ]\n})\nexport class EchartsLineComponent extends BaseEchartsComponent {\n\n protected baseSeriesOptions: LineSeriesOption = {\n type: 'line',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n smooth: true,\n smoothMonotone: 'x',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 5,\n shadowOffsetY: 2,\n },\n lineStyle: {\n width: 2,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 8,\n shadowOffsetY: 6,\n cap: 'round',\n join: 'round',\n },\n emphasis: {\n focus: 'none',\n itemStyle: {\n borderWidth: 2,\n shadowBlur: 10,\n },\n lineStyle: {\n width: 4,\n shadowBlur: 12,\n }\n },\n }\n protected product: VSEChartProduct = {\n chartKey: 'line',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder: EChartBuilder = new EChartBuilder(this.product);\n protected director: VSECDirector = new VSECDirector(this.builder);\n \n constructor(){\n super();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n protected make(makeOpts: MakeLineOpts) {\n this.director.makeLine(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n // 1.\n const makeBarOpts: MakeLineOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n }\n this.make(makeBarOpts);\n const baseOptions = this.builder.getResult();\n\n // 2. Re-apply legend selection state if exists\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n //3. Apply persistent selection style if a point is selected\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n baseOptions.series = applyLineSelectionStyle(\n baseOptions.series as any[],\n this.selectedCategoryIndex,\n this.selectedSeriesIndex\n );\n }\n\n this.triggerUpdate(baseOptions)\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { EchartsLineComponent } from \"./echarts-line\";\nimport { LineSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-line.html',\n styleUrls: ['./echarts-line.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsAreaComponent extends EchartsLineComponent {\n\n private variantSeriesOptionsBase: LineSeriesOption = merge(this.baseSeriesOptions, {\n smooth: true,\n areaStyle: {},\n });\n\n protected variantProduct: VSEChartProduct = {\n chartKey: 'area',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { EchartsLineComponent } from \"./echarts-line\";\nimport { LineSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-line.html',\n styleUrls: ['./echarts-line.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsAreaStackComponent extends EchartsLineComponent {\n\n private variantSeriesOptionsBase: LineSeriesOption = merge(this.baseSeriesOptions, {\n smooth: true,\n areaStyle: {},\n stack: 'total',\n });\n\n protected variantProduct: VSEChartProduct = {\n chartKey: 'areaStack',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantProduct);\n protected override director = new VSECDirector(this.builder);\n}","// Interfaces de Inputs de Base EChart Component // \n\nimport { BarSeriesOption, LineSeriesOption, PieSeriesOption } from \"echarts\";\nimport { PolarOption, TooltipOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { IAreaOptionsOverrides, IAreaStackOptionsOverrides, IBarStackedOptionsOverrides, IBarStackedRadialOptionsOverrides, IHBarOptionsOverrides, IHBarStackedOptionsOverrides, IOptionsOverrides } from \"./vs-echarts.interfaces\";\n\n/**\n * IEChartSeries\n * \n * Estructura de datos para una serie de ECharts.\n */\nexport interface IEChartSeries {\n name: string;\n data: number[];\n originalKey?: string; // Clave técnica original (ej. medida o dimensión)\n}\n\n/**\n * IEChartData\n * \n * Interfaz unificada para el paso de datos a componentes de ECharts.\n * \n */\nexport interface IEChartData {\n categories: string[];\n categoryKeys?: string[]; // Claves técnicas de las categorías (ej. medidas en layout 'row')\n series: IEChartSeries[];\n}\n\n/**\n * EChartValueFormatter\n * \n * Callback para formatear los valores numéricos de las celdas/series.\n */\nexport type EChartValueFormatter = (value: number, key: string) => string;\n\n/**\n * ChartColorResolver\n * \n * Callback para determinar el color de un elemento gráfico basado en sus parámetros.\n */\nexport type ChartColorResolver = (params: any) => string;\n\n\n/**\n * wrapper de options overrides para variantes de graficos\n */\nexport interface IOptionsOverridesWrapper extends IOptionsOverrides {\n // commons //\n // end //\n // concrete options //\n /** area options overrides */\n area: IAreaOptionsOverrides;\n /** area stack options overrides */\n areaStack: IAreaStackOptionsOverrides;\n barStacked: IBarStackedOptionsOverrides;\n barStackedRadial: IBarStackedRadialOptionsOverrides;\n hBar: IHBarOptionsOverrides;\n hBarStacked: IHBarStackedOptionsOverrides;\n // end //\n}","import { BarSeriesOption, EChartsOption, LineSeriesOption, PieSeriesOption, SeriesOption } from \"echarts\";\nimport { EChartValueFormatter, ChartColorResolver, IEChartData, IOptionsOverridesWrapper } from \"./vs-echarts-api.interfaces\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { TooltipOption } from \"echarts/types/dist/shared\";\n\n\ntype ChartKey = keyof Omit<IOptionsOverridesWrapper, \"axis\" | \"tooltip\">;\n\n/** los recibira el director\n * \n */\nexport type VSEChartProduct = {\n chartKey: ChartKey;\n baseOptions: EChartsOption;\n // baseSeriesOptions: SeriesOption & BarSeriesOption & LineSeriesOption;\n}\n\nexport interface IEChartBuilder {\n product: VSEChartProduct;\n\n reset(): void;\n\n // add components\n addSeries(data: IEChartData, overrides: SeriesOption & BarSeriesOption & LineSeriesOption): void;\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void;\n addPolar(): void;\n addXAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void;\n addYAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void;\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void;\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void;\n addLegend(): void;\n addCommons(): void;\n addGraphic(): void;\n \n // add callbacks\n setValueFormatter(formatter: EChartValueFormatter | undefined): void;\n setPalette(palette: string[] | undefined): void;\n setColorResolver(resolver: ChartColorResolver | undefined): void;\n}\n\n\nexport type EChartClickType = 'cross-filter';\n\nexport interface IAreaOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\">>\n};\nexport interface IAreaStackOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\">>\n};\n\nexport interface IHBarOptionsOverrides extends IBarOptionsOverrides {\n // orientation: 'h';\n // series: IBarOptionsOverrides[\"series\"] & Required<Pick<IBarOptionsOverrides[\"series\"], \"itemStyle\">>\n};\n\nexport interface IHBarStackedOptionsOverrides extends IBarOptionsOverrides {\n // tooltip: IHBarOptionsOverrides[\"tooltip\"] & Required<Pick<IHBarOptionsOverrides[\"tooltip\"], \"trigger\">>;\n // series: IHBarOptionsOverrides[\"series\"] & Required<Pick<IHBarOptionsOverrides[\"series\"], \"emphasis\"|\"stack\">>\n} \n\nexport interface IBarStackedOptionsOverrides extends IBarOptionsOverrides {\n // tooltip: IBarOptionsOverrides[\"tooltip\"] & Required<Pick<IBarOptionsOverrides[\"tooltip\"], \"trigger\">> \n // series: IBarOptionsOverrides[\"series\"] & Required<Pick<IBarOptionsOverrides[\"series\"], \"emphasis\"|\"stack\"|\"itemStyle\">>\n}\n\nexport interface IBarStackedRadialOptionsOverrides extends IBarStackedOptionsOverrides {\n // series: IBarStackedOptionsOverrides[\"series\"] & Required<Pick<IBarStackedOptionsOverrides[\"series\"], \"coordinateSystem\">>\n}\n\nexport type ChartOrientation = 'v' | 'h';\n\nexport interface ILineOptionsOverrides {\n series: Pick<LineSeriesOption, \"smooth\" | \"areaStyle\" | \"stack\">,\n}\n\nexport interface IBarOptionsOverrides {\n orientation?: ChartOrientation;\n // tooltip: Pick<TooltipOption, \"trigger\">,\n series: Pick<BarSeriesOption, \"itemStyle\"|\"emphasis\"|\"stack\"|\"showBackground\"|\"coordinateSystem\">;\n}\n\nexport interface IRingOptionsOverrides {\n series?: Partial<PieSeriesOption>;\n}\n\nexport interface IAxisOptionsOverrides {\n categoryAxis: CategoryAxisBaseOption[];\n valueAxis: ValueAxisBaseOption[];\n} \n\nexport interface ITooltipOptionsOverrides extends Pick<TooltipOption, \"trigger\"> {\n}\n\n/**\n * VS-EChartsOptionsOverrides\n * \n * api opciones visuales disponibles\n */\nexport interface IOptionsOverrides {\n // commons //\n axis: IAxisOptionsOverrides\n tooltip: ITooltipOptionsOverrides;\n // end //\n // concrete options //\n /** line options overrides */\n line: ILineOptionsOverrides;\n /** bar options overrides */\n bar: IBarOptionsOverrides;\n /** ring options overrides */\n ring: IRingOptionsOverrides;\n // end //\n}","/*\n * Public API Surface of echarts\n */\n\nexport * from './lib/vs-echarts.config';\nexport * from './lib/charts/echarts-ring/echarts-ring';\nexport * from './lib/charts/echarts-bar/echarts-bar';\nexport * from './lib/charts/echarts-bar/echarts-hBar';\nexport * from './lib/charts/echarts-bar/echarts-stackedBar';\nexport * from './lib/charts/echarts-bar/echarts-hBarStacked';\nexport * from './lib/charts/echarts-bar/echarts-barStackedRadial';\nexport * from './lib/charts/echarts-line/echarts-line';\nexport * from './lib/charts/echarts-line/echarts-area';\nexport * from './lib/charts/echarts-line/echarts-areaStack';\nexport * from './lib/charts/base-echart.component';\nexport * from './lib/vs-echarts-api.interfaces';\nexport * from './lib/vs-echarts.interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["applyLineSelectionStyle","BuilderUtils.getCommons","BuilderUtils.getTooltipOptions","BuilderUtils.getLegendOptions","merge","BuilderUtils.getTooltipFormatter","BuilderUtils.getValueAxisOptions","BuilderUtils.getCategoryAxisOptions"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"visionaris-bruno-vs-echarts.mjs","sources":["../../../projects/vs-echarts/src/lib/vs-echarts.utils.ts","../../../projects/vs-echarts/src/lib/vs-echarts.config.ts","../../../projects/vs-echarts/src/lib/charts/base-echart.component.ts","../../../projects/vs-echarts/src/lib/builders/builders.utils.ts","../../../projects/vs-echarts/src/lib/builders/ring.builder.ts","../../../projects/vs-echarts/src/lib/builders/director.ts","../../../projects/vs-echarts/src/lib/charts/echarts-ring/echarts-ring.ts","../../../projects/vs-echarts/src/lib/charts/echarts-ring/echarts-ring.html","../../../projects/vs-echarts/src/lib/builders/echart.builder.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-bar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-bar.html","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-hBar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-stackedBar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-hBarStacked.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-barStackedRadial.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.utils.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.html","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-area.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-areaStack.ts","../../../projects/vs-echarts/src/lib/vs-echarts-api.interfaces.ts","../../../projects/vs-echarts/src/lib/vs-echarts.interfaces.ts","../../../projects/vs-echarts/src/public-api.ts","../../../projects/vs-echarts/src/visionaris-bruno-vs-echarts.ts"],"sourcesContent":["/**\n * Global Design Tokens for ECharts\n */\nexport const EChartsTokens = {\n fontFamily: \"'Inter', 'Roboto', sans-serif\",\n fontSize: 11,\n axisColor: '#666',\n lineColor: '#ddd',\n primaryColor: '#08B1D5',\n tooltipBg: 'rgba(255, 255, 255, 0.95)',\n defaultPalette: ['#08B1D5', '#2C3E50', '#F39C12', '#E74C3C', '#27AE60', '#8E44AD', '#3498DB', '#16A085', '#D35400', '#2980B9']\n};\n\n/**\n * Exposes the default Visionaris palette for internal fallbacks.\n */\nexport function getDefaultPalette(): string[] {\n return [...EChartsTokens.defaultPalette];\n}","import { provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { BarChart, LineChart, PieChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n GraphicComponent,\n ToolboxComponent,\n PolarComponent\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsTokens } from './vs-echarts.utils';\nimport { IOptionsOverridesWrapper } from './vs-echarts-api.interfaces';\n\n/**\n * Inicialización centralizada de ECharts para evitar duplicación y efectos secundarios \n * no controlados en componentes standalone.\n */\nlet initialized = false;\n\nexport function initializeEcharts() {\n if (initialized) return;\n \n echarts.use([\n BarChart,\n PieChart,\n LineChart,\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n CanvasRenderer,\n GraphicComponent,\n ToolboxComponent,\n PolarComponent,\n ]);\n \n initialized = true;\n}\n\n/**\n * Provee la configuración de ECharts para ngx-echarts.\n * Llama automáticamente a la inicialización de módulos.\n */\nexport function provideVSEcharts() {\n initializeEcharts();\n return provideEchartsCore({ echarts });\n}\n\nexport function defaultOptionsOverrides(): IOptionsOverridesWrapper {\n return {\n tooltip: {\n trigger: 'item',\n },\n axis: {\n categoryAxis: [\n {\n axisLabel: {\n fontFamily: EChartsTokens.fontFamily,\n width: 100,\n fontSize: 9,\n margin: 12,\n color: EChartsTokens.axisColor,\n fontWeight: 'normal',\n }\n }\n ],\n valueAxis: [],\n },\n \n line: {\n series: {\n smooth: true,\n },\n },\n area: {\n series: {\n smooth: true,\n },\n },\n areaStack: {\n series: {\n smooth: true,\n },\n },\n bar: {\n series: {\n showBackground: true,\n },\n },\n barStacked: {\n series: {\n showBackground: false,\n }\n },\n barStackedRadial: {\n series: {\n showBackground: false,\n }\n },\n hBar: {\n series: {\n showBackground: true,\n }\n },\n hBarStacked: {\n series: {\n showBackground: false,\n }\n },\n ring: {\n series: {}\n }\n }\n}","import { Input, OnChanges, SimpleChanges, ViewChild, ElementRef, Output, EventEmitter, OnDestroy, Directive, OnInit } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport type * as echarts from 'echarts';\nimport { IEChartData, EChartValueFormatter, ChartColorResolver, IOptionsOverridesWrapper } from '../vs-echarts-api.interfaces';\nimport { EChartClickType, VSEChartProduct, IEChartBuilder } from '../vs-echarts.interfaces';\nimport { defaultOptionsOverrides } from '../vs-echarts.config';\nimport merge from 'lodash/merge';\nimport { MakeOpts, VSECDirector } from '../builders/director';\nimport { SeriesOption } from 'echarts';\n\n@Directive({\n standalone: true\n})\n/**\n * BaseEchartsComponent\n * \n * Clase base para componentes especialistas de ECharts.\n * Gestiona el ciclo de vida, redimensionado dinámico y debouncing de actualizaciones.\n * \n * @see {@link vs-echarts/docs/internal-architecture.md}\n */\nexport abstract class BaseEchartsComponent implements OnChanges, OnDestroy {\n @ViewChild('chartContainer', { static: true }) chartContainer!: ElementRef;\n \n /** Datos normalizados para graficar */\n @Input() data: IEChartData = { categories: [], series: [] };\n \n @Input({\n \"transform\": (values: Partial<IOptionsOverridesWrapper> | null) => {\n return merge(defaultOptionsOverrides(), values || {});\n }}) optionsOverrides: IOptionsOverridesWrapper = defaultOptionsOverrides();\n\n /** Paleta de colores básica */\n @Input() palette?: string[];\n\n /** Resolver de colores dinámico (Callback) */\n @Input() colorResolver?: ChartColorResolver;\n\n /** Formateador de valores para etiquetas y tooltips */\n @Input() valueFormatter?: EChartValueFormatter;\n \n @Output() chartClick = new EventEmitter<{type: EChartClickType, data: any}>(); \n\n /** Subject para debouncing de actualizaciones. ReplaySubject asegura no perder el primer renderizado. */\n private updateSubject = new ReplaySubject<echarts.EChartsOption>(1);\n private updateSubscription?: Subscription;\n\n /**\n * producto base/inicial para el builder.\n */\n protected abstract baseProduct: VSEChartProduct;\n protected abstract builder: IEChartBuilder;\n /**\n * director de construcción.\n * \n * Es quien tendra las instrucciones de armado de los distintos productos\n * y sus variantes.\n * \n * Ver: https://refactoring.guru/es/design-patterns/builder \n */\n protected abstract director: VSECDirector;\n protected abstract make(makeOpts: MakeOpts): void;\n /**\n * Opciones de series escenciales, inmutables y estaticas minimas\n * necesarias para el dibujado de las series del grafico.\n */\n protected abstract baseSeriesOptions: SeriesOption;\n\n protected chartInstance?: echarts.ECharts;\n protected currentLegendSelected: any = null;\n /** Estado de selección para filtros cruzados */\n protected selectedCategoryIndex: number | null = null;\n protected selectedSeriesIndex: number | null = null;\n \n /** Opciones configuradas para ngx-echarts */\n public chartOptions: any = {};\n\n constructor() {\n this.updateSubscription = this.updateSubject.pipe(\n debounceTime(150)\n ).subscribe(options => {\n this.updateOptions(options);\n });\n }\n\n\n ngOnChanges(changes: SimpleChanges) {\n this.onInputChanges(changes);\n }\n\n ngOnDestroy() {\n this.updateSubscription?.unsubscribe();\n this.chartInstance?.dispose();\n }\n\n /**\n * Captura la instancia de echarts (usado por ngx-echarts)\n */\n onChartInit(instance: any) {\n this.chartInstance = instance;\n this.setupBaseInteractions();\n this.updateChartOptions();\n }\n\n /**\n * Configura interacciones base como el clic en el fondo para limpiar selección.\n */\n private setupBaseInteractions(): void {\n if (!this.chartInstance) return;\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n this.clearSelection();\n }\n });\n }\n\n onChartClick(event: any): void {\n if (event.componentType === 'series') {\n const index = event.dataIndex;\n const seriesIndex = event.seriesIndex;\n\n if (index !== undefined && index >= 0) {\n this.handleSelection(index, seriesIndex);\n\n // Emit standardized payload for cross-filtering\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n }\n\n /**\n * Maneja la lógica de alternancia de selección.\n */\n protected handleSelection(dataIndex: number, seriesIndex: number): void {\n const isSamePoint = this.selectedCategoryIndex === dataIndex && this.selectedSeriesIndex === seriesIndex;\n \n if (isSamePoint) {\n this.clearSelection();\n } else {\n this.selectedCategoryIndex = dataIndex;\n this.selectedSeriesIndex = seriesIndex;\n this.updateChartOptions();\n }\n }\n\n /**\n * Limpia el estado de selección actual.\n */\n protected clearSelection(): void {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.updateChartOptions();\n }\n \n dispatchAction(type: string, d: { seriesIndex?: number[], dataIndex?: number[] }) {\n if (this.chartInstance == undefined) return;\n \n const {\n seriesIndex = [],\n dataIndex = [],\n } = d;\n\n this.chartInstance.dispatchAction({\n type,\n seriesIndex,\n dataIndex,\n });\n }\n\n /**\n * Maneja clics en la leyenda para persistir filtros.\n */\n onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n private updateOptions(options: echarts.EChartsOption) {\n this.chartOptions = { ...options };\n this.chartInstance?.setOption(options, { notMerge: true });\n }\n\n /**\n * Hook de template method invocado por `ngOnChanges`.\n * Las subclases lo sobreescriben para añadir lógica propia\n * y deben llamar a `super.onInputChanges(changes)` para preservar\n * el comportamiento base (detectar inputs relevantes y actualizar el chart).\n */\n protected onInputChanges(changes: SimpleChanges): void {\n if (changes['data'] || changes['optionsOverrides'] || changes['palette'] || changes['colorResolver'] || changes['valueFormatter']) {\n this.updateChartOptions();\n }\n }\n\n protected abstract updateChartOptions(): void;\n \n /**\n * Gatilla actualización en ngx-echarts\n */\n protected triggerUpdate(options: echarts.EChartsOption) {\n this.updateSubject.next(options);\n }\n\n /**\n * Método público para forzar el redimensionado desde el padre\n */\n public resize() {\n this.chartInstance?.resize();\n }\n}\n","/**\n * ECharts Builder utils\n * \n * Biblioteca de fragmentos de configuración y tokens de diseño para asegurar \n * una estética cohesiva en todos los gráficos de Visionaris.\n * \n * @see {@link VisionarisFrontEnd/docs/technical/echarts-architecture.md}\n */\n\nimport { EChartsOption, LineSeriesOption } from \"echarts\";\nimport { XAXisOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { IEChartData, EChartValueFormatter } from \"../vs-echarts-api.interfaces\";\nimport merge from 'lodash/merge';\nimport { EChartsTokens, getDefaultPalette } from \"../vs-echarts.utils\";\n\n// Pre-cached native formatter for performance in axis ticks\nexport const compactFormatter = new Intl.NumberFormat('es-AR', {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: 1\n});\n\n/**\n * Formats a value using native browser SI suffixes (k, M, B).\n */\nexport function formatAxisValue(value: number): string {\n return compactFormatter.format(value);\n}\n\n/**\n * Common legend configuration with scroll to prevent \"cannibalization\".\n * Atomic Pattern: Provides the scrollable container with Visionaris styling.\n */\nexport function getLegendOptions(overrides?: any): any {\n const defaults = {\n show: true,\n type: 'scroll',\n orient: 'horizontal',\n bottom: 0,\n left: 'center',\n height: 60,\n textStyle: {\n color: '#333',\n fontSize: EChartsTokens.fontSize,\n fontFamily: EChartsTokens.fontFamily\n },\n pageButtonPosition: 'end',\n pageIconColor: EChartsTokens.primaryColor,\n pageIconInactiveColor: '#ccc',\n pageIconSize: 12,\n pageTextStyle: {\n color: '#666'\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\nexport function getCategoryAxisOptions(overrides?: CategoryAxisBaseOption): any {\n const categories = overrides?.data ?? [];\n const autoRotate = categories.length > 10 ? 45 : 0;\n\n const defaults: CategoryAxisBaseOption = {\n type: 'category',\n triggerEvent: true,\n data: categories,\n axisLabel: {\n rotate: autoRotate,\n interval: 0, \n fontFamily: EChartsTokens.fontFamily,\n color: EChartsTokens.axisColor,\n fontSize: EChartsTokens.fontSize,\n margin: 8,\n fontWeight: 'normal',\n overflow: 'break',\n width: 1000,\n },\n axisLine: {\n lineStyle: {\n color: EChartsTokens.lineColor\n }\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\nexport function getValueAxisOptions(overrides?: ValueAxisBaseOption): any {\n const defaults: ValueAxisBaseOption = {\n type: 'value',\n splitLine: { \n show: true,\n lineStyle: { \n type: 'dashed',\n color: '#f0f0f0'\n } \n },\n axisLabel: {\n formatter: (value: number) => formatAxisValue(value),\n color: EChartsTokens.axisColor,\n fontSize: EChartsTokens.fontSize\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\n/**\n * Callback function to dynamically position the tooltip inside the chart container boundaries.\n */\nexport function getTooltipPositionCallback(\n point: [number, number],\n params: any,\n dom: any,\n rect: any,\n size: { contentSize: [number, number]; viewSize: [number, number] }\n): [number, number] {\n const [x, y] = point;\n const tooltipWidth = size?.contentSize?.[0] || dom?.offsetWidth || 150;\n const tooltipHeight = size?.contentSize?.[1] || dom?.offsetHeight || 100;\n const containerWidth = size?.viewSize?.[0] || 400;\n const containerHeight = size?.viewSize?.[1] || 300;\n\n const offset = 15; // Safe distance from cursor\n let posX = x - tooltipWidth / 2;\n let posY = y - tooltipHeight - offset; // default: above the cursor\n\n // Left and right boundary checks\n if (posX < 0) {\n // Overflows left boundary: place to the right of the cursor\n posX = x + offset;\n } else if (posX + tooltipWidth > containerWidth) {\n // Overflows right boundary: place to the left of the cursor\n posX = x - tooltipWidth - offset;\n }\n\n // Final safety clamp to container boundaries\n if (posX + tooltipWidth > containerWidth) {\n posX = Math.max(0, containerWidth - tooltipWidth);\n }\n if (posX < 0) {\n posX = 0;\n }\n\n // Top and bottom boundary checks\n if (posY < 0) {\n // Overflows top boundary: place below the cursor\n posY = y + offset;\n } else if (posY + tooltipHeight > containerHeight) {\n // Overflows bottom boundary: place above the cursor\n posY = y - tooltipHeight - offset;\n }\n\n // Final safety clamp to container boundaries\n if (posY + tooltipHeight > containerHeight) {\n posY = Math.max(0, containerHeight - tooltipHeight);\n }\n if (posY < 0) {\n posY = 0;\n }\n\n return [posX, posY];\n}\n\n/**\n * Common Tooltip configuration.\n * Atomic Pattern: Enforces consistent glassmorphism and pointer styles.\n */\nexport function getTooltipOptions(overrides?: any): any {\n const trigger = overrides?.trigger || 'axis';\n const isAxis = trigger === 'axis';\n\n const defaults = {\n show: true,\n trigger: trigger,\n position: getTooltipPositionCallback,\n backgroundColor: EChartsTokens.tooltipBg,\n borderColor: '#eee',\n borderWidth: 1,\n textStyle: {\n color: '#333',\n fontSize: 12\n },\n extraCssText: 'box-shadow: 0 0 10px rgba(0,0,0,0.1); border-radius: 8px;',\n ...(isAxis ? {\n axisPointer: {\n type: 'shadow'\n }\n } : {})\n };\n\n return merge({}, defaults, overrides);\n}\n\n/**\n * Applies a visual selection effect to line-based series.\n * Highlights the selected series and point, and dims everything else.\n * \n * @param series The series array to modify\n * @param selectedCategoryIndex Index of the selected category\n * @param selectedSeriesIndex Index of the selected series\n * @returns Modified series array\n */\nexport function applyLineSelectionStyle(\n series: LineSeriesOption[],\n selectedCategoryIndex: number | null,\n selectedSeriesIndex: number | null\n): LineSeriesOption[] {\n if (selectedCategoryIndex === null || !series) return series;\n\n return series.map((s, sIdx) => {\n const isSelectedSeries = sIdx === selectedSeriesIndex;\n\n // Serie seleccionada: Línea con opacidad 1 para que destaque la tendencia.\n // Serie NO seleccionada: Opacidad 0.20 para atenuar fuertemente.\n const seriesOpacity = isSelectedSeries ? 1 : 0.20;\n \n return {\n ...s,\n emphasis: {\n disabled: true // Deshabilitar el énfasis (hover) cuando hay una selección activa\n },\n itemStyle: {\n ...s.itemStyle,\n opacity: seriesOpacity\n },\n lineStyle: {\n ...s.lineStyle,\n opacity: seriesOpacity\n },\n ...(s.areaStyle ? {\n areaStyle: {\n ...s.areaStyle,\n opacity: isSelectedSeries ? 0.6 : 0.1\n }\n } : {}),\n // Personalizamos los puntos individualmente\n data: (s.data || []).map((val: any, idx: number) => {\n const isSelectedPoint = isSelectedSeries && idx === selectedCategoryIndex;\n const isOtherPointInSelectedSeries = isSelectedSeries && idx !== selectedCategoryIndex;\n \n const originalPoint = (val && typeof val === 'object') ? val : { value: val };\n \n if (isSelectedPoint) {\n return {\n ...originalPoint,\n z: 10, // Asegurar que el punto seleccionado esté por encima de los demás\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 1,\n borderWidth: 2,\n borderColor: '#fff',\n shadowBlur: 10,\n shadowColor: 'rgba(0,0,0,0.5)'\n },\n symbolSize: 12\n };\n } else if (isOtherPointInSelectedSeries) {\n // Puntos de la serie seleccionada que NO son el clicado: un poco más pequeños y traslúcidos\n return {\n ...originalPoint,\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 0.5\n },\n symbolSize: 6\n };\n }\n \n // Puntos de otras series o por defecto\n return val;\n })\n };\n });\n}\n\n/**\n * Formatter generator for 'item' trigger strategy in tooltips.\n */\nexport function getItemTooltipFormatter(\n data: IEChartData,\n formatCellValue: EChartValueFormatter\n): (params: any) => string {\n return (params: any) => {\n const seriesObj = data.series[params.seriesIndex];\n const key = seriesObj?.originalKey || (data.categoryKeys ? data.categoryKeys[params.dataIndex] : String(params.dataIndex));\n const valFormatted = formatCellValue(params.value, key);\n return `<div style=\"text-align: center;\"><b>${params.name}</b><br/>${params.marker} ${params.seriesName}<br/><b>${valFormatted}</b></div>`;\n };\n}\n\n/**\n * Formatter generator for 'axis' trigger strategy in tooltips.\n */\nexport function getAxisTooltipFormatter(\n data: IEChartData,\n formatCellValue: EChartValueFormatter\n): (params: any) => string {\n return (params: any) => {\n if (!params) return '';\n const items = Array.isArray(params) ? params : [params];\n if (items.length === 0) return '';\n\n const firstItem = items[0];\n let html = `<b>${firstItem.name}</b><br/>`;\n\n for (const item of items) {\n const seriesObj = data.series[item.seriesIndex];\n if (!seriesObj) continue;\n\n const key = seriesObj.originalKey || (data.categoryKeys ? data.categoryKeys[item.dataIndex] : String(item.dataIndex));\n const valFormatted = formatCellValue(item.value, key);\n html += `${item.marker} ${item.seriesName}: <b>${valFormatted}</b><br/>`;\n }\n\n return html;\n };\n}\n\n/**\n * Unified tooltip formatter generator that selects the appropriate strategy based on the trigger.\n */\nexport function getTooltipFormatter(\n trigger: string | undefined,\n data: IEChartData,\n formatCellValue: EChartValueFormatter\n): (params: any) => string {\n return trigger === 'axis'\n ? getAxisTooltipFormatter(data, formatCellValue)\n : getItemTooltipFormatter(data, formatCellValue);\n}\n\nexport function getCommons(opts?: {palette: string[]}) {\n const palette = opts?.palette ?? getDefaultPalette();\n\n const common: EChartsOption = {\n backgroundColor: 'transparent',\n textStyle: {\n fontFamily: \"'Inter', 'Roboto', 'Open Sans', sans-serif\",\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '15%',\n top: '20px',\n containLabel: true,\n },\n };\n\n // Aplicar paleta global: Prioridad Palette Inyectada > Default Visionaris\n common.color = (palette && palette.length > 0) ? palette : getDefaultPalette();\n\n return common;\n}","import { EChartsOption, PieSeriesOption, SeriesOption } from 'echarts';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport {\n ChartColorResolver,\n EChartValueFormatter,\n IEChartData,\n} from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport merge from 'lodash/merge';\n\n/**\n * RingBuilder\n * \n * Builder concreto para el grafico de Ring. \n * \n */\nexport class RingBuilder implements IEChartBuilder {\n baseProduct: VSEChartProduct;\n\n protected valueFormatter: EChartValueFormatter = (value: number) => value.toLocaleString();\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n const common: EChartsOption = BuilderUtils.getCommons(opts);\n\n merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: SeriesOption): void {\n if (!data || !data.series.length) return;\n\n const totalRings = data.series.length; // Cada serie es un anillo\n \n // Configuración dinámica de radios y márgenes\n const margin = totalRings > 1 ? Math.max(0.5, 2.5 - (totalRings * 0.1)) : 0;\n const minInnerRadius = totalRings === 1 ? 45 : (totalRings > 5 ? Math.max(15, 40 - (totalRings * 1.2)) : 40);\n const maxOuterRadius = totalRings === 1 ? 72 : (totalRings > 5 ? Math.min(90, 72 + (totalRings * 0.5)) : 72);\n\n const availableSpan = maxOuterRadius - minInnerRadius - (margin * (totalRings - 1));\n const thickness = availableSpan / totalRings;\n\n const borderRadius = totalRings === 1 ? 10 : Math.max(2, Math.min(10, thickness * 0.8));\n const borderWidth = totalRings === 1 ? 2 : Math.max(0.5, Math.min(2, thickness * 0.15));\n\n const series = data.series.map((s, ringIndex) => {\n const inner = minInnerRadius + (ringIndex * (thickness + margin));\n const outer = inner + thickness;\n\n const pieData = data.categories.map((catName, catIndex) => ({\n name: catName,\n value: s.data[catIndex],\n originalMeassureKey: s.originalKey || (data.categoryKeys ? data.categoryKeys[catIndex] : '')\n }));\n\n const dynamicRingSeriesOptions: PieSeriesOption = {\n name: s.name,\n radius: [`${inner}%`, `${outer}%`],\n itemStyle: {\n borderRadius: borderRadius,\n borderWidth: borderWidth,\n },\n emphasis: { \n itemStyle: {\n borderWidth: borderWidth,\n },\n },\n select: {\n itemStyle: {\n borderWidth: borderWidth,\n },\n },\n data: pieData,\n id: `ring_${ringIndex}`,\n };\n\n const seriesOption = merge(dynamicRingSeriesOptions, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n this.result.series = series;\n }\n\n addGraphic(): void {\n // Add graphic element for the center KPI\n this.result.graphic = [{\n id: 'center-kpi',\n type: 'text' as const,\n left: 'center',\n top: 'middle',\n z: 100,\n transition: ['style'],\n style: {\n text: '',\n fontSize: 22,\n fontWeight: 'bold',\n fill: '#333',\n stroke: '#fff',\n lineWidth: 1,\n paintOrder: 'stroke',\n textAlign: 'center',\n textVerticalAlign: 'middle',\n opacity: 0,\n } as any,\n } as any];\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const totalRings = data.series.length;\n merge(overrides, {\n formatter: (params: any) => {\n const key = (params.data as any).originalMeassureKey || '';\n const valFormatted = this.formatCellValue(params.value as number, key);\n const seriesHeader = totalRings > 1 ? `<b>${params.seriesName}</b><br/>` : '';\n return `${seriesHeader}${params.name}<br/>${params.marker} <b>${valFormatted}</b> (${params.percent}%)`;\n },\n });\n const tooltip = BuilderUtils.getTooltipOptions(overrides);\n this.result.tooltip = tooltip;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for ring charts\n addPolar(): void {}\n addXAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addYAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n\n // Callback setters\n setValueFormatter(formatter: EChartValueFormatter | undefined): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[] | undefined): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver | undefined): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n\n private formatCellValue(value: number, key: string): string {\n return this.valueFormatter(value, key);\n }\n}\n","import { BarSeriesOption, LineSeriesOption, SeriesOption } from \"echarts\";\nimport { ChartColorResolver, EChartValueFormatter, IEChartData, IOptionsOverridesWrapper } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder } from \"../vs-echarts.interfaces\";\nimport { merge } from \"lodash\";\n\nexport type MakeOpts = {\n valueFormatter?: EChartValueFormatter,\n palette?: string[],\n colorResolver?: ChartColorResolver,\n axisTypes?: {\n x: 'category'|'value';\n y: 'value'|'category';\n },\n};\n\nexport type MakeBarOpts = MakeOpts;\nexport type MakeLineOpts = MakeOpts;\n\n/**\n * Director de Builds.\n */\nexport class VSECDirector {\n\n private builder: IEChartBuilder = undefined!;\n\n constructor(builder: IEChartBuilder) {\n this.builder = builder;\n }\n\n public makeBar(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBarOpts = {}\n ) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbaks y despues componentes.\n\n //chart callbacks\n this.builder.setValueFormatter(valueFormatter);\n this.builder.setPalette(palette);\n this.builder.setValueFormatter(valueFormatter);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge(product.baseOptions.series as SeriesOption & BarSeriesOption & LineSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeBarRadial(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBarOpts = {}\n ) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbaks y despues componentes.\n\n //chart callbacks\n this.builder.setValueFormatter(valueFormatter);\n this.builder.setPalette(palette);\n this.builder.setValueFormatter(valueFormatter);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as SeriesOption & BarSeriesOption & LineSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addPolar();\n this.builder.addAngleAxis(data, overrides['axis']);\n this.builder.addRadiusAxis(data, overrides['axis']);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeLine(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeLineOpts = {}\n ) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbaks y despues componentes.\n\n //chart callbacks\n this.builder.setValueFormatter(valueFormatter);\n this.builder.setPalette(palette);\n this.builder.setValueFormatter(valueFormatter);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as SeriesOption & BarSeriesOption & LineSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeRing(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n this.builder.setValueFormatter(valueFormatter);\n this.builder.setPalette(palette);\n this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides as any);\n this.builder.addGraphic();\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { RingBuilder } from '../../builders/ring.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { PieSeriesOption } from 'echarts';\n\n/**\n * EchartsRingComponent\n * \n * Especialista en visualización de tipo Ring. Soporta multi-medidas y KPI central.\n * @see {@link vs-echarts/docs/charts/ring-patterns.md}\n */\n@Component({\n selector: 'vs-echarts-ring',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-ring.html',\n styleUrls: ['./echarts-ring.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EchartsRingComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: PieSeriesOption = {\n type: 'pie',\n center: ['50%', '50%'],\n avoidLabelOverlap: true,\n minAngle: 3,\n selectedMode: 'single',\n selectedOffset: 4,\n itemStyle: {\n borderColor: '#fff',\n },\n label: { show: false },\n emphasis: { \n scale: true,\n scaleSize: 2,\n itemStyle: {\n borderColor: '#fff',\n },\n },\n select: {\n itemStyle: {\n borderColor: '#fff',\n },\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n }\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'ring',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder = new RingBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n \n private lastSelectedSeriesIndex: number | null = null;\n private lastSelectedDataIndex: number | null = null;\n private selectedPercent: string | null = null;\n\n private currentGraphicText: string = '';\n\n constructor() {\n super();\n }\n\n protected override make(makeOpts: MakeOpts): void {\n this.director.makeRing(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n // Reset selection only if data changed\n if (changes['data']) {\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentLegendSelected = null;\n this.currentGraphicText = '';\n }\n super.onInputChanges(changes);\n }\n\n /**\n * Maneja clics en los sectores del ring.\n * Soporta múltiples series (anillos) y actualiza el KPI central.\n */\n override onChartClick(event: any): void {\n if (this.chartInstance && event && event.dataIndex !== undefined) {\n const isSameSelection = \n event.seriesIndex === this.lastSelectedSeriesIndex && \n event.dataIndex === this.lastSelectedDataIndex;\n\n if (isSameSelection) {\n // Toggle OFF\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.setGraphicText('');\n \n this.chartInstance.dispatchAction({\n type: 'unselect',\n seriesIndex: event.seriesIndex,\n dataIndex: event.dataIndex\n });\n } else {\n // SELECT\n this.lastSelectedSeriesIndex = event.seriesIndex;\n this.lastSelectedDataIndex = event.dataIndex;\n this.selectedPercent = (event.percent !== undefined) ? event.percent + '%' : '';\n this.setGraphicText(this.selectedPercent);\n }\n\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n\n onChartMouseOver(event: any): void {\n if (this.selectedPercent === null && event && event.percent !== undefined) {\n this.setGraphicText(event.percent + '%');\n }\n }\n\n onChartMouseOut(event: any): void {\n if (this.selectedPercent === null) {\n this.setGraphicText('');\n }\n }\n\n /**\n * Captura los cambios en la selección de la leyenda para persistirlos.\n */\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n \n // Resetear la selección actual al cambiar el contexto de la leyenda\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentGraphicText = '';\n \n this.updateChartOptions();\n }\n }\n\n /**\n * Actualiza el texto del Graphic central y persiste la selección en el modelo de opciones.\n */\n private setGraphicText(text: string): void {\n this.currentGraphicText = text;\n this.updateChartOptions();\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n \n // 1. Configuramos el builder (Formateadores, Colores, etc se manejan en la base)\n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.make(makeOpts);\n\n // 2. Obtenemos las bases del chart usando el builder\n let options = this.builder.getResult();\n\n // 3. Persistencia de GRAPHIC (KPI central)\n if (options.graphic && Array.isArray(options.graphic)) {\n const graphic = (options.graphic as any)[0];\n if (graphic && graphic.style) {\n graphic.style.text = this.currentGraphicText;\n graphic.style.opacity = this.currentGraphicText ? 1 : 0;\n }\n }\n\n // 4. Persistencia de SELECCIÓN (sector elevado)\n if (options.series && Array.isArray(options.series)) {\n options.series.forEach((s: any, sIdx: number) => {\n if (s.data && Array.isArray(s.data)) {\n s.data.forEach((item: any, dIdx: number) => {\n if (typeof item === 'object') {\n item.selected = (sIdx === this.lastSelectedSeriesIndex && dIdx === this.lastSelectedDataIndex);\n }\n });\n }\n });\n }\n\n // 5. Persistencia de LEYENDA (filtros de usuario)\n if (this.currentLegendSelected && options.legend) {\n options.legend = {\n ...(options.legend as any),\n selected: { ...this.currentLegendSelected }\n };\n }\n\n // Gatillar actualización en ngx-echarts\n this.triggerUpdate(options);\n }\n}\n","<div class=\"echarts-container\" \n echarts \n [options]=\"chartOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartLegendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>\n ","import { BarSeriesOption, EChartsOption, LineSeriesOption, SeriesOption } from 'echarts';\nimport { IEChartData, EChartValueFormatter, ChartColorResolver } from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport { merge } from 'lodash';\nimport { AngleAxisOption, PolarOption, RadiusAxisOption } from 'echarts/types/dist/shared';\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\n\n/**\n * Builder principal.\n * \n * Es muy completo, tiene soporte para ejes y sistema cartesiano polar. \n * \n * Puede verse utilizado en graficos como Lineas y Bars. Siempre que se pueda priorizar utilizar este.\n */\nexport class EChartBuilder implements IEChartBuilder {\n\n baseProduct: VSEChartProduct = undefined!;\n\n protected valueFormatter: EChartValueFormatter = (value: number) => value.toLocaleString();\n protected palette: string[] = [];\n // TODO: Hay que implementar un valor por defecto.\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset() {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n merge(this.result, BuilderUtils.getCommons(opts)); \n }\n\n /**\n * \n * @param data \n * @param overrides\n * @returns \n */\n addSeries(data: IEChartData, overrides: SeriesOption & BarSeriesOption & LineSeriesOption): void {\n if (!data || !data.series.length) return;\n\n const series = data.series.map((s) => {\n const dynamicOverrides: any = {\n name: s.name,\n data: s.data,\n label: {\n formatter: (params: any) => {\n const key = s.originalKey || (data.categoryKeys ? data.categoryKeys[params.dataIndex] : String(params.dataIndex));\n return this.formatCellValue(params.value as number, key);\n }\n }\n };\n const seriesOption = merge(dynamicOverrides, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n this.result.series = series;\n }\n \n /**\n * TODO: Mejorar funcion, no me convence como se implemento el tooltip formatter.\n * @param data \n * @param overrides \n */\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n // inyecto formateador a overrides de tooltip \n merge(overrides, {\n formatter: BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.formatCellValue.bind(this)),\n });\n const tooltip = BuilderUtils.getTooltipOptions(overrides);\n this.result.tooltip = tooltip;\n }\n\n addPolar(): void {\n const polar: PolarOption[] = [];\n polar.push({\n radius: '65%',\n center: [\"50%\", \"44%\"],\n });\n this.result.polar = polar;\n }\n\n addXAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'= 'category'): void {\n const xAxis = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n const valueAxisOptions = this.getValueAxisOptions(data, overrides);\n if (type == 'category') {\n xAxis.push(categoryAxisOptions);\n } else if (type == 'value') {\n xAxis.push(valueAxisOptions);\n }\n\n this.result.xAxis = xAxis;\n }\n\n addYAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'= 'value'): void {\n const yAxis = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n const valueAxisOptions = this.getValueAxisOptions(data, overrides);\n if (type == 'category') {\n yAxis.push(categoryAxisOptions);\n } else if (type == 'value') {\n yAxis.push(valueAxisOptions);\n }\n\n this.result.yAxis = yAxis;\n }\n\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {\n const radiusAxis: RadiusAxisOption[] = [];\n /** estilos exclusivos hardcodeados para el eje de valores del sistema de coordenadas polar*/\n const radiusAxisOverrides: RadiusAxisOption = {\n axisTick: {\n show: false,\n },\n axisLabel: {\n margin: 2,\n fontSize: 8,\n align: 'right',\n rotate: 20,\n verticalAlign: 'top',\n },\n axisLine: {\n lineStyle: {\n type: 'dashed',\n },\n }\n };\n const radialAxisOptions = BuilderUtils.getValueAxisOptions(radiusAxisOverrides as ValueAxisBaseOption);\n radiusAxis.push(radialAxisOptions);\n\n this.result.radiusAxis = radiusAxis;\n }\n\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {\n const angleAxis: AngleAxisOption[] = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n angleAxis.push(categoryAxisOptions as AngleAxisOption);\n\n this.result.angleAxis = angleAxis;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for ring charts\n addGraphic(): void {}\n\n getResult() {\n return this.result;\n };\n\n /**\n * Formatea un valor utilizando el callback inyectado.\n */\n private formatCellValue(value: number, key: string): string {\n return this.valueFormatter(value, key);\n }\n\n // Setters \n /**\n * Permite inyectar un formateador de valores externo.\n */\n public setValueFormatter(formatter: EChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n /**\n * Permite inyectar una paleta de colores básica.\n */\n public setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n /**\n * Permite inyectar un resolver de colores dinámico.\n */\n public setColorResolver(resolver: ChartColorResolver): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n // Utils\n protected getCategoryAxisOptions(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"]) {\n const categoryAxisOptionsOverrides: CategoryAxisBaseOption = {\n ...overrides.categoryAxis[0],\n data: data.categories,\n };\n const categoryAxisOptions: CategoryAxisBaseOption = BuilderUtils.getCategoryAxisOptions(categoryAxisOptionsOverrides);\n return categoryAxisOptions;\n }\n\n protected getValueAxisOptions(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"]) {\n const valueAxisOptions = BuilderUtils.getValueAxisOptions();\n return valueAxisOptions;\n }\n}\n","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\nimport { MakeBarOpts, VSECDirector } from '../../builders/director';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { BarSeriesOption } from 'echarts';\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport abstract class EchartsBarComponent extends BaseEchartsComponent {\n\n /**\n * Opciones escenciales inmutables estaticas comunes a todos los charts de barras.\n */\n protected baseSeriesOptions: BarSeriesOption = {\n type: 'bar',\n barMaxWidth: 50,\n barGap: '15%',\n barCategoryGap: '35%',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n itemStyle: {\n borderRadius: [4,4,0,0],\n },\n stack: undefined,\n emphasis: {\n focus: 'none'\n },\n showBackground: true,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)' // gris claro\n },\n label: {\n show: false,\n position: 'top',\n }\n };\n\n /** variante de producto base/inicial para el builder. \n * \n * Utilizar para crear una variante (extender) un base producto. \n */\n protected abstract variantBaseProduct: VSEChartProduct;\n\n // va a tener que estar en el base como \"abstract\".\n protected baseProduct: VSEChartProduct = {\n chartKey: 'bar',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n }\n\n protected builder = new EChartBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n\n constructor() {\n super();\n }\n\n // va a tener que estar en el base como \"abstract\".\n protected make(makeOpts: MakeBarOpts) {\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override updateChartOptions(): void {\n\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n const makeBarOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n }\n this.make(makeBarOpts);\n\n const baseOptions = this.builder.getResult();\n\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n const seriesArray = baseOptions.series as any[];\n baseOptions.series = seriesArray.map((s, sIdx) => {\n if (s.type === 'bar' && Array.isArray(s.data)) {\n return {\n ...s,\n emphasis: {\n disabled: true\n },\n data: s.data.map((val: any, idx: number) => {\n const isSelected = idx === this.selectedCategoryIndex;\n const isBarSelected = isSelected && sIdx === this.selectedSeriesIndex;\n \n const itemVal = (val && typeof val === 'object' && val.value !== undefined) ? val.value : val;\n \n return {\n value: itemVal,\n itemStyle: {\n opacity: isSelected ? (isBarSelected ? 1 : 0.5) : 0.15,\n borderWidth: 0\n }\n };\n })\n };\n }\n return s;\n });\n }\n\n this.triggerUpdate(baseOptions);\n }\n\n\n override onChartInit(instance: any): void {\n super.onChartInit(instance);\n this.setupAdditionalInteractions();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n private setupAdditionalInteractions(): void {\n if (!this.chartInstance) return;\n\n // 1. ZRender click para sectores de fondo (específico para barras)\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n const pointInPixel = [params.offsetX, params.offsetY];\n if (this.chartInstance!.containPixel('grid', pointInPixel)) {\n const xIndexResult = this.chartInstance!.convertFromPixel({ xAxisIndex: 0 }, pointInPixel);\n const xIndex = Array.isArray(xIndexResult) ? xIndexResult[0] : xIndexResult;\n \n if (typeof xIndex === 'number' && xIndex >= 0) {\n this.handleSelection(xIndex, -1);\n }\n }\n }\n });\n }\n\n private highlightSector(index: number): void {\n if (!this.chartInstance || this.selectedCategoryIndex !== null) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i),\n dataIndex: index\n });\n }\n\n private clearHighlight(): void {\n if (!this.chartInstance) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'downplay',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i)\n });\n }\n\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n}\n","<div class=\"echarts-container\" echarts [options]=\"chartOptions\" [autoResize]=\"true\" (chartInit)=\"onChartInit($event)\" (chartClick)=\"onChartClick($event)\" (legendSelectChanged)=\"onLegendSelectChanged($event)\"></div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { BarSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsHBarComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n itemStyle: {\n borderRadius: [0,4,4,0],\n }\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'hBar',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(makeOpts: MakeBarOpts ): void {\n makeOpts.axisTypes = {\n x: 'value',\n y: 'category',\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsBarStackedComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'barStacked',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsHBarStackedComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'hBarStacked',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(makeOpts: MakeBarOpts ): void {\n makeOpts.axisTypes = {\n x: 'value',\n y: 'category',\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsBarStackedRadialComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n },\n coordinateSystem: 'polar',\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'barStackedRadial',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(makeOpts: MakeBarOpts): void {\n this.director.makeBarRadial(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { LineSeriesOption } from \"echarts\";\n\n/**\n * Applies a visual selection effect to line-based series.\n * Highlights the selected series and point, and dims everything else.\n * \n * @param series The series array to modify\n * @param selectedCategoryIndex Index of the selected category\n * @param selectedSeriesIndex Index of the selected series\n * @returns Modified series array\n */\nexport function applyLineSelectionStyle(\n series: LineSeriesOption[],\n selectedCategoryIndex: number | null,\n selectedSeriesIndex: number | null\n): LineSeriesOption[] {\n if (selectedCategoryIndex === null || !series) return series;\n\n return series.map((s, sIdx) => {\n const isSelectedSeries = sIdx === selectedSeriesIndex;\n\n // Serie seleccionada: Línea con opacidad 1 para que destaque la tendencia.\n // Serie NO seleccionada: Opacidad 0.20 para atenuar fuertemente.\n const seriesOpacity = isSelectedSeries ? 1 : 0.20;\n \n return {\n ...s,\n emphasis: {\n disabled: true // Deshabilitar el énfasis (hover) cuando hay una selección activa\n },\n itemStyle: {\n ...s.itemStyle,\n opacity: seriesOpacity\n },\n lineStyle: {\n ...s.lineStyle,\n opacity: seriesOpacity\n },\n ...(s.areaStyle ? {\n areaStyle: {\n ...s.areaStyle,\n opacity: isSelectedSeries ? 0.6 : 0.1\n }\n } : {}),\n // Personalizamos los puntos individualmente\n data: (s.data || []).map((val: any, idx: number) => {\n const isSelectedPoint = isSelectedSeries && idx === selectedCategoryIndex;\n const isOtherPointInSelectedSeries = isSelectedSeries && idx !== selectedCategoryIndex;\n \n const originalPoint = (val && typeof val === 'object') ? val : { value: val };\n \n if (isSelectedPoint) {\n return {\n ...originalPoint,\n z: 10, // Asegurar que el punto seleccionado esté por encima de los demás\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 1,\n borderWidth: 2,\n borderColor: '#fff',\n shadowBlur: 10,\n shadowColor: 'rgba(0,0,0,0.5)'\n },\n symbolSize: 12\n };\n } else if (isOtherPointInSelectedSeries) {\n // Puntos de la serie seleccionada que NO son el clicado: un poco más pequeños y traslúcidos\n return {\n ...originalPoint,\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 0.5\n },\n symbolSize: 6\n };\n }\n \n // Puntos de otras series o por defecto\n return val;\n })\n };\n });\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { provideVSEcharts } from '../../vs-echarts.config';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport * as EChartsOptions from '../../vs-echarts.utils';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { MakeLineOpts, VSECDirector } from '../../builders/director';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { LineSeriesOption } from 'echarts';\nimport { applyLineSelectionStyle } from './echarts-line.utils';\n\n@Component({\n selector: 'vs-echarts-line',\n templateUrl: './echarts-line.html',\n styleUrl: './echarts-line.scss',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n providers: [\n provideVSEcharts(),\n ]\n})\nexport abstract class EchartsLineComponent extends BaseEchartsComponent {\n protected baseSeriesOptions: LineSeriesOption = {\n type: 'line',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n smooth: true,\n smoothMonotone: 'x',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 5,\n shadowOffsetY: 2,\n },\n lineStyle: {\n width: 2,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 8,\n shadowOffsetY: 6,\n cap: 'round',\n join: 'round',\n },\n emphasis: {\n focus: 'none',\n itemStyle: {\n borderWidth: 2,\n shadowBlur: 10,\n },\n lineStyle: {\n width: 4,\n shadowBlur: 12,\n }\n },\n }\n protected baseProduct: VSEChartProduct = {\n chartKey: 'line',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder: EChartBuilder = new EChartBuilder(this.baseProduct);\n protected director: VSECDirector = new VSECDirector(this.builder);\n /** variante de producto base/inicial para el builder. \n * \n * Utilizar para crear una variante (extender) un base producto. \n */\n protected abstract variantBaseProduct: VSEChartProduct;\n \n constructor(){\n super();\n }\n \n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n protected make(makeOpts: MakeLineOpts) {\n this.director.makeLine(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n // 1.\n const makeBarOpts: MakeLineOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n }\n this.make(makeBarOpts);\n const baseOptions = this.builder.getResult();\n\n // 2. Re-apply legend selection state if exists\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n //3. Apply persistent selection style if a point is selected\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n baseOptions.series = applyLineSelectionStyle(\n baseOptions.series as any[],\n this.selectedCategoryIndex,\n this.selectedSeriesIndex\n );\n }\n\n this.triggerUpdate(baseOptions)\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { EchartsLineComponent } from \"./echarts-line\";\nimport { LineSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-line.html',\n styleUrls: ['./echarts-line.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsAreaComponent extends EchartsLineComponent {\n\n private variantSeriesOptionsBase: LineSeriesOption = merge(this.baseSeriesOptions, {\n smooth: true,\n areaStyle: {},\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'area',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { provideVSEcharts } from \"../../vs-echarts.config\";\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { EchartsLineComponent } from \"./echarts-line\";\nimport { LineSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-line.html',\n styleUrls: ['./echarts-line.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EChartsAreaStackComponent extends EchartsLineComponent {\n\n private variantSeriesOptionsBase: LineSeriesOption = merge(this.baseSeriesOptions, {\n smooth: true,\n areaStyle: {},\n stack: 'total',\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'areaStack',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n}","// Interfaces de Inputs de Base EChart Component // \n\nimport { BarSeriesOption, LineSeriesOption, PieSeriesOption } from \"echarts\";\nimport { PolarOption, TooltipOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { IAreaOptionsOverrides, IAreaStackOptionsOverrides, IBarStackedOptionsOverrides, IBarStackedRadialOptionsOverrides, IHBarOptionsOverrides, IHBarStackedOptionsOverrides, IOptionsOverrides } from \"./vs-echarts.interfaces\";\n\n/**\n * IEChartSeries\n * \n * Estructura de datos para una serie de ECharts.\n */\nexport interface IEChartSeries {\n name: string;\n data: number[];\n originalKey?: string; // Clave técnica original (ej. medida o dimensión)\n}\n\n/**\n * IEChartData\n * \n * Interfaz unificada para el paso de datos a componentes de ECharts.\n * \n */\nexport interface IEChartData {\n categories: string[];\n categoryKeys?: string[]; // Claves técnicas de las categorías (ej. medidas en layout 'row')\n series: IEChartSeries[];\n}\n\n/**\n * EChartValueFormatter\n * \n * Callback para formatear los valores numéricos de las celdas/series.\n */\nexport type EChartValueFormatter = (value: number, key: string) => string;\n\n/**\n * ChartColorResolver\n * \n * Callback para determinar el color de un elemento gráfico basado en sus parámetros.\n */\nexport type ChartColorResolver = (params: any) => string;\n\n\n/**\n * wrapper de options overrides para variantes de graficos\n */\nexport interface IOptionsOverridesWrapper extends IOptionsOverrides {\n // commons //\n // end //\n // concrete options //\n /** area options overrides */\n area: IAreaOptionsOverrides;\n /** area stack options overrides */\n areaStack: IAreaStackOptionsOverrides;\n barStacked: IBarStackedOptionsOverrides;\n barStackedRadial: IBarStackedRadialOptionsOverrides;\n hBar: IHBarOptionsOverrides;\n hBarStacked: IHBarStackedOptionsOverrides;\n // end //\n}","import { BarSeriesOption, EChartsOption, LineSeriesOption, PieSeriesOption, SeriesOption } from \"echarts\";\nimport { EChartValueFormatter, ChartColorResolver, IEChartData, IOptionsOverridesWrapper } from \"./vs-echarts-api.interfaces\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { TooltipOption } from \"echarts/types/dist/shared\";\n\n\ntype ChartKey = keyof Omit<IOptionsOverridesWrapper, \"axis\" | \"tooltip\">;\n\n/** los recibira el director\n * \n */\nexport type VSEChartProduct = {\n chartKey: ChartKey;\n baseOptions: EChartsOption;\n // baseSeriesOptions: SeriesOption & BarSeriesOption & LineSeriesOption;\n}\n\nexport interface IEChartBuilder {\n /** producto base */\n baseProduct: VSEChartProduct;\n\n reset(): void;\n\n // add components\n addSeries(data: IEChartData, overrides: SeriesOption & BarSeriesOption & LineSeriesOption): void;\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void;\n addPolar(): void;\n addXAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void;\n addYAxis(data: {categories: IEChartData[\"categories\"]}, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void;\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void;\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void;\n addLegend(): void;\n addCommons(): void;\n addGraphic(): void;\n \n // add callbacks\n setValueFormatter(formatter: EChartValueFormatter | undefined): void;\n setPalette(palette: string[] | undefined): void;\n setColorResolver(resolver: ChartColorResolver | undefined): void;\n}\n\n\nexport type EChartClickType = 'cross-filter';\n\nexport interface IAreaOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\">>\n};\nexport interface IAreaStackOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\">>\n};\n\nexport interface IHBarOptionsOverrides extends IBarOptionsOverrides {\n // orientation: 'h';\n // series: IBarOptionsOverrides[\"series\"] & Required<Pick<IBarOptionsOverrides[\"series\"], \"itemStyle\">>\n};\n\nexport interface IHBarStackedOptionsOverrides extends IBarOptionsOverrides {\n // tooltip: IHBarOptionsOverrides[\"tooltip\"] & Required<Pick<IHBarOptionsOverrides[\"tooltip\"], \"trigger\">>;\n // series: IHBarOptionsOverrides[\"series\"] & Required<Pick<IHBarOptionsOverrides[\"series\"], \"emphasis\"|\"stack\">>\n} \n\nexport interface IBarStackedOptionsOverrides extends IBarOptionsOverrides {\n // tooltip: IBarOptionsOverrides[\"tooltip\"] & Required<Pick<IBarOptionsOverrides[\"tooltip\"], \"trigger\">> \n // series: IBarOptionsOverrides[\"series\"] & Required<Pick<IBarOptionsOverrides[\"series\"], \"emphasis\"|\"stack\"|\"itemStyle\">>\n}\n\nexport interface IBarStackedRadialOptionsOverrides extends IBarStackedOptionsOverrides {\n // series: IBarStackedOptionsOverrides[\"series\"] & Required<Pick<IBarStackedOptionsOverrides[\"series\"], \"coordinateSystem\">>\n}\n\nexport type ChartOrientation = 'v' | 'h';\n\nexport interface ILineOptionsOverrides {\n series: Pick<LineSeriesOption, \"smooth\" | \"areaStyle\" | \"stack\">,\n}\n\nexport interface IBarOptionsOverrides {\n orientation?: ChartOrientation;\n // tooltip: Pick<TooltipOption, \"trigger\">,\n series: Pick<BarSeriesOption, \"itemStyle\"|\"emphasis\"|\"stack\"|\"showBackground\"|\"coordinateSystem\">;\n}\n\nexport interface IRingOptionsOverrides {\n series?: Partial<PieSeriesOption>;\n}\n\nexport interface IAxisOptionsOverrides {\n categoryAxis: CategoryAxisBaseOption[];\n valueAxis: ValueAxisBaseOption[];\n} \n\nexport interface ITooltipOptionsOverrides extends Pick<TooltipOption, \"trigger\"> {\n}\n\n/**\n * VS-EChartsOptionsOverrides\n * \n * api opciones visuales disponibles\n */\nexport interface IOptionsOverrides {\n // commons //\n axis: IAxisOptionsOverrides\n tooltip: ITooltipOptionsOverrides;\n // end //\n // concrete options //\n /** line options overrides */\n line: ILineOptionsOverrides;\n /** bar options overrides */\n bar: IBarOptionsOverrides;\n /** ring options overrides */\n ring: IRingOptionsOverrides;\n // end //\n}","/*\n * Public API Surface of echarts\n */\n\nexport * from './lib/vs-echarts.config';\nexport * from './lib/charts/echarts-ring/echarts-ring';\nexport * from './lib/charts/echarts-bar/echarts-bar';\nexport * from './lib/charts/echarts-bar/echarts-hBar';\nexport * from './lib/charts/echarts-bar/echarts-stackedBar';\nexport * from './lib/charts/echarts-bar/echarts-hBarStacked';\nexport * from './lib/charts/echarts-bar/echarts-barStackedRadial';\nexport * from './lib/charts/echarts-line/echarts-line';\nexport * from './lib/charts/echarts-line/echarts-area';\nexport * from './lib/charts/echarts-line/echarts-areaStack';\nexport * from './lib/charts/base-echart.component';\nexport * from './lib/vs-echarts-api.interfaces';\nexport * from './lib/vs-echarts.interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["applyLineSelectionStyle","BuilderUtils.getCommons","BuilderUtils.getTooltipOptions","BuilderUtils.getLegendOptions","merge","BuilderUtils.getTooltipFormatter","BuilderUtils.getValueAxisOptions","BuilderUtils.getCategoryAxisOptions"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -14,7 +14,8 @@ type VSEChartProduct = {
|
|
|
14
14
|
baseOptions: EChartsOption;
|
|
15
15
|
};
|
|
16
16
|
interface IEChartBuilder {
|
|
17
|
-
|
|
17
|
+
/** producto base */
|
|
18
|
+
baseProduct: VSEChartProduct;
|
|
18
19
|
reset(): void;
|
|
19
20
|
addSeries(data: IEChartData, overrides: SeriesOption & BarSeriesOption & LineSeriesOption): void;
|
|
20
21
|
addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void;
|
|
@@ -181,7 +182,7 @@ declare abstract class BaseEchartsComponent implements OnChanges, OnDestroy {
|
|
|
181
182
|
/**
|
|
182
183
|
* producto base/inicial para el builder.
|
|
183
184
|
*/
|
|
184
|
-
protected abstract
|
|
185
|
+
protected abstract baseProduct: VSEChartProduct;
|
|
185
186
|
protected abstract builder: IEChartBuilder;
|
|
186
187
|
/**
|
|
187
188
|
* director de construcción.
|
|
@@ -262,12 +263,12 @@ declare abstract class BaseEchartsComponent implements OnChanges, OnDestroy {
|
|
|
262
263
|
*
|
|
263
264
|
*/
|
|
264
265
|
declare class RingBuilder implements IEChartBuilder {
|
|
265
|
-
|
|
266
|
+
baseProduct: VSEChartProduct;
|
|
266
267
|
protected valueFormatter: EChartValueFormatter;
|
|
267
268
|
protected palette: string[];
|
|
268
269
|
protected colorResolver?: ChartColorResolver;
|
|
269
270
|
protected result: EChartsOption;
|
|
270
|
-
constructor(
|
|
271
|
+
constructor(baseProduct: VSEChartProduct);
|
|
271
272
|
reset(): void;
|
|
272
273
|
addCommons(): void;
|
|
273
274
|
addSeries(data: IEChartData, overrides: SeriesOption): void;
|
|
@@ -298,7 +299,7 @@ declare class RingBuilder implements IEChartBuilder {
|
|
|
298
299
|
*/
|
|
299
300
|
declare class EchartsRingComponent extends BaseEchartsComponent {
|
|
300
301
|
protected baseSeriesOptions: PieSeriesOption;
|
|
301
|
-
protected
|
|
302
|
+
protected baseProduct: VSEChartProduct;
|
|
302
303
|
protected builder: RingBuilder;
|
|
303
304
|
protected director: VSECDirector;
|
|
304
305
|
private lastSelectedSeriesIndex;
|
|
@@ -336,12 +337,12 @@ declare class EchartsRingComponent extends BaseEchartsComponent {
|
|
|
336
337
|
* Puede verse utilizado en graficos como Lineas y Bars. Siempre que se pueda priorizar utilizar este.
|
|
337
338
|
*/
|
|
338
339
|
declare class EChartBuilder implements IEChartBuilder {
|
|
339
|
-
|
|
340
|
+
baseProduct: VSEChartProduct;
|
|
340
341
|
protected valueFormatter: EChartValueFormatter;
|
|
341
342
|
protected palette: string[];
|
|
342
343
|
protected colorResolver?: ChartColorResolver;
|
|
343
344
|
protected result: EChartsOption;
|
|
344
|
-
constructor(
|
|
345
|
+
constructor(baseProduct: VSEChartProduct);
|
|
345
346
|
reset(): void;
|
|
346
347
|
addCommons(): void;
|
|
347
348
|
/**
|
|
@@ -398,8 +399,12 @@ declare abstract class EchartsBarComponent extends BaseEchartsComponent {
|
|
|
398
399
|
* Opciones escenciales inmutables estaticas comunes a todos los charts de barras.
|
|
399
400
|
*/
|
|
400
401
|
protected baseSeriesOptions: BarSeriesOption;
|
|
401
|
-
|
|
402
|
-
|
|
402
|
+
/** variante de producto base/inicial para el builder.
|
|
403
|
+
*
|
|
404
|
+
* Utilizar para crear una variante (extender) un base producto.
|
|
405
|
+
*/
|
|
406
|
+
protected abstract variantBaseProduct: VSEChartProduct;
|
|
407
|
+
protected baseProduct: VSEChartProduct;
|
|
403
408
|
protected builder: EChartBuilder;
|
|
404
409
|
protected director: VSECDirector;
|
|
405
410
|
constructor();
|
|
@@ -417,7 +422,7 @@ declare abstract class EchartsBarComponent extends BaseEchartsComponent {
|
|
|
417
422
|
|
|
418
423
|
declare class EChartsHBarComponent extends EchartsBarComponent {
|
|
419
424
|
private variantSeriesOptionsBase;
|
|
420
|
-
protected
|
|
425
|
+
protected variantBaseProduct: VSEChartProduct;
|
|
421
426
|
protected builder: EChartBuilder;
|
|
422
427
|
protected director: VSECDirector;
|
|
423
428
|
protected make(makeOpts: MakeBarOpts): void;
|
|
@@ -427,7 +432,7 @@ declare class EChartsHBarComponent extends EchartsBarComponent {
|
|
|
427
432
|
|
|
428
433
|
declare class EChartsBarStackedComponent extends EchartsBarComponent {
|
|
429
434
|
private variantSeriesOptionsBase;
|
|
430
|
-
protected
|
|
435
|
+
protected variantBaseProduct: VSEChartProduct;
|
|
431
436
|
protected builder: EChartBuilder;
|
|
432
437
|
protected director: VSECDirector;
|
|
433
438
|
static ɵfac: i0.ɵɵFactoryDeclaration<EChartsBarStackedComponent, never>;
|
|
@@ -436,7 +441,7 @@ declare class EChartsBarStackedComponent extends EchartsBarComponent {
|
|
|
436
441
|
|
|
437
442
|
declare class EChartsHBarStackedComponent extends EchartsBarComponent {
|
|
438
443
|
private variantSeriesOptionsBase;
|
|
439
|
-
protected
|
|
444
|
+
protected variantBaseProduct: VSEChartProduct;
|
|
440
445
|
protected builder: EChartBuilder;
|
|
441
446
|
protected director: VSECDirector;
|
|
442
447
|
protected make(makeOpts: MakeBarOpts): void;
|
|
@@ -446,7 +451,7 @@ declare class EChartsHBarStackedComponent extends EchartsBarComponent {
|
|
|
446
451
|
|
|
447
452
|
declare class EChartsBarStackedRadialComponent extends EchartsBarComponent {
|
|
448
453
|
private variantSeriesOptionsBase;
|
|
449
|
-
protected
|
|
454
|
+
protected variantBaseProduct: VSEChartProduct;
|
|
450
455
|
protected builder: EChartBuilder;
|
|
451
456
|
protected director: VSECDirector;
|
|
452
457
|
protected make(makeOpts: MakeBarOpts): void;
|
|
@@ -454,11 +459,16 @@ declare class EChartsBarStackedRadialComponent extends EchartsBarComponent {
|
|
|
454
459
|
static ɵcmp: i0.ɵɵComponentDeclaration<EChartsBarStackedRadialComponent, "vs-echarts-bar", never, {}, {}, never, never, true, never>;
|
|
455
460
|
}
|
|
456
461
|
|
|
457
|
-
declare class EchartsLineComponent extends BaseEchartsComponent {
|
|
462
|
+
declare abstract class EchartsLineComponent extends BaseEchartsComponent {
|
|
458
463
|
protected baseSeriesOptions: LineSeriesOption;
|
|
459
|
-
protected
|
|
464
|
+
protected baseProduct: VSEChartProduct;
|
|
460
465
|
protected builder: EChartBuilder;
|
|
461
466
|
protected director: VSECDirector;
|
|
467
|
+
/** variante de producto base/inicial para el builder.
|
|
468
|
+
*
|
|
469
|
+
* Utilizar para crear una variante (extender) un base producto.
|
|
470
|
+
*/
|
|
471
|
+
protected abstract variantBaseProduct: VSEChartProduct;
|
|
462
472
|
constructor();
|
|
463
473
|
protected onInputChanges(changes: SimpleChanges): void;
|
|
464
474
|
protected make(makeOpts: MakeLineOpts): void;
|
|
@@ -469,7 +479,7 @@ declare class EchartsLineComponent extends BaseEchartsComponent {
|
|
|
469
479
|
|
|
470
480
|
declare class EChartsAreaComponent extends EchartsLineComponent {
|
|
471
481
|
private variantSeriesOptionsBase;
|
|
472
|
-
protected
|
|
482
|
+
protected variantBaseProduct: VSEChartProduct;
|
|
473
483
|
protected builder: EChartBuilder;
|
|
474
484
|
protected director: VSECDirector;
|
|
475
485
|
static ɵfac: i0.ɵɵFactoryDeclaration<EChartsAreaComponent, never>;
|
|
@@ -478,7 +488,7 @@ declare class EChartsAreaComponent extends EchartsLineComponent {
|
|
|
478
488
|
|
|
479
489
|
declare class EChartsAreaStackComponent extends EchartsLineComponent {
|
|
480
490
|
private variantSeriesOptionsBase;
|
|
481
|
-
protected
|
|
491
|
+
protected variantBaseProduct: VSEChartProduct;
|
|
482
492
|
protected builder: EChartBuilder;
|
|
483
493
|
protected director: VSECDirector;
|
|
484
494
|
static ɵfac: i0.ɵɵFactoryDeclaration<EChartsAreaStackComponent, never>;
|