Core data manipulation and type system library for Grafana, providing DataFrame operations, field processing, transformations, and visualization utilities.
npx @tessl/cli install tessl/npm-grafana--data@12.1.0Grafana Data Library is the core data manipulation and type system library for Grafana, providing comprehensive functionality for working with time series data, data frames, field types, transformations, and visualization utilities. It enables developers to build data visualization applications, monitoring dashboards, and analytics tools with structured data processing capabilities.
npm install @grafana/dataimport {
DataFrame,
Field,
FieldType,
createDataFrame,
MutableDataFrame,
dateTime,
getValueFormat
} from "@grafana/data";For CommonJS:
const {
DataFrame,
Field,
FieldType,
createDataFrame,
MutableDataFrame,
dateTime,
getValueFormat
} = require("@grafana/data");import {
createDataFrame,
FieldType,
dateTime,
getValueFormat
} from "@grafana/data";
// Create a DataFrame with time series data
const frame = createDataFrame({
name: "Temperature Data",
fields: [
{
name: "time",
type: FieldType.time,
values: [
dateTime('2023-01-01T00:00:00Z').valueOf(),
dateTime('2023-01-01T01:00:00Z').valueOf(),
dateTime('2023-01-01T02:00:00Z').valueOf(),
]
},
{
name: "temperature",
type: FieldType.number,
values: [20.5, 21.2, 19.8],
config: {
unit: "celsius"
}
}
]
});
// Format values for display
const formatter = getValueFormat("celsius");
const formatted = formatter(21.2, 1);
console.log(formatted.text); // "21.2°C"
// Process the data
console.log(`DataFrame has ${frame.length} rows and ${frame.fields.length} fields`);Grafana Data Library is built around several key components:
DataFrame, Field) with type-safe operations for tabular dataCore data structure operations including creation, manipulation, transformation, and serialization of tabular data with full type safety.
interface DataFrame {
name?: string;
fields: Field[];
length: number;
refId?: string;
meta?: QueryResultMeta;
}
function createDataFrame(data: PartialDataFrame): DataFrame;Field configuration, display processing, color management, thresholds, and override system for customizing field appearance and behavior.
interface Field<T = any, V = Vector<T>> {
name: string;
type: FieldType;
config: FieldConfig<T>;
values: V;
labels?: Labels;
state?: FieldState;
}
function getFieldDisplayValues(options: GetFieldDisplayValuesOptions): FieldDisplay[];
function applyFieldOverrides(options: ApplyFieldOverrideOptions): DataFrame[];Comprehensive date and time handling with timezone support, formatting, parsing, and duration calculations.
function dateTime(input?: DateTimeInput, formatInput?: FormatInput, zone?: TimeZone): DateTime;
function dateTimeFormat(dateTime: DateTime, options?: DateTimeOptionsWithFormat): string;
function parseDuration(duration: string): number;Pluggable transformation system for filtering, aggregating, joining, and modifying data frames with built-in transformers and custom transformation support.
function transformDataFrame(options: DataTransformContext): Observable<DataFrame[]>;
function fieldReducers.get(id: ReducerID): FieldReducerInfo;
function reduceField(field: Field, id: ReducerID, nullValueMode?: NullValueMode): ReduceDataOptions;Extensive value formatting system supporting units, localization, custom formatters, and display processing.
function getValueFormat(id: string): ValueFormatter;
function formattedValueToString(value: FormattedValue): string;
interface FormattedValue {
text: string;
numeric: number;
prefix?: string;
suffix?: string;
}Complete theming infrastructure including colors, typography, spacing, shadows, and visualization-specific color schemes.
function createTheme(options?: NewThemeOptions): GrafanaTheme2;
function getThemeById(id: string): GrafanaTheme2;
interface GrafanaTheme2 {
colors: ThemeColors;
typography: ThemeTypography;
spacing: ThemeSpacing;
shadows: ThemeShadows;
shape: ThemeShape;
visualization: ThemeVisualizationColors;
}Type-safe event bus system for application-wide communication with built-in events and custom event support.
class EventBusSrv implements EventBus {
publish<T extends BusEvent>(event: T): void;
subscribe<T extends BusEvent>(typeInfo: BusEventType<T>, handler: BusEventHandler<T>): Unsubscribable;
}
function eventFactory<TPayload = undefined>(name: string): BusEventType<BusEventWithPayload<TPayload>>;Comprehensive plugin architecture supporting panel plugins, data source plugins, and app plugins with configuration, context, and extension systems.
class PanelPlugin<TOptions = any, TFieldOptions = any> extends GrafanaPlugin<PanelPluginMeta> {
setFieldConfigOptions(builder: FieldConfigEditorBuilder<TFieldOptions>): this;
setPanelOptions(builder: PanelOptionsEditorBuilder<TOptions>): this;
}
class DataSourcePlugin<TOptions extends DataSourceJsonData = DataSourceJsonData, TQuery extends DataQuery = DataQuery> extends GrafanaPlugin<DataSourcePluginMeta<TOptions>> {
components: DataSourcePluginComponents<TOptions, TQuery>;
}Time series table manipulation functions for amending and trimming table data structures.
type Table = [times: number[], ...values: any[][]];
function amendTable(prevTable: Table, nextTable: Table): Table;
function trimTable(table: Table, fromTime: number, toTime: number): Table;Collection of utility functions for data processing, URL handling, CSV operations, label processing, and various data manipulation tasks.
function anyToNumber(value: any): number;
function parseLabels(labels: string): Labels;
function readCSV(text: string, options?: CSVOptions): DataFrame[];
function objRemoveUndefined<T>(obj: T): T;