Files
grafana/packages/grafana-runtime/src/components/PanelRenderer.tsx
T
935334cbda Scene: POC for a future dashboard model and runtime (#50980)
* 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>
2022-07-07 08:53:02 +02:00

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;
}