@visionaris-bruno/vs-echarts 6.0.1 → 6.1.2

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.
@@ -2,7 +2,7 @@ import { provideEchartsCore, NgxEchartsDirective } from 'ngx-echarts';
2
2
  import * as echarts from 'echarts/core';
3
3
  import { BarChart, PieChart, LineChart } from 'echarts/charts';
4
4
  import { TitleComponent, TooltipComponent, GridComponent, LegendComponent, GraphicComponent, ToolboxComponent, PolarComponent } from 'echarts/components';
5
- import { CanvasRenderer } from 'echarts/renderers';
5
+ import { CanvasRenderer, SVGRenderer } from 'echarts/renderers';
6
6
  import * as i0 from '@angular/core';
7
7
  import { EventEmitter, Output, Input, ViewChild, Directive, Component } from '@angular/core';
8
8
  import { ReplaySubject } from 'rxjs';
@@ -47,6 +47,7 @@ function initializeEcharts() {
47
47
  GridComponent,
48
48
  LegendComponent,
49
49
  CanvasRenderer,
50
+ SVGRenderer,
50
51
  GraphicComponent,
51
52
  ToolboxComponent,
52
53
  PolarComponent,
@@ -155,8 +156,16 @@ class BaseEchartsComponent {
155
156
  /** Estado de selección para filtros cruzados */
156
157
  selectedCategoryIndex = null;
157
158
  selectedSeriesIndex = null;
159
+ /** Opciones de inicializacion de echarts
160
+ *
161
+ * NgxEchartsDirective.initOpts
162
+ */
163
+ initOptions = {
164
+ renderer: 'svg', // svg se visualiza mejor en el reescalado de tableros.
165
+ };
158
166
  /** Opciones configuradas para ngx-echarts */
159
167
  chartOptions = {};
168
+ mergeOptions = {};
160
169
  constructor() {
161
170
  this.updateSubscription = this.updateSubject.pipe(debounceTime(150)).subscribe(options => {
162
171
  this.updateOptions(options);
@@ -175,7 +184,7 @@ class BaseEchartsComponent {
175
184
  onChartInit(instance) {
176
185
  this.chartInstance = instance;
177
186
  this.setupBaseInteractions();
178
- this.updateChartOptions();
187
+ this.updateChartOptions({ notMerge: true });
179
188
  }
180
189
  /**
181
190
  * Configura interacciones base como el clic en el fondo para limpiar selección.
@@ -261,7 +270,7 @@ class BaseEchartsComponent {
261
270
  */
262
271
  onInputChanges(changes) {
263
272
  if (changes['data'] || changes['optionsOverrides'] || changes['palette'] || changes['colorResolver'] || changes['valueFormatter']) {
264
- this.updateChartOptions();
273
+ this.updateChartOptions({ notMerge: true });
265
274
  }
266
275
  }
267
276
  /**
@@ -973,7 +982,8 @@ class EchartsRingComponent extends BaseEchartsComponent {
973
982
  this.currentGraphicText = text;
974
983
  this.updateChartOptions();
975
984
  }
976
- updateChartOptions() {
985
+ updateChartOptions(opts) {
986
+ const notMerge = opts?.notMerge ?? false;
977
987
  if (!this.chartInstance)
978
988
  return;
979
989
  if (!this.data)
@@ -1014,18 +1024,21 @@ class EchartsRingComponent extends BaseEchartsComponent {
1014
1024
  selected: { ...this.currentLegendSelected }
1015
1025
  };
1016
1026
  }
1017
- // Gatillar actualización en ngx-echarts
1018
- this.triggerUpdate(options);
1027
+ if (notMerge) {
1028
+ // Gatillar actualización en ngx-echarts
1029
+ this.triggerUpdate(options);
1030
+ }
1031
+ this.mergeOptions = { ...options };
1019
1032
  }
1020
1033
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsRingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1021
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsRingComponent, isStandalone: true, selector: "vs-echarts-ring", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<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 ", 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"] }] });
1034
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsRingComponent, isStandalone: true, selector: "vs-echarts-ring", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" \n echarts \n [options]=\"chartOptions\" \n [initOpts]=\"initOptions\"\n [merge]=\"mergeOptions\"\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 ", 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"] }] });
1022
1035
  }
1023
1036
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsRingComponent, decorators: [{
1024
1037
  type: Component,
1025
1038
  args: [{ selector: 'vs-echarts-ring', standalone: true, imports: [
1026
1039
  CommonModule,
1027
1040
  NgxEchartsDirective,
1028
- ], providers: [provideVSEcharts()], template: "<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 ", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
1041
+ ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" \n echarts \n [options]=\"chartOptions\" \n [initOpts]=\"initOptions\"\n [merge]=\"mergeOptions\"\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 ", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
1029
1042
  }], ctorParameters: () => [] });
1030
1043
 
1031
1044
  /**
@@ -1356,14 +1369,14 @@ class EchartsBarComponent extends BaseEchartsComponent {
1356
1369
  }
1357
1370
  }
1358
1371
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1359
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsBarComponent, 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"] }] });
1372
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsBarComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts [initOpts]=\"initOptions\" [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"] }] });
1360
1373
  }
1361
1374
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsBarComponent, decorators: [{
1362
1375
  type: Component,
1363
1376
  args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
1364
1377
  CommonModule,
1365
1378
  NgxEchartsDirective,
1366
- ], providers: [provideVSEcharts()], 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"] }]
1379
+ ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts [initOpts]=\"initOptions\" [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"] }]
1367
1380
  }], ctorParameters: () => [] });
1368
1381
 
1369
1382
  class EChartsHBarComponent extends EchartsBarComponent {
@@ -1389,14 +1402,14 @@ class EChartsHBarComponent extends EchartsBarComponent {
1389
1402
  this.director.makeBar(this.data, this.optionsOverrides, makeOpts);
1390
1403
  }
1391
1404
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsHBarComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1392
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsHBarComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts [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"] }] });
1405
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsHBarComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts [initOpts]=\"initOptions\" [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"] }] });
1393
1406
  }
1394
1407
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsHBarComponent, decorators: [{
1395
1408
  type: Component,
1396
1409
  args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
1397
1410
  CommonModule,
1398
1411
  NgxEchartsDirective,
1399
- ], providers: [provideVSEcharts()], 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"] }]
1412
+ ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts [initOpts]=\"initOptions\" [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"] }]
1400
1413
  }] });
1401
1414
 
1402
1415
  class EChartsBarStackedComponent extends EchartsBarComponent {
@@ -1419,14 +1432,14 @@ class EChartsBarStackedComponent extends EchartsBarComponent {
1419
1432
  builder = new EChartBuilder(this.variantBaseProduct);
1420
1433
  director = new VSECDirector(this.builder);
1421
1434
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsBarStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
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"] }] });
1435
+ 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 [initOpts]=\"initOptions\" [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"] }] });
1423
1436
  }
1424
1437
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsBarStackedComponent, decorators: [{
1425
1438
  type: Component,
1426
1439
  args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
1427
1440
  CommonModule,
1428
1441
  NgxEchartsDirective,
1429
- ], providers: [provideVSEcharts()], 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"] }]
1442
+ ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts [initOpts]=\"initOptions\" [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"] }]
1430
1443
  }] });
1431
1444
 
1432
1445
  class EChartsHBarStackedComponent extends EchartsBarComponent {
@@ -1456,14 +1469,14 @@ class EChartsHBarStackedComponent extends EchartsBarComponent {
1456
1469
  this.director.makeBar(this.data, this.optionsOverrides, makeOpts);
1457
1470
  }
1458
1471
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsHBarStackedComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1459
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsHBarStackedComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts [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"] }] });
1472
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsHBarStackedComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts [initOpts]=\"initOptions\" [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"] }] });
1460
1473
  }
1461
1474
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsHBarStackedComponent, decorators: [{
1462
1475
  type: Component,
1463
1476
  args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
1464
1477
  CommonModule,
1465
1478
  NgxEchartsDirective,
1466
- ], providers: [provideVSEcharts()], 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"] }]
1479
+ ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts [initOpts]=\"initOptions\" [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"] }]
1467
1480
  }] });
1468
1481
 
1469
1482
  class EChartsBarStackedRadialComponent extends EchartsBarComponent {
@@ -1490,14 +1503,14 @@ class EChartsBarStackedRadialComponent extends EchartsBarComponent {
1490
1503
  this.director.makeBarRadial(this.data, this.optionsOverrides, makeOpts);
1491
1504
  }
1492
1505
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsBarStackedRadialComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1493
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsBarStackedRadialComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts [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"] }] });
1506
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EChartsBarStackedRadialComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts [initOpts]=\"initOptions\" [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"] }] });
1494
1507
  }
1495
1508
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EChartsBarStackedRadialComponent, decorators: [{
1496
1509
  type: Component,
1497
1510
  args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
1498
1511
  CommonModule,
1499
1512
  NgxEchartsDirective,
1500
- ], providers: [provideVSEcharts()], 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"] }]
1513
+ ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts [initOpts]=\"initOptions\" [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"] }]
1501
1514
  }] });
1502
1515
 
1503
1516
  /**
@@ -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 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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"}
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, SVGRenderer } 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 SVGRenderer,\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';\nimport { ECBasicOption } from 'echarts/types/dist/shared';\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 de inicializacion de echarts\n * \n * NgxEchartsDirective.initOpts\n */\n public initOptions = {\n renderer: 'svg', // svg se visualiza mejor en el reescalado de tableros.\n }\n /** Opciones configuradas para ngx-echarts */\n public chartOptions: any = {};\n public mergeOptions: ECBasicOption = {};\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({ notMerge: true });\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({notMerge: true});\n }\n }\n\n protected abstract updateChartOptions(opts?:{ notMerge?: boolean}): 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(opts?: { notMerge?: boolean}): void {\n const notMerge = opts?.notMerge ?? false;\n \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 if(notMerge){\n // Gatillar actualización en ngx-echarts\n this.triggerUpdate(options);\n }\n\n this.mergeOptions = { ...options };\n }\n}\n","<div class=\"echarts-container\" \n echarts \n [options]=\"chartOptions\" \n [initOpts]=\"initOptions\"\n [merge]=\"mergeOptions\"\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 [initOpts]=\"initOptions\" [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
@@ -3,7 +3,7 @@ import { OnChanges, OnDestroy, ElementRef, EventEmitter, SimpleChanges } from '@
3
3
  import * as echarts from 'echarts';
4
4
  import { LineSeriesOption, BarSeriesOption, PieSeriesOption, EChartsOption, SeriesOption } from 'echarts';
5
5
  import { CategoryAxisBaseOption, ValueAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';
6
- import { TooltipOption } from 'echarts/types/dist/shared';
6
+ import { TooltipOption, ECBasicOption } from 'echarts/types/dist/shared';
7
7
 
8
8
  type ChartKey = keyof Omit<IOptionsOverridesWrapper, "axis" | "tooltip">;
9
9
  /** los recibira el director
@@ -204,8 +204,16 @@ declare abstract class BaseEchartsComponent implements OnChanges, OnDestroy {
204
204
  /** Estado de selección para filtros cruzados */
205
205
  protected selectedCategoryIndex: number | null;
206
206
  protected selectedSeriesIndex: number | null;
207
+ /** Opciones de inicializacion de echarts
208
+ *
209
+ * NgxEchartsDirective.initOpts
210
+ */
211
+ initOptions: {
212
+ renderer: string;
213
+ };
207
214
  /** Opciones configuradas para ngx-echarts */
208
215
  chartOptions: any;
216
+ mergeOptions: ECBasicOption;
209
217
  constructor();
210
218
  ngOnChanges(changes: SimpleChanges): void;
211
219
  ngOnDestroy(): void;
@@ -242,7 +250,9 @@ declare abstract class BaseEchartsComponent implements OnChanges, OnDestroy {
242
250
  * el comportamiento base (detectar inputs relevantes y actualizar el chart).
243
251
  */
244
252
  protected onInputChanges(changes: SimpleChanges): void;
245
- protected abstract updateChartOptions(): void;
253
+ protected abstract updateChartOptions(opts?: {
254
+ notMerge?: boolean;
255
+ }): void;
246
256
  /**
247
257
  * Gatilla actualización en ngx-echarts
248
258
  */
@@ -324,7 +334,9 @@ declare class EchartsRingComponent extends BaseEchartsComponent {
324
334
  * Actualiza el texto del Graphic central y persiste la selección en el modelo de opciones.
325
335
  */
326
336
  private setGraphicText;
327
- protected updateChartOptions(): void;
337
+ protected updateChartOptions(opts?: {
338
+ notMerge?: boolean;
339
+ }): void;
328
340
  static ɵfac: i0.ɵɵFactoryDeclaration<EchartsRingComponent, never>;
329
341
  static ɵcmp: i0.ɵɵComponentDeclaration<EchartsRingComponent, "vs-echarts-ring", never, {}, {}, never, never, true, never>;
330
342
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visionaris-bruno/vs-echarts",
3
- "version": "6.0.1",
3
+ "version": "6.1.2",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0",
6
6
  "@angular/core": "^20.3.0",