mirror of
https://github.com/apache/superset.git
synced 2026-05-08 01:15:46 +00:00
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>
@superset-ui/plugin-chart-handlebars
This plugin renders the data using a handlebars template.
Usage
Configure key, which can be any string, and register the plugin. This key will be used to
lookup this chart throughout the app.
import HandlebarsChartPlugin from '@superset-ui/plugin-chart-handlebars';
new HandlebarsChartPlugin().configure({ key: 'handlebars' }).register();
Then use it via SuperChart. See
storybook for
more details.
<SuperChart
chartType="handlebars"
width={600}
height={600}
formData={...}
queriesData={[{
data: {...},
}]}
/>
File structure generated
├── package.json
├── README.md
├── tsconfig.json
├── src
│ ├── Handlebars.tsx
│ ├── images
│ │ └── thumbnail.png
│ ├── index.ts
│ ├── plugin
│ │ ├── buildQuery.ts
│ │ ├── controlPanel.ts
│ │ ├── index.ts
│ │ └── transformProps.ts
│ └── types.ts
├── test
│ └── index.test.ts
└── types
└── external.d.ts
Available Handlebars Helpers in Superset
Below, you will find a list of all currently registered helpers in the Handlebars plugin for Superset. These helpers are registered and managed in the file HandlebarsViewer.tsx.
List of Registered Helpers:
-
dateFormat: Formats a date using a specified format.- Usage:
{{dateFormat my_date format="MMMM YYYY"}} - Default format:
YYYY-MM-DD.
- Usage:
-
stringify: Converts an object into a JSON string or returns a string representation of non-object values.- Usage:
{{stringify myObj}}.
- Usage:
-
formatNumber: Formats a number using locale-specific formatting.- Usage:
{{formatNumber number locale="en-US"}}. - Default locale:
en-US.
- Usage:
-
parseJson: Parses a JSON string into a JavaScript object.- Usage:
{{parseJson jsonString}}.
- Usage: