@visionaris-bruno/vs-echarts 9.1.0 → 9.1.3
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.
|
@@ -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/vs-echarts-config.service.ts","../../../projects/vs-echarts/src/lib/charts/base-echart.component.ts","../../../projects/vs-echarts/src/lib/builders/builders.utils.ts","../../../projects/vs-echarts/src/lib/builders/ring.builder.ts","../../../projects/vs-echarts/src/lib/builders/boxplot.builder.ts","../../../projects/vs-echarts/src/lib/builders/echart.builder.ts","../../../projects/vs-echarts/src/lib/builders/pie.builder.ts","../../../projects/vs-echarts/src/lib/builders/funnel.builder.ts","../../../projects/vs-echarts/src/lib/builders/sunburst.builder.ts","../../../projects/vs-echarts/src/lib/builders/sankey.builder.ts","../../../projects/vs-echarts/src/lib/builders/heatmapCalendar.builder.ts","../../../projects/vs-echarts/src/lib/builders/director.ts","../../../projects/vs-echarts/src/lib/charts/echarts-ring/echarts-ring.ts","../../../projects/vs-echarts/src/lib/charts/echarts-ring/echarts-ring.html","../../../projects/vs-echarts/src/lib/charts/echarts-pie/echarts-pie.ts","../../../projects/vs-echarts/src/lib/charts/echarts-pie/echarts-pie.html","../../../projects/vs-echarts/src/lib/charts/echarts-funnel/echarts-funnel.ts","../../../projects/vs-echarts/src/lib/charts/echarts-funnel/echarts-funnel.html","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-bar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-bar.html","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-hBar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-stackedBar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-hBarStacked.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-barStackedRadial.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.html","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-area.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-areaStack.ts","../../../projects/vs-echarts/src/lib/charts/echarts-scatter/echarts-scatter.ts","../../../projects/vs-echarts/src/lib/charts/echarts-scatter/echarts-scatter.html","../../../projects/vs-echarts/src/lib/charts/echarts-sunburst/echarts-sunburst.ts","../../../projects/vs-echarts/src/lib/charts/echarts-sunburst/echarts-sunburst.html","../../../projects/vs-echarts/src/lib/charts/echarts-sankey/echarts-sankey.ts","../../../projects/vs-echarts/src/lib/charts/echarts-sankey/echarts-sankey.html","../../../projects/vs-echarts/src/lib/charts/echarts-hboxplot/echarts-hboxplot.ts","../../../projects/vs-echarts/src/lib/charts/echarts-hboxplot/echarts-hboxplot.html","../../../projects/vs-echarts/src/lib/charts/echarts-heatmapCalendar/echarts-heatmapCalendar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-heatmapCalendar/echarts-heatmapCalendar.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":["import { NGXEchartsSelectChangeEventData } from \"./vs-echarts.interfaces\";\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 sBorderColor: '#a0a0a0ff',\n sShadowColor: '#2e2e2e80',\n primaryColor: '#08B1D5',\n tooltipBg: 'rgba(255, 255, 255, 0.95)',\n defaultPalette: ['#08B1D5', '#2C3E50', '#F39C12', '#E74C3C', '#27AE60', '#8E44AD', '#3498DB', '#16A085', '#D35400', '#2980B9']\n};\n\n/**\n * Exposes the default Visionaris palette for internal fallbacks.\n */\nexport function getDefaultPalette(): string[] {\n return [...EChartsTokens.defaultPalette];\n}\n\n/** corrige inside data index cuando se filtran leyendas en graficos tipo 'pie'. \n * \n * En pie, cuando se filtran leyendas, no coinciden el 'inside data index'\n * con el 'selected data index'. El correcto deberia ser el 'inside data intex'\n * pero por algun motivo esto es distinto en este tipo de graficos.\n * \n * apache echarts version: 5.6.0\n*/\nexport const fixPieDataIndexInside = (e: NGXEchartsSelectChangeEventData) => {\n /** selected serie index */\n const ssi = e.fromActionPayload.seriesIndex;\n const selected = e.selected.find(sel => sel.seriesIndex == ssi);\n if (e.fromAction == 'unselect' || !selected) {\n return e;\n }\n const fixedDataIndex = selected.dataIndex[0]; // [0] por seleccion single;\n e.fromActionPayload.dataIndexInside = fixedDataIndex; // aplico corrección de index inside.\n\n return e;\n};","/// <reference path=\"./typings.d.ts\" />\nimport { provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { BarChart, LineChart, PieChart, ScatterChart, FunnelChart, SunburstChart, SankeyChart, BoxplotChart, HeatmapChart } from 'echarts/charts';\nimport {\n TooltipComponent,\n GridComponent,\n LegendComponent,\n GraphicComponent,\n PolarComponent,\n DatasetComponent,\n DataZoomComponent,\n VisualMapComponent,\n CalendarComponent,\n} from 'echarts/components';\nimport { CanvasRenderer, SVGRenderer } from 'echarts/renderers';\nimport { EChartsTokens } from './vs-echarts.utils';\nimport { ChartValueFormatter, IOptionsOverridesWrapper } from './vs-echarts-api.interfaces';\nimport { InjectionToken } from '@angular/core';\nimport { VSEchartsConfig } from './vs-echarts.interfaces';\n\n// ECharts locale imports\nimport langES from 'echarts/lib/i18n/langES.js';\nimport langDE from 'echarts/lib/i18n/langDE.js';\nimport langFR from 'echarts/lib/i18n/langFR.js';\nimport langIT from 'echarts/lib/i18n/langIT.js';\nimport langPTbr from 'echarts/lib/i18n/langPT-br.js';\n\nexport const VS_ECHARTS_CONFIG = new InjectionToken<VSEchartsConfig>('VS_ECHARTS_CONFIG', {\n providedIn: 'root',\n factory: () => ({ renderer: 'svg' }),\n});\n\n/**\n * Inicialización centralizada de ECharts para evitar duplicación y efectos secundarios \n * no controlados en componentes standalone.\n */\nexport function initializeEcharts() {\n echarts.use([\n BarChart,\n PieChart,\n LineChart,\n ScatterChart,\n FunnelChart,\n SunburstChart,\n SankeyChart,\n BoxplotChart,\n TooltipComponent,\n GridComponent,\n HeatmapChart,\n CalendarComponent,\n LegendComponent,\n CanvasRenderer,\n SVGRenderer,\n GraphicComponent,\n PolarComponent,\n DatasetComponent,\n DataZoomComponent,\n VisualMapComponent,\n ]);\n\n // Register additional locales in ECharts\n echarts.registerLocale('ES', langES);\n echarts.registerLocale('DE', langDE);\n echarts.registerLocale('FR', langFR);\n echarts.registerLocale('IT', langIT);\n echarts.registerLocale('PT-br', langPTbr);\n echarts.registerLocale('PT', langPTbr);\n}\n\n/**\n * Provee la configuración de ECharts para ngx-echarts.\n * Llama automáticamente a la inicialización de módulos.\n */\nexport function provideVSEcharts() {\n initializeEcharts();\n return provideEchartsCore({ echarts });\n}\n\nexport function defaultOptionsOverrides(): IOptionsOverridesWrapper {\n return {\n tooltip: {\n trigger: 'item',\n },\n axis: {\n categoryAxis: [\n {\n axisLabel: {\n fontFamily: EChartsTokens.fontFamily,\n width: 100,\n fontSize: 9,\n margin: 12,\n color: EChartsTokens.axisColor,\n fontWeight: 'normal',\n }\n }\n ],\n valueAxis: [],\n },\n \n line: {\n series: {\n smooth: true,\n },\n },\n area: {\n series: {\n smooth: true,\n },\n },\n areaStack: {\n series: {\n smooth: true,\n },\n },\n bar: {\n series: {\n showBackground: true,\n },\n },\n barStacked: {\n series: {\n showBackground: false,\n }\n },\n barStackedRadial: {\n series: {\n showBackground: false,\n }\n },\n hBar: {\n series: {\n showBackground: true,\n }\n },\n hBarStacked: {\n series: {\n showBackground: false,\n }\n },\n ring: {\n series: {}\n },\n pie: {\n series: {}\n },\n scatter: {\n series: {}\n },\n funnel: {\n series: {}\n },\n sunburst: {\n series: {},\n },\n sankey: {\n series: {}\n },\n hBoxplot: {\n series: {}\n },\n heatmapCalendar: {\n series: {},\n },\n }\n}\n\nexport const defaultValueFormatter: ChartValueFormatter = (value) => `${value}`;","import { Injectable, Inject } from '@angular/core';\nimport { VS_ECHARTS_CONFIG } from './vs-echarts.config';\nimport { VSEchartsConfig, VSEchartsLocale } from './vs-echarts.interfaces';\n\n// TODO: Exportar valores por defecto de vs-echarts.config.ts por este servicio y actualizar en logica de frontend.\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VSEchartsConfigService {\n private readonly mapping: Record<string, VSEchartsLocale> = {\n es: 'ES',\n en: 'EN',\n us: 'EN',\n de: 'DE',\n fr: 'FR',\n it: 'IT',\n pt: 'PT-br',\n br: 'PT-br',\n };\n\n constructor(\n @Inject(VS_ECHARTS_CONFIG) private vsEchartsConfig: VSEchartsConfig\n ) {}\n\n setLocale(language: string): void {\n if (!language) {\n this.vsEchartsConfig.locale = 'ES';\n return;\n }\n const echartsLocale = this.mapping[language.toLowerCase()] || 'ES';\n this.vsEchartsConfig.locale = echartsLocale;\n }\n}\n","import { Input, OnChanges, SimpleChanges, ViewChild, ElementRef, Output, EventEmitter, OnDestroy, Directive, OnInit, inject } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport type * as echarts from 'echarts';\nimport { IEChartData, ChartValueFormatter, ChartColorResolver, IOptionsOverridesWrapper } from '../vs-echarts-api.interfaces';\nimport { EChartClickType, VSEChartProduct, IEChartBuilder, NGXEchartsSelectChangeEventData } from '../vs-echarts.interfaces';\nimport { defaultOptionsOverrides, defaultValueFormatter, VS_ECHARTS_CONFIG } from '../vs-echarts.config';\nimport merge from 'lodash/merge';\nimport { VSECDirector } from '../builders/director';\nimport { EChartsOption, SeriesOption } from 'echarts';\nimport { fixPieDataIndexInside, getDefaultPalette } from '../vs-echarts.utils';\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 = { dimensions: [], source: [] };\n \n @Input({\n \"transform\": (values: Partial<IOptionsOverridesWrapper> | null) => {\n return merge(defaultOptionsOverrides(), values || {});\n }}) optionsOverrides: IOptionsOverridesWrapper = defaultOptionsOverrides();\n\n /** Paleta de colores básica */\n @Input() palette: string[] = getDefaultPalette();\n\n /** Resolver de colores dinámico (Callback) */\n @Input() colorResolver?: ChartColorResolver;\n\n /** Formateador de valores para etiquetas y tooltips */\n @Input() valueFormatter: ChartValueFormatter = defaultValueFormatter;\n \n @Output() chartClick = new EventEmitter<{type: EChartClickType, data: any}>(); \n\n /** Subject para debouncing de actualizaciones. ReplaySubject asegura no perder el primer renderizado. */\n private updateSubject = new ReplaySubject<EChartsOption>(1);\n private updateSubscription?: Subscription;\n\n /**\n * producto base/inicial para el builder.\n */\n protected abstract baseProduct: VSEChartProduct;\n protected abstract builder: IEChartBuilder<any>;\n /**\n * director de construcción.\n * \n * Es quien tendra las instrucciones de armado de los distintos productos\n * y sus variantes.\n * \n * Ver: https://refactoring.guru/es/design-patterns/builder \n */\n protected abstract director: VSECDirector;\n protected abstract make(): void;\n /**\n * Opciones de series escenciales, inmutables y estaticas minimas\n * necesarias para el dibujado de las series del grafico.\n */\n protected abstract baseSeriesOptions: SeriesOption;\n protected afterSetOptionsHook?: () => void;\n\n protected chartInstance?: echarts.ECharts;\n\n protected vsEchartsConfig = (() => {\n try {\n return inject(VS_ECHARTS_CONFIG, { optional: true });\n } catch {\n return null;\n }\n })();\n \n /** Opciones de inicializacion de echarts\n * \n * NgxEchartsDirective.initOpts\n */\n public initOptions = {\n renderer: this.vsEchartsConfig?.renderer || 'svg',\n locale: this.vsEchartsConfig?.locale,\n };\n\n constructor() {\n this.updateSubscription = this.updateSubject.pipe(\n debounceTime(150)\n ).subscribe(options => {\n this.setOptions(options);\n });\n }\n\n // angular hooks //\n ngOnChanges(changes: SimpleChanges) {\n this.onInputChanges(changes);\n }\n\n ngOnDestroy() {\n this.updateSubscription?.unsubscribe();\n this.chartInstance?.dispose();\n }\n\n // metodos privados //\n\n /** setear/actualizar opciones del chart\n * \n * Ver: https://echarts.apache.org/en/api.html#echartsInstance.setOption \n */\n private setOptions(chartOptions: EChartsOption, opts?: {\n notMerge?: boolean,\n silent?: boolean,\n replaceMerge?: string[],\n }) {\n const notMerge = opts?.notMerge ?? true\n , silent = opts?.silent ?? false\n , replaceMerge = opts?.replaceMerge ?? []\n ;\n const _opts = {\n notMerge,\n silent,\n replaceMerge,\n };\n this.chartInstance?.setOption(chartOptions, _opts);\n if (this.afterSetOptionsHook) {\n this.afterSetOptionsHook();\n }\n }\n\n // metodos protegidos //\n protected dispatchAction(type: string, d: { seriesIndex?: number[], dataIndex?: number[] }) {\n if (this.chartInstance == undefined) return;\n\n const {\n seriesIndex = [],\n dataIndex = [],\n } = d;\n\n this.chartInstance.dispatchAction({\n type,\n seriesIndex,\n dataIndex,\n });\n };\n\n /**\n * Hook de template method invocado por `ngOnChanges`.\n * Las subclases lo sobreescriben para añadir lógica propia\n * y deben llamar a `super.onInputChanges(changes)` para preservar\n * el comportamiento base (detectar inputs relevantes y actualizar el chart).\n */\n protected onInputChanges(changes: SimpleChanges): void {\n if (changes['data'] || changes['optionsOverrides'] || changes['palette'] || changes['colorResolver'] || changes['valueFormatter']) {\n this.prepareOptions();\n }\n }\n\n private prepareOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n this.make();\n\n const baseOptions = this.builder.getResult();\n\n this.triggerUpdate(baseOptions);\n }\n\n /**\n * Gatilla actualización.\n * \n */\n protected triggerUpdate(options: EChartsOption) {\n this.updateSubject.next(options);\n }\n\n // metodos publicos //\n\n /**\n * Captura la instancia de echarts (usado por ngx-echarts)\n */\n onChartInit(instance: any) {\n this.chartInstance = instance;\n this.prepareOptions();\n }\n\n onChartClick(event: any): void {\n if (event.componentType === 'series') {\n const index = event.dataIndex;\n const seriesIndex = event.seriesIndex;\n\n if (index !== undefined && index >= 0) {\n // Emit standardized payload for cross-filtering\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n }\n\n /**\n * Maneja el cambio de selección en el gráfico (selección y deselección de elementos).\n * Requiere que las series del gráfico tengan configurado `selectMode`.\n * \n * @param event Datos del evento de cambio de selección de ECharts.\n * @param opts Opciones de configuración adicionales.\n * @param opts.fixPieDataIndexInside Si es true, aplica la corrección de índice para gráficos tipo pie.\n */\n onChartSelectChanged(\n event: NGXEchartsSelectChangeEventData,\n opts?: {\n fixPieDataIndexInside?: boolean;\n }\n ) {\n const shouldFixPie = opts?.fixPieDataIndexInside ?? false;\n if (shouldFixPie) {\n fixPieDataIndexInside(event);\n }\n const {\n type = '',\n fromActionPayload,\n fromAction = '',\n isFromClick,\n selected,\n } = event;\n if (!isFromClick) return; // avoid internal ECharts selection loop.\n\n // limpiar seleccion\n const seriesIndexes = selected.map(s => s.seriesIndex);\n const dataIndexes = selected.flatMap(s => s.dataIndex.map(d => d));\n const ud = {\n seriesIndex: seriesIndexes ,\n dataIndex: dataIndexes,\n };\n this.dispatchAction('unselect', ud);\n // seleccionar\n if (fromAction == 'unselect') {\n return; // avoid selection loop by same.\n }\n const sd = {\n seriesIndex: [fromActionPayload.seriesIndex],\n dataIndex: [fromActionPayload.dataIndexInside],\n };\n this.dispatchAction('select', sd);\n }\n\n /**\n * Método público para forzar el redimensionado desde el padre\n */\n resize() {\n this.chartInstance?.resize();\n }\n}\n","/**\n * ECharts Builder utils\n * \n * Biblioteca de fragmentos de configuración y tokens de diseño para asegurar \n * una estética cohesiva en todos los gráficos de Visionaris.\n * \n * @see {@link VisionarisFrontEnd/docs/technical/echarts-architecture.md}\n */\n\nimport { EChartsOption, LineSeriesOption } from \"echarts\";\nimport { TooltipOption, XAXisOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { IEChartData, ChartValueFormatter, IEChartDataNode, IEChartDimension } from \"../vs-echarts-api.interfaces\";\nimport merge from 'lodash/merge';\nimport { EChartsTokens, getDefaultPalette } from \"../vs-echarts.utils\";\n\n\nexport type TooltipFormatterOpts = {\n showSerieName?: boolean;\n}\n\n\n// Pre-cached native formatter for performance in axis ticks\nexport const compactFormatter = new Intl.NumberFormat('es-AR', {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: 1\n});\n\n/**\n * Formats a value using native browser SI suffixes (k, M, B).\n */\nexport function formatAxisValue(value: number): string {\n return compactFormatter.format(value);\n}\n\n/**\n * Common legend configuration with scroll to prevent \"cannibalization\".\n * Atomic Pattern: Provides the scrollable container with Visionaris styling.\n */\nexport function getLegendOptions(overrides?: any): any {\n const defaults = {\n show: true,\n type: 'scroll',\n orient: 'horizontal',\n bottom: 0,\n left: 'center',\n height: 60,\n textStyle: {\n color: '#333',\n fontSize: EChartsTokens.fontSize,\n fontFamily: EChartsTokens.fontFamily\n },\n pageButtonPosition: 'end',\n pageIconColor: EChartsTokens.primaryColor,\n pageIconInactiveColor: '#ccc',\n pageIconSize: 12,\n pageTextStyle: {\n color: '#666'\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\nexport function getCategoryAxisOptions(overrides?: CategoryAxisBaseOption): any {\n const categories = overrides?.data ? (overrides.data as any[]).map(c => typeof c === 'string' ? c : (c?.name || String(c))) : undefined;\n const autoRotate = categories && categories.length > 10 ? 45 : 0;\n\n const defaults: CategoryAxisBaseOption = {\n type: 'category',\n triggerEvent: true,\n ...(categories ? { data: categories } : {}),\n axisLabel: {\n rotate: autoRotate,\n interval: 0, \n fontFamily: EChartsTokens.fontFamily,\n color: EChartsTokens.axisColor,\n fontSize: EChartsTokens.fontSize,\n margin: 8,\n fontWeight: 'normal',\n overflow: 'break',\n width: 1000,\n },\n axisLine: {\n lineStyle: {\n color: EChartsTokens.lineColor\n }\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\nexport function getValueAxisOptions(overrides?: ValueAxisBaseOption): any {\n const defaults: ValueAxisBaseOption = {\n type: 'value',\n splitLine: { \n show: true,\n lineStyle: { \n type: 'dashed',\n color: '#f0f0f0'\n } \n },\n axisLabel: {\n formatter: (value: number) => formatAxisValue(value),\n color: EChartsTokens.axisColor,\n fontSize: EChartsTokens.fontSize\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\n/**\n * Callback function to dynamically position the tooltip inside the chart container boundaries.\n */\nexport function getTooltipPositionCallback(\n point: [number, number],\n params: any,\n dom: any,\n rect: any,\n size: { contentSize: [number, number]; viewSize: [number, number] }\n): [number, number] {\n const [x, y] = point;\n const tooltipWidth = size?.contentSize?.[0] || dom?.offsetWidth || 150;\n const tooltipHeight = size?.contentSize?.[1] || dom?.offsetHeight || 100;\n const containerWidth = size?.viewSize?.[0] || 400;\n const containerHeight = size?.viewSize?.[1] || 300;\n\n const offset = 15; // Safe distance from cursor\n let posX = x - tooltipWidth / 2;\n let posY = y - tooltipHeight - offset; // default: above the cursor\n\n // Left and right boundary checks\n if (posX < 0) {\n // Overflows left boundary: place to the right of the cursor\n posX = x + offset;\n } else if (posX + tooltipWidth > containerWidth) {\n // Overflows right boundary: place to the left of the cursor\n posX = x - tooltipWidth - offset;\n }\n\n // Final safety clamp to container boundaries\n if (posX + tooltipWidth > containerWidth) {\n posX = Math.max(0, containerWidth - tooltipWidth);\n }\n if (posX < 0) {\n posX = 0;\n }\n\n // Top and bottom boundary checks\n if (posY < 0) {\n // Overflows top boundary: place below the cursor\n posY = y + offset;\n } else if (posY + tooltipHeight > containerHeight) {\n // Overflows bottom boundary: place above the cursor\n posY = y - tooltipHeight - offset;\n }\n\n // Final safety clamp to container boundaries\n if (posY + tooltipHeight > containerHeight) {\n posY = Math.max(0, containerHeight - tooltipHeight);\n }\n if (posY < 0) {\n posY = 0;\n }\n\n return [posX, posY];\n}\n\n/**\n * Common Tooltip configuration.\n * Atomic Pattern: Enforces consistent glassmorphism and pointer styles.\n */\nexport function getTooltipOptions(overrides?: any): TooltipOption {\n const trigger = overrides?.trigger || 'axis';\n const isAxis = trigger === 'axis';\n\n const defaults = {\n show: true,\n trigger: trigger,\n position: getTooltipPositionCallback,\n backgroundColor: EChartsTokens.tooltipBg,\n borderColor: '#eee',\n borderWidth: 1,\n textStyle: {\n color: '#333',\n fontSize: 12\n },\n extraCssText: 'box-shadow: 0 0 10px rgba(0,0,0,0.1); border-radius: 8px;',\n ...(isAxis ? {\n axisPointer: {\n type: 'shadow'\n }\n } : {})\n };\n\n return merge({}, defaults, overrides);\n}\n\n/**\n * Applies a visual selection effect to line-based series.\n * Highlights the selected series and point, and dims everything else.\n * \n * @param series The series array to modify\n * @param selectedCategoryIndex Index of the selected category\n * @param selectedSeriesIndex Index of the selected series\n * @returns Modified series array\n */\nexport function applyLineSelectionStyle(\n series: LineSeriesOption[],\n selectedCategoryIndex: number | null,\n selectedSeriesIndex: number | null\n): LineSeriesOption[] {\n if (selectedCategoryIndex === null || !series) return series;\n\n return series.map((s, sIdx) => {\n const isSelectedSeries = sIdx === selectedSeriesIndex;\n\n // Serie seleccionada: Línea con opacidad 1 para que destaque la tendencia.\n // Serie NO seleccionada: Opacidad 0.20 para atenuar fuertemente.\n const seriesOpacity = isSelectedSeries ? 1 : 0.20;\n \n return {\n ...s,\n emphasis: {\n disabled: true // Deshabilitar el énfasis (hover) cuando hay una selección activa\n },\n itemStyle: {\n ...s.itemStyle,\n opacity: seriesOpacity\n },\n lineStyle: {\n ...s.lineStyle,\n opacity: seriesOpacity\n },\n ...(s.areaStyle ? {\n areaStyle: {\n ...s.areaStyle,\n opacity: isSelectedSeries ? 0.6 : 0.1\n }\n } : {}),\n // Personalizamos los puntos individualmente\n data: (s.data || []).map((val: any, idx: number) => {\n const isSelectedPoint = isSelectedSeries && idx === selectedCategoryIndex;\n const isOtherPointInSelectedSeries = isSelectedSeries && idx !== selectedCategoryIndex;\n \n const originalPoint = (val && typeof val === 'object') ? val : { value: val };\n \n if (isSelectedPoint) {\n return {\n ...originalPoint,\n z: 10, // Asegurar que el punto seleccionado esté por encima de los demás\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 1,\n borderWidth: 2,\n borderColor: '#fff',\n shadowBlur: 10,\n shadowColor: 'rgba(0,0,0,0.5)'\n },\n symbolSize: 12\n };\n } else if (isOtherPointInSelectedSeries) {\n // Puntos de la serie seleccionada que NO son el clicado: un poco más pequeños y traslúcidos\n return {\n ...originalPoint,\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 0.5\n },\n symbolSize: 6\n };\n }\n \n // Puntos de otras series o por defecto\n return val;\n })\n };\n });\n}\n\n/**\n * Resolves the unique key of a category safely.\n */\nexport function getCategoryKey(dimensions: IEChartDimension[] | undefined, index: number): string {\n if (!dimensions || !dimensions[index]) {\n return String(index);\n }\n return dimensions[index].name;\n}\n\n/**\n * Resolves the numeric value from a series data point.\n */\nexport function getCellValue(val: number | undefined | null): number {\n if (val === undefined || val === null) return 0;\n return val;\n}\n\n/**\n * Formatter generator for 'item' trigger strategy in tooltips.\n */\nexport function getItemTooltipFormatter(\n data: IEChartData,\n valueFormatter: ChartValueFormatter,\n opts?: TooltipFormatterOpts,\n): (params: any) => string {\n return (params: any) => {\n let title: string = '',\n subtitle: string = '',\n valFormatted: string = '',\n percentVal: string = ''\n ;\n\n const showSerieName = opts?.showSerieName ?? true;\n \n const row = params.value;\n const dimension = data.dimensions[params.seriesIndex + 1];\n const dimensionName = dimension ? dimension.name : '';\n if (!dimensionName) return '';\n const rawValue = (row && typeof row === 'object') ? row[dimensionName] : params.value;\n const serieName = showSerieName ? `${params.marker} ${params.seriesName}<br/ >`: '';\n const categoryName = params.name || (row && typeof row === 'object' ? row.category : '');\n\n title = categoryName;\n subtitle = serieName;\n valFormatted = valueFormatter(Number(rawValue ?? 0), dimensionName);\n\n // pie/funnel/ring series\n if (params.percent != undefined) {\n percentVal = ` (${params.percent}%)`;\n // invertir titulo y subtitulo\n title = `${params.seriesName}`;\n subtitle = `${params.marker} ${categoryName}</br>`;\n }\n\n // sankey\n if (params.dataType != undefined) {\n const dataType = params.dataType as 'edge' | 'node';\n subtitle = `${params.marker}<br/>`;\n if (dataType === 'edge') {\n const sourceName = params.data.source.split('___')[0];\n const targetName = params.data.target.split('___')[0];\n title = `${sourceName} → ${targetName}`;\n valFormatted = valueFormatter(Number(params.value ?? 0), dimensionName);\n } else if (dataType === 'node') {\n title = params.name.split('___')[0];\n valFormatted = valueFormatter(Number(params.value ?? 0), dimensionName);\n } \n }\n\n // sunburst treemap\n if (params.treePathInfo) {\n const lastLevelIndex = params.treePathInfo.length - 1,\n parentNodeIndex = lastLevelIndex - 1;\n const parentNode: { name: string } = params.treePathInfo[parentNodeIndex];\n const oldParentNode: { name: string } = params.treePathInfo[1];\n if (parentNode.name) {\n title = `${parentNode.name}->${params.name}` ;\n subtitle = `${params.marker} ${oldParentNode.name}<br/ >`;\n }\n }\n \n\n return `<div style=\"text-align: center;\"><b>${title}</b><br/>${subtitle}<b>${valFormatted}</b>${percentVal}</div>`;\n };\n}\n\n/**\n * Formatter generator for 'axis' trigger strategy in tooltips.\n */\nexport function getAxisTooltipFormatter(\n data: IEChartData,\n valueFormatter: ChartValueFormatter,\n opts?: TooltipFormatterOpts,\n): (params: any) => string {\n return (params: any) => {\n if (!params) return '';\n\n const items = Array.isArray(params) ? params : [params];\n if (items.length === 0) return '';\n\n const firstItem = items[0];\n const row = firstItem.value;\n const title = firstItem.name || (row && typeof row === 'object' ? row.category : '');\n let html = `<b>${title}</b><br/>`;\n\n for (const item of items) {\n const dimension = data.dimensions[item.seriesIndex + 1];\n const dimensionName = dimension ? dimension.name : '';\n if (!dimensionName) continue;\n \n const itemRow = item.value;\n const rawValue = (itemRow && typeof itemRow === 'object') ? itemRow[dimensionName] : item.value;\n const valFormatted = valueFormatter(Number(rawValue ?? 0), dimensionName);\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 valueFormatter: ChartValueFormatter,\n opts?: TooltipFormatterOpts,\n): (params: any) => string {\n return trigger === 'axis'\n ? getAxisTooltipFormatter(data, valueFormatter, opts)\n : getItemTooltipFormatter(data, valueFormatter, opts);\n}\n\nexport function getCommons(opts?: {palette: string[]}) {\n const palette = opts?.palette ?? getDefaultPalette();\n\n const common: EChartsOption = {\n backgroundColor: 'transparent',\n textStyle: {\n fontFamily: \"'Inter', 'Roboto', 'Open Sans', sans-serif\",\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '15%',\n top: '20px',\n containLabel: true,\n },\n };\n\n // Aplicar paleta global: Prioridad Palette Inyectada > Default Visionaris\n common.color = (palette && palette.length > 0) ? palette : getDefaultPalette();\n\n return common;\n}\n\n/**\n * Maps hierarchical category nodes and their measures into a nested structure\n * suitable for Sunburst/Treemap charts from the IEChartDataNode children.\n */\nexport function mapHierarchicalData(\n source: IEChartDataNode[] | undefined,\n dimensions: IEChartDimension[]\n): any[] {\n if (!source) {\n return [];\n }\n const measureDims = dimensions.filter(d => d.name !== 'category');\n\n function traverse(nodes: IEChartDataNode[]): any[] {\n return nodes.map(node => {\n const item: any = {\n name: node.category,\n };\n\n if (node.children && node.children.length > 0) {\n item.children = traverse(node.children);\n } else {\n // Leaf category node: append the series (measures) as the final level of children\n if (measureDims.length > 0) {\n item.children = measureDims.map(dim => {\n const rawValue = node[dim.name];\n const value = typeof rawValue === 'object' && rawValue !== null && 'value' in rawValue ? rawValue.value : rawValue;\n return {\n name: dim.displayName || dim.name,\n value: getCellValue(Number(value ?? 0)),\n originalMeassureKey: dim.name\n };\n });\n } else {\n item.value = 0;\n }\n }\n\n return item;\n });\n }\n\n return traverse(source);\n}\n\n/**\n * Calculates the maximum depth of a tree structure.\n */\nexport function getTreeDepth(nodes: any[] | undefined): number {\n if (!nodes || nodes.length === 0) {\n return 0;\n }\n\n let maxChildDepth = 0;\n for (const node of nodes) {\n if (node.children && node.children.length > 0) {\n const d = getTreeDepth(node.children);\n if (d > maxChildDepth) {\n maxChildDepth = d;\n }\n }\n }\n\n return 1 + maxChildDepth;\n}","import { EChartsOption, PieSeriesOption, SeriesOption, TooltipComponentOption } from 'echarts';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport {\n ChartColorResolver,\n ChartValueFormatter,\n IEChartData,\n} from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport merge from 'lodash/merge';\nimport { defaultValueFormatter } from '../vs-echarts.config';\n\n/**\n * RingBuilder\n * \n * Builder concreto para el grafico de Ring. \n * \n */\nexport class RingBuilder implements IEChartBuilder<PieSeriesOption> {\n baseProduct: VSEChartProduct;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n const common: EChartsOption = BuilderUtils.getCommons(opts);\n\n merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: PieSeriesOption): void {\n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n this.result.dataset = {\n dimensions: data.dimensions,\n source: data.source\n };\n\n const measureDims = data.dimensions.filter(d => d.name !== 'category');\n const totalRings = measureDims.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 = measureDims.map((dim, ringIndex) => {\n const dimKey = dim.name;\n const friendlyName = dim.displayName || dim.name;\n const inner = minInnerRadius + (ringIndex * (thickness + margin));\n const outer = inner + thickness;\n\n const dynamicRingSeriesOptions: PieSeriesOption = {\n name: friendlyName,\n type: 'pie',\n radius: [`${inner}%`, `${outer}%`],\n itemStyle: {\n borderRadius: borderRadius,\n borderWidth: borderWidth,\n },\n emphasis: { \n itemStyle: {\n borderWidth: borderWidth,\n },\n },\n select: {\n itemStyle: {\n borderWidth: borderWidth,\n },\n },\n encode: {\n itemName: 'category',\n value: dimKey\n },\n id: `ring_${ringIndex}`,\n };\n\n const seriesOption = merge(dynamicRingSeriesOptions, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n this.result.series = series;\n }\n\n addGraphic(): void {\n // Add graphic element for the center KPI\n this.result.graphic = [{\n id: 'center-kpi',\n type: 'text' as const,\n left: 'center',\n top: 'middle',\n z: 100,\n transition: ['style'],\n style: {\n text: '',\n fontSize: 22,\n fontWeight: 'bold',\n fill: '#333',\n stroke: '#fff',\n lineWidth: 1,\n paintOrder: 'stroke',\n textAlign: 'center',\n textVerticalAlign: 'middle',\n opacity: 0,\n } as any,\n } as any];\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {};\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.valueFormatter);\n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for ring charts\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addDataZoom(): void {}\n addDataset(data: IEChartData, opts?: any): void {}\n\n // Callback setters\n setValueFormatter(formatter: ChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n}\n","import { inject } from \"@angular/core\";\nimport { SeriesOption, EChartsOption, BoxplotSeriesOption } from \"echarts\";\nimport { IEChartData, ChartValueFormatter, ChartColorResolver, IEChartDimension } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder, IOptionsOverrides, ISeriesLayoutOpts, ITooltipOptionsOverrides, VSEChartProduct } from \"../vs-echarts.interfaces\";\nimport { getCategoryAxisOptions, getCommons, getTooltipOptions, getValueAxisOptions, } from \"./builders.utils\"\nimport { merge } from \"lodash\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { defaultValueFormatter } from \"../vs-echarts.config\";\n\ntype BoxPlotBuilderDatasetConfigOpts = {\n}; \n\nexport type BoxPlotBuilderSeriesConfigOpts = Pick<ISeriesLayoutOpts, 'axisTypes'> & {\n};\n\nexport class BoxPlotBuilder implements IEChartBuilder<BoxplotSeriesOption, BoxPlotBuilderSeriesConfigOpts, BoxPlotBuilderDatasetConfigOpts > {\n baseProduct: VSEChartProduct;\n protected translateService?: TranslateService;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n // TODO: Hay que implementar un valor por defecto.\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(\n baseProduct: VSEChartProduct,\n ) {\n this.baseProduct = baseProduct;\n try {\n this.translateService = inject(TranslateService);\n } catch {\n // Ignored if called outside an injection context (e.g. unit tests)\n }\n }\n\n reset(): void {\n this.result = {};\n }\n\n addDataset(data: IEChartData, opts?: BoxPlotBuilderDatasetConfigOpts) {\n /**\n * \n * @param arr \n * @param statisticsKeys etiquetas personalizadas para los valores de estadistica.\n * @returns \n */\n function calcularResumen5Numeros(arr: number[]) {\n if (arr.length === 0) return null;\n\n // 1. Ordenar los números de menor a mayor\n const ordenados = [...arr].sort((a, b) => a - b);\n\n // Función auxiliar para encontrar la mediana/cuartil en una posición\n const obtenerPercentil = (p: number) => {\n const pos = (ordenados.length - 1) * p;\n const base = Math.floor(pos);\n const resto = pos - base;\n\n if (ordenados[base + 1] !== undefined) {\n return ordenados[base] + resto * (ordenados[base + 1] - ordenados[base]);\n } else {\n return ordenados[base];\n }\n };\n\n return {\n min: ordenados[0],\n q1: obtenerPercentil(0.25),\n median: obtenerPercentil(0.50),\n q3: obtenerPercentil(0.75),\n max: ordenados[ordenados.length - 1],\n };\n };\n\n const resumen5NumerosXCat = data.source\n .reverse() // reverse para no modificar el orden original\n .map(s => {\n // filtro category para excluirlo de la lista de métricas\n const values: number[] = Object.entries(s)\n .filter(([key, val]) => key !== 'category' && !isNaN(val as any))\n .map(([_, val]) => Number(val));\n \n // resumen5NumerosXCat\n const resObj = Object.assign({ category: s.category }, calcularResumen5Numeros(values));\n return resObj;\n });\n \n const dataset = [{\n // id: 'resumen5NumerosXCat',\n source: resumen5NumerosXCat,\n },\n {\n // id: 'resumen5NumerosXCatOrder',\n transform: {\n type: 'sort',\n config: {\n dimension: 3,\n order: 'asc',\n },\n },\n }\n ];\n\n this.result.dataset = dataset;\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n const commons = getCommons(opts);\n merge(this.result, commons);\n }\n\n addSeries(data: IEChartData, overrides: BoxplotSeriesOption, opts?: any): void {\n const axisTypes = opts?.axisTypes || { x: 'value', y: 'category' };\n const isVertical = axisTypes.x === 'category';\n\n const dynamicOptions = {\n encode: {\n x: isVertical ? 0 : [1, 2, 3, 4, 5],\n y: isVertical ? [1, 2, 3, 4, 5] : 0,\n },\n };\n\n const serie = merge({}, dynamicOptions, overrides);\n\n this.result.series = [serie];\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const mainMeassureKey = data.dimensions.filter(d => d.name != 'category')[0].name;\n const valueFormatter = this.valueFormatter;\n\n const translate = (key: string, fallback: string) => {\n if (!this.translateService) return fallback;\n const res = this.translateService.instant(key);\n return res === key ? fallback : res;\n };\n\n const labelMap: Record<string, string> = {\n min: translate('VS_ECHARTS.BOXPLOT.MIN', 'Min'),\n q1: translate('VS_ECHARTS.BOXPLOT.Q1', 'Q1'),\n median: translate('VS_ECHARTS.BOXPLOT.MEDIAN', 'Median'),\n q3: translate('VS_ECHARTS.BOXPLOT.Q3', 'Q3'),\n max: translate('VS_ECHARTS.BOXPLOT.MAX', 'Max'),\n };\n\n function tooltipFormatter (params: any[]): string {\n const tooltipEventData = Array.isArray(params) ? params[0] : params;\n const title = `<b>${tooltipEventData.name}</b></br>`;\n let htmlbody = ``;\n for (const datakey in tooltipEventData.data) {\n const rawLabel: string = datakey;\n const value = tooltipEventData.data[datakey];\n if (rawLabel == 'category') {\n continue;\n };\n const label = labelMap[rawLabel] || rawLabel;\n const formattedValue = valueFormatter(value, mainMeassureKey);\n const bodyText = `${tooltipEventData.marker}${label}: ${formattedValue}</br>`;\n htmlbody += bodyText;\n };\n const html = title+htmlbody;\n return html;\n };\n \n this.result.tooltip = getTooltipOptions(merge(overrides, { formatter: tooltipFormatter}));\n }\n\n addDataZoom(): void {\n this.result.dataZoom = [\n {\n type: 'inside'\n },\n {\n type: 'slider',\n height: 20,\n bottom: 10\n }\n ];\n }\n\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\" = \"value\"): void {\n const boxplotXAxisOptions = {\n scale: true,\n };\n if (type === 'category') {\n const opts: CategoryAxisBaseOption = overrides.categoryAxis[0];\n this.result.xAxis = getCategoryAxisOptions(opts);\n } else {\n const opts: ValueAxisBaseOption = overrides.valueAxis[0];\n this.result.xAxis = getValueAxisOptions(merge(opts, boxplotXAxisOptions));\n }\n }\n\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\" = \"category\"): void {\n const boxplotYAxisOptions = {\n scale: true,\n };\n if (type === 'category') {\n const opts: CategoryAxisBaseOption = overrides.categoryAxis[0];\n this.result.yAxis = getCategoryAxisOptions(opts);\n } else {\n const opts: ValueAxisBaseOption = overrides.valueAxis[0];\n this.result.yAxis = getValueAxisOptions(merge(opts, boxplotYAxisOptions));\n }\n }\n\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void { }\n addLegend(): void {}\n addGraphic(): void {}\n addPolar(): void {}\n\n // Setters \n /**\n * Permite inyectar un formateador de valores externo.\n */\n public setValueFormatter(formatter: ChartValueFormatter | undefined): 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[] | undefined): 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 | undefined): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n\n}\n","import { BarSeriesOption, EChartsOption, LineSeriesOption, ScatterSeriesOption, SeriesOption, TooltipComponentOption } from 'echarts';\nimport { IEChartData, ChartValueFormatter, ChartColorResolver } from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport { IEChartBuilder, IOptionsOverrides, ISeriesLayoutOpts, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport { merge } from 'lodash';\nimport { AngleAxisOption, PolarOption, RadiusAxisOption } from 'echarts/types/dist/shared';\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\nimport { defaultValueFormatter } from '../vs-echarts.config';\n\nexport type EChartBuilderSeriesConfigOpts = ISeriesLayoutOpts & {\n\n};\n\nexport type EChartBuilderSeriesOverrides = BarSeriesOption & LineSeriesOption & ScatterSeriesOption;\n\n/**\n * Builder principal.\n * \n * Es muy completo, tiene soporte para ejes y sistema cartesiano polar. \n * \n * Puede verse utilizado en graficos como Lineas y Bars. Siempre que se pueda priorizar utilizar este.\n */\nexport class EChartBuilder implements IEChartBuilder<SeriesOption & BarSeriesOption & LineSeriesOption & ScatterSeriesOption, EChartBuilderSeriesConfigOpts> {\n\n baseProduct: VSEChartProduct = undefined!;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset() {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n merge(this.result, BuilderUtils.getCommons(opts)); \n }\n\n /**\n * \n * @param data \n * @param overrides\n * @returns \n */\n addSeries(data: IEChartData, overrides: BarSeriesOption & LineSeriesOption & ScatterSeriesOption, opts?: ISeriesLayoutOpts): void {\n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n this.result.dataset = {\n dimensions: data.dimensions,\n source: data.source\n };\n\n const measureDims = data.dimensions.filter(d => d.name !== 'category');\n\n const isPolar = opts?.coordinateSystem === 'polar';\n const isHorizontal = opts?.axisTypes?.x === 'value' && opts?.axisTypes?.y === 'category';\n\n const series = measureDims.map((dim) => {\n const friendlyName = dim.displayName || dim.name;\n const dimKey = dim.name;\n\n let encode: any = {\n x: 'category',\n y: dimKey\n };\n\n if (isPolar) {\n encode = {\n angle: 'category',\n radius: dimKey\n };\n } else if (isHorizontal) {\n encode = {\n x: dimKey,\n y: 'category'\n };\n }\n\n\n\n const dynamicOverrides: any = {\n name: friendlyName,\n encode,\n };\n const seriesOption = merge(dynamicOverrides, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n // Inyectar el formatter de etiquetas\n if (seriesOption.label && this.valueFormatter != undefined) {\n const valueFormatter = this.valueFormatter;\n seriesOption.label.formatter = (params: any) => {\n const row = params.value;\n const rawValue = (row && typeof row === 'object') ? row[dimKey] : params.value;\n return valueFormatter(Number(rawValue ?? 0), dimKey);\n }\n }\n\n return seriesOption;\n });\n\n this.result.series = series;\n }\n \n /**\n * TODO: Mejorar funcion, no me convence como se implemento el tooltip formatter.\n * @param data \n * @param overrides \n */\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const optsOverrides: TooltipComponentOption = {\n };\n\n // inyecto formateador personalizado de tooltip\n optsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.valueFormatter.bind(this));\n\n merge(optsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(optsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addPolar(): void {\n const polar: PolarOption[] = [];\n polar.push({\n radius: '65%',\n center: [\"50%\", \"44%\"],\n });\n this.result.polar = polar;\n }\n\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'= 'category'): void {\n const xAxis = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n const valueAxisOptions = this.getValueAxisOptions(data, overrides);\n if (type == 'category') {\n xAxis.push(categoryAxisOptions);\n } else if (type == 'value') {\n xAxis.push(valueAxisOptions);\n }\n\n this.result.xAxis = xAxis;\n }\n\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'= 'value'): void {\n const yAxis = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n const valueAxisOptions = this.getValueAxisOptions(data, overrides);\n if (type == 'category') {\n yAxis.push(categoryAxisOptions);\n } else if (type == 'value') {\n yAxis.push(valueAxisOptions);\n }\n\n this.result.yAxis = yAxis;\n }\n\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {\n const radiusAxis: RadiusAxisOption[] = [];\n /** estilos exclusivos hardcodeados para el eje de valores del sistema de coordenadas polar*/\n const radiusAxisOverrides: RadiusAxisOption = {\n zlevel: 10,\n axisTick: {\n show: false,\n },\n axisLabel: {\n margin: 2,\n fontSize: 8,\n align: 'right',\n rotate: 20,\n verticalAlign: 'top',\n },\n splitLine: {\n show: true,\n lineStyle: {\n opacity: 0.2,\n type: 'solid',\n }\n },\n axisLine: {\n lineStyle: {\n type: 'dashed',\n },\n }\n };\n const radialAxisOptions = BuilderUtils.getValueAxisOptions(radiusAxisOverrides as ValueAxisBaseOption);\n radiusAxis.push(radialAxisOptions);\n\n this.result.radiusAxis = radiusAxis;\n }\n\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {\n const angleAxis: AngleAxisOption[] = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n angleAxis.push(categoryAxisOptions as AngleAxisOption);\n\n this.result.angleAxis = angleAxis;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for ring charts\n addGraphic(): void {}\n addDataset(data: IEChartData): void {}\n\n addDataZoom(): void {\n this.result.dataZoom = [\n {\n type: 'inside'\n },\n {\n type: 'slider',\n height: 20,\n bottom: 60\n }\n ];\n }\n\n getResult() {\n return this.result;\n };\n\n // Setters \n /**\n * Permite inyectar un formateador de valores externo.\n */\n public setValueFormatter(formatter: ChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n /**\n * Permite inyectar una paleta de colores básica.\n */\n public setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n /**\n * Permite inyectar un resolver de colores dinámico.\n */\n public setColorResolver(resolver: ChartColorResolver): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n // Utils\n private getCategoryAxisOptions(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]) {\n // No explicit data needed on category axis when using ECharts dataset\n const categoryAxisOptionsOverrides: CategoryAxisBaseOption = {\n ...overrides.categoryAxis[0]\n };\n const categoryAxisOptions: CategoryAxisBaseOption = BuilderUtils.getCategoryAxisOptions(categoryAxisOptionsOverrides);\n return categoryAxisOptions;\n }\n\n private getValueAxisOptions(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]) {\n const valueAxisOptions = BuilderUtils.getValueAxisOptions();\n return valueAxisOptions;\n }\n}\n","import { EChartsOption, PieSeriesOption, SeriesOption, TooltipComponentOption } from 'echarts';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport {\n ChartColorResolver,\n ChartValueFormatter,\n IEChartData,\n} from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport merge from 'lodash/merge';\nimport { defaultValueFormatter } from '../vs-echarts.config';\n\n/**\n * PieBuilder\n * \n * Builder concreto para el gráfico de Pie (torta concéntrica).\n * \n */\nexport class PieBuilder implements IEChartBuilder<PieSeriesOption> {\n baseProduct: VSEChartProduct;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n };\n const common: EChartsOption = BuilderUtils.getCommons(opts);\n\n merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: PieSeriesOption): void {\n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n this.result.dataset = {\n dimensions: data.dimensions,\n source: data.source\n };\n\n const measureDims = data.dimensions.filter(d => d.name !== 'category');\n const totalSeries = measureDims.length;\n let series: SeriesOption[] = [];\n\n if (totalSeries === 1) {\n const dim = measureDims[0];\n const dimKey = dim.name;\n const friendlyName = dim.displayName || dim.name;\n\n const dynamicPieSeriesOptions: PieSeriesOption = {\n name: friendlyName,\n type: 'pie',\n encode: {\n itemName: 'category',\n value: dimKey\n },\n id: `pie_0`,\n radius: [0, '50%'],\n label: {\n show: true,\n position: 'outside'\n },\n labelLine: {\n show: true,\n },\n };\n\n const seriesOption = merge(dynamicPieSeriesOptions, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n series.push(seriesOption);\n } else {\n const centerPieRadius = Math.max(20, 40 - totalSeries * 3);\n const maxOuterRadius = Math.min(60, 75 + (totalSeries - 2) * 3);\n const margin = Math.max(1, 4 - totalSeries * 0.2);\n\n const numRings = totalSeries - 1;\n const availableSpan = maxOuterRadius - (centerPieRadius + margin) - (margin * (numRings - 1));\n const thickness = availableSpan / numRings;\n\n series = measureDims.map((dim, idx) => {\n const dimKey = dim.name;\n const friendlyName = dim.displayName || dim.name;\n\n let radius: [number | string, number | string];\n let labelPosition: 'inner' | 'outside';\n let labelLineShow: boolean;\n let labelShow: boolean = true;\n\n if (idx === 0) {\n // Primera serie: Torta rellena desde el centro\n radius = [0, `${centerPieRadius}%`];\n labelPosition = 'inner';\n labelLineShow = false;\n labelShow = false;\n } else {\n // Series subsecuentes: Anillos alrededor\n const inner = (centerPieRadius + margin) + (idx - 1) * (thickness + margin);\n const outer = inner + thickness;\n radius = [`${inner}%`, `${outer}%`];\n labelPosition = 'outside';\n labelLineShow = true;\n }\n\n const dynamicPieSeriesOptions: PieSeriesOption = {\n name: friendlyName,\n type: 'pie',\n radius: radius,\n label: {\n show: labelShow, // Por defecto en los anillos no mostramos labels para evitar overlaps\n position: labelPosition,\n },\n labelLine: {\n show: labelLineShow\n },\n encode: {\n itemName: 'category',\n value: dimKey\n },\n id: `pie_${idx}`,\n };\n\n const seriesOption = merge(dynamicPieSeriesOptions, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n }\n\n this.result.series = series;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {\n };\n\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.valueFormatter);\n\n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for pie charts\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addGraphic(): void {}\n addDataZoom(): void {}\n addDataset(data: IEChartData, opts?: any): void {}\n\n // Callback setters\n setValueFormatter(formatter: ChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver ): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n}\n","import { EChartsOption, FunnelSeriesOption, SeriesOption, TooltipComponentOption } from 'echarts';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct, ISeriesLayoutOpts } from '../vs-echarts.interfaces';\nimport {\n ChartColorResolver,\n ChartValueFormatter,\n IEChartData,\n} from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport merge from 'lodash/merge';\nimport { defaultValueFormatter } from '../vs-echarts.config';\n\n/**\n * FunnelBuilder\n * \n * Concrete builder for Funnel charts.\n */\nexport class FunnelBuilder implements IEChartBuilder<FunnelSeriesOption> {\n baseProduct: VSEChartProduct;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n };\n const common: EChartsOption = BuilderUtils.getCommons(opts);\n merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: FunnelSeriesOption): void {\n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n this.result.dataset = {\n dimensions: data.dimensions,\n source: data.source\n };\n\n const measureDims = data.dimensions.filter(d => d.name !== 'category');\n if (measureDims.length === 0) return;\n\n const dim = measureDims[0];\n const dimKey = dim.name;\n const friendlyName = dim.displayName || dim.name;\n\n // Obtener los valores para min/max\n const seriesValues = data.source.map(row => Number(row[dimKey] ?? 0));\n const minVal = seriesValues.length > 0 ? Math.min(...seriesValues) : 0;\n const maxVal = seriesValues.length > 0 ? Math.max(...seriesValues) : 100;\n\n const dynamicFunnelSeriesOptions: FunnelSeriesOption = {\n name: friendlyName,\n type: 'funnel',\n left: '10%',\n width: '80%',\n min: minVal,\n max: maxVal,\n encode: {\n itemName: 'category',\n value: dimKey\n },\n id: `funnel_0`\n };\n\n const seriesOption = merge({}, overrides, dynamicFunnelSeriesOptions);\n\n // Inject color resolver if provided\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n this.result.series = seriesOption;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {\n };\n\n if (this.valueFormatter != undefined) {\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.valueFormatter);\n }\n\n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for funnel charts\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addGraphic(): void {}\n addDataZoom(): void {}\n addDataset(data: IEChartData, opts?: any): void {}\n\n // Callback setters\n setValueFormatter(formatter: ChartValueFormatter | undefined): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[] | undefined): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver | undefined): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n}\n","import { SeriesOption, BarSeriesOption, LineSeriesOption, ScatterSeriesOption, EChartsOption, SunburstSeriesOption, TooltipComponentOption } from \"echarts\";\nimport { IEChartData, ChartValueFormatter, ChartColorResolver } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from \"../vs-echarts.interfaces\";\nimport { merge } from \"lodash\";\nimport * as BuilderUtils from \"./builders.utils\";\nimport { SunburstSeriesNodeItemOption } from \"echarts/types/src/chart/sunburst/SunburstSeries.js\";\nimport { defaultValueFormatter } from \"../vs-echarts.config\";\n\nexport class SunburstBuilder implements IEChartBuilder<SunburstSeriesOption> {\n baseProduct: VSEChartProduct;\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n \n addSeries(data: IEChartData, overrides: SunburstSeriesOption): void {\n if (!data || !data.source || data.source.length === 0) {\n return;\n }\n\n const sunburstData: SunburstSeriesNodeItemOption[] = BuilderUtils.mapHierarchicalData(\n data.source,\n data.dimensions\n );\n\n const depth = BuilderUtils.getTreeDepth(sunburstData);\n const levels: any[] = [];\n for (let i = 0; i <= depth; i++) {\n levels.push({\n label: {\n show: false,\n },\n });\n }\n\n const dynamiSerieOptions: SunburstSeriesOption = {\n name: '',\n data: sunburstData,\n levels: levels\n };\n\n const serie = merge({}, dynamiSerieOptions, overrides);\n\n if (this.colorResolver) {\n if (!serie.itemStyle) {\n serie.itemStyle = {};\n }\n serie.itemStyle.color = this.colorResolver;\n }\n\n this.result.series = serie;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {\n };\n\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger || 'item', data, this.valueFormatter);\n \n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n\n }\n \n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n merge(this.result, BuilderUtils.getCommons(opts)); \n }\n\n\n getResult() {\n return this.result;\n };\n\n // No-ops\n addPolar(): void { }\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\"): void { }\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\"): void { }\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void { }\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void { }\n addLegend(): void { }\n addDataZoom(): void { }\n addDataset(data: IEChartData, opts?: any): void { }\n addGraphic(): void { }\n\n // Setters \n /**\n * Permite inyectar un formateador de valores externo.\n */\n public setValueFormatter(formatter: ChartValueFormatter): 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}","import { EChartsOption, SankeySeriesOption, TooltipComponentOption } from \"echarts\";\nimport { IEChartData, ChartValueFormatter, ChartColorResolver, IEChartDataNode } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from \"../vs-echarts.interfaces\";\nimport { merge } from \"lodash\";\nimport * as BuilderUtils from \"./builders.utils\";\nimport { defaultValueFormatter } from \"../vs-echarts.config\";\n\n/**\n * SankeyBuilder\n * \n * Builder concreto para el gráfico Sankey (diagrama de flujos de izquierda a derecha).\n */\nexport class SankeyBuilder implements IEChartBuilder<SankeySeriesOption> {\n baseProduct: VSEChartProduct;\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addSeries(data: IEChartData, overrides: SankeySeriesOption): void {\n if (!data || !data.source || data.source.length === 0) {\n return;\n }\n\n // Identificar medidas (todas las dimensiones excepto 'category')\n const measureKeys = data.dimensions\n .filter((d) => d.name !== \"category\")\n .map((d) => d.name);\n\n // Función auxiliar para sumarizar valores de medidas en caso de haber más de una\n const getNodeValue = (node: IEChartDataNode): number => {\n return measureKeys.reduce((sum, key) => sum + (Number(node[key]) || 0), 0);\n };\n\n const nodesMap = new Map<string, number>();\n const linksMap = new Map<string, { source: string; target: string; value: number }>();\n\n // Función recursiva para aplanar datos jerárquicos a nodos y enlaces\n const traverse = (nodeList: IEChartDataNode[], level: number, parentId?: string) => {\n for (const node of nodeList) {\n const category = node.category;\n const currentId = `${category}___${level}`;\n const value = getNodeValue(node);\n\n nodesMap.set(currentId, (nodesMap.get(currentId) || 0) + value);\n\n if (parentId) {\n const linkKey = `${parentId}--->${currentId}`;\n if (linksMap.has(linkKey)) {\n linksMap.get(linkKey)!.value += value;\n } else {\n linksMap.set(linkKey, {\n source: parentId,\n target: currentId,\n value: value,\n });\n }\n }\n\n if (node.children && node.children.length > 0) {\n traverse(node.children, level + 1, currentId);\n }\n }\n };\n\n // Comenzar el recorrido en el nivel 0\n traverse(data.source, 0);\n\n // al menos un nivel de links para dibujar.\n if (linksMap.size === 0) return;\n\n // Mapear nodos acumulados a la estructura requerida por ECharts (name y opcionalmente color, sin value redundante)\n const nodes = Array.from(nodesMap.keys()).map((currentId) => {\n const category = currentId.split(\"___\")[0];\n const nodeItem: { name: string; itemStyle?: { color: string } } = {\n name: currentId,\n };\n\n if (this.colorResolver) {\n const color = this.colorResolver({ name: category, data: nodeItem });\n if (color) {\n nodeItem.itemStyle = { color };\n }\n }\n\n return nodeItem;\n });\n\n const dynamicSerieOptions: SankeySeriesOption = {\n type: \"sankey\",\n orient: \"horizontal\", // De izquierda a derecha\n draggable: true,\n emphasis: {\n focus: \"adjacency\",\n },\n lineStyle: {\n color: \"source\",\n opacity: 0.25,\n curveness: 0.5,\n },\n label: {\n show: true,\n position: \"right\",\n fontFamily: \"'Inter', 'Roboto', 'Open Sans', sans-serif\",\n fontSize: 10,\n formatter: (params: any) => {\n // Remover el sufijo de nivel de la etiqueta visual\n return params.name.split(\"___\")[0];\n },\n },\n roam: true,\n data: nodes,\n links: Array.from(linksMap.values()),\n };\n\n const serie = merge({}, dynamicSerieOptions, overrides);\n\n if (this.colorResolver && !serie.itemStyle) {\n serie.itemStyle = {};\n }\n if (this.colorResolver && serie.itemStyle) {\n serie.itemStyle.color = this.colorResolver as any;\n }\n\n this.result.series = serie;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {\n };\n\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger || 'item', data, this.valueFormatter);\n \n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\"): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\"): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addLegend(): void {}\n addDataZoom(): void {}\n addDataset(data: IEChartData, opts?: any): void {}\n \n addCommons(): void {\n const opts = {\n palette: this.palette,\n };\n merge(this.result, BuilderUtils.getCommons(opts));\n }\n \n addGraphic(): void {}\n\n getResult(): EChartsOption {\n return this.result;\n }\n\n setValueFormatter(formatter: ChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n}\n","import { EChartsOption, HeatmapSeriesOption, CalendarComponentOption } from \"echarts\";\nimport { IEChartData, ChartValueFormatter, ChartColorResolver } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from \"../vs-echarts.interfaces\";\nimport { defaultValueFormatter } from \"../vs-echarts.config\";\nimport * as BuilderUtils from \"./builders.utils\";\nimport { merge } from \"lodash\";\nimport { CalendarOption } from \"echarts/types/dist/shared\";\nimport { VisualMapComponentOption } from \"echarts\";\n\nexport type SeriesConfigOpts = {\n calendar: CalendarOption,\n visualMap: VisualMapComponentOption,\n};\n\nexport class HeatmapCalendarBuilder implements IEChartBuilder<HeatmapSeriesOption, SeriesConfigOpts> {\n baseProduct: VSEChartProduct;\n result: EChartsOption = {};\n calendarHeight: number = 0;\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n constructor (\n baseProduct: VSEChartProduct,\n ) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n\n const commonsOverrides = BuilderUtils.getCommons(opts);\n merge(this.result, commonsOverrides, {grid: {}});\n }\n addDataset(data: IEChartData, opts?: any): void {}\n private addVisualmap(data: IEChartData) {}\n private addCalendar(data: IEChartData) {}\n addSeries(data: IEChartData, overrides: HeatmapSeriesOption, opts: SeriesConfigOpts): void { \n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n const calendarOverrides: CalendarOption = opts.calendar;\n const visualMapOverrides: VisualMapComponentOption = opts.visualMap;\n\n const measureDim = data.dimensions.find(d => d.name !== 'category');\n const dimKey = measureDim ? measureDim.name : '';\n\n const dataByYear = new Map<string, Array<[string, number]>>();\n let min = Infinity;\n let max = -Infinity;\n\n data.source.forEach((s) => {\n if (!s.category) return;\n const dateObj = new Date(s.category);\n if (isNaN(dateObj.getTime())) return;\n\n const year = dateObj.getFullYear().toString();\n const value = s[dimKey] !== undefined && s[dimKey] !== null ? Number(s[dimKey]) : 0;\n\n if (value < min) min = value;\n if (value > max) max = value;\n\n if (!dataByYear.has(year)) {\n dataByYear.set(year, []);\n }\n const formattedDate = dateObj.toISOString().split('T')[0];\n dataByYear.get(year)!.push([formattedDate, value]);\n });\n\n if (min === Infinity) min = 0;\n if (max === -Infinity) max = 0;\n\n const sortedYears = Array.from(dataByYear.keys()).sort();\n\n const calendars: CalendarOption[] = [];\n const series: HeatmapSeriesOption[] = [];\n\n sortedYears.forEach((year, index) => {\n calendars.push(merge({\n top: 120 + index * 180,\n range: year,\n }, calendarOverrides));\n\n series.push(merge({\n calendarIndex: index,\n data: dataByYear.get(year) || []\n }, overrides));\n });\n\n this.result.calendar = calendars;\n this.result.series = series;\n\n const visualMap: VisualMapComponentOption = merge({\n min: min,\n max: max,\n }, visualMapOverrides);\n\n if (this.palette && this.palette.length > 0) {\n visualMap.inRange = {\n color: this.palette\n };\n }\n\n this.result.visualMap = visualMap;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const mainDim = data.dimensions.filter(d => d.name != 'category')[0];\n const valueFormatter = this.valueFormatter;\n const dimkey = mainDim.name,\n dimAlias = mainDim.displayName;\n const tooltipFormatter = (params: any): string => {\n const date = params.value[params.encode['time']],\n value = params.value[params.encode['value']];\n \n return `<div style=\"text-align: center;\" ><b>${date}</b></br>${params.marker} ${mainDim.displayName}</br><b>${valueFormatter(value, dimkey)}</b></div>`;\n };\n\n const tooltipOptions = BuilderUtils.getTooltipOptions({\n trigger: 'item',\n formatter: tooltipFormatter,\n });\n\n this.result.tooltip = tooltipOptions;\n }\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type?: \"category\" | \"value\"): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type?: \"category\" | \"value\"): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addLegend(): void {}\n\n addGraphic(): void {}\n addDataZoom(): void {}\n setValueFormatter(formatter: ChartValueFormatter): void {\n this.valueFormatter = formatter;\n }\n setPalette(palette: string[]): void {\n this.palette = palette;\n }\n setColorResolver(resolver: ChartColorResolver): void {\n this.colorResolver = resolver;\n }\n getResult(): EChartsOption {\n return this.result;\n }\n}","import { BarSeriesOption, FunnelSeriesOption, LineSeriesOption, ScatterSeriesOption, SeriesOption, SunburstSeriesOption, SankeySeriesOption, PieSeriesOption, BoxplotSeriesOption, HeatmapSeriesOption, VisualMapComponentOption } from \"echarts\";\nimport { ChartColorResolver, ChartValueFormatter, IEChartData, IOptionsOverridesWrapper } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder } from \"../vs-echarts.interfaces\";\nimport { merge } from \"lodash\";\nimport { BoxPlotBuilder, BoxPlotBuilderSeriesConfigOpts } from \"./boxplot.builder\";\nimport { EChartBuilder, EChartBuilderSeriesConfigOpts, EChartBuilderSeriesOverrides } from \"./echart.builder\";\nimport { RingBuilder } from \"./ring.builder\";\nimport { PieBuilder } from \"./pie.builder\";\nimport { FunnelBuilder } from \"./funnel.builder\";\nimport { SunburstBuilder } from \"./sunburst.builder\";\nimport { SankeyBuilder } from \"./sankey.builder\";\nimport { HeatmapCalendarBuilder, SeriesConfigOpts } from \"./heatmapCalendar.builder\";\nimport { CalendarOption } from \"echarts/types/dist/shared\";\n\nexport type MakeOpts = {\n valueFormatter?: ChartValueFormatter,\n palette?: string[],\n colorResolver?: ChartColorResolver,\n axisTypes?: {\n x: 'category'|'value';\n y: 'value'|'category';\n },\n};\n\nexport type MakeBarOpts = MakeOpts;\nexport type MakeLineOpts = MakeOpts;\nexport type MakeScatterOpts = MakeOpts;\nexport type MakeSunburstOpts = MakeOpts;\nexport type MakeBoxplotOpts = MakeOpts & {}\nexport type MakeHeatmapCalendarOpts = MakeOpts & {};\n\n/**\n * Director de Builds.\n */\nexport class VSECDirector {\n\n private builder: IEChartBuilder = undefined!;\n\n constructor(builder: IEChartBuilder) {\n this.builder = builder;\n }\n\n public makeBar(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBarOpts = {}\n ) {\n if (this.builder instanceof EChartBuilder == false) { \n return; \n };\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as SeriesOption & BarSeriesOption & LineSeriesOption & SunburstSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n const seriesOptions: EChartBuilderSeriesConfigOpts = { axisTypes };\n this.builder.addSeries(data, seriesOverrides, seriesOptions);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeBarRadial(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBarOpts = {}\n ) {\n if (this.builder instanceof EChartBuilder == false) {\n return;\n };\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as EChartBuilderSeriesOverrides, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n const seriesOptions: EChartBuilderSeriesConfigOpts = { axisTypes, coordinateSystem: 'polar' };\n this.builder.addSeries(data, seriesOverrides, seriesOptions);\n this.builder.addPolar();\n this.builder.addAngleAxis(data, overrides['axis']);\n this.builder.addRadiusAxis(data, overrides['axis']);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeLine(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeLineOpts = {}\n ) {\n if (this.builder instanceof EChartBuilder == false) {\n return;\n };\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as EChartBuilderSeriesOverrides, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n const seriesOptions: EChartBuilderSeriesConfigOpts = { axisTypes };\n this.builder.addSeries(data, seriesOverrides, seriesOptions);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeScatter(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeScatterOpts = {}\n ) {\n if (this.builder instanceof EChartBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as EChartBuilderSeriesOverrides, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n const seriesOptions: EChartBuilderSeriesConfigOpts = { axisTypes };\n this.builder.addSeries(data, seriesOverrides, seriesOptions);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeRing(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if (this.builder instanceof RingBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: PieSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as PieSeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addGraphic();\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makePie(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if (this.builder instanceof PieBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: PieSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as PieSeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeFunnel(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if(this.builder instanceof FunnelBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: FunnelSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as FunnelSeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeSunburst(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if(this.builder instanceof SunburstBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n \n const product = this.builder.baseProduct;\n const seriesOverrides: SunburstSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as SunburstSeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addTooltip(data, overrides.tooltip);\n }\n\n public makeSankey(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if (this.builder instanceof SankeyBuilder == false) {\n return;\n };\n \n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: SankeySeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as SankeySeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addTooltip(data, overrides.tooltip);\n }\n\n public makeBoxplot(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBoxplotOpts = {}) {\n if (this.builder instanceof BoxPlotBuilder == false) {\n return;\n }\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'value',\n y: 'category',\n },\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: BoxplotSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as BoxplotSeriesOption;\n\n // chart components\n this.builder.addCommons();\n const configOpts: BoxPlotBuilderSeriesConfigOpts = { axisTypes };\n this.builder.addDataset(data);\n this.builder.addSeries(data, seriesOverrides, configOpts);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addDataZoom();\n }\n\n public makeHeatmapCalendar(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeHeatmapCalendarOpts = {}) {\n if (this.builder instanceof HeatmapCalendarBuilder == false) {\n return;\n }\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'value',\n y: 'category',\n },\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: HeatmapSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as HeatmapSeriesOption;\n\n // chart components\n this.builder.addCommons();\n const seriesConfigOpts: SeriesConfigOpts = {\n calendar: product.baseOptions.calendar as CalendarOption,\n visualMap: product.baseOptions.visualMap as VisualMapComponentOption,\n };\n this.builder.addSeries(data, seriesOverrides, seriesConfigOpts);\n this.builder.addTooltip(data, overrides.tooltip);\n }\n\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { NGXEchartsSelectChangeEventData, VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { RingBuilder } from '../../builders/ring.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { PieSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n/**\n * EchartsRingComponent\n * \n * Especialista en visualización de tipo Ring. Soporta multi-medidas y KPI central.\n * @see {@link vs-echarts/docs/charts/ring-patterns.md}\n */\n@Component({\n selector: 'vs-echarts-ring',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-ring.html',\n styleUrls: ['./echarts-ring.scss'],\n})\nexport class EchartsRingComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: PieSeriesOption = {\n type: 'pie',\n center: ['50%', '50%'],\n avoidLabelOverlap: true,\n minAngle: 3,\n selectedMode: 'single',\n selectedOffset: 4,\n itemStyle: {\n borderColor: '#fff',\n },\n label: { show: false },\n emphasis: { \n scale: true,\n scaleSize: 2,\n },\n select: {\n itemStyle: {\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n borderWidth: 1,\n shadowBlur: 4,\n },\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n }\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'ring',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder = new RingBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n \n private lastSelectedSeriesIndex: number | null = null;\n private lastSelectedDataIndex: number | null = null;\n private selectedPercent: string | null = null;\n\n private currentGraphicText: string = '';\n\n constructor() {\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeRing(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n // Reset selection only if data changed\n if (changes['data']) {\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentGraphicText = '';\n }\n super.onInputChanges(changes);\n }\n\n /**\n * Maneja clics en los sectores del ring.\n * Soporta múltiples series (anillos) y actualiza el KPI central.\n */\n override onChartClick(event: any): void {\n if (this.chartInstance && event && event.dataIndex !== undefined) {\n const isSameSelection = \n event.seriesIndex === this.lastSelectedSeriesIndex && \n event.dataIndex === this.lastSelectedDataIndex;\n\n if (isSameSelection) {\n // Toggle OFF\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.setGraphicText('');\n } else {\n // SELECT\n this.lastSelectedSeriesIndex = event.seriesIndex;\n this.lastSelectedDataIndex = event.dataIndex;\n this.selectedPercent = (event.percent !== undefined) ? event.percent + '%' : '';\n this.setGraphicText(this.selectedPercent);\n }\n\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n\n onChartMouseOver(event: any): void {\n if (this.selectedPercent === null && event && event.percent !== undefined) {\n this.setGraphicText(event.percent + '%');\n }\n }\n\n onChartMouseOut(event: any): void {\n if (this.selectedPercent === null) {\n this.setGraphicText('');\n }\n }\n\n /**\n * Actualiza el texto del Graphic central y persiste la selección en el modelo de opciones.\n */\n private setGraphicText(text: string): void {\n this.currentGraphicText = text;\n // Persistencia de GRAPHIC (KPI central)\n this.chartInstance?.setOption(\n {\n graphic: {\n style: {\n text: this.currentGraphicText,\n opacity: this.currentGraphicText ? 1 : 0,\n }\n }\n }\n );\n }\n\n\n}\n","<div class=\"echarts-container\" \n echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event, { fixPieDataIndexInside: true })\"\n></div>\n ","import { Component } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { PieBuilder } from '../../builders/pie.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { PieSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n/**\n * EchartsPieComponent\n * \n * Especialista en visualización de tipo Pie (Torta y Anillos concéntricos).\n * La primera serie se dibuja como un gráfico de torta tradicional (lleno) y\n * las subsecuentes como anillos concéntricos alrededor.\n */\n@Component({\n selector: 'vs-echarts-pie',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-pie.html',\n styleUrls: ['./echarts-pie.scss'],\n})\nexport class EchartsPieComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: PieSeriesOption = {\n type: 'pie',\n center: ['50%', '50%'],\n avoidLabelOverlap: true,\n minAngle: 3,\n selectedMode: 'single',\n selectedOffset: 4,\n emphasis: { \n scale: true,\n scaleSize: 2,\n },\n select: {\n itemStyle: {\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n borderWidth: 1,\n shadowBlur: 4,\n },\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n };\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'pie',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder = new PieBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n\n constructor() {\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makePie(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event, { fixPieDataIndexInside: true })\"\n></div>\n","import { Component } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { FunnelBuilder } from '../../builders/funnel.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { FunnelSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n/**\n * EchartsFunnelComponent\n * \n * Component for Funnel visualization. Supports single and multiple measures.\n */\n@Component({\n selector: 'vs-echarts-funnel',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-funnel.html',\n styleUrls: ['./echarts-funnel.scss'],\n})\nexport class EchartsFunnelComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: FunnelSeriesOption = {\n type: 'funnel',\n left: '10%',\n width: '80%',\n minSize: '0.01%',\n maxSize: '100%',\n sort: 'descending',\n gap: 2,\n label: {\n show: true,\n position: 'inside'\n },\n labelLine: {\n show: false\n },\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 1\n },\n emphasis: {\n label: {\n fontSize: 16\n }\n },\n selectedMode: 'single',\n select: {\n label: {\n fontSize: 16\n },\n itemStyle: {\n borderWidth: 1,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n },\n };\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'funnel',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n\n protected builder = new FunnelBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n \n constructor() {\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeFunnel(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event, { fixPieDataIndexInside: true })\"\n></div>\n","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { MakeBarOpts, VSECDirector } from '../../builders/director';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { BarSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport abstract class EchartsBarComponent extends BaseEchartsComponent {\n\n /**\n * Opciones escenciales inmutables estaticas comunes a todos los charts de barras.\n */\n protected baseSeriesOptions: BarSeriesOption = {\n type: 'bar',\n barGap: '10%',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n itemStyle: {\n borderRadius: [4,4,0,0],\n },\n stack: undefined,\n emphasis: {\n focus: 'none'\n },\n showBackground: true,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)' // gris claro\n },\n selectedMode: 'single',\n select: {\n itemStyle: {\n borderWidth: 1,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n },\n label: {\n show: false,\n position: 'top',\n }\n };\n\n /** variante de producto base/inicial para el builder. \n * \n * Utilizar para crear una variante (extender) un base producto. \n */\n protected abstract variantBaseProduct: VSEChartProduct;\n\n // va a tener que estar en el base como \"abstract\".\n protected baseProduct: VSEChartProduct = {\n chartKey: 'bar',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n }\n\n protected builder = new EChartBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n\n constructor() {\n super();\n }\n\n protected make(): void {\n const makeBarOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeBarOpts);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { BarSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-hbar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport class EChartsHBarComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n itemStyle: {\n borderRadius: [0,4,4,0],\n }\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'hBar',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(): void {\n const makeOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n axisTypes: {\n x: 'value',\n y: 'category',\n },\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-stacked-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport class EChartsBarStackedComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'barStacked',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-hbar-stacked',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport class EChartsHBarStackedComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'hBarStacked',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(): void {\n const makeOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n axisTypes: {\n x: 'value',\n y: 'category',\n },\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-bar-stacked-radial',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport class EChartsBarStackedRadialComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n },\n coordinateSystem: 'polar',\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'barStackedRadial',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(): void {\n const makeOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeBarRadial(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport * as EChartsOptions from '../../vs-echarts.utils';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { MakeLineOpts, VSECDirector } from '../../builders/director';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { LineSeriesOption } from 'echarts';\nimport { applyLineSelectionStyle } from './echarts-line.utils';\n\n@Component({\n selector: 'vs-echarts-line',\n templateUrl: './echarts-line.html',\n styleUrl: './echarts-line.scss',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ]\n})\nexport abstract class EchartsLineComponent extends BaseEchartsComponent {\n protected baseSeriesOptions: LineSeriesOption = {\n type: 'line',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n smooth: true,\n smoothMonotone: 'x',\n symbol: 'emptyCircle',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 4,\n shadowOffsetY: 2,\n },\n lineStyle: {\n width: 2,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 8,\n shadowOffsetY: 6,\n cap: 'round',\n join: 'round',\n },\n emphasis: {\n focus: 'none',\n lineStyle: {\n width: 4,\n shadowBlur: 10,\n }\n },\n selectedMode: 'single',\n select: {\n itemStyle: {\n color: 'rgba(255, 255, 255, 1)',\n borderCap: 'round',\n borderWidth: 8,\n },\n },\n }\n protected baseProduct: VSEChartProduct = {\n chartKey: 'line',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder: EChartBuilder = new EChartBuilder(this.baseProduct);\n protected director: VSECDirector = new VSECDirector(this.builder);\n /** variante de producto base/inicial para el builder. \n * \n * Utilizar para crear una variante (extender) un base producto. \n */\n protected abstract variantBaseProduct: VSEChartProduct;\n \n constructor(){\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeLineOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeLine(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { EchartsLineComponent } from \"./echarts-line\";\nimport { LineSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-area',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-line.html',\n styleUrls: ['./echarts-line.scss'],\n})\nexport class EChartsAreaComponent extends EchartsLineComponent {\n\n private variantSeriesOptionsBase: LineSeriesOption = merge(this.baseSeriesOptions, {\n smooth: true,\n areaStyle: {},\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'area',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { EchartsLineComponent } from \"./echarts-line\";\nimport { LineSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-area-stack',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-line.html',\n styleUrls: ['./echarts-line.scss'],\n})\nexport class EChartsAreaStackComponent extends EchartsLineComponent {\n\n private variantSeriesOptionsBase: LineSeriesOption = merge(this.baseSeriesOptions, {\n smooth: true,\n areaStyle: {},\n stack: 'total',\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'areaStack',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { MakeScatterOpts, VSECDirector } from '../../builders/director';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { ScatterSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n@Component({\n selector: 'vs-echarts-scatter',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-scatter.html',\n styleUrls: ['./echarts-scatter.scss'],\n})\nexport abstract class EchartsScatterComponent extends BaseEchartsComponent {\n\n /**\n * Opciones esenciales inmutables estáticas comunes a todos los charts de dispersión.\n */\n protected baseSeriesOptions: ScatterSeriesOption = {\n type: 'scatter',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n symbol: 'circle',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowBlur: 4,\n shadowOffsetY: 2,\n },\n emphasis: {\n focus: 'none',\n scale: true,\n },\n selectedMode: 'single',\n select: {\n label: {\n show: true,\n },\n itemStyle: {\n borderWidth: 2,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n },\n label: {\n show: false,\n position: 'top',\n }\n };\n\n /** variante de producto base/inicial para el builder. \n * \n * Utilizar para crear una variante (extender) un base producto. \n */\n protected abstract variantBaseProduct: VSEChartProduct;\n\n protected baseProduct: VSEChartProduct = {\n chartKey: 'scatter',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n\n protected builder = new EChartBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n\n constructor() {\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeScatterOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeScatter(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { BaseEchartsComponent } from \"../base-echart.component\";\nimport { SunburstSeriesOption } from \"echarts\";\nimport { VSECDirector, MakeSunburstOpts } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { SunburstBuilder } from \"../../builders/sunburst.builder\";\n\n@Component({\n selector: 'vs-echarts-sunburst',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-sunburst.html',\n styleUrls: ['./echarts-sunburst.scss'],\n})\nexport class EChartsSunburstComponent extends BaseEchartsComponent {\n protected baseSeriesOptions: SunburstSeriesOption = {\n type: 'sunburst',\n radius: [0, '85%'],\n sort: undefined,\n emphasis: {\n focus: 'ancestor'\n },\n levels: [\n {},\n {\n r0: '15%',\n itemStyle: {\n borderWidth: 2\n },\n label: {\n rotate: 'tangential'\n }\n },\n ]\n };\n protected baseProduct: VSEChartProduct = {\n chartKey: 'sunburst',\n baseOptions: {\n series: this.baseSeriesOptions,\n },\n };\n protected builder: SunburstBuilder = new SunburstBuilder(this.baseProduct);\n protected director: VSECDirector = new VSECDirector(this.builder);\n protected make(): void {\n const makeOpts: MakeSunburstOpts = {\n palette: this.palette,\n colorResolver: this.colorResolver,\n valueFormatter: this.valueFormatter,\n };\n this.director.makeSunburst(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n></div>","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { BaseEchartsComponent } from \"../base-echart.component\";\nimport { SankeySeriesOption } from \"echarts\";\nimport { VSECDirector, MakeOpts } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { SankeyBuilder } from \"../../builders/sankey.builder\";\n\n@Component({\n selector: 'vs-echarts-sankey',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-sankey.html',\n styleUrls: ['./echarts-sankey.scss'],\n})\nexport class EchartsSankeyComponent extends BaseEchartsComponent {\n protected baseSeriesOptions: SankeySeriesOption = {\n type: 'sankey',\n orient: 'horizontal',\n draggable: true,\n emphasis: {\n focus: 'adjacency'\n },\n lineStyle: {\n color: 'source',\n opacity: 0.25,\n curveness: 0.5\n },\n label: {\n show: true,\n position: 'right',\n fontFamily: \"'Inter', 'Roboto', 'Open Sans', sans-serif\",\n fontSize: 10\n }\n };\n\n protected baseProduct: VSEChartProduct = {\n chartKey: 'sankey',\n baseOptions: {\n series: this.baseSeriesOptions,\n },\n };\n\n protected builder: SankeyBuilder = new SankeyBuilder(this.baseProduct);\n protected director: VSECDirector = new VSECDirector(this.builder);\n\n protected make(): void {\n const makeOpts: MakeOpts = {\n palette: this.palette,\n colorResolver: this.colorResolver,\n valueFormatter: this.valueFormatter,\n };\n this.director.makeSankey(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n></div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { BaseEchartsComponent } from \"../base-echart.component\";\nimport { BoxplotSeriesOption } from \"echarts\";\nimport { IEChartBuilder, VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { MakeBoxplotOpts, MakeOpts, VSECDirector } from \"../../builders/director\";\nimport { BoxPlotBuilder } from \"../../builders/boxplot.builder\";\n\n@Component({\n selector: 'vs-echarts-hboxplot',\n templateUrl: 'echarts-hboxplot.html',\n styleUrls: [\n 'echarts-hboxplot.scss',\n ],\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n})\nexport class EChartsHBoxplotComponent extends BaseEchartsComponent {\n\n protected baseSeriesOptions: BoxplotSeriesOption = {\n type: 'boxplot',\n itemStyle: {\n color: '#b8c5f2'\n },\n };\n\n protected baseProduct: VSEChartProduct = {\n chartKey: 'hBoxplot',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n\n protected builder: IEChartBuilder<BoxplotSeriesOption> = new BoxPlotBuilder(this.baseProduct);\n protected override director: VSECDirector = new VSECDirector(this.builder);\n protected override make(): void {\n const makeOpts: MakeBoxplotOpts = {\n palette: this.palette,\n colorResolver: this.colorResolver,\n valueFormatter: this.valueFormatter,\n axisTypes: {\n x: 'value',\n y: 'category',\n },\n };\n this.director.makeBoxplot(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n","import { CommonModule } from \"@angular/common\";\nimport { BaseEchartsComponent } from \"../base-echart.component\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { Component } from \"@angular/core\";\nimport { HeatmapSeriesOption, SeriesOption, VisualMapComponentOption } from \"echarts\";\nimport { MakeHeatmapCalendarOpts, VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct, IEChartBuilder } from \"../../vs-echarts.interfaces\";\nimport { HeatmapCalendarBuilder } from \"../../builders/heatmapCalendar.builder\";\nimport { EChartsTokens } from \"../../vs-echarts.utils\";\n\n@Component({\n selector: 'vs-echarts-heatmapCalendar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-heatmapCalendar.html',\n styleUrls: ['./echarts-heatmapCalendar.scss'],\n})\nexport class EChartsHeatmapCalendar extends BaseEchartsComponent {\n\n /** aires para el calculo de resize y posicionamientos de distintos componentes */\n private calendarPaddings = {\n visualMapTop: 5,\n };\n\n protected override baseSeriesOptions: HeatmapSeriesOption = {\n type: 'heatmap',\n coordinateSystem: 'calendar',\n selectedMode: 'single',\n select: {\n itemStyle: {\n borderWidth: 2,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n }\n }; \n protected override baseProduct: VSEChartProduct = {\n chartKey: 'heatmapCalendar',\n baseOptions: {\n visualMap: {\n calculable: true,\n orient: 'horizontal',\n left: 'center',\n top: this.calendarPaddings.visualMapTop,\n formatter: (dv) => {\n const value = dv ?? '';\n return value.toLocaleString();\n },\n }, // dinamico\n calendar: {\n cellSize: ['auto', 20],\n right: 5,\n left: 60,\n yearLabel: { show: true },\n dayLabel: { firstDay: 1 },\n },\n series: this.baseSeriesOptions, // dinamico, uno por año.\n }\n };\n protected override builder: IEChartBuilder<HeatmapSeriesOption, any, any> = new HeatmapCalendarBuilder(this.baseProduct);\n protected override director: VSECDirector = new VSECDirector(this.builder);\n protected override make(): void {\n const makeOpts: MakeHeatmapCalendarOpts = {\n palette: this.palette,\n valueFormatter: this.valueFormatter,\n colorResolver: this.colorResolver,\n }\n this.director.makeHeatmapCalendar(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override afterSetOptionsHook: (() => void) = () => {\n if (!this.chartInstance) return;\n\n let chartHeight = 0;\n const gElements = this.chartInstance.getDom().getElementsByTagName(\"g\");\n for (let i = 0; i < gElements.length; i++) {\n const ge = gElements[i];\n const geHeight = ge.getBBox().height;\n if (chartHeight < geHeight) {\n chartHeight = geHeight;\n }\n }\n\n \n const { visualMapTop } = this.calendarPaddings;\n /**\n * aire inferior para el svg maestro. \n */\n const svgBottom = 5;\n this.chartInstance.resize({ height: chartHeight + visualMapTop + svgBottom});\n };\n\n override onChartClick(event: any): void {\n if (event.componentType === 'series') {\n const dimension = this.data.dimensions.filter(d => d.name != 'category')[0];\n const dimensionAlias = dimension.displayName;\n const dimensionKey = dimension.name;\n const itemValue = event.value[event.encode['value']];\n const date = event.value[event.encode['time']];\n\n // opero event para que sea compatible con el de base\n event.value = {\n category: date,\n [dimensionKey]: itemValue,\n }\n event.name = date;\n event.seriesName = dimensionAlias;\n\n super.onChartClick(event);\n }\n }\n\n}","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>","// Interfaces de Inputs de Base EChart Component // \n\nimport { BarSeriesOption, LineSeriesOption, PieSeriesOption } from \"echarts\";\nimport { PolarOption, TooltipOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { IAreaOptionsOverrides, IAreaStackOptionsOverrides, IBarStackedOptionsOverrides, IBarStackedRadialOptionsOverrides, IHBarOptionsOverrides, IHBarStackedOptionsOverrides, IHBoxplotOptionsOverrides, IOptionsOverrides } from \"./vs-echarts.interfaces\";\n\n/**\n * IEChartDataNode\n * \n * Representa un nodo/fila en el arreglo de objetos jerárquico.\n */\nexport interface IEChartDataNode {\n category: string;\n [key: string]: any; // Claves de series/medidas y sus valores numéricos\n children?: IEChartDataNode[]; // Subfilas recursivas jerárquicas\n}\n\nexport interface IEChartDimension {\n name: string;\n displayName?: string;\n}\n\n/**\n * IEChartData\n * \n * Interfaz unificada para el paso de datos basados en dataset a componentes de ECharts.\n * \n */\nexport interface IEChartData {\n dimensions: IEChartDimension[];\n source: IEChartDataNode[];\n}\n\n/**\n * ChartValueFormatter\n * \n * Callback para formatear los valores numéricos de las celdas/series.\n */\nexport type ChartValueFormatter = (value: number, key: string) => string;\n\n/**\n * ChartColorResolver\n * \n * Callback para determinar el color de un elemento gráfico basado en sus parámetros.\n */\nexport type ChartColorResolver = (params: any) => string;\n\n\n/**\n * wrapper de options overrides para variantes de graficos\n */\nexport interface IOptionsOverridesWrapper extends IOptionsOverrides {\n // commons //\n // end //\n // concrete options //\n /** area options overrides */\n area: IAreaOptionsOverrides;\n /** area stack options overrides */\n areaStack: IAreaStackOptionsOverrides;\n barStacked: IBarStackedOptionsOverrides;\n barStackedRadial: IBarStackedRadialOptionsOverrides;\n hBar: IHBarOptionsOverrides;\n hBarStacked: IHBarStackedOptionsOverrides;\n hBoxplot: IHBoxplotOptionsOverrides; \n // end //\n}\n\n// TopLevelFormatterParams","import { BarSeriesOption, EChartsOption, FunnelSeriesOption, LineSeriesOption, PieSeriesOption, ScatterSeriesOption, SeriesOption, SunburstSeriesOption, SankeySeriesOption } from \"echarts\";\nimport { ChartValueFormatter, ChartColorResolver, IEChartData, IOptionsOverridesWrapper } from \"./vs-echarts-api.interfaces\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { TooltipOption } from \"echarts/types/dist/shared\";\nimport { BoxplotSeriesOption } from \"echarts\";\nimport { HeatmapSeriesOption } from \"echarts\";\n\ntype ChartKey = keyof Omit<IOptionsOverridesWrapper, \"axis\" | \"tooltip\">;\n\nexport type ISeriesLayoutOpts = {\n coordinateSystem?: 'cartesian2d' | 'polar';\n axisTypes?: {\n x: 'category' | 'value';\n y: 'category' | 'value';\n };\n};\n\n/** los recibira el director\n * \n */\nexport type VSEChartProduct = {\n chartKey: ChartKey;\n baseOptions: EChartsOption;\n}\n\nexport interface IEChartBuilder<SeriesType = SeriesOption, SeriesConfigOptions = any, DatasetConfigOptions = any> {\n /** producto base */\n baseProduct: VSEChartProduct;\n\n reset(): void;\n\n // add components\n addDataset(data: IEChartData, opts?: DatasetConfigOptions): void;\n addSeries(data: IEChartData, overrides: SeriesType, opts?: SeriesConfigOptions): void;\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void;\n addPolar(): void;\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type?: 'category'|'value'): void;\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type?: 'category'|'value'): void;\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void;\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void;\n addLegend(): void;\n addCommons(): void;\n addGraphic(): void;\n addDataZoom(): void;\n \n // add callbacks\n setValueFormatter(formatter: ChartValueFormatter): void;\n setPalette(palette: string[]): void;\n setColorResolver(resolver: ChartColorResolver): void;\n getResult(): EChartsOption;\n}\n\n\nexport type EChartClickType = 'cross-filter';\n\nexport interface IAreaOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\">>\n};\nexport interface IAreaStackOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\">>\n};\n\nexport interface IHBarOptionsOverrides extends IBarOptionsOverrides {\n // orientation: 'h';\n // series: IBarOptionsOverrides[\"series\"] & Required<Pick<IBarOptionsOverrides[\"series\"], \"itemStyle\">>\n};\n\nexport interface IHBarStackedOptionsOverrides extends IBarOptionsOverrides {\n // tooltip: IHBarOptionsOverrides[\"tooltip\"] & Required<Pick<IHBarOptionsOverrides[\"tooltip\"], \"trigger\">>;\n // series: IHBarOptionsOverrides[\"series\"] & Required<Pick<IHBarOptionsOverrides[\"series\"], \"emphasis\"|\"stack\">>\n} \n\nexport interface IHBoxplotOptionsOverrides extends IBoxplotOptionsOverrides {\n}\n\nexport interface IBarStackedOptionsOverrides extends IBarOptionsOverrides {\n // tooltip: IBarOptionsOverrides[\"tooltip\"] & Required<Pick<IBarOptionsOverrides[\"tooltip\"], \"trigger\">> \n // series: IBarOptionsOverrides[\"series\"] & Required<Pick<IBarOptionsOverrides[\"series\"], \"emphasis\"|\"stack\"|\"itemStyle\">>\n}\n\nexport interface IBarStackedRadialOptionsOverrides extends IBarStackedOptionsOverrides {\n // series: IBarStackedOptionsOverrides[\"series\"] & Required<Pick<IBarStackedOptionsOverrides[\"series\"], \"coordinateSystem\">>\n}\n\nexport type ChartOrientation = 'v' | 'h';\n\nexport interface ILineOptionsOverrides {\n series: Pick<LineSeriesOption, \"smooth\" | \"areaStyle\" | \"stack\">,\n}\n\nexport interface IBarOptionsOverrides {\n orientation?: ChartOrientation;\n // tooltip: Pick<TooltipOption, \"trigger\">,\n series: Pick<BarSeriesOption, \"itemStyle\"|\"emphasis\"|\"stack\"|\"showBackground\"|\"coordinateSystem\">;\n}\n\nexport interface IRingOptionsOverrides {\n series?: Partial<PieSeriesOption>;\n}\n\nexport interface IPieOptionsOverrides {\n series?: Partial<PieSeriesOption>;\n}\n\nexport interface IScatterOptionsOverrides {\n series?: Partial<ScatterSeriesOption>;\n}\n\nexport interface IFunnelOptionsOverrides {\n series?: Partial<FunnelSeriesOption>;\n}\n\nexport interface IHeatmapCalendarOptionsOverrides {\n series?: HeatmapSeriesOption;\n}\n\nexport interface ISunburstOptionsOverrides {\n series?: Partial<SunburstSeriesOption>;\n}\n\nexport interface ISankeyOptionsOverrides {\n series?: Partial<SankeySeriesOption>;\n}\n\nexport interface IBoxplotOptionsOverrides {\n series?: Partial<BoxplotSeriesOption>;\n}\n\nexport interface IAxisOptionsOverrides {\n categoryAxis: CategoryAxisBaseOption[];\n valueAxis: ValueAxisBaseOption[];\n} \n\nexport interface ITooltipOptionsOverrides extends Pick<TooltipOption, \"trigger\"> {\n}\n\n/**\n * VS-EChartsOptionsOverrides\n * \n * api opciones visuales disponibles\n */\nexport interface IOptionsOverrides {\n // commons //\n axis: IAxisOptionsOverrides\n tooltip: ITooltipOptionsOverrides;\n // end //\n // concrete options //\n /** line options overrides */\n line: ILineOptionsOverrides;\n /** bar options overrides */\n bar: IBarOptionsOverrides;\n /** ring options overrides */\n ring: IRingOptionsOverrides;\n /** pie options overrides */\n pie: IPieOptionsOverrides;\n /** scatter options overrides */\n scatter: IScatterOptionsOverrides;\n /** funnel options overrides */\n funnel: IFunnelOptionsOverrides;\n /** sunburst options overrides */\n sunburst: ISunburstOptionsOverrides;\n /** sankey options overrides */\n sankey: ISankeyOptionsOverrides;\n /** boxplot options overrides */\n hBoxplot: IHBoxplotOptionsOverrides;\n /** heatmap calendar options overrides */\n heatmapCalendar: IHeatmapCalendarOptionsOverrides;\n // end //\n}\n\nexport type NGXEchartsSelectChangeEventData = {\n type: string;\n fromAction: string;\n fromActionPayload: {\n dataIndexInside: number;\n dataType: unknown;\n isFromClick: boolean;\n seriesIndex: number;\n type: string;\n },\n isFromClick: boolean;\n selected: {dataIndex: number[], seriesIndex: number }[];\n escapeConnect: unknown;\n}\n\nexport type VSEchartsLocale =\n | 'ZH' | 'EN' | 'AR' | 'CS' | 'DE' | 'EL' | 'ES' | 'FA' | 'FI' | 'FR'\n | 'HU' | 'IT' | 'JA' | 'KO' | 'LV' | 'nb-NO' | 'NL' | 'PL' | 'PT-br'\n | 'RO' | 'RU' | 'SI' | 'SV' | 'TH' | 'TR' | 'UK' | 'VI';\n\nexport interface VSEchartsConfig {\n renderer?: 'canvas' | 'svg';\n locale?: VSEchartsLocale;\n}","/*\n * Public API Surface of echarts\n */\nexport { defaultOptionsOverrides, provideVSEcharts } from './lib/vs-echarts.config';\nexport * from './lib/vs-echarts-config.service';\nexport * from './lib/charts/echarts-ring/echarts-ring';\nexport * from './lib/charts/echarts-pie/echarts-pie';\nexport * from './lib/charts/echarts-funnel/echarts-funnel';\nexport * from './lib/charts/echarts-bar/echarts-bar';\nexport * from './lib/charts/echarts-bar/echarts-hBar';\nexport * from './lib/charts/echarts-bar/echarts-stackedBar';\nexport * from './lib/charts/echarts-bar/echarts-hBarStacked';\nexport * from './lib/charts/echarts-bar/echarts-barStackedRadial';\nexport * from './lib/charts/echarts-line/echarts-line';\nexport * from './lib/charts/echarts-line/echarts-area';\nexport * from './lib/charts/echarts-line/echarts-areaStack';\nexport * from './lib/charts/echarts-scatter/echarts-scatter';\nexport * from './lib/charts/echarts-sunburst/echarts-sunburst';\nexport * from './lib/charts/echarts-sankey/echarts-sankey';\nexport * from './lib/charts/echarts-hboxplot/echarts-hboxplot';\nexport * from './lib/charts/echarts-heatmapCalendar/echarts-heatmapCalendar';\nexport * from './lib/charts/base-echart.component';\nexport * from './lib/vs-echarts-api.interfaces';\nexport * from './lib/vs-echarts.interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["BuilderUtils.getCommons","BuilderUtils.getTooltipFormatter","BuilderUtils.getTooltipOptions","BuilderUtils.getLegendOptions","merge","BuilderUtils.getValueAxisOptions","BuilderUtils.getCategoryAxisOptions","BuilderUtils.mapHierarchicalData","BuilderUtils.getTreeDepth"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"visionaris-bruno-vs-echarts.mjs","sources":["../../../projects/vs-echarts/src/lib/vs-echarts-config.service.ts","../../../projects/vs-echarts/src/lib/vs-echarts.utils.ts","../../../projects/vs-echarts/src/lib/vs-echarts.config.ts","../../../projects/vs-echarts/src/lib/charts/base-echart.component.ts","../../../projects/vs-echarts/src/lib/builders/builders.utils.ts","../../../projects/vs-echarts/src/lib/builders/ring.builder.ts","../../../projects/vs-echarts/src/lib/builders/boxplot.builder.ts","../../../projects/vs-echarts/src/lib/builders/echart.builder.ts","../../../projects/vs-echarts/src/lib/builders/pie.builder.ts","../../../projects/vs-echarts/src/lib/builders/funnel.builder.ts","../../../projects/vs-echarts/src/lib/builders/sunburst.builder.ts","../../../projects/vs-echarts/src/lib/builders/sankey.builder.ts","../../../projects/vs-echarts/src/lib/builders/heatmapCalendar.builder.ts","../../../projects/vs-echarts/src/lib/builders/director.ts","../../../projects/vs-echarts/src/lib/charts/echarts-ring/echarts-ring.ts","../../../projects/vs-echarts/src/lib/charts/echarts-ring/echarts-ring.html","../../../projects/vs-echarts/src/lib/charts/echarts-pie/echarts-pie.ts","../../../projects/vs-echarts/src/lib/charts/echarts-pie/echarts-pie.html","../../../projects/vs-echarts/src/lib/charts/echarts-funnel/echarts-funnel.ts","../../../projects/vs-echarts/src/lib/charts/echarts-funnel/echarts-funnel.html","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-bar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-bar.html","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-hBar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-stackedBar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-hBarStacked.ts","../../../projects/vs-echarts/src/lib/charts/echarts-bar/echarts-barStackedRadial.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-line.html","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-area.ts","../../../projects/vs-echarts/src/lib/charts/echarts-line/echarts-areaStack.ts","../../../projects/vs-echarts/src/lib/charts/echarts-scatter/echarts-scatter.ts","../../../projects/vs-echarts/src/lib/charts/echarts-scatter/echarts-scatter.html","../../../projects/vs-echarts/src/lib/charts/echarts-sunburst/echarts-sunburst.ts","../../../projects/vs-echarts/src/lib/charts/echarts-sunburst/echarts-sunburst.html","../../../projects/vs-echarts/src/lib/charts/echarts-sankey/echarts-sankey.ts","../../../projects/vs-echarts/src/lib/charts/echarts-sankey/echarts-sankey.html","../../../projects/vs-echarts/src/lib/charts/echarts-hboxplot/echarts-hboxplot.ts","../../../projects/vs-echarts/src/lib/charts/echarts-hboxplot/echarts-hboxplot.html","../../../projects/vs-echarts/src/lib/charts/echarts-heatmapCalendar/echarts-heatmapCalendar.ts","../../../projects/vs-echarts/src/lib/charts/echarts-heatmapCalendar/echarts-heatmapCalendar.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":["import { Injectable, Inject } from '@angular/core';\nimport { VS_ECHARTS_CONFIG } from './vs-echarts.config';\nimport { VSEchartsConfig, VSEchartsLocale } from './vs-echarts.interfaces';\n\n// TODO: Exportar valores por defecto de vs-echarts.config.ts por este servicio y actualizar en logica de frontend.\n\nlet activeLocale: VSEchartsLocale | undefined = undefined;\n\nexport function getActiveLocale(): VSEchartsLocale | undefined {\n return activeLocale;\n}\n\nexport function setActiveLocale(locale: VSEchartsLocale | undefined): void {\n activeLocale = locale;\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class VSEchartsConfigService {\n private readonly mapping: Record<string, VSEchartsLocale> = {\n es: 'ES',\n en: 'EN',\n us: 'EN',\n de: 'DE',\n fr: 'FR',\n it: 'IT',\n pt: 'PT-br',\n br: 'PT-br',\n };\n\n constructor(\n @Inject(VS_ECHARTS_CONFIG) private vsEchartsConfig: VSEchartsConfig\n ) {\n if (this.vsEchartsConfig?.locale) {\n setActiveLocale(this.vsEchartsConfig.locale);\n }\n }\n\n setLocale(language: string): void {\n if (!language) {\n this.vsEchartsConfig.locale = 'ES';\n setActiveLocale('ES');\n return;\n }\n const echartsLocale = this.mapping[language.toLowerCase()] || 'ES';\n this.vsEchartsConfig.locale = echartsLocale;\n setActiveLocale(echartsLocale);\n }\n}\n","import { ChartValueFormatter } from \"./vs-echarts-api.interfaces\";\nimport { localeMapper, VS_ECHARTS_CONFIG } from \"./vs-echarts.config\";\nimport { NGXEchartsSelectChangeEventData, VSEchartsLocale } from \"./vs-echarts.interfaces\";\nimport { getActiveLocale } from \"./vs-echarts-config.service\";\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 sBorderColor: '#a0a0a0ff',\n sShadowColor: '#2e2e2e80',\n primaryColor: '#08B1D5',\n tooltipBg: 'rgba(255, 255, 255, 0.95)',\n defaultPalette: ['#08B1D5', '#2C3E50', '#F39C12', '#E74C3C', '#27AE60', '#8E44AD', '#3498DB', '#16A085', '#D35400', '#2980B9']\n};\n\n/**\n * Exposes the default Visionaris palette for internal fallbacks.\n */\nexport function getDefaultPalette(): string[] {\n return [...EChartsTokens.defaultPalette];\n}\n\n/** corrige inside data index cuando se filtran leyendas en graficos tipo 'pie'. \n * \n * En pie, cuando se filtran leyendas, no coinciden el 'inside data index'\n * con el 'selected data index'. El correcto deberia ser el 'inside data intex'\n * pero por algun motivo esto es distinto en este tipo de graficos.\n * \n * apache echarts version: 5.6.0\n * */\nexport const fixPieDataIndexInside = (e: NGXEchartsSelectChangeEventData) => {\n /** selected serie index */\n const ssi = e.fromActionPayload.seriesIndex;\n const selected = e.selected.find(sel => sel.seriesIndex == ssi);\n if (e.fromAction == 'unselect' || !selected) {\n return e;\n }\n const fixedDataIndex = selected.dataIndex[0]; // [0] por seleccion single;\n e.fromActionPayload.dataIndexInside = fixedDataIndex; // aplico corrección de index inside.\n\n return e;\n};\n\n/**\n * Retorna valor con formato local establecido por configuracion de biblioteca.\n * Utilizara el del navegador si el locale y activeLocale es indefinido.\n * @param value \n * @param opts \n * @returns \n */\nexport const valueToLocale = (\n value: number | bigint | Date | string,\n opts?: {\n locale?: VSEchartsLocale,\n }\n): string => {\n\tconst locale: VSEchartsLocale | undefined = opts?.locale ?? getActiveLocale();\n\tconst officialLocale = locale ? localeMapper[locale] : undefined;\n\n\t// 1. Si ya es una instancia de Date\n\tif (value instanceof Date) {\n\t\t\treturn value.toLocaleString(officialLocale);\n\t}\n\n\t// 2. Si es un string, intentamos ver si es una fecha válida\n\tif (typeof value === 'string') {\n\t\t\tconst parsedDate = Date.parse(value);\n\t\t\tif (!isNaN(parsedDate)) {\n\t\t\treturn new Date(parsedDate).toLocaleString(officialLocale);\n\t\t\t}\n\t\t\t// Si no era una fecha válida, devolvemos el string tal cual\n\t\t\treturn value;\n\t}\n\n\t// 3. Si es un número o bigint\n\tif (typeof value === 'number' || typeof value === 'bigint') {\n\t\t\treturn value.toLocaleString(officialLocale);\n\t}\n\n\t// Fallback por si llega algo inesperado (null, undefined, etc.)\n\treturn String(value);\n};\n\nexport const defaultValueFormatter: ChartValueFormatter = (value) => {\n\treturn valueToLocale(value);\n};","/// <reference path=\"./typings.d.ts\" />\nimport { provideEchartsCore } from 'ngx-echarts';\nimport * as echarts from 'echarts/core';\nimport { BarChart, LineChart, PieChart, ScatterChart, FunnelChart, SunburstChart, SankeyChart, BoxplotChart, HeatmapChart } from 'echarts/charts';\nimport {\n TooltipComponent,\n GridComponent,\n LegendComponent,\n GraphicComponent,\n PolarComponent,\n DatasetComponent,\n DataZoomComponent,\n VisualMapComponent,\n CalendarComponent,\n} from 'echarts/components';\nimport { CanvasRenderer, SVGRenderer } from 'echarts/renderers';\nimport { EChartsTokens } from './vs-echarts.utils';\nimport { ChartValueFormatter, IOptionsOverridesWrapper } from './vs-echarts-api.interfaces';\nimport { InjectionToken } from '@angular/core';\nimport { VSEchartsConfig, VSEchartsLocale } from './vs-echarts.interfaces';\n\n// ECharts locale imports\nimport langES from 'echarts/lib/i18n/langES.js';\nimport langDE from 'echarts/lib/i18n/langDE.js';\nimport langFR from 'echarts/lib/i18n/langFR.js';\nimport langIT from 'echarts/lib/i18n/langIT.js';\nimport langPTbr from 'echarts/lib/i18n/langPT-br.js';\n\nexport const VS_ECHARTS_CONFIG = new InjectionToken<VSEchartsConfig>('VS_ECHARTS_CONFIG', {\n providedIn: 'root',\n factory: () => ({ \n renderer: 'svg',\n locale: 'AR', \n }),\n});\n\n/**\n * Inicialización centralizada de ECharts para evitar duplicación y efectos secundarios \n * no controlados en componentes standalone.\n */\nexport function initializeEcharts() {\n echarts.use([\n BarChart,\n PieChart,\n LineChart,\n ScatterChart,\n FunnelChart,\n SunburstChart,\n SankeyChart,\n BoxplotChart,\n TooltipComponent,\n GridComponent,\n HeatmapChart,\n CalendarComponent,\n LegendComponent,\n CanvasRenderer,\n SVGRenderer,\n GraphicComponent,\n PolarComponent,\n DatasetComponent,\n DataZoomComponent,\n VisualMapComponent,\n ]);\n\n // Register additional locales in ECharts\n echarts.registerLocale('ES', langES);\n echarts.registerLocale('DE', langDE);\n echarts.registerLocale('FR', langFR);\n echarts.registerLocale('IT', langIT);\n echarts.registerLocale('PT-br', langPTbr);\n echarts.registerLocale('PT', langPTbr);\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\n// 2. Diccionario de mapeo interno a códigos BCP 47 oficiales\nexport const localeMapper: Record<VSEchartsLocale, string> = {\n ZH: 'zh-CN', // Chino Simplificado (puedes cambiarlo a zh-TW si prefieres)\n EN: 'en-US', // Inglés (o en-GB)\n AR: 'ar-EG', // Árabe\n CS: 'cs-CZ', // Checo\n DE: 'de-DE', // Alemán\n EL: 'el-GR', // Griego\n ES: 'es-ES', // Español\n FA: 'fa-IR', // Persa\n FI: 'fi-FI', // Finlandés\n FR: 'fr-FR', // Francés\n HU: 'hu-HU', // Húngaro\n IT: 'it-IT', // Italiano\n JA: 'ja-JP', // Japonés\n KO: 'ko-KR', // Coreano\n LV: 'lv-LV', // Letón\n 'nb-NO': 'nb-NO', // Noruego Bokmål (ya es estándar)\n NL: 'nl-NL', // Neerlandés\n PL: 'pl-PL', // Polaco\n 'PT-br': 'pt-BR', // Portugués de Brasil (corregido a camelCase estándar)\n RO: 'ro-RO', // Rumano\n RU: 'ru-RU', // Ruso\n SI: 'si-LK', // Cingalés\n SV: 'sv-SE', // Sueco\n TH: 'th-TH', // Tailandés\n TR: 'tr-TR', // Turco\n UK: 'uk-UA', // Ucraniano\n VI: 'vi-VN', // Vietnamita\n};\n\n// 3. Función formateadora universal (para números)\nexport function formatNumberByLocale(\n value: number,\n customLocale: VSEchartsLocale,\n options?: Intl.NumberFormatOptions\n): string {\n // Obtenemos el locale oficial, si no existe por alguna razón, usamos el del sistema\n const officialLocale = localeMapper[customLocale] || undefined;\n\n return value.toLocaleString(officialLocale, options);\n}\n\n// 4. Función formateadora universal (para fechas)\nexport function formatDateByLocale(\n date: Date,\n customLocale: VSEchartsLocale,\n options?: Intl.DateTimeFormatOptions\n): string {\n const officialLocale = localeMapper[customLocale] || undefined;\n return date.toLocaleString(officialLocale, options);\n}\n\nexport function defaultOptionsOverrides(): IOptionsOverridesWrapper {\n return {\n tooltip: {\n trigger: 'item',\n },\n axis: {\n categoryAxis: [\n {\n axisLabel: {\n fontFamily: EChartsTokens.fontFamily,\n width: 100,\n fontSize: 9,\n margin: 12,\n color: EChartsTokens.axisColor,\n fontWeight: 'normal',\n }\n }\n ],\n valueAxis: [],\n },\n \n line: {\n series: {\n smooth: true,\n },\n },\n area: {\n series: {\n smooth: true,\n },\n },\n areaStack: {\n series: {\n smooth: true,\n },\n },\n bar: {\n series: {\n showBackground: true,\n },\n },\n barStacked: {\n series: {\n showBackground: false,\n }\n },\n barStackedRadial: {\n series: {\n showBackground: false,\n }\n },\n hBar: {\n series: {\n showBackground: true,\n }\n },\n hBarStacked: {\n series: {\n showBackground: false,\n }\n },\n ring: {\n series: {}\n },\n pie: {\n series: {}\n },\n scatter: {\n series: {}\n },\n funnel: {\n series: {}\n },\n sunburst: {\n series: {},\n },\n sankey: {\n series: {}\n },\n hBoxplot: {\n series: {}\n },\n heatmapCalendar: {\n series: {},\n },\n }\n}\n\nexport { defaultValueFormatter } from './vs-echarts.utils';","import { Input, OnChanges, SimpleChanges, ViewChild, ElementRef, Output, EventEmitter, OnDestroy, Directive, OnInit, inject } from '@angular/core';\nimport { ReplaySubject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport type * as echarts from 'echarts';\nimport { IEChartData, ChartValueFormatter, ChartColorResolver, IOptionsOverridesWrapper } from '../vs-echarts-api.interfaces';\nimport { EChartClickType, VSEChartProduct, IEChartBuilder, NGXEchartsSelectChangeEventData } from '../vs-echarts.interfaces';\nimport { defaultOptionsOverrides, defaultValueFormatter, VS_ECHARTS_CONFIG } from '../vs-echarts.config';\nimport merge from 'lodash/merge';\nimport { VSECDirector } from '../builders/director';\nimport { EChartsOption, SeriesOption } from 'echarts';\nimport { fixPieDataIndexInside, getDefaultPalette } from '../vs-echarts.utils';\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 = { dimensions: [], source: [] };\n \n @Input({\n \"transform\": (values: Partial<IOptionsOverridesWrapper> | null) => {\n return merge(defaultOptionsOverrides(), values || {});\n }}) optionsOverrides: IOptionsOverridesWrapper = defaultOptionsOverrides();\n\n /** Paleta de colores básica */\n @Input() palette: string[] = getDefaultPalette();\n\n /** Resolver de colores dinámico (Callback) */\n @Input() colorResolver?: ChartColorResolver;\n\n /** Formateador de valores para etiquetas y tooltips */\n @Input() valueFormatter: ChartValueFormatter = defaultValueFormatter;\n \n @Output() chartClick = new EventEmitter<{type: EChartClickType, data: any}>(); \n\n /** Subject para debouncing de actualizaciones. ReplaySubject asegura no perder el primer renderizado. */\n private updateSubject = new ReplaySubject<EChartsOption>(1);\n private updateSubscription?: Subscription;\n\n /**\n * producto base/inicial para el builder.\n */\n protected abstract baseProduct: VSEChartProduct;\n protected abstract builder: IEChartBuilder<any>;\n /**\n * director de construcción.\n * \n * Es quien tendra las instrucciones de armado de los distintos productos\n * y sus variantes.\n * \n * Ver: https://refactoring.guru/es/design-patterns/builder \n */\n protected abstract director: VSECDirector;\n protected abstract make(): void;\n /**\n * Opciones de series escenciales, inmutables y estaticas minimas\n * necesarias para el dibujado de las series del grafico.\n */\n protected abstract baseSeriesOptions: SeriesOption;\n protected afterSetOptionsHook?: () => void;\n\n protected chartInstance?: echarts.ECharts;\n\n protected vsEchartsConfig = (() => {\n try {\n return inject(VS_ECHARTS_CONFIG, { optional: true });\n } catch {\n return null;\n }\n })();\n \n /** Opciones de inicializacion de echarts\n * \n * NgxEchartsDirective.initOpts\n */\n public initOptions = {\n renderer: this.vsEchartsConfig?.renderer || 'svg',\n locale: this.vsEchartsConfig?.locale,\n };\n\n constructor() {\n this.updateSubscription = this.updateSubject.pipe(\n debounceTime(150)\n ).subscribe(options => {\n this.setOptions(options);\n });\n }\n\n // angular hooks //\n ngOnChanges(changes: SimpleChanges) {\n this.onInputChanges(changes);\n }\n\n ngOnDestroy() {\n this.updateSubscription?.unsubscribe();\n this.chartInstance?.dispose();\n }\n\n // metodos privados //\n\n /** setear/actualizar opciones del chart\n * \n * Ver: https://echarts.apache.org/en/api.html#echartsInstance.setOption \n */\n private setOptions(chartOptions: EChartsOption, opts?: {\n notMerge?: boolean,\n silent?: boolean,\n replaceMerge?: string[],\n }) {\n const notMerge = opts?.notMerge ?? true\n , silent = opts?.silent ?? false\n , replaceMerge = opts?.replaceMerge ?? []\n ;\n const _opts = {\n notMerge,\n silent,\n replaceMerge,\n };\n this.chartInstance?.setOption(chartOptions, _opts);\n if (this.afterSetOptionsHook) {\n this.afterSetOptionsHook();\n }\n }\n\n // metodos protegidos //\n protected dispatchAction(type: string, d: { seriesIndex?: number[], dataIndex?: number[] }) {\n if (this.chartInstance == undefined) return;\n\n const {\n seriesIndex = [],\n dataIndex = [],\n } = d;\n\n this.chartInstance.dispatchAction({\n type,\n seriesIndex,\n dataIndex,\n });\n };\n\n /**\n * Hook de template method invocado por `ngOnChanges`.\n * Las subclases lo sobreescriben para añadir lógica propia\n * y deben llamar a `super.onInputChanges(changes)` para preservar\n * el comportamiento base (detectar inputs relevantes y actualizar el chart).\n */\n protected onInputChanges(changes: SimpleChanges): void {\n if (changes['data'] || changes['optionsOverrides'] || changes['palette'] || changes['colorResolver'] || changes['valueFormatter']) {\n this.prepareOptions();\n }\n }\n\n private prepareOptions(): void {\n if (!this.chartInstance) return;\n if (!this.data) return;\n\n this.make();\n\n const baseOptions = this.builder.getResult();\n\n this.triggerUpdate(baseOptions);\n }\n\n /**\n * Gatilla actualización.\n * \n */\n protected triggerUpdate(options: EChartsOption) {\n this.updateSubject.next(options);\n }\n\n // metodos publicos //\n\n /**\n * Captura la instancia de echarts (usado por ngx-echarts)\n */\n onChartInit(instance: any) {\n this.chartInstance = instance;\n this.prepareOptions();\n }\n\n onChartClick(event: any): void {\n if (event.componentType === 'series') {\n const index = event.dataIndex;\n const seriesIndex = event.seriesIndex;\n\n if (index !== undefined && index >= 0) {\n // Emit standardized payload for cross-filtering\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n }\n\n /**\n * Maneja el cambio de selección en el gráfico (selección y deselección de elementos).\n * Requiere que las series del gráfico tengan configurado `selectMode`.\n * \n * @param event Datos del evento de cambio de selección de ECharts.\n * @param opts Opciones de configuración adicionales.\n * @param opts.fixPieDataIndexInside Si es true, aplica la corrección de índice para gráficos tipo pie.\n */\n onChartSelectChanged(\n event: NGXEchartsSelectChangeEventData,\n opts?: {\n fixPieDataIndexInside?: boolean;\n }\n ) {\n const shouldFixPie = opts?.fixPieDataIndexInside ?? false;\n if (shouldFixPie) {\n fixPieDataIndexInside(event);\n }\n const {\n type = '',\n fromActionPayload,\n fromAction = '',\n isFromClick,\n selected,\n } = event;\n if (!isFromClick) return; // avoid internal ECharts selection loop.\n\n // limpiar seleccion\n const seriesIndexes = selected.map(s => s.seriesIndex);\n const dataIndexes = selected.flatMap(s => s.dataIndex.map(d => d));\n const ud = {\n seriesIndex: seriesIndexes ,\n dataIndex: dataIndexes,\n };\n this.dispatchAction('unselect', ud);\n // seleccionar\n if (fromAction == 'unselect') {\n return; // avoid selection loop by same.\n }\n const sd = {\n seriesIndex: [fromActionPayload.seriesIndex],\n dataIndex: [fromActionPayload.dataIndexInside],\n };\n this.dispatchAction('select', sd);\n }\n\n /**\n * Método público para forzar el redimensionado desde el padre\n */\n resize() {\n this.chartInstance?.resize();\n }\n}\n","/**\n * ECharts Builder utils\n * \n * Biblioteca de fragmentos de configuración y tokens de diseño para asegurar \n * una estética cohesiva en todos los gráficos de Visionaris.\n * \n * @see {@link VisionarisFrontEnd/docs/technical/echarts-architecture.md}\n */\n\nimport { EChartsOption, LineSeriesOption } from \"echarts\";\nimport { TooltipOption, XAXisOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { IEChartData, ChartValueFormatter, IEChartDataNode, IEChartDimension } from \"../vs-echarts-api.interfaces\";\nimport merge from 'lodash/merge';\nimport { EChartsTokens, getDefaultPalette } from \"../vs-echarts.utils\";\nimport { getActiveLocale } from \"../vs-echarts-config.service\";\nimport { localeMapper } from \"../vs-echarts.config\";\n\n\nexport type TooltipFormatterOpts = {\n showSerieName?: boolean;\n}\n\n\nconst formattersCache = new Map<string, Intl.NumberFormat>();\n\nfunction getCompactFormatter(): Intl.NumberFormat {\n const locale = getActiveLocale();\n const officialLocale = locale ? localeMapper[locale] : undefined;\n const cacheKey = officialLocale || 'default';\n \n let formatter = formattersCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(officialLocale, {\n notation: 'compact',\n compactDisplay: 'short',\n maximumFractionDigits: 1\n });\n formattersCache.set(cacheKey, formatter);\n }\n return formatter;\n}\n\n// Wrap with custom formatter implementation to keep identical signature/API dynamically\nexport const compactFormatter = {\n format: (value: number) => getCompactFormatter().format(value)\n};\n\n/**\n * Formats a value using native browser SI suffixes (k, M, B).\n */\nexport function formatAxisValue(value: number): string {\n return compactFormatter.format(value);\n}\n\n/**\n * Common legend configuration with scroll to prevent \"cannibalization\".\n * Atomic Pattern: Provides the scrollable container with Visionaris styling.\n */\nexport function getLegendOptions(overrides?: any): any {\n const defaults = {\n show: true,\n type: 'scroll',\n orient: 'horizontal',\n bottom: 0,\n left: 'center',\n height: 60,\n textStyle: {\n color: '#333',\n fontSize: EChartsTokens.fontSize,\n fontFamily: EChartsTokens.fontFamily\n },\n pageButtonPosition: 'end',\n pageIconColor: EChartsTokens.primaryColor,\n pageIconInactiveColor: '#ccc',\n pageIconSize: 12,\n pageTextStyle: {\n color: '#666'\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\nexport function getCategoryAxisOptions(overrides?: CategoryAxisBaseOption): any {\n const categories = overrides?.data ? (overrides.data as any[]).map(c => typeof c === 'string' ? c : (c?.name || String(c))) : undefined;\n const autoRotate = categories && categories.length > 10 ? 45 : 0;\n\n const defaults: CategoryAxisBaseOption = {\n type: 'category',\n triggerEvent: true,\n ...(categories ? { data: categories } : {}),\n axisLabel: {\n rotate: autoRotate,\n interval: 0, \n fontFamily: EChartsTokens.fontFamily,\n color: EChartsTokens.axisColor,\n fontSize: EChartsTokens.fontSize,\n margin: 8,\n fontWeight: 'normal',\n overflow: 'break',\n width: 1000,\n },\n axisLine: {\n lineStyle: {\n color: EChartsTokens.lineColor\n }\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\nexport function getValueAxisOptions(overrides?: ValueAxisBaseOption): any {\n const defaults: ValueAxisBaseOption = {\n type: 'value',\n splitLine: { \n show: true,\n lineStyle: { \n type: 'dashed',\n color: '#f0f0f0'\n } \n },\n axisLabel: {\n formatter: (value: number) => formatAxisValue(value),\n color: EChartsTokens.axisColor,\n fontSize: EChartsTokens.fontSize\n }\n };\n\n return merge({}, defaults, overrides);\n}\n\n/**\n * Callback function to dynamically position the tooltip inside the chart container boundaries.\n */\nexport function getTooltipPositionCallback(\n point: [number, number],\n params: any,\n dom: any,\n rect: any,\n size: { contentSize: [number, number]; viewSize: [number, number] }\n): [number, number] {\n const [x, y] = point;\n const tooltipWidth = size?.contentSize?.[0] || dom?.offsetWidth || 150;\n const tooltipHeight = size?.contentSize?.[1] || dom?.offsetHeight || 100;\n const containerWidth = size?.viewSize?.[0] || 400;\n const containerHeight = size?.viewSize?.[1] || 300;\n\n const offset = 15; // Safe distance from cursor\n let posX = x - tooltipWidth / 2;\n let posY = y - tooltipHeight - offset; // default: above the cursor\n\n // Left and right boundary checks\n if (posX < 0) {\n // Overflows left boundary: place to the right of the cursor\n posX = x + offset;\n } else if (posX + tooltipWidth > containerWidth) {\n // Overflows right boundary: place to the left of the cursor\n posX = x - tooltipWidth - offset;\n }\n\n // Final safety clamp to container boundaries\n if (posX + tooltipWidth > containerWidth) {\n posX = Math.max(0, containerWidth - tooltipWidth);\n }\n if (posX < 0) {\n posX = 0;\n }\n\n // Top and bottom boundary checks\n if (posY < 0) {\n // Overflows top boundary: place below the cursor\n posY = y + offset;\n } else if (posY + tooltipHeight > containerHeight) {\n // Overflows bottom boundary: place above the cursor\n posY = y - tooltipHeight - offset;\n }\n\n // Final safety clamp to container boundaries\n if (posY + tooltipHeight > containerHeight) {\n posY = Math.max(0, containerHeight - tooltipHeight);\n }\n if (posY < 0) {\n posY = 0;\n }\n\n return [posX, posY];\n}\n\n/**\n * Common Tooltip configuration.\n * Atomic Pattern: Enforces consistent glassmorphism and pointer styles.\n */\nexport function getTooltipOptions(overrides?: any): TooltipOption {\n const trigger = overrides?.trigger || 'axis';\n const isAxis = trigger === 'axis';\n\n const defaults = {\n show: true,\n trigger: trigger,\n position: getTooltipPositionCallback,\n backgroundColor: EChartsTokens.tooltipBg,\n borderColor: '#eee',\n borderWidth: 1,\n textStyle: {\n color: '#333',\n fontSize: 12\n },\n extraCssText: 'box-shadow: 0 0 10px rgba(0,0,0,0.1); border-radius: 8px;',\n ...(isAxis ? {\n axisPointer: {\n type: 'shadow'\n }\n } : {})\n };\n\n return merge({}, defaults, overrides);\n}\n\n/**\n * Applies a visual selection effect to line-based series.\n * Highlights the selected series and point, and dims everything else.\n * \n * @param series The series array to modify\n * @param selectedCategoryIndex Index of the selected category\n * @param selectedSeriesIndex Index of the selected series\n * @returns Modified series array\n */\nexport function applyLineSelectionStyle(\n series: LineSeriesOption[],\n selectedCategoryIndex: number | null,\n selectedSeriesIndex: number | null\n): LineSeriesOption[] {\n if (selectedCategoryIndex === null || !series) return series;\n\n return series.map((s, sIdx) => {\n const isSelectedSeries = sIdx === selectedSeriesIndex;\n\n // Serie seleccionada: Línea con opacidad 1 para que destaque la tendencia.\n // Serie NO seleccionada: Opacidad 0.20 para atenuar fuertemente.\n const seriesOpacity = isSelectedSeries ? 1 : 0.20;\n \n return {\n ...s,\n emphasis: {\n disabled: true // Deshabilitar el énfasis (hover) cuando hay una selección activa\n },\n itemStyle: {\n ...s.itemStyle,\n opacity: seriesOpacity\n },\n lineStyle: {\n ...s.lineStyle,\n opacity: seriesOpacity\n },\n ...(s.areaStyle ? {\n areaStyle: {\n ...s.areaStyle,\n opacity: isSelectedSeries ? 0.6 : 0.1\n }\n } : {}),\n // Personalizamos los puntos individualmente\n data: (s.data || []).map((val: any, idx: number) => {\n const isSelectedPoint = isSelectedSeries && idx === selectedCategoryIndex;\n const isOtherPointInSelectedSeries = isSelectedSeries && idx !== selectedCategoryIndex;\n \n const originalPoint = (val && typeof val === 'object') ? val : { value: val };\n \n if (isSelectedPoint) {\n return {\n ...originalPoint,\n z: 10, // Asegurar que el punto seleccionado esté por encima de los demás\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 1,\n borderWidth: 2,\n borderColor: '#fff',\n shadowBlur: 10,\n shadowColor: 'rgba(0,0,0,0.5)'\n },\n symbolSize: 12\n };\n } else if (isOtherPointInSelectedSeries) {\n // Puntos de la serie seleccionada que NO son el clicado: un poco más pequeños y traslúcidos\n return {\n ...originalPoint,\n itemStyle: {\n ...originalPoint.itemStyle,\n opacity: 0.5\n },\n symbolSize: 6\n };\n }\n \n // Puntos de otras series o por defecto\n return val;\n })\n };\n });\n}\n\n/**\n * Resolves the unique key of a category safely.\n */\nexport function getCategoryKey(dimensions: IEChartDimension[] | undefined, index: number): string {\n if (!dimensions || !dimensions[index]) {\n return String(index);\n }\n return dimensions[index].name;\n}\n\n/**\n * Resolves the numeric value from a series data point.\n */\nexport function getCellValue(val: number | undefined | null): number {\n if (val === undefined || val === null) return 0;\n return val;\n}\n\n/**\n * Formatter generator for 'item' trigger strategy in tooltips.\n */\nexport function getItemTooltipFormatter(\n data: IEChartData,\n valueFormatter: ChartValueFormatter,\n opts?: TooltipFormatterOpts,\n): (params: any) => string {\n return (params: any) => {\n let title: string = '',\n subtitle: string = '',\n valFormatted: string = '',\n percentVal: string = ''\n ;\n\n const showSerieName = opts?.showSerieName ?? true;\n \n const row = params.value;\n const dimension = data.dimensions[params.seriesIndex + 1];\n const dimensionName = dimension ? dimension.name : '';\n if (!dimensionName) return '';\n const rawValue = (row && typeof row === 'object') ? row[dimensionName] : params.value;\n const serieName = showSerieName ? `${params.marker} ${params.seriesName}<br/ >`: '';\n const categoryName = params.name || (row && typeof row === 'object' ? row.category : '');\n\n title = categoryName;\n subtitle = serieName;\n valFormatted = valueFormatter(Number(rawValue ?? 0), dimensionName);\n\n // pie/funnel/ring series\n if (params.percent != undefined) {\n percentVal = ` (${params.percent}%)`;\n // invertir titulo y subtitulo\n title = `${params.seriesName}`;\n subtitle = `${params.marker} ${categoryName}</br>`;\n }\n\n // sankey\n if (params.dataType != undefined) {\n const dataType = params.dataType as 'edge' | 'node';\n subtitle = `${params.marker}<br/>`;\n if (dataType === 'edge') {\n const sourceName = params.data.source.split('___')[0];\n const targetName = params.data.target.split('___')[0];\n title = `${sourceName} → ${targetName}`;\n valFormatted = valueFormatter(Number(params.value ?? 0), dimensionName);\n } else if (dataType === 'node') {\n title = params.name.split('___')[0];\n valFormatted = valueFormatter(Number(params.value ?? 0), dimensionName);\n } \n }\n\n // sunburst treemap\n if (params.treePathInfo) {\n const lastLevelIndex = params.treePathInfo.length - 1,\n parentNodeIndex = lastLevelIndex - 1;\n const parentNode: { name: string } = params.treePathInfo[parentNodeIndex];\n const oldParentNode: { name: string } = params.treePathInfo[1];\n if (parentNode.name) {\n title = `${parentNode.name}->${params.name}` ;\n subtitle = `${params.marker} ${oldParentNode.name}<br/ >`;\n }\n }\n \n\n return `<div style=\"text-align: center;\"><b>${title}</b><br/>${subtitle}<b>${valFormatted}</b>${percentVal}</div>`;\n };\n}\n\n/**\n * Formatter generator for 'axis' trigger strategy in tooltips.\n */\nexport function getAxisTooltipFormatter(\n data: IEChartData,\n valueFormatter: ChartValueFormatter,\n opts?: TooltipFormatterOpts,\n): (params: any) => string {\n return (params: any) => {\n if (!params) return '';\n\n const items = Array.isArray(params) ? params : [params];\n if (items.length === 0) return '';\n\n const firstItem = items[0];\n const row = firstItem.value;\n const title = firstItem.name || (row && typeof row === 'object' ? row.category : '');\n let html = `<b>${title}</b><br/>`;\n\n for (const item of items) {\n const dimension = data.dimensions[item.seriesIndex + 1];\n const dimensionName = dimension ? dimension.name : '';\n if (!dimensionName) continue;\n \n const itemRow = item.value;\n const rawValue = (itemRow && typeof itemRow === 'object') ? itemRow[dimensionName] : item.value;\n const valFormatted = valueFormatter(Number(rawValue ?? 0), dimensionName);\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 valueFormatter: ChartValueFormatter,\n opts?: TooltipFormatterOpts,\n): (params: any) => string {\n return trigger === 'axis'\n ? getAxisTooltipFormatter(data, valueFormatter, opts)\n : getItemTooltipFormatter(data, valueFormatter, opts);\n}\n\nexport function getCommons(opts?: {palette: string[]}) {\n const palette = opts?.palette ?? getDefaultPalette();\n\n const common: EChartsOption = {\n backgroundColor: 'transparent',\n textStyle: {\n fontFamily: \"'Inter', 'Roboto', 'Open Sans', sans-serif\",\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '15%',\n top: '20px',\n containLabel: true,\n },\n };\n\n // Aplicar paleta global: Prioridad Palette Inyectada > Default Visionaris\n common.color = (palette && palette.length > 0) ? palette : getDefaultPalette();\n\n return common;\n}\n\n/**\n * Maps hierarchical category nodes and their measures into a nested structure\n * suitable for Sunburst/Treemap charts from the IEChartDataNode children.\n */\nexport function mapHierarchicalData(\n source: IEChartDataNode[] | undefined,\n dimensions: IEChartDimension[]\n): any[] {\n if (!source) {\n return [];\n }\n const measureDims = dimensions.filter(d => d.name !== 'category');\n\n function traverse(nodes: IEChartDataNode[]): any[] {\n return nodes.map(node => {\n const item: any = {\n name: node.category,\n };\n\n if (node.children && node.children.length > 0) {\n item.children = traverse(node.children);\n } else {\n // Leaf category node: append the series (measures) as the final level of children\n if (measureDims.length > 0) {\n item.children = measureDims.map(dim => {\n const rawValue = node[dim.name];\n const value = typeof rawValue === 'object' && rawValue !== null && 'value' in rawValue ? rawValue.value : rawValue;\n return {\n name: dim.displayName || dim.name,\n value: getCellValue(Number(value ?? 0)),\n originalMeassureKey: dim.name\n };\n });\n } else {\n item.value = 0;\n }\n }\n\n return item;\n });\n }\n\n return traverse(source);\n}\n\n/**\n * Calculates the maximum depth of a tree structure.\n */\nexport function getTreeDepth(nodes: any[] | undefined): number {\n if (!nodes || nodes.length === 0) {\n return 0;\n }\n\n let maxChildDepth = 0;\n for (const node of nodes) {\n if (node.children && node.children.length > 0) {\n const d = getTreeDepth(node.children);\n if (d > maxChildDepth) {\n maxChildDepth = d;\n }\n }\n }\n\n return 1 + maxChildDepth;\n}","import { EChartsOption, PieSeriesOption, SeriesOption, TooltipComponentOption } from 'echarts';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport {\n ChartColorResolver,\n ChartValueFormatter,\n IEChartData,\n} from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport merge from 'lodash/merge';\nimport { defaultValueFormatter } from '../vs-echarts.config';\n\n/**\n * RingBuilder\n * \n * Builder concreto para el grafico de Ring. \n * \n */\nexport class RingBuilder implements IEChartBuilder<PieSeriesOption> {\n baseProduct: VSEChartProduct;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n const common: EChartsOption = BuilderUtils.getCommons(opts);\n\n merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: PieSeriesOption): void {\n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n this.result.dataset = {\n dimensions: data.dimensions,\n source: data.source\n };\n\n const measureDims = data.dimensions.filter(d => d.name !== 'category');\n const totalRings = measureDims.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 = measureDims.map((dim, ringIndex) => {\n const dimKey = dim.name;\n const friendlyName = dim.displayName || dim.name;\n const inner = minInnerRadius + (ringIndex * (thickness + margin));\n const outer = inner + thickness;\n\n const dynamicRingSeriesOptions: PieSeriesOption = {\n name: friendlyName,\n type: 'pie',\n radius: [`${inner}%`, `${outer}%`],\n itemStyle: {\n borderRadius: borderRadius,\n borderWidth: borderWidth,\n },\n emphasis: { \n itemStyle: {\n borderWidth: borderWidth,\n },\n },\n select: {\n itemStyle: {\n borderWidth: borderWidth,\n },\n },\n encode: {\n itemName: 'category',\n value: dimKey\n },\n id: `ring_${ringIndex}`,\n };\n\n const seriesOption = merge(dynamicRingSeriesOptions, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n\n this.result.series = series;\n }\n\n addGraphic(): void {\n // Add graphic element for the center KPI\n this.result.graphic = [{\n id: 'center-kpi',\n type: 'text' as const,\n left: 'center',\n top: 'middle',\n z: 100,\n transition: ['style'],\n style: {\n text: '',\n fontSize: 22,\n fontWeight: 'bold',\n fill: '#333',\n stroke: '#fff',\n lineWidth: 1,\n paintOrder: 'stroke',\n textAlign: 'center',\n textVerticalAlign: 'middle',\n opacity: 0,\n } as any,\n } as any];\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {};\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.valueFormatter);\n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for ring charts\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addDataZoom(): void {}\n addDataset(data: IEChartData, opts?: any): void {}\n\n // Callback setters\n setValueFormatter(formatter: ChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n}\n","import { inject } from \"@angular/core\";\nimport { SeriesOption, EChartsOption, BoxplotSeriesOption } from \"echarts\";\nimport { IEChartData, ChartValueFormatter, ChartColorResolver, IEChartDimension } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder, IOptionsOverrides, ISeriesLayoutOpts, ITooltipOptionsOverrides, VSEChartProduct } from \"../vs-echarts.interfaces\";\nimport { getCategoryAxisOptions, getCommons, getTooltipOptions, getValueAxisOptions, } from \"./builders.utils\"\nimport { merge } from \"lodash\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { defaultValueFormatter } from \"../vs-echarts.config\";\nimport { valueToLocale } from \"../vs-echarts.utils\";\n\ntype BoxPlotBuilderDatasetConfigOpts = {\n}; \n\nexport type BoxPlotBuilderSeriesConfigOpts = Pick<ISeriesLayoutOpts, 'axisTypes'> & {\n};\n\nexport class BoxPlotBuilder implements IEChartBuilder<BoxplotSeriesOption, BoxPlotBuilderSeriesConfigOpts, BoxPlotBuilderDatasetConfigOpts > {\n baseProduct: VSEChartProduct;\n protected translateService?: TranslateService;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n // TODO: Hay que implementar un valor por defecto.\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(\n baseProduct: VSEChartProduct,\n ) {\n this.baseProduct = baseProduct;\n try {\n this.translateService = inject(TranslateService);\n } catch {\n // Ignored if called outside an injection context (e.g. unit tests)\n }\n }\n\n reset(): void {\n this.result = {};\n }\n\n addDataset(data: IEChartData, opts?: BoxPlotBuilderDatasetConfigOpts) {\n /**\n * \n * @param arr \n * @param statisticsKeys etiquetas personalizadas para los valores de estadistica.\n * @returns \n */\n function calcularResumen5Numeros(arr: number[]) {\n if (arr.length === 0) return null;\n\n // 1. Ordenar los números de menor a mayor\n const ordenados = [...arr].sort((a, b) => a - b);\n\n // Función auxiliar para encontrar la mediana/cuartil en una posición\n const obtenerPercentil = (p: number) => {\n const pos = (ordenados.length - 1) * p;\n const base = Math.floor(pos);\n const resto = pos - base;\n\n if (ordenados[base + 1] !== undefined) {\n return ordenados[base] + resto * (ordenados[base + 1] - ordenados[base]);\n } else {\n return ordenados[base];\n }\n };\n\n return {\n min: ordenados[0],\n q1: obtenerPercentil(0.25),\n median: obtenerPercentil(0.50),\n q3: obtenerPercentil(0.75),\n max: ordenados[ordenados.length - 1],\n };\n };\n\n const resumen5NumerosXCat = data.source\n .reverse() // reverse para no modificar el orden original\n .map(s => {\n // filtro category para excluirlo de la lista de métricas\n const values: number[] = Object.entries(s)\n .filter(([key, val]) => key !== 'category' && !isNaN(val as any))\n .map(([_, val]) => Number(val));\n \n // resumen5NumerosXCat\n const resObj = Object.assign({ category: s.category }, calcularResumen5Numeros(values));\n return resObj;\n });\n \n const dataset = [{\n // id: 'resumen5NumerosXCat',\n source: resumen5NumerosXCat,\n },\n {\n // id: 'resumen5NumerosXCatOrder',\n transform: {\n type: 'sort',\n config: {\n dimension: 3,\n order: 'asc',\n },\n },\n }\n ];\n\n this.result.dataset = dataset;\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n const commons = getCommons(opts);\n merge(this.result, commons);\n }\n\n addSeries(data: IEChartData, overrides: BoxplotSeriesOption, opts?: any): void {\n const axisTypes = opts?.axisTypes || { x: 'value', y: 'category' };\n const isVertical = axisTypes.x === 'category';\n\n const dynamicOptions = {\n encode: {\n x: isVertical ? 0 : [1, 2, 3, 4, 5],\n y: isVertical ? [1, 2, 3, 4, 5] : 0,\n },\n };\n\n const serie = merge({}, dynamicOptions, overrides);\n\n this.result.series = [serie];\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const mainMeassureKey = data.dimensions.filter(d => d.name != 'category')[0].name;\n const valueFormatter = this.valueFormatter;\n\n const translate = (key: string, fallback: string) => {\n if (!this.translateService) return fallback;\n const res = this.translateService.instant(key);\n return res === key ? fallback : res;\n };\n\n const labelMap: Record<string, string> = {\n min: translate('VS_ECHARTS.BOXPLOT.MIN', 'Min'),\n q1: translate('VS_ECHARTS.BOXPLOT.Q1', 'Q1'),\n median: translate('VS_ECHARTS.BOXPLOT.MEDIAN', 'Median'),\n q3: translate('VS_ECHARTS.BOXPLOT.Q3', 'Q3'),\n max: translate('VS_ECHARTS.BOXPLOT.MAX', 'Max'),\n };\n\n function tooltipFormatter (params: any[]): string {\n const tooltipEventData = Array.isArray(params) ? params[0] : params;\n const title = `<b>${tooltipEventData.name}</b></br>`;\n let htmlbody = ``;\n for (const datakey in tooltipEventData.data) {\n const rawLabel: string = datakey;\n const value = tooltipEventData.data[datakey];\n if (rawLabel == 'category') {\n continue;\n };\n const label = labelMap[rawLabel] || rawLabel;\n const formattedValue = valueFormatter(value, mainMeassureKey);\n const bodyText = `${tooltipEventData.marker}${label}: ${formattedValue}</br>`;\n htmlbody += bodyText;\n };\n const html = title+htmlbody;\n return html;\n };\n \n this.result.tooltip = getTooltipOptions(merge(overrides, { formatter: tooltipFormatter}));\n }\n\n addDataZoom(): void {\n this.result.dataZoom = [\n {\n type: 'inside'\n },\n {\n type: 'slider',\n height: 20,\n bottom: 10,\n labelFormatter: (value: number) => valueToLocale(value)\n }\n ];\n }\n\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\" = \"value\"): void {\n const boxplotXAxisOptions = {\n scale: true,\n };\n if (type === 'category') {\n const opts: CategoryAxisBaseOption = overrides.categoryAxis[0];\n this.result.xAxis = getCategoryAxisOptions(opts);\n } else {\n const opts: ValueAxisBaseOption = overrides.valueAxis[0];\n this.result.xAxis = getValueAxisOptions(merge(opts, boxplotXAxisOptions));\n }\n }\n\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\" = \"category\"): void {\n const boxplotYAxisOptions = {\n scale: true,\n };\n if (type === 'category') {\n const opts: CategoryAxisBaseOption = overrides.categoryAxis[0];\n this.result.yAxis = getCategoryAxisOptions(opts);\n } else {\n const opts: ValueAxisBaseOption = overrides.valueAxis[0];\n this.result.yAxis = getValueAxisOptions(merge(opts, boxplotYAxisOptions));\n }\n }\n\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void { }\n addLegend(): void {}\n addGraphic(): void {}\n addPolar(): void {}\n\n // Setters \n /**\n * Permite inyectar un formateador de valores externo.\n */\n public setValueFormatter(formatter: ChartValueFormatter | undefined): 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[] | undefined): 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 | undefined): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n\n}\n","import { BarSeriesOption, EChartsOption, LineSeriesOption, ScatterSeriesOption, SeriesOption, TooltipComponentOption } from 'echarts';\nimport { IEChartData, ChartValueFormatter, ChartColorResolver } from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport { IEChartBuilder, IOptionsOverrides, ISeriesLayoutOpts, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport { merge } from 'lodash';\nimport { AngleAxisOption, PolarOption, RadiusAxisOption } from 'echarts/types/dist/shared';\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from 'echarts/types/src/coord/axisCommonTypes.js';\nimport { defaultValueFormatter } from '../vs-echarts.config';\n\nexport type EChartBuilderSeriesConfigOpts = ISeriesLayoutOpts & {\n\n};\n\nexport type EChartBuilderSeriesOverrides = BarSeriesOption & LineSeriesOption & ScatterSeriesOption;\n\n/**\n * Builder principal.\n * \n * Es muy completo, tiene soporte para ejes y sistema cartesiano polar. \n * \n * Puede verse utilizado en graficos como Lineas y Bars. Siempre que se pueda priorizar utilizar este.\n */\nexport class EChartBuilder implements IEChartBuilder<SeriesOption & BarSeriesOption & LineSeriesOption & ScatterSeriesOption, EChartBuilderSeriesConfigOpts> {\n\n baseProduct: VSEChartProduct = undefined!;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset() {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n merge(this.result, BuilderUtils.getCommons(opts)); \n }\n\n /**\n * \n * @param data \n * @param overrides\n * @returns \n */\n addSeries(data: IEChartData, overrides: BarSeriesOption & LineSeriesOption & ScatterSeriesOption, opts?: ISeriesLayoutOpts): void {\n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n this.result.dataset = {\n dimensions: data.dimensions,\n source: data.source\n };\n\n const measureDims = data.dimensions.filter(d => d.name !== 'category');\n\n const isPolar = opts?.coordinateSystem === 'polar';\n const isHorizontal = opts?.axisTypes?.x === 'value' && opts?.axisTypes?.y === 'category';\n\n const series = measureDims.map((dim) => {\n const friendlyName = dim.displayName || dim.name;\n const dimKey = dim.name;\n\n let encode: any = {\n x: 'category',\n y: dimKey\n };\n\n if (isPolar) {\n encode = {\n angle: 'category',\n radius: dimKey\n };\n } else if (isHorizontal) {\n encode = {\n x: dimKey,\n y: 'category'\n };\n }\n\n\n\n const dynamicOverrides: any = {\n name: friendlyName,\n encode,\n };\n const seriesOption = merge(dynamicOverrides, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n // Inyectar el formatter de etiquetas\n if (seriesOption.label && this.valueFormatter != undefined) {\n const valueFormatter = this.valueFormatter;\n seriesOption.label.formatter = (params: any) => {\n const row = params.value;\n const rawValue = (row && typeof row === 'object') ? row[dimKey] : params.value;\n return valueFormatter(Number(rawValue ?? 0), dimKey);\n }\n }\n\n return seriesOption;\n });\n\n this.result.series = series;\n }\n \n /**\n * TODO: Mejorar funcion, no me convence como se implemento el tooltip formatter.\n * @param data \n * @param overrides \n */\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const optsOverrides: TooltipComponentOption = {\n };\n\n // inyecto formateador personalizado de tooltip\n optsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.valueFormatter.bind(this));\n\n merge(optsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(optsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addPolar(): void {\n const polar: PolarOption[] = [];\n polar.push({\n radius: '65%',\n center: [\"50%\", \"44%\"],\n });\n this.result.polar = polar;\n }\n\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'= 'category'): void {\n const xAxis = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n const valueAxisOptions = this.getValueAxisOptions(data, overrides);\n if (type == 'category') {\n xAxis.push(categoryAxisOptions);\n } else if (type == 'value') {\n xAxis.push(valueAxisOptions);\n }\n\n this.result.xAxis = xAxis;\n }\n\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'= 'value'): void {\n const yAxis = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n const valueAxisOptions = this.getValueAxisOptions(data, overrides);\n if (type == 'category') {\n yAxis.push(categoryAxisOptions);\n } else if (type == 'value') {\n yAxis.push(valueAxisOptions);\n }\n\n this.result.yAxis = yAxis;\n }\n\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {\n const radiusAxis: RadiusAxisOption[] = [];\n /** estilos exclusivos hardcodeados para el eje de valores del sistema de coordenadas polar*/\n const radiusAxisOverrides: RadiusAxisOption = {\n zlevel: 10,\n axisTick: {\n show: false,\n },\n axisLabel: {\n margin: 2,\n fontSize: 8,\n align: 'right',\n rotate: 20,\n verticalAlign: 'top',\n },\n splitLine: {\n show: true,\n lineStyle: {\n opacity: 0.2,\n type: 'solid',\n }\n },\n axisLine: {\n lineStyle: {\n type: 'dashed',\n },\n }\n };\n const radialAxisOptions = BuilderUtils.getValueAxisOptions(radiusAxisOverrides as ValueAxisBaseOption);\n radiusAxis.push(radialAxisOptions);\n\n this.result.radiusAxis = radiusAxis;\n }\n\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {\n const angleAxis: AngleAxisOption[] = [];\n const categoryAxisOptions: CategoryAxisBaseOption = this.getCategoryAxisOptions(data, overrides);\n angleAxis.push(categoryAxisOptions as AngleAxisOption);\n\n this.result.angleAxis = angleAxis;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for ring charts\n addGraphic(): void {}\n addDataset(data: IEChartData): void {}\n\n addDataZoom(): void {\n this.result.dataZoom = [\n {\n type: 'inside'\n },\n {\n type: 'slider',\n height: 20,\n bottom: 60\n }\n ];\n }\n\n getResult() {\n return this.result;\n };\n\n // Setters \n /**\n * Permite inyectar un formateador de valores externo.\n */\n public setValueFormatter(formatter: ChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n /**\n * Permite inyectar una paleta de colores básica.\n */\n public setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n /**\n * Permite inyectar un resolver de colores dinámico.\n */\n public setColorResolver(resolver: ChartColorResolver): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n // Utils\n private getCategoryAxisOptions(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]) {\n // No explicit data needed on category axis when using ECharts dataset\n const categoryAxisOptionsOverrides: CategoryAxisBaseOption = {\n ...overrides.categoryAxis[0]\n };\n const categoryAxisOptions: CategoryAxisBaseOption = BuilderUtils.getCategoryAxisOptions(categoryAxisOptionsOverrides);\n return categoryAxisOptions;\n }\n\n private getValueAxisOptions(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]) {\n const valueAxisOptions = BuilderUtils.getValueAxisOptions();\n return valueAxisOptions;\n }\n}\n","import { EChartsOption, PieSeriesOption, SeriesOption, TooltipComponentOption } from 'echarts';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from '../vs-echarts.interfaces';\nimport {\n ChartColorResolver,\n ChartValueFormatter,\n IEChartData,\n} from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport merge from 'lodash/merge';\nimport { defaultValueFormatter } from '../vs-echarts.config';\n\n/**\n * PieBuilder\n * \n * Builder concreto para el gráfico de Pie (torta concéntrica).\n * \n */\nexport class PieBuilder implements IEChartBuilder<PieSeriesOption> {\n baseProduct: VSEChartProduct;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n };\n const common: EChartsOption = BuilderUtils.getCommons(opts);\n\n merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: PieSeriesOption): void {\n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n this.result.dataset = {\n dimensions: data.dimensions,\n source: data.source\n };\n\n const measureDims = data.dimensions.filter(d => d.name !== 'category');\n const totalSeries = measureDims.length;\n let series: SeriesOption[] = [];\n\n if (totalSeries === 1) {\n const dim = measureDims[0];\n const dimKey = dim.name;\n const friendlyName = dim.displayName || dim.name;\n\n const dynamicPieSeriesOptions: PieSeriesOption = {\n name: friendlyName,\n type: 'pie',\n encode: {\n itemName: 'category',\n value: dimKey\n },\n id: `pie_0`,\n radius: [0, '50%'],\n label: {\n show: true,\n position: 'outside'\n },\n labelLine: {\n show: true,\n },\n };\n\n const seriesOption = merge(dynamicPieSeriesOptions, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n series.push(seriesOption);\n } else {\n const centerPieRadius = Math.max(20, 40 - totalSeries * 3);\n const maxOuterRadius = Math.min(60, 75 + (totalSeries - 2) * 3);\n const margin = Math.max(1, 4 - totalSeries * 0.2);\n\n const numRings = totalSeries - 1;\n const availableSpan = maxOuterRadius - (centerPieRadius + margin) - (margin * (numRings - 1));\n const thickness = availableSpan / numRings;\n\n series = measureDims.map((dim, idx) => {\n const dimKey = dim.name;\n const friendlyName = dim.displayName || dim.name;\n\n let radius: [number | string, number | string];\n let labelPosition: 'inner' | 'outside';\n let labelLineShow: boolean;\n let labelShow: boolean = true;\n\n if (idx === 0) {\n // Primera serie: Torta rellena desde el centro\n radius = [0, `${centerPieRadius}%`];\n labelPosition = 'inner';\n labelLineShow = false;\n labelShow = false;\n } else {\n // Series subsecuentes: Anillos alrededor\n const inner = (centerPieRadius + margin) + (idx - 1) * (thickness + margin);\n const outer = inner + thickness;\n radius = [`${inner}%`, `${outer}%`];\n labelPosition = 'outside';\n labelLineShow = true;\n }\n\n const dynamicPieSeriesOptions: PieSeriesOption = {\n name: friendlyName,\n type: 'pie',\n radius: radius,\n label: {\n show: labelShow, // Por defecto en los anillos no mostramos labels para evitar overlaps\n position: labelPosition,\n },\n labelLine: {\n show: labelLineShow\n },\n encode: {\n itemName: 'category',\n value: dimKey\n },\n id: `pie_${idx}`,\n };\n\n const seriesOption = merge(dynamicPieSeriesOptions, overrides);\n\n // Inyectar el resolver de color si existe\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n return seriesOption;\n });\n }\n\n this.result.series = series;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {\n };\n\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.valueFormatter);\n\n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for pie charts\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addGraphic(): void {}\n addDataZoom(): void {}\n addDataset(data: IEChartData, opts?: any): void {}\n\n // Callback setters\n setValueFormatter(formatter: ChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver ): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n}\n","import { EChartsOption, FunnelSeriesOption, SeriesOption, TooltipComponentOption } from 'echarts';\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct, ISeriesLayoutOpts } from '../vs-echarts.interfaces';\nimport {\n ChartColorResolver,\n ChartValueFormatter,\n IEChartData,\n} from '../vs-echarts-api.interfaces';\nimport * as BuilderUtils from './builders.utils';\nimport merge from 'lodash/merge';\nimport { defaultValueFormatter } from '../vs-echarts.config';\n\n/**\n * FunnelBuilder\n * \n * Concrete builder for Funnel charts.\n */\nexport class FunnelBuilder implements IEChartBuilder<FunnelSeriesOption> {\n baseProduct: VSEChartProduct;\n\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addCommons(): void {\n const opts = {\n palette: this.palette,\n };\n const common: EChartsOption = BuilderUtils.getCommons(opts);\n merge(this.result, common);\n }\n\n addSeries(data: IEChartData, overrides: FunnelSeriesOption): void {\n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n this.result.dataset = {\n dimensions: data.dimensions,\n source: data.source\n };\n\n const measureDims = data.dimensions.filter(d => d.name !== 'category');\n if (measureDims.length === 0) return;\n\n const dim = measureDims[0];\n const dimKey = dim.name;\n const friendlyName = dim.displayName || dim.name;\n\n // Obtener los valores para min/max\n const seriesValues = data.source.map(row => Number(row[dimKey] ?? 0));\n const minVal = seriesValues.length > 0 ? Math.min(...seriesValues) : 0;\n const maxVal = seriesValues.length > 0 ? Math.max(...seriesValues) : 100;\n\n const dynamicFunnelSeriesOptions: FunnelSeriesOption = {\n name: friendlyName,\n type: 'funnel',\n left: '10%',\n width: '80%',\n min: minVal,\n max: maxVal,\n encode: {\n itemName: 'category',\n value: dimKey\n },\n id: `funnel_0`\n };\n\n const seriesOption = merge({}, overrides, dynamicFunnelSeriesOptions);\n\n // Inject color resolver if provided\n if (this.colorResolver && seriesOption.itemStyle) {\n seriesOption.itemStyle.color = this.colorResolver;\n }\n\n this.result.series = seriesOption;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {\n };\n\n if (this.valueFormatter != undefined) {\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger, data, this.valueFormatter);\n }\n\n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addLegend(): void {\n this.result.legend = BuilderUtils.getLegendOptions();\n }\n\n // No-ops for funnel charts\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: 'category'|'value'): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addGraphic(): void {}\n addDataZoom(): void {}\n addDataset(data: IEChartData, opts?: any): void {}\n\n // Callback setters\n setValueFormatter(formatter: ChartValueFormatter | undefined): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[] | undefined): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver | undefined): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n\n getResult(): EChartsOption {\n return this.result;\n }\n}\n","import { SeriesOption, BarSeriesOption, LineSeriesOption, ScatterSeriesOption, EChartsOption, SunburstSeriesOption, TooltipComponentOption } from \"echarts\";\nimport { IEChartData, ChartValueFormatter, ChartColorResolver } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from \"../vs-echarts.interfaces\";\nimport { merge } from \"lodash\";\nimport * as BuilderUtils from \"./builders.utils\";\nimport { SunburstSeriesNodeItemOption } from \"echarts/types/src/chart/sunburst/SunburstSeries.js\";\nimport { defaultValueFormatter } from \"../vs-echarts.config\";\n\nexport class SunburstBuilder implements IEChartBuilder<SunburstSeriesOption> {\n baseProduct: VSEChartProduct;\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n \n addSeries(data: IEChartData, overrides: SunburstSeriesOption): void {\n if (!data || !data.source || data.source.length === 0) {\n return;\n }\n\n const sunburstData: SunburstSeriesNodeItemOption[] = BuilderUtils.mapHierarchicalData(\n data.source,\n data.dimensions\n );\n\n const depth = BuilderUtils.getTreeDepth(sunburstData);\n const levels: any[] = [];\n for (let i = 0; i <= depth; i++) {\n levels.push({\n label: {\n show: false,\n },\n });\n }\n\n const dynamiSerieOptions: SunburstSeriesOption = {\n name: '',\n data: sunburstData,\n levels: levels\n };\n\n const serie = merge({}, dynamiSerieOptions, overrides);\n\n if (this.colorResolver) {\n if (!serie.itemStyle) {\n serie.itemStyle = {};\n }\n serie.itemStyle.color = this.colorResolver;\n }\n\n this.result.series = serie;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {\n };\n\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger || 'item', data, this.valueFormatter);\n \n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n\n }\n \n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n merge(this.result, BuilderUtils.getCommons(opts)); \n }\n\n\n getResult() {\n return this.result;\n };\n\n // No-ops\n addPolar(): void { }\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\"): void { }\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\"): void { }\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void { }\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void { }\n addLegend(): void { }\n addDataZoom(): void { }\n addDataset(data: IEChartData, opts?: any): void { }\n addGraphic(): void { }\n\n // Setters \n /**\n * Permite inyectar un formateador de valores externo.\n */\n public setValueFormatter(formatter: ChartValueFormatter): 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}","import { EChartsOption, SankeySeriesOption, TooltipComponentOption } from \"echarts\";\nimport { IEChartData, ChartValueFormatter, ChartColorResolver, IEChartDataNode } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from \"../vs-echarts.interfaces\";\nimport { merge } from \"lodash\";\nimport * as BuilderUtils from \"./builders.utils\";\nimport { defaultValueFormatter } from \"../vs-echarts.config\";\n\n/**\n * SankeyBuilder\n * \n * Builder concreto para el gráfico Sankey (diagrama de flujos de izquierda a derecha).\n */\nexport class SankeyBuilder implements IEChartBuilder<SankeySeriesOption> {\n baseProduct: VSEChartProduct;\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n\n protected result: EChartsOption = {};\n\n constructor(baseProduct: VSEChartProduct) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n\n addSeries(data: IEChartData, overrides: SankeySeriesOption): void {\n if (!data || !data.source || data.source.length === 0) {\n return;\n }\n\n // Identificar medidas (todas las dimensiones excepto 'category')\n const measureKeys = data.dimensions\n .filter((d) => d.name !== \"category\")\n .map((d) => d.name);\n\n // Función auxiliar para sumarizar valores de medidas en caso de haber más de una\n const getNodeValue = (node: IEChartDataNode): number => {\n return measureKeys.reduce((sum, key) => sum + (Number(node[key]) || 0), 0);\n };\n\n const nodesMap = new Map<string, number>();\n const linksMap = new Map<string, { source: string; target: string; value: number }>();\n\n // Función recursiva para aplanar datos jerárquicos a nodos y enlaces\n const traverse = (nodeList: IEChartDataNode[], level: number, parentId?: string) => {\n for (const node of nodeList) {\n const category = node.category;\n const currentId = `${category}___${level}`;\n const value = getNodeValue(node);\n\n nodesMap.set(currentId, (nodesMap.get(currentId) || 0) + value);\n\n if (parentId) {\n const linkKey = `${parentId}--->${currentId}`;\n if (linksMap.has(linkKey)) {\n linksMap.get(linkKey)!.value += value;\n } else {\n linksMap.set(linkKey, {\n source: parentId,\n target: currentId,\n value: value,\n });\n }\n }\n\n if (node.children && node.children.length > 0) {\n traverse(node.children, level + 1, currentId);\n }\n }\n };\n\n // Comenzar el recorrido en el nivel 0\n traverse(data.source, 0);\n\n // al menos un nivel de links para dibujar.\n if (linksMap.size === 0) return;\n\n // Mapear nodos acumulados a la estructura requerida por ECharts (name y opcionalmente color, sin value redundante)\n const nodes = Array.from(nodesMap.keys()).map((currentId) => {\n const category = currentId.split(\"___\")[0];\n const nodeItem: { name: string; itemStyle?: { color: string } } = {\n name: currentId,\n };\n\n if (this.colorResolver) {\n const color = this.colorResolver({ name: category, data: nodeItem });\n if (color) {\n nodeItem.itemStyle = { color };\n }\n }\n\n return nodeItem;\n });\n\n const dynamicSerieOptions: SankeySeriesOption = {\n type: \"sankey\",\n orient: \"horizontal\", // De izquierda a derecha\n draggable: true,\n emphasis: {\n focus: \"adjacency\",\n },\n lineStyle: {\n color: \"source\",\n opacity: 0.25,\n curveness: 0.5,\n },\n label: {\n show: true,\n position: \"right\",\n fontFamily: \"'Inter', 'Roboto', 'Open Sans', sans-serif\",\n fontSize: 10,\n formatter: (params: any) => {\n // Remover el sufijo de nivel de la etiqueta visual\n return params.name.split(\"___\")[0];\n },\n },\n roam: true,\n data: nodes,\n links: Array.from(linksMap.values()),\n };\n\n const serie = merge({}, dynamicSerieOptions, overrides);\n\n if (this.colorResolver && !serie.itemStyle) {\n serie.itemStyle = {};\n }\n if (this.colorResolver && serie.itemStyle) {\n serie.itemStyle.color = this.colorResolver as any;\n }\n\n this.result.series = serie;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const tooltipOptsOverrides: TooltipComponentOption = {\n };\n\n tooltipOptsOverrides.formatter = BuilderUtils.getTooltipFormatter(overrides.trigger || 'item', data, this.valueFormatter);\n \n merge(tooltipOptsOverrides, overrides);\n const tooltip = BuilderUtils.getTooltipOptions(tooltipOptsOverrides);\n this.result.tooltip = tooltip;\n }\n\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\"): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type: \"category\" | \"value\"): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addLegend(): void {}\n addDataZoom(): void {}\n addDataset(data: IEChartData, opts?: any): void {}\n \n addCommons(): void {\n const opts = {\n palette: this.palette,\n };\n merge(this.result, BuilderUtils.getCommons(opts));\n }\n \n addGraphic(): void {}\n\n getResult(): EChartsOption {\n return this.result;\n }\n\n setValueFormatter(formatter: ChartValueFormatter): void {\n if (formatter) {\n this.valueFormatter = formatter;\n }\n }\n\n setPalette(palette: string[]): void {\n if (palette) {\n this.palette = palette;\n }\n }\n\n setColorResolver(resolver: ChartColorResolver): void {\n if (resolver) {\n this.colorResolver = resolver;\n }\n }\n}\n","import { EChartsOption, HeatmapSeriesOption, CalendarComponentOption } from \"echarts\";\nimport { IEChartData, ChartValueFormatter, ChartColorResolver } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder, IOptionsOverrides, ITooltipOptionsOverrides, VSEChartProduct } from \"../vs-echarts.interfaces\";\nimport { defaultValueFormatter } from \"../vs-echarts.config\";\nimport * as BuilderUtils from \"./builders.utils\";\nimport { merge } from \"lodash\";\nimport { CalendarOption } from \"echarts/types/dist/shared\";\nimport { VisualMapComponentOption } from \"echarts\";\n\nexport type SeriesConfigOpts = {\n calendar: CalendarOption,\n visualMap: VisualMapComponentOption,\n};\n\nexport class HeatmapCalendarBuilder implements IEChartBuilder<HeatmapSeriesOption, SeriesConfigOpts> {\n baseProduct: VSEChartProduct;\n result: EChartsOption = {};\n calendarHeight: number = 0;\n protected valueFormatter: ChartValueFormatter = defaultValueFormatter;\n protected palette: string[] = [];\n protected colorResolver?: ChartColorResolver;\n constructor (\n baseProduct: VSEChartProduct,\n ) {\n this.baseProduct = baseProduct;\n }\n\n reset(): void {\n this.result = {};\n }\n addCommons(): void {\n const opts = {\n palette: this.palette,\n }\n\n const commonsOverrides = BuilderUtils.getCommons(opts);\n merge(this.result, commonsOverrides, {grid: {}});\n }\n addDataset(data: IEChartData, opts?: any): void {}\n private addVisualmap(data: IEChartData) {}\n private addCalendar(data: IEChartData) {}\n addSeries(data: IEChartData, overrides: HeatmapSeriesOption, opts: SeriesConfigOpts): void { \n if (!data || !data.dimensions || !data.source || data.source.length === 0) return;\n\n const calendarOverrides: CalendarOption = opts.calendar;\n const visualMapOverrides: VisualMapComponentOption = opts.visualMap;\n\n const measureDim = data.dimensions.find(d => d.name !== 'category');\n const dimKey = measureDim ? measureDim.name : '';\n\n const dataByYear = new Map<string, Array<[string, number]>>();\n let min = Infinity;\n let max = -Infinity;\n\n data.source.forEach((s) => {\n if (!s.category) return;\n const dateObj = new Date(s.category);\n if (isNaN(dateObj.getTime())) return;\n\n const year = dateObj.getFullYear().toString();\n const value = s[dimKey] !== undefined && s[dimKey] !== null ? Number(s[dimKey]) : 0;\n\n if (value < min) min = value;\n if (value > max) max = value;\n\n if (!dataByYear.has(year)) {\n dataByYear.set(year, []);\n }\n const formattedDate = dateObj.toISOString().split('T')[0];\n dataByYear.get(year)!.push([formattedDate, value]);\n });\n\n if (min === Infinity) min = 0;\n if (max === -Infinity) max = 0;\n\n const sortedYears = Array.from(dataByYear.keys()).sort();\n\n const calendars: CalendarOption[] = [];\n const series: HeatmapSeriesOption[] = [];\n\n sortedYears.forEach((year, index) => {\n calendars.push(merge({\n top: 120 + index * 180,\n range: year,\n }, calendarOverrides));\n\n series.push(merge({\n calendarIndex: index,\n data: dataByYear.get(year) || []\n }, overrides));\n });\n\n this.result.calendar = calendars;\n this.result.series = series;\n\n const visualMap: VisualMapComponentOption = merge({\n min: min,\n max: max,\n }, visualMapOverrides);\n\n if (this.palette && this.palette.length > 0) {\n visualMap.inRange = {\n color: this.palette\n };\n }\n\n this.result.visualMap = visualMap;\n }\n\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void {\n const mainDim = data.dimensions.filter(d => d.name != 'category')[0];\n const valueFormatter = this.valueFormatter;\n const dimkey = mainDim.name,\n dimAlias = mainDim.displayName;\n const tooltipFormatter = (params: any): string => {\n const date = params.value[params.encode['time']],\n value = params.value[params.encode['value']];\n \n return `<div style=\"text-align: center;\" ><b>${date}</b></br>${params.marker} ${mainDim.displayName}</br><b>${valueFormatter(value, dimkey)}</b></div>`;\n };\n\n const tooltipOptions = BuilderUtils.getTooltipOptions({\n trigger: 'item',\n formatter: tooltipFormatter,\n });\n\n this.result.tooltip = tooltipOptions;\n }\n addPolar(): void {}\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type?: \"category\" | \"value\"): void {}\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type?: \"category\" | \"value\"): void {}\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void {}\n addLegend(): void {}\n\n addGraphic(): void {}\n addDataZoom(): void {}\n setValueFormatter(formatter: ChartValueFormatter): void {\n this.valueFormatter = formatter;\n }\n setPalette(palette: string[]): void {\n this.palette = palette;\n }\n setColorResolver(resolver: ChartColorResolver): void {\n this.colorResolver = resolver;\n }\n getResult(): EChartsOption {\n return this.result;\n }\n}","import { BarSeriesOption, FunnelSeriesOption, LineSeriesOption, ScatterSeriesOption, SeriesOption, SunburstSeriesOption, SankeySeriesOption, PieSeriesOption, BoxplotSeriesOption, HeatmapSeriesOption, VisualMapComponentOption } from \"echarts\";\nimport { ChartColorResolver, ChartValueFormatter, IEChartData, IOptionsOverridesWrapper } from \"../vs-echarts-api.interfaces\";\nimport { IEChartBuilder } from \"../vs-echarts.interfaces\";\nimport { merge } from \"lodash\";\nimport { BoxPlotBuilder, BoxPlotBuilderSeriesConfigOpts } from \"./boxplot.builder\";\nimport { EChartBuilder, EChartBuilderSeriesConfigOpts, EChartBuilderSeriesOverrides } from \"./echart.builder\";\nimport { RingBuilder } from \"./ring.builder\";\nimport { PieBuilder } from \"./pie.builder\";\nimport { FunnelBuilder } from \"./funnel.builder\";\nimport { SunburstBuilder } from \"./sunburst.builder\";\nimport { SankeyBuilder } from \"./sankey.builder\";\nimport { HeatmapCalendarBuilder, SeriesConfigOpts } from \"./heatmapCalendar.builder\";\nimport { CalendarOption } from \"echarts/types/dist/shared\";\n\nexport type MakeOpts = {\n valueFormatter?: ChartValueFormatter,\n palette?: string[],\n colorResolver?: ChartColorResolver,\n axisTypes?: {\n x: 'category'|'value';\n y: 'value'|'category';\n },\n};\n\nexport type MakeBarOpts = MakeOpts;\nexport type MakeLineOpts = MakeOpts;\nexport type MakeScatterOpts = MakeOpts;\nexport type MakeSunburstOpts = MakeOpts;\nexport type MakeBoxplotOpts = MakeOpts & {}\nexport type MakeHeatmapCalendarOpts = MakeOpts & {};\n\n/**\n * Director de Builds.\n */\nexport class VSECDirector {\n\n private builder: IEChartBuilder = undefined!;\n\n constructor(builder: IEChartBuilder) {\n this.builder = builder;\n }\n\n public makeBar(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBarOpts = {}\n ) {\n if (this.builder instanceof EChartBuilder == false) { \n return; \n };\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as SeriesOption & BarSeriesOption & LineSeriesOption & SunburstSeriesOption, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n const seriesOptions: EChartBuilderSeriesConfigOpts = { axisTypes };\n this.builder.addSeries(data, seriesOverrides, seriesOptions);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeBarRadial(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBarOpts = {}\n ) {\n if (this.builder instanceof EChartBuilder == false) {\n return;\n };\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as EChartBuilderSeriesOverrides, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n const seriesOptions: EChartBuilderSeriesConfigOpts = { axisTypes, coordinateSystem: 'polar' };\n this.builder.addSeries(data, seriesOverrides, seriesOptions);\n this.builder.addPolar();\n this.builder.addAngleAxis(data, overrides['axis']);\n this.builder.addRadiusAxis(data, overrides['axis']);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeLine(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeLineOpts = {}\n ) {\n if (this.builder instanceof EChartBuilder == false) {\n return;\n };\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n // TODO agregar radius y angle axis\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as EChartBuilderSeriesOverrides, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n const seriesOptions: EChartBuilderSeriesConfigOpts = { axisTypes };\n this.builder.addSeries(data, seriesOverrides, seriesOptions);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeScatter(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeScatterOpts = {}\n ) {\n if (this.builder instanceof EChartBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'category',\n y: 'value',\n }\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides = merge({}, product.baseOptions.series as EChartBuilderSeriesOverrides, overrides[product.chartKey].series);\n\n // chart components\n this.builder.addCommons();\n const seriesOptions: EChartBuilderSeriesConfigOpts = { axisTypes };\n this.builder.addSeries(data, seriesOverrides, seriesOptions);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeRing(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if (this.builder instanceof RingBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: PieSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as PieSeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addGraphic();\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makePie(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if (this.builder instanceof PieBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: PieSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as PieSeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeFunnel(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if(this.builder instanceof FunnelBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: FunnelSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as FunnelSeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addLegend();\n }\n\n public makeSunburst(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if(this.builder instanceof SunburstBuilder == false) {\n return;\n };\n\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n \n const product = this.builder.baseProduct;\n const seriesOverrides: SunburstSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as SunburstSeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addTooltip(data, overrides.tooltip);\n }\n\n public makeSankey(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeOpts = {}) {\n if (this.builder instanceof SankeyBuilder == false) {\n return;\n };\n \n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: SankeySeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as SankeySeriesOption;\n\n // chart components\n this.builder.addCommons();\n this.builder.addSeries(data, seriesOverrides);\n this.builder.addTooltip(data, overrides.tooltip);\n }\n\n public makeBoxplot(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeBoxplotOpts = {}) {\n if (this.builder instanceof BoxPlotBuilder == false) {\n return;\n }\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'value',\n y: 'category',\n },\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n if (palette) this.builder.setPalette(palette);\n if (colorResolver) this.builder.setColorResolver(colorResolver);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: BoxplotSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as BoxplotSeriesOption;\n\n // chart components\n this.builder.addCommons();\n const configOpts: BoxPlotBuilderSeriesConfigOpts = { axisTypes };\n this.builder.addDataset(data);\n this.builder.addSeries(data, seriesOverrides, configOpts);\n this.builder.addXAxis(data, overrides.axis, axisTypes.x);\n this.builder.addYAxis(data, overrides.axis, axisTypes.y);\n this.builder.addTooltip(data, overrides.tooltip);\n this.builder.addDataZoom();\n }\n\n public makeHeatmapCalendar(data: IEChartData, overrides: IOptionsOverridesWrapper, opts: MakeHeatmapCalendarOpts = {}) {\n if (this.builder instanceof HeatmapCalendarBuilder == false) {\n return;\n }\n const {\n valueFormatter = undefined,\n palette = undefined,\n colorResolver = undefined,\n axisTypes = {\n x: 'value',\n y: 'category',\n },\n } = opts;\n\n this.builder.reset();\n\n // El orden importa, primero callbacks y despues componentes.\n\n // chart callbaks\n if (valueFormatter) this.builder.setValueFormatter(valueFormatter);\n\n const product = this.builder.baseProduct;\n const seriesOverrides: HeatmapSeriesOption = merge({}, product.baseOptions.series, overrides[product.chartKey].series) as HeatmapSeriesOption;\n\n // chart components\n this.builder.addCommons();\n const seriesConfigOpts: SeriesConfigOpts = {\n calendar: product.baseOptions.calendar as CalendarOption,\n visualMap: product.baseOptions.visualMap as VisualMapComponentOption,\n };\n this.builder.addSeries(data, seriesOverrides, seriesConfigOpts);\n this.builder.addTooltip(data, overrides.tooltip);\n }\n\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { NGXEchartsSelectChangeEventData, VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { RingBuilder } from '../../builders/ring.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { PieSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n/**\n * EchartsRingComponent\n * \n * Especialista en visualización de tipo Ring. Soporta multi-medidas y KPI central.\n * @see {@link vs-echarts/docs/charts/ring-patterns.md}\n */\n@Component({\n selector: 'vs-echarts-ring',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-ring.html',\n styleUrls: ['./echarts-ring.scss'],\n})\nexport class EchartsRingComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: PieSeriesOption = {\n type: 'pie',\n center: ['50%', '50%'],\n avoidLabelOverlap: true,\n minAngle: 3,\n selectedMode: 'single',\n selectedOffset: 4,\n itemStyle: {\n borderColor: '#fff',\n },\n label: { show: false },\n emphasis: { \n scale: true,\n scaleSize: 2,\n },\n select: {\n itemStyle: {\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n borderWidth: 1,\n shadowBlur: 4,\n },\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n }\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'ring',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder = new RingBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n \n private lastSelectedSeriesIndex: number | null = null;\n private lastSelectedDataIndex: number | null = null;\n private selectedPercent: string | null = null;\n\n private currentGraphicText: string = '';\n\n constructor() {\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeRing(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override onInputChanges(changes: SimpleChanges): void {\n // Reset selection only if data changed\n if (changes['data']) {\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.currentGraphicText = '';\n }\n super.onInputChanges(changes);\n }\n\n /**\n * Maneja clics en los sectores del ring.\n * Soporta múltiples series (anillos) y actualiza el KPI central.\n */\n override onChartClick(event: any): void {\n if (this.chartInstance && event && event.dataIndex !== undefined) {\n const isSameSelection = \n event.seriesIndex === this.lastSelectedSeriesIndex && \n event.dataIndex === this.lastSelectedDataIndex;\n\n if (isSameSelection) {\n // Toggle OFF\n this.lastSelectedSeriesIndex = null;\n this.lastSelectedDataIndex = null;\n this.selectedPercent = null;\n this.setGraphicText('');\n } else {\n // SELECT\n this.lastSelectedSeriesIndex = event.seriesIndex;\n this.lastSelectedDataIndex = event.dataIndex;\n this.selectedPercent = (event.percent !== undefined) ? event.percent + '%' : '';\n this.setGraphicText(this.selectedPercent);\n }\n\n this.chartClick.emit({\n type: 'cross-filter',\n data: {\n category: event.name,\n serie: event.seriesName,\n value: event.value\n }\n });\n }\n }\n\n onChartMouseOver(event: any): void {\n if (this.selectedPercent === null && event && event.percent !== undefined) {\n this.setGraphicText(event.percent + '%');\n }\n }\n\n onChartMouseOut(event: any): void {\n if (this.selectedPercent === null) {\n this.setGraphicText('');\n }\n }\n\n /**\n * Actualiza el texto del Graphic central y persiste la selección en el modelo de opciones.\n */\n private setGraphicText(text: string): void {\n this.currentGraphicText = text;\n // Persistencia de GRAPHIC (KPI central)\n this.chartInstance?.setOption(\n {\n graphic: {\n style: {\n text: this.currentGraphicText,\n opacity: this.currentGraphicText ? 1 : 0,\n }\n }\n }\n );\n }\n\n\n}\n","<div class=\"echarts-container\" \n echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartMouseOver)=\"onChartMouseOver($event)\" \n (chartMouseOut)=\"onChartMouseOut($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event, { fixPieDataIndexInside: true })\"\n></div>\n ","import { Component } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { PieBuilder } from '../../builders/pie.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { PieSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n/**\n * EchartsPieComponent\n * \n * Especialista en visualización de tipo Pie (Torta y Anillos concéntricos).\n * La primera serie se dibuja como un gráfico de torta tradicional (lleno) y\n * las subsecuentes como anillos concéntricos alrededor.\n */\n@Component({\n selector: 'vs-echarts-pie',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-pie.html',\n styleUrls: ['./echarts-pie.scss'],\n})\nexport class EchartsPieComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: PieSeriesOption = {\n type: 'pie',\n center: ['50%', '50%'],\n avoidLabelOverlap: true,\n minAngle: 3,\n selectedMode: 'single',\n selectedOffset: 4,\n emphasis: { \n scale: true,\n scaleSize: 2,\n },\n select: {\n itemStyle: {\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n borderWidth: 1,\n shadowBlur: 4,\n },\n },\n animationType: 'scale',\n animationEasing: 'elasticOut',\n };\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'pie',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder = new PieBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n\n constructor() {\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makePie(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event, { fixPieDataIndexInside: true })\"\n></div>\n","import { Component } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { FunnelBuilder } from '../../builders/funnel.builder';\nimport { MakeOpts, VSECDirector } from '../../builders/director';\nimport { FunnelSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n/**\n * EchartsFunnelComponent\n * \n * Component for Funnel visualization. Supports single and multiple measures.\n */\n@Component({\n selector: 'vs-echarts-funnel',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-funnel.html',\n styleUrls: ['./echarts-funnel.scss'],\n})\nexport class EchartsFunnelComponent extends BaseEchartsComponent {\n \n protected baseSeriesOptions: FunnelSeriesOption = {\n type: 'funnel',\n left: '10%',\n width: '80%',\n minSize: '0.01%',\n maxSize: '100%',\n sort: 'descending',\n gap: 2,\n label: {\n show: true,\n position: 'inside'\n },\n labelLine: {\n show: false\n },\n itemStyle: {\n borderColor: '#fff',\n borderWidth: 1\n },\n emphasis: {\n label: {\n fontSize: 16\n }\n },\n selectedMode: 'single',\n select: {\n label: {\n fontSize: 16\n },\n itemStyle: {\n borderWidth: 1,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n },\n };\n \n protected baseProduct: VSEChartProduct = {\n chartKey: 'funnel',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n\n protected builder = new FunnelBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n \n constructor() {\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeFunnel(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event, { fixPieDataIndexInside: true })\"\n></div>\n","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { MakeBarOpts, VSECDirector } from '../../builders/director';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { BarSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n@Component({\n selector: 'vs-echarts-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport abstract class EchartsBarComponent extends BaseEchartsComponent {\n\n /**\n * Opciones escenciales inmutables estaticas comunes a todos los charts de barras.\n */\n protected baseSeriesOptions: BarSeriesOption = {\n type: 'bar',\n barGap: '10%',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n itemStyle: {\n borderRadius: [4,4,0,0],\n },\n stack: undefined,\n emphasis: {\n focus: 'none'\n },\n showBackground: true,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)' // gris claro\n },\n selectedMode: 'single',\n select: {\n itemStyle: {\n borderWidth: 1,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n },\n label: {\n show: false,\n position: 'top',\n }\n };\n\n /** variante de producto base/inicial para el builder. \n * \n * Utilizar para crear una variante (extender) un base producto. \n */\n protected abstract variantBaseProduct: VSEChartProduct;\n\n // va a tener que estar en el base como \"abstract\".\n protected baseProduct: VSEChartProduct = {\n chartKey: 'bar',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n }\n\n protected builder = new EChartBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n\n constructor() {\n super();\n }\n\n protected make(): void {\n const makeBarOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeBarOpts);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { BarSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-hbar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport class EChartsHBarComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n itemStyle: {\n borderRadius: [0,4,4,0],\n }\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'hBar',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(): void {\n const makeOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n axisTypes: {\n x: 'value',\n y: 'category',\n },\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-stacked-bar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport class EChartsBarStackedComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'barStacked',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-hbar-stacked',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport class EChartsHBarStackedComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n }\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'hBarStacked',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(): void {\n const makeOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n axisTypes: {\n x: 'value',\n y: 'category',\n },\n };\n this.director.makeBar(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { EchartsBarComponent } from './echarts-bar';\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { MakeBarOpts, VSECDirector } from \"../../builders/director\";\nimport { BarSeriesOption } from \"echarts\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\n\n@Component({\n selector: 'vs-echarts-bar-stacked-radial',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-bar.html',\n styleUrls: ['./echarts-bar.scss'],\n})\nexport class EChartsBarStackedRadialComponent extends EchartsBarComponent {\n\n private variantSeriesOptionsBase: BarSeriesOption = merge(this.baseSeriesOptions, {\n showBackground: false,\n stack: 'total',\n itemStyle: {\n borderRadius: [0,0,0,0],\n },\n emphasis: {\n focus: 'series',\n },\n coordinateSystem: 'polar',\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'barStackedRadial',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n\n protected override make(): void {\n const makeOpts: MakeBarOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeBarRadial(this.data, this.optionsOverrides, makeOpts);\n }\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport * as EChartsOptions from '../../vs-echarts.utils';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { MakeLineOpts, VSECDirector } from '../../builders/director';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { LineSeriesOption } from 'echarts';\nimport { applyLineSelectionStyle } from './echarts-line.utils';\n\n@Component({\n selector: 'vs-echarts-line',\n templateUrl: './echarts-line.html',\n styleUrl: './echarts-line.scss',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ]\n})\nexport abstract class EchartsLineComponent extends BaseEchartsComponent {\n protected baseSeriesOptions: LineSeriesOption = {\n type: 'line',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n smooth: true,\n smoothMonotone: 'x',\n symbol: 'emptyCircle',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 4,\n shadowOffsetY: 2,\n },\n lineStyle: {\n width: 2,\n shadowColor: 'rgba(0, 0, 0, 0.2)',\n shadowBlur: 8,\n shadowOffsetY: 6,\n cap: 'round',\n join: 'round',\n },\n emphasis: {\n focus: 'none',\n lineStyle: {\n width: 4,\n shadowBlur: 10,\n }\n },\n selectedMode: 'single',\n select: {\n itemStyle: {\n color: 'rgba(255, 255, 255, 1)',\n borderCap: 'round',\n borderWidth: 8,\n },\n },\n }\n protected baseProduct: VSEChartProduct = {\n chartKey: 'line',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n protected builder: EChartBuilder = new EChartBuilder(this.baseProduct);\n protected director: VSECDirector = new VSECDirector(this.builder);\n /** variante de producto base/inicial para el builder. \n * \n * Utilizar para crear una variante (extender) un base producto. \n */\n protected abstract variantBaseProduct: VSEChartProduct;\n \n constructor(){\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeLineOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeLine(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { EchartsLineComponent } from \"./echarts-line\";\nimport { LineSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-area',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-line.html',\n styleUrls: ['./echarts-line.scss'],\n})\nexport class EChartsAreaComponent extends EchartsLineComponent {\n\n private variantSeriesOptionsBase: LineSeriesOption = merge(this.baseSeriesOptions, {\n smooth: true,\n areaStyle: {},\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'area',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { merge } from \"lodash\";\nimport { EChartBuilder } from \"../../builders/echart.builder\";\nimport { VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { EchartsLineComponent } from \"./echarts-line\";\nimport { LineSeriesOption } from \"echarts\";\n\n@Component({\n selector: 'vs-echarts-area-stack',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-line.html',\n styleUrls: ['./echarts-line.scss'],\n})\nexport class EChartsAreaStackComponent extends EchartsLineComponent {\n\n private variantSeriesOptionsBase: LineSeriesOption = merge(this.baseSeriesOptions, {\n smooth: true,\n areaStyle: {},\n stack: 'total',\n });\n\n protected variantBaseProduct: VSEChartProduct = {\n chartKey: 'areaStack',\n baseOptions: {\n series: this.variantSeriesOptionsBase,\n }\n }\n\n protected override builder = new EChartBuilder(this.variantBaseProduct);\n protected override director = new VSECDirector(this.builder);\n}","import { Component, SimpleChanges } from '@angular/core';\nimport { BaseEchartsComponent } from '../base-echart.component';\nimport { NgxEchartsDirective } from 'ngx-echarts';\nimport { CommonModule } from '@angular/common';\nimport { MakeScatterOpts, VSECDirector } from '../../builders/director';\nimport { EChartBuilder } from '../../builders/echart.builder';\nimport { VSEChartProduct } from '../../vs-echarts.interfaces';\nimport { ScatterSeriesOption } from 'echarts';\nimport { EChartsTokens } from '../../vs-echarts.utils';\n\n@Component({\n selector: 'vs-echarts-scatter',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-scatter.html',\n styleUrls: ['./echarts-scatter.scss'],\n})\nexport abstract class EchartsScatterComponent extends BaseEchartsComponent {\n\n /**\n * Opciones esenciales inmutables estáticas comunes a todos los charts de dispersión.\n */\n protected baseSeriesOptions: ScatterSeriesOption = {\n type: 'scatter',\n animation: true,\n animationDuration: 1000,\n animationEasing: 'cubicOut',\n symbol: 'circle',\n symbolSize: 6,\n itemStyle: {\n shadowColor: 'rgba(0, 0, 0, 0.1)',\n shadowBlur: 4,\n shadowOffsetY: 2,\n },\n emphasis: {\n focus: 'none',\n scale: true,\n },\n selectedMode: 'single',\n select: {\n label: {\n show: true,\n },\n itemStyle: {\n borderWidth: 2,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n },\n label: {\n show: false,\n position: 'top',\n }\n };\n\n /** variante de producto base/inicial para el builder. \n * \n * Utilizar para crear una variante (extender) un base producto. \n */\n protected abstract variantBaseProduct: VSEChartProduct;\n\n protected baseProduct: VSEChartProduct = {\n chartKey: 'scatter',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n\n protected builder = new EChartBuilder(this.baseProduct);\n protected director = new VSECDirector(this.builder);\n\n constructor() {\n super();\n }\n\n protected make(): void {\n const makeOpts: MakeScatterOpts = {\n valueFormatter: this.valueFormatter,\n palette: this.palette,\n colorResolver: this.colorResolver,\n };\n this.director.makeScatter(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div class=\"echarts-container\" echarts \n [options]=\"{}\"\n [initOpts]=\"initOptions\" \n [autoResize]=\"true\" \n (chartInit)=\"onChartInit($event)\" \n (chartClick)=\"onChartClick($event)\" \n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { BaseEchartsComponent } from \"../base-echart.component\";\nimport { SunburstSeriesOption } from \"echarts\";\nimport { VSECDirector, MakeSunburstOpts } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { SunburstBuilder } from \"../../builders/sunburst.builder\";\n\n@Component({\n selector: 'vs-echarts-sunburst',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-sunburst.html',\n styleUrls: ['./echarts-sunburst.scss'],\n})\nexport class EChartsSunburstComponent extends BaseEchartsComponent {\n protected baseSeriesOptions: SunburstSeriesOption = {\n type: 'sunburst',\n radius: [0, '85%'],\n sort: undefined,\n emphasis: {\n focus: 'ancestor'\n },\n levels: [\n {},\n {\n r0: '15%',\n itemStyle: {\n borderWidth: 2\n },\n label: {\n rotate: 'tangential'\n }\n },\n ]\n };\n protected baseProduct: VSEChartProduct = {\n chartKey: 'sunburst',\n baseOptions: {\n series: this.baseSeriesOptions,\n },\n };\n protected builder: SunburstBuilder = new SunburstBuilder(this.baseProduct);\n protected director: VSECDirector = new VSECDirector(this.builder);\n protected make(): void {\n const makeOpts: MakeSunburstOpts = {\n palette: this.palette,\n colorResolver: this.colorResolver,\n valueFormatter: this.valueFormatter,\n };\n this.director.makeSunburst(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n></div>","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { BaseEchartsComponent } from \"../base-echart.component\";\nimport { SankeySeriesOption } from \"echarts\";\nimport { VSECDirector, MakeOpts } from \"../../builders/director\";\nimport { VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { SankeyBuilder } from \"../../builders/sankey.builder\";\n\n@Component({\n selector: 'vs-echarts-sankey',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-sankey.html',\n styleUrls: ['./echarts-sankey.scss'],\n})\nexport class EchartsSankeyComponent extends BaseEchartsComponent {\n protected baseSeriesOptions: SankeySeriesOption = {\n type: 'sankey',\n orient: 'horizontal',\n draggable: true,\n emphasis: {\n focus: 'adjacency'\n },\n lineStyle: {\n color: 'source',\n opacity: 0.25,\n curveness: 0.5\n },\n label: {\n show: true,\n position: 'right',\n fontFamily: \"'Inter', 'Roboto', 'Open Sans', sans-serif\",\n fontSize: 10\n }\n };\n\n protected baseProduct: VSEChartProduct = {\n chartKey: 'sankey',\n baseOptions: {\n series: this.baseSeriesOptions,\n },\n };\n\n protected builder: SankeyBuilder = new SankeyBuilder(this.baseProduct);\n protected director: VSECDirector = new VSECDirector(this.builder);\n\n protected make(): void {\n const makeOpts: MakeOpts = {\n palette: this.palette,\n colorResolver: this.colorResolver,\n valueFormatter: this.valueFormatter,\n };\n this.director.makeSankey(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n></div>\n","import { CommonModule } from \"@angular/common\";\nimport { Component } from \"@angular/core\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { BaseEchartsComponent } from \"../base-echart.component\";\nimport { BoxplotSeriesOption } from \"echarts\";\nimport { IEChartBuilder, VSEChartProduct } from \"../../vs-echarts.interfaces\";\nimport { MakeBoxplotOpts, MakeOpts, VSECDirector } from \"../../builders/director\";\nimport { BoxPlotBuilder } from \"../../builders/boxplot.builder\";\n\n@Component({\n selector: 'vs-echarts-hboxplot',\n templateUrl: 'echarts-hboxplot.html',\n styleUrls: [\n 'echarts-hboxplot.scss',\n ],\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n})\nexport class EChartsHBoxplotComponent extends BaseEchartsComponent {\n\n protected baseSeriesOptions: BoxplotSeriesOption = {\n type: 'boxplot',\n itemStyle: {\n color: '#b8c5f2'\n },\n };\n\n protected baseProduct: VSEChartProduct = {\n chartKey: 'hBoxplot',\n baseOptions: {\n series: this.baseSeriesOptions,\n }\n };\n\n protected builder: IEChartBuilder<BoxplotSeriesOption> = new BoxPlotBuilder(this.baseProduct);\n protected override director: VSECDirector = new VSECDirector(this.builder);\n protected override make(): void {\n const makeOpts: MakeBoxplotOpts = {\n palette: this.palette,\n colorResolver: this.colorResolver,\n valueFormatter: this.valueFormatter,\n axisTypes: {\n x: 'value',\n y: 'category',\n },\n };\n this.director.makeBoxplot(this.data, this.optionsOverrides, makeOpts);\n }\n}\n","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n></div>\n","import { CommonModule } from \"@angular/common\";\nimport { BaseEchartsComponent } from \"../base-echart.component\";\nimport { NgxEchartsDirective } from \"ngx-echarts\";\nimport { Component } from \"@angular/core\";\nimport { HeatmapSeriesOption, SeriesOption, VisualMapComponentOption } from \"echarts\";\nimport { MakeHeatmapCalendarOpts, VSECDirector } from \"../../builders/director\";\nimport { VSEChartProduct, IEChartBuilder } from \"../../vs-echarts.interfaces\";\nimport { HeatmapCalendarBuilder } from \"../../builders/heatmapCalendar.builder\";\nimport { EChartsTokens, valueToLocale } from \"../../vs-echarts.utils\";\n\n@Component({\n selector: 'vs-echarts-heatmapCalendar',\n standalone: true,\n imports: [\n CommonModule,\n NgxEchartsDirective,\n ],\n templateUrl: './echarts-heatmapCalendar.html',\n styleUrls: ['./echarts-heatmapCalendar.scss'],\n})\nexport class EChartsHeatmapCalendar extends BaseEchartsComponent {\n\n /** aires para el calculo de resize y posicionamientos de distintos componentes */\n private calendarPaddings = {\n visualMapTop: 5,\n };\n\n protected override baseSeriesOptions: HeatmapSeriesOption = {\n type: 'heatmap',\n coordinateSystem: 'calendar',\n selectedMode: 'single',\n select: {\n itemStyle: {\n borderWidth: 2,\n borderColor: EChartsTokens.sBorderColor,\n shadowColor: EChartsTokens.sShadowColor,\n shadowBlur: 6,\n }\n }\n }; \n protected override baseProduct: VSEChartProduct = {\n chartKey: 'heatmapCalendar',\n baseOptions: {\n visualMap: {\n calculable: true,\n orient: 'horizontal',\n left: 'center',\n top: this.calendarPaddings.visualMapTop,\n formatter: (dv) => {\n const value = dv ?? '';\n return valueToLocale(value);\n },\n }, // dinamico\n calendar: {\n cellSize: ['auto', 20],\n right: 5,\n left: 60,\n yearLabel: { show: true },\n dayLabel: { firstDay: 1 },\n },\n series: this.baseSeriesOptions, // dinamico, uno por año.\n }\n };\n protected override builder: IEChartBuilder<HeatmapSeriesOption, any, any> = new HeatmapCalendarBuilder(this.baseProduct);\n protected override director: VSECDirector = new VSECDirector(this.builder);\n protected override make(): void {\n const makeOpts: MakeHeatmapCalendarOpts = {\n palette: this.palette,\n valueFormatter: this.valueFormatter,\n colorResolver: this.colorResolver,\n }\n this.director.makeHeatmapCalendar(this.data, this.optionsOverrides, makeOpts);\n }\n\n protected override afterSetOptionsHook: (() => void) = () => {\n if (!this.chartInstance) return;\n\n let chartHeight = 0;\n const gElements = this.chartInstance.getDom().getElementsByTagName(\"g\");\n for (let i = 0; i < gElements.length; i++) {\n const ge = gElements[i];\n const geHeight = ge.getBBox().height;\n if (chartHeight < geHeight) {\n chartHeight = geHeight;\n }\n }\n\n \n const { visualMapTop } = this.calendarPaddings;\n /**\n * aire inferior para el svg maestro. \n */\n const svgBottom = 5;\n this.chartInstance.resize({ height: chartHeight + visualMapTop + svgBottom});\n };\n\n override onChartClick(event: any): void {\n if (event.componentType === 'series') {\n const dimension = this.data.dimensions.filter(d => d.name != 'category')[0];\n const dimensionAlias = dimension.displayName;\n const dimensionKey = dimension.name;\n const itemValue = event.value[event.encode['value']];\n const date = event.value[event.encode['time']];\n\n // opero event para que sea compatible con el de base\n event.value = {\n category: date,\n [dimensionKey]: itemValue,\n }\n event.name = date;\n event.seriesName = dimensionAlias;\n\n super.onChartClick(event);\n }\n }\n\n}","<div\n class=\"echarts-container\"\n echarts\n [options]=\"{}\"\n [initOpts]=\"initOptions\"\n [autoResize]=\"true\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n (chartSelectChanged)=\"onChartSelectChanged($event)\"\n></div>","// Interfaces de Inputs de Base EChart Component // \n\nimport { BarSeriesOption, LineSeriesOption, PieSeriesOption } from \"echarts\";\nimport { PolarOption, TooltipOption } from \"echarts/types/dist/shared\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { IAreaOptionsOverrides, IAreaStackOptionsOverrides, IBarStackedOptionsOverrides, IBarStackedRadialOptionsOverrides, IHBarOptionsOverrides, IHBarStackedOptionsOverrides, IHBoxplotOptionsOverrides, IOptionsOverrides } from \"./vs-echarts.interfaces\";\n\n/**\n * IEChartDataNode\n * \n * Representa un nodo/fila en el arreglo de objetos jerárquico.\n */\nexport interface IEChartDataNode {\n category: string;\n [key: string]: any; // Claves de series/medidas y sus valores numéricos\n children?: IEChartDataNode[]; // Subfilas recursivas jerárquicas\n}\n\nexport interface IEChartDimension {\n name: string;\n displayName?: string;\n}\n\n/**\n * IEChartData\n * \n * Interfaz unificada para el paso de datos basados en dataset a componentes de ECharts.\n * \n */\nexport interface IEChartData {\n dimensions: IEChartDimension[];\n source: IEChartDataNode[];\n}\n\n/**\n * ChartValueFormatter\n * \n * Callback para formatear los valores numéricos de las celdas/series.\n */\nexport type ChartValueFormatter = (value: number, key?: string) => string;\n\n/**\n * ChartColorResolver\n * \n * Callback para determinar el color de un elemento gráfico basado en sus parámetros.\n */\nexport type ChartColorResolver = (params: any) => string;\n\n\n/**\n * wrapper de options overrides para variantes de graficos\n */\nexport interface IOptionsOverridesWrapper extends IOptionsOverrides {\n // commons //\n // end //\n // concrete options //\n /** area options overrides */\n area: IAreaOptionsOverrides;\n /** area stack options overrides */\n areaStack: IAreaStackOptionsOverrides;\n barStacked: IBarStackedOptionsOverrides;\n barStackedRadial: IBarStackedRadialOptionsOverrides;\n hBar: IHBarOptionsOverrides;\n hBarStacked: IHBarStackedOptionsOverrides;\n hBoxplot: IHBoxplotOptionsOverrides; \n // end //\n}\n\n// TopLevelFormatterParams","import { BarSeriesOption, EChartsOption, FunnelSeriesOption, LineSeriesOption, PieSeriesOption, ScatterSeriesOption, SeriesOption, SunburstSeriesOption, SankeySeriesOption } from \"echarts\";\nimport { ChartValueFormatter, ChartColorResolver, IEChartData, IOptionsOverridesWrapper } from \"./vs-echarts-api.interfaces\";\nimport { CategoryAxisBaseOption, ValueAxisBaseOption } from \"echarts/types/src/coord/axisCommonTypes.js\";\nimport { TooltipOption } from \"echarts/types/dist/shared\";\nimport { BoxplotSeriesOption } from \"echarts\";\nimport { HeatmapSeriesOption } from \"echarts\";\n\ntype ChartKey = keyof Omit<IOptionsOverridesWrapper, \"axis\" | \"tooltip\">;\n\nexport type ISeriesLayoutOpts = {\n coordinateSystem?: 'cartesian2d' | 'polar';\n axisTypes?: {\n x: 'category' | 'value';\n y: 'category' | 'value';\n };\n};\n\n/** los recibira el director\n * \n */\nexport type VSEChartProduct = {\n chartKey: ChartKey;\n baseOptions: EChartsOption;\n}\n\nexport interface IEChartBuilder<SeriesType = SeriesOption, SeriesConfigOptions = any, DatasetConfigOptions = any> {\n /** producto base */\n baseProduct: VSEChartProduct;\n\n reset(): void;\n\n // add components\n addDataset(data: IEChartData, opts?: DatasetConfigOptions): void;\n addSeries(data: IEChartData, overrides: SeriesType, opts?: SeriesConfigOptions): void;\n addTooltip(data: IEChartData, overrides: ITooltipOptionsOverrides): void;\n addPolar(): void;\n addXAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type?: 'category'|'value'): void;\n addYAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"], type?: 'category'|'value'): void;\n addRadiusAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void;\n addAngleAxis(data: IEChartData, overrides: IOptionsOverrides[\"axis\"]): void;\n addLegend(): void;\n addCommons(): void;\n addGraphic(): void;\n addDataZoom(): void;\n \n // add callbacks\n setValueFormatter(formatter: ChartValueFormatter): void;\n setPalette(palette: string[]): void;\n setColorResolver(resolver: ChartColorResolver): void;\n getResult(): EChartsOption;\n}\n\n\nexport type EChartClickType = 'cross-filter';\n\nexport interface IAreaOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\">>\n};\nexport interface IAreaStackOptionsOverrides extends ILineOptionsOverrides {\n series: ILineOptionsOverrides[\"series\"] & Required<Pick<ILineOptionsOverrides[\"series\"], \"smooth\">>\n};\n\nexport interface IHBarOptionsOverrides extends IBarOptionsOverrides {\n // orientation: 'h';\n // series: IBarOptionsOverrides[\"series\"] & Required<Pick<IBarOptionsOverrides[\"series\"], \"itemStyle\">>\n};\n\nexport interface IHBarStackedOptionsOverrides extends IBarOptionsOverrides {\n // tooltip: IHBarOptionsOverrides[\"tooltip\"] & Required<Pick<IHBarOptionsOverrides[\"tooltip\"], \"trigger\">>;\n // series: IHBarOptionsOverrides[\"series\"] & Required<Pick<IHBarOptionsOverrides[\"series\"], \"emphasis\"|\"stack\">>\n} \n\nexport interface IHBoxplotOptionsOverrides extends IBoxplotOptionsOverrides {\n}\n\nexport interface IBarStackedOptionsOverrides extends IBarOptionsOverrides {\n // tooltip: IBarOptionsOverrides[\"tooltip\"] & Required<Pick<IBarOptionsOverrides[\"tooltip\"], \"trigger\">> \n // series: IBarOptionsOverrides[\"series\"] & Required<Pick<IBarOptionsOverrides[\"series\"], \"emphasis\"|\"stack\"|\"itemStyle\">>\n}\n\nexport interface IBarStackedRadialOptionsOverrides extends IBarStackedOptionsOverrides {\n // series: IBarStackedOptionsOverrides[\"series\"] & Required<Pick<IBarStackedOptionsOverrides[\"series\"], \"coordinateSystem\">>\n}\n\nexport type ChartOrientation = 'v' | 'h';\n\nexport interface ILineOptionsOverrides {\n series: Pick<LineSeriesOption, \"smooth\" | \"areaStyle\" | \"stack\">,\n}\n\nexport interface IBarOptionsOverrides {\n orientation?: ChartOrientation;\n // tooltip: Pick<TooltipOption, \"trigger\">,\n series: Pick<BarSeriesOption, \"itemStyle\"|\"emphasis\"|\"stack\"|\"showBackground\"|\"coordinateSystem\">;\n}\n\nexport interface IRingOptionsOverrides {\n series?: Partial<PieSeriesOption>;\n}\n\nexport interface IPieOptionsOverrides {\n series?: Partial<PieSeriesOption>;\n}\n\nexport interface IScatterOptionsOverrides {\n series?: Partial<ScatterSeriesOption>;\n}\n\nexport interface IFunnelOptionsOverrides {\n series?: Partial<FunnelSeriesOption>;\n}\n\nexport interface IHeatmapCalendarOptionsOverrides {\n series?: HeatmapSeriesOption;\n}\n\nexport interface ISunburstOptionsOverrides {\n series?: Partial<SunburstSeriesOption>;\n}\n\nexport interface ISankeyOptionsOverrides {\n series?: Partial<SankeySeriesOption>;\n}\n\nexport interface IBoxplotOptionsOverrides {\n series?: Partial<BoxplotSeriesOption>;\n}\n\nexport interface IAxisOptionsOverrides {\n categoryAxis: CategoryAxisBaseOption[];\n valueAxis: ValueAxisBaseOption[];\n} \n\nexport interface ITooltipOptionsOverrides extends Pick<TooltipOption, \"trigger\"> {\n}\n\n/**\n * VS-EChartsOptionsOverrides\n * \n * api opciones visuales disponibles\n */\nexport interface IOptionsOverrides {\n // commons //\n axis: IAxisOptionsOverrides\n tooltip: ITooltipOptionsOverrides;\n // end //\n // concrete options //\n /** line options overrides */\n line: ILineOptionsOverrides;\n /** bar options overrides */\n bar: IBarOptionsOverrides;\n /** ring options overrides */\n ring: IRingOptionsOverrides;\n /** pie options overrides */\n pie: IPieOptionsOverrides;\n /** scatter options overrides */\n scatter: IScatterOptionsOverrides;\n /** funnel options overrides */\n funnel: IFunnelOptionsOverrides;\n /** sunburst options overrides */\n sunburst: ISunburstOptionsOverrides;\n /** sankey options overrides */\n sankey: ISankeyOptionsOverrides;\n /** boxplot options overrides */\n hBoxplot: IHBoxplotOptionsOverrides;\n /** heatmap calendar options overrides */\n heatmapCalendar: IHeatmapCalendarOptionsOverrides;\n // end //\n}\n\nexport type NGXEchartsSelectChangeEventData = {\n type: string;\n fromAction: string;\n fromActionPayload: {\n dataIndexInside: number;\n dataType: unknown;\n isFromClick: boolean;\n seriesIndex: number;\n type: string;\n },\n isFromClick: boolean;\n selected: {dataIndex: number[], seriesIndex: number }[];\n escapeConnect: unknown;\n}\n\nexport type VSEchartsLocale =\n | 'ZH' | 'EN' | 'AR' | 'CS' | 'DE' | 'EL' | 'ES' | 'FA' | 'FI' | 'FR'\n | 'HU' | 'IT' | 'JA' | 'KO' | 'LV' | 'nb-NO' | 'NL' | 'PL' | 'PT-br'\n | 'RO' | 'RU' | 'SI' | 'SV' | 'TH' | 'TR' | 'UK' | 'VI';\n\nexport interface VSEchartsConfig {\n renderer?: 'canvas' | 'svg';\n locale?: VSEchartsLocale;\n}","/*\n * Public API Surface of echarts\n */\nexport { defaultOptionsOverrides, provideVSEcharts } from './lib/vs-echarts.config';\nexport * from './lib/vs-echarts-config.service';\nexport * from './lib/charts/echarts-ring/echarts-ring';\nexport * from './lib/charts/echarts-pie/echarts-pie';\nexport * from './lib/charts/echarts-funnel/echarts-funnel';\nexport * from './lib/charts/echarts-bar/echarts-bar';\nexport * from './lib/charts/echarts-bar/echarts-hBar';\nexport * from './lib/charts/echarts-bar/echarts-stackedBar';\nexport * from './lib/charts/echarts-bar/echarts-hBarStacked';\nexport * from './lib/charts/echarts-bar/echarts-barStackedRadial';\nexport * from './lib/charts/echarts-line/echarts-line';\nexport * from './lib/charts/echarts-line/echarts-area';\nexport * from './lib/charts/echarts-line/echarts-areaStack';\nexport * from './lib/charts/echarts-scatter/echarts-scatter';\nexport * from './lib/charts/echarts-sunburst/echarts-sunburst';\nexport * from './lib/charts/echarts-sankey/echarts-sankey';\nexport * from './lib/charts/echarts-hboxplot/echarts-hboxplot';\nexport * from './lib/charts/echarts-heatmapCalendar/echarts-heatmapCalendar';\nexport * from './lib/charts/base-echart.component';\nexport * from './lib/vs-echarts-api.interfaces';\nexport * from './lib/vs-echarts.interfaces';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["BuilderUtils.getCommons","BuilderUtils.getTooltipFormatter","BuilderUtils.getTooltipOptions","BuilderUtils.getLegendOptions","merge","BuilderUtils.getValueAxisOptions","BuilderUtils.getCategoryAxisOptions","BuilderUtils.mapHierarchicalData","BuilderUtils.getTreeDepth"],"mappings":"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"}
|