@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
- product;
617
+ baseProduct;
618
618
  valueFormatter = (value) => value.toLocaleString();
619
619
  palette = [];
620
620
  colorResolver;
621
621
  result = {};
622
- constructor(product) {
623
- this.product = product;
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.product;
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.product;
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.product;
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.product;
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
- product = {
879
+ baseProduct = {
880
880
  chartKey: 'ring',
881
881
  baseOptions: {
882
882
  series: this.baseSeriesOptions,
883
883
  }
884
884
  };
885
- builder = new RingBuilder(this.product);
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
- product = undefined;
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(product) {
1046
- this.product = product;
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
- product = {
1245
+ baseProduct = {
1246
1246
  chartKey: 'bar',
1247
1247
  baseOptions: {
1248
1248
  series: this.baseSeriesOptions,
1249
1249
  }
1250
1250
  };
1251
- builder = new EChartBuilder(this.product);
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
- variantProduct = {
1376
+ variantBaseProduct = {
1377
1377
  chartKey: 'hBar',
1378
1378
  baseOptions: {
1379
1379
  series: this.variantSeriesOptionsBase,
1380
1380
  }
1381
1381
  };
1382
- builder = new EChartBuilder(this.variantProduct);
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
- variantProduct = {
1413
+ variantBaseProduct = {
1414
1414
  chartKey: 'barStacked',
1415
1415
  baseOptions: {
1416
1416
  series: this.variantSeriesOptionsBase,
1417
1417
  }
1418
1418
  };
1419
- builder = new EChartBuilder(this.variantProduct);
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
- variantProduct = {
1443
+ variantBaseProduct = {
1444
1444
  chartKey: 'hBarStacked',
1445
1445
  baseOptions: {
1446
1446
  series: this.variantSeriesOptionsBase,
1447
1447
  }
1448
1448
  };
1449
- builder = new EChartBuilder(this.variantProduct);
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
- variantProduct = {
1481
+ variantBaseProduct = {
1482
1482
  chartKey: 'barStackedRadial',
1483
1483
  baseOptions: {
1484
1484
  series: this.variantSeriesOptionsBase,
1485
1485
  }
1486
1486
  };
1487
- builder = new EChartBuilder(this.variantProduct);
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
- product = {
1611
+ baseProduct = {
1612
1612
  chartKey: 'line',
1613
1613
  baseOptions: {
1614
1614
  series: this.baseSeriesOptions,
1615
1615
  }
1616
1616
  };
1617
- builder = new EChartBuilder(this.product);
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
- variantProduct = {
1676
+ variantBaseProduct = {
1677
1677
  chartKey: 'area',
1678
1678
  baseOptions: {
1679
1679
  series: this.variantSeriesOptionsBase,
1680
1680
  }
1681
1681
  };
1682
- builder = new EChartBuilder(this.variantProduct);
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
- variantProduct = {
1701
+ variantBaseProduct = {
1702
1702
  chartKey: 'areaStack',
1703
1703
  baseOptions: {
1704
1704
  series: this.variantSeriesOptionsBase,
1705
1705
  }
1706
1706
  };
1707
- builder = new EChartBuilder(this.variantProduct);
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
- product: VSEChartProduct;
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 product: VSEChartProduct;
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
- product: VSEChartProduct;
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(product: VSEChartProduct);
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 product: VSEChartProduct;
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
- product: VSEChartProduct;
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(product: VSEChartProduct);
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
- protected abstract variantProduct: VSEChartProduct;
402
- protected product: VSEChartProduct;
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 variantProduct: VSEChartProduct;
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 variantProduct: VSEChartProduct;
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 variantProduct: VSEChartProduct;
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 variantProduct: VSEChartProduct;
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 product: VSEChartProduct;
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 variantProduct: VSEChartProduct;
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 variantProduct: VSEChartProduct;
491
+ protected variantBaseProduct: VSEChartProduct;
482
492
  protected builder: EChartBuilder;
483
493
  protected director: VSECDirector;
484
494
  static ɵfac: i0.ɵɵFactoryDeclaration<EChartsAreaStackComponent, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visionaris-bruno/vs-echarts",
3
- "version": "6.0.0",
3
+ "version": "6.0.1",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0",
6
6
  "@angular/core": "^20.3.0",