Files
superset2/superset-frontend/plugins/plugin-chart-handlebars
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
..

@superset-ui/plugin-chart-handlebars

Version Libraries.io

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:

  1. dateFormat: Formats a date using a specified format.

    • Usage: {{dateFormat my_date format="MMMM YYYY"}}
    • Default format: YYYY-MM-DD.
  2. stringify: Converts an object into a JSON string or returns a string representation of non-object values.

    • Usage: {{stringify myObj}}.
  3. formatNumber: Formats a number using locale-specific formatting.

    • Usage: {{formatNumber number locale="en-US"}}.
    • Default locale: en-US.
  4. parseJson: Parses a JSON string into a JavaScript object.

    • Usage: {{parseJson jsonString}}.