or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

chart-components.mdchart-plugins.mddata-transformation.mdform-data.mdindex.mdquery-building.md
tile.json

data-transformation.mddocs/

Data Transformation

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.

Capabilities

Transform Props Function

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
});

Transformed Props Interface

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;
}

Base Transformed Props

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;
}

Context Menu Transformed Props

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;
};

Cross Filter Transformed Props

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;
};

Data Processing Features

Time Series Data Processing

The transformation system handles various time series data formats and processing:

  • Time formatting: Automatic detection and formatting of temporal data
  • Time granularity: Support for various time granularities (second, minute, hour, day, etc.)
  • Time zones: Proper handling of time zone conversions
  • Time comparison: Processing of time-over-time comparisons

Annotation 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',
}

Forecasting Integration

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',
}

Chart Configuration Generation

The transformation process generates comprehensive ECharts configurations:

  • Series configuration: Data series setup with proper formatting
  • Axis configuration: X and Y axis setup with labels and formatting
  • Legend configuration: Legend positioning and styling
  • Tooltip configuration: Interactive tooltip setup
  • Zoom configuration: Pan and zoom functionality setup
  • Animation configuration: Chart animation and transition effects

Data Formatting

Advanced data formatting capabilities:

  • Number formatting: Locale-aware number formatting
  • Time formatting: Smart date/time formatting
  • Currency formatting: Currency value formatting
  • Percentage formatting: Percentage value display
  • Custom formatting: User-defined format strings