@grafana/scenes 6.0.2--canary.1053.13305029685.0 → 6.0.3--canary.990.13366792126.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +12 -0
- package/dist/esm/components/SceneApp/SceneApp.js +9 -3
- package/dist/esm/components/SceneApp/SceneApp.js.map +1 -1
- package/dist/esm/components/SceneApp/SceneAppPage.js +16 -0
- package/dist/esm/components/SceneApp/SceneAppPage.js.map +1 -1
- package/dist/esm/core/SceneScopesBridge.js +111 -0
- package/dist/esm/core/SceneScopesBridge.js.map +1 -0
- 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 +6 -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/esm/querying/SceneQueryRunner.js +33 -8
- package/dist/esm/querying/SceneQueryRunner.js.map +1 -1
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js +11 -5
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
- package/dist/esm/variables/groupby/GroupByVariable.js +3 -2
- package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
- package/dist/index.d.ts +56 -20
- package/dist/index.js +180 -19
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import * as _grafana_data from '@grafana/data';
|
2
|
-
import { BusEventWithPayload, EventBus, BusEvent, BusEventType, BusEventHandler, PanelMenuItem, FieldConfigSource, PanelModel, PanelPlugin, AbsoluteTimeRange, PanelData, InterpolateFunction, TimeRange, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, DataTransformContext, DataFrame, IconName, PageLayoutType, UrlQueryMap, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, SelectableValue, MetricFindValue, GetTagResponse, VariableRefresh as VariableRefresh$1, VariableSort, EventFilterOptions, AnnotationEvent, AnnotationQuery, DataTransformerConfig, TimeOption, FieldConfig, FieldType, FieldValueMatcherConfig, ScopedVar, RawTimeRange } from '@grafana/data';
|
2
|
+
import { BusEventWithPayload, EventBus, BusEvent, BusEventType, BusEventHandler, PanelMenuItem, FieldConfigSource, PanelModel, PanelPlugin, AbsoluteTimeRange, PanelData, InterpolateFunction, TimeRange, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, DataTransformContext, DataFrame, Scope, IconName, PageLayoutType, UrlQueryMap, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, SelectableValue, MetricFindValue, GetTagResponse, VariableRefresh as VariableRefresh$1, VariableSort, EventFilterOptions, AnnotationEvent, AnnotationQuery, DataTransformerConfig, TimeOption, FieldConfig, FieldType, FieldValueMatcherConfig, ScopedVar, RawTimeRange } from '@grafana/data';
|
3
3
|
import * as React$1 from 'react';
|
4
4
|
import React__default, { ComponentType, CSSProperties } from 'react';
|
5
5
|
import * as rxjs from 'rxjs';
|
@@ -7,7 +7,7 @@ import { Observable, Subscription, Unsubscribable, MonoTypeOperatorFunction, Rep
|
|
7
7
|
import * as _grafana_schema from '@grafana/schema';
|
8
8
|
import { VariableType, VariableHide, TimeZone, DataTopic, DataQuery, DataSourceRef, VariableRefresh, LoadingState, DashboardCursorSync, MatcherConfig, TableFieldOptions } from '@grafana/schema';
|
9
9
|
import { PanelContext, WeekStart, IconName as IconName$1 } from '@grafana/ui';
|
10
|
-
import { LocationService, VariableInterpolation } from '@grafana/runtime';
|
10
|
+
import { ScopesContextValue, LocationService, VariableInterpolation } from '@grafana/runtime';
|
11
11
|
import { Location } from 'history';
|
12
12
|
import ReactGridLayout from 'react-grid-layout';
|
13
13
|
import { Options, FieldConfig as FieldConfig$1 } from '@grafana/schema/dist/esm/raw/composable/barchart/panelcfg/x/BarChartPanelCfg_types.gen';
|
@@ -645,6 +645,41 @@ declare class EmbeddedScene extends SceneObjectBase<EmbeddedSceneState> {
|
|
645
645
|
}
|
646
646
|
declare function EmbeddedSceneRenderer({ model }: SceneComponentProps<EmbeddedScene>): React__default.JSX.Element;
|
647
647
|
|
648
|
+
interface SceneObjectUrlSyncConfigOptions {
|
649
|
+
keys: string[] | (() => string[]);
|
650
|
+
}
|
651
|
+
declare class SceneObjectUrlSyncConfig implements SceneObjectUrlSyncHandler {
|
652
|
+
private _sceneObject;
|
653
|
+
private _keys;
|
654
|
+
private _nextChangeShouldAddHistoryStep;
|
655
|
+
constructor(_sceneObject: SceneObjectWithUrlSync, _options: SceneObjectUrlSyncConfigOptions);
|
656
|
+
getKeys(): string[];
|
657
|
+
getUrlState(): SceneObjectUrlValues;
|
658
|
+
updateFromUrl(values: SceneObjectUrlValues): void;
|
659
|
+
performBrowserHistoryAction(callback: () => void): void;
|
660
|
+
shouldCreateHistoryStep(values: SceneObjectUrlValues): boolean;
|
661
|
+
}
|
662
|
+
|
663
|
+
declare class SceneScopesBridge extends SceneObjectBase implements SceneObjectWithUrlSync {
|
664
|
+
static Component: typeof SceneScopesBridgeRenderer;
|
665
|
+
protected _urlSync: SceneObjectUrlSyncConfig;
|
666
|
+
protected _renderBeforeActivation: boolean;
|
667
|
+
private _contextSubject;
|
668
|
+
private _pendingScopes;
|
669
|
+
getUrlState(): SceneObjectUrlValues;
|
670
|
+
updateFromUrl(values: SceneObjectUrlValues): void;
|
671
|
+
getValue(): Scope[];
|
672
|
+
subscribeToValue(cb: (newScopes: Scope[], prevScopes: Scope[]) => void): Unsubscribable;
|
673
|
+
isLoading(): boolean;
|
674
|
+
subscribeToLoading(cb: (loading: boolean) => void): Unsubscribable;
|
675
|
+
setEnabled(enabled: boolean): void;
|
676
|
+
setReadOnly(readOnly: boolean): void;
|
677
|
+
updateContext(newContext: ScopesContextValue | undefined): void;
|
678
|
+
private get context();
|
679
|
+
private get contextObservable();
|
680
|
+
}
|
681
|
+
declare function SceneScopesBridgeRenderer({ model }: SceneComponentProps<SceneScopesBridge>): null;
|
682
|
+
|
648
683
|
interface SceneRouteMatch<Params extends {
|
649
684
|
[K in keyof Params]?: string;
|
650
685
|
} = {}> {
|
@@ -657,6 +692,7 @@ interface SceneAppState extends SceneObjectState {
|
|
657
692
|
pages: SceneAppPageLike[];
|
658
693
|
name?: string;
|
659
694
|
urlSyncOptions?: SceneUrlSyncOptions;
|
695
|
+
scopesBridge?: SceneScopesBridge;
|
660
696
|
}
|
661
697
|
interface SceneAppRoute {
|
662
698
|
path: string;
|
@@ -701,6 +737,7 @@ interface SceneAppPageState extends SceneObjectState {
|
|
701
737
|
*/
|
702
738
|
getFallbackPage?: () => SceneAppPageLike;
|
703
739
|
layout?: PageLayoutType;
|
740
|
+
useScopes?: boolean;
|
704
741
|
}
|
705
742
|
interface SceneAppPageLike extends SceneObject<SceneAppPageState>, DataRequestEnricher {
|
706
743
|
initializeScene(scene: SceneObject): void;
|
@@ -923,8 +960,10 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
|
|
923
960
|
static Component: typeof AdHocFiltersVariableRenderer;
|
924
961
|
private _scopedVars;
|
925
962
|
private _dataSourceSrv;
|
963
|
+
private _scopesBridge;
|
926
964
|
protected _urlSync: AdHocFiltersVariableUrlSyncHandler;
|
927
965
|
constructor(state: Partial<AdHocFiltersVariableState>);
|
966
|
+
private _activationHandler;
|
928
967
|
setState(update: Partial<AdHocFiltersVariableState>): void;
|
929
968
|
/**
|
930
969
|
* Updates the variable's `filters` and `filterExpression` state.
|
@@ -1165,6 +1204,7 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
|
|
1165
1204
|
static Component: typeof GroupByVariableRenderer;
|
1166
1205
|
isLazy: boolean;
|
1167
1206
|
protected _urlSync: SceneObjectUrlSyncHandler;
|
1207
|
+
private _scopesBridge;
|
1168
1208
|
validateAndUpdate(): Observable<ValidateAndUpdateResult>;
|
1169
1209
|
private _updateValueGivenNewOptions;
|
1170
1210
|
getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]>;
|
@@ -1181,7 +1221,7 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
|
|
1181
1221
|
text: string[];
|
1182
1222
|
};
|
1183
1223
|
}
|
1184
|
-
declare function GroupByVariableRenderer({ model }: SceneComponentProps<
|
1224
|
+
declare function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>): React__default.JSX.Element;
|
1185
1225
|
|
1186
1226
|
declare function isAdHocVariable(variable: SceneVariable): variable is AdHocFiltersVariable;
|
1187
1227
|
declare function isConstantVariable(variable: SceneVariable): variable is ConstantVariable;
|
@@ -1360,6 +1400,10 @@ declare function getAncestor<ParentType>(sceneObject: SceneObject, ancestorType:
|
|
1360
1400
|
* This will search down the full scene graph, looking for objects that match the provided descendentType type.
|
1361
1401
|
*/
|
1362
1402
|
declare function findDescendents<T extends SceneObject>(scene: SceneObject, descendentType: SceneType<T>): T[];
|
1403
|
+
/**
|
1404
|
+
* Will walk up the scene object graph to the closest $scopesBridge scene object
|
1405
|
+
*/
|
1406
|
+
declare function getScopesBridge(sceneObject: SceneObject): SceneScopesBridge | undefined;
|
1363
1407
|
|
1364
1408
|
declare const sceneGraph: {
|
1365
1409
|
getVariables: typeof getVariables;
|
@@ -1377,6 +1421,7 @@ declare const sceneGraph: {
|
|
1377
1421
|
getAncestor: typeof getAncestor;
|
1378
1422
|
getQueryController: typeof getQueryController;
|
1379
1423
|
findDescendents: typeof findDescendents;
|
1424
|
+
getScopesBridge: typeof getScopesBridge;
|
1380
1425
|
};
|
1381
1426
|
|
1382
1427
|
interface ActWhenVariableChangedState extends SceneObjectState {
|
@@ -1554,21 +1599,6 @@ declare class SceneDataNode extends SceneObjectBase<SceneDataNodeState> implemen
|
|
1554
1599
|
getResultsStream(): rxjs.Observable<SceneDataProviderResult>;
|
1555
1600
|
}
|
1556
1601
|
|
1557
|
-
interface SceneObjectUrlSyncConfigOptions {
|
1558
|
-
keys: string[] | (() => string[]);
|
1559
|
-
}
|
1560
|
-
declare class SceneObjectUrlSyncConfig implements SceneObjectUrlSyncHandler {
|
1561
|
-
private _sceneObject;
|
1562
|
-
private _keys;
|
1563
|
-
private _nextChangeShouldAddHistoryStep;
|
1564
|
-
constructor(_sceneObject: SceneObjectWithUrlSync, _options: SceneObjectUrlSyncConfigOptions);
|
1565
|
-
getKeys(): string[];
|
1566
|
-
getUrlState(): SceneObjectUrlValues;
|
1567
|
-
updateFromUrl(values: SceneObjectUrlValues): void;
|
1568
|
-
performBrowserHistoryAction(callback: () => void): void;
|
1569
|
-
shouldCreateHistoryStep(values: SceneObjectUrlValues): boolean;
|
1570
|
-
}
|
1571
|
-
|
1572
1602
|
declare class SceneTimeRange extends SceneObjectBase<SceneTimeRangeState> implements SceneTimeRangeLike {
|
1573
1603
|
protected _urlSync: SceneObjectUrlSyncConfig;
|
1574
1604
|
constructor(state?: Partial<SceneTimeRangeState>);
|
@@ -1643,6 +1673,8 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
|
|
1643
1673
|
private _dataLayersMerger;
|
1644
1674
|
private _timeSub?;
|
1645
1675
|
private _timeSubRange?;
|
1676
|
+
private _scopesSub?;
|
1677
|
+
private _scopesSubBridge?;
|
1646
1678
|
private _containerWidth?;
|
1647
1679
|
private _variableValueRecorder;
|
1648
1680
|
private _results;
|
@@ -1681,11 +1713,12 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
|
|
1681
1713
|
private _onDeactivate;
|
1682
1714
|
setContainerWidth(width: number): void;
|
1683
1715
|
isDataReadyToDisplay(): boolean;
|
1716
|
+
private subscribeToScopesChanges;
|
1684
1717
|
private subscribeToTimeRangeChanges;
|
1685
1718
|
runQueries(): void;
|
1686
1719
|
private getMaxDataPoints;
|
1687
1720
|
cancelQuery(): void;
|
1688
|
-
private
|
1721
|
+
private runWithTimeRangeAndScopes;
|
1689
1722
|
clone(withState?: Partial<QueryRunnerState>): this;
|
1690
1723
|
private prepareRequests;
|
1691
1724
|
private onDataReceived;
|
@@ -2385,6 +2418,7 @@ declare class SplitLayout extends SceneObjectBase<SplitLayoutState> {
|
|
2385
2418
|
* Responsible for top level pages routing
|
2386
2419
|
*/
|
2387
2420
|
declare class SceneApp extends SceneObjectBase<SceneAppState> implements DataRequestEnricher {
|
2421
|
+
protected _renderBeforeActivation: boolean;
|
2388
2422
|
enrichDataRequest(): {
|
2389
2423
|
app: string;
|
2390
2424
|
};
|
@@ -2402,7 +2436,9 @@ declare class SceneAppPage extends SceneObjectBase<SceneAppPageState> implements
|
|
2402
2436
|
static Component: typeof SceneAppPageRenderer;
|
2403
2437
|
private _sceneCache;
|
2404
2438
|
private _drilldownCache;
|
2439
|
+
private _scopesBridge;
|
2405
2440
|
constructor(state: SceneAppPageState);
|
2441
|
+
private _activationHandler;
|
2406
2442
|
initializeScene(scene: EmbeddedScene): void;
|
2407
2443
|
getScene(routeMatch: SceneRouteMatch): EmbeddedScene;
|
2408
2444
|
getDrilldownPage(drilldown: SceneAppDrilldownView, routeMatch: SceneRouteMatch<{}>): SceneAppPageLike;
|
@@ -2903,4 +2939,4 @@ declare const sceneUtils: {
|
|
2903
2939
|
isGroupByVariable: typeof isGroupByVariable;
|
2904
2940
|
};
|
2905
2941
|
|
2906
|
-
export { AdHocFilterWithLabels, 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, SceneInteractionProfileEvent, 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 };
|
2942
|
+
export { AdHocFilterWithLabels, 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, SceneInteractionProfileEvent, SceneLayout, SceneLayoutChildOptions, SceneLayoutState, SceneObject, SceneObjectBase, SceneObjectRef, SceneObjectState, SceneObjectStateChangedEvent, SceneObjectStateChangedPayload, SceneObjectUrlSyncConfig, SceneObjectUrlSyncHandler, SceneObjectUrlValue, SceneObjectUrlValues, SceneObjectWithUrlSync, SceneQueryControllerEntry, SceneQueryControllerEntryType, SceneQueryControllerLike, SceneQueryRunner, SceneReactObject, SceneRefreshPicker, SceneRefreshPickerState, SceneRouteMatch, SceneScopesBridge, 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 };
|
package/dist/index.js
CHANGED
@@ -3213,7 +3213,7 @@ class GroupByVariable extends MultiValueVariable {
|
|
3213
3213
|
this.isLazy = true;
|
3214
3214
|
this._urlSync = new GroupByVariableUrlSyncHandler(this);
|
3215
3215
|
this._getKeys = async (ds) => {
|
3216
|
-
var _a, _b, _c;
|
3216
|
+
var _a, _b, _c, _d;
|
3217
3217
|
const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, null));
|
3218
3218
|
if (override && override.replace) {
|
3219
3219
|
return override.values;
|
@@ -3230,7 +3230,8 @@ class GroupByVariable extends MultiValueVariable {
|
|
3230
3230
|
const response = await ds.getTagKeys(__spreadValues$F({
|
3231
3231
|
filters: otherFilters,
|
3232
3232
|
queries,
|
3233
|
-
timeRange
|
3233
|
+
timeRange,
|
3234
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
3234
3235
|
}, getEnrichedFiltersRequest(this)));
|
3235
3236
|
if (responseHasError(response)) {
|
3236
3237
|
this.setState({ error: response.error.message });
|
@@ -5367,9 +5368,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5367
5368
|
this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
|
5368
5369
|
this._dataSourceSrv = runtime.getDataSourceSrv();
|
5369
5370
|
this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
|
5371
|
+
this._activationHandler = () => {
|
5372
|
+
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
5373
|
+
};
|
5370
5374
|
if (this.state.applyMode === "auto") {
|
5371
5375
|
patchGetAdhocFilters(this);
|
5372
5376
|
}
|
5377
|
+
this.addActivationHandler(this._activationHandler);
|
5373
5378
|
}
|
5374
5379
|
setState(update) {
|
5375
5380
|
let filterExpressionChanged = false;
|
@@ -5453,7 +5458,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5453
5458
|
}
|
5454
5459
|
}
|
5455
5460
|
async _getKeys(currentKey) {
|
5456
|
-
var _a, _b, _c;
|
5461
|
+
var _a, _b, _c, _d;
|
5457
5462
|
const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, currentKey));
|
5458
5463
|
if (override && override.replace) {
|
5459
5464
|
return dataFromResponse(override.values).map(toSelectableValue);
|
@@ -5471,7 +5476,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5471
5476
|
const response = await ds.getTagKeys(__spreadValues$z({
|
5472
5477
|
filters: otherFilters,
|
5473
5478
|
queries,
|
5474
|
-
timeRange
|
5479
|
+
timeRange,
|
5480
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
5475
5481
|
}, getEnrichedFiltersRequest(this)));
|
5476
5482
|
if (responseHasError(response)) {
|
5477
5483
|
this.setState({ error: response.error.message });
|
@@ -5487,7 +5493,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5487
5493
|
return keys.map(toSelectableValue);
|
5488
5494
|
}
|
5489
5495
|
async _getValuesFor(filter) {
|
5490
|
-
var _a, _b, _c;
|
5496
|
+
var _a, _b, _c, _d;
|
5491
5497
|
const override = await ((_b = (_a = this.state).getTagValuesProvider) == null ? void 0 : _b.call(_a, this, filter));
|
5492
5498
|
if (override && override.replace) {
|
5493
5499
|
return dataFromResponse(override.values).map(toSelectableValue);
|
@@ -5503,7 +5509,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5503
5509
|
key: filter.key,
|
5504
5510
|
filters: otherFilters,
|
5505
5511
|
timeRange,
|
5506
|
-
queries
|
5512
|
+
queries,
|
5513
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
5507
5514
|
}, getEnrichedFiltersRequest(this)));
|
5508
5515
|
if (responseHasError(response)) {
|
5509
5516
|
this.setState({ error: response.error.message });
|
@@ -5520,7 +5527,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5520
5527
|
});
|
5521
5528
|
}
|
5522
5529
|
_getOperators() {
|
5523
|
-
const { supportsMultiValueOperators, allowCustomValue } = this.state;
|
5530
|
+
const { supportsMultiValueOperators, allowCustomValue = true } = this.state;
|
5524
5531
|
return OPERATORS.filter(({ isMulti, isRegex }) => {
|
5525
5532
|
if (!supportsMultiValueOperators && isMulti) {
|
5526
5533
|
return false;
|
@@ -5691,6 +5698,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5691
5698
|
_onActivate() {
|
5692
5699
|
if (this.isQueryModeAuto()) {
|
5693
5700
|
const timeRange = sceneGraph.getTimeRange(this);
|
5701
|
+
const scopesBridge = sceneGraph.getScopesBridge(this);
|
5694
5702
|
const providers = this.getClosestExtraQueryProviders();
|
5695
5703
|
for (const provider of providers) {
|
5696
5704
|
this._subs.add(
|
@@ -5701,6 +5709,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5701
5709
|
})
|
5702
5710
|
);
|
5703
5711
|
}
|
5712
|
+
this.subscribeToScopesChanges(scopesBridge);
|
5704
5713
|
this.subscribeToTimeRangeChanges(timeRange);
|
5705
5714
|
if (this.shouldRunQueriesOnActivate()) {
|
5706
5715
|
this.runQueries();
|
@@ -5846,6 +5855,21 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5846
5855
|
isDataReadyToDisplay() {
|
5847
5856
|
return Boolean(this.state._hasFetchedData);
|
5848
5857
|
}
|
5858
|
+
subscribeToScopesChanges(scopesBridge) {
|
5859
|
+
if (!scopesBridge) {
|
5860
|
+
return;
|
5861
|
+
}
|
5862
|
+
if (this._scopesSubBridge === scopesBridge) {
|
5863
|
+
return;
|
5864
|
+
}
|
5865
|
+
if (this._scopesSub) {
|
5866
|
+
this._scopesSub.unsubscribe();
|
5867
|
+
}
|
5868
|
+
this._scopesSubBridge = scopesBridge;
|
5869
|
+
this._scopesSub = scopesBridge.subscribeToValue(() => {
|
5870
|
+
this.runWithTimeRangeAndScopes(sceneGraph.getTimeRange(this), scopesBridge);
|
5871
|
+
});
|
5872
|
+
}
|
5849
5873
|
subscribeToTimeRangeChanges(timeRange) {
|
5850
5874
|
if (this._timeSubRange === timeRange) {
|
5851
5875
|
return;
|
@@ -5855,15 +5879,17 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5855
5879
|
}
|
5856
5880
|
this._timeSubRange = timeRange;
|
5857
5881
|
this._timeSub = timeRange.subscribeToState(() => {
|
5858
|
-
this.
|
5882
|
+
this.runWithTimeRangeAndScopes(timeRange, sceneGraph.getScopesBridge(this));
|
5859
5883
|
});
|
5860
5884
|
}
|
5861
5885
|
runQueries() {
|
5862
5886
|
const timeRange = sceneGraph.getTimeRange(this);
|
5887
|
+
const scopesBridge = sceneGraph.getScopesBridge(this);
|
5863
5888
|
if (this.isQueryModeAuto()) {
|
5864
5889
|
this.subscribeToTimeRangeChanges(timeRange);
|
5890
|
+
this.subscribeToScopesChanges(scopesBridge);
|
5865
5891
|
}
|
5866
|
-
this.
|
5892
|
+
this.runWithTimeRangeAndScopes(timeRange, scopesBridge);
|
5867
5893
|
}
|
5868
5894
|
getMaxDataPoints() {
|
5869
5895
|
var _a;
|
@@ -5883,8 +5909,8 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5883
5909
|
data: __spreadProps$m(__spreadValues$y({}, this.state.data), { state: schema.LoadingState.Done })
|
5884
5910
|
});
|
5885
5911
|
}
|
5886
|
-
async
|
5887
|
-
var _a, _b, _c;
|
5912
|
+
async runWithTimeRangeAndScopes(timeRange, scopesBridge) {
|
5913
|
+
var _a, _b, _c, _d;
|
5888
5914
|
if (!this.state.maxDataPoints && this.state.maxDataPointsFromWidth && !this._containerWidth) {
|
5889
5915
|
return;
|
5890
5916
|
}
|
@@ -5897,17 +5923,22 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5897
5923
|
this.setState({ data: __spreadProps$m(__spreadValues$y({}, (_b = this.state.data) != null ? _b : emptyPanelData), { state: schema.LoadingState.Loading }) });
|
5898
5924
|
return;
|
5899
5925
|
}
|
5926
|
+
if (scopesBridge == null ? void 0 : scopesBridge.isLoading()) {
|
5927
|
+
writeSceneLog("SceneQueryRunner", "Scopes are in loading state, skipping query execution");
|
5928
|
+
this.setState({ data: __spreadProps$m(__spreadValues$y({}, (_c = this.state.data) != null ? _c : emptyPanelData), { state: schema.LoadingState.Loading }) });
|
5929
|
+
return;
|
5930
|
+
}
|
5900
5931
|
const { queries } = this.state;
|
5901
5932
|
if (!(queries == null ? void 0 : queries.length)) {
|
5902
5933
|
this._setNoDataState();
|
5903
5934
|
return;
|
5904
5935
|
}
|
5905
5936
|
try {
|
5906
|
-
const datasource = (
|
5937
|
+
const datasource = (_d = this.state.datasource) != null ? _d : findFirstDatasource(queries);
|
5907
5938
|
const ds = await getDataSource(datasource, this._scopedVars);
|
5908
5939
|
this.findAndSubscribeToAdHocFilters(ds.uid);
|
5909
5940
|
const runRequest = runtime.getRunRequest();
|
5910
|
-
const { primary, secondaries, processors } = this.prepareRequests(timeRange, ds);
|
5941
|
+
const { primary, secondaries, processors } = this.prepareRequests(timeRange, ds, scopesBridge);
|
5911
5942
|
writeSceneLog("SceneQueryRunner", "Starting runRequest", this.state.key);
|
5912
5943
|
let stream = runRequest(ds, primary);
|
5913
5944
|
if (secondaries.length > 0) {
|
@@ -5946,7 +5977,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5946
5977
|
clone["_results"].next({ origin: this, data: (_a = this.state.data) != null ? _a : emptyPanelData });
|
5947
5978
|
return clone;
|
5948
5979
|
}
|
5949
|
-
prepareRequests(timeRange, ds) {
|
5980
|
+
prepareRequests(timeRange, ds, scopesBridge) {
|
5950
5981
|
var _a;
|
5951
5982
|
const { minInterval, queries } = this.state;
|
5952
5983
|
let request = __spreadValues$y({
|
@@ -5966,7 +5997,8 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5966
5997
|
to: timeRange.state.to
|
5967
5998
|
},
|
5968
5999
|
cacheTimeout: this.state.cacheTimeout,
|
5969
|
-
queryCachingTTL: this.state.queryCachingTTL
|
6000
|
+
queryCachingTTL: this.state.queryCachingTTL,
|
6001
|
+
scopes: scopesBridge == null ? void 0 : scopesBridge.getValue()
|
5970
6002
|
}, getEnrichedDataRequest(this));
|
5971
6003
|
if (this._adhocFiltersVar) {
|
5972
6004
|
request.filters = this._adhocFiltersVar.state.filters.filter(isFilterComplete);
|
@@ -6934,6 +6966,108 @@ function containsSearchFilter(query) {
|
|
6934
6966
|
return str.indexOf(SEARCH_FILTER_VARIABLE) > -1;
|
6935
6967
|
}
|
6936
6968
|
|
6969
|
+
class SceneScopesBridge extends SceneObjectBase {
|
6970
|
+
constructor() {
|
6971
|
+
super(...arguments);
|
6972
|
+
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["scopes"] });
|
6973
|
+
this._renderBeforeActivation = true;
|
6974
|
+
this._contextSubject = new rxjs.BehaviorSubject(void 0);
|
6975
|
+
this._pendingScopes = null;
|
6976
|
+
}
|
6977
|
+
getUrlState() {
|
6978
|
+
var _a, _b, _c;
|
6979
|
+
return {
|
6980
|
+
scopes: (_c = this._pendingScopes) != null ? _c : ((_b = (_a = this.context) == null ? void 0 : _a.state.value) != null ? _b : []).map((scope) => scope.metadata.name)
|
6981
|
+
};
|
6982
|
+
}
|
6983
|
+
updateFromUrl(values) {
|
6984
|
+
var _a, _b;
|
6985
|
+
let scopes = (_a = values["scopes"]) != null ? _a : [];
|
6986
|
+
scopes = (Array.isArray(scopes) ? scopes : [scopes]).map(String);
|
6987
|
+
if (!this.context) {
|
6988
|
+
this._pendingScopes = scopes;
|
6989
|
+
return;
|
6990
|
+
}
|
6991
|
+
(_b = this.context) == null ? void 0 : _b.changeScopes(scopes);
|
6992
|
+
}
|
6993
|
+
getValue() {
|
6994
|
+
var _a, _b;
|
6995
|
+
return (_b = (_a = this.context) == null ? void 0 : _a.state.value) != null ? _b : [];
|
6996
|
+
}
|
6997
|
+
subscribeToValue(cb) {
|
6998
|
+
return this.contextObservable.pipe(
|
6999
|
+
rxjs.filter((context) => !!context && !context.state.loading),
|
7000
|
+
rxjs.pairwise(),
|
7001
|
+
rxjs.map(
|
7002
|
+
([prevContext, newContext]) => {
|
7003
|
+
var _a, _b;
|
7004
|
+
return [(_a = prevContext == null ? void 0 : prevContext.state.value) != null ? _a : [], (_b = newContext == null ? void 0 : newContext.state.value) != null ? _b : []];
|
7005
|
+
}
|
7006
|
+
),
|
7007
|
+
rxjs.filter(([prevScopes, newScopes]) => !lodash.isEqual(prevScopes, newScopes))
|
7008
|
+
).subscribe(([prevScopes, newScopes]) => {
|
7009
|
+
cb(newScopes, prevScopes);
|
7010
|
+
});
|
7011
|
+
}
|
7012
|
+
isLoading() {
|
7013
|
+
var _a, _b;
|
7014
|
+
return (_b = (_a = this.context) == null ? void 0 : _a.state.loading) != null ? _b : false;
|
7015
|
+
}
|
7016
|
+
subscribeToLoading(cb) {
|
7017
|
+
return this.contextObservable.pipe(
|
7018
|
+
rxjs.filter((context) => !!context),
|
7019
|
+
rxjs.pairwise(),
|
7020
|
+
rxjs.map(
|
7021
|
+
([prevContext, newContext]) => {
|
7022
|
+
var _a, _b;
|
7023
|
+
return [(_a = prevContext == null ? void 0 : prevContext.state.loading) != null ? _a : false, (_b = newContext == null ? void 0 : newContext.state.loading) != null ? _b : false];
|
7024
|
+
}
|
7025
|
+
),
|
7026
|
+
rxjs.filter(([prevLoading, newLoading]) => prevLoading !== newLoading)
|
7027
|
+
).subscribe(([_prevLoading, newLoading]) => {
|
7028
|
+
cb(newLoading);
|
7029
|
+
});
|
7030
|
+
}
|
7031
|
+
setEnabled(enabled) {
|
7032
|
+
var _a;
|
7033
|
+
(_a = this.context) == null ? void 0 : _a.setEnabled(enabled);
|
7034
|
+
}
|
7035
|
+
setReadOnly(readOnly) {
|
7036
|
+
var _a;
|
7037
|
+
(_a = this.context) == null ? void 0 : _a.setReadOnly(readOnly);
|
7038
|
+
}
|
7039
|
+
updateContext(newContext) {
|
7040
|
+
var _a, _b;
|
7041
|
+
if (this._pendingScopes && newContext) {
|
7042
|
+
setTimeout(() => {
|
7043
|
+
newContext == null ? void 0 : newContext.changeScopes(this._pendingScopes);
|
7044
|
+
this._pendingScopes = null;
|
7045
|
+
});
|
7046
|
+
}
|
7047
|
+
if (this.context !== newContext || ((_a = this.context) == null ? void 0 : _a.state) !== (newContext == null ? void 0 : newContext.state)) {
|
7048
|
+
const shouldUpdate = ((_b = this.context) == null ? void 0 : _b.state.value) !== (newContext == null ? void 0 : newContext.state.value);
|
7049
|
+
this._contextSubject.next(newContext);
|
7050
|
+
if (shouldUpdate) {
|
7051
|
+
this.forceRender();
|
7052
|
+
}
|
7053
|
+
}
|
7054
|
+
}
|
7055
|
+
get context() {
|
7056
|
+
return this._contextSubject.getValue();
|
7057
|
+
}
|
7058
|
+
get contextObservable() {
|
7059
|
+
return this._contextSubject.asObservable();
|
7060
|
+
}
|
7061
|
+
}
|
7062
|
+
SceneScopesBridge.Component = SceneScopesBridgeRenderer;
|
7063
|
+
function SceneScopesBridgeRenderer({ model }) {
|
7064
|
+
const context = runtime.useScopes();
|
7065
|
+
React.useEffect(() => {
|
7066
|
+
model.updateContext(context);
|
7067
|
+
}, [context, model]);
|
7068
|
+
return null;
|
7069
|
+
}
|
7070
|
+
|
6937
7071
|
function getVariables(sceneObject) {
|
6938
7072
|
var _a;
|
6939
7073
|
return (_a = getClosest(sceneObject, (s) => s.state.$variables)) != null ? _a : EmptyVariableSet;
|
@@ -7077,6 +7211,10 @@ function findDescendents(scene, descendentType) {
|
|
7077
7211
|
const targetScenes = findAllObjects(scene, isDescendentType);
|
7078
7212
|
return targetScenes.filter(isDescendentType);
|
7079
7213
|
}
|
7214
|
+
function getScopesBridge(sceneObject) {
|
7215
|
+
var _a;
|
7216
|
+
return (_a = findObject(sceneObject, (s) => s instanceof SceneScopesBridge)) != null ? _a : void 0;
|
7217
|
+
}
|
7080
7218
|
|
7081
7219
|
const sceneGraph = {
|
7082
7220
|
getVariables,
|
@@ -7093,7 +7231,8 @@ const sceneGraph = {
|
|
7093
7231
|
findAllObjects,
|
7094
7232
|
getAncestor,
|
7095
7233
|
getQueryController,
|
7096
|
-
findDescendents
|
7234
|
+
findDescendents,
|
7235
|
+
getScopesBridge
|
7097
7236
|
};
|
7098
7237
|
|
7099
7238
|
class UniqueUrlKeyMapper {
|
@@ -12836,6 +12975,10 @@ class SplitLayout extends SceneObjectBase {
|
|
12836
12975
|
SplitLayout.Component = SplitLayoutRenderer;
|
12837
12976
|
|
12838
12977
|
class SceneApp extends SceneObjectBase {
|
12978
|
+
constructor() {
|
12979
|
+
super(...arguments);
|
12980
|
+
this._renderBeforeActivation = true;
|
12981
|
+
}
|
12839
12982
|
enrichDataRequest() {
|
12840
12983
|
return {
|
12841
12984
|
app: this.state.name || "app"
|
@@ -12843,8 +12986,10 @@ class SceneApp extends SceneObjectBase {
|
|
12843
12986
|
}
|
12844
12987
|
}
|
12845
12988
|
SceneApp.Component = ({ model }) => {
|
12846
|
-
const { pages } = model.useState();
|
12847
|
-
return /* @__PURE__ */ React__default["default"].createElement(
|
12989
|
+
const { pages, scopesBridge } = model.useState();
|
12990
|
+
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, scopesBridge && /* @__PURE__ */ React__default["default"].createElement(scopesBridge.Component, {
|
12991
|
+
model: scopesBridge
|
12992
|
+
}), /* @__PURE__ */ React__default["default"].createElement(SceneAppContext.Provider, {
|
12848
12993
|
value: model
|
12849
12994
|
}, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Routes, null, pages.map((page) => /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Route, {
|
12850
12995
|
key: page.state.url,
|
@@ -12852,7 +12997,7 @@ SceneApp.Component = ({ model }) => {
|
|
12852
12997
|
element: /* @__PURE__ */ React__default["default"].createElement(page.Component, {
|
12853
12998
|
model: page
|
12854
12999
|
})
|
12855
|
-
}))));
|
13000
|
+
})))));
|
12856
13001
|
};
|
12857
13002
|
const SceneAppContext = React.createContext(null);
|
12858
13003
|
const sceneAppCache = /* @__PURE__ */ new Map();
|
@@ -13207,6 +13352,21 @@ class SceneAppPage extends SceneObjectBase {
|
|
13207
13352
|
super(state);
|
13208
13353
|
this._sceneCache = /* @__PURE__ */ new Map();
|
13209
13354
|
this._drilldownCache = /* @__PURE__ */ new Map();
|
13355
|
+
this._activationHandler = () => {
|
13356
|
+
if (!this.state.useScopes) {
|
13357
|
+
return;
|
13358
|
+
}
|
13359
|
+
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
13360
|
+
if (!this._scopesBridge) {
|
13361
|
+
throw new Error("Use of scopes is enabled but no scopes bridge found");
|
13362
|
+
}
|
13363
|
+
this._scopesBridge.setEnabled(true);
|
13364
|
+
return () => {
|
13365
|
+
var _a;
|
13366
|
+
(_a = this._scopesBridge) == null ? void 0 : _a.setEnabled(false);
|
13367
|
+
};
|
13368
|
+
};
|
13369
|
+
this.addActivationHandler(this._activationHandler);
|
13210
13370
|
}
|
13211
13371
|
initializeScene(scene) {
|
13212
13372
|
this.setState({ initializedScene: scene });
|
@@ -14206,6 +14366,7 @@ exports.SceneObjectUrlSyncConfig = SceneObjectUrlSyncConfig;
|
|
14206
14366
|
exports.SceneQueryRunner = SceneQueryRunner;
|
14207
14367
|
exports.SceneReactObject = SceneReactObject;
|
14208
14368
|
exports.SceneRefreshPicker = SceneRefreshPicker;
|
14369
|
+
exports.SceneScopesBridge = SceneScopesBridge;
|
14209
14370
|
exports.SceneTimePicker = SceneTimePicker;
|
14210
14371
|
exports.SceneTimeRange = SceneTimeRange;
|
14211
14372
|
exports.SceneTimeRangeCompare = SceneTimeRangeCompare;
|