The data transformation system converts Superset query results and form data into ECharts-compatible configurations. It handles complex data processing including time series formatting, annotation processing, and interactive feature setup.
Main transformation function that converts chart props into renderable configuration.
/**
* Transforms chart props into ECharts-compatible configuration
* Handles data processing, formatting, and visualization setup
* @param chartProps - Chart properties including form data and query results
* @returns Transformed props ready for chart rendering
*/
function transformProps(
chartProps: EchartsTimeseriesChartProps
): TimeseriesChartTransformedProps;Usage:
import { transformProps } from "@superset-ui/plugin-chart-echarts";
const transformedProps = transformProps({
formData: {
// EchartsTimeseriesFormData configuration
seriesType: EchartsTimeseriesSeriesType.Line,
area: false,
markerEnabled: true,
// ... other configuration
},
queriesData: [queryResult],
// ... other chart props
});The result of the transformation process containing all data needed for chart rendering.
/**
* Transformed props interface containing processed data and configuration
*/
interface TimeseriesChartTransformedProps extends
BaseTransformedProps<EchartsTimeseriesFormData>,
ContextMenuTransformedProps,
CrossFilterTransformedProps {
/** Legend data for chart legend rendering */
legendData?: OptionName[];
/** Formatter for x-axis values */
xValueFormatter: TimeFormatter | StringConstructor;
/** X-axis configuration */
xAxis: {
label: string;
type: AxisType;
};
/** Handler for series focus events */
onFocusedSeries: (series: string | null) => void;
}Foundation interface for all transformed chart properties.
/**
* Base transformed props interface
*/
interface BaseTransformedProps<F> {
/** ECharts configuration object */
echartOptions: EChartsCoreOption;
/** Original form data configuration */
formData: F;
/** Chart height in pixels */
height: number;
/** Chart width in pixels */
width: number;
/** Component references for chart interaction */
refs: Refs;
/** Context menu handler */
onContextMenu?: (
clientX: number,
clientY: number,
filters?: ContextMenuFilters,
) => void;
/** Data mask setter for cross-filtering */
setDataMask?: SetDataMaskHook;
/** Legend state change handler */
onLegendStateChanged?: (state: LegendState) => void;
/** Current filter state */
filterState?: FilterState;
/** Enable cross-filter emission */
emitCrossFilters?: boolean;
/** Column type mapping for data processing */
coltypeMapping?: Record<string, number>;
/** Legend scroll handler */
onLegendScroll?: (currentIndex: number) => void;
}Properties for chart context menu functionality.
/**
* Context menu properties for chart interaction
*/
type ContextMenuTransformedProps = {
/** Context menu click handler */
onContextMenu?: (
clientX: number,
clientY: number,
filters?: ContextMenuFilters,
) => void;
/** Data mask setter for filtering */
setDataMask?: SetDataMaskHook;
};Properties for cross-filtering functionality between charts.
/**
* Cross-filtering properties for dashboard interaction
*/
type CrossFilterTransformedProps = {
/** Grouping columns for cross-filtering */
groupby: QueryFormColumn[];
/** Label mapping for display names */
labelMap: Record<string, string[]>;
/** Control value setter */
setControlValue?: HandlerFunction;
/** Data mask setter for cross-filtering */
setDataMask: SetDataMaskHook;
/** Currently selected values */
selectedValues: Record<number, string>;
/** Enable cross-filter emission */
emitCrossFilters?: boolean;
};The transformation system handles various time series data formats and processing:
Support for various annotation types:
/**
* Annotation layer processing for chart overlays
*/
interface AnnotationLayer {
annotationType: AnnotationType;
name: string;
show: boolean;
value?: any;
overrides?: Record<string, any>;
}
enum AnnotationType {
Event = 'EVENT',
Formula = 'FORMULA',
Interval = 'INTERVAL',
Timeseries = 'TIME_SERIES',
}Built-in support for forecasting data processing:
/**
* Forecast series context for identifying forecast data
*/
type ForecastSeriesContext = {
name: string;
type: ForecastSeriesEnum;
};
enum ForecastSeriesEnum {
Observation = '',
ForecastTrend = '__yhat',
ForecastUpper = '__yhat_upper',
ForecastLower = '__yhat_lower',
}The transformation process generates comprehensive ECharts configurations:
Advanced data formatting capabilities: