diff --git a/frontend/src/adapters/gateways/EChartsOptionBuilder/index.ts b/frontend/src/adapters/gateways/EChartsOptionBuilder/index.ts index de65f20..35b6992 100644 --- a/frontend/src/adapters/gateways/EChartsOptionBuilder/index.ts +++ b/frontend/src/adapters/gateways/EChartsOptionBuilder/index.ts @@ -23,8 +23,13 @@ const DEFAULT_STYLE: StyleConfig = { animation: { enabled: true, duration: 500, easing: 'ease-out' }, }; -function ensureStyle(style: any): StyleConfig { +function ensureStyle(style: any): StyleConfig & Record { if (!style || typeof style !== 'object') return DEFAULT_STYLE; + const known = new Set(['title','colors','legend','xAxis','yAxis','dataLabel','background','border','animation']); + const custom: Record = {}; + for (const key of Object.keys(style)) { + if (!known.has(key)) custom[key] = style[key]; + } return { title: { ...DEFAULT_STYLE.title, ...(style.title ?? {}) }, colors: (Array.isArray(style.colors) && style.colors.length > 0) ? style.colors : DEFAULT_STYLE.colors, @@ -35,6 +40,7 @@ function ensureStyle(style: any): StyleConfig { background: { ...DEFAULT_STYLE.background, ...(style.background ?? {}) }, border: { ...DEFAULT_STYLE.border, ...(style.border ?? {}) }, animation: { ...DEFAULT_STYLE.animation, ...(style.animation ?? {}) }, + ...custom, }; }