@looker/extension-sdk
Version:
97 lines (96 loc) • 2.72 kB
TypeScript
import type { Row } from '../tile';
export type VisualizationDataReceivedCallback = (visualizationData: RawVisualizationData) => void;
export interface RawVisualizationData {
visConfig: RawVisConfig;
queryResponse: RawVisQueryResponse;
}
export interface RawVisConfig {
[key: string]: RawVisConfigValue;
}
export type RawVisConfigValue = any;
export interface RawVisQueryResponse {
[key: string]: any;
data: RawVisData;
fields: {
[key: string]: any[];
};
pivots: RawPivotConfig[];
}
export type RawVisData = Row[];
export interface RawPivotConfig {
key: string;
is_total: boolean;
data: {
[key: string]: string;
};
metadata: {
[key: string]: {
[key: string]: string;
};
};
}
export interface Measure extends RawVisConfig {
[key: string]: any;
}
export interface Dimension extends RawVisConfig {
[key: string]: any;
}
export interface TableCalculation {
[key: string]: any;
}
export interface PivotConfig extends RawPivotConfig {
[key: string]: any;
}
export interface VisualizationConfig {
queryFieldMeasures: Measure[];
queryFieldDimensions: Dimension[];
queryFieldTableCalculations: TableCalculation[];
queryFieldPivots: PivotConfig[];
visConfig: RawVisConfig;
}
export interface QueryResponse {
data: Row[];
fieldMeasures: Measure[];
fieldDimensions: Dimension[];
fieldTableCalculations: TableCalculation[];
fieldPivots: PivotConfig[];
fieldMeasureLike: Measure[];
fieldDimensionLike: Dimension[];
}
export interface VisualizationSDKInternal extends VisualizationSDK {
updateVisData: (rawVisData: RawVisualizationData) => void;
}
export interface VisualizationSDK {
visualizationData?: RawVisualizationData;
visConfig: VisualizationConfig;
queryResponse: QueryResponse;
configureVisualization: (options: VisOptions) => void;
setVisConfig: (config: RawVisConfig) => void;
updateRowLimit: (rowLimit: number) => void;
}
export interface VisOptionValue {
[label: string]: string;
}
export interface VisOption {
type: string;
values?: VisOptionValue[];
display?: string;
default?: any;
label?: string;
section?: string;
placeholder?: string;
display_size?: 'half' | 'third' | 'normal';
order?: number;
hidden?: (setOptions: RawVisConfig) => boolean;
disabledReason?: (setOptions: RawVisConfig, queryResponse: QueryResponse) => string | null;
min?: number;
max?: number;
required?: boolean;
words?: VisOptionValue[];
supports?: string[];
color_application?: string;
sublabel?: string;
}
export interface VisOptions {
[optionName: string]: VisOption;
}