* Playing around * This is getting interesting * Updates * Updated * Observable experiments * This is tricky * VizPanel panel renderer * New model progress * Maybe this could be something * Updated * Rename * updates * Updated * Query runners? not sure * Updated * updates * flex box layout starting to work * Testing * Tested an action * Parent context sort of working * Progress * Progress * Updated * Starting to work * Things are working * Scene list, nested scene demo * Progress on repeats * Moving things * Pretty big progress * More things working * Great progress * Progress * Name changing * Minor tweaks * Simplified sizing * Move toggleDirection to SceneFlexLayout * add feature flag (#50990) * removed new useObservable hook * Rename folder and feature toggle to scenes * Caching scenes so you can go back to another scene without having to re-query data * Fix issue with subs on re-mount * Fixing test * Added SceneCanvasText to play around with layout elements with size based on content * Scene: Edit mode and component edit wrapper that handles selection (#51078) * First step for scene variables * Started playing around with a scene edit mode * Better way to set component * Progress on edit mode * Update * Progress on edit mode * Progress on editor * Progress on editor * Updates * More working * Progress * Minor update * removed unnessary file * Moving things around * Updated * Making time range separate from time picker * minor rename of methods * The most basic variable start * Minor renames * Fixed interpolate issue if not found at closest level * An embryo of event model and url sync handling * Update url sync types * Removed unnessary any type arg Co-authored-by: Ryan McKinley <ryantxu@gmail.com> Co-authored-by: Dominik Prokop <dominik.prokop@grafana.com>
56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import React from 'react';
|
|
|
|
import { AbsoluteTimeRange, FieldConfigSource, PanelData } from '@grafana/data';
|
|
|
|
/**
|
|
* Describes the properties that can be passed to the PanelRenderer.
|
|
*
|
|
* @typeParam P - Panel options type for the panel being rendered.
|
|
* @typeParam F - Field options type for the panel being rendered.
|
|
*
|
|
* @internal
|
|
*/
|
|
export interface PanelRendererProps<P extends object = any, F extends object = any> {
|
|
data?: PanelData;
|
|
pluginId: string;
|
|
title: string;
|
|
options?: Partial<P>;
|
|
onOptionsChange?: (options: P) => void;
|
|
onFieldConfigChange?: (config: FieldConfigSource<F>) => void;
|
|
onChangeTimeRange?: (timeRange: AbsoluteTimeRange) => void;
|
|
fieldConfig?: FieldConfigSource<Partial<F>>;
|
|
timeZone?: string;
|
|
width: number;
|
|
height: number;
|
|
}
|
|
|
|
/**
|
|
* Simplified type with defaults that describes the PanelRenderer.
|
|
*
|
|
* @internal
|
|
*/
|
|
export type PanelRendererType<P extends object = any, F extends object = any> = React.ComponentType<
|
|
PanelRendererProps<P, F>
|
|
>;
|
|
|
|
/**
|
|
* PanelRenderer component that will be set via the {@link setPanelRenderer} function
|
|
* when Grafana starts. The implementation being used during runtime lives in Grafana
|
|
* core.
|
|
*
|
|
* @internal
|
|
*/
|
|
export let PanelRenderer: PanelRendererType = () => {
|
|
return <div>PanelRenderer can only be used after Grafana instance has been started.</div>;
|
|
};
|
|
|
|
/**
|
|
* Used to bootstrap the PanelRenderer during application start so the PanelRenderer
|
|
* is exposed via runtime.
|
|
*
|
|
* @internal
|
|
*/
|
|
export function setPanelRenderer(renderer: PanelRendererType) {
|
|
PanelRenderer = renderer;
|
|
}
|