@grafana/scenes 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,6 +15,8 @@
15
15
 
16
16
  ## Development
17
17
 
18
+ ### Working with Grafana
19
+
18
20
  @grafana/scenes does not come with dedicated playground yet. It is currently possible to run Scene demos using Grafana. To do that, the following setup is required.
19
21
 
20
22
  1. Clone @grafana/scenes repository.
@@ -24,3 +26,10 @@
24
26
  1. From Grafana directory run `yarn install`.
25
27
  1. Start Grafana with `scenes` [feature toggle enabled](https://grafana.com/docs/grafana/latest/setup-grafana/configure-grafana/#feature_toggles)
26
28
  1. Navigate to `http://localhost:3000/scenes` to explore demo scenes.
29
+
30
+ ### Working with Grafana app plugin
31
+
32
+ 1. Run `YARN_IGNORE_PATH=1 yarn link` from @grafana/scenes directory.
33
+ 1. Run `yarn dev` from @grafana/scenes directory.
34
+ 1. Run `yarn link @grafana/scenes` from app plugin directory.
35
+ 1. Start app plugin development server.
@@ -0,0 +1,38 @@
1
+ import React from 'react';
2
+ import { LoadingState } from '@grafana/data';
3
+ import { SceneObjectBase } from '../core/SceneObjectBase.js';
4
+ import { sceneGraph } from '../core/sceneGraph.js';
5
+
6
+ class SceneByFrameRepeater extends SceneObjectBase {
7
+ activate() {
8
+ super.activate();
9
+ this._subs.add(
10
+ sceneGraph.getData(this).subscribeToState({
11
+ next: (data) => {
12
+ var _a;
13
+ if (((_a = data.data) == null ? void 0 : _a.state) === LoadingState.Done) {
14
+ this.performRepeat(data.data);
15
+ }
16
+ }
17
+ })
18
+ );
19
+ }
20
+ performRepeat(data) {
21
+ const newChildren = [];
22
+ for (let seriesIndex = 0; seriesIndex < data.series.length; seriesIndex++) {
23
+ const layoutChild = this.state.getLayoutChild(data, data.series[seriesIndex], seriesIndex);
24
+ newChildren.push(layoutChild);
25
+ }
26
+ this.state.body.setState({ children: newChildren });
27
+ }
28
+ }
29
+ SceneByFrameRepeater.Component = ({ model, isEditing }) => {
30
+ const { body } = model.useState();
31
+ return /* @__PURE__ */ React.createElement(body.Component, {
32
+ model: body,
33
+ isEditing
34
+ });
35
+ };
36
+
37
+ export { SceneByFrameRepeater };
38
+ //# sourceMappingURL=SceneByFrameRepeater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneByFrameRepeater.js","sources":["../../../src/components/SceneByFrameRepeater.tsx"],"sourcesContent":["import React from 'react';\n\nimport { LoadingState, PanelData, DataFrame } from '@grafana/data';\n\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { sceneGraph } from '../core/sceneGraph';\nimport {\n SceneComponentProps,\n SceneObject,\n SceneObjectStatePlain,\n SceneLayoutState,\n SceneLayoutChild,\n} from '../core/types';\n\ninterface RepeatOptions extends SceneObjectStatePlain {\n body: SceneObject<SceneLayoutState>;\n getLayoutChild(data: PanelData, frame: DataFrame, frameIndex: number): SceneLayoutChild;\n}\n\nexport class SceneByFrameRepeater extends SceneObjectBase<RepeatOptions> {\n public activate(): void {\n super.activate();\n\n this._subs.add(\n sceneGraph.getData(this).subscribeToState({\n next: (data) => {\n if (data.data?.state === LoadingState.Done) {\n this.performRepeat(data.data);\n }\n },\n })\n );\n }\n\n private performRepeat(data: PanelData) {\n const newChildren: SceneLayoutChild[] = [];\n\n for (let seriesIndex = 0; seriesIndex < data.series.length; seriesIndex++) {\n const layoutChild = this.state.getLayoutChild(data, data.series[seriesIndex], seriesIndex);\n newChildren.push(layoutChild);\n }\n\n this.state.body.setState({ children: newChildren });\n }\n\n public static Component = ({ model, isEditing }: SceneComponentProps<SceneByFrameRepeater>) => {\n const { body } = model.useState();\n return <body.Component model={body} isEditing={isEditing} />;\n };\n}\n"],"names":[],"mappings":";;;;;AAmBO,MAAM,6BAA6B,eAA+B,CAAA;AAAA,EAChE,QAAiB,GAAA;AACtB,IAAA,KAAA,CAAM,QAAS,EAAA,CAAA;AAEf,IAAA,IAAA,CAAK,KAAM,CAAA,GAAA;AAAA,MACT,UAAW,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAE,gBAAiB,CAAA;AAAA,QACxC,IAAA,EAAM,CAAC,IAAS,KAAA;AAzBxB,UAAA,IAAA,EAAA,CAAA;AA0BU,UAAA,IAAA,CAAA,CAAI,EAAK,GAAA,IAAA,CAAA,IAAA,KAAL,IAAW,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,KAAA,MAAU,aAAa,IAAM,EAAA;AAC1C,YAAK,IAAA,CAAA,aAAA,CAAc,KAAK,IAAI,CAAA,CAAA;AAAA,WAC9B;AAAA,SACF;AAAA,OACD,CAAA;AAAA,KACH,CAAA;AAAA,GACF;AAAA,EAEQ,cAAc,IAAiB,EAAA;AACrC,IAAA,MAAM,cAAkC,EAAC,CAAA;AAEzC,IAAA,KAAA,IAAS,cAAc,CAAG,EAAA,WAAA,GAAc,IAAK,CAAA,MAAA,CAAO,QAAQ,WAAe,EAAA,EAAA;AACzE,MAAM,MAAA,WAAA,GAAc,KAAK,KAAM,CAAA,cAAA,CAAe,MAAM,IAAK,CAAA,MAAA,CAAO,cAAc,WAAW,CAAA,CAAA;AACzF,MAAA,WAAA,CAAY,KAAK,WAAW,CAAA,CAAA;AAAA,KAC9B;AAEA,IAAA,IAAA,CAAK,MAAM,IAAK,CAAA,QAAA,CAAS,EAAE,QAAA,EAAU,aAAa,CAAA,CAAA;AAAA,GACpD;AAMF,CAAA;AA9Ba,oBAAA,CA0BG,SAAY,GAAA,CAAC,EAAE,KAAA,EAAO,WAA2D,KAAA;AAC7F,EAAA,MAAM,EAAE,IAAA,EAAS,GAAA,KAAA,CAAM,QAAS,EAAA,CAAA;AAChC,EAAO,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAK,SAAL,EAAA;AAAA,IAAe,KAAO,EAAA,IAAA;AAAA,IAAM,SAAA;AAAA,GAAsB,CAAA,CAAA;AAC5D,CAAA;;;;"}
package/dist/esm/index.js CHANGED
@@ -25,7 +25,7 @@ export { NestedScene } from './components/NestedScene.js';
25
25
  export { SceneCanvasText } from './components/SceneCanvasText.js';
26
26
  export { SceneToolbarButton, SceneToolbarInput } from './components/SceneToolbarButton.js';
27
27
  export { SceneTimePicker } from './components/SceneTimePicker.js';
28
- export { ScenePanelRepeater } from './components/ScenePanelRepeater.js';
28
+ export { SceneByFrameRepeater } from './components/SceneByFrameRepeater.js';
29
29
  export { SceneSubMenu } from './components/SceneSubMenu.js';
30
30
  export { SceneFlexLayout } from './components/layout/SceneFlexLayout.js';
31
31
  export { SceneGridLayout } from './components/layout/SceneGridLayout.js';
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
2
  import React from 'react';
3
3
  import { Observable, Observer, Subscription, Unsubscribable } from 'rxjs';
4
- import { BusEventWithPayload, PanelData, BusEvent, BusEventType, BusEventHandler, TimeZone, TimeRange, ScopedVars, DataTransformerConfig, DataSourceRef, DataQuery, Registry, RegistryItem, VariableRefresh, VariableSort, FieldConfigSource, PanelPlugin, AbsoluteTimeRange } from '@grafana/data';
4
+ import { BusEventWithPayload, PanelData, BusEvent, BusEventType, BusEventHandler, TimeZone, TimeRange, ScopedVars, DataTransformerConfig, DataSourceRef, DataQuery, Registry, RegistryItem, VariableRefresh, VariableSort, FieldConfigSource, PanelPlugin, AbsoluteTimeRange, DataFrame } from '@grafana/data';
5
5
  import { VariableType, VariableHide, VariableModel } from '@grafana/schema';
6
6
  import { IconName } from '@grafana/ui';
7
7
  import ReactGridLayout from 'react-grid-layout';
@@ -719,12 +719,13 @@ declare class SceneTimePicker extends SceneObjectBase<SceneTimePickerState> {
719
719
  declare function SceneTimePickerRenderer({ model }: SceneComponentProps<SceneTimePicker>): JSX.Element | null;
720
720
 
721
721
  interface RepeatOptions extends SceneObjectStatePlain {
722
- layout: SceneObject<SceneLayoutState>;
722
+ body: SceneObject<SceneLayoutState>;
723
+ getLayoutChild(data: PanelData, frame: DataFrame, frameIndex: number): SceneLayoutChild;
723
724
  }
724
- declare class ScenePanelRepeater extends SceneObjectBase<RepeatOptions> {
725
+ declare class SceneByFrameRepeater extends SceneObjectBase<RepeatOptions> {
725
726
  activate(): void;
726
727
  private performRepeat;
727
- static Component: ({ model, isEditing }: SceneComponentProps<ScenePanelRepeater>) => JSX.Element;
728
+ static Component: ({ model, isEditing }: SceneComponentProps<SceneByFrameRepeater>) => JSX.Element;
728
729
  }
729
730
 
730
731
  interface SceneSubMenuState extends SceneLayoutState {
@@ -793,4 +794,4 @@ declare class SceneGridLayout extends SceneObjectBase<SceneGridLayoutState> {
793
794
  }
794
795
  declare function SceneGridLayoutRenderer({ model }: SceneComponentProps<SceneGridLayout>): JSX.Element;
795
796
 
796
- export { ConstantVariable, CustomFormatterFn, CustomVariable, DataSourceVariable, DeepPartial, EmbeddedScene, FormatRegistryID, FormatVariable, NestedScene, QueryRunnerState, QueryVariable, SceneCanvasText, SceneComponent, SceneComponentProps, SceneDataNode, SceneDataState, SceneDataTransformer, SceneEditor, SceneEditorState, SceneFlexLayout, SceneGridLayout, SceneGridRow, SceneLayout, SceneLayoutChild, SceneLayoutChildOptions, SceneLayoutChildState, SceneLayoutState, SceneObject, SceneObjectBase, SceneObjectRef, SceneObjectState, SceneObjectStateChangedEvent, SceneObjectStateChangedPayload, SceneObjectStatePlain, SceneObjectUrlSyncConfig, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, ScenePanelRepeater, SceneQueryRunner, SceneState, SceneSubMenu, SceneTimePicker, SceneTimeRange, SceneTimeRangeLike, SceneTimeRangeState, SceneToolbarButton, SceneToolbarInput, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSet, SceneVariableSetState, SceneVariableState, SceneVariableValueChangedEvent, SceneVariables, TestVariable, UrlSyncManager, ValidateAndUpdateResult, VariableValue, VariableValueCustom, VariableValueOption, VariableValueSelectors, VariableValueSingle, VizPanel, VizPanelState, formatRegistry, isSceneObject, sceneGraph };
797
+ export { ConstantVariable, CustomFormatterFn, CustomVariable, DataSourceVariable, DeepPartial, EmbeddedScene, FormatRegistryID, FormatVariable, NestedScene, QueryRunnerState, QueryVariable, SceneByFrameRepeater, SceneCanvasText, SceneComponent, SceneComponentProps, SceneDataNode, SceneDataState, SceneDataTransformer, SceneEditor, SceneEditorState, SceneFlexLayout, SceneGridLayout, SceneGridRow, SceneLayout, SceneLayoutChild, SceneLayoutChildOptions, SceneLayoutChildState, SceneLayoutState, SceneObject, SceneObjectBase, SceneObjectRef, SceneObjectState, SceneObjectStateChangedEvent, SceneObjectStateChangedPayload, SceneObjectStatePlain, SceneObjectUrlSyncConfig, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryRunner, SceneState, SceneSubMenu, SceneTimePicker, SceneTimeRange, SceneTimeRangeLike, SceneTimeRangeState, SceneToolbarButton, SceneToolbarInput, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSet, SceneVariableSetState, SceneVariableState, SceneVariableValueChangedEvent, SceneVariables, TestVariable, UrlSyncManager, ValidateAndUpdateResult, VariableValue, VariableValueCustom, VariableValueOption, VariableValueSelectors, VariableValueSingle, VizPanel, VizPanelState, formatRegistry, isSceneObject, sceneGraph };