@grafana/scenes 5.27.0--canary.912.12014950388.0 → 5.27.0--canary.912.12031759221.0
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/dist/esm/components/LimitFramesTitleItemScene.js +4 -4
- package/dist/esm/components/LimitFramesTitleItemScene.js.map +1 -1
- package/dist/esm/core/PanelBuilders/VizPanelBuilder.js +4 -2
- package/dist/esm/core/PanelBuilders/VizPanelBuilder.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +8 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -15,16 +15,16 @@ class LimitFramesTitleItemScene extends SceneObjectBase {
|
|
|
15
15
|
this.addActivationHandler(this.onActivate.bind(this));
|
|
16
16
|
}
|
|
17
17
|
onActivate() {
|
|
18
|
-
var _a;
|
|
19
18
|
const panel = sceneGraph.getAncestor(this, VizPanel);
|
|
20
19
|
const $transformedDataArray = sceneGraph.findAllObjects(panel, (scene) => scene.state.key === LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY);
|
|
21
20
|
const $transformedData = $transformedDataArray[0];
|
|
22
21
|
if ($transformedData) {
|
|
23
|
-
const $
|
|
22
|
+
const $untransformedDataProviders = sceneGraph.findAllObjects($transformedData, (scene) => scene instanceof SceneDataTransformer || scene instanceof SceneQueryRunner);
|
|
23
|
+
const $untransformedDataProvider = $untransformedDataProviders[0];
|
|
24
24
|
this._subs.add(
|
|
25
25
|
$transformedData.subscribeToState((transformedDataState) => {
|
|
26
|
-
var
|
|
27
|
-
if ($untransformedDataProvider && ((
|
|
26
|
+
var _a, _b, _c;
|
|
27
|
+
if ($untransformedDataProvider && ((_a = $untransformedDataProvider.state.data) == null ? void 0 : _a.series.length) !== this.state.currentFrameCount) {
|
|
28
28
|
this.setState({
|
|
29
29
|
currentFrameCount: (_b = transformedDataState.data) == null ? void 0 : _b.series.length,
|
|
30
30
|
totalFrameCount: (_c = $untransformedDataProvider.state.data) == null ? void 0 : _c.series.length
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LimitFramesTitleItemScene.js","sources":["../../../src/components/LimitFramesTitleItemScene.tsx"],"sourcesContent":["import { Button, Icon, Tooltip, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { DataFrame, GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { map, Observable } from 'rxjs';\nimport { SceneComponentProps, SceneDataProvider, SceneObjectState } from '../core/types';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneDataTransformer } from '../querying/SceneDataTransformer';\nimport { VizPanel } from './VizPanel/VizPanel';\nimport { SceneQueryRunner } from '../querying/SceneQueryRunner';\n\nexport interface LimitFramesTitleItemSceneState extends SceneObjectState {\n showAllFrames?: boolean;\n currentFrameCount?: number;\n totalFrameCount?: number\n frameLimit: number\n}\n\nexport const LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY = 'limit_frames_title_item_transformation'\n\n/**\n * PanelBuilder titleItems component that will limit the default number of series rendered\n *\n * Usage:\n * PanelBuilders.timeseries()\n * .setData($data)\n * .setTitleItems([new LimitFramesTitleItemScene({\n * frameLimit: 20, // limits the default number of series that are rendered in the viz\n * })])\n */\nexport class LimitFramesTitleItemScene extends SceneObjectBase<LimitFramesTitleItemSceneState> {\n public constructor(state: LimitFramesTitleItemSceneState) {\n super(state);\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n const panel = sceneGraph.getAncestor(this, VizPanel);\n\n const $transformedDataArray = sceneGraph.findAllObjects(panel, (scene) => scene.state.key === LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY)\n const $transformedData = $transformedDataArray[0] as SceneDataTransformer | undefined;\n\n if($transformedData){\n const $
|
|
1
|
+
{"version":3,"file":"LimitFramesTitleItemScene.js","sources":["../../../src/components/LimitFramesTitleItemScene.tsx"],"sourcesContent":["import { Button, Icon, Tooltip, useStyles2 } from '@grafana/ui';\nimport React from 'react';\nimport { DataFrame, GrafanaTheme2 } from '@grafana/data';\nimport { css } from '@emotion/css';\nimport { SceneObjectBase } from '../core/SceneObjectBase';\nimport { map, Observable } from 'rxjs';\nimport { SceneComponentProps, SceneDataProvider, SceneObjectState } from '../core/types';\nimport { sceneGraph } from '../core/sceneGraph';\nimport { SceneDataTransformer } from '../querying/SceneDataTransformer';\nimport { VizPanel } from './VizPanel/VizPanel';\nimport { SceneQueryRunner } from '../querying/SceneQueryRunner';\n\nexport interface LimitFramesTitleItemSceneState extends SceneObjectState {\n showAllFrames?: boolean;\n currentFrameCount?: number;\n totalFrameCount?: number\n frameLimit: number\n}\n\nexport const LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY = 'limit_frames_title_item_transformation'\n\n/**\n * PanelBuilder titleItems component that will limit the default number of series rendered\n *\n * Usage:\n * PanelBuilders.timeseries()\n * .setData($data)\n * .setTitleItems([new LimitFramesTitleItemScene({\n * frameLimit: 20, // limits the default number of series that are rendered in the viz\n * })])\n */\nexport class LimitFramesTitleItemScene extends SceneObjectBase<LimitFramesTitleItemSceneState> {\n public constructor(state: LimitFramesTitleItemSceneState) {\n super(state);\n this.addActivationHandler(this.onActivate.bind(this));\n }\n\n private onActivate() {\n const panel = sceneGraph.getAncestor(this, VizPanel);\n\n const $transformedDataArray = sceneGraph.findAllObjects(panel, (scene) => scene.state.key === LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY)\n const $transformedData = $transformedDataArray[0] as SceneDataTransformer | undefined;\n\n if($transformedData){\n const $untransformedDataProviders = sceneGraph.findAllObjects($transformedData, (scene) => scene instanceof SceneDataTransformer || scene instanceof SceneQueryRunner)\n const $untransformedDataProvider = $untransformedDataProviders[0] as SceneDataProvider | undefined\n\n // Subscribe to data changes and update the frame counts\n this._subs.add(\n $transformedData.subscribeToState((transformedDataState) => {\n if ($untransformedDataProvider && $untransformedDataProvider.state.data?.series.length !== this.state.currentFrameCount) {\n this.setState({\n currentFrameCount: transformedDataState.data?.series.length,\n totalFrameCount: $untransformedDataProvider.state.data?.series.length\n });\n }\n })\n );\n }\n }\n\n /**\n * Removes the default series limit and renders all series in the viz\n */\n public showAllSeries () {\n const $data = sceneGraph.getData(this);\n if($data instanceof SceneDataTransformer){\n $data.setState({\n transformations: [],\n });\n this.setState({\n showAllFrames: true,\n });\n $data.reprocessTransformations();\n }\n }\n public static Component = ({ model }: SceneComponentProps<LimitFramesTitleItemScene>) => {\n const { showAllFrames, currentFrameCount, frameLimit, totalFrameCount, } = model.useState();\n const styles = useStyles2(getStyles);\n\n if (\n totalFrameCount === undefined ||\n showAllFrames ||\n !currentFrameCount ||\n totalFrameCount < frameLimit\n ) {\n return null;\n }\n\n return (\n <div className={styles.timeSeriesDisclaimer}>\n <span className={styles.warningMessage}>\n <>\n <Icon\n title={`Showing only ${model.state.frameLimit} series`}\n name=\"exclamation-triangle\"\n aria-hidden=\"true\"\n />\n </>\n </span>\n <Tooltip content={'Rendering too many series in a single panel may impact performance and make data harder to read.'}>\n <Button variant=\"secondary\" size=\"sm\" onClick={() => model.showAllSeries()}>\n <>Show all {totalFrameCount}</>\n </Button>\n </Tooltip>\n </div>\n );\n };\n}\n\nexport function limitFramesTransformation(limit: number) {\n return (source: Observable<DataFrame[]>) => {\n return source.pipe(\n map((frames) => {\n return frames.slice(0, limit);\n })\n );\n };\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n timeSeriesDisclaimer: css({\n label: 'time-series-disclaimer',\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(1),\n }),\n warningMessage: css({\n display: 'flex',\n alignItems: 'center',\n gap: theme.spacing(0.5),\n color: theme.colors.warning.main,\n fontSize: theme.typography.bodySmall.fontSize,\n }),\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -140,14 +140,16 @@ class VizPanelBuilder {
|
|
|
140
140
|
return this;
|
|
141
141
|
}
|
|
142
142
|
build() {
|
|
143
|
-
this.
|
|
143
|
+
if (this._state.$data) {
|
|
144
|
+
this.limitFramesIfLimitSceneExists();
|
|
145
|
+
}
|
|
144
146
|
const panel = new VizPanel(__spreadProps(__spreadValues({}, this._state), {
|
|
145
147
|
options: this._panelOptionsBuilder.build(),
|
|
146
148
|
fieldConfig: this._fieldConfigBuilder.build()
|
|
147
149
|
}));
|
|
148
150
|
return panel;
|
|
149
151
|
}
|
|
150
|
-
|
|
152
|
+
limitFramesIfLimitSceneExists() {
|
|
151
153
|
if (this._state.$data) {
|
|
152
154
|
const limitSeriesTitleItem = this.getLimitSeriesTitleItem();
|
|
153
155
|
if (limitSeriesTitleItem && limitSeriesTitleItem.state.frameLimit) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VizPanelBuilder.js","sources":["../../../../src/core/PanelBuilders/VizPanelBuilder.ts"],"sourcesContent":["import { VizPanel, VizPanelState } from '../../components/VizPanel/VizPanel';\nimport { DeepPartial, SceneObject } from '../types';\nimport { FieldConfigBuilder } from './FieldConfigBuilder';\nimport { FieldConfigOverridesBuilder } from './FieldConfigOverridesBuilder';\nimport { PanelOptionsBuilder } from './PanelOptionsBuilder';\nimport { StandardFieldConfig, StandardFieldConfigInterface } from './types';\nimport {\n limitFramesTransformation,\n LimitFramesTitleItemScene,\n LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY,\n} from '../../components/LimitFramesTitleItemScene';\nimport { SceneDataTransformer } from '../../querying/SceneDataTransformer';\n\nexport class VizPanelBuilder<TOptions extends {}, TFieldConfig extends {}>\n implements StandardFieldConfigInterface<StandardFieldConfig, VizPanelBuilder<TOptions, TFieldConfig>, 'set'>\n{\n private _state: VizPanelState<TOptions, TFieldConfig> = {} as VizPanelState<TOptions, TFieldConfig>;\n private _fieldConfigBuilder: FieldConfigBuilder<TFieldConfig>;\n private _panelOptionsBuilder: PanelOptionsBuilder<TOptions>;\n\n public constructor(\n pluginId: string,\n pluginVersion: string,\n defaultOptions?: () => Partial<TOptions>,\n defaultFieldConfig?: () => TFieldConfig\n ) {\n this._state.title = '';\n this._state.description = '';\n this._state.displayMode = 'default';\n this._state.hoverHeader = false;\n this._state.pluginId = pluginId;\n this._state.pluginVersion = pluginVersion;\n\n this._fieldConfigBuilder = new FieldConfigBuilder(defaultFieldConfig);\n this._panelOptionsBuilder = new PanelOptionsBuilder(defaultOptions);\n }\n\n /**\n * Set panel title.\n */\n public setTitle(title: VizPanelState['title']): this {\n this._state.title = title;\n return this;\n }\n\n public setTitleItems(titleItems: React.ReactNode | SceneObject | SceneObject[]): this {\n this._state.titleItems = titleItems\n return this;\n }\n\n /**\n * Set panel description.\n */\n public setDescription(description: VizPanelState['description']): this {\n this._state.description = description;\n return this;\n }\n\n /**\n * Set panel display mode.\n */\n public setDisplayMode(displayMode: VizPanelState['displayMode']): this {\n this._state.displayMode = displayMode;\n return this;\n }\n\n /**\n * Set if panel header should be shown on hover.\n */\n public setHoverHeader(hoverHeader: VizPanelState['hoverHeader']): this {\n this._state.hoverHeader = hoverHeader;\n return this;\n }\n\n /**\n * Set panel menu scene object.\n */\n public setMenu(menu: VizPanelState['menu']): this {\n this._state.menu = menu;\n return this;\n }\n\n /**\n * Set scene object or react component to use as panel header actions.\n */\n public setHeaderActions(headerActions: VizPanelState['headerActions']): this {\n this._state.headerActions = headerActions;\n return this;\n }\n\n /**\n * Set color.\n */\n public setColor(color: StandardFieldConfig['color']): this {\n this._fieldConfigBuilder.setColor(color);\n return this;\n }\n\n /**\n * Set number of decimals to show.\n */\n public setDecimals(decimals: StandardFieldConfig['decimals']): this {\n this._fieldConfigBuilder.setDecimals(decimals);\n return this;\n }\n\n /**\n * Set field display name.\n */\n public setDisplayName(displayName: StandardFieldConfig['displayName']): this {\n this._fieldConfigBuilder.setDisplayName(displayName);\n return this;\n }\n\n /**\n * Set the standard field config property filterable.\n */\n public setFilterable(filterable: StandardFieldConfig['filterable']): this {\n this._fieldConfigBuilder.setFilterable(filterable);\n return this;\n }\n\n /**\n * Set data links.\n */\n public setLinks(links: StandardFieldConfig['links']): this {\n this._fieldConfigBuilder.setLinks(links);\n return this;\n }\n\n /**\n * Set value mappings.\n */\n public setMappings(mappings: StandardFieldConfig['mappings']): this {\n this._fieldConfigBuilder.setMappings(mappings);\n return this;\n }\n\n /**\n * Set the standard field config property max.\n */\n public setMax(max: StandardFieldConfig['max']): this {\n this._fieldConfigBuilder.setMax(max);\n return this;\n }\n\n /**\n * Set the standard field config property min.\n */\n public setMin(min: StandardFieldConfig['min']): this {\n this._fieldConfigBuilder.setMin(min);\n return this;\n }\n\n /**\n * Set the standard field config property noValue.\n */\n public setNoValue(noValue: StandardFieldConfig['noValue']): this {\n this._fieldConfigBuilder.setNoValue(noValue);\n return this;\n }\n\n /**\n * Set the standard field config property thresholds.\n */\n public setThresholds(thresholds: StandardFieldConfig['thresholds']): this {\n this._fieldConfigBuilder.setThresholds(thresholds);\n return this;\n }\n\n /**\n * Set the standard field config property unit.\n */\n public setUnit(unit: StandardFieldConfig['unit']): this {\n this._fieldConfigBuilder.setUnit(unit);\n return this;\n }\n\n public setCustomFieldConfig<T extends TFieldConfig, K extends keyof T>(id: K, value: DeepPartial<T[K]>): this {\n this._fieldConfigBuilder.setCustomFieldConfig(id, value);\n return this;\n }\n\n public setOverrides(builder: (b: FieldConfigOverridesBuilder<TFieldConfig>) => void): this {\n this._fieldConfigBuilder.setOverrides(builder);\n return this;\n }\n\n /**\n * Set an individual panel option. This will merge the value with the existing options.\n */\n public setOption<T extends TOptions, K extends keyof T>(id: K, value: DeepPartial<T[K]>): this {\n this._panelOptionsBuilder.setOption(id, value);\n return this;\n }\n\n /**\n * Set data provider for the panel.\n */\n public setData(data: VizPanelState['$data']): this {\n this._state.$data = data;\n return this;\n }\n\n /**\n * Set time range for the panel.\n */\n public setTimeRange(timeRange: VizPanelState['$timeRange']): this {\n this._state.$timeRange = timeRange;\n return this;\n }\n\n /**\n * Set variables for the panel.\n */\n public setVariables(variables: VizPanelState['$variables']): this {\n this._state.$variables = variables;\n return this;\n }\n\n /**\n * Set behaviors for the panel.\n */\n public setBehaviors(behaviors: VizPanelState['$behaviors']): this {\n this._state.$behaviors = behaviors;\n return this;\n }\n\n /**\n * Makes it possible to shared config between different builders\n */\n public applyMixin(mixin: (builder: this) => void): this {\n mixin(this);\n return this;\n }\n\n /**\n * Build the panel.\n */\n public build() {\n this.limitFrames();\n\n const panel = new VizPanel<TOptions, TFieldConfig>({\n ...this._state,\n options: this._panelOptionsBuilder.build(),\n fieldConfig: this._fieldConfigBuilder.build(),\n });\n\n return panel;\n }\n\n /**\n * If titleItems contains TimeSeriesLimitSeriesTitleItemScene, replace queryProvider with SceneDataTransformer and limit the number of series initially rendered\n */\n private limitFrames() {\n if(this._state.$data){\n const limitSeriesTitleItem = this.getLimitSeriesTitleItem()\n\n if (limitSeriesTitleItem && limitSeriesTitleItem.state.frameLimit) {\n this.setData(new SceneDataTransformer({\n key: LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY,\n $data: this._state.$data,\n transformations: [() => limitFramesTransformation(limitSeriesTitleItem.state.frameLimit)],\n }))\n }\n }\n }\n\n /**\n * Gets titleItem of type TimeSeriesLimitSeriesTitleItemScene, if existing\n */\n private getLimitSeriesTitleItem() {\n if (this._state.titleItems) {\n if (Array.isArray(this._state.titleItems)) {\n for (const titleItem of this._state.titleItems) {\n if (titleItem instanceof LimitFramesTitleItemScene) {\n return titleItem;\n }\n }\n } else if (this._state.titleItems instanceof LimitFramesTitleItemScene) {\n return this._state.titleItems;\n }\n }\n\n return undefined\n }\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VizPanelBuilder.js","sources":["../../../../src/core/PanelBuilders/VizPanelBuilder.ts"],"sourcesContent":["import { VizPanel, VizPanelState } from '../../components/VizPanel/VizPanel';\nimport { DeepPartial, SceneObject } from '../types';\nimport { FieldConfigBuilder } from './FieldConfigBuilder';\nimport { FieldConfigOverridesBuilder } from './FieldConfigOverridesBuilder';\nimport { PanelOptionsBuilder } from './PanelOptionsBuilder';\nimport { StandardFieldConfig, StandardFieldConfigInterface } from './types';\nimport {\n limitFramesTransformation,\n LimitFramesTitleItemScene,\n LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY,\n} from '../../components/LimitFramesTitleItemScene';\nimport { SceneDataTransformer } from '../../querying/SceneDataTransformer';\n\nexport class VizPanelBuilder<TOptions extends {}, TFieldConfig extends {}>\n implements StandardFieldConfigInterface<StandardFieldConfig, VizPanelBuilder<TOptions, TFieldConfig>, 'set'>\n{\n private _state: VizPanelState<TOptions, TFieldConfig> = {} as VizPanelState<TOptions, TFieldConfig>;\n private _fieldConfigBuilder: FieldConfigBuilder<TFieldConfig>;\n private _panelOptionsBuilder: PanelOptionsBuilder<TOptions>;\n\n public constructor(\n pluginId: string,\n pluginVersion: string,\n defaultOptions?: () => Partial<TOptions>,\n defaultFieldConfig?: () => TFieldConfig\n ) {\n this._state.title = '';\n this._state.description = '';\n this._state.displayMode = 'default';\n this._state.hoverHeader = false;\n this._state.pluginId = pluginId;\n this._state.pluginVersion = pluginVersion;\n\n this._fieldConfigBuilder = new FieldConfigBuilder(defaultFieldConfig);\n this._panelOptionsBuilder = new PanelOptionsBuilder(defaultOptions);\n }\n\n /**\n * Set panel title.\n */\n public setTitle(title: VizPanelState['title']): this {\n this._state.title = title;\n return this;\n }\n\n public setTitleItems(titleItems: React.ReactNode | SceneObject | SceneObject[]): this {\n this._state.titleItems = titleItems\n return this;\n }\n\n /**\n * Set panel description.\n */\n public setDescription(description: VizPanelState['description']): this {\n this._state.description = description;\n return this;\n }\n\n /**\n * Set panel display mode.\n */\n public setDisplayMode(displayMode: VizPanelState['displayMode']): this {\n this._state.displayMode = displayMode;\n return this;\n }\n\n /**\n * Set if panel header should be shown on hover.\n */\n public setHoverHeader(hoverHeader: VizPanelState['hoverHeader']): this {\n this._state.hoverHeader = hoverHeader;\n return this;\n }\n\n /**\n * Set panel menu scene object.\n */\n public setMenu(menu: VizPanelState['menu']): this {\n this._state.menu = menu;\n return this;\n }\n\n /**\n * Set scene object or react component to use as panel header actions.\n */\n public setHeaderActions(headerActions: VizPanelState['headerActions']): this {\n this._state.headerActions = headerActions;\n return this;\n }\n\n /**\n * Set color.\n */\n public setColor(color: StandardFieldConfig['color']): this {\n this._fieldConfigBuilder.setColor(color);\n return this;\n }\n\n /**\n * Set number of decimals to show.\n */\n public setDecimals(decimals: StandardFieldConfig['decimals']): this {\n this._fieldConfigBuilder.setDecimals(decimals);\n return this;\n }\n\n /**\n * Set field display name.\n */\n public setDisplayName(displayName: StandardFieldConfig['displayName']): this {\n this._fieldConfigBuilder.setDisplayName(displayName);\n return this;\n }\n\n /**\n * Set the standard field config property filterable.\n */\n public setFilterable(filterable: StandardFieldConfig['filterable']): this {\n this._fieldConfigBuilder.setFilterable(filterable);\n return this;\n }\n\n /**\n * Set data links.\n */\n public setLinks(links: StandardFieldConfig['links']): this {\n this._fieldConfigBuilder.setLinks(links);\n return this;\n }\n\n /**\n * Set value mappings.\n */\n public setMappings(mappings: StandardFieldConfig['mappings']): this {\n this._fieldConfigBuilder.setMappings(mappings);\n return this;\n }\n\n /**\n * Set the standard field config property max.\n */\n public setMax(max: StandardFieldConfig['max']): this {\n this._fieldConfigBuilder.setMax(max);\n return this;\n }\n\n /**\n * Set the standard field config property min.\n */\n public setMin(min: StandardFieldConfig['min']): this {\n this._fieldConfigBuilder.setMin(min);\n return this;\n }\n\n /**\n * Set the standard field config property noValue.\n */\n public setNoValue(noValue: StandardFieldConfig['noValue']): this {\n this._fieldConfigBuilder.setNoValue(noValue);\n return this;\n }\n\n /**\n * Set the standard field config property thresholds.\n */\n public setThresholds(thresholds: StandardFieldConfig['thresholds']): this {\n this._fieldConfigBuilder.setThresholds(thresholds);\n return this;\n }\n\n /**\n * Set the standard field config property unit.\n */\n public setUnit(unit: StandardFieldConfig['unit']): this {\n this._fieldConfigBuilder.setUnit(unit);\n return this;\n }\n\n public setCustomFieldConfig<T extends TFieldConfig, K extends keyof T>(id: K, value: DeepPartial<T[K]>): this {\n this._fieldConfigBuilder.setCustomFieldConfig(id, value);\n return this;\n }\n\n public setOverrides(builder: (b: FieldConfigOverridesBuilder<TFieldConfig>) => void): this {\n this._fieldConfigBuilder.setOverrides(builder);\n return this;\n }\n\n /**\n * Set an individual panel option. This will merge the value with the existing options.\n */\n public setOption<T extends TOptions, K extends keyof T>(id: K, value: DeepPartial<T[K]>): this {\n this._panelOptionsBuilder.setOption(id, value);\n return this;\n }\n\n /**\n * Set data provider for the panel.\n */\n public setData(data: VizPanelState['$data']): this {\n this._state.$data = data;\n return this;\n }\n\n /**\n * Set time range for the panel.\n */\n public setTimeRange(timeRange: VizPanelState['$timeRange']): this {\n this._state.$timeRange = timeRange;\n return this;\n }\n\n /**\n * Set variables for the panel.\n */\n public setVariables(variables: VizPanelState['$variables']): this {\n this._state.$variables = variables;\n return this;\n }\n\n /**\n * Set behaviors for the panel.\n */\n public setBehaviors(behaviors: VizPanelState['$behaviors']): this {\n this._state.$behaviors = behaviors;\n return this;\n }\n\n /**\n * Makes it possible to shared config between different builders\n */\n public applyMixin(mixin: (builder: this) => void): this {\n mixin(this);\n return this;\n }\n\n /**\n * Build the panel.\n */\n public build() {\n if(this._state.$data) {\n this.limitFramesIfLimitSceneExists();\n }\n\n const panel = new VizPanel<TOptions, TFieldConfig>({\n ...this._state,\n options: this._panelOptionsBuilder.build(),\n fieldConfig: this._fieldConfigBuilder.build(),\n });\n\n return panel;\n }\n\n /**\n * If titleItems contains TimeSeriesLimitSeriesTitleItemScene, replace queryProvider with SceneDataTransformer and limit the number of series initially rendered\n */\n private limitFramesIfLimitSceneExists() {\n if(this._state.$data){\n const limitSeriesTitleItem = this.getLimitSeriesTitleItem()\n\n if (limitSeriesTitleItem && limitSeriesTitleItem.state.frameLimit) {\n this.setData(new SceneDataTransformer({\n key: LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY,\n $data: this._state.$data,\n transformations: [() => limitFramesTransformation(limitSeriesTitleItem.state.frameLimit)],\n }))\n }\n }\n }\n\n /**\n * Gets titleItem of type TimeSeriesLimitSeriesTitleItemScene, if existing\n */\n private getLimitSeriesTitleItem() {\n if (this._state.titleItems) {\n if (Array.isArray(this._state.titleItems)) {\n for (const titleItem of this._state.titleItems) {\n if (titleItem instanceof LimitFramesTitleItemScene) {\n return titleItem;\n }\n }\n } else if (this._state.titleItems instanceof LimitFramesTitleItemScene) {\n return this._state.titleItems;\n }\n }\n\n return undefined\n }\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2556,7 +2556,7 @@ declare class VizPanelBuilder<TOptions extends {}, TFieldConfig extends {}> impl
|
|
|
2556
2556
|
/**
|
|
2557
2557
|
* If titleItems contains TimeSeriesLimitSeriesTitleItemScene, replace queryProvider with SceneDataTransformer and limit the number of series initially rendered
|
|
2558
2558
|
*/
|
|
2559
|
-
private
|
|
2559
|
+
private limitFramesIfLimitSceneExists;
|
|
2560
2560
|
/**
|
|
2561
2561
|
* Gets titleItem of type TimeSeriesLimitSeriesTitleItemScene, if existing
|
|
2562
2562
|
*/
|
package/dist/index.js
CHANGED
|
@@ -11581,16 +11581,16 @@ class LimitFramesTitleItemScene extends SceneObjectBase {
|
|
|
11581
11581
|
this.addActivationHandler(this.onActivate.bind(this));
|
|
11582
11582
|
}
|
|
11583
11583
|
onActivate() {
|
|
11584
|
-
var _a;
|
|
11585
11584
|
const panel = sceneGraph.getAncestor(this, VizPanel);
|
|
11586
11585
|
const $transformedDataArray = sceneGraph.findAllObjects(panel, (scene) => scene.state.key === LIMIT_FRAMES_TITLE_ITEM_TRANSFORMATION_KEY);
|
|
11587
11586
|
const $transformedData = $transformedDataArray[0];
|
|
11588
11587
|
if ($transformedData) {
|
|
11589
|
-
const $
|
|
11588
|
+
const $untransformedDataProviders = sceneGraph.findAllObjects($transformedData, (scene) => scene instanceof SceneDataTransformer || scene instanceof SceneQueryRunner);
|
|
11589
|
+
const $untransformedDataProvider = $untransformedDataProviders[0];
|
|
11590
11590
|
this._subs.add(
|
|
11591
11591
|
$transformedData.subscribeToState((transformedDataState) => {
|
|
11592
|
-
var
|
|
11593
|
-
if ($untransformedDataProvider && ((
|
|
11592
|
+
var _a, _b, _c;
|
|
11593
|
+
if ($untransformedDataProvider && ((_a = $untransformedDataProvider.state.data) == null ? void 0 : _a.series.length) !== this.state.currentFrameCount) {
|
|
11594
11594
|
this.setState({
|
|
11595
11595
|
currentFrameCount: (_b = transformedDataState.data) == null ? void 0 : _b.series.length,
|
|
11596
11596
|
totalFrameCount: (_c = $untransformedDataProvider.state.data) == null ? void 0 : _c.series.length
|
|
@@ -13211,14 +13211,16 @@ class VizPanelBuilder {
|
|
|
13211
13211
|
return this;
|
|
13212
13212
|
}
|
|
13213
13213
|
build() {
|
|
13214
|
-
this.
|
|
13214
|
+
if (this._state.$data) {
|
|
13215
|
+
this.limitFramesIfLimitSceneExists();
|
|
13216
|
+
}
|
|
13215
13217
|
const panel = new VizPanel(__spreadProps(__spreadValues({}, this._state), {
|
|
13216
13218
|
options: this._panelOptionsBuilder.build(),
|
|
13217
13219
|
fieldConfig: this._fieldConfigBuilder.build()
|
|
13218
13220
|
}));
|
|
13219
13221
|
return panel;
|
|
13220
13222
|
}
|
|
13221
|
-
|
|
13223
|
+
limitFramesIfLimitSceneExists() {
|
|
13222
13224
|
if (this._state.$data) {
|
|
13223
13225
|
const limitSeriesTitleItem = this.getLimitSeriesTitleItem();
|
|
13224
13226
|
if (limitSeriesTitleItem && limitSeriesTitleItem.state.frameLimit) {
|