@visionaris-bruno/vs-echarts 6.4.0 → 6.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -129,6 +129,9 @@ function defaultOptionsOverrides() {
129
129
  ring: {
130
130
  series: {}
131
131
  },
132
+ pie: {
133
+ series: {}
134
+ },
132
135
  scatter: {
133
136
  series: {}
134
137
  },
@@ -558,10 +561,15 @@ function applyLineSelectionStyle(series, selectedCategoryIndex, selectedSeriesIn
558
561
  * Formatter generator for 'item' trigger strategy in tooltips.
559
562
  */
560
563
  function getItemTooltipFormatter(data, formatCellValue) {
564
+ const totalSeries = data.series.length;
561
565
  return (params) => {
562
566
  const seriesObj = data.series[params.seriesIndex];
563
- const key = seriesObj?.originalKey || (data.categoryKeys ? data.categoryKeys[params.dataIndex] : String(params.dataIndex));
567
+ const key = params.data?.originalMeassureKey || seriesObj?.originalKey || (data.categoryKeys ? data.categoryKeys[params.dataIndex] : String(params.dataIndex));
564
568
  const valFormatted = formatCellValue(params.value, key);
569
+ if (params.percent !== undefined) {
570
+ const seriesHeader = totalSeries > 1 ? `<b>${params.seriesName}</b><br/>` : '';
571
+ return `${seriesHeader}${params.name}<br/>${params.marker} <b>${valFormatted}</b> (${params.percent}%)`;
572
+ }
565
573
  return `<div style="text-align: center;"><b>${params.name}</b><br/>${params.marker} ${params.seriesName}<br/><b>${valFormatted}</b></div>`;
566
574
  };
567
575
  }
@@ -714,14 +722,8 @@ class RingBuilder {
714
722
  }];
715
723
  }
716
724
  addTooltip(data, overrides) {
717
- const totalRings = data.series.length;
718
725
  merge(overrides, {
719
- formatter: (params) => {
720
- const key = params.data.originalMeassureKey || '';
721
- const valFormatted = this.formatCellValue(params.value, key);
722
- const seriesHeader = totalRings > 1 ? `<b>${params.seriesName}</b><br/>` : '';
723
- return `${seriesHeader}${params.name}<br/>${params.marker} <b>${valFormatted}</b> (${params.percent}%)`;
724
- },
726
+ formatter: getTooltipFormatter(overrides.trigger, data, this.formatCellValue.bind(this)),
725
727
  });
726
728
  const tooltip = getTooltipOptions(overrides);
727
729
  this.result.tooltip = tooltip;
@@ -870,6 +872,21 @@ class VSECDirector {
870
872
  this.builder.addTooltip(data, overrides.tooltip);
871
873
  this.builder.addLegend();
872
874
  }
875
+ makePie(data, overrides, opts = {}) {
876
+ const { valueFormatter = undefined, palette = undefined, colorResolver = undefined, } = opts;
877
+ this.builder.reset();
878
+ // El orden importa, primero callbacks y despues componentes.
879
+ this.builder.setValueFormatter(valueFormatter);
880
+ this.builder.setPalette(palette);
881
+ this.builder.setColorResolver(colorResolver);
882
+ const product = this.builder.baseProduct;
883
+ const seriesOverrides = merge$1({}, product.baseOptions.series, overrides[product.chartKey].series);
884
+ // chart components
885
+ this.builder.addCommons();
886
+ this.builder.addSeries(data, seriesOverrides);
887
+ this.builder.addTooltip(data, overrides.tooltip);
888
+ this.builder.addLegend();
889
+ }
873
890
  makeFunnel(data, overrides, opts = {}) {
874
891
  const { valueFormatter = undefined, palette = undefined, colorResolver = undefined, } = opts;
875
892
  this.builder.reset();
@@ -1054,6 +1071,232 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
1054
1071
  ], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" \n echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartSelectChanged)=\"onChartSelectChangedParcheado($event)\"\n></div>\n ", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
1055
1072
  }], ctorParameters: () => [] });
1056
1073
 
1074
+ /**
1075
+ * PieBuilder
1076
+ *
1077
+ * Builder concreto para el gráfico de Pie (torta concéntrica).
1078
+ *
1079
+ */
1080
+ class PieBuilder {
1081
+ baseProduct;
1082
+ valueFormatter = (value) => value.toLocaleString();
1083
+ palette = [];
1084
+ colorResolver;
1085
+ result = {};
1086
+ constructor(baseProduct) {
1087
+ this.baseProduct = baseProduct;
1088
+ }
1089
+ reset() {
1090
+ this.result = {};
1091
+ }
1092
+ addCommons() {
1093
+ const opts = {
1094
+ palette: this.palette,
1095
+ };
1096
+ const common = getCommons(opts);
1097
+ merge(this.result, common);
1098
+ }
1099
+ addSeries(data, overrides) {
1100
+ if (!data || !data.series.length)
1101
+ return;
1102
+ const totalSeries = data.series.length;
1103
+ let series = [];
1104
+ if (totalSeries === 1) {
1105
+ const s = data.series[0];
1106
+ const pieData = data.categories.map((catName, catIndex) => ({
1107
+ name: catName,
1108
+ value: s.data[catIndex],
1109
+ originalMeassureKey: s.originalKey || (data.categoryKeys ? data.categoryKeys[catIndex] : '')
1110
+ }));
1111
+ const dynamicPieSeriesOptions = {
1112
+ name: s.name,
1113
+ type: 'pie',
1114
+ data: pieData,
1115
+ id: `pie_0`,
1116
+ radius: [0, '50%'],
1117
+ label: {
1118
+ show: true,
1119
+ position: 'outside'
1120
+ },
1121
+ labelLine: {
1122
+ show: true,
1123
+ },
1124
+ };
1125
+ const seriesOption = merge(dynamicPieSeriesOptions, overrides);
1126
+ // Inyectar el resolver de color si existe
1127
+ if (this.colorResolver && seriesOption.itemStyle) {
1128
+ seriesOption.itemStyle.color = this.colorResolver;
1129
+ }
1130
+ series.push(seriesOption);
1131
+ }
1132
+ else {
1133
+ const centerPieRadius = Math.max(20, 40 - totalSeries * 3);
1134
+ const maxOuterRadius = Math.min(60, 75 + (totalSeries - 2) * 3);
1135
+ const margin = Math.max(1, 4 - totalSeries * 0.2);
1136
+ const numRings = totalSeries - 1;
1137
+ const availableSpan = maxOuterRadius - (centerPieRadius + margin) - (margin * (numRings - 1));
1138
+ const thickness = availableSpan / numRings;
1139
+ series = data.series.map((s, idx) => {
1140
+ const pieData = data.categories.map((catName, catIndex) => ({
1141
+ name: catName,
1142
+ value: s.data[catIndex],
1143
+ originalMeassureKey: s.originalKey || (data.categoryKeys ? data.categoryKeys[catIndex] : '')
1144
+ }));
1145
+ let radius;
1146
+ let labelPosition;
1147
+ let labelLineShow;
1148
+ let labelShow = true;
1149
+ if (idx === 0) {
1150
+ // Primera serie: Torta rellena desde el centro
1151
+ radius = [0, `${centerPieRadius}%`];
1152
+ labelPosition = 'inner';
1153
+ labelLineShow = false;
1154
+ labelShow = false;
1155
+ }
1156
+ else {
1157
+ // Series subsecuentes: Anillos alrededor
1158
+ const inner = (centerPieRadius + margin) + (idx - 1) * (thickness + margin);
1159
+ const outer = inner + thickness;
1160
+ radius = [`${inner}%`, `${outer}%`];
1161
+ labelPosition = 'outside';
1162
+ labelLineShow = true;
1163
+ }
1164
+ const dynamicPieSeriesOptions = {
1165
+ name: s.name,
1166
+ type: 'pie',
1167
+ radius: radius,
1168
+ label: {
1169
+ show: labelShow, // Por defecto en los anillos no mostramos labels para evitar overlaps
1170
+ position: labelPosition,
1171
+ },
1172
+ labelLine: {
1173
+ show: labelLineShow
1174
+ },
1175
+ data: pieData,
1176
+ id: `pie_${idx}`,
1177
+ };
1178
+ const seriesOption = merge(dynamicPieSeriesOptions, overrides);
1179
+ // Inyectar el resolver de color si existe
1180
+ if (this.colorResolver && seriesOption.itemStyle) {
1181
+ seriesOption.itemStyle.color = this.colorResolver;
1182
+ }
1183
+ return seriesOption;
1184
+ });
1185
+ }
1186
+ this.result.series = series;
1187
+ }
1188
+ addTooltip(data, overrides) {
1189
+ merge(overrides, {
1190
+ formatter: getTooltipFormatter(overrides.trigger, data, this.formatCellValue.bind(this)),
1191
+ });
1192
+ const tooltip = getTooltipOptions(overrides);
1193
+ this.result.tooltip = tooltip;
1194
+ }
1195
+ addLegend() {
1196
+ this.result.legend = getLegendOptions();
1197
+ }
1198
+ // No-ops for pie charts
1199
+ addPolar() { }
1200
+ addXAxis(data, overrides, type) { }
1201
+ addYAxis(data, overrides, type) { }
1202
+ addRadiusAxis(data, overrides) { }
1203
+ addAngleAxis(data, overrides) { }
1204
+ addGraphic() { }
1205
+ // Callback setters
1206
+ setValueFormatter(formatter) {
1207
+ if (formatter) {
1208
+ this.valueFormatter = formatter;
1209
+ }
1210
+ }
1211
+ setPalette(palette) {
1212
+ if (palette) {
1213
+ this.palette = palette;
1214
+ }
1215
+ }
1216
+ setColorResolver(resolver) {
1217
+ if (resolver) {
1218
+ this.colorResolver = resolver;
1219
+ }
1220
+ }
1221
+ getResult() {
1222
+ return this.result;
1223
+ }
1224
+ formatCellValue(value, key) {
1225
+ return this.valueFormatter(value, key);
1226
+ }
1227
+ }
1228
+
1229
+ /**
1230
+ * EchartsPieComponent
1231
+ *
1232
+ * Especialista en visualización de tipo Pie (Torta y Anillos concéntricos).
1233
+ * La primera serie se dibuja como un gráfico de torta tradicional (lleno) y
1234
+ * las subsecuentes como anillos concéntricos alrededor.
1235
+ */
1236
+ class EchartsPieComponent extends BaseEchartsComponent {
1237
+ baseSeriesOptions = {
1238
+ type: 'pie',
1239
+ center: ['50%', '50%'],
1240
+ avoidLabelOverlap: true,
1241
+ minAngle: 3,
1242
+ selectedMode: 'single',
1243
+ selectedOffset: 4,
1244
+ emphasis: {
1245
+ scale: true,
1246
+ scaleSize: 2,
1247
+ },
1248
+ select: {
1249
+ itemStyle: {
1250
+ borderColor: EChartsTokens.sBorderColor,
1251
+ shadowColor: EChartsTokens.sShadowColor,
1252
+ borderWidth: 1,
1253
+ shadowBlur: 4,
1254
+ },
1255
+ },
1256
+ animationType: 'scale',
1257
+ animationEasing: 'elasticOut',
1258
+ };
1259
+ baseProduct = {
1260
+ chartKey: 'pie',
1261
+ baseOptions: {
1262
+ series: this.baseSeriesOptions,
1263
+ }
1264
+ };
1265
+ builder = new PieBuilder(this.baseProduct);
1266
+ director = new VSECDirector(this.builder);
1267
+ constructor() {
1268
+ super();
1269
+ }
1270
+ make(makeOpts) {
1271
+ this.director.makePie(this.data, this.optionsOverrides, makeOpts);
1272
+ }
1273
+ updateChartOptions() {
1274
+ if (!this.chartInstance)
1275
+ return;
1276
+ if (!this.data)
1277
+ return;
1278
+ // 1. Configuramos el builder
1279
+ const makeOpts = {
1280
+ valueFormatter: this.valueFormatter,
1281
+ palette: this.palette,
1282
+ colorResolver: this.colorResolver,
1283
+ };
1284
+ this.make(makeOpts);
1285
+ // 2. Obtenemos las bases del chart usando el builder
1286
+ const options = this.builder.getResult();
1287
+ this.triggerUpdate(options);
1288
+ }
1289
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsPieComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1290
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsPieComponent, isStandalone: true, selector: "vs-echarts-pie", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\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"] }] });
1291
+ }
1292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsPieComponent, decorators: [{
1293
+ type: Component,
1294
+ args: [{ selector: 'vs-echarts-pie', standalone: true, imports: [
1295
+ CommonModule,
1296
+ NgxEchartsDirective,
1297
+ ], providers: [provideVSEcharts()], template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
1298
+ }], ctorParameters: () => [] });
1299
+
1057
1300
  /**
1058
1301
  * FunnelBuilder
1059
1302
  *
@@ -1338,6 +1581,7 @@ class EChartBuilder {
1338
1581
  const radiusAxis = [];
1339
1582
  /** estilos exclusivos hardcodeados para el eje de valores del sistema de coordenadas polar*/
1340
1583
  const radiusAxisOverrides = {
1584
+ zlevel: 10,
1341
1585
  axisTick: {
1342
1586
  show: false,
1343
1587
  },
@@ -1348,6 +1592,13 @@ class EChartBuilder {
1348
1592
  rotate: 20,
1349
1593
  verticalAlign: 'top',
1350
1594
  },
1595
+ splitLine: {
1596
+ show: true,
1597
+ lineStyle: {
1598
+ opacity: 0.2,
1599
+ type: 'solid',
1600
+ }
1601
+ },
1351
1602
  axisLine: {
1352
1603
  lineStyle: {
1353
1604
  type: 'dashed',
@@ -1847,5 +2098,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImpo
1847
2098
  * Generated bundle index. Do not edit.
1848
2099
  */
1849
2100
 
1850
- export { BaseEchartsComponent, EChartsAreaComponent, EChartsAreaStackComponent, EChartsBarStackedComponent, EChartsBarStackedRadialComponent, EChartsHBarComponent, EChartsHBarStackedComponent, EchartsBarComponent, EchartsFunnelComponent, EchartsLineComponent, EchartsRingComponent, EchartsScatterComponent, defaultOptionsOverrides, initializeEcharts, provideVSEcharts };
2101
+ export { BaseEchartsComponent, EChartsAreaComponent, EChartsAreaStackComponent, EChartsBarStackedComponent, EChartsBarStackedRadialComponent, EChartsHBarComponent, EChartsHBarStackedComponent, EchartsBarComponent, EchartsFunnelComponent, EchartsLineComponent, EchartsPieComponent, EchartsRingComponent, EchartsScatterComponent, defaultOptionsOverrides, initializeEcharts, provideVSEcharts };
1851
2102
  //# sourceMappingURL=visionaris-bruno-vs-echarts.mjs.map
@@ -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/funnel.builder.ts","../../../projects/vs-echarts/src/lib/charts/echarts-funnel/echarts-funnel.ts","../../../projects/vs-echarts/src/lib/charts/echarts-funnel/echarts-funnel.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.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/charts/echarts-scatter/echarts-scatter.ts","../../../projects/vs-echarts/src/lib/charts/echarts-scatter/echarts-scatter.html","../../../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 sBorderColor: '#a0a0a0ff',\n sShadowColor: '#2e2e2e80',\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, ScatterChart, FunnelChart } 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 ScatterChart,\n FunnelChart,\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 scatter: {\n series: {}\n },\n funnel: {\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, NGXEchartsSelectChangeEventData } from '../vs-echarts.interfaces';\nimport { defaultOptionsOverrides } from '../vs-echarts.config';\nimport merge from 'lodash/merge';\nimport { MakeOpts, VSECDirector } from '../builders/director';\nimport { EChartsOption, 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<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 /** Construye y setea o actualiza las opciones.\n * \n * Utilizar cuando requiera un redibujo completo.\n * \n * Ej: Cambio en la data o estructural.\n */\n protected abstract updateChartOptions(): void;\n\n protected chartInstance?: echarts.ECharts;\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\n constructor() {\n this.updateSubscription = this.updateSubject.pipe(\n debounceTime(150)\n ).subscribe(options => {\n this.setOptions(options);\n });\n }\n\n // angular hooks //\n ngOnChanges(changes: SimpleChanges) {\n this.onInputChanges(changes);\n }\n\n ngOnDestroy() {\n this.updateSubscription?.unsubscribe();\n this.chartInstance?.dispose();\n }\n\n // metodos privados //\n\n /** setear/actualizar opciones del chart\n * \n * Ver: https://echarts.apache.org/en/api.html#echartsInstance.setOption \n */\n private setOptions(chartOptions: EChartsOption, opts?: {\n notMerge?: boolean,\n silent?: boolean,\n replaceMerge?: string[],\n }) {\n const notMerge = opts?.notMerge ?? true\n , silent = opts?.silent ?? false\n , replaceMerge = opts?.replaceMerge ?? []\n ;\n const _opts = {\n notMerge,\n silent,\n replaceMerge,\n };\n this.chartInstance?.setOption(chartOptions, _opts);\n }\n\n // metodos protegidos //\n protected 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 * 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 /**\n * Gatilla actualización.\n * \n */\n protected triggerUpdate(options: EChartsOption) {\n this.updateSubject.next(options);\n }\n\n // metodos publicos //\n\n /**\n * Captura la instancia de echarts (usado por ngx-echarts)\n */\n onChartInit(instance: any) {\n this.chartInstance = instance;\n this.updateChartOptions();\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 // 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 * Seleccion y des seleccion de item.\n * \n * Para hacer uso de esta funcion las opciones de series\n * del grafico deben tener seteado 'selectMode'.\n */\n onChartSelectChanged(\n event: NGXEchartsSelectChangeEventData,\n ) {\n const {\n type = '',\n fromActionPayload,\n fromAction = '',\n isFromClick,\n selected,\n } = event;\n if (!isFromClick) return; // avoid internal ECharts selection loop.\n\n // limpiar seleccion\n const seriesIndexes = selected.map(s => s.seriesIndex);\n const dataIndexes = selected.flatMap(s => s.dataIndex.map(d => d));\n const ud = {\n seriesIndex: seriesIndexes ,\n dataIndex: dataIndexes,\n };\n this.dispatchAction('unselect', ud);\n // seleccionar\n if (fromAction == 'unselect') {\n return; // avoid selection loop by same.\n }\n const sd = {\n seriesIndex: [fromActionPayload.seriesIndex],\n dataIndex: [fromActionPayload.dataIndexInside],\n };\n this.dispatchAction('select', sd);\n }\n\n /**\n * Método público para forzar el redimensionado desde el padre\n */\n 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, FunnelSeriesOption, LineSeriesOption, ScatterSeriesOption, 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;\nexport type MakeScatterOpts = 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 makeScatter(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeScatterOpts = {}\n ) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n }\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.setValueFormatter(valueFormatter);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as SeriesOption & ScatterSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides as any);\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 public makeFunnel(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.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 { NGXEchartsSelectChangeEventData, VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { RingBuilder } from '../../builders/ring.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { PieSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\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 },\n select: {\n itemStyle: {\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n borderWidth: 1,\n shadowBlur: 4,\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.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 } 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 onChartSelectChangedParcheado(e: NGXEchartsSelectChangeEventData) {\n /** corrige inside data index cuando se filtran leyendas en ring. \n * \n * En ring, cuando se filtran leyendas, no coinciden el 'inside data index'\n * con el 'selected data index'. El correcto deberia ser el 'inside data intex'\n * pero en ring por algun motivo esto es distinto.\n * \n * apache echarts version: 5.6.0\n */\n const patchedEvent = (e: NGXEchartsSelectChangeEventData) => {\n /** selected serie index */\n const ssi = e.fromActionPayload.seriesIndex;\n const selected = e.selected.find(sel => sel.seriesIndex == ssi);\n if (e.fromAction == 'unselect' || !selected) {\n return e;\n }\n const fixedDataIndex = selected.dataIndex[0]; // [0] por seleccion single;\n e.fromActionPayload.dataIndexInside = fixedDataIndex; // aplico corrección de index inside.\n\n return e;\n };\n super.onChartSelectChanged(patchedEvent(e)); // continuo flujo convencional\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 // Persistencia de GRAPHIC (KPI central)\n this.chartInstance?.setOption(\n {\n graphic: {\n style: {\n text: this.currentGraphicText,\n opacity: this.currentGraphicText ? 1 : 0,\n }\n }\n }\n );\n }\n\n protected updateChartOptions(): void {\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 const options = this.builder.getResult();\n\n this.triggerUpdate(options);\n }\n}\n","<div class=\"echarts-container\" \n echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartSelectChanged)=\"onChartSelectChangedParcheado($event)\"\n></div>\n ","import { EChartsOption, FunnelSeriesOption, 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 * FunnelBuilder\n * \n * Concrete builder for Funnel charts.\n */\nexport class FunnelBuilder 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 merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: SeriesOption): void {\n if (!data || !data.series.length) return;\n\n const series = data.series.map((s, seriesIndex) => {\n const funnelData = 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 let left = '10%';\n let width = '80%';\n\n const seriesValues = s.data.filter(val => typeof val === 'number');\n const minVal = seriesValues.length > 0 ? Math.min(...seriesValues) : 0;\n const maxVal = seriesValues.length > 0 ? Math.max(...seriesValues) : 100;\n\n const dynamicFunnelSeriesOptions: FunnelSeriesOption = {\n name: s.name,\n type: 'funnel',\n left: left,\n width: width,\n min: minVal,\n max: maxVal,\n data: funnelData,\n id: `funnel_${seriesIndex}`\n };\n\n const seriesOption = merge({}, overrides, dynamicFunnelSeriesOptions);\n\n // Inject color resolver if provided\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n this.result.series = series.shift();\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\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 addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for funnel 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 addGraphic(): 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 { Component } 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 { FunnelBuilder } from '../../builders/funnel.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { FunnelSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n/**\n * EchartsFunnelComponent\n * \n * Component for Funnel visualization. Supports single and multiple measures.\n */\n@Component({\n selector: 'vs-echarts-funnel',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-funnel.html',\n styleUrls: ['./echarts-funnel.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EchartsFunnelComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: FunnelSeriesOption = {\n type: 'funnel',\n left: '10%',\n width: '80%',\n minSize: '0.4%',\n maxSize: '100%',\n sort: 'descending',\n gap: 2,\n label: {\n show: true,\n position: 'inside'\n },\n labelLine: {\n show: false\n },\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 1\n },\n emphasis: {\n label: {\n fontSize: 16\n }\n },\n selectedMode: 'single',\n select: {\n label: {\n fontSize: 16\n },\n itemStyle: {\n borderWidth: 1,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n },\n };\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'funnel',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n\n protected builder = new FunnelBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n \n constructor() {\n super();\n }\n\n protected override make(makeOpts: MakeOpts): void {\n this.director.makeFunnel(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n \n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.make(makeOpts);\n\n const options = this.builder.getResult();\n this.triggerUpdate(options);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","import { BarSeriesOption, EChartsOption, LineSeriesOption, ScatterSeriesOption, 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 & ScatterSeriesOption): 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';\nimport { EChartsTokens } from '../../vs-echarts.utils';\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 barGap: '10%',\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 selectedMode: 'single',\n select: {\n itemStyle: {\n borderWidth: 1,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\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 this.triggerUpdate(baseOptions);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","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 { 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 symbol: 'emptyCircle',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 4,\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 lineStyle: {\n width: 4,\n shadowBlur: 10,\n }\n },\n selectedMode: 'single',\n select: {\n itemStyle: {\n color: 'rgba(255, 255, 255, 1)',\n borderCap: 'round',\n borderWidth: 8,\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 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 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 this.triggerUpdate(baseOptions);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>","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}","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 { MakeScatterOpts, VSECDirector } from '../../builders/director';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { ScatterSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n@Component({\n selector: 'vs-echarts-scatter',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-scatter.html',\n styleUrls: ['./echarts-scatter.scss'],\n providers: [provideVSEcharts()]\n})\nexport abstract class EchartsScatterComponent extends BaseEchartsComponent {\n\n /**\n * Opciones esenciales inmutables estáticas comunes a todos los charts de dispersión.\n */\n protected baseSeriesOptions: ScatterSeriesOption = {\n type: 'scatter',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n symbol: 'circle',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowBlur: 4,\n shadowOffsetY: 2,\n },\n emphasis: {\n focus: 'none',\n scale: true,\n },\n selectedMode: 'single',\n select: {\n itemStyle: {\n borderWidth: 2,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\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 protected baseProduct: VSEChartProduct = {\n chartKey: 'scatter',\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 protected make(makeOpts: MakeScatterOpts) {\n this.director.makeScatter(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n const makeScatterOpts: MakeScatterOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.make(makeScatterOpts);\n\n const baseOptions = this.builder.getResult();\n\n this.triggerUpdate(baseOptions);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","// 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, FunnelSeriesOption, LineSeriesOption, PieSeriesOption, ScatterSeriesOption, 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 & ScatterSeriesOption): 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 IScatterOptionsOverrides {\n series?: Partial<ScatterSeriesOption>;\n}\n\nexport interface IFunnelOptionsOverrides {\n series?: Partial<FunnelSeriesOption>;\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 /** scatter options overrides */\n scatter: IScatterOptionsOverrides;\n /** funnel options overrides */\n funnel: IFunnelOptionsOverrides;\n // end //\n}\n\nexport type NGXEchartsSelectChangeEventData = {\n type: string;\n fromAction: string;\n fromActionPayload: {\n dataIndexInside: number;\n dataType: unknown;\n isFromClick: boolean;\n seriesIndex: number;\n type: string;\n },\n isFromClick: boolean;\n selected: {dataIndex: number[], seriesIndex: number }[];\n escapeConnect: unknown;\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-funnel/echarts-funnel';\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/echarts-scatter/echarts-scatter';\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":["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/pie.builder.ts","../../../projects/vs-echarts/src/lib/charts/echarts-pie/echarts-pie.ts","../../../projects/vs-echarts/src/lib/charts/echarts-pie/echarts-pie.html","../../../projects/vs-echarts/src/lib/builders/funnel.builder.ts","../../../projects/vs-echarts/src/lib/charts/echarts-funnel/echarts-funnel.ts","../../../projects/vs-echarts/src/lib/charts/echarts-funnel/echarts-funnel.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.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/charts/echarts-scatter/echarts-scatter.ts","../../../projects/vs-echarts/src/lib/charts/echarts-scatter/echarts-scatter.html","../../../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 sBorderColor: '#a0a0a0ff',\n sShadowColor: '#2e2e2e80',\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, ScatterChart, FunnelChart } 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 ScatterChart,\n FunnelChart,\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 pie: {\n series: {}\n },\n scatter: {\n series: {}\n },\n funnel: {\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, NGXEchartsSelectChangeEventData } from '../vs-echarts.interfaces';\nimport { defaultOptionsOverrides } from '../vs-echarts.config';\nimport merge from 'lodash/merge';\nimport { MakeOpts, VSECDirector } from '../builders/director';\nimport { EChartsOption, 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<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 /** Construye y setea o actualiza las opciones.\n * \n * Utilizar cuando requiera un redibujo completo.\n * \n * Ej: Cambio en la data o estructural.\n */\n protected abstract updateChartOptions(): void;\n\n protected chartInstance?: echarts.ECharts;\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\n constructor() {\n this.updateSubscription = this.updateSubject.pipe(\n debounceTime(150)\n ).subscribe(options => {\n this.setOptions(options);\n });\n }\n\n // angular hooks //\n ngOnChanges(changes: SimpleChanges) {\n this.onInputChanges(changes);\n }\n\n ngOnDestroy() {\n this.updateSubscription?.unsubscribe();\n this.chartInstance?.dispose();\n }\n\n // metodos privados //\n\n /** setear/actualizar opciones del chart\n * \n * Ver: https://echarts.apache.org/en/api.html#echartsInstance.setOption \n */\n private setOptions(chartOptions: EChartsOption, opts?: {\n notMerge?: boolean,\n silent?: boolean,\n replaceMerge?: string[],\n }) {\n const notMerge = opts?.notMerge ?? true\n , silent = opts?.silent ?? false\n , replaceMerge = opts?.replaceMerge ?? []\n ;\n const _opts = {\n notMerge,\n silent,\n replaceMerge,\n };\n this.chartInstance?.setOption(chartOptions, _opts);\n }\n\n // metodos protegidos //\n protected 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 * 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 /**\n * Gatilla actualización.\n * \n */\n protected triggerUpdate(options: EChartsOption) {\n this.updateSubject.next(options);\n }\n\n // metodos publicos //\n\n /**\n * Captura la instancia de echarts (usado por ngx-echarts)\n */\n onChartInit(instance: any) {\n this.chartInstance = instance;\n this.updateChartOptions();\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 // 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 * Seleccion y des seleccion de item.\n * \n * Para hacer uso de esta funcion las opciones de series\n * del grafico deben tener seteado 'selectMode'.\n */\n onChartSelectChanged(\n event: NGXEchartsSelectChangeEventData,\n ) {\n const {\n type = '',\n fromActionPayload,\n fromAction = '',\n isFromClick,\n selected,\n } = event;\n if (!isFromClick) return; // avoid internal ECharts selection loop.\n\n // limpiar seleccion\n const seriesIndexes = selected.map(s => s.seriesIndex);\n const dataIndexes = selected.flatMap(s => s.dataIndex.map(d => d));\n const ud = {\n seriesIndex: seriesIndexes ,\n dataIndex: dataIndexes,\n };\n this.dispatchAction('unselect', ud);\n // seleccionar\n if (fromAction == 'unselect') {\n return; // avoid selection loop by same.\n }\n const sd = {\n seriesIndex: [fromActionPayload.seriesIndex],\n dataIndex: [fromActionPayload.dataIndexInside],\n };\n this.dispatchAction('select', sd);\n }\n\n /**\n * Método público para forzar el redimensionado desde el padre\n */\n 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 const totalSeries = data.series.length;\n return (params: any) => {\n const seriesObj = data.series[params.seriesIndex];\n const key = (params.data as any)?.originalMeassureKey || seriesObj?.originalKey || (data.categoryKeys ? data.categoryKeys[params.dataIndex] : String(params.dataIndex));\n const valFormatted = formatCellValue(params.value, key);\n\n if (params.percent !== undefined) {\n const seriesHeader = totalSeries > 1 ? `<b>${params.seriesName}</b><br/>` : '';\n return `${seriesHeader}${params.name}<br/>${params.marker} <b>${valFormatted}</b> (${params.percent}%)`;\n }\n\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 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 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, FunnelSeriesOption, LineSeriesOption, ScatterSeriesOption, 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;\nexport type MakeScatterOpts = 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 makeScatter(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeScatterOpts = {}\n ) {\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n }\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.setValueFormatter(valueFormatter);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as SeriesOption & ScatterSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides as any);\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 public makePie(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.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeFunnel(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.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 { NGXEchartsSelectChangeEventData, VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { RingBuilder } from '../../builders/ring.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { PieSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\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 },\n select: {\n itemStyle: {\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n borderWidth: 1,\n shadowBlur: 4,\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.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 } 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 onChartSelectChangedParcheado(e: NGXEchartsSelectChangeEventData) {\n /** corrige inside data index cuando se filtran leyendas en ring. \n * \n * En ring, cuando se filtran leyendas, no coinciden el 'inside data index'\n * con el 'selected data index'. El correcto deberia ser el 'inside data intex'\n * pero en ring por algun motivo esto es distinto.\n * \n * apache echarts version: 5.6.0\n */\n const patchedEvent = (e: NGXEchartsSelectChangeEventData) => {\n /** selected serie index */\n const ssi = e.fromActionPayload.seriesIndex;\n const selected = e.selected.find(sel => sel.seriesIndex == ssi);\n if (e.fromAction == 'unselect' || !selected) {\n return e;\n }\n const fixedDataIndex = selected.dataIndex[0]; // [0] por seleccion single;\n e.fromActionPayload.dataIndexInside = fixedDataIndex; // aplico corrección de index inside.\n\n return e;\n };\n super.onChartSelectChanged(patchedEvent(e)); // continuo flujo convencional\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 // Persistencia de GRAPHIC (KPI central)\n this.chartInstance?.setOption(\n {\n graphic: {\n style: {\n text: this.currentGraphicText,\n opacity: this.currentGraphicText ? 1 : 0,\n }\n }\n }\n );\n }\n\n protected updateChartOptions(): void {\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 const options = this.builder.getResult();\n\n this.triggerUpdate(options);\n }\n}\n","<div class=\"echarts-container\" \n echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartSelectChanged)=\"onChartSelectChangedParcheado($event)\"\n></div>\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 * PieBuilder\n * \n * Builder concreto para el gráfico de Pie (torta concéntrica).\n * \n */\nexport class PieBuilder 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 totalSeries = data.series.length;\n let series: SeriesOption[] = [];\n\n if (totalSeries === 1) {\n const s = data.series[0];\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 dynamicPieSeriesOptions: PieSeriesOption = {\n name: s.name,\n type: 'pie',\n data: pieData,\n id: `pie_0`,\n radius: [0, '50%'],\n label: {\n show: true,\n position: 'outside'\n },\n labelLine: {\n show: true,\n },\n };\n\n const seriesOption = merge(dynamicPieSeriesOptions, 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 series.push(seriesOption);\n } else {\n const centerPieRadius = Math.max(20, 40 - totalSeries * 3);\n const maxOuterRadius = Math.min(60, 75 + (totalSeries - 2) * 3);\n const margin = Math.max(1, 4 - totalSeries * 0.2);\n\n const numRings = totalSeries - 1;\n const availableSpan = maxOuterRadius - (centerPieRadius + margin) - (margin * (numRings - 1));\n const thickness = availableSpan / numRings;\n\n series = data.series.map((s, idx) => {\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 let radius: [number | string, number | string];\n let labelPosition: 'inner' | 'outside';\n let labelLineShow: boolean;\n let labelShow: boolean = true;\n\n if (idx === 0) {\n // Primera serie: Torta rellena desde el centro\n radius = [0, `${centerPieRadius}%`];\n labelPosition = 'inner';\n labelLineShow = false;\n labelShow = false\n } else {\n // Series subsecuentes: Anillos alrededor\n const inner = (centerPieRadius + margin) + (idx - 1) * (thickness + margin);\n const outer = inner + thickness;\n radius = [`${inner}%`, `${outer}%`];\n labelPosition = 'outside';\n labelLineShow = true;\n }\n\n const dynamicPieSeriesOptions: PieSeriesOption = {\n name: s.name,\n type: 'pie',\n radius: radius,\n label: {\n show: labelShow, // Por defecto en los anillos no mostramos labels para evitar overlaps\n position: labelPosition,\n },\n labelLine: {\n show: labelLineShow\n },\n data: pieData,\n id: `pie_${idx}`,\n };\n\n const seriesOption = merge(dynamicPieSeriesOptions, 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\n this.result.series = series;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\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 addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for pie 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 addGraphic(): 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 { Component } 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 { PieBuilder } from '../../builders/pie.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { PieSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n/**\n * EchartsPieComponent\n * \n * Especialista en visualización de tipo Pie (Torta y Anillos concéntricos).\n * La primera serie se dibuja como un gráfico de torta tradicional (lleno) y\n * las subsecuentes como anillos concéntricos alrededor.\n */\n@Component({\n selector: 'vs-echarts-pie',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-pie.html',\n styleUrls: ['./echarts-pie.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EchartsPieComponent 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 emphasis: { \n scale: true,\n scaleSize: 2,\n },\n select: {\n itemStyle: {\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n borderWidth: 1,\n shadowBlur: 4,\n },\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n };\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'pie',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder = new PieBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n\n constructor() {\n super();\n }\n\n protected override make(makeOpts: MakeOpts): void {\n this.director.makePie(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n \n // 1. Configuramos el builder\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 const options = this.builder.getResult();\n\n this.triggerUpdate(options);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","import { EChartsOption, FunnelSeriesOption, 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 * FunnelBuilder\n * \n * Concrete builder for Funnel charts.\n */\nexport class FunnelBuilder 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 merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: SeriesOption): void {\n if (!data || !data.series.length) return;\n\n const series = data.series.map((s, seriesIndex) => {\n const funnelData = 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 let left = '10%';\n let width = '80%';\n\n const seriesValues = s.data.filter(val => typeof val === 'number');\n const minVal = seriesValues.length > 0 ? Math.min(...seriesValues) : 0;\n const maxVal = seriesValues.length > 0 ? Math.max(...seriesValues) : 100;\n\n const dynamicFunnelSeriesOptions: FunnelSeriesOption = {\n name: s.name,\n type: 'funnel',\n left: left,\n width: width,\n min: minVal,\n max: maxVal,\n data: funnelData,\n id: `funnel_${seriesIndex}`\n };\n\n const seriesOption = merge({}, overrides, dynamicFunnelSeriesOptions);\n\n // Inject color resolver if provided\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n this.result.series = series.shift();\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\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 addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for funnel 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 addGraphic(): 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 { Component } 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 { FunnelBuilder } from '../../builders/funnel.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { FunnelSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n/**\n * EchartsFunnelComponent\n * \n * Component for Funnel visualization. Supports single and multiple measures.\n */\n@Component({\n selector: 'vs-echarts-funnel',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-funnel.html',\n styleUrls: ['./echarts-funnel.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EchartsFunnelComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: FunnelSeriesOption = {\n type: 'funnel',\n left: '10%',\n width: '80%',\n minSize: '0.4%',\n maxSize: '100%',\n sort: 'descending',\n gap: 2,\n label: {\n show: true,\n position: 'inside'\n },\n labelLine: {\n show: false\n },\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 1\n },\n emphasis: {\n label: {\n fontSize: 16\n }\n },\n selectedMode: 'single',\n select: {\n label: {\n fontSize: 16\n },\n itemStyle: {\n borderWidth: 1,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n },\n };\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'funnel',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n\n protected builder = new FunnelBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n \n constructor() {\n super();\n }\n\n protected override make(makeOpts: MakeOpts): void {\n this.director.makeFunnel(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n \n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.make(makeOpts);\n\n const options = this.builder.getResult();\n this.triggerUpdate(options);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","import { BarSeriesOption, EChartsOption, LineSeriesOption, ScatterSeriesOption, 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 & ScatterSeriesOption): 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 zlevel: 10,\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 splitLine: {\n show: true,\n lineStyle: {\n opacity: 0.2,\n type: 'solid',\n }\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';\nimport { EChartsTokens } from '../../vs-echarts.utils';\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 barGap: '10%',\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 selectedMode: 'single',\n select: {\n itemStyle: {\n borderWidth: 1,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\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 this.triggerUpdate(baseOptions);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","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 { 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 symbol: 'emptyCircle',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 4,\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 lineStyle: {\n width: 4,\n shadowBlur: 10,\n }\n },\n selectedMode: 'single',\n select: {\n itemStyle: {\n color: 'rgba(255, 255, 255, 1)',\n borderCap: 'round',\n borderWidth: 8,\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 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 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 this.triggerUpdate(baseOptions);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>","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}","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 { MakeScatterOpts, VSECDirector } from '../../builders/director';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { ScatterSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n@Component({\n selector: 'vs-echarts-scatter',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-scatter.html',\n styleUrls: ['./echarts-scatter.scss'],\n providers: [provideVSEcharts()]\n})\nexport abstract class EchartsScatterComponent extends BaseEchartsComponent {\n\n /**\n * Opciones esenciales inmutables estáticas comunes a todos los charts de dispersión.\n */\n protected baseSeriesOptions: ScatterSeriesOption = {\n type: 'scatter',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n symbol: 'circle',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowBlur: 4,\n shadowOffsetY: 2,\n },\n emphasis: {\n focus: 'none',\n scale: true,\n },\n selectedMode: 'single',\n select: {\n itemStyle: {\n borderWidth: 2,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\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 protected baseProduct: VSEChartProduct = {\n chartKey: 'scatter',\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 protected make(makeOpts: MakeScatterOpts) {\n this.director.makeScatter(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n const makeScatterOpts: MakeScatterOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.make(makeScatterOpts);\n\n const baseOptions = this.builder.getResult();\n\n this.triggerUpdate(baseOptions);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","// 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, FunnelSeriesOption, LineSeriesOption, PieSeriesOption, ScatterSeriesOption, 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 & ScatterSeriesOption): 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 IPieOptionsOverrides {\n series?: Partial<PieSeriesOption>;\n}\n\nexport interface IScatterOptionsOverrides {\n series?: Partial<ScatterSeriesOption>;\n}\n\nexport interface IFunnelOptionsOverrides {\n series?: Partial<FunnelSeriesOption>;\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 /** pie options overrides */\n pie: IPieOptionsOverrides;\n /** scatter options overrides */\n scatter: IScatterOptionsOverrides;\n /** funnel options overrides */\n funnel: IFunnelOptionsOverrides;\n // end //\n}\n\nexport type NGXEchartsSelectChangeEventData = {\n type: string;\n fromAction: string;\n fromActionPayload: {\n dataIndexInside: number;\n dataType: unknown;\n isFromClick: boolean;\n seriesIndex: number;\n type: string;\n },\n isFromClick: boolean;\n selected: {dataIndex: number[], seriesIndex: number }[];\n escapeConnect: unknown;\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-pie/echarts-pie';\nexport * from './lib/charts/echarts-funnel/echarts-funnel';\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/echarts-scatter/echarts-scatter';\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":["BuilderUtils.getCommons","BuilderUtils.getTooltipFormatter","BuilderUtils.getTooltipOptions","BuilderUtils.getLegendOptions","merge","BuilderUtils.getValueAxisOptions","BuilderUtils.getCategoryAxisOptions"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -61,6 +61,9 @@ interface IBarOptionsOverrides {
61
61
  interface IRingOptionsOverrides {
62
62
  series?: Partial<PieSeriesOption>;
63
63
  }
64
+ interface IPieOptionsOverrides {
65
+ series?: Partial<PieSeriesOption>;
66
+ }
64
67
  interface IScatterOptionsOverrides {
65
68
  series?: Partial<ScatterSeriesOption>;
66
69
  }
@@ -87,6 +90,8 @@ interface IOptionsOverrides {
87
90
  bar: IBarOptionsOverrides;
88
91
  /** ring options overrides */
89
92
  ring: IRingOptionsOverrides;
93
+ /** pie options overrides */
94
+ pie: IPieOptionsOverrides;
90
95
  /** scatter options overrides */
91
96
  scatter: IScatterOptionsOverrides;
92
97
  /** funnel options overrides */
@@ -188,6 +193,7 @@ declare class VSECDirector {
188
193
  makeLine(data: IEChartData, overrides: IOptionsOverridesWrapper, opts?: MakeLineOpts): void;
189
194
  makeScatter(data: IEChartData, overrides: IOptionsOverridesWrapper, opts?: MakeScatterOpts): void;
190
195
  makeRing(data: IEChartData, overrides: IOptionsOverridesWrapper, opts?: MakeOpts): void;
196
+ makePie(data: IEChartData, overrides: IOptionsOverridesWrapper, opts?: MakeOpts): void;
191
197
  makeFunnel(data: IEChartData, overrides: IOptionsOverridesWrapper, opts?: MakeOpts): void;
192
198
  }
193
199
 
@@ -359,6 +365,60 @@ declare class EchartsRingComponent extends BaseEchartsComponent {
359
365
  static ɵcmp: i0.ɵɵComponentDeclaration<EchartsRingComponent, "vs-echarts-ring", never, {}, {}, never, never, true, never>;
360
366
  }
361
367
 
368
+ /**
369
+ * PieBuilder
370
+ *
371
+ * Builder concreto para el gráfico de Pie (torta concéntrica).
372
+ *
373
+ */
374
+ declare class PieBuilder implements IEChartBuilder {
375
+ baseProduct: VSEChartProduct;
376
+ protected valueFormatter: EChartValueFormatter;
377
+ protected palette: string[];
378
+ protected colorResolver?: ChartColorResolver;
379
+ protected result: EChartsOption;
380
+ constructor(baseProduct: VSEChartProduct);
381
+ reset(): void;
382
+ addCommons(): void;
383
+ addSeries(data: IEChartData, overrides: SeriesOption): void;
384
+ addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void;
385
+ addLegend(): void;
386
+ addPolar(): void;
387
+ addXAxis(data: {
388
+ categories: IEChartData["categories"];
389
+ }, overrides: IOptionsOverrides["axis"], type: 'category' | 'value'): void;
390
+ addYAxis(data: {
391
+ categories: IEChartData["categories"];
392
+ }, overrides: IOptionsOverrides["axis"], type: 'category' | 'value'): void;
393
+ addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides["axis"]): void;
394
+ addAngleAxis(data: IEChartData, overrides: IOptionsOverrides["axis"]): void;
395
+ addGraphic(): void;
396
+ setValueFormatter(formatter: EChartValueFormatter | undefined): void;
397
+ setPalette(palette: string[] | undefined): void;
398
+ setColorResolver(resolver: ChartColorResolver | undefined): void;
399
+ getResult(): EChartsOption;
400
+ private formatCellValue;
401
+ }
402
+
403
+ /**
404
+ * EchartsPieComponent
405
+ *
406
+ * Especialista en visualización de tipo Pie (Torta y Anillos concéntricos).
407
+ * La primera serie se dibuja como un gráfico de torta tradicional (lleno) y
408
+ * las subsecuentes como anillos concéntricos alrededor.
409
+ */
410
+ declare class EchartsPieComponent extends BaseEchartsComponent {
411
+ protected baseSeriesOptions: PieSeriesOption;
412
+ protected baseProduct: VSEChartProduct;
413
+ protected builder: PieBuilder;
414
+ protected director: VSECDirector;
415
+ constructor();
416
+ protected make(makeOpts: MakeOpts): void;
417
+ protected updateChartOptions(): void;
418
+ static ɵfac: i0.ɵɵFactoryDeclaration<EchartsPieComponent, never>;
419
+ static ɵcmp: i0.ɵɵComponentDeclaration<EchartsPieComponent, "vs-echarts-pie", never, {}, {}, never, never, true, never>;
420
+ }
421
+
362
422
  /**
363
423
  * FunnelBuilder
364
424
  *
@@ -589,5 +649,5 @@ declare abstract class EchartsScatterComponent extends BaseEchartsComponent {
589
649
  static ɵcmp: i0.ɵɵComponentDeclaration<EchartsScatterComponent, "vs-echarts-scatter", never, {}, {}, never, never, true, never>;
590
650
  }
591
651
 
592
- export { BaseEchartsComponent, EChartsAreaComponent, EChartsAreaStackComponent, EChartsBarStackedComponent, EChartsBarStackedRadialComponent, EChartsHBarComponent, EChartsHBarStackedComponent, EchartsBarComponent, EchartsFunnelComponent, EchartsLineComponent, EchartsRingComponent, EchartsScatterComponent, defaultOptionsOverrides, initializeEcharts, provideVSEcharts };
593
- export type { ChartColorResolver, ChartOrientation, EChartClickType, EChartValueFormatter, IAreaOptionsOverrides, IAreaStackOptionsOverrides, IAxisOptionsOverrides, IBarOptionsOverrides, IBarStackedOptionsOverrides, IBarStackedRadialOptionsOverrides, IEChartBuilder, IEChartData, IEChartSeries, IFunnelOptionsOverrides, IHBarOptionsOverrides, IHBarStackedOptionsOverrides, ILineOptionsOverrides, IOptionsOverrides, IOptionsOverridesWrapper, IRingOptionsOverrides, IScatterOptionsOverrides, ITooltipOptionsOverrides, NGXEchartsSelectChangeEventData, VSEChartProduct };
652
+ export { BaseEchartsComponent, EChartsAreaComponent, EChartsAreaStackComponent, EChartsBarStackedComponent, EChartsBarStackedRadialComponent, EChartsHBarComponent, EChartsHBarStackedComponent, EchartsBarComponent, EchartsFunnelComponent, EchartsLineComponent, EchartsPieComponent, EchartsRingComponent, EchartsScatterComponent, defaultOptionsOverrides, initializeEcharts, provideVSEcharts };
653
+ export type { ChartColorResolver, ChartOrientation, EChartClickType, EChartValueFormatter, IAreaOptionsOverrides, IAreaStackOptionsOverrides, IAxisOptionsOverrides, IBarOptionsOverrides, IBarStackedOptionsOverrides, IBarStackedRadialOptionsOverrides, IEChartBuilder, IEChartData, IEChartSeries, IFunnelOptionsOverrides, IHBarOptionsOverrides, IHBarStackedOptionsOverrides, ILineOptionsOverrides, IOptionsOverrides, IOptionsOverridesWrapper, IPieOptionsOverrides, IRingOptionsOverrides, IScatterOptionsOverrides, ITooltipOptionsOverrides, NGXEchartsSelectChangeEventData, VSEChartProduct };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visionaris-bruno/vs-echarts",
3
- "version": "6.4.0",
3
+ "version": "6.5.0",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^20.3.0",
6
6
  "@angular/core": "^20.3.0",