@visionaris-bruno/vs-echarts 5.3.1 → 5.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -126,6 +126,52 @@ function getValueAxisOptions(overrides) {
|
|
|
126
126
|
}
|
|
127
127
|
return result;
|
|
128
128
|
}
|
|
129
|
+
/**
|
|
130
|
+
* Callback function to dynamically position the tooltip inside the chart container boundaries.
|
|
131
|
+
*/
|
|
132
|
+
function getTooltipPositionCallback(point, params, dom, rect, size) {
|
|
133
|
+
const [x, y] = point;
|
|
134
|
+
const tooltipWidth = size?.contentSize?.[0] || dom?.offsetWidth || 150;
|
|
135
|
+
const tooltipHeight = size?.contentSize?.[1] || dom?.offsetHeight || 100;
|
|
136
|
+
const containerWidth = size?.viewSize?.[0] || 400;
|
|
137
|
+
const containerHeight = size?.viewSize?.[1] || 300;
|
|
138
|
+
const offset = 15; // Safe distance from cursor
|
|
139
|
+
let posX = x - tooltipWidth / 2;
|
|
140
|
+
let posY = y - tooltipHeight - offset; // default: above the cursor
|
|
141
|
+
// Left and right boundary checks
|
|
142
|
+
if (posX < 0) {
|
|
143
|
+
// Overflows left boundary: place to the right of the cursor
|
|
144
|
+
posX = x + offset;
|
|
145
|
+
}
|
|
146
|
+
else if (posX + tooltipWidth > containerWidth) {
|
|
147
|
+
// Overflows right boundary: place to the left of the cursor
|
|
148
|
+
posX = x - tooltipWidth - offset;
|
|
149
|
+
}
|
|
150
|
+
// Final safety clamp to container boundaries
|
|
151
|
+
if (posX + tooltipWidth > containerWidth) {
|
|
152
|
+
posX = Math.max(0, containerWidth - tooltipWidth);
|
|
153
|
+
}
|
|
154
|
+
if (posX < 0) {
|
|
155
|
+
posX = 0;
|
|
156
|
+
}
|
|
157
|
+
// Top and bottom boundary checks
|
|
158
|
+
if (posY < 0) {
|
|
159
|
+
// Overflows top boundary: place below the cursor
|
|
160
|
+
posY = y + offset;
|
|
161
|
+
}
|
|
162
|
+
else if (posY + tooltipHeight > containerHeight) {
|
|
163
|
+
// Overflows bottom boundary: place above the cursor
|
|
164
|
+
posY = y - tooltipHeight - offset;
|
|
165
|
+
}
|
|
166
|
+
// Final safety clamp to container boundaries
|
|
167
|
+
if (posY + tooltipHeight > containerHeight) {
|
|
168
|
+
posY = Math.max(0, containerHeight - tooltipHeight);
|
|
169
|
+
}
|
|
170
|
+
if (posY < 0) {
|
|
171
|
+
posY = 0;
|
|
172
|
+
}
|
|
173
|
+
return [posX, posY];
|
|
174
|
+
}
|
|
129
175
|
/**
|
|
130
176
|
* Common Tooltip configuration.
|
|
131
177
|
* Atomic Pattern: Enforces consistent glassmorphism and pointer styles.
|
|
@@ -136,6 +182,7 @@ function getTooltipOptions(overrides) {
|
|
|
136
182
|
const defaults = {
|
|
137
183
|
show: true,
|
|
138
184
|
trigger: trigger,
|
|
185
|
+
position: getTooltipPositionCallback,
|
|
139
186
|
backgroundColor: EChartsTokens.tooltipBg,
|
|
140
187
|
borderColor: '#eee',
|
|
141
188
|
borderWidth: 1,
|
|
@@ -869,14 +916,14 @@ class EchartsRingComponent extends BaseEchartsComponent {
|
|
|
869
916
|
this.triggerUpdate(options);
|
|
870
917
|
}
|
|
871
918
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsRingComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
872
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsRingComponent, isStandalone: true, selector: "vs-echarts-ring", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\"
|
|
919
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsRingComponent, isStandalone: true, selector: "vs-echarts-ring", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" \n echarts \n [options]=\"chartOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartLegendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>\n ", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
|
|
873
920
|
}
|
|
874
921
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsRingComponent, decorators: [{
|
|
875
922
|
type: Component,
|
|
876
923
|
args: [{ selector: 'vs-echarts-ring', standalone: true, imports: [
|
|
877
924
|
CommonModule,
|
|
878
925
|
NgxEchartsDirective,
|
|
879
|
-
], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\"
|
|
926
|
+
], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" \n echarts \n [options]=\"chartOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartLegendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>\n ", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
|
|
880
927
|
}], ctorParameters: () => [] });
|
|
881
928
|
|
|
882
929
|
/**
|
|
@@ -1087,14 +1134,14 @@ class EchartsVerticalBandsComponent extends BaseEchartsComponent {
|
|
|
1087
1134
|
this.triggerUpdate(baseOptions);
|
|
1088
1135
|
}
|
|
1089
1136
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsVerticalBandsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1090
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsVerticalBandsComponent, isStandalone: true, selector: "vs-echarts-vertical-bands", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div
|
|
1137
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsVerticalBandsComponent, isStandalone: true, selector: "vs-echarts-vertical-bands", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>\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"] }] });
|
|
1091
1138
|
}
|
|
1092
1139
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsVerticalBandsComponent, decorators: [{
|
|
1093
1140
|
type: Component,
|
|
1094
1141
|
args: [{ selector: 'vs-echarts-vertical-bands', standalone: true, imports: [
|
|
1095
1142
|
CommonModule,
|
|
1096
1143
|
NgxEchartsDirective,
|
|
1097
|
-
], providers: [provideVSEcharts()], template: "<div
|
|
1144
|
+
], providers: [provideVSEcharts()], template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
|
|
1098
1145
|
}], ctorParameters: () => [] });
|
|
1099
1146
|
|
|
1100
1147
|
/**
|
|
@@ -1289,14 +1336,14 @@ class EchartsBarComponent extends BaseEchartsComponent {
|
|
|
1289
1336
|
this.triggerUpdate(baseOptions);
|
|
1290
1337
|
}
|
|
1291
1338
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1292
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsBarComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\"
|
|
1339
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsBarComponent, isStandalone: true, selector: "vs-echarts-bar", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div class=\"echarts-container\" echarts [options]=\"chartOptions\" [autoResize]=\"true\" (chartInit)=\"onChartInit($event)\" (chartClick)=\"onChartClick($event)\" (legendSelectChanged)=\"onLegendSelectChanged($event)\"></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
|
|
1293
1340
|
}
|
|
1294
1341
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsBarComponent, decorators: [{
|
|
1295
1342
|
type: Component,
|
|
1296
1343
|
args: [{ selector: 'vs-echarts-bar', standalone: true, imports: [
|
|
1297
1344
|
CommonModule,
|
|
1298
1345
|
NgxEchartsDirective,
|
|
1299
|
-
], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\"
|
|
1346
|
+
], providers: [provideVSEcharts()], template: "<div class=\"echarts-container\" echarts [options]=\"chartOptions\" [autoResize]=\"true\" (chartInit)=\"onChartInit($event)\" (chartClick)=\"onChartClick($event)\" (legendSelectChanged)=\"onLegendSelectChanged($event)\"></div>\n", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
|
|
1300
1347
|
}], ctorParameters: () => [] });
|
|
1301
1348
|
|
|
1302
1349
|
class LineBuilder extends BaseEchartBuilder {
|
|
@@ -1413,14 +1460,14 @@ class EchartsLineComponent extends BaseEchartsComponent {
|
|
|
1413
1460
|
this.triggerUpdate(baseOptions);
|
|
1414
1461
|
}
|
|
1415
1462
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsLineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1416
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsLineComponent, isStandalone: true, selector: "vs-echarts-line", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div
|
|
1463
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.19", type: EchartsLineComponent, isStandalone: true, selector: "vs-echarts-line", providers: [provideVSEcharts()], usesInheritance: true, ngImport: i0, template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
|
|
1417
1464
|
}
|
|
1418
1465
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.19", ngImport: i0, type: EchartsLineComponent, decorators: [{
|
|
1419
1466
|
type: Component,
|
|
1420
1467
|
args: [{ selector: 'vs-echarts-line', standalone: true, imports: [
|
|
1421
1468
|
CommonModule,
|
|
1422
1469
|
NgxEchartsDirective,
|
|
1423
|
-
], providers: [provideVSEcharts()], template: "<div
|
|
1470
|
+
], providers: [provideVSEcharts()], template: "<div\n class=\"echarts-container\"\n echarts\n [options]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>", styles: [".echarts-container{width:100%;height:100%;position:relative}\n"] }]
|
|
1424
1471
|
}], ctorParameters: () => [] });
|
|
1425
1472
|
|
|
1426
1473
|
// Interfaces de Inputs de Base EChart Component //
|
|
@@ -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/base-echart.component.ts","../../../projects/vs-echarts/src/lib/builders/base.builder.ts","../../../projects/vs-echarts/src/lib/builders/ring.builder.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/vertical-bands.builder.ts","../../../projects/vs-echarts/src/lib/charts/echarts-vertical-bands/echarts-vertical-bands.ts","../../../projects/vs-echarts/src/lib/charts/echarts-vertical-bands/echarts-vertical-bands.html","../../../projects/vs-echarts/src/lib/builders/bar.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/builders/line.builder.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/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 * ECharts Options Standard Library\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 { 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\";\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 * Global Design Tokens for ECharts\n */\nexport const EChartsTokens = {\n fontFamily: \"'Inter', 'Roboto', sans-serif\",\n fontSize: 11,\n axisColor: '#666',\n lineColor: '#ddd',\n primaryColor: '#08B1D5',\n tooltipBg: 'rgba(255, 255, 255, 0.95)',\n defaultPalette: ['#08B1D5', '#2C3E50', '#F39C12', '#E74C3C', '#27AE60', '#8E44AD', '#3498DB', '#16A085', '#D35400', '#2980B9']\n};\n\n/**\n * Exposes the default Visionaris palette for internal fallbacks.\n */\nexport function getDefaultPalette(): string[] {\n return [...EChartsTokens.defaultPalette];\n}\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 { ...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 axisOpts: CategoryAxisBaseOption = {\n type: 'category',\n triggerEvent: true,\n data: categories,\n axisLabel: {\n rotate: autoRotate,\n interval: 0, \n fontFamily: overrides?.axisLabel?.fontFamily ?? EChartsTokens.fontFamily,\n color: overrides?.axisLabel?.color ?? EChartsTokens.axisColor,\n fontSize: overrides?.axisLabel?.fontSize ?? EChartsTokens.fontSize,\n margin: overrides?.axisLabel?.margin ?? 8,\n fontWeight: overrides?.axisLabel?.fontWeight ?? 'normal',\n overflow: 'break',\n width: overrides?.axisLabel?.width ?? 1000,\n },\n axisLine: {\n lineStyle: {\n color: EChartsTokens.lineColor\n }\n }\n };\n\n return axisOpts;\n}\n\n/**\n * \n *TODO: mejorar sistema de overrides\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 const result = { ...defaults, ...overrides };\n if (overrides?.splitLine) {\n result.splitLine = { ...defaults.splitLine, ...overrides.splitLine };\n }\n\n return result;\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 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 { ...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 `<b>${params.name}</b><br/>${params.marker} ${params.seriesName}: <b>${valFormatted}</b><br/>`;\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\n\n","import { provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { BarChart, LineChart, PieChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n GraphicComponent,\n ToolboxComponent\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsTokens } from './vs-echarts.utils';\nimport { IOptionsOverridesWrapper } from './vs-echarts.interfaces';\n\n/**\n * Inicialización centralizada de ECharts para evitar duplicación y efectos secundarios \n * no controlados en componentes standalone.\n */\nlet initialized = false;\n\nexport function initializeEcharts() {\n if (initialized) return;\n \n echarts.use([\n BarChart,\n PieChart,\n LineChart,\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n CanvasRenderer,\n GraphicComponent,\n ToolboxComponent,\n ]);\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 },\n area: {\n series: {\n smooth: true,\n areaStyle: {},\n },\n },\n areaStack: {\n series: {\n smooth: true,\n areaStyle: {},\n stack: 'total',\n },\n },\n bar: {\n // tooltip: {},\n series: {},\n },\n barStacked: {\n // tooltip: {\n // trigger: 'axis',\n // },\n series: {\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n }\n },\n hBar: {\n orientation: 'h',\n // tooltip: {},\n series: {\n itemStyle: {\n borderRadius: [0,4,4,0],\n }\n }\n },\n hBarStacked: {\n orientation: 'h',\n // tooltip: {\n // trigger: 'axis',\n // },\n series: {\n stack: 'total',\n itemStyle: {\n borderRadius: [0, 0, 0, 0],\n },\n emphasis: {\n focus: 'series',\n }\n }\n }\n }\n}","import { Input, OnChanges, SimpleChanges, ViewChild, ElementRef, Output, EventEmitter, OnDestroy, Directive } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport type * as echarts from 'echarts';\n\nimport { IEChartData, EChartValueFormatter, ChartColorResolver, IOptionsOverrides } from './vs-echarts-api.interfaces';\nimport { EChartClickType } from './vs-echarts.interfaces';\nimport { BaseEchartBuilder } from './builders/base.builder';\nimport { defaultOptionsOverrides } from './vs-echarts.config';\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() optionsOverrides: IOptionsOverrides = 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 /** Opciones configuradas para ngx-echarts */\n public chartOptions: any = {};\n\n /** Subject para debouncing de actualizaciones. ReplaySubject asegura no perder el primer renderizado. */\n private updateSubject = new ReplaySubject<echarts.EChartsOption>(1);\n private updateSubscription?: Subscription;\n\n constructor() {\n this.updateSubscription = this.updateSubject.pipe(\n debounceTime(150)\n ).subscribe(options => {\n this.updateOptions(options);\n });\n }\n\n protected chartInstance?: echarts.ECharts;\n protected abstract builder: BaseEchartBuilder;\n protected currentLegendSelected: any = null;\n\n /** Estado de selección para filtros cruzados */\n protected selectedCategoryIndex: number | null = null;\n protected selectedSeriesIndex: number | null = null;\n\n ngOnChanges(changes: SimpleChanges) {\n this.onInputChanges(changes);\n }\n\n ngOnDestroy() {\n this.updateSubscription?.unsubscribe();\n this.chartInstance?.dispose();\n }\n\n /**\n * Captura la instancia de echarts (usado por ngx-echarts)\n */\n onChartInit(instance: any) {\n this.chartInstance = instance;\n this.setupBaseInteractions();\n this.updateChartOptions();\n }\n\n /**\n * Configura interacciones base como el clic en el fondo para limpiar selección.\n */\n private setupBaseInteractions(): void {\n if (!this.chartInstance) return;\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n this.clearSelection();\n }\n });\n }\n\n onChartClick(event: any): void {\n if (event.componentType === 'series') {\n const index = event.dataIndex;\n const seriesIndex = event.seriesIndex;\n\n if (index !== undefined && index >= 0) {\n this.handleSelection(index, seriesIndex);\n\n // Emit standardized payload for cross-filtering\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n }\n\n /**\n * Maneja la lógica de alternancia de selección.\n */\n protected handleSelection(dataIndex: number, seriesIndex: number): void {\n const isSamePoint = this.selectedCategoryIndex === dataIndex && this.selectedSeriesIndex === seriesIndex;\n \n if (isSamePoint) {\n this.clearSelection();\n } else {\n this.selectedCategoryIndex = dataIndex;\n this.selectedSeriesIndex = seriesIndex;\n this.updateChartOptions();\n }\n }\n\n /**\n * Limpia el estado de selección actual.\n */\n protected clearSelection(): void {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.updateChartOptions();\n }\n \n dispatchAction(type: string, d: { seriesIndex?: number[], dataIndex?: number[] }) {\n if (this.chartInstance == undefined) return;\n \n const {\n seriesIndex = [],\n dataIndex = [],\n } = d;\n\n this.chartInstance.dispatchAction({\n type,\n seriesIndex,\n dataIndex,\n });\n }\n\n /**\n * Maneja clics en la leyenda para persistir filtros.\n */\n onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n private updateOptions(options: echarts.EChartsOption) {\n this.chartOptions = { ...options };\n this.chartInstance?.setOption(options, { notMerge: true });\n }\n\n /**\n * Hook de template method invocado por `ngOnChanges`.\n * Las subclases lo sobreescriben para añadir lógica propia\n * y deben llamar a `super.onInputChanges(changes)` para preservar\n * el comportamiento base (detectar inputs relevantes y actualizar el chart).\n */\n protected onInputChanges(changes: SimpleChanges): void {\n if (changes['data'] || changes['optionsOverrides'] || changes['palette'] || changes['colorResolver'] || changes['valueFormatter']) {\n this.updateChartOptions();\n }\n }\n\n protected abstract updateChartOptions(): void;\n \n /**\n * Gatilla actualización en ngx-echarts\n */\n protected triggerUpdate(options: echarts.EChartsOption) {\n this.updateSubject.next(options);\n }\n\n /**\n * Método público para forzar el redimensionado desde el padre\n */\n public resize() {\n this.chartInstance?.resize();\n }\n}\n","import { EChartsOption } from 'echarts';\nimport { IEChartData, EChartValueFormatter, ChartColorResolver, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\n\n/**\n * BaseEchartBuilder\n * \n * Clase base para la construcción de opciones de ECharts.\n * Implementa lógica compartida de paletas y opciones comunes.\n * \n * @see {@link vs-echarts/docs/internal-architecture.md}\n */\nexport abstract class BaseEchartBuilder {\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 constructor() {}\n\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 /**\n * Método principal para construir el objeto EChartsOption.\n */\n abstract build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption;\n\n /**\n * Retorna configuraciones comunes para todos los gráficos.\n * \n * TODO: particionar en configuraciones concretas con sus \n * respectivos overrides.\n */\n protected getCommonOptions(overrides?: IOptionsOverrides): EChartsOption {\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 = (this.palette && this.palette.length > 0) ? this.palette : EChartsOptions.getDefaultPalette();\n\n return common;\n }\n\n /**\n * Formatea un valor utilizando el callback inyectado.\n */\n protected formatCellValue(value: number, key: string): string {\n return this.valueFormatter(value, key);\n }\n}\n","import { EChartsOption } from 'echarts';\nimport { BaseEchartBuilder } from './base.builder';\nimport { IEChartData, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\n\n/**\n * RingBuilder\n * \n * Especializado en construir opciones para gráficos de tipo Ring (Donas concéntricas).\n * @see {@link vs-echarts/docs/charts/ring-patterns.md}\n */\nexport class RingBuilder extends BaseEchartBuilder {\n \n build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption {\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 seriesOption: any = {\n name: s.name,\n type: 'pie' as const,\n radius: [`${inner}%`, `${outer}%`],\n center: ['50%', '50%'],\n avoidLabelOverlap: true,\n minAngle: 3,\n selectedMode: 'single' as const,\n selectedOffset: 4,\n itemStyle: {\n borderRadius: borderRadius,\n borderColor: '#fff',\n borderWidth: borderWidth\n },\n label: { show: false },\n emphasis: { \n scale: true,\n scaleSize: 2,\n itemStyle: {\n borderColor: '#fff',\n borderWidth: borderWidth\n }\n },\n select: {\n itemStyle: {\n borderColor: '#fff',\n borderWidth: borderWidth\n }\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n data: pieData,\n id: `ring_${ringIndex}`\n };\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n const common = this.getCommonOptions(overrides);\n\n return {\n ...common,\n tooltip: {\n ...EChartsOptions.getTooltipOptions({ trigger: 'item' }),\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 legend: EChartsOptions.getLegendOptions(),\n 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 series: series as any,\n };\n }\n}\n","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../../base-echart.component';\nimport { RingBuilder } from '../../builders/ring.builder';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\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 private lastSelectedSeriesIndex: number | null = null;\n private lastSelectedDataIndex: number | null = null;\n private selectedPercent: string | null = null;\n\n private currentGraphicText: string = '';\n \n protected override builder: RingBuilder;\n\n constructor() {\n super();\n this.builder = new RingBuilder();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n // Reset selection only if data changed\n if (changes['data']) {\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentLegendSelected = null;\n this.currentGraphicText = '';\n }\n super.onInputChanges(changes);\n }\n\n /**\n * Maneja clics en los sectores del ring.\n * Soporta múltiples series (anillos) y actualiza el KPI central.\n */\n override onChartClick(event: any): void {\n if (this.chartInstance && event && event.dataIndex !== undefined) {\n const isSameSelection = \n event.seriesIndex === this.lastSelectedSeriesIndex && \n event.dataIndex === this.lastSelectedDataIndex;\n\n if (isSameSelection) {\n // Toggle OFF\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.setGraphicText('');\n \n this.chartInstance.dispatchAction({\n type: 'unselect',\n seriesIndex: event.seriesIndex,\n dataIndex: event.dataIndex\n });\n } else {\n // SELECT\n this.lastSelectedSeriesIndex = event.seriesIndex;\n this.lastSelectedDataIndex = event.dataIndex;\n this.selectedPercent = (event.percent !== undefined) ? event.percent + '%' : '';\n this.setGraphicText(this.selectedPercent);\n }\n\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n\n onChartMouseOver(event: any): void {\n if (this.selectedPercent === null && event && event.percent !== undefined) {\n this.setGraphicText(event.percent + '%');\n }\n }\n\n onChartMouseOut(event: any): void {\n if (this.selectedPercent === null) {\n this.setGraphicText('');\n }\n }\n\n /**\n * Captura los cambios en la selección de la leyenda para persistirlos.\n */\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n \n // Resetear la selección actual al cambiar el contexto de la leyenda\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentGraphicText = '';\n \n this.updateChartOptions();\n }\n }\n\n /**\n * Actualiza el texto del Graphic central y persiste la selección en el modelo de opciones.\n */\n private setGraphicText(text: string): void {\n this.currentGraphicText = text;\n this.updateChartOptions();\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n \n // 1. Configuramos el builder (Formateadores, Colores, etc se manejan en la base)\n // Pero aquí necesitamos llamar a super o duplicar la lógica de inyección de inputs\n if (this.valueFormatter) this.builder.setValueFormatter(this.valueFormatter);\n if (this.palette) this.builder.setPalette(this.palette);\n if (this.colorResolver) this.builder.setColorResolver(this.colorResolver);\n\n // 2. Obtenemos las bases del chart usando el builder\n let options = this.builder.build(\n this.data, \n this.optionsOverrides\n );\n\n // 3. Persistencia de GRAPHIC (KPI central)\n if (options.graphic && Array.isArray(options.graphic)) {\n const graphic = (options.graphic as any)[0];\n if (graphic && graphic.style) {\n graphic.style.text = this.currentGraphicText;\n graphic.style.opacity = this.currentGraphicText ? 1 : 0;\n }\n }\n\n // 4. Persistencia de SELECCIÓN (sector elevado)\n if (options.series && Array.isArray(options.series)) {\n options.series.forEach((s: any, sIdx: number) => {\n if (s.data && Array.isArray(s.data)) {\n s.data.forEach((item: any, dIdx: number) => {\n if (typeof item === 'object') {\n item.selected = (sIdx === this.lastSelectedSeriesIndex && dIdx === this.lastSelectedDataIndex);\n }\n });\n }\n });\n }\n\n // 5. Persistencia de LEYENDA (filtros de usuario)\n if (this.currentLegendSelected && options.legend) {\n options.legend = {\n ...(options.legend as any),\n selected: { ...this.currentLegendSelected }\n };\n }\n\n // Gatillar actualización en ngx-echarts\n this.triggerUpdate(options);\n }\n}\n","<div class=\"echarts-container\">\n <div class=\"ring-chart\" \n echarts \n [options]=\"chartOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartLegendSelectChanged)=\"onLegendSelectChanged($event)\"\n ></div>\n</div>\n","import { EChartsOption } from 'echarts';\nimport { BaseEchartBuilder } from './base.builder';\nimport { IEChartData, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\nimport { CategoryAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\n\n/**\n * VerticalBandsBuilder\n * \n * Especializado en construir opciones para gráficos de barras verticales.\n * @see {@link vs-echarts/docs/charts/vertical-bands-patterns.md}\n */\nexport class VerticalBandsBuilder extends BaseEchartBuilder {\n \n constructor() {\n super();\n }\n\n build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption {\n if (!data || !data.series.length) return {};\n\n const series = data.series.map((s) => {\n const seriesOption: any = {\n name: s.name,\n type: 'bar',\n barMaxWidth: 50,\n barGap: '15%',\n barCategoryGap: '35%',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n itemStyle: {\n borderRadius: [4, 4, 0, 0]\n },\n data: s.data,\n emphasis: {\n focus: 'none'\n },\n blur: {\n itemStyle: {\n opacity: 0.2\n }\n },\n select: {\n itemStyle: {\n opacity: 1,\n shadowBlur: 10,\n shadowColor: 'rgba(0,0,0,0.3)'\n }\n },\n label: {\n show: false,\n position: 'top',\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\n // Inyectar el resolver de color si existe\n if (this.colorResolver) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n const common = this.getCommonOptions(overrides);\n\n const categoryAxisOptions: CategoryAxisBaseOption = { \n ...overrides.axis.categoryAxis[0],\n data: data.categories,\n }\n const {\n trigger = 'axis'\n } = overrides.tooltip || {};\n\n const tooltipOptionsOverrides = {\n trigger,\n };\n\n return {\n ...common,\n tooltip: {\n ...EChartsOptions.getTooltipOptions(tooltipOptionsOverrides),\n formatter: EChartsOptions.getTooltipFormatter(trigger, data, this.formatCellValue.bind(this)),\n },\n legend: EChartsOptions.getLegendOptions(),\n xAxis: [EChartsOptions.getCategoryAxisOptions(categoryAxisOptions)],\n yAxis: [EChartsOptions.getValueAxisOptions()],\n series: series as any\n };\n }\n}\n","import { Component, EventEmitter, Output, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../../base-echart.component';\nimport { VerticalBandsBuilder } from '../../builders/vertical-bands.builder';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\n\n/**\n * EchartsVerticalBandsComponent\n * \n * Especialista en visualización de bandas/barras verticales. \n * Implementa patrones de interacción ZRender y resaltado de grupos.\n * @see {@link vs-echarts/docs/charts/vertical-bands-patterns.md}\n */\n@Component({\n selector: 'vs-echarts-vertical-bands',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-vertical-bands.html',\n styleUrls: ['./echarts-vertical-bands.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EchartsVerticalBandsComponent extends BaseEchartsComponent {\n \n protected override builder: VerticalBandsBuilder;\n\n constructor() {\n super();\n this.builder = new VerticalBandsBuilder();\n }\n\n override onChartInit(instance: any): void {\n super.onChartInit(instance);\n this.setupAdditionalInteractions();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n private setupAdditionalInteractions(): void {\n if (!this.chartInstance) return;\n\n // 1. ZRender click for background \"sectors\" (Specific to bands)\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n const pointInPixel = [params.offsetX, params.offsetY];\n if (this.chartInstance!.containPixel('grid', pointInPixel)) {\n const xIndexResult = this.chartInstance!.convertFromPixel({ xAxisIndex: 0 }, pointInPixel);\n const xIndex = Array.isArray(xIndexResult) ? xIndexResult[0] : xIndexResult;\n \n if (typeof xIndex === 'number' && xIndex >= 0) {\n this.handleSelection(xIndex, -1); // Use -1 or null to indicate sector selection without specific series\n }\n }\n }\n });\n\n // 2. Mouseover for Group Highlighting\n this.chartInstance.on('mouseover', (params: any) => {\n if (params.dataIndex !== undefined) {\n this.highlightSector(params.dataIndex);\n }\n });\n\n this.chartInstance.on('mouseout', () => {\n this.clearHighlight();\n });\n }\n\n private highlightSector(index: number): void {\n if (!this.chartInstance || this.selectedCategoryIndex !== null) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i),\n dataIndex: index\n });\n }\n\n private clearHighlight(): void {\n if (!this.chartInstance) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'downplay',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i)\n });\n }\n\n /**\n * Maneja clics en la leyenda para persistir filtros.\n */\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n // 1. Configuramos el builder (Formateadores, Colores, etc se manejan en la base)\n if (this.valueFormatter) this.builder.setValueFormatter(this.valueFormatter);\n if (this.palette) this.builder.setPalette(this.palette);\n if (this.colorResolver) this.builder.setColorResolver(this.colorResolver);\n\n // 2. Obtenemos las bases del chart usando el builder\n let baseOptions = this.builder.build(\n this.data, \n this.optionsOverrides\n );\n\n // 3. Re-apply legend selection state if exists\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n // 4. Apply persistent selection style if a sector is selected\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n const seriesArray = baseOptions.series as any[];\n baseOptions.series = seriesArray.map((s, sIdx) => {\n if (s.type === 'bar' && Array.isArray(s.data)) {\n return {\n ...s,\n emphasis: {\n disabled: true\n },\n data: s.data.map((val: any, idx: number) => {\n const isSelected = idx === this.selectedCategoryIndex;\n const isBarSelected = isSelected && sIdx === this.selectedSeriesIndex;\n \n const itemVal = (val && typeof val === 'object' && val.value !== undefined) ? val.value : val;\n \n return {\n value: itemVal,\n itemStyle: {\n opacity: isSelected ? (isBarSelected ? 1 : 0.5) : 0.15,\n borderWidth: 0\n }\n };\n })\n };\n }\n return s;\n });\n }\n\n this.triggerUpdate(baseOptions)\n }\n}\n","<div class=\"echarts-container\">\n <div echarts [options]=\"chartOptions\" [autoResize]=\"true\" (chartInit)=\"onChartInit($event)\" (chartClick)=\"onChartClick($event)\" (legendSelectChanged)=\"onLegendSelectChanged($event)\" class=\"demo-chart\"></div>\n</div>\n","import { EChartsOption } from 'echarts';\nimport { BaseEchartBuilder } from './base.builder';\nimport { IEChartData, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\nimport { XAXisOption, YAXisOption } from 'echarts/types/dist/shared';\n\n/**\n * BarBuilder\n * \n * Especializado en construir opciones para gráficos de barras generales.\n */\nexport class BarBuilder extends BaseEchartBuilder {\n \n constructor() {\n super();\n }\n\n build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption {\n if (!data || !data.series.length) return {};\n\n const {\n itemStyle,\n emphasis = { focus: 'none'},\n stack = undefined,\n } = overrides.bar.series; \n const itStBorderRadius = itemStyle?.borderRadius ?? [4, 4, 0, 0];\n const emphasisFocus = emphasis.focus ?? 'none';\n \n const series = data.series.map((s) => {\n const seriesOption: any = {\n name: s.name,\n type: 'bar',\n barMaxWidth: 50,\n barGap: '15%',\n barCategoryGap: '35%',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n itemStyle: {\n borderRadius: itStBorderRadius,\n },\n data: s.data,\n stack,\n emphasis: {\n focus: emphasisFocus\n },\n label: {\n show: false,\n position: 'top',\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\n // Inyectar el resolver de color si existe\n if (this.colorResolver) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n const common = this.getCommonOptions(overrides);\n\n const xAxis = [];\n const yAxis = [];\n\n const categoryAxisOptions: CategoryAxisBaseOption = {\n ...overrides.axis.categoryAxis[0],\n data: data.categories,\n };\n\n if (overrides.bar.orientation === 'h') {\n xAxis.push(EChartsOptions.getValueAxisOptions());\n yAxis.push(EChartsOptions.getCategoryAxisOptions(categoryAxisOptions));\n }\n else {\n xAxis.push(EChartsOptions.getCategoryAxisOptions(categoryAxisOptions));\n yAxis.push(EChartsOptions.getValueAxisOptions());\n }\n\n const {\n trigger = 'item'\n } = overrides.tooltip;\n\n const tooltipOptionsOverrides = {\n trigger,\n };\n\n return {\n ...common,\n tooltip: {\n ...EChartsOptions.getTooltipOptions(tooltipOptionsOverrides),\n formatter: EChartsOptions.getTooltipFormatter(trigger, data, this.formatCellValue.bind(this))\n },\n legend: EChartsOptions.getLegendOptions(),\n xAxis,\n yAxis,\n series: series as any\n };\n }\n}\n","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../../base-echart.component';\nimport { BarBuilder } from '../../builders/bar.builder';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\n\n/**\n * EchartsBarComponent\n * \n * Componente especialista para visualización de gráficos de barras.\n * Implementa patrones de interacción ZRender y resaltado de grupos.\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 EchartsBarComponent extends BaseEchartsComponent {\n \n protected override builder: BarBuilder;\n\n constructor() {\n super();\n this.builder = new BarBuilder();\n }\n\n override onChartInit(instance: any): void {\n super.onChartInit(instance);\n this.setupAdditionalInteractions();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n private setupAdditionalInteractions(): void {\n if (!this.chartInstance) return;\n\n // 1. ZRender click para sectores de fondo (específico para barras)\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n const pointInPixel = [params.offsetX, params.offsetY];\n if (this.chartInstance!.containPixel('grid', pointInPixel)) {\n const xIndexResult = this.chartInstance!.convertFromPixel({ xAxisIndex: 0 }, pointInPixel);\n const xIndex = Array.isArray(xIndexResult) ? xIndexResult[0] : xIndexResult;\n \n if (typeof xIndex === 'number' && xIndex >= 0) {\n this.handleSelection(xIndex, -1);\n }\n }\n }\n });\n }\n\n private highlightSector(index: number): void {\n if (!this.chartInstance || this.selectedCategoryIndex !== null) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i),\n dataIndex: index\n });\n }\n\n private clearHighlight(): void {\n if (!this.chartInstance) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'downplay',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i)\n });\n }\n\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n if (this.valueFormatter) this.builder.setValueFormatter(this.valueFormatter);\n if (this.palette) this.builder.setPalette(this.palette);\n if (this.colorResolver) this.builder.setColorResolver(this.colorResolver);\n\n let baseOptions = this.builder.build(\n this.data, \n this.optionsOverrides\n );\n\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n const seriesArray = baseOptions.series as any[];\n baseOptions.series = seriesArray.map((s, sIdx) => {\n if (s.type === 'bar' && Array.isArray(s.data)) {\n return {\n ...s,\n emphasis: {\n disabled: true\n },\n data: s.data.map((val: any, idx: number) => {\n const isSelected = idx === this.selectedCategoryIndex;\n const isBarSelected = isSelected && sIdx === this.selectedSeriesIndex;\n \n const itemVal = (val && typeof val === 'object' && val.value !== undefined) ? val.value : val;\n \n return {\n value: itemVal,\n itemStyle: {\n opacity: isSelected ? (isBarSelected ? 1 : 0.5) : 0.15,\n borderWidth: 0\n }\n };\n })\n };\n }\n return s;\n });\n }\n\n this.triggerUpdate(baseOptions);\n }\n}\n","<div class=\"echarts-container\">\n <div echarts [options]=\"chartOptions\" [autoResize]=\"true\" (chartInit)=\"onChartInit($event)\" (chartClick)=\"onChartClick($event)\" (legendSelectChanged)=\"onLegendSelectChanged($event)\" class=\"demo-chart\"></div>\n</div>\n","import { EChartsOption, LineSeriesOption } from 'echarts';\nimport { BaseEchartBuilder } from './base.builder';\nimport { IEChartData, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\nimport { CategoryAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\n\n\nexport class LineBuilder extends BaseEchartBuilder {\n \n constructor() {\n super();\n }\n\n build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption {\n if (!data || !data.series.length) return {};\n\n const { \n areaStyle = undefined,\n stack = undefined,\n smooth = true,\n } = overrides.line.series;\n\n const series = data.series.map((s) => {\n const seriesOption: LineSeriesOption = {\n name: s.name,\n type: 'line',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n data: s.data,\n smooth,\n smoothMonotone: 'x',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 5,\n shadowOffsetY: 2,\n },\n lineStyle: {\n width: 2,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 8,\n shadowOffsetY: 6,\n cap: 'round',\n join: 'round',\n },\n emphasis: {\n focus: 'none',\n itemStyle: {\n borderWidth: 2,\n shadowBlur: 10,\n },\n lineStyle: {\n width: 4,\n shadowBlur: 12,\n }\n },\n areaStyle,\n stack,\n };\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle != undefined) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n const common = this.getCommonOptions(overrides);\n\n const categoryAxisOptions: CategoryAxisBaseOption = { \n ...overrides.axis.categoryAxis[0],\n data: data.categories,\n }\n\n const {\n trigger = 'item'\n } = overrides.tooltip;\n\n const tooltipOptionsOverrides = {\n trigger,\n };\n\n return {\n ...common,\n tooltip: {\n ...EChartsOptions.getTooltipOptions(tooltipOptionsOverrides),\n formatter: EChartsOptions.getTooltipFormatter(trigger,data, this.formatCellValue.bind(this)),\n },\n legend: EChartsOptions.getLegendOptions(),\n xAxis: [EChartsOptions.getCategoryAxisOptions(categoryAxisOptions)],\n yAxis: [EChartsOptions.getValueAxisOptions()],\n series: series as any\n };\n }\n}\n","import { Component, SimpleChanges } from '@angular/core';\nimport { provideVSEcharts } from '../../vs-echarts.config';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { BaseEchartsComponent } from '../../base-echart.component';\nimport { LineBuilder } from '../../builders/line.builder';\nimport * as EChartsOptions from '../../vs-echarts.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: [provideVSEcharts()]\n})\nexport class EchartsLineComponent extends BaseEchartsComponent {\n \n protected override builder: LineBuilder;\n\n constructor(){\n super();\n this.builder = new LineBuilder();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n // 1. Configuramos el builder (Formateadores, Colores, etc se manejan en la base)\n if (this.valueFormatter) this.builder.setValueFormatter(this.valueFormatter);\n if (this.palette) this.builder.setPalette(this.palette);\n if (this.colorResolver) this.builder.setColorResolver(this.colorResolver);\n\n // 2. Obtenemos las bases del chart usando el builder\n let baseOptions = this.builder.build(\n this.data,\n this.optionsOverrides\n );\n\n // 3. Re-apply legend selection state if exists\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n // 4. Apply persistent selection style if a point is selected\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n baseOptions.series = EChartsOptions.applyLineSelectionStyle(\n baseOptions.series as any[],\n this.selectedCategoryIndex,\n this.selectedSeriesIndex\n );\n }\n\n this.triggerUpdate(baseOptions)\n }\n}\n","<div class=\"echarts-container\">\n <div\n echarts\n [options]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($event)\"\n style=\"width: 100%; height: 100%;\"\n ></div>\n</div>","// Interfaces de Inputs de Base EChart Component // \n\nimport { BarSeriesOption, LineSeriesOption } from \"echarts\";\nimport { TooltipOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\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\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\">,\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 // end //\n}","import { IBarOptionsOverrides, ILineOptionsOverrides, IOptionsOverrides, ChartOrientation } from \"./vs-echarts-api.interfaces\";\n\nexport type EChartClickType = 'cross-filter';\n\nexport interface IAreaOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\"|\"areaStyle\">>\n};\nexport interface IAreaStackOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\" | \"areaStyle\"|\"stack\">>\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 orientation: 'h',\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\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 hBar: IHBarOptionsOverrides;\n hBarStacked: IHBarStackedOptionsOverrides;\n // end //\n}","/*\n * Public API Surface of echarts\n */\n\nexport * from './lib/vs-echarts.config';\nexport * from './lib/charts/echarts-ring/echarts-ring';\nexport * from './lib/charts/echarts-vertical-bands/echarts-vertical-bands';\nexport * from './lib/charts/echarts-bar/echarts-bar';\nexport * from './lib/charts/echarts-line/echarts-line';\nexport * from './lib/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":["EChartsOptions.getDefaultPalette","EChartsOptions.getTooltipOptions","EChartsOptions.getLegendOptions","EChartsOptions.getTooltipFormatter","EChartsOptions.getCategoryAxisOptions","EChartsOptions.getValueAxisOptions","EChartsOptions.applyLineSelectionStyle"],"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/base-echart.component.ts","../../../projects/vs-echarts/src/lib/builders/base.builder.ts","../../../projects/vs-echarts/src/lib/builders/ring.builder.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/vertical-bands.builder.ts","../../../projects/vs-echarts/src/lib/charts/echarts-vertical-bands/echarts-vertical-bands.ts","../../../projects/vs-echarts/src/lib/charts/echarts-vertical-bands/echarts-vertical-bands.html","../../../projects/vs-echarts/src/lib/builders/bar.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/builders/line.builder.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/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 * ECharts Options Standard Library\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 { 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\";\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 * Global Design Tokens for ECharts\n */\nexport const EChartsTokens = {\n fontFamily: \"'Inter', 'Roboto', sans-serif\",\n fontSize: 11,\n axisColor: '#666',\n lineColor: '#ddd',\n primaryColor: '#08B1D5',\n tooltipBg: 'rgba(255, 255, 255, 0.95)',\n defaultPalette: ['#08B1D5', '#2C3E50', '#F39C12', '#E74C3C', '#27AE60', '#8E44AD', '#3498DB', '#16A085', '#D35400', '#2980B9']\n};\n\n/**\n * Exposes the default Visionaris palette for internal fallbacks.\n */\nexport function getDefaultPalette(): string[] {\n return [...EChartsTokens.defaultPalette];\n}\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 { ...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 axisOpts: CategoryAxisBaseOption = {\n type: 'category',\n triggerEvent: true,\n data: categories,\n axisLabel: {\n rotate: autoRotate,\n interval: 0, \n fontFamily: overrides?.axisLabel?.fontFamily ?? EChartsTokens.fontFamily,\n color: overrides?.axisLabel?.color ?? EChartsTokens.axisColor,\n fontSize: overrides?.axisLabel?.fontSize ?? EChartsTokens.fontSize,\n margin: overrides?.axisLabel?.margin ?? 8,\n fontWeight: overrides?.axisLabel?.fontWeight ?? 'normal',\n overflow: 'break',\n width: overrides?.axisLabel?.width ?? 1000,\n },\n axisLine: {\n lineStyle: {\n color: EChartsTokens.lineColor\n }\n }\n };\n\n return axisOpts;\n}\n\n/**\n * \n *TODO: mejorar sistema de overrides\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 const result = { ...defaults, ...overrides };\n if (overrides?.splitLine) {\n result.splitLine = { ...defaults.splitLine, ...overrides.splitLine };\n }\n\n return result;\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 { ...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 `<b>${params.name}</b><br/>${params.marker} ${params.seriesName}: <b>${valFormatted}</b><br/>`;\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\n\n","import { provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { BarChart, LineChart, PieChart } from 'echarts/charts';\nimport {\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n GraphicComponent,\n ToolboxComponent\n} from 'echarts/components';\nimport { CanvasRenderer } from 'echarts/renderers';\nimport { EChartsTokens } from './vs-echarts.utils';\nimport { IOptionsOverridesWrapper } from './vs-echarts.interfaces';\n\n/**\n * Inicialización centralizada de ECharts para evitar duplicación y efectos secundarios \n * no controlados en componentes standalone.\n */\nlet initialized = false;\n\nexport function initializeEcharts() {\n if (initialized) return;\n \n echarts.use([\n BarChart,\n PieChart,\n LineChart,\n TitleComponent,\n TooltipComponent,\n GridComponent,\n LegendComponent,\n CanvasRenderer,\n GraphicComponent,\n ToolboxComponent,\n ]);\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 },\n area: {\n series: {\n smooth: true,\n areaStyle: {},\n },\n },\n areaStack: {\n series: {\n smooth: true,\n areaStyle: {},\n stack: 'total',\n },\n },\n bar: {\n // tooltip: {},\n series: {},\n },\n barStacked: {\n // tooltip: {\n // trigger: 'axis',\n // },\n series: {\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n }\n },\n hBar: {\n orientation: 'h',\n // tooltip: {},\n series: {\n itemStyle: {\n borderRadius: [0,4,4,0],\n }\n }\n },\n hBarStacked: {\n orientation: 'h',\n // tooltip: {\n // trigger: 'axis',\n // },\n series: {\n stack: 'total',\n itemStyle: {\n borderRadius: [0, 0, 0, 0],\n },\n emphasis: {\n focus: 'series',\n }\n }\n }\n }\n}","import { Input, OnChanges, SimpleChanges, ViewChild, ElementRef, Output, EventEmitter, OnDestroy, Directive } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport type * as echarts from 'echarts';\n\nimport { IEChartData, EChartValueFormatter, ChartColorResolver, IOptionsOverrides } from './vs-echarts-api.interfaces';\nimport { EChartClickType } from './vs-echarts.interfaces';\nimport { BaseEchartBuilder } from './builders/base.builder';\nimport { defaultOptionsOverrides } from './vs-echarts.config';\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() optionsOverrides: IOptionsOverrides = 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 /** Opciones configuradas para ngx-echarts */\n public chartOptions: any = {};\n\n /** Subject para debouncing de actualizaciones. ReplaySubject asegura no perder el primer renderizado. */\n private updateSubject = new ReplaySubject<echarts.EChartsOption>(1);\n private updateSubscription?: Subscription;\n\n constructor() {\n this.updateSubscription = this.updateSubject.pipe(\n debounceTime(150)\n ).subscribe(options => {\n this.updateOptions(options);\n });\n }\n\n protected chartInstance?: echarts.ECharts;\n protected abstract builder: BaseEchartBuilder;\n protected currentLegendSelected: any = null;\n\n /** Estado de selección para filtros cruzados */\n protected selectedCategoryIndex: number | null = null;\n protected selectedSeriesIndex: number | null = null;\n\n ngOnChanges(changes: SimpleChanges) {\n this.onInputChanges(changes);\n }\n\n ngOnDestroy() {\n this.updateSubscription?.unsubscribe();\n this.chartInstance?.dispose();\n }\n\n /**\n * Captura la instancia de echarts (usado por ngx-echarts)\n */\n onChartInit(instance: any) {\n this.chartInstance = instance;\n this.setupBaseInteractions();\n this.updateChartOptions();\n }\n\n /**\n * Configura interacciones base como el clic en el fondo para limpiar selección.\n */\n private setupBaseInteractions(): void {\n if (!this.chartInstance) return;\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n this.clearSelection();\n }\n });\n }\n\n onChartClick(event: any): void {\n if (event.componentType === 'series') {\n const index = event.dataIndex;\n const seriesIndex = event.seriesIndex;\n\n if (index !== undefined && index >= 0) {\n this.handleSelection(index, seriesIndex);\n\n // Emit standardized payload for cross-filtering\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n }\n\n /**\n * Maneja la lógica de alternancia de selección.\n */\n protected handleSelection(dataIndex: number, seriesIndex: number): void {\n const isSamePoint = this.selectedCategoryIndex === dataIndex && this.selectedSeriesIndex === seriesIndex;\n \n if (isSamePoint) {\n this.clearSelection();\n } else {\n this.selectedCategoryIndex = dataIndex;\n this.selectedSeriesIndex = seriesIndex;\n this.updateChartOptions();\n }\n }\n\n /**\n * Limpia el estado de selección actual.\n */\n protected clearSelection(): void {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.updateChartOptions();\n }\n \n dispatchAction(type: string, d: { seriesIndex?: number[], dataIndex?: number[] }) {\n if (this.chartInstance == undefined) return;\n \n const {\n seriesIndex = [],\n dataIndex = [],\n } = d;\n\n this.chartInstance.dispatchAction({\n type,\n seriesIndex,\n dataIndex,\n });\n }\n\n /**\n * Maneja clics en la leyenda para persistir filtros.\n */\n onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n private updateOptions(options: echarts.EChartsOption) {\n this.chartOptions = { ...options };\n this.chartInstance?.setOption(options, { notMerge: true });\n }\n\n /**\n * Hook de template method invocado por `ngOnChanges`.\n * Las subclases lo sobreescriben para añadir lógica propia\n * y deben llamar a `super.onInputChanges(changes)` para preservar\n * el comportamiento base (detectar inputs relevantes y actualizar el chart).\n */\n protected onInputChanges(changes: SimpleChanges): void {\n if (changes['data'] || changes['optionsOverrides'] || changes['palette'] || changes['colorResolver'] || changes['valueFormatter']) {\n this.updateChartOptions();\n }\n }\n\n protected abstract updateChartOptions(): void;\n \n /**\n * Gatilla actualización en ngx-echarts\n */\n protected triggerUpdate(options: echarts.EChartsOption) {\n this.updateSubject.next(options);\n }\n\n /**\n * Método público para forzar el redimensionado desde el padre\n */\n public resize() {\n this.chartInstance?.resize();\n }\n}\n","import { EChartsOption } from 'echarts';\nimport { IEChartData, EChartValueFormatter, ChartColorResolver, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\n\n/**\n * BaseEchartBuilder\n * \n * Clase base para la construcción de opciones de ECharts.\n * Implementa lógica compartida de paletas y opciones comunes.\n * \n * @see {@link vs-echarts/docs/internal-architecture.md}\n */\nexport abstract class BaseEchartBuilder {\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 constructor() {}\n\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 /**\n * Método principal para construir el objeto EChartsOption.\n */\n abstract build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption;\n\n /**\n * Retorna configuraciones comunes para todos los gráficos.\n * \n * TODO: particionar en configuraciones concretas con sus \n * respectivos overrides.\n */\n protected getCommonOptions(overrides?: IOptionsOverrides): EChartsOption {\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 = (this.palette && this.palette.length > 0) ? this.palette : EChartsOptions.getDefaultPalette();\n\n return common;\n }\n\n /**\n * Formatea un valor utilizando el callback inyectado.\n */\n protected formatCellValue(value: number, key: string): string {\n return this.valueFormatter(value, key);\n }\n}\n","import { EChartsOption } from 'echarts';\nimport { BaseEchartBuilder } from './base.builder';\nimport { IEChartData, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\n\n/**\n * RingBuilder\n * \n * Especializado en construir opciones para gráficos de tipo Ring (Donas concéntricas).\n * @see {@link vs-echarts/docs/charts/ring-patterns.md}\n */\nexport class RingBuilder extends BaseEchartBuilder {\n \n build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption {\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 seriesOption: any = {\n name: s.name,\n type: 'pie' as const,\n radius: [`${inner}%`, `${outer}%`],\n center: ['50%', '50%'],\n avoidLabelOverlap: true,\n minAngle: 3,\n selectedMode: 'single' as const,\n selectedOffset: 4,\n itemStyle: {\n borderRadius: borderRadius,\n borderColor: '#fff',\n borderWidth: borderWidth\n },\n label: { show: false },\n emphasis: { \n scale: true,\n scaleSize: 2,\n itemStyle: {\n borderColor: '#fff',\n borderWidth: borderWidth\n }\n },\n select: {\n itemStyle: {\n borderColor: '#fff',\n borderWidth: borderWidth\n }\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n data: pieData,\n id: `ring_${ringIndex}`\n };\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n const common = this.getCommonOptions(overrides);\n\n return {\n ...common,\n tooltip: {\n ...EChartsOptions.getTooltipOptions({ trigger: 'item' }),\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 legend: EChartsOptions.getLegendOptions(),\n 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 series: series as any,\n };\n }\n}\n","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../../base-echart.component';\nimport { RingBuilder } from '../../builders/ring.builder';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\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 private lastSelectedSeriesIndex: number | null = null;\n private lastSelectedDataIndex: number | null = null;\n private selectedPercent: string | null = null;\n\n private currentGraphicText: string = '';\n \n protected override builder: RingBuilder;\n\n constructor() {\n super();\n this.builder = new RingBuilder();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n // Reset selection only if data changed\n if (changes['data']) {\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentLegendSelected = null;\n this.currentGraphicText = '';\n }\n super.onInputChanges(changes);\n }\n\n /**\n * Maneja clics en los sectores del ring.\n * Soporta múltiples series (anillos) y actualiza el KPI central.\n */\n override onChartClick(event: any): void {\n if (this.chartInstance && event && event.dataIndex !== undefined) {\n const isSameSelection = \n event.seriesIndex === this.lastSelectedSeriesIndex && \n event.dataIndex === this.lastSelectedDataIndex;\n\n if (isSameSelection) {\n // Toggle OFF\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.setGraphicText('');\n \n this.chartInstance.dispatchAction({\n type: 'unselect',\n seriesIndex: event.seriesIndex,\n dataIndex: event.dataIndex\n });\n } else {\n // SELECT\n this.lastSelectedSeriesIndex = event.seriesIndex;\n this.lastSelectedDataIndex = event.dataIndex;\n this.selectedPercent = (event.percent !== undefined) ? event.percent + '%' : '';\n this.setGraphicText(this.selectedPercent);\n }\n\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n\n onChartMouseOver(event: any): void {\n if (this.selectedPercent === null && event && event.percent !== undefined) {\n this.setGraphicText(event.percent + '%');\n }\n }\n\n onChartMouseOut(event: any): void {\n if (this.selectedPercent === null) {\n this.setGraphicText('');\n }\n }\n\n /**\n * Captura los cambios en la selección de la leyenda para persistirlos.\n */\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n \n // Resetear la selección actual al cambiar el contexto de la leyenda\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentGraphicText = '';\n \n this.updateChartOptions();\n }\n }\n\n /**\n * Actualiza el texto del Graphic central y persiste la selección en el modelo de opciones.\n */\n private setGraphicText(text: string): void {\n this.currentGraphicText = text;\n this.updateChartOptions();\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n \n // 1. Configuramos el builder (Formateadores, Colores, etc se manejan en la base)\n // Pero aquí necesitamos llamar a super o duplicar la lógica de inyección de inputs\n if (this.valueFormatter) this.builder.setValueFormatter(this.valueFormatter);\n if (this.palette) this.builder.setPalette(this.palette);\n if (this.colorResolver) this.builder.setColorResolver(this.colorResolver);\n\n // 2. Obtenemos las bases del chart usando el builder\n let options = this.builder.build(\n this.data, \n this.optionsOverrides\n );\n\n // 3. Persistencia de GRAPHIC (KPI central)\n if (options.graphic && Array.isArray(options.graphic)) {\n const graphic = (options.graphic as any)[0];\n if (graphic && graphic.style) {\n graphic.style.text = this.currentGraphicText;\n graphic.style.opacity = this.currentGraphicText ? 1 : 0;\n }\n }\n\n // 4. Persistencia de SELECCIÓN (sector elevado)\n if (options.series && Array.isArray(options.series)) {\n options.series.forEach((s: any, sIdx: number) => {\n if (s.data && Array.isArray(s.data)) {\n s.data.forEach((item: any, dIdx: number) => {\n if (typeof item === 'object') {\n item.selected = (sIdx === this.lastSelectedSeriesIndex && dIdx === this.lastSelectedDataIndex);\n }\n });\n }\n });\n }\n\n // 5. Persistencia de LEYENDA (filtros de usuario)\n if (this.currentLegendSelected && options.legend) {\n options.legend = {\n ...(options.legend as any),\n selected: { ...this.currentLegendSelected }\n };\n }\n\n // Gatillar actualización en ngx-echarts\n this.triggerUpdate(options);\n }\n}\n","<div class=\"echarts-container\" \n echarts \n [options]=\"chartOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartLegendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>\n ","import { EChartsOption } from 'echarts';\nimport { BaseEchartBuilder } from './base.builder';\nimport { IEChartData, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\nimport { CategoryAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\n\n/**\n * VerticalBandsBuilder\n * \n * Especializado en construir opciones para gráficos de barras verticales.\n * @see {@link vs-echarts/docs/charts/vertical-bands-patterns.md}\n */\nexport class VerticalBandsBuilder extends BaseEchartBuilder {\n \n constructor() {\n super();\n }\n\n build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption {\n if (!data || !data.series.length) return {};\n\n const series = data.series.map((s) => {\n const seriesOption: any = {\n name: s.name,\n type: 'bar',\n barMaxWidth: 50,\n barGap: '15%',\n barCategoryGap: '35%',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n itemStyle: {\n borderRadius: [4, 4, 0, 0]\n },\n data: s.data,\n emphasis: {\n focus: 'none'\n },\n blur: {\n itemStyle: {\n opacity: 0.2\n }\n },\n select: {\n itemStyle: {\n opacity: 1,\n shadowBlur: 10,\n shadowColor: 'rgba(0,0,0,0.3)'\n }\n },\n label: {\n show: false,\n position: 'top',\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\n // Inyectar el resolver de color si existe\n if (this.colorResolver) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n const common = this.getCommonOptions(overrides);\n\n const categoryAxisOptions: CategoryAxisBaseOption = { \n ...overrides.axis.categoryAxis[0],\n data: data.categories,\n }\n const {\n trigger = 'axis'\n } = overrides.tooltip || {};\n\n const tooltipOptionsOverrides = {\n trigger,\n };\n\n return {\n ...common,\n tooltip: {\n ...EChartsOptions.getTooltipOptions(tooltipOptionsOverrides),\n formatter: EChartsOptions.getTooltipFormatter(trigger, data, this.formatCellValue.bind(this)),\n },\n legend: EChartsOptions.getLegendOptions(),\n xAxis: [EChartsOptions.getCategoryAxisOptions(categoryAxisOptions)],\n yAxis: [EChartsOptions.getValueAxisOptions()],\n series: series as any\n };\n }\n}\n","import { Component, EventEmitter, Output, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../../base-echart.component';\nimport { VerticalBandsBuilder } from '../../builders/vertical-bands.builder';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\n\n/**\n * EchartsVerticalBandsComponent\n * \n * Especialista en visualización de bandas/barras verticales. \n * Implementa patrones de interacción ZRender y resaltado de grupos.\n * @see {@link vs-echarts/docs/charts/vertical-bands-patterns.md}\n */\n@Component({\n selector: 'vs-echarts-vertical-bands',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-vertical-bands.html',\n styleUrls: ['./echarts-vertical-bands.scss'],\n providers: [provideVSEcharts()]\n})\nexport class EchartsVerticalBandsComponent extends BaseEchartsComponent {\n \n protected override builder: VerticalBandsBuilder;\n\n constructor() {\n super();\n this.builder = new VerticalBandsBuilder();\n }\n\n override onChartInit(instance: any): void {\n super.onChartInit(instance);\n this.setupAdditionalInteractions();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n private setupAdditionalInteractions(): void {\n if (!this.chartInstance) return;\n\n // 1. ZRender click for background \"sectors\" (Specific to bands)\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n const pointInPixel = [params.offsetX, params.offsetY];\n if (this.chartInstance!.containPixel('grid', pointInPixel)) {\n const xIndexResult = this.chartInstance!.convertFromPixel({ xAxisIndex: 0 }, pointInPixel);\n const xIndex = Array.isArray(xIndexResult) ? xIndexResult[0] : xIndexResult;\n \n if (typeof xIndex === 'number' && xIndex >= 0) {\n this.handleSelection(xIndex, -1); // Use -1 or null to indicate sector selection without specific series\n }\n }\n }\n });\n\n // 2. Mouseover for Group Highlighting\n this.chartInstance.on('mouseover', (params: any) => {\n if (params.dataIndex !== undefined) {\n this.highlightSector(params.dataIndex);\n }\n });\n\n this.chartInstance.on('mouseout', () => {\n this.clearHighlight();\n });\n }\n\n private highlightSector(index: number): void {\n if (!this.chartInstance || this.selectedCategoryIndex !== null) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i),\n dataIndex: index\n });\n }\n\n private clearHighlight(): void {\n if (!this.chartInstance) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'downplay',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i)\n });\n }\n\n /**\n * Maneja clics en la leyenda para persistir filtros.\n */\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n // 1. Configuramos el builder (Formateadores, Colores, etc se manejan en la base)\n if (this.valueFormatter) this.builder.setValueFormatter(this.valueFormatter);\n if (this.palette) this.builder.setPalette(this.palette);\n if (this.colorResolver) this.builder.setColorResolver(this.colorResolver);\n\n // 2. Obtenemos las bases del chart usando el builder\n let baseOptions = this.builder.build(\n this.data, \n this.optionsOverrides\n );\n\n // 3. Re-apply legend selection state if exists\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n // 4. Apply persistent selection style if a sector is selected\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n const seriesArray = baseOptions.series as any[];\n baseOptions.series = seriesArray.map((s, sIdx) => {\n if (s.type === 'bar' && Array.isArray(s.data)) {\n return {\n ...s,\n emphasis: {\n disabled: true\n },\n data: s.data.map((val: any, idx: number) => {\n const isSelected = idx === this.selectedCategoryIndex;\n const isBarSelected = isSelected && sIdx === this.selectedSeriesIndex;\n \n const itemVal = (val && typeof val === 'object' && val.value !== undefined) ? val.value : val;\n \n return {\n value: itemVal,\n itemStyle: {\n opacity: isSelected ? (isBarSelected ? 1 : 0.5) : 0.15,\n borderWidth: 0\n }\n };\n })\n };\n }\n return s;\n });\n }\n\n this.triggerUpdate(baseOptions)\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>\n","import { EChartsOption } from 'echarts';\nimport { BaseEchartBuilder } from './base.builder';\nimport { IEChartData, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\nimport { XAXisOption, YAXisOption } from 'echarts/types/dist/shared';\n\n/**\n * BarBuilder\n * \n * Especializado en construir opciones para gráficos de barras generales.\n */\nexport class BarBuilder extends BaseEchartBuilder {\n \n constructor() {\n super();\n }\n\n build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption {\n if (!data || !data.series.length) return {};\n\n const {\n itemStyle,\n emphasis = { focus: 'none'},\n stack = undefined,\n } = overrides.bar.series; \n const itStBorderRadius = itemStyle?.borderRadius ?? [4, 4, 0, 0];\n const emphasisFocus = emphasis.focus ?? 'none';\n \n const series = data.series.map((s) => {\n const seriesOption: any = {\n name: s.name,\n type: 'bar',\n barMaxWidth: 50,\n barGap: '15%',\n barCategoryGap: '35%',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n itemStyle: {\n borderRadius: itStBorderRadius,\n },\n data: s.data,\n stack,\n emphasis: {\n focus: emphasisFocus\n },\n label: {\n show: false,\n position: 'top',\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\n // Inyectar el resolver de color si existe\n if (this.colorResolver) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n const common = this.getCommonOptions(overrides);\n\n const xAxis = [];\n const yAxis = [];\n\n const categoryAxisOptions: CategoryAxisBaseOption = {\n ...overrides.axis.categoryAxis[0],\n data: data.categories,\n };\n\n if (overrides.bar.orientation === 'h') {\n xAxis.push(EChartsOptions.getValueAxisOptions());\n yAxis.push(EChartsOptions.getCategoryAxisOptions(categoryAxisOptions));\n }\n else {\n xAxis.push(EChartsOptions.getCategoryAxisOptions(categoryAxisOptions));\n yAxis.push(EChartsOptions.getValueAxisOptions());\n }\n\n const {\n trigger = 'item'\n } = overrides.tooltip;\n\n const tooltipOptionsOverrides = {\n trigger,\n };\n\n return {\n ...common,\n tooltip: {\n ...EChartsOptions.getTooltipOptions(tooltipOptionsOverrides),\n formatter: EChartsOptions.getTooltipFormatter(trigger, data, this.formatCellValue.bind(this))\n },\n legend: EChartsOptions.getLegendOptions(),\n xAxis,\n yAxis,\n series: series as any\n };\n }\n}\n","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../../base-echart.component';\nimport { BarBuilder } from '../../builders/bar.builder';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { provideVSEcharts } from '../../vs-echarts.config';\n\n/**\n * EchartsBarComponent\n * \n * Componente especialista para visualización de gráficos de barras.\n * Implementa patrones de interacción ZRender y resaltado de grupos.\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 EchartsBarComponent extends BaseEchartsComponent {\n \n protected override builder: BarBuilder;\n\n constructor() {\n super();\n this.builder = new BarBuilder();\n }\n\n override onChartInit(instance: any): void {\n super.onChartInit(instance);\n this.setupAdditionalInteractions();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n private setupAdditionalInteractions(): void {\n if (!this.chartInstance) return;\n\n // 1. ZRender click para sectores de fondo (específico para barras)\n const zr = this.chartInstance.getZr();\n zr.on('click', (params: any) => {\n if (!params.target) {\n const pointInPixel = [params.offsetX, params.offsetY];\n if (this.chartInstance!.containPixel('grid', pointInPixel)) {\n const xIndexResult = this.chartInstance!.convertFromPixel({ xAxisIndex: 0 }, pointInPixel);\n const xIndex = Array.isArray(xIndexResult) ? xIndexResult[0] : xIndexResult;\n \n if (typeof xIndex === 'number' && xIndex >= 0) {\n this.handleSelection(xIndex, -1);\n }\n }\n }\n });\n }\n\n private highlightSector(index: number): void {\n if (!this.chartInstance || this.selectedCategoryIndex !== null) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'highlight',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i),\n dataIndex: index\n });\n }\n\n private clearHighlight(): void {\n if (!this.chartInstance) return;\n const seriesCount = Array.isArray(this.chartOptions.series) ? this.chartOptions.series.length : 0;\n this.chartInstance.dispatchAction({\n type: 'downplay',\n seriesIndex: Array.from({length: seriesCount}, (_, i) => i)\n });\n }\n\n override onLegendSelectChanged(event: any): void {\n if (event && event.selected) {\n this.currentLegendSelected = event.selected;\n this.updateChartOptions();\n }\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n if (this.valueFormatter) this.builder.setValueFormatter(this.valueFormatter);\n if (this.palette) this.builder.setPalette(this.palette);\n if (this.colorResolver) this.builder.setColorResolver(this.colorResolver);\n\n let baseOptions = this.builder.build(\n this.data, \n this.optionsOverrides\n );\n\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n const seriesArray = baseOptions.series as any[];\n baseOptions.series = seriesArray.map((s, sIdx) => {\n if (s.type === 'bar' && Array.isArray(s.data)) {\n return {\n ...s,\n emphasis: {\n disabled: true\n },\n data: s.data.map((val: any, idx: number) => {\n const isSelected = idx === this.selectedCategoryIndex;\n const isBarSelected = isSelected && sIdx === this.selectedSeriesIndex;\n \n const itemVal = (val && typeof val === 'object' && val.value !== undefined) ? val.value : val;\n \n return {\n value: itemVal,\n itemStyle: {\n opacity: isSelected ? (isBarSelected ? 1 : 0.5) : 0.15,\n borderWidth: 0\n }\n };\n })\n };\n }\n return s;\n });\n }\n\n this.triggerUpdate(baseOptions);\n }\n}\n","<div class=\"echarts-container\" echarts [options]=\"chartOptions\" [autoResize]=\"true\" (chartInit)=\"onChartInit($event)\" (chartClick)=\"onChartClick($event)\" (legendSelectChanged)=\"onLegendSelectChanged($event)\"></div>\n","import { EChartsOption, LineSeriesOption } from 'echarts';\nimport { BaseEchartBuilder } from './base.builder';\nimport { IEChartData, IOptionsOverrides } from '../vs-echarts-api.interfaces';\nimport * as EChartsOptions from '../vs-echarts.utils';\nimport { CategoryAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\n\n\nexport class LineBuilder extends BaseEchartBuilder {\n \n constructor() {\n super();\n }\n\n build(\n data: IEChartData,\n overrides: IOptionsOverrides\n ): EChartsOption {\n if (!data || !data.series.length) return {};\n\n const { \n areaStyle = undefined,\n stack = undefined,\n smooth = true,\n } = overrides.line.series;\n\n const series = data.series.map((s) => {\n const seriesOption: LineSeriesOption = {\n name: s.name,\n type: 'line',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n data: s.data,\n smooth,\n smoothMonotone: 'x',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 5,\n shadowOffsetY: 2,\n },\n lineStyle: {\n width: 2,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 8,\n shadowOffsetY: 6,\n cap: 'round',\n join: 'round',\n },\n emphasis: {\n focus: 'none',\n itemStyle: {\n borderWidth: 2,\n shadowBlur: 10,\n },\n lineStyle: {\n width: 4,\n shadowBlur: 12,\n }\n },\n areaStyle,\n stack,\n };\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle != undefined) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n const common = this.getCommonOptions(overrides);\n\n const categoryAxisOptions: CategoryAxisBaseOption = { \n ...overrides.axis.categoryAxis[0],\n data: data.categories,\n }\n\n const {\n trigger = 'item'\n } = overrides.tooltip;\n\n const tooltipOptionsOverrides = {\n trigger,\n };\n\n return {\n ...common,\n tooltip: {\n ...EChartsOptions.getTooltipOptions(tooltipOptionsOverrides),\n formatter: EChartsOptions.getTooltipFormatter(trigger,data, this.formatCellValue.bind(this)),\n },\n legend: EChartsOptions.getLegendOptions(),\n xAxis: [EChartsOptions.getCategoryAxisOptions(categoryAxisOptions)],\n yAxis: [EChartsOptions.getValueAxisOptions()],\n series: series as any\n };\n }\n}\n","import { Component, SimpleChanges } from '@angular/core';\nimport { provideVSEcharts } from '../../vs-echarts.config';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { BaseEchartsComponent } from '../../base-echart.component';\nimport { LineBuilder } from '../../builders/line.builder';\nimport * as EChartsOptions from '../../vs-echarts.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: [provideVSEcharts()]\n})\nexport class EchartsLineComponent extends BaseEchartsComponent {\n \n protected override builder: LineBuilder;\n\n constructor(){\n super();\n this.builder = new LineBuilder();\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n if (changes['data']) {\n this.selectedCategoryIndex = null;\n this.selectedSeriesIndex = null;\n this.currentLegendSelected = null;\n }\n super.onInputChanges(changes);\n }\n\n protected updateChartOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n // 1. Configuramos el builder (Formateadores, Colores, etc se manejan en la base)\n if (this.valueFormatter) this.builder.setValueFormatter(this.valueFormatter);\n if (this.palette) this.builder.setPalette(this.palette);\n if (this.colorResolver) this.builder.setColorResolver(this.colorResolver);\n\n // 2. Obtenemos las bases del chart usando el builder\n let baseOptions = this.builder.build(\n this.data,\n this.optionsOverrides\n );\n\n // 3. Re-apply legend selection state if exists\n if (this.currentLegendSelected && baseOptions.legend) {\n (baseOptions.legend as any).selected = { ...this.currentLegendSelected };\n }\n\n // 4. Apply persistent selection style if a point is selected\n if (this.selectedCategoryIndex !== null && baseOptions.series) {\n baseOptions.series = EChartsOptions.applyLineSelectionStyle(\n baseOptions.series as any[],\n this.selectedCategoryIndex,\n this.selectedSeriesIndex\n );\n }\n\n this.triggerUpdate(baseOptions)\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"chartOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (legendSelectChanged)=\"onLegendSelectChanged($event)\"\n></div>","// Interfaces de Inputs de Base EChart Component // \n\nimport { BarSeriesOption, LineSeriesOption } from \"echarts\";\nimport { TooltipOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\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\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\">,\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 // end //\n}","import { IBarOptionsOverrides, ILineOptionsOverrides, IOptionsOverrides, ChartOrientation } from \"./vs-echarts-api.interfaces\";\n\nexport type EChartClickType = 'cross-filter';\n\nexport interface IAreaOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\"|\"areaStyle\">>\n};\nexport interface IAreaStackOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\" | \"areaStyle\"|\"stack\">>\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 orientation: 'h',\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\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 hBar: IHBarOptionsOverrides;\n hBarStacked: IHBarStackedOptionsOverrides;\n // end //\n}","/*\n * Public API Surface of echarts\n */\n\nexport * from './lib/vs-echarts.config';\nexport * from './lib/charts/echarts-ring/echarts-ring';\nexport * from './lib/charts/echarts-vertical-bands/echarts-vertical-bands';\nexport * from './lib/charts/echarts-bar/echarts-bar';\nexport * from './lib/charts/echarts-line/echarts-line';\nexport * from './lib/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":["EChartsOptions.getDefaultPalette","EChartsOptions.getTooltipOptions","EChartsOptions.getLegendOptions","EChartsOptions.getTooltipFormatter","EChartsOptions.getCategoryAxisOptions","EChartsOptions.getValueAxisOptions","EChartsOptions.applyLineSelectionStyle"],"mappings":"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"}
|