Commit Graph

351 Commits

Author SHA1 Message Date
Evan Rusackas
184f800ec1 feat: Complete migration of ALL ECharts control panels to React architecture 🎉
Migrated 25 chart control panels from legacy config-based to modern React-based:

Core Charts:
- Pie, Funnel, Sankey, Treemap (already done)
- BoxPlot, Bubble, Gantt, Gauge, Graph
- Heatmap, Histogram, Radar, Sunburst, Tree, Waterfall

BigNumber Variants (3):
- BigNumberTotal
- BigNumberPeriodOverPeriod
- BigNumberWithTrendline

Timeseries Variants (7):
- Area, Step, Line, Bar, Scatter, SmoothLine
- MixedTimeseries (most complex with dual Y-axes)

Key improvements across all migrations:
- Direct React components instead of config objects
- Full TypeScript support with proper types
- Tab-based organization (Data/Customize/Options)
- Proper safety checks and validation
- Conditional rendering for dependent controls
- Single column handling where needed
- Modern control components (DndColumnSelect, etc.)

All charts compile successfully with webpack dev server.
This completes the control panel modernization effort!

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 21:25:23 -07:00
Evan Rusackas
a5bc492a95 feat: Migrate Sankey and Treemap control panels to React architecture
- Created SankeyControlPanelSimple.tsx with React-based controls
- Created TreemapControlPanelSimple.tsx with tab-based layout
- Both follow established patterns from Pie and Funnel migrations
- Added special handling for single-column selection in Sankey
- Updated migration agent with new patterns and common issues
- All charts compile successfully with webpack dev server

Key improvements:
- Direct React components instead of config objects
- Full TypeScript support with proper types
- Tab-based organization (Data/Customize)
- Proper safety checks and validation
- Consistent with modern control panel architecture

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 16:48:57 -07:00
Evan Rusackas
544236ff20 fix: Import Tabs from antd instead of @superset-ui/core in Funnel control panel
The @superset-ui/core package doesn't export a Tabs component, causing
'Element type is invalid' error. Fixed by importing Tabs directly from antd,
matching the pattern used in PieControlPanelSimple.tsx.

Also fixed React hooks order issue in PieControlPanelSimple.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-18 16:00:56 -07:00
Evan Rusackas
2670c3e951 Revert "refactor: Split control panel to work with existing Superset tabs"
This reverts commit 0f60a8d57b.
2025-08-18 13:49:23 -07:00
Evan Rusackas
0f60a8d57b refactor: Split control panel to work with existing Superset tabs
- Removed custom Tabs implementation - we don't create our own tabs
- Split into two components: PieDataPanel and PieCustomizePanel
- PieDataPanel provides content for the existing Data tab
- PieCustomizePanel provides content for the existing Customize tab
- Both components share the same props and state through common interface
- Used controlPanelSections with tabOverride to place controls in correct tabs
- Chart type selector remains above tabs (handled by Superset UI)
- Maintains all controls and conditional rendering logic
2025-08-18 13:32:24 -07:00
Evan Rusackas
51c40dc971 feat: Restructure Pie control panel with tabs for Data and Customize
- Added Ant Design Tabs to split controls into Data and Customize tabs
- Data tab contains: Group by, Metric, Filters, Row limit, Sort by metric
- Customize tab contains: Chart Options, Labels, and Pie shape sections
- Added chart/viz type picker above the tabs showing 'Pie Chart' title and description
- Maintains all existing controls and their conditional rendering logic
- Uses useState hook to manage active tab state
2025-08-18 13:22:20 -07:00
Evan Rusackas
5c90fca556 feat: Add all missing controls to Pie chart React control panel
- Added Filters control (adhoc_filters) to Query section
- Added Percentage threshold and Threshold for Other controls
- Added Rose Type control for Nightingale chart visualization
- Added comprehensive Labels section with:
  - Label Type selector with all 8 options
  - Conditional Label Template field
  - Number format, Currency format, and Date format controls
  - Conditional Put labels outside control
  - Show Total checkbox
- Reorganized controls into logical sections: Query, Chart Options, Labels, and Pie shape
- All controls now use proper React components with conditional rendering
- Added all missing controlOverrides with proper defaults and renderTrigger flags
2025-08-18 13:01:13 -07:00
Evan Rusackas
859e627c30 fix: Restore all missing features to Pie control panel
- Added back outer radius slider control with min/max constraints
- Added conditional inner radius control that only shows when Donut is checked
- Added color palette selector component
- Added conditional Label Line control that only shows when Show Labels is checked
- Fixed double headers on Metric and Group by controls by removing duplicate labels
- All controls now properly configured with renderTrigger where appropriate
2025-08-17 10:36:47 -07:00
Evan Rusackas
980c06e7d7 refactor: Clean up Pie control panel implementation
- Remove unnecessary control panel files (controlPanel.tsx, controlPanelModern.tsx, PieControlPanel.tsx)
- Keep only the simplified working version (PieControlPanelSimple.tsx)
- Fix all linting and type-checking errors
- Remove unused imports and color literals
2025-08-17 10:29:21 -07:00
Evan Rusackas
204b32e4a0 feat: Add infrastructure for modern React control panels
- Modified expandControlConfig to handle modern panel components
- Added ModernControlPanelRenderer component for bridging
- Updated ControlPanelsContainer to render modern panels directly
- Modified getAllControlsState to process controlOverrides from modern panels
- Updated getSectionsToRender to handle modern control panels
- Created PieControlPanelSimple with React-based controls, tooltips, and dynamic rendering

This sets up the foundation for migrating from config-based to React component-based control panels.
2025-08-17 10:12:06 -07:00
Evan Rusackas
3603775df1 feat: Create TRUE React-based control panel for Pie chart
- Complete abandonment of controlPanelSections/controlSetRows architecture
- Use Ant Design Collapse and Grid for layout instead of proprietary constructs
- Import actual React control components from controlMap
- Direct component usage, no config objects
- Clean, modern React component approach with proper props

This is the actual React-based control panel we want - pure components,
no legacy structures, just React + Ant Design.
2025-08-14 10:47:51 -07:00
Evan Rusackas
cf3b93b7bc fix: Update Pie chart control panel to use proper shared controls
- Fix groupby and metric control configurations
- Use spread operator to properly extend shared controls
- Add proper labels and descriptions for controls
- Temporarily disable formDataOverrides to debug column issues
- Fix sort_by_metric control type definition

The 'Referenced columns not available in DataFrame' error should now be resolved.
2025-08-14 10:03:05 -07:00
Evan Rusackas
df772a9afa feat: Implement nuclear approach for control panel migration
- Create empty control panel placeholder for non-migrated charts
- Switch Bar and Line charts to empty panels temporarily
- Update Pie chart to use traditional control config structure
- Remove experimental React-based PieControlPanel component
- Fix TypeScript errors in control panel configurations
- Simplify migration path by focusing on one working chart first

This approach allows us to get one chart (Pie) working properly
before migrating others, avoiding complex dual-architecture issues.
2025-08-14 09:51:09 -07:00
Evan Rusackas
d01c038471 feat: Implement phased control panel migration approach
- Create modern Pie chart control panel using React/AntD components
- Add ModernControlPanelRenderer bridge for backward compatibility
- Create ReactControlWrappers for control components
- Update ControlPanelsContainer to support both legacy and modern formats
- Add comprehensive migration documentation and plan

This establishes the foundation for migrating from controlSetRows to
modern React-based control panels while maintaining full backward
compatibility. The Pie chart serves as the proof of concept for the
phased migration approach.

Note: This is a work-in-progress implementation that demonstrates
the migration approach. TypeScript errors and linting issues will
be resolved as the migration progresses.

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-13 17:25:53 -07:00
Evan Rusackas
26f0556bef chore(controls): Remove all extraneous control panel files
- Delete all controlPanelModern.tsx files (JSONForms format)
- Delete controlPanelReact.tsx and other experimental variants
- Rename Word Cloud controlPanelFixed.ts to controlPanel.ts
- Update imports to use standard controlPanel files
- Verify no string references remain in control panels

All visualizations now use their standard controlPanel.ts/tsx files with
React component functions. The codebase is now consistent with the new
control panel architecture.
2025-08-13 11:02:09 -07:00
Evan Rusackas
97913203e1 feat(explore): Migrate control panels to React-based architecture
- Replace string-referenced control system with React components
- Add useFormData hook for direct Redux integration
- Create reusable control wrapper components (SeriesControl, MetricControl, etc.)
- Support both camelCase and snake_case for backward compatibility
- Successfully migrate Word Cloud control panel as proof of concept
- Remove JSONForms implementation in favor of simpler React approach
- Add migration guide to CLAUDE.md for other control panels

This simplifies the control panel architecture by:
1. Eliminating string references in favor of React components
2. Providing type-safe control definitions
3. Connecting controls directly to Redux state
4. Making control panels easier to understand and maintain

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-12 18:22:00 -07:00
Evan Rusackas
06b98c1095 feat(controls): Migrate control panels to JSON Forms format
Major milestone in modernizing the control panel system:

## Changes Made

### Infrastructure
- Created ControlPanelsContainerWrapper to auto-detect JSON Forms vs legacy format
- Updated ExploreViewContainer to use the wrapper for automatic format detection
- Both legacy and JSON Forms control panels now work seamlessly

### Migrated Control Panels (15 total)
- 10 legacy-plugin-chart-* control panels
- 2 BigNumber ECharts control panels
- 1 Deck.gl Arc layer control panel
- 1 Word Cloud control panel (test case)
- 1 Chord diagram (previously attempted, now proper)

### Migration Pattern Established
- JSON Schema for data structure
- UI Schema for layout with collapsible groups
- Preserved all controlOverrides and formDataOverrides
- Full TypeScript support with proper types

### Benefits
- Industry-standard JSON Forms format
- Better separation of data model and UI
- Cleaner, more maintainable code
- Foundation for future enhancements

Next phase: Migrate remaining 40+ control panels and deprecate legacy format.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-08 14:48:15 -07:00
Evan Rusackas
fe0ea69280 feat(controls): Migrate all control panels to React component functions
Major refactor to modernize control panel system:

## Changes Made

### Core Infrastructure
- Created InlineControls.tsx with helper functions for all control types
- Added SharedControlComponents for replacing string control references
- Fixed TypeScript types and imports across all control panels
- Added proper exports and type definitions

### Control Panel Migrations
- Converted 20+ control panel files from inline configurations to React components
- Eliminated all string control references (e.g., ['metric'] → MetricControl())
- Updated all legacy-plugin-chart-* plugins
- Updated all legacy-preset-chart-deckgl layers
- Fixed chord diagram control panel (was prematurely using JSON Forms)

### Type Safety Improvements
- Fixed choice array type mismatches (now supports mixed types)
- Resolved import conflicts by renaming inline control helpers
- Added proper TypeScript types for all control configurations
- Reduced TypeScript errors by 57% (44 → 19)

### Pattern Conversion
Before: { name: 'control', config: { type: 'SelectControl', ... } }
After: SelectControl({ name: 'control', ... })

This sets the foundation for the next phase: migrating to JSON Forms format.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-08 14:14:39 -07:00
JUST.in DO IT
1a7a381bd5 fix(echart): initial chart animation (#34516) 2025-08-02 08:41:53 -03:00
Evan Rusackas
6a83b6fd87 fix(pie chart): Total now positioned correctly with all Legend positions, and respects theming (#34435) 2025-08-01 12:00:23 -07:00
Evan Rusackas
659cd33749 fix(echarts): resolve bar chart X-axis time formatting stuck on adaptive (#34436)
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-01 09:55:20 -07:00
yousoph
70394e79ef feat: Add configurable query identifiers for Mixed Timeseries charts (#34406)
Co-authored-by: Claude <noreply@anthropic.com>
2025-07-31 12:16:12 -07:00
Michael Gerber
f168dd69a8 fix(sunburst): Fix sunburst chart cross-filter logic (#31495) 2025-07-30 18:47:02 -07:00
Maxime Beauchemin
0964a8bb7a fix(big number with trendline): running 2 identical queries for no good reason (#34296) 2025-07-29 13:07:28 -07:00
Maxime Beauchemin
1be2287b3a feat(timeseries): enhance 'Series Limit' to support grouping the long tail (#34308) 2025-07-25 16:26:32 -07:00
Maxime Beauchemin
e741a3167f feat: add a theme CRUD page to manage themes (#34182)
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
2025-07-25 13:26:41 -07:00
Mehmet Salih Yavuz
31a15c5162 fix(DrillBy): make drill by work with multi metric charts (#34171) 2025-07-15 15:25:48 +02:00
Maxime Beauchemin
5d6a979cd0 chore: remove some of the deprecated theme.colors.* (#34056) 2025-07-04 11:39:03 -07:00
Vladislav Korenkov
9f0523977d feat(plugin-chart-echarts): add Gantt Chart plugin (#33716) 2025-07-03 14:23:50 -07:00
Vladislav Korenkov
d1b372f670 fix(chart controls): remove duplicated descriptions for chart controls (#33954) 2025-07-03 16:01:59 -03:00
Đỗ Trọng Hải
42288c4784 build(dev-deps): upgrade Jest to major version v30 (#33979) 2025-07-03 11:01:40 +07:00
SBIN2010
8ee5505b61 fix(plugin-chart-echarts): correct label position for Negative Values bar chart (#32849) 2025-06-26 16:26:44 -07:00
Damian Pendrak
5d23dea5aa feat(charts): Add row limit control to box plot chart (#33871) 2025-06-24 16:59:38 +03:00
Maxime Beauchemin
dd129fa403 feat(theming): land Ant Design v5 overhaul — dynamic themes, real dark mode + massive styling refactor (#31590)
Co-authored-by: Enzo Martellucci <52219496+EnxDev@users.noreply.github.com>
Co-authored-by: Diego Pucci <diegopucci.me@gmail.com>
Co-authored-by: Mehmet Salih Yavuz <salih.yavuz@proton.me>
Co-authored-by: Geido <60598000+geido@users.noreply.github.com>
Co-authored-by: Alexandru Soare <37236580+alexandrusoare@users.noreply.github.com>
Co-authored-by: Damian Pendrak <dpendrak@gmail.com>
Co-authored-by: Pius Iniobong <67148161+payose@users.noreply.github.com>
Co-authored-by: Enzo Martellucci <enzomartellucci@gmail.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
2025-06-20 13:38:58 -07:00
Vitor Avila
93583220a7 fix: Consider last data point for Big Number comparison lag (#33830) 2025-06-19 17:53:31 -03:00
amaannawab923
9df990c2d1 fix(Echarts): Echarts Legend Scroll fix (#33779)
Co-authored-by: Amaan Nawab <nelsondrew07@gmail.com>
2025-06-16 18:44:52 +03:00
Beto Dealmeida
d7d7b7c0e6 fix: apply d3 format to BigNumber(s) (#33759) 2025-06-12 16:02:38 -04:00
Evan Rusackas
e05ccb3824 feat: x axis interval control to show ALL ticks on timeseries charts (#33729) 2025-06-10 21:40:56 -06:00
nmdo
d11b6d557e feat(MixedTimeSeries): Add onlyTotal and Sort Series to Mixed TimeSeries (#33634) 2025-06-09 15:59:54 -06:00
Fardin Mustaque
e20a08cb14 fix: add query identifier to legend items in mixed time series charts (#33519) 2025-05-29 14:42:48 +02:00
Levis Mbote
429935a277 fix(big number with trendline): add None option to the aggregation method dropdown (#33407) 2025-05-29 14:33:04 +02:00
amaannawab923
bdfb698aa4 fix(Radar): Radar chart normalisation (#33559)
Co-authored-by: Amaan Nawab <nelsondrew07@gmail.com>
2025-05-26 22:01:17 +03:00
Richard Fogaca Nienkotter
38868f9ff4 fix(sankey): incorrect nodeValues (#33431)
Co-authored-by: richardfn <richard.fogaca@appsilon.com>
2025-05-23 14:52:58 -06:00
Giampaolo Capelli
5b2f1bbf9e feat(stack by dimension): add a stack by dimension dropdown list (#32707)
Co-authored-by: CAPELLI Giampaolo <giampaolo.capelli@docaposte.fr>
2025-05-22 11:10:18 -03:00
Vladislav Korenkov
fa1693dc5f feat(Pie Chart): threshold for Other (#33348) 2025-05-14 12:20:30 -06:00
Damian Pendrak
33e48146b0 chore: Add missing ECharts tags (#33397) 2025-05-12 18:10:04 +02:00
Fardin Mustaque
a928f8cd9e feat: add metric name for big number chart types #33013 (#33099)
Co-authored-by: Fardin Mustaque <fardinmustaque@Fardins-Mac-mini.local>
2025-05-07 16:56:02 +02:00
Evan Rusackas
d2360b533b fix(histogram): remove extra single quotes (#33248) 2025-04-25 16:45:05 -06:00
Sam Firke
ac636c73ae fix(heatmap): correctly render int and boolean falsy values on axes (#33238) 2025-04-25 11:25:50 -04:00
Levis Mbote
6a586fe4fd fix(chart): Restore subheader used in bignumber with trendline (#33196) 2025-04-25 09:39:07 -03:00