@oriolrius/grafana-business-text
Version:
Data-driven text with Markdown and Handlebars support for Grafana
162 lines (136 loc) • 2.9 kB
text/typescript
import { DataQueryResponse, DataSourceApi } from '@grafana/data';
/**
* Data Source Query Configuration
*/
export interface DataSourceQueryConfig {
/**
* Query refId
*/
refId?: string;
/**
* Raw SQL query (for SQL data sources)
*/
rawSql?: string;
/**
* Query format
*/
format?: string;
/**
* Additional query parameters
*/
[key: string]: any;
}
/**
* Data Source Information
*/
export interface DataSourceInfo {
/**
* Data source UID
*/
uid: string;
/**
* Data source name
*/
name: string;
/**
* Data source type
*/
type: string;
/**
* Whether the data source is accessible
*/
accessible?: boolean;
}
/**
* Data Source Context API
*/
export interface DataSourceContext {
/**
* Execute a generic query against a data source
*/
query: (dataSourceUid: string, queryConfig: DataSourceQueryConfig) => Promise<DataQueryResponse>;
/**
* Execute SQL query against SQL-based data sources
*/
sql: (dataSourceUid: string, sqlQuery: string) => Promise<DataQueryResponse>;
/**
* Execute InfluxDB query
*/
influx: (dataSourceUid: string, influxQuery: string) => Promise<DataQueryResponse>;
/**
* Get list of available data sources
*/
getAvailable: () => DataSourceInfo[];
/**
* Get data source by name (fallback helper)
*/
getByName: (name: string) => Promise<DataSourceApi | null>;
/**
* Utility functions for working with query results
*/
utils: {
/**
* Format query response for easier consumption
*/
formatResults: (response: DataQueryResponse) => {
series: any[];
rows: Array<Record<string, any>>;
fields: string[];
raw: DataQueryResponse;
};
/**
* Extract values from a specific field
*/
extractValues: (response: DataQueryResponse, fieldName?: string) => any[];
/**
* Convert response to simple object array
*/
toObjects: (response: DataQueryResponse) => Array<Record<string, any>>;
};
}
/**
* Data Source Panel Options
*/
export interface DataSourcePanelOptions {
/**
* Enable data source queries
*/
enableDataSourceQueries: boolean;
/**
* Default data source UID
*/
defaultDataSourceUid?: string;
/**
* Query timeout in milliseconds
*/
queryTimeout: number;
/**
* Enable query result caching
*/
enableCaching: boolean;
/**
* Show data source query errors as notifications
*/
showQueryErrors: boolean;
}
/**
* Notification Context API
*/
export interface NotificationContext {
/**
* Show success notification
*/
success: (message: string) => void;
/**
* Show error notification
*/
error: (message: string) => void;
/**
* Show warning notification
*/
warning: (message: string) => void;
/**
* Show info notification
*/
info: (message: string) => void;
}