A comprehensive word cloud chart plugin for Apache Superset that creates interactive visualizations from text frequency data
—
Transform functions that convert Superset chart properties into word cloud component properties, handling both modern and legacy form data formats.
Transforms ChartProps to WordCloudProps for the modern plugin implementation.
/**
* Transform function for modern WordCloudChartPlugin
* Extracts relevant properties from Superset chart props
* @param chartProps - Standard Superset chart properties
* @returns WordCloud component properties
*/
function transformProps(chartProps: ChartProps): WordCloudProps;
interface ChartProps {
width: number;
height: number;
formData: WordCloudFormData;
queriesData: Array<{ data: PlainObject[] }>;
}Usage Example:
import { WordCloudTransformProps } from '@superset-ui/plugin-chart-word-cloud';
const chartProps = {
width: 600,
height: 400,
formData: {
series: 'word_column',
metric: 'frequency',
encoding: {
fontSize: { field: 'frequency', type: 'quantitative' },
text: { field: 'word_column' }
},
rotation: 'random',
sliceId: 123
},
queriesData: [{
data: [
{ word_column: 'analytics', frequency: 100 },
{ word_column: 'dashboard', frequency: 85 }
]
}]
};
const wordCloudProps = WordCloudTransformProps(chartProps);
// Returns: { data, encoding, height, rotation, width, sliceId }Transforms ChartProps to WordCloudProps for the legacy plugin implementation with automatic encoding generation.
/**
* Transform function for LegacyWordCloudChartPlugin
* Converts legacy form data format into modern encoding structure
* @param chartProps - Standard Superset chart properties with legacy form data
* @returns WordCloud component properties with converted encoding
*/
function transformProps(chartProps: ChartProps): WordCloudProps;Legacy Form Data Conversion:
The legacy transform automatically converts old-style form data into the modern encoding format:
// Legacy form data input
const legacyFormData = {
series: 'word_field',
metric: 'count_field',
colorScheme: 'category10',
sizeFrom: 10,
sizeTo: 80,
rotation: 'square'
};
// Automatically converted to modern encoding
const modernEncoding = {
color: {
field: 'word_field',
scale: { scheme: 'category10' },
type: 'nominal'
},
fontSize: {
field: 'count_field',
scale: { range: [10, 80], zero: true },
type: 'quantitative'
},
text: {
field: 'word_field'
}
};Helper function for extracting metric labels from various legacy metric formats.
/**
* Extracts metric label from legacy metric configuration
* Handles string, array, and object metric formats
* @param metric - Legacy metric configuration in various formats
* @returns Extracted metric label or undefined
*/
function getMetricLabel(
metric: string | undefined | Array<any> | { label: string }
): string | undefined;Metric Format Support:
// String format
getMetricLabel('sum_sales') // Returns: 'sum_sales'
// Object format with label
getMetricLabel({ label: 'Total Sales', column: 'sales' }) // Returns: 'Total Sales'
// Array format (uses first element)
getMetricLabel([
{ label: 'Primary Metric', column: 'metric1' },
{ label: 'Secondary Metric', column: 'metric2' }
]) // Returns: 'Primary Metric'
// Undefined/empty
getMetricLabel(undefined) // Returns: undefined
getMetricLabel([]) // Returns: undefinedinterface WordCloudFormData extends QueryFormData, WordCloudVisualProps {
series: string; // Field name for word text
}
interface WordCloudVisualProps {
encoding?: Partial<WordCloudEncoding>;
rotation?: RotationType;
}Properties:
interface LegacyWordCloudFormData extends QueryFormData {
colorScheme: string; // Color scheme name (e.g., 'category10')
rotation?: RotationType; // Word rotation pattern
series: string; // Field name for word text
sizeFrom?: number; // Minimum font size (default: varies)
sizeTo: number; // Maximum font size
}Properties:
encoding, rotation, sliceId from formDatawidth, height)colorScheme, metric, rotation, series, sizeFrom, sizeTo, sliceIdgetMetricLabel() to extract metric field nameThe transform functions handle various edge cases:
undefined if no metric label can be extractedInstall with Tessl CLI
npx tessl i tessl/npm-superset-ui--plugin-chart-word-cloud