@grafana/scenes 5.26.0--canary.973.11972632953.0 → 5.26.0--canary.912.11978949363.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/esm/components/LimitSeriesTitleItem.js +93 -0
- package/dist/esm/components/LimitSeriesTitleItem.js.map +1 -0
- package/dist/esm/components/VizPanel/VizPanel.js.map +1 -1
- package/dist/esm/components/VizPanel/VizPanelRenderer.js +0 -2
- package/dist/esm/components/VizPanel/VizPanelRenderer.js.map +1 -1
- package/dist/esm/core/PanelBuilders/VizPanelBuilder.js +32 -4
- package/dist/esm/core/PanelBuilders/VizPanelBuilder.js.map +1 -1
- package/dist/esm/core/sceneGraph/index.js +3 -2
- package/dist/esm/core/sceneGraph/index.js.map +1 -1
- package/dist/esm/core/sceneGraph/sceneGraph.js +8 -1
- package/dist/esm/core/sceneGraph/sceneGraph.js.map +1 -1
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/index.d.ts +38 -10
- package/dist/index.js +146 -32
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sceneGraph.js","sources":["../../../../src/core/sceneGraph/sceneGraph.ts"],"sourcesContent":["import { ScopedVars } from '@grafana/data';\nimport { EmptyDataNode, EmptyVariableSet } from '../../variables/interpolation/defaults';\n\nimport { sceneInterpolator } from '../../variables/interpolation/sceneInterpolator';\nimport { VariableCustomFormatterFn, SceneVariables } from '../../variables/types';\n\nimport { isDataLayer, SceneDataLayerProvider, SceneDataProvider, SceneLayout, SceneObject } from '../types';\nimport { lookupVariable } from '../../variables/lookupVariable';\nimport { getClosest } from './utils';\nimport { SceneQueryControllerLike, isQueryController } from '../../behaviors/SceneQueryController';\nimport { VariableInterpolation } from '@grafana/runtime';\nimport { QueryVariable } from '../../variables/variants/query/QueryVariable';\nimport { UrlSyncManagerLike } from '../../services/UrlSyncManager';\n\n/**\n * Get the closest node with variables\n */\nexport function getVariables(sceneObject: SceneObject): SceneVariables {\n return getClosest(sceneObject, (s) => s.state.$variables) ?? EmptyVariableSet;\n}\n\n/**\n * Will walk up the scene object graph to the closest $data scene object\n */\nexport function getData(sceneObject: SceneObject): SceneDataProvider {\n return getClosest(sceneObject, (s) => s.state.$data) ?? EmptyDataNode;\n}\n\nfunction isSceneLayout(s: SceneObject): s is SceneLayout {\n return 'isDraggable' in s;\n}\n\n/**\n * Will walk up the scene object graph to the closest $layout scene object\n */\nexport function getLayout(scene: SceneObject): SceneLayout | null {\n const parent = getClosest(scene, (s) => (isSceneLayout(s) ? s : undefined));\n if (parent) {\n return parent;\n }\n\n return null;\n}\n\n/**\n * Interpolates the given string using the current scene object as context. *\n *\n * Note: the interpolations array will be mutated by adding information about variables that\n * have been interpolated during replacement. Variables that were specified in the target but not found in\n * the list of available variables are also added to the array. See {@link VariableInterpolation} for more details.\n *\n * @param {VariableInterpolation[]} interpolations an optional array that is updated with interpolated variables.\n */\nexport function interpolate(\n sceneObject: SceneObject,\n value: string | undefined | null,\n scopedVars?: ScopedVars,\n format?: string | VariableCustomFormatterFn,\n interpolations?: VariableInterpolation[]\n): string {\n if (value === '' || value == null) {\n return '';\n }\n\n return sceneInterpolator(sceneObject, value, scopedVars, format, interpolations);\n}\n\n/**\n * Checks if the variable is currently loading or waiting to update.\n * It also returns true if a dependency of the variable is loading.\n *\n * For example if C depends on variable B which depends on variable A and A is loading this returns true for variable C and B.\n */\nexport function hasVariableDependencyInLoadingState(sceneObject: SceneObject) {\n if (!sceneObject.variableDependency) {\n return false;\n }\n\n for (const name of sceneObject.variableDependency.getNames()) {\n // This is for backwards compability. In the old architecture query variables could reference itself in a query without breaking.\n if (sceneObject instanceof QueryVariable && sceneObject.state.name === name) {\n console.warn('Query variable is referencing itself');\n continue;\n }\n\n const variable = lookupVariable(name, sceneObject);\n if (!variable) {\n continue;\n }\n\n const set = variable.parent as SceneVariables;\n if (set.isVariableLoadingOrWaitingToUpdate(variable)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction findObjectInternal(\n scene: SceneObject,\n check: (obj: SceneObject) => boolean,\n alreadySearchedChild?: SceneObject,\n shouldSearchUp?: boolean\n): SceneObject | null {\n if (check(scene)) {\n return scene;\n }\n\n let found: SceneObject | null = null;\n\n scene.forEachChild((child) => {\n if (child === alreadySearchedChild) {\n return;\n }\n\n let maybe = findObjectInternal(child, check);\n if (maybe) {\n found = maybe;\n }\n });\n\n if (found) {\n return found;\n }\n\n if (shouldSearchUp && scene.parent) {\n return findObjectInternal(scene.parent, check, scene, true);\n }\n\n return null;\n}\n\n/**\n * Returns a scene object from the scene graph with the requested key.\n *\n * Throws error if no key-matching scene object found.\n */\nexport function findByKey(sceneObject: SceneObject, key: string) {\n const found = findObject(sceneObject, (sceneToCheck) => {\n return sceneToCheck.state.key === key;\n });\n if (!found) {\n throw new Error('Unable to find scene with key ' + key);\n }\n return found;\n}\n\n/**\n * Returns a scene object from the scene graph with the requested key and type.\n *\n * Throws error if no key-matching scene object found.\n * Throws error if the given type does not match.\n */\nexport function findByKeyAndType<TargetType extends SceneObject>(\n sceneObject: SceneObject,\n key: string,\n targetType: { new (...args: never[]): TargetType }\n) {\n const found = findObject(sceneObject, (sceneToCheck) => {\n return sceneToCheck.state.key === key;\n });\n if (!found) {\n throw new Error('Unable to find scene with key ' + key);\n }\n if (!(found instanceof targetType)) {\n throw new Error(`Found scene object with key ${key} does not match type ${targetType.name}`);\n }\n return found;\n}\n\n/**\n * This will search the full scene graph, starting with the scene node passed in, then walking up the parent chain. *\n */\nexport function findObject(scene: SceneObject, check: (obj: SceneObject) => boolean): SceneObject | null {\n return findObjectInternal(scene, check, undefined, true);\n}\n\n/**\n * This will search down the full scene graph, looking for objects that match the provided predicate.\n */\nexport function findAllObjects(scene: SceneObject, check: (obj: SceneObject) => boolean): SceneObject[] {\n const found: SceneObject[] = [];\n\n scene.forEachChild((child) => {\n if (check(child)) {\n found.push(child);\n }\n\n found.push(...findAllObjects(child, check));\n });\n\n return found;\n}\n\n/**\n * Will walk up the scene object graph up until the root and collect all SceneDataLayerProvider objects.\n * When localOnly set to true, it will only collect the closest layers.\n */\nexport function getDataLayers(sceneObject: SceneObject, localOnly = false): SceneDataLayerProvider[] {\n let currentLevel: SceneObject | undefined = sceneObject;\n let collected: SceneDataLayerProvider[] = [];\n\n while (currentLevel) {\n const dataProvider = currentLevel.state.$data;\n if (!dataProvider) {\n currentLevel = currentLevel.parent;\n continue;\n }\n\n // Check if data layer exists nested inside another data provider\n if (isDataLayer(dataProvider)) {\n collected = collected.concat(dataProvider);\n } else {\n if (dataProvider.state.$data && isDataLayer(dataProvider.state.$data)) {\n collected = collected.concat(dataProvider.state.$data);\n }\n }\n\n if (localOnly && collected.length > 0) {\n break;\n }\n\n currentLevel = currentLevel.parent;\n }\n\n return collected;\n}\n\ninterface SceneType<T> extends Function {\n new (...args: never[]): T;\n}\n\n/**\n * A utility function to find the closest ancestor of a given type. This function expects\n * to find it and will throw an error if it does not.\n */\nexport function getAncestor<ParentType>(\n sceneObject: SceneObject,\n ancestorType: SceneType<ParentType>\n): ParentType {\n let parent: SceneObject | undefined = sceneObject;\n\n while (parent) {\n if (parent instanceof ancestorType) {\n return parent;\n }\n parent = parent.parent;\n }\n\n if (!parent) {\n throw new Error('Unable to find parent of type ' + ancestorType.name);\n }\n\n return parent as ParentType;\n}\n\n/**\n * This will search down the full scene graph, looking for objects that match the provided descendentType type.\n */\nexport function findDescendents<T extends SceneObject>(scene: SceneObject, descendentType: SceneType<T>) {\n function isDescendentType(scene: SceneObject): scene is T {\n return scene instanceof descendentType;\n }\n\n const targetScenes = findAllObjects(scene, isDescendentType);\n return targetScenes.filter(isDescendentType);\n}\n\n/**\n * Returns the closest query controller undefined if none found\n */\nexport function getQueryController(sceneObject: SceneObject): SceneQueryControllerLike | undefined {\n let parent: SceneObject | undefined = sceneObject;\n\n while (parent) {\n if (parent.state.$behaviors) {\n for (const behavior of parent.state.$behaviors) {\n if (isQueryController(behavior)) {\n return behavior;\n }\n }\n }\n parent = parent.parent;\n }\n\n return undefined;\n}\n\n/**\n * Returns the closest SceneObject that has a state property with the\n * name urlSyncManager that is of type UrlSyncManager\n */\nexport function getUrlSyncManager(sceneObject: SceneObject): UrlSyncManagerLike | undefined {\n let parent: SceneObject | undefined = sceneObject;\n\n while (parent) {\n if ('urlSyncManager' in parent.state) {\n return parent.state.urlSyncManager as UrlSyncManagerLike;\n }\n parent = parent.parent;\n }\n\n return undefined;\n}\n"],"names":["scene"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"sceneGraph.js","sources":["../../../../src/core/sceneGraph/sceneGraph.ts"],"sourcesContent":["import { ScopedVars } from '@grafana/data';\nimport { EmptyDataNode, EmptyVariableSet } from '../../variables/interpolation/defaults';\n\nimport { sceneInterpolator } from '../../variables/interpolation/sceneInterpolator';\nimport { VariableCustomFormatterFn, SceneVariables } from '../../variables/types';\n\nimport { isDataLayer, SceneDataLayerProvider, SceneDataProvider, SceneLayout, SceneObject } from '../types';\nimport { lookupVariable } from '../../variables/lookupVariable';\nimport { getClosest } from './utils';\nimport { SceneQueryControllerLike, isQueryController } from '../../behaviors/SceneQueryController';\nimport { VariableInterpolation } from '@grafana/runtime';\nimport { QueryVariable } from '../../variables/variants/query/QueryVariable';\nimport { UrlSyncManagerLike } from '../../services/UrlSyncManager';\n\n/**\n * Get the closest node with variables\n */\nexport function getVariables(sceneObject: SceneObject): SceneVariables {\n return getClosest(sceneObject, (s) => s.state.$variables) ?? EmptyVariableSet;\n}\n\n/**\n * Will walk up the scene object graph to the closest $data scene object\n */\nexport function getData(sceneObject: SceneObject): SceneDataProvider {\n return getClosest(sceneObject, (s) => s.state.$data) ?? EmptyDataNode;\n}\n\nfunction isSceneLayout(s: SceneObject): s is SceneLayout {\n return 'isDraggable' in s;\n}\n\n/**\n * Will walk up the scene object graph to the closest $layout scene object\n */\nexport function getLayout(scene: SceneObject): SceneLayout | null {\n const parent = getClosest(scene, (s) => (isSceneLayout(s) ? s : undefined));\n if (parent) {\n return parent;\n }\n\n return null;\n}\n\n/**\n * Interpolates the given string using the current scene object as context. *\n *\n * Note: the interpolations array will be mutated by adding information about variables that\n * have been interpolated during replacement. Variables that were specified in the target but not found in\n * the list of available variables are also added to the array. See {@link VariableInterpolation} for more details.\n *\n * @param {VariableInterpolation[]} interpolations an optional array that is updated with interpolated variables.\n */\nexport function interpolate(\n sceneObject: SceneObject,\n value: string | undefined | null,\n scopedVars?: ScopedVars,\n format?: string | VariableCustomFormatterFn,\n interpolations?: VariableInterpolation[]\n): string {\n if (value === '' || value == null) {\n return '';\n }\n\n return sceneInterpolator(sceneObject, value, scopedVars, format, interpolations);\n}\n\n/**\n * Checks if the variable is currently loading or waiting to update.\n * It also returns true if a dependency of the variable is loading.\n *\n * For example if C depends on variable B which depends on variable A and A is loading this returns true for variable C and B.\n */\nexport function hasVariableDependencyInLoadingState(sceneObject: SceneObject) {\n if (!sceneObject.variableDependency) {\n return false;\n }\n\n for (const name of sceneObject.variableDependency.getNames()) {\n // This is for backwards compability. In the old architecture query variables could reference itself in a query without breaking.\n if (sceneObject instanceof QueryVariable && sceneObject.state.name === name) {\n console.warn('Query variable is referencing itself');\n continue;\n }\n\n const variable = lookupVariable(name, sceneObject);\n if (!variable) {\n continue;\n }\n\n const set = variable.parent as SceneVariables;\n if (set.isVariableLoadingOrWaitingToUpdate(variable)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction findObjectInternal(\n scene: SceneObject,\n check: (obj: SceneObject) => boolean,\n alreadySearchedChild?: SceneObject,\n shouldSearchUp?: boolean\n): SceneObject | null {\n if (check(scene)) {\n return scene;\n }\n\n let found: SceneObject | null = null;\n\n scene.forEachChild((child) => {\n if (child === alreadySearchedChild) {\n return;\n }\n\n let maybe = findObjectInternal(child, check);\n if (maybe) {\n found = maybe;\n }\n });\n\n if (found) {\n return found;\n }\n\n if (shouldSearchUp && scene.parent) {\n return findObjectInternal(scene.parent, check, scene, true);\n }\n\n return null;\n}\n\n/**\n * Returns a scene object from the scene graph with the requested key.\n *\n * Throws error if no key-matching scene object found.\n */\nexport function findByKey(sceneObject: SceneObject, key: string) {\n const found = findObject(sceneObject, (sceneToCheck) => {\n return sceneToCheck.state.key === key;\n });\n if (!found) {\n throw new Error('Unable to find scene with key ' + key);\n }\n return found;\n}\n\n/**\n * Returns a scene object from the scene graph with the requested key and type.\n *\n * Throws error if no key-matching scene object found.\n * Throws error if the given type does not match.\n */\nexport function findByKeyAndType<TargetType extends SceneObject>(\n sceneObject: SceneObject,\n key: string,\n targetType: { new (...args: never[]): TargetType }\n) {\n const found = findObject(sceneObject, (sceneToCheck) => {\n return sceneToCheck.state.key === key;\n });\n if (!found) {\n throw new Error('Unable to find scene with key ' + key);\n }\n if (!(found instanceof targetType)) {\n throw new Error(`Found scene object with key ${key} does not match type ${targetType.name}`);\n }\n return found;\n}\n\n/**\n * This will search the full scene graph, starting with the scene node passed in, then walking up the parent chain. *\n */\nexport function findObject(scene: SceneObject, check: (obj: SceneObject) => boolean): SceneObject | null {\n return findObjectInternal(scene, check, undefined, true);\n}\n\n/**\n * This will search down the full scene graph, looking for objects that match the provided predicate.\n */\nexport function findAllObjects(scene: SceneObject, check: (obj: SceneObject) => boolean): SceneObject[] {\n const found: SceneObject[] = [];\n\n scene.forEachChild((child) => {\n if (check(child)) {\n found.push(child);\n }\n\n found.push(...findAllObjects(child, check));\n });\n\n return found;\n}\n\nexport function findDescendent<T extends SceneObject>(scene: SceneObject, descendentType: SceneType<T>) {\n function isDescendentType(scene: SceneObject): scene is T {\n return scene instanceof descendentType;\n }\n\n const targetScenes = findAllObjects(scene, isDescendentType);\n return targetScenes.find(isDescendentType);\n}\n\n/**\n * Will walk up the scene object graph up until the root and collect all SceneDataLayerProvider objects.\n * When localOnly set to true, it will only collect the closest layers.\n */\nexport function getDataLayers(sceneObject: SceneObject, localOnly = false): SceneDataLayerProvider[] {\n let currentLevel: SceneObject | undefined = sceneObject;\n let collected: SceneDataLayerProvider[] = [];\n\n while (currentLevel) {\n const dataProvider = currentLevel.state.$data;\n if (!dataProvider) {\n currentLevel = currentLevel.parent;\n continue;\n }\n\n // Check if data layer exists nested inside another data provider\n if (isDataLayer(dataProvider)) {\n collected = collected.concat(dataProvider);\n } else {\n if (dataProvider.state.$data && isDataLayer(dataProvider.state.$data)) {\n collected = collected.concat(dataProvider.state.$data);\n }\n }\n\n if (localOnly && collected.length > 0) {\n break;\n }\n\n currentLevel = currentLevel.parent;\n }\n\n return collected;\n}\n\ninterface SceneType<T> extends Function {\n new (...args: never[]): T;\n}\n\n/**\n * A utility function to find the closest ancestor of a given type. This function expects\n * to find it and will throw an error if it does not.\n */\nexport function getAncestor<ParentType>(\n sceneObject: SceneObject,\n ancestorType: SceneType<ParentType>\n): ParentType {\n let parent: SceneObject | undefined = sceneObject;\n\n while (parent) {\n if (parent instanceof ancestorType) {\n return parent;\n }\n parent = parent.parent;\n }\n\n if (!parent) {\n throw new Error('Unable to find parent of type ' + ancestorType.name);\n }\n\n return parent as ParentType;\n}\n\n/**\n * This will search down the full scene graph, looking for objects that match the provided descendentType type.\n */\nexport function findDescendents<T extends SceneObject>(scene: SceneObject, descendentType: SceneType<T>) {\n function isDescendentType(scene: SceneObject): scene is T {\n return scene instanceof descendentType;\n }\n\n const targetScenes = findAllObjects(scene, isDescendentType);\n return targetScenes.filter(isDescendentType);\n}\n\n/**\n * Returns the closest query controller undefined if none found\n */\nexport function getQueryController(sceneObject: SceneObject): SceneQueryControllerLike | undefined {\n let parent: SceneObject | undefined = sceneObject;\n\n while (parent) {\n if (parent.state.$behaviors) {\n for (const behavior of parent.state.$behaviors) {\n if (isQueryController(behavior)) {\n return behavior;\n }\n }\n }\n parent = parent.parent;\n }\n\n return undefined;\n}\n\n/**\n * Returns the closest SceneObject that has a state property with the\n * name urlSyncManager that is of type UrlSyncManager\n */\nexport function getUrlSyncManager(sceneObject: SceneObject): UrlSyncManagerLike | undefined {\n let parent: SceneObject | undefined = sceneObject;\n\n while (parent) {\n if ('urlSyncManager' in parent.state) {\n return parent.state.urlSyncManager as UrlSyncManagerLike;\n }\n parent = parent.parent;\n }\n\n return undefined;\n}\n"],"names":["scene"],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
@@ -60,6 +60,7 @@ export { SceneTimeRangeCompare } from './components/SceneTimeRangeCompare.js';
|
|
60
60
|
export { SceneByFrameRepeater } from './components/SceneByFrameRepeater.js';
|
61
61
|
export { SceneByVariableRepeater } from './components/SceneByVariableRepeater.js';
|
62
62
|
export { SceneControlsSpacer } from './components/SceneControlsSpacer.js';
|
63
|
+
export { TimeSeriesLimitSeriesTitleItemScene } from './components/LimitSeriesTitleItem.js';
|
63
64
|
export { SceneFlexItem, SceneFlexLayout } from './components/layout/SceneFlexLayout.js';
|
64
65
|
export { SceneCSSGridItem, SceneCSSGridLayout } from './components/layout/CSSGrid/SceneCSSGridLayout.js';
|
65
66
|
export { SceneGridLayout } from './components/layout/grid/SceneGridLayout.js';
|
package/dist/esm/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { getUrlWithAppState } from './components/SceneApp/utils';\nimport { registerRuntimePanelPlugin } from './components/VizPanel/registerRuntimePanelPlugin';\nimport { cloneSceneObjectState } from './core/sceneGraph/utils';\nimport { registerRuntimeDataSource } from './querying/RuntimeDataSource';\nimport { getUrlState, syncStateFromSearchParams } from './services/utils';\n\nimport { registerVariableMacro } from './variables/macros';\nimport { renderPrometheusLabelFilters } from './variables/utils';\nimport {\n isAdHocVariable,\n isQueryVariable,\n isTextBoxVariable,\n isCustomVariable,\n isDataSourceVariable,\n isConstantVariable,\n isIntervalVariable,\n isGroupByVariable,\n} from './variables/variants/guards';\n\nexport * from './core/types';\nexport * from './core/events';\nexport { sceneGraph } from './core/sceneGraph';\nexport * as behaviors from './behaviors';\nexport * as dataLayers from './querying/layers';\n\nexport { SceneObjectBase, useSceneObjectState } from './core/SceneObjectBase';\nexport { SceneDataNode } from './core/SceneDataNode';\nexport { SceneTimeRange } from './core/SceneTimeRange';\nexport { SceneTimeZoneOverride } from './core/SceneTimeZoneOverride';\n\nexport { SceneQueryRunner, type QueryRunnerState } from './querying/SceneQueryRunner';\nexport { DataProviderProxy } from './querying/DataProviderProxy';\nexport {\n type ExtraQueryDescriptor,\n type ExtraQueryProvider,\n type ExtraQueryDataProcessor,\n} from './querying/ExtraQueryProvider';\nexport { SceneDataLayerSet, SceneDataLayerSetBase } from './querying/SceneDataLayerSet';\nexport { SceneDataLayerBase } from './querying/layers/SceneDataLayerBase';\nexport { SceneDataLayerControls } from './querying/layers/SceneDataLayerControls';\nexport { SceneDataTransformer, type SceneDataTransformerState } from './querying/SceneDataTransformer';\nexport { registerQueryWithController } from './querying/registerQueryWithController';\nexport { registerRuntimeDataSource, RuntimeDataSource } from './querying/RuntimeDataSource';\nexport type {\n SceneQueryControllerLike,\n SceneQueryControllerEntryType,\n SceneQueryControllerEntry,\n} from './behaviors/SceneQueryController';\n\nexport * from './variables/types';\nexport { VariableDependencyConfig } from './variables/VariableDependencyConfig';\nexport { formatRegistry, type FormatVariable } from './variables/interpolation/formatRegistry';\nexport { VariableValueSelectors } from './variables/components/VariableValueSelectors';\nexport { VariableValueControl } from './variables/components/VariableValueControl';\nexport { SceneVariableSet } from './variables/sets/SceneVariableSet';\nexport { ConstantVariable } from './variables/variants/ConstantVariable';\nexport { CustomVariable } from './variables/variants/CustomVariable';\nexport { DataSourceVariable } from './variables/variants/DataSourceVariable';\nexport { QueryVariable } from './variables/variants/query/QueryVariable';\nexport { TestVariable } from './variables/variants/TestVariable';\nexport { TextBoxVariable } from './variables/variants/TextBoxVariable';\nexport {\n MultiValueVariable,\n type MultiValueVariableState,\n type VariableGetOptionsArgs,\n} from './variables/variants/MultiValueVariable';\nexport { LocalValueVariable } from './variables/variants/LocalValueVariable';\nexport { IntervalVariable } from './variables/variants/IntervalVariable';\nexport { AdHocFiltersVariable } from './variables/adhoc/AdHocFiltersVariable';\nexport { GroupByVariable } from './variables/groupby/GroupByVariable';\nexport { type MacroVariableConstructor } from './variables/macros/types';\n\nexport { type UrlSyncManagerLike, UrlSyncManager, NewSceneObjectAddedEvent } from './services/UrlSyncManager';\nexport { useUrlSync } from './services/useUrlSync';\nexport { UrlSyncContextProvider } from './services/UrlSyncContextProvider';\nexport { SceneObjectUrlSyncConfig } from './services/SceneObjectUrlSyncConfig';\n\nexport { EmbeddedScene, type EmbeddedSceneState } from './components/EmbeddedScene';\nexport { VizPanel, type VizPanelState } from './components/VizPanel/VizPanel';\nexport { VizPanelMenu } from './components/VizPanel/VizPanelMenu';\nexport { VizPanelExploreButton } from './components/VizPanel/VizPanelExploreButton';\nexport { NestedScene } from './components/NestedScene';\nexport { SceneCanvasText } from './components/SceneCanvasText';\nexport { SceneToolbarButton, SceneToolbarInput } from './components/SceneToolbarButton';\nexport { SceneTimePicker } from './components/SceneTimePicker';\nexport { SceneRefreshPicker, type SceneRefreshPickerState } from './components/SceneRefreshPicker';\nexport { SceneTimeRangeTransformerBase } from './core/SceneTimeRangeTransformerBase';\nexport { SceneTimeRangeCompare } from './components/SceneTimeRangeCompare';\nexport { SceneByFrameRepeater } from './components/SceneByFrameRepeater';\nexport { SceneByVariableRepeater } from './components/SceneByVariableRepeater';\nexport { SceneControlsSpacer } from './components/SceneControlsSpacer';\nexport {\n SceneFlexLayout,\n SceneFlexItem,\n type SceneFlexItemState,\n type SceneFlexItemLike,\n} from './components/layout/SceneFlexLayout';\nexport { SceneCSSGridLayout, SceneCSSGridItem } from './components/layout/CSSGrid/SceneCSSGridLayout';\nexport { SceneGridLayout } from './components/layout/grid/SceneGridLayout';\nexport { SceneGridItem } from './components/layout/grid/SceneGridItem';\nexport { SceneGridRow } from './components/layout/grid/SceneGridRow';\nexport { type SceneGridItemStateLike, type SceneGridItemLike } from './components/layout/grid/types';\nexport { SplitLayout } from './components/layout/split/SplitLayout';\nexport {\n type SceneAppPageLike,\n type SceneRouteMatch,\n type SceneAppPageState,\n type SceneAppDrilldownView,\n type SceneAppRoute,\n} from './components/SceneApp/types';\nexport { SceneApp, useSceneApp } from './components/SceneApp/SceneApp';\nexport { SceneAppPage } from './components/SceneApp/SceneAppPage';\nexport { SceneReactObject } from './components/SceneReactObject';\nexport { SceneObjectRef } from './core/SceneObjectRef';\nexport {\n PanelBuilders,\n PanelOptionsBuilders,\n FieldConfigBuilders,\n FieldConfigOverridesBuilder,\n} from './core/PanelBuilders';\nexport { FieldConfigBuilder } from './core/PanelBuilders/FieldConfigBuilder';\nexport { VizPanelBuilder } from './core/PanelBuilders/VizPanelBuilder';\nexport { SceneDebugger } from './components/SceneDebugger/SceneDebugger';\nexport { VariableValueSelectWrapper } from './variables/components/VariableValueSelectors';\nexport { ControlsLabel } from './utils/ControlsLabel';\nexport { renderSelectForVariable } from './variables/components/VariableValueSelect';\nexport { VizConfigBuilder } from './core/PanelBuilders/VizConfigBuilder';\nexport { VizConfigBuilders } from './core/PanelBuilders/VizConfigBuilders';\nexport { type VizConfig } from './core/PanelBuilders/types';\n\nexport const sceneUtils = {\n getUrlWithAppState,\n registerRuntimePanelPlugin,\n registerRuntimeDataSource,\n registerVariableMacro,\n cloneSceneObjectState,\n syncStateFromSearchParams,\n getUrlState,\n renderPrometheusLabelFilters,\n\n // Variable guards\n isAdHocVariable,\n isConstantVariable,\n isCustomVariable,\n isDataSourceVariable,\n isIntervalVariable,\n isQueryVariable,\n isTextBoxVariable,\n isGroupByVariable,\n};\n\nexport { SafeSerializableSceneObject } from './utils/SafeSerializableSceneObject';\nexport { getExploreURL } from './utils/explore';\n"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/index.ts"],"sourcesContent":["import { getUrlWithAppState } from './components/SceneApp/utils';\nimport { registerRuntimePanelPlugin } from './components/VizPanel/registerRuntimePanelPlugin';\nimport { cloneSceneObjectState } from './core/sceneGraph/utils';\nimport { registerRuntimeDataSource } from './querying/RuntimeDataSource';\nimport { getUrlState, syncStateFromSearchParams } from './services/utils';\n\nimport { registerVariableMacro } from './variables/macros';\nimport { renderPrometheusLabelFilters } from './variables/utils';\nimport {\n isAdHocVariable,\n isQueryVariable,\n isTextBoxVariable,\n isCustomVariable,\n isDataSourceVariable,\n isConstantVariable,\n isIntervalVariable,\n isGroupByVariable,\n} from './variables/variants/guards';\n\nexport * from './core/types';\nexport * from './core/events';\nexport { sceneGraph } from './core/sceneGraph';\nexport * as behaviors from './behaviors';\nexport * as dataLayers from './querying/layers';\n\nexport { SceneObjectBase, useSceneObjectState } from './core/SceneObjectBase';\nexport { SceneDataNode } from './core/SceneDataNode';\nexport { SceneTimeRange } from './core/SceneTimeRange';\nexport { SceneTimeZoneOverride } from './core/SceneTimeZoneOverride';\n\nexport { SceneQueryRunner, type QueryRunnerState } from './querying/SceneQueryRunner';\nexport { DataProviderProxy } from './querying/DataProviderProxy';\nexport {\n type ExtraQueryDescriptor,\n type ExtraQueryProvider,\n type ExtraQueryDataProcessor,\n} from './querying/ExtraQueryProvider';\nexport { SceneDataLayerSet, SceneDataLayerSetBase } from './querying/SceneDataLayerSet';\nexport { SceneDataLayerBase } from './querying/layers/SceneDataLayerBase';\nexport { SceneDataLayerControls } from './querying/layers/SceneDataLayerControls';\nexport { SceneDataTransformer, type SceneDataTransformerState } from './querying/SceneDataTransformer';\nexport { registerQueryWithController } from './querying/registerQueryWithController';\nexport { registerRuntimeDataSource, RuntimeDataSource } from './querying/RuntimeDataSource';\nexport type {\n SceneQueryControllerLike,\n SceneQueryControllerEntryType,\n SceneQueryControllerEntry,\n} from './behaviors/SceneQueryController';\n\nexport * from './variables/types';\nexport { VariableDependencyConfig } from './variables/VariableDependencyConfig';\nexport { formatRegistry, type FormatVariable } from './variables/interpolation/formatRegistry';\nexport { VariableValueSelectors } from './variables/components/VariableValueSelectors';\nexport { VariableValueControl } from './variables/components/VariableValueControl';\nexport { SceneVariableSet } from './variables/sets/SceneVariableSet';\nexport { ConstantVariable } from './variables/variants/ConstantVariable';\nexport { CustomVariable } from './variables/variants/CustomVariable';\nexport { DataSourceVariable } from './variables/variants/DataSourceVariable';\nexport { QueryVariable } from './variables/variants/query/QueryVariable';\nexport { TestVariable } from './variables/variants/TestVariable';\nexport { TextBoxVariable } from './variables/variants/TextBoxVariable';\nexport {\n MultiValueVariable,\n type MultiValueVariableState,\n type VariableGetOptionsArgs,\n} from './variables/variants/MultiValueVariable';\nexport { LocalValueVariable } from './variables/variants/LocalValueVariable';\nexport { IntervalVariable } from './variables/variants/IntervalVariable';\nexport { AdHocFiltersVariable } from './variables/adhoc/AdHocFiltersVariable';\nexport { GroupByVariable } from './variables/groupby/GroupByVariable';\nexport { type MacroVariableConstructor } from './variables/macros/types';\n\nexport { type UrlSyncManagerLike, UrlSyncManager, NewSceneObjectAddedEvent } from './services/UrlSyncManager';\nexport { useUrlSync } from './services/useUrlSync';\nexport { UrlSyncContextProvider } from './services/UrlSyncContextProvider';\nexport { SceneObjectUrlSyncConfig } from './services/SceneObjectUrlSyncConfig';\n\nexport { EmbeddedScene, type EmbeddedSceneState } from './components/EmbeddedScene';\nexport { VizPanel, type VizPanelState } from './components/VizPanel/VizPanel';\nexport { VizPanelMenu } from './components/VizPanel/VizPanelMenu';\nexport { VizPanelExploreButton } from './components/VizPanel/VizPanelExploreButton';\nexport { NestedScene } from './components/NestedScene';\nexport { SceneCanvasText } from './components/SceneCanvasText';\nexport { SceneToolbarButton, SceneToolbarInput } from './components/SceneToolbarButton';\nexport { SceneTimePicker } from './components/SceneTimePicker';\nexport { SceneRefreshPicker, type SceneRefreshPickerState } from './components/SceneRefreshPicker';\nexport { SceneTimeRangeTransformerBase } from './core/SceneTimeRangeTransformerBase';\nexport { SceneTimeRangeCompare } from './components/SceneTimeRangeCompare';\nexport { SceneByFrameRepeater } from './components/SceneByFrameRepeater';\nexport { SceneByVariableRepeater } from './components/SceneByVariableRepeater';\nexport { SceneControlsSpacer } from './components/SceneControlsSpacer';\nexport {TimeSeriesLimitSeriesTitleItemScene} from './components/LimitSeriesTitleItem'\nexport {\n SceneFlexLayout,\n SceneFlexItem,\n type SceneFlexItemState,\n type SceneFlexItemLike,\n} from './components/layout/SceneFlexLayout';\nexport { SceneCSSGridLayout, SceneCSSGridItem } from './components/layout/CSSGrid/SceneCSSGridLayout';\nexport { SceneGridLayout } from './components/layout/grid/SceneGridLayout';\nexport { SceneGridItem } from './components/layout/grid/SceneGridItem';\nexport { SceneGridRow } from './components/layout/grid/SceneGridRow';\nexport { type SceneGridItemStateLike, type SceneGridItemLike } from './components/layout/grid/types';\nexport { SplitLayout } from './components/layout/split/SplitLayout';\nexport {\n type SceneAppPageLike,\n type SceneRouteMatch,\n type SceneAppPageState,\n type SceneAppDrilldownView,\n type SceneAppRoute,\n} from './components/SceneApp/types';\nexport { SceneApp, useSceneApp } from './components/SceneApp/SceneApp';\nexport { SceneAppPage } from './components/SceneApp/SceneAppPage';\nexport { SceneReactObject } from './components/SceneReactObject';\nexport { SceneObjectRef } from './core/SceneObjectRef';\nexport {\n PanelBuilders,\n PanelOptionsBuilders,\n FieldConfigBuilders,\n FieldConfigOverridesBuilder,\n} from './core/PanelBuilders';\nexport { FieldConfigBuilder } from './core/PanelBuilders/FieldConfigBuilder';\nexport { VizPanelBuilder } from './core/PanelBuilders/VizPanelBuilder';\nexport { SceneDebugger } from './components/SceneDebugger/SceneDebugger';\nexport { VariableValueSelectWrapper } from './variables/components/VariableValueSelectors';\nexport { ControlsLabel } from './utils/ControlsLabel';\nexport { renderSelectForVariable } from './variables/components/VariableValueSelect';\nexport { VizConfigBuilder } from './core/PanelBuilders/VizConfigBuilder';\nexport { VizConfigBuilders } from './core/PanelBuilders/VizConfigBuilders';\nexport { type VizConfig } from './core/PanelBuilders/types';\n\nexport const sceneUtils = {\n getUrlWithAppState,\n registerRuntimePanelPlugin,\n registerRuntimeDataSource,\n registerVariableMacro,\n cloneSceneObjectState,\n syncStateFromSearchParams,\n getUrlState,\n renderPrometheusLabelFilters,\n\n // Variable guards\n isAdHocVariable,\n isConstantVariable,\n isCustomVariable,\n isDataSourceVariable,\n isIntervalVariable,\n isQueryVariable,\n isTextBoxVariable,\n isGroupByVariable,\n};\n\nexport { SafeSerializableSceneObject } from './utils/SafeSerializableSceneObject';\nexport { getExploreURL } from './utils/explore';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmIO,MAAM,UAAa,GAAA;AAAA,EACxB,kBAAA;AAAA,EACA,0BAAA;AAAA,EACA,yBAAA;AAAA,EACA,qBAAA;AAAA,EACA,qBAAA;AAAA,EACA,yBAAA;AAAA,EACA,WAAA;AAAA,EACA,4BAAA;AAAA,EAGA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AACF;;;;"}
|
package/dist/index.d.ts
CHANGED
@@ -1082,6 +1082,7 @@ declare function findObject(scene: SceneObject, check: (obj: SceneObject) => boo
|
|
1082
1082
|
* This will search down the full scene graph, looking for objects that match the provided predicate.
|
1083
1083
|
*/
|
1084
1084
|
declare function findAllObjects(scene: SceneObject, check: (obj: SceneObject) => boolean): SceneObject[];
|
1085
|
+
declare function findDescendent<T extends SceneObject>(scene: SceneObject, descendentType: SceneType<T>): T | undefined;
|
1085
1086
|
/**
|
1086
1087
|
* Will walk up the scene object graph up until the root and collect all SceneDataLayerProvider objects.
|
1087
1088
|
* When localOnly set to true, it will only collect the closest layers.
|
@@ -1126,6 +1127,7 @@ declare const sceneGraph: {
|
|
1126
1127
|
findDescendents: typeof findDescendents;
|
1127
1128
|
getQueryController: typeof getQueryController;
|
1128
1129
|
getUrlSyncManager: typeof getUrlSyncManager;
|
1130
|
+
findDescendent: typeof findDescendent;
|
1129
1131
|
};
|
1130
1132
|
|
1131
1133
|
interface ActWhenVariableChangedState extends SceneObjectState {
|
@@ -1758,10 +1760,6 @@ interface VizPanelState<TOptions = {}, TFieldConfig = {}> extends SceneObjectSta
|
|
1758
1760
|
* Offset hoverHeader position on the y axis
|
1759
1761
|
*/
|
1760
1762
|
hoverHeaderOffset?: number;
|
1761
|
-
/**
|
1762
|
-
* Only shows vizPanelMenu on hover if false, otherwise the menu is always visible in the header
|
1763
|
-
*/
|
1764
|
-
showMenuAlways?: boolean;
|
1765
1763
|
/**
|
1766
1764
|
* Defines a menu in the top right of the panel. The menu object is only activated when the dropdown menu itself is shown.
|
1767
1765
|
* So the best way to add dynamic menu actions and links is by adding them in a behavior attached to the menu.
|
@@ -2010,6 +2008,32 @@ declare class SceneControlsSpacer extends SceneObjectBase {
|
|
2010
2008
|
static Component: (_props: SceneComponentProps<SceneControlsSpacer>) => React__default.JSX.Element;
|
2011
2009
|
}
|
2012
2010
|
|
2011
|
+
interface TimeSeriesLimitSeriesTitleItemSceneState extends SceneObjectState {
|
2012
|
+
showAllSeries?: boolean;
|
2013
|
+
currentSeriesCount?: number;
|
2014
|
+
totalSeriesCount?: number;
|
2015
|
+
seriesLimit: number;
|
2016
|
+
}
|
2017
|
+
/**
|
2018
|
+
* PanelBuilder titleItems component that will limit the default number of series rendered
|
2019
|
+
*
|
2020
|
+
* Usage:
|
2021
|
+
* PanelBuilders.timeseries()
|
2022
|
+
* .setData($data)
|
2023
|
+
* .setTitleItems([new TimeSeriesLimitSeriesTitleItemScene({
|
2024
|
+
* seriesLimit: 20, // limits the default number of series that are rendered in the viz
|
2025
|
+
* })])
|
2026
|
+
*/
|
2027
|
+
declare class TimeSeriesLimitSeriesTitleItemScene extends SceneObjectBase<TimeSeriesLimitSeriesTitleItemSceneState> {
|
2028
|
+
constructor(state: TimeSeriesLimitSeriesTitleItemSceneState);
|
2029
|
+
private onActivate;
|
2030
|
+
/**
|
2031
|
+
* Removes the default series limit and renders all series in the viz
|
2032
|
+
*/
|
2033
|
+
showAllSeries(): void;
|
2034
|
+
static Component: ({ model }: SceneComponentProps<TimeSeriesLimitSeriesTitleItemScene>) => React__default.JSX.Element | null;
|
2035
|
+
}
|
2036
|
+
|
2013
2037
|
interface SceneFlexItemStateLike extends SceneFlexItemPlacement, SceneObjectState {
|
2014
2038
|
}
|
2015
2039
|
interface SceneFlexItemLike extends SceneObject<SceneFlexItemStateLike> {
|
@@ -2434,6 +2458,7 @@ declare class VizPanelBuilder<TOptions extends {}, TFieldConfig extends {}> impl
|
|
2434
2458
|
* Set panel title.
|
2435
2459
|
*/
|
2436
2460
|
setTitle(title: VizPanelState['title']): this;
|
2461
|
+
setTitleItems(titleItems: React.ReactNode | SceneObject | SceneObject[]): this;
|
2437
2462
|
/**
|
2438
2463
|
* Set panel description.
|
2439
2464
|
*/
|
@@ -2446,11 +2471,6 @@ declare class VizPanelBuilder<TOptions extends {}, TFieldConfig extends {}> impl
|
|
2446
2471
|
* Set if panel header should be shown on hover.
|
2447
2472
|
*/
|
2448
2473
|
setHoverHeader(hoverHeader: VizPanelState['hoverHeader']): this;
|
2449
|
-
/**
|
2450
|
-
* Set if VizPanelMenu "kebab" icon is shown on panel hover for desktop devices. Set true to always show menu icon.
|
2451
|
-
* @param showMenuAlways
|
2452
|
-
*/
|
2453
|
-
setShowMenuAlways(showMenuAlways: VizPanelState['showMenuAlways']): this;
|
2454
2474
|
/**
|
2455
2475
|
* Set panel menu scene object.
|
2456
2476
|
*/
|
@@ -2533,6 +2553,14 @@ declare class VizPanelBuilder<TOptions extends {}, TFieldConfig extends {}> impl
|
|
2533
2553
|
* Build the panel.
|
2534
2554
|
*/
|
2535
2555
|
build(): VizPanel<TOptions, TFieldConfig>;
|
2556
|
+
/**
|
2557
|
+
* If titleItems contains TimeSeriesLimitSeriesTitleItemScene, replace queryProvider with SceneDataTransformer and limit the number of series initially rendered
|
2558
|
+
*/
|
2559
|
+
private limitPanelSeries;
|
2560
|
+
/**
|
2561
|
+
* Gets titleItem of type TimeSeriesLimitSeriesTitleItemScene, if existing
|
2562
|
+
*/
|
2563
|
+
private getLimitSeriesTitleItem;
|
2536
2564
|
}
|
2537
2565
|
|
2538
2566
|
declare class PanelOptionsBuilder<TOptions extends {} = {}> {
|
@@ -2836,4 +2864,4 @@ declare const sceneUtils: {
|
|
2836
2864
|
isGroupByVariable: typeof isGroupByVariable;
|
2837
2865
|
};
|
2838
2866
|
|
2839
|
-
export { AdHocFiltersVariable, CancelActivationHandler, ConstantVariable, ControlsLabel, ControlsLayout, CustomFormatterVariable, CustomTransformOperator, CustomTransformerDefinition, CustomVariable, CustomVariableValue, DataLayerFilter, DataProviderProxy, DataRequestEnricher, DataSourceVariable, DeepPartial, EmbeddedScene, EmbeddedSceneState, ExtraQueryDataProcessor, ExtraQueryDescriptor, ExtraQueryProvider, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, FiltersRequestEnricher, FormatVariable, GroupByVariable, InterpolationFormatParameter, IntervalVariable, LocalValueVariable, MacroVariableConstructor, MultiValueVariable, MultiValueVariableState, NestedScene, NewSceneObjectAddedEvent, PanelBuilders, PanelOptionsBuilders, QueryRunnerState, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneActivationHandler, SceneApp, SceneAppDrilldownView, SceneAppPage, SceneAppPageLike, SceneAppPageState, SceneAppRoute, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneComponent, SceneComponentProps, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerProvider, SceneDataLayerProviderState, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataProvider, SceneDataProviderResult, SceneDataQuery, SceneDataState, SceneDataTransformer, SceneDataTransformerState, SceneDeactivationHandler, SceneDebugger, SceneFlexItem, SceneFlexItemLike, SceneFlexItemState, SceneFlexLayout, SceneGridItem, SceneGridItemLike, SceneGridItemStateLike, SceneGridLayout, SceneGridRow, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectBase, SceneObjectRef, SceneObjectState, SceneObjectStateChangedEvent, SceneObjectStateChangedPayload, SceneObjectUrlSyncConfig, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneRefreshPickerState, SceneRouteMatch, SceneStateChangedHandler, SceneStatelessBehavior, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeLike, SceneTimeRangeState, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneUrlSyncOptions, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSet, SceneVariableSetState, SceneVariableState, SceneVariableValueChangedEvent, SceneVariables, SplitLayout, TestVariable, TextBoxVariable, UrlSyncContextProvider, UrlSyncManager, UrlSyncManagerLike, UseStateHookOptions, UserActionEvent, ValidateAndUpdateResult, VariableCustomFormatterFn, VariableDependencyConfig, VariableGetOptionsArgs, VariableValue, VariableValueControl, VariableValueOption, VariableValueSelectWrapper, VariableValueSelectors, VariableValueSingle, VizConfig, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, VizPanelState, index$1 as behaviors, index as dataLayers, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, registerQueryWithController, registerRuntimeDataSource, renderSelectForVariable, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync };
|
2867
|
+
export { AdHocFiltersVariable, CancelActivationHandler, ConstantVariable, ControlsLabel, ControlsLayout, CustomFormatterVariable, CustomTransformOperator, CustomTransformerDefinition, CustomVariable, CustomVariableValue, DataLayerFilter, DataProviderProxy, DataRequestEnricher, DataSourceVariable, DeepPartial, EmbeddedScene, EmbeddedSceneState, ExtraQueryDataProcessor, ExtraQueryDescriptor, ExtraQueryProvider, FieldConfigBuilder, FieldConfigBuilders, FieldConfigOverridesBuilder, FiltersRequestEnricher, FormatVariable, GroupByVariable, InterpolationFormatParameter, IntervalVariable, LocalValueVariable, MacroVariableConstructor, MultiValueVariable, MultiValueVariableState, NestedScene, NewSceneObjectAddedEvent, PanelBuilders, PanelOptionsBuilders, QueryRunnerState, QueryVariable, RuntimeDataSource, SafeSerializableSceneObject, SceneActivationHandler, SceneApp, SceneAppDrilldownView, SceneAppPage, SceneAppPageLike, SceneAppPageState, SceneAppRoute, SceneByFrameRepeater, SceneByVariableRepeater, SceneCSSGridItem, SceneCSSGridLayout, SceneCanvasText, SceneComponent, SceneComponentProps, SceneControlsSpacer, SceneDataLayerBase, SceneDataLayerControls, SceneDataLayerProvider, SceneDataLayerProviderState, SceneDataLayerSet, SceneDataLayerSetBase, SceneDataNode, SceneDataProvider, SceneDataProviderResult, SceneDataQuery, SceneDataState, SceneDataTransformer, SceneDataTransformerState, SceneDeactivationHandler, SceneDebugger, SceneFlexItem, SceneFlexItemLike, SceneFlexItemState, SceneFlexLayout, SceneGridItem, SceneGridItemLike, SceneGridItemStateLike, SceneGridLayout, SceneGridRow, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectBase, SceneObjectRef, SceneObjectState, SceneObjectStateChangedEvent, SceneObjectStateChangedPayload, SceneObjectUrlSyncConfig, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneRefreshPickerState, SceneRouteMatch, SceneStateChangedHandler, SceneStatelessBehavior, SceneTimePicker, SceneTimeRange, SceneTimeRangeCompare, SceneTimeRangeLike, SceneTimeRangeState, SceneTimeRangeTransformerBase, SceneTimeZoneOverride, SceneToolbarButton, SceneToolbarInput, SceneUrlSyncOptions, SceneVariable, SceneVariableDependencyConfigLike, SceneVariableSet, SceneVariableSetState, SceneVariableState, SceneVariableValueChangedEvent, SceneVariables, SplitLayout, TestVariable, TextBoxVariable, TimeSeriesLimitSeriesTitleItemScene, UrlSyncContextProvider, UrlSyncManager, UrlSyncManagerLike, UseStateHookOptions, UserActionEvent, ValidateAndUpdateResult, VariableCustomFormatterFn, VariableDependencyConfig, VariableGetOptionsArgs, VariableValue, VariableValueControl, VariableValueOption, VariableValueSelectWrapper, VariableValueSelectors, VariableValueSingle, VizConfig, VizConfigBuilder, VizConfigBuilders, VizPanel, VizPanelBuilder, VizPanelExploreButton, VizPanelMenu, VizPanelState, index$1 as behaviors, index as dataLayers, formatRegistry, getExploreURL, isCustomVariableValue, isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject, registerQueryWithController, registerRuntimeDataSource, renderSelectForVariable, sceneGraph, sceneUtils, useSceneApp, useSceneObjectState, useUrlSync };
|
package/dist/index.js
CHANGED
@@ -3101,7 +3101,7 @@ function LoadingIndicator(props) {
|
|
3101
3101
|
}
|
3102
3102
|
|
3103
3103
|
function ControlsLabel(props) {
|
3104
|
-
const styles = ui.useStyles2(getStyles$
|
3104
|
+
const styles = ui.useStyles2(getStyles$g);
|
3105
3105
|
const theme = ui.useTheme2();
|
3106
3106
|
const isVertical = props.layout === "vertical";
|
3107
3107
|
const loadingIndicator = Boolean(props.isLoading) ? /* @__PURE__ */ React__default["default"].createElement("div", {
|
@@ -3164,7 +3164,7 @@ function ControlsLabel(props) {
|
|
3164
3164
|
}
|
3165
3165
|
return labelElement;
|
3166
3166
|
}
|
3167
|
-
const getStyles$
|
3167
|
+
const getStyles$g = (theme) => ({
|
3168
3168
|
horizontalLabel: css.css({
|
3169
3169
|
background: theme.isDark ? theme.colors.background.primary : theme.colors.background.secondary,
|
3170
3170
|
display: `flex`,
|
@@ -3233,7 +3233,7 @@ function keyLabelToOption(key, label) {
|
|
3233
3233
|
const filterNoOp = () => true;
|
3234
3234
|
function AdHocFilterRenderer({ filter, model }) {
|
3235
3235
|
var _a, _b, _c, _d, _e;
|
3236
|
-
const styles = ui.useStyles2(getStyles$
|
3236
|
+
const styles = ui.useStyles2(getStyles$f);
|
3237
3237
|
const [keys, setKeys] = React.useState([]);
|
3238
3238
|
const [values, setValues] = React.useState([]);
|
3239
3239
|
const [isKeysLoading, setIsKeysLoading] = React.useState(false);
|
@@ -3436,7 +3436,7 @@ function AdHocFilterRenderer({ filter, model }) {
|
|
3436
3436
|
onClick: () => model._removeFilter(filter)
|
3437
3437
|
}));
|
3438
3438
|
}
|
3439
|
-
const getStyles$
|
3439
|
+
const getStyles$f = (theme) => ({
|
3440
3440
|
field: css.css({
|
3441
3441
|
marginBottom: 0
|
3442
3442
|
}),
|
@@ -3619,7 +3619,7 @@ var __objRest$3 = (source, exclude) => {
|
|
3619
3619
|
const DropdownItem = React.forwardRef(
|
3620
3620
|
function DropdownItem2(_a, ref) {
|
3621
3621
|
var _b = _a, { children, active, addGroupBottomBorder, isMultiValueEdit, checked } = _b, rest = __objRest$3(_b, ["children", "active", "addGroupBottomBorder", "isMultiValueEdit", "checked"]);
|
3622
|
-
const styles = ui.useStyles2(getStyles$
|
3622
|
+
const styles = ui.useStyles2(getStyles$e);
|
3623
3623
|
const id = React.useId();
|
3624
3624
|
return /* @__PURE__ */ React__default["default"].createElement("div", __spreadValues$C({
|
3625
3625
|
ref,
|
@@ -3637,7 +3637,7 @@ const DropdownItem = React.forwardRef(
|
|
3637
3637
|
}) : null, children)));
|
3638
3638
|
}
|
3639
3639
|
);
|
3640
|
-
const getStyles$
|
3640
|
+
const getStyles$e = (theme) => ({
|
3641
3641
|
option: css.css({
|
3642
3642
|
label: "grafana-select-option",
|
3643
3643
|
top: 0,
|
@@ -3708,7 +3708,7 @@ const OptionsErrorPlaceholder = ({ handleFetchOptions }) => {
|
|
3708
3708
|
}, "An error has occurred fetching labels. Click to retry");
|
3709
3709
|
};
|
3710
3710
|
const MultiValueApplyButton = ({ onApply, floatingElement, maxOptionWidth, menuHeight }) => {
|
3711
|
-
const styles = ui.useStyles2(getStyles$
|
3711
|
+
const styles = ui.useStyles2(getStyles$e);
|
3712
3712
|
const floatingElementRect = floatingElement == null ? void 0 : floatingElement.getBoundingClientRect();
|
3713
3713
|
return /* @__PURE__ */ React__default["default"].createElement("div", {
|
3714
3714
|
className: styles.multiValueApplyWrapper,
|
@@ -3954,7 +3954,7 @@ const MultiValuePill = ({
|
|
3954
3954
|
handleEditMultiValuePill
|
3955
3955
|
}) => {
|
3956
3956
|
var _a, _b;
|
3957
|
-
const styles = ui.useStyles2(getStyles$
|
3957
|
+
const styles = ui.useStyles2(getStyles$d);
|
3958
3958
|
const editMultiValuePill = React.useCallback(
|
3959
3959
|
(e) => {
|
3960
3960
|
e.stopPropagation();
|
@@ -4007,7 +4007,7 @@ const MultiValuePill = ({
|
|
4007
4007
|
id: `${item.value}-${index}-close-icon`
|
4008
4008
|
})));
|
4009
4009
|
};
|
4010
|
-
const getStyles$
|
4010
|
+
const getStyles$d = (theme) => ({
|
4011
4011
|
basePill: css.css(__spreadProps$p(__spreadValues$B({
|
4012
4012
|
display: "flex",
|
4013
4013
|
alignItems: "center",
|
@@ -4064,7 +4064,7 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
|
|
4064
4064
|
const [inputValue, setInputValue] = React.useState("");
|
4065
4065
|
const [activeIndex, setActiveIndex] = React.useState(null);
|
4066
4066
|
const [filterInputType, setInputType] = React.useState(!isAlwaysWip ? "value" : "key");
|
4067
|
-
const styles = ui.useStyles2(getStyles$
|
4067
|
+
const styles = ui.useStyles2(getStyles$c);
|
4068
4068
|
const [filterMultiValues, setFilterMultiValues] = React.useState([]);
|
4069
4069
|
const [_, setForceRefresh] = React.useState({});
|
4070
4070
|
const allowCustomValue = (_a = model.state.allowCustomValue) != null ? _a : true;
|
@@ -4568,7 +4568,7 @@ const AdHocCombobox = React.forwardRef(function AdHocCombobox2({ filter, model,
|
|
4568
4568
|
menuHeight: Math.min(rowVirtualizer.getTotalSize(), MAX_MENU_HEIGHT)
|
4569
4569
|
}) : null))));
|
4570
4570
|
});
|
4571
|
-
const getStyles$
|
4571
|
+
const getStyles$c = (theme) => ({
|
4572
4572
|
comboboxWrapper: css.css({
|
4573
4573
|
display: "flex",
|
4574
4574
|
flexWrap: "wrap"
|
@@ -4659,7 +4659,7 @@ var __spreadValues$z = (a, b) => {
|
|
4659
4659
|
var __spreadProps$n = (a, b) => __defProps$n(a, __getOwnPropDescs$n(b));
|
4660
4660
|
function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
|
4661
4661
|
var _a, _b, _c;
|
4662
|
-
const styles = ui.useStyles2(getStyles$
|
4662
|
+
const styles = ui.useStyles2(getStyles$b);
|
4663
4663
|
const [viewMode, setViewMode] = React.useState(true);
|
4664
4664
|
const [shouldFocusOnPillWrapper, setShouldFocusOnPillWrapper] = React.useState(false);
|
4665
4665
|
const pillWrapperRef = React.useRef(null);
|
@@ -4749,7 +4749,7 @@ function AdHocFilterPill({ filter, model, readOnly, focusOnWipInputRef }) {
|
|
4749
4749
|
populateInputOnEdit
|
4750
4750
|
});
|
4751
4751
|
}
|
4752
|
-
const getStyles$
|
4752
|
+
const getStyles$b = (theme) => ({
|
4753
4753
|
combinedFilterPill: css.css(__spreadProps$n(__spreadValues$z({
|
4754
4754
|
display: "flex",
|
4755
4755
|
alignItems: "center",
|
@@ -4810,7 +4810,7 @@ const AdHocFiltersAlwaysWipCombobox = React.forwardRef(function AdHocFiltersAlwa
|
|
4810
4810
|
|
4811
4811
|
const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRenderer2({ model }) {
|
4812
4812
|
const { filters, readOnly } = model.useState();
|
4813
|
-
const styles = ui.useStyles2(getStyles$
|
4813
|
+
const styles = ui.useStyles2(getStyles$a);
|
4814
4814
|
const focusOnWipInputRef = React.useRef();
|
4815
4815
|
return /* @__PURE__ */ React__default["default"].createElement("div", {
|
4816
4816
|
className: css.cx(styles.comboboxWrapper, { [styles.comboboxFocusOutline]: !readOnly }),
|
@@ -4833,7 +4833,7 @@ const AdHocFiltersComboboxRenderer = React.memo(function AdHocFiltersComboboxRen
|
|
4833
4833
|
ref: focusOnWipInputRef
|
4834
4834
|
}) : null);
|
4835
4835
|
});
|
4836
|
-
const getStyles$
|
4836
|
+
const getStyles$a = (theme) => ({
|
4837
4837
|
comboboxWrapper: css.css({
|
4838
4838
|
display: "flex",
|
4839
4839
|
flexWrap: "wrap",
|
@@ -5086,7 +5086,7 @@ function renderExpression(builder, filters) {
|
|
5086
5086
|
}
|
5087
5087
|
function AdHocFiltersVariableRenderer({ model }) {
|
5088
5088
|
const { filters, readOnly, addFilterButtonText } = model.useState();
|
5089
|
-
const styles = ui.useStyles2(getStyles$
|
5089
|
+
const styles = ui.useStyles2(getStyles$9);
|
5090
5090
|
if (model.state.layout === "combobox") {
|
5091
5091
|
return /* @__PURE__ */ React__default["default"].createElement(AdHocFiltersComboboxRenderer, {
|
5092
5092
|
model
|
@@ -5105,7 +5105,7 @@ function AdHocFiltersVariableRenderer({ model }) {
|
|
5105
5105
|
addFilterButtonText
|
5106
5106
|
}));
|
5107
5107
|
}
|
5108
|
-
const getStyles$
|
5108
|
+
const getStyles$9 = (theme) => ({
|
5109
5109
|
wrapper: css.css({
|
5110
5110
|
display: "flex",
|
5111
5111
|
flexWrap: "wrap",
|
@@ -6536,6 +6536,13 @@ function findAllObjects(scene, check) {
|
|
6536
6536
|
});
|
6537
6537
|
return found;
|
6538
6538
|
}
|
6539
|
+
function findDescendent(scene, descendentType) {
|
6540
|
+
function isDescendentType(scene2) {
|
6541
|
+
return scene2 instanceof descendentType;
|
6542
|
+
}
|
6543
|
+
const targetScenes = findAllObjects(scene, isDescendentType);
|
6544
|
+
return targetScenes.find(isDescendentType);
|
6545
|
+
}
|
6539
6546
|
function getDataLayers(sceneObject, localOnly = false) {
|
6540
6547
|
let currentLevel = sceneObject;
|
6541
6548
|
let collected = [];
|
@@ -6620,7 +6627,8 @@ const sceneGraph = {
|
|
6620
6627
|
getAncestor,
|
6621
6628
|
findDescendents,
|
6622
6629
|
getQueryController,
|
6623
|
-
getUrlSyncManager
|
6630
|
+
getUrlSyncManager,
|
6631
|
+
findDescendent
|
6624
6632
|
};
|
6625
6633
|
|
6626
6634
|
class UniqueUrlKeyMapper {
|
@@ -6859,7 +6867,6 @@ function VizPanelRenderer({ model }) {
|
|
6859
6867
|
_pluginLoadError,
|
6860
6868
|
displayMode,
|
6861
6869
|
hoverHeader,
|
6862
|
-
showMenuAlways,
|
6863
6870
|
hoverHeaderOffset,
|
6864
6871
|
menu,
|
6865
6872
|
headerActions,
|
@@ -6981,7 +6988,6 @@ function VizPanelRenderer({ model }) {
|
|
6981
6988
|
width,
|
6982
6989
|
height,
|
6983
6990
|
displayMode,
|
6984
|
-
showMenuAlways,
|
6985
6991
|
hoverHeader,
|
6986
6992
|
hoverHeaderOffset,
|
6987
6993
|
titleItems: titleItemsElement,
|
@@ -9836,7 +9842,7 @@ class EmbeddedScene extends SceneObjectBase {
|
|
9836
9842
|
EmbeddedScene.Component = EmbeddedSceneRenderer;
|
9837
9843
|
function EmbeddedSceneRenderer({ model }) {
|
9838
9844
|
const { body, controls } = model.useState();
|
9839
|
-
const styles = ui.useStyles2(getStyles$
|
9845
|
+
const styles = ui.useStyles2(getStyles$8);
|
9840
9846
|
return /* @__PURE__ */ React__default["default"].createElement("div", {
|
9841
9847
|
className: styles.container
|
9842
9848
|
}, controls && /* @__PURE__ */ React__default["default"].createElement("div", {
|
@@ -9850,7 +9856,7 @@ function EmbeddedSceneRenderer({ model }) {
|
|
9850
9856
|
model: body
|
9851
9857
|
})));
|
9852
9858
|
}
|
9853
|
-
const getStyles$
|
9859
|
+
const getStyles$8 = (theme) => {
|
9854
9860
|
return {
|
9855
9861
|
container: css.css({
|
9856
9862
|
flexGrow: 1,
|
@@ -10067,7 +10073,7 @@ const LazyLoader = React__default["default"].forwardRef(
|
|
10067
10073
|
(_a, ref) => {
|
10068
10074
|
var _b = _a, { children, onLoad, onChange, className } = _b, rest = __objRest$1(_b, ["children", "onLoad", "onChange", "className"]);
|
10069
10075
|
const id = useUniqueId();
|
10070
|
-
const { hideEmpty } = ui.useStyles2(getStyles$
|
10076
|
+
const { hideEmpty } = ui.useStyles2(getStyles$7);
|
10071
10077
|
const [loaded, setLoaded] = React.useState(false);
|
10072
10078
|
const [isInView, setIsInView] = React.useState(false);
|
10073
10079
|
const innerRef = React.useRef(null);
|
@@ -10101,7 +10107,7 @@ const LazyLoader = React__default["default"].forwardRef(
|
|
10101
10107
|
}, rest), loaded && (typeof children === "function" ? children({ isInView }) : children));
|
10102
10108
|
}
|
10103
10109
|
);
|
10104
|
-
function getStyles$
|
10110
|
+
function getStyles$7() {
|
10105
10111
|
return {
|
10106
10112
|
hideEmpty: css.css({
|
10107
10113
|
"&:empty": {
|
@@ -10798,7 +10804,7 @@ NestedScene.Component = NestedSceneRenderer;
|
|
10798
10804
|
function NestedSceneRenderer({ model }) {
|
10799
10805
|
const { title, isCollapsed, canCollapse, canRemove, body, controls } = model.useState();
|
10800
10806
|
const gridRow = ui.useStyles2(getSceneGridRowStyles);
|
10801
|
-
const styles = ui.useStyles2(getStyles$
|
10807
|
+
const styles = ui.useStyles2(getStyles$6);
|
10802
10808
|
const toolbarControls = (controls != null ? controls : []).map((action) => /* @__PURE__ */ React__default["default"].createElement(action.Component, {
|
10803
10809
|
key: action.state.key,
|
10804
10810
|
model: action
|
@@ -10833,7 +10839,7 @@ function NestedSceneRenderer({ model }) {
|
|
10833
10839
|
model: body
|
10834
10840
|
}));
|
10835
10841
|
}
|
10836
|
-
const getStyles$
|
10842
|
+
const getStyles$6 = (theme) => ({
|
10837
10843
|
wrapper: css.css({
|
10838
10844
|
display: "flex",
|
10839
10845
|
flexDirection: "column",
|
@@ -11411,7 +11417,7 @@ const timeShiftAlignmentProcessor = (primary, secondary) => {
|
|
11411
11417
|
};
|
11412
11418
|
function SceneTimeRangeCompareRenderer({ model }) {
|
11413
11419
|
var _a;
|
11414
|
-
const styles = ui.useStyles2(getStyles$
|
11420
|
+
const styles = ui.useStyles2(getStyles$5);
|
11415
11421
|
const { compareWith, compareOptions } = model.useState();
|
11416
11422
|
const [previousCompare, setPreviousCompare] = React__default["default"].useState(compareWith);
|
11417
11423
|
const previousValue = (_a = compareOptions.find(({ value: value2 }) => value2 === previousCompare)) != null ? _a : PREVIOUS_PERIOD_COMPARE_OPTION;
|
@@ -11451,7 +11457,7 @@ function SceneTimeRangeCompareRenderer({ model }) {
|
|
11451
11457
|
isOpen: false
|
11452
11458
|
}, previousValue.label));
|
11453
11459
|
}
|
11454
|
-
function getStyles$
|
11460
|
+
function getStyles$5(theme) {
|
11455
11461
|
return {
|
11456
11462
|
previewButton: css.css({
|
11457
11463
|
"&:disabled": {
|
@@ -11559,6 +11565,87 @@ SceneControlsSpacer.Component = (_props) => {
|
|
11559
11565
|
});
|
11560
11566
|
};
|
11561
11567
|
|
11568
|
+
class TimeSeriesLimitSeriesTitleItemScene extends SceneObjectBase {
|
11569
|
+
constructor(state) {
|
11570
|
+
super(state);
|
11571
|
+
this.addActivationHandler(this.onActivate.bind(this));
|
11572
|
+
}
|
11573
|
+
onActivate() {
|
11574
|
+
const panel = sceneGraph.getAncestor(this, VizPanel);
|
11575
|
+
const $transformedData = sceneGraph.getData(panel);
|
11576
|
+
const untransformedQueryRunner = sceneGraph.findDescendent(panel, SceneQueryRunner);
|
11577
|
+
this._subs.add(
|
11578
|
+
$transformedData.subscribeToState((transformedDataState) => {
|
11579
|
+
var _a, _b, _c;
|
11580
|
+
if (untransformedQueryRunner && ((_a = untransformedQueryRunner.state.data) == null ? void 0 : _a.series.length) !== this.state.currentSeriesCount) {
|
11581
|
+
this.setState({
|
11582
|
+
currentSeriesCount: (_b = transformedDataState.data) == null ? void 0 : _b.series.length,
|
11583
|
+
totalSeriesCount: (_c = untransformedQueryRunner.state.data) == null ? void 0 : _c.series.length
|
11584
|
+
});
|
11585
|
+
}
|
11586
|
+
})
|
11587
|
+
);
|
11588
|
+
}
|
11589
|
+
showAllSeries() {
|
11590
|
+
const $data = sceneGraph.getData(this);
|
11591
|
+
if ($data instanceof SceneDataTransformer) {
|
11592
|
+
$data.setState({
|
11593
|
+
transformations: []
|
11594
|
+
});
|
11595
|
+
this.setState({
|
11596
|
+
showAllSeries: true
|
11597
|
+
});
|
11598
|
+
$data.reprocessTransformations();
|
11599
|
+
}
|
11600
|
+
}
|
11601
|
+
}
|
11602
|
+
TimeSeriesLimitSeriesTitleItemScene.Component = ({ model }) => {
|
11603
|
+
const { showAllSeries, currentSeriesCount, seriesLimit, totalSeriesCount } = model.useState();
|
11604
|
+
const styles = ui.useStyles2(getStyles$4);
|
11605
|
+
if (totalSeriesCount === void 0 || showAllSeries || !currentSeriesCount || totalSeriesCount < seriesLimit) {
|
11606
|
+
return null;
|
11607
|
+
}
|
11608
|
+
return /* @__PURE__ */ React__default["default"].createElement("div", {
|
11609
|
+
className: styles.timeSeriesDisclaimer
|
11610
|
+
}, /* @__PURE__ */ React__default["default"].createElement("span", {
|
11611
|
+
className: styles.warningMessage
|
11612
|
+
}, /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, /* @__PURE__ */ React__default["default"].createElement(ui.Icon, {
|
11613
|
+
title: `Showing only ${model.state.seriesLimit} series`,
|
11614
|
+
name: "exclamation-triangle",
|
11615
|
+
"aria-hidden": "true"
|
11616
|
+
}))), /* @__PURE__ */ React__default["default"].createElement(ui.Tooltip, {
|
11617
|
+
content: "Rendering too many series in a single panel may impact performance and make data harder to read."
|
11618
|
+
}, /* @__PURE__ */ React__default["default"].createElement(ui.Button, {
|
11619
|
+
variant: "secondary",
|
11620
|
+
size: "sm",
|
11621
|
+
onClick: () => model.showAllSeries()
|
11622
|
+
}, /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, "Show all ", totalSeriesCount))));
|
11623
|
+
};
|
11624
|
+
function limitFramesTransformation(limit) {
|
11625
|
+
return (source) => {
|
11626
|
+
return source.pipe(
|
11627
|
+
rxjs.map((frames) => {
|
11628
|
+
return frames.slice(0, limit);
|
11629
|
+
})
|
11630
|
+
);
|
11631
|
+
};
|
11632
|
+
}
|
11633
|
+
const getStyles$4 = (theme) => ({
|
11634
|
+
timeSeriesDisclaimer: css.css({
|
11635
|
+
label: "time-series-disclaimer",
|
11636
|
+
display: "flex",
|
11637
|
+
alignItems: "center",
|
11638
|
+
gap: theme.spacing(1)
|
11639
|
+
}),
|
11640
|
+
warningMessage: css.css({
|
11641
|
+
display: "flex",
|
11642
|
+
alignItems: "center",
|
11643
|
+
gap: theme.spacing(0.5),
|
11644
|
+
color: theme.colors.warning.main,
|
11645
|
+
fontSize: theme.typography.bodySmall.fontSize
|
11646
|
+
})
|
11647
|
+
});
|
11648
|
+
|
11562
11649
|
class SceneFlexLayout extends SceneObjectBase {
|
11563
11650
|
toggleDirection() {
|
11564
11651
|
this.setState({
|
@@ -13009,6 +13096,10 @@ class VizPanelBuilder {
|
|
13009
13096
|
this._state.title = title;
|
13010
13097
|
return this;
|
13011
13098
|
}
|
13099
|
+
setTitleItems(titleItems) {
|
13100
|
+
this._state.titleItems = titleItems;
|
13101
|
+
return this;
|
13102
|
+
}
|
13012
13103
|
setDescription(description) {
|
13013
13104
|
this._state.description = description;
|
13014
13105
|
return this;
|
@@ -13021,10 +13112,6 @@ class VizPanelBuilder {
|
|
13021
13112
|
this._state.hoverHeader = hoverHeader;
|
13022
13113
|
return this;
|
13023
13114
|
}
|
13024
|
-
setShowMenuAlways(showMenuAlways) {
|
13025
|
-
this._state.showMenuAlways = showMenuAlways;
|
13026
|
-
return this;
|
13027
|
-
}
|
13028
13115
|
setMenu(menu) {
|
13029
13116
|
this._state.menu = menu;
|
13030
13117
|
return this;
|
@@ -13110,12 +13197,38 @@ class VizPanelBuilder {
|
|
13110
13197
|
return this;
|
13111
13198
|
}
|
13112
13199
|
build() {
|
13200
|
+
this.limitPanelSeries();
|
13113
13201
|
const panel = new VizPanel(__spreadProps(__spreadValues({}, this._state), {
|
13114
13202
|
options: this._panelOptionsBuilder.build(),
|
13115
13203
|
fieldConfig: this._fieldConfigBuilder.build()
|
13116
13204
|
}));
|
13117
13205
|
return panel;
|
13118
13206
|
}
|
13207
|
+
limitPanelSeries() {
|
13208
|
+
if (this._state.$data) {
|
13209
|
+
const limitSeriesTitleItem = this.getLimitSeriesTitleItem();
|
13210
|
+
if (limitSeriesTitleItem && limitSeriesTitleItem.state.seriesLimit) {
|
13211
|
+
this.setData(new SceneDataTransformer({
|
13212
|
+
$data: this._state.$data,
|
13213
|
+
transformations: [() => limitFramesTransformation(limitSeriesTitleItem.state.seriesLimit)]
|
13214
|
+
}));
|
13215
|
+
}
|
13216
|
+
}
|
13217
|
+
}
|
13218
|
+
getLimitSeriesTitleItem() {
|
13219
|
+
if (this._state.titleItems) {
|
13220
|
+
if (Array.isArray(this._state.titleItems)) {
|
13221
|
+
for (const titleItem of this._state.titleItems) {
|
13222
|
+
if (titleItem instanceof TimeSeriesLimitSeriesTitleItemScene) {
|
13223
|
+
return titleItem;
|
13224
|
+
}
|
13225
|
+
}
|
13226
|
+
} else if (this._state.titleItems instanceof TimeSeriesLimitSeriesTitleItemScene) {
|
13227
|
+
return this._state.titleItems;
|
13228
|
+
}
|
13229
|
+
}
|
13230
|
+
return void 0;
|
13231
|
+
}
|
13119
13232
|
}
|
13120
13233
|
|
13121
13234
|
const PanelOptionsBuilders = {
|
@@ -13592,6 +13705,7 @@ exports.SceneVariableValueChangedEvent = SceneVariableValueChangedEvent;
|
|
13592
13705
|
exports.SplitLayout = SplitLayout;
|
13593
13706
|
exports.TestVariable = TestVariable;
|
13594
13707
|
exports.TextBoxVariable = TextBoxVariable;
|
13708
|
+
exports.TimeSeriesLimitSeriesTitleItemScene = TimeSeriesLimitSeriesTitleItemScene;
|
13595
13709
|
exports.UrlSyncContextProvider = UrlSyncContextProvider;
|
13596
13710
|
exports.UrlSyncManager = UrlSyncManager;
|
13597
13711
|
exports.UserActionEvent = UserActionEvent;
|