@grafana/scenes 5.29.0--canary.992.12182926395.0 → 5.29.1--canary.990.12238644149.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +18 -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 +10 -4
- package/dist/esm/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
- package/dist/esm/variables/groupby/GroupByVariable.js +4 -2
- package/dist/esm/variables/groupby/GroupByVariable.js.map +1 -1
- package/dist/index.d.ts +56 -20
- package/dist/index.js +180 -18
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
import * as _grafana_data from '@grafana/data';
|
2
|
-
import { BusEventWithPayload, PanelData, BusEvent, BusEventType, BusEventHandler, TimeRange, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, DataTransformContext, DataFrame, UrlQueryMap, PanelPlugin, EventBus, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, SelectableValue, MetricFindValue, GetTagResponse, VariableRefresh as VariableRefresh$1, VariableSort, EventFilterOptions, AnnotationEvent, AnnotationQuery, DataTransformerConfig, PanelMenuItem, FieldConfigSource, PanelModel, AbsoluteTimeRange, InterpolateFunction, IconName as IconName$1, PageLayoutType, FieldConfig, FieldType, FieldValueMatcherConfig, ScopedVar, RawTimeRange } from '@grafana/data';
|
2
|
+
import { BusEventWithPayload, PanelData, BusEvent, BusEventType, BusEventHandler, TimeRange, DataQueryRequest, DataSourceGetTagKeysOptions, DataSourceGetTagValuesOptions, DataTransformContext, DataFrame, UrlQueryMap, PanelPlugin, EventBus, DataQuery as DataQuery$1, DataSourceApi, Registry, RegistryItem, ScopedVars, AdHocVariableFilter, SelectableValue, MetricFindValue, GetTagResponse, VariableRefresh as VariableRefresh$1, VariableSort, Scope, EventFilterOptions, AnnotationEvent, AnnotationQuery, DataTransformerConfig, PanelMenuItem, FieldConfigSource, PanelModel, AbsoluteTimeRange, InterpolateFunction, IconName as IconName$1, PageLayoutType, FieldConfig, FieldType, FieldValueMatcherConfig, ScopedVar, RawTimeRange } from '@grafana/data';
|
3
3
|
import * as React$1 from 'react';
|
4
4
|
import React__default, { CSSProperties, ComponentType } from 'react';
|
5
5
|
import * as rxjs from 'rxjs';
|
6
6
|
import { Observable, Unsubscribable, MonoTypeOperatorFunction, Subscription, ReplaySubject } from 'rxjs';
|
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
|
-
import { LocationService, VariableInterpolation } from '@grafana/runtime';
|
9
|
+
import { LocationService, ScopesContextValue, VariableInterpolation } from '@grafana/runtime';
|
10
10
|
import { Location } from 'history';
|
11
11
|
import { PanelContext, IconName } from '@grafana/ui';
|
12
12
|
import ReactGridLayout from 'react-grid-layout';
|
@@ -629,8 +629,10 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
|
|
629
629
|
static Component: typeof AdHocFiltersVariableRenderer;
|
630
630
|
private _scopedVars;
|
631
631
|
private _dataSourceSrv;
|
632
|
+
private _scopesBridge;
|
632
633
|
protected _urlSync: AdHocFiltersVariableUrlSyncHandler;
|
633
634
|
constructor(state: Partial<AdHocFiltersVariableState>);
|
635
|
+
private _activationHandler;
|
634
636
|
setState(update: Partial<AdHocFiltersVariableState>): void;
|
635
637
|
getValue(): VariableValue | undefined;
|
636
638
|
_updateFilter(filter: AdHocFilterWithLabels, update: Partial<AdHocFilterWithLabels>): void;
|
@@ -917,6 +919,7 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
|
|
917
919
|
static Component: typeof GroupByVariableRenderer;
|
918
920
|
isLazy: boolean;
|
919
921
|
protected _urlSync: SceneObjectUrlSyncHandler;
|
922
|
+
private _scopesBridge;
|
920
923
|
validateAndUpdate(): Observable<ValidateAndUpdateResult>;
|
921
924
|
private _updateValueGivenNewOptions;
|
922
925
|
getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]>;
|
@@ -933,7 +936,7 @@ declare class GroupByVariable extends MultiValueVariable<GroupByVariableState> {
|
|
933
936
|
text: string[];
|
934
937
|
};
|
935
938
|
}
|
936
|
-
declare function GroupByVariableRenderer({ model }: SceneComponentProps<
|
939
|
+
declare function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>): React__default.JSX.Element;
|
937
940
|
|
938
941
|
declare function isAdHocVariable(variable: SceneVariable): variable is AdHocFiltersVariable;
|
939
942
|
declare function isConstantVariable(variable: SceneVariable): variable is ConstantVariable;
|
@@ -1034,6 +1037,41 @@ declare class UrlSyncManager implements UrlSyncManagerLike {
|
|
1034
1037
|
getUrlState(root: SceneObject): SceneObjectUrlValues;
|
1035
1038
|
}
|
1036
1039
|
|
1040
|
+
interface SceneObjectUrlSyncConfigOptions {
|
1041
|
+
keys: string[] | (() => string[]);
|
1042
|
+
}
|
1043
|
+
declare class SceneObjectUrlSyncConfig implements SceneObjectUrlSyncHandler {
|
1044
|
+
private _sceneObject;
|
1045
|
+
private _keys;
|
1046
|
+
private _nextChangeShouldAddHistoryStep;
|
1047
|
+
constructor(_sceneObject: SceneObjectWithUrlSync, _options: SceneObjectUrlSyncConfigOptions);
|
1048
|
+
getKeys(): string[];
|
1049
|
+
getUrlState(): SceneObjectUrlValues;
|
1050
|
+
updateFromUrl(values: SceneObjectUrlValues): void;
|
1051
|
+
performBrowserHistoryAction(callback: () => void): void;
|
1052
|
+
shouldCreateHistoryStep(values: SceneObjectUrlValues): boolean;
|
1053
|
+
}
|
1054
|
+
|
1055
|
+
declare class SceneScopesBridge extends SceneObjectBase implements SceneObjectWithUrlSync {
|
1056
|
+
static Component: typeof SceneScopesBridgeRenderer;
|
1057
|
+
protected _urlSync: SceneObjectUrlSyncConfig;
|
1058
|
+
protected _renderBeforeActivation: boolean;
|
1059
|
+
private _contextSubject;
|
1060
|
+
private _pendingScopes;
|
1061
|
+
getUrlState(): SceneObjectUrlValues;
|
1062
|
+
updateFromUrl(values: SceneObjectUrlValues): void;
|
1063
|
+
getValue(): Scope[];
|
1064
|
+
subscribeToValue(cb: (newScopes: Scope[], prevScopes: Scope[]) => void): Unsubscribable;
|
1065
|
+
isLoading(): boolean;
|
1066
|
+
subscribeToLoading(cb: (loading: boolean) => void): Unsubscribable;
|
1067
|
+
setEnabled(enabled: boolean): void;
|
1068
|
+
setReadOnly(readOnly: boolean): void;
|
1069
|
+
updateContext(newContext: ScopesContextValue | undefined): void;
|
1070
|
+
private get context();
|
1071
|
+
private get contextObservable();
|
1072
|
+
}
|
1073
|
+
declare function SceneScopesBridgeRenderer({ model }: SceneComponentProps<SceneScopesBridge>): null;
|
1074
|
+
|
1037
1075
|
/**
|
1038
1076
|
* Get the closest node with variables
|
1039
1077
|
*/
|
@@ -1112,6 +1150,10 @@ declare function getQueryController(sceneObject: SceneObject): SceneQueryControl
|
|
1112
1150
|
* name urlSyncManager that is of type UrlSyncManager
|
1113
1151
|
*/
|
1114
1152
|
declare function getUrlSyncManager(sceneObject: SceneObject): UrlSyncManagerLike | undefined;
|
1153
|
+
/**
|
1154
|
+
* Will walk up the scene object graph to the closest $scopesBridge scene object
|
1155
|
+
*/
|
1156
|
+
declare function getScopesBridge(sceneObject: SceneObject): SceneScopesBridge | undefined;
|
1115
1157
|
|
1116
1158
|
declare const sceneGraph: {
|
1117
1159
|
getVariables: typeof getVariables;
|
@@ -1130,6 +1172,7 @@ declare const sceneGraph: {
|
|
1130
1172
|
findDescendents: typeof findDescendents;
|
1131
1173
|
getQueryController: typeof getQueryController;
|
1132
1174
|
getUrlSyncManager: typeof getUrlSyncManager;
|
1175
|
+
getScopesBridge: typeof getScopesBridge;
|
1133
1176
|
};
|
1134
1177
|
|
1135
1178
|
interface ActWhenVariableChangedState extends SceneObjectState {
|
@@ -1294,21 +1337,6 @@ declare class SceneDataNode extends SceneObjectBase<SceneDataNodeState> implemen
|
|
1294
1337
|
getResultsStream(): rxjs.Observable<SceneDataProviderResult>;
|
1295
1338
|
}
|
1296
1339
|
|
1297
|
-
interface SceneObjectUrlSyncConfigOptions {
|
1298
|
-
keys: string[] | (() => string[]);
|
1299
|
-
}
|
1300
|
-
declare class SceneObjectUrlSyncConfig implements SceneObjectUrlSyncHandler {
|
1301
|
-
private _sceneObject;
|
1302
|
-
private _keys;
|
1303
|
-
private _nextChangeShouldAddHistoryStep;
|
1304
|
-
constructor(_sceneObject: SceneObjectWithUrlSync, _options: SceneObjectUrlSyncConfigOptions);
|
1305
|
-
getKeys(): string[];
|
1306
|
-
getUrlState(): SceneObjectUrlValues;
|
1307
|
-
updateFromUrl(values: SceneObjectUrlValues): void;
|
1308
|
-
performBrowserHistoryAction(callback: () => void): void;
|
1309
|
-
shouldCreateHistoryStep(values: SceneObjectUrlValues): boolean;
|
1310
|
-
}
|
1311
|
-
|
1312
1340
|
declare class SceneTimeRange extends SceneObjectBase<SceneTimeRangeState> implements SceneTimeRangeLike {
|
1313
1341
|
protected _urlSync: SceneObjectUrlSyncConfig;
|
1314
1342
|
constructor(state?: Partial<SceneTimeRangeState>);
|
@@ -1383,6 +1411,8 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
|
|
1383
1411
|
private _dataLayersMerger;
|
1384
1412
|
private _timeSub?;
|
1385
1413
|
private _timeSubRange?;
|
1414
|
+
private _scopesSub?;
|
1415
|
+
private _scopesSubBridge?;
|
1386
1416
|
private _containerWidth?;
|
1387
1417
|
private _variableValueRecorder;
|
1388
1418
|
private _results;
|
@@ -1421,11 +1451,12 @@ declare class SceneQueryRunner extends SceneObjectBase<QueryRunnerState> impleme
|
|
1421
1451
|
private _onDeactivate;
|
1422
1452
|
setContainerWidth(width: number): void;
|
1423
1453
|
isDataReadyToDisplay(): boolean;
|
1454
|
+
private subscribeToScopesChanges;
|
1424
1455
|
private subscribeToTimeRangeChanges;
|
1425
1456
|
runQueries(): void;
|
1426
1457
|
private getMaxDataPoints;
|
1427
1458
|
cancelQuery(): void;
|
1428
|
-
private
|
1459
|
+
private runWithTimeRangeAndScopes;
|
1429
1460
|
clone(withState?: Partial<QueryRunnerState>): this;
|
1430
1461
|
private prepareRequests;
|
1431
1462
|
private onDataReceived;
|
@@ -2267,6 +2298,7 @@ interface SceneAppState extends SceneObjectState {
|
|
2267
2298
|
pages: SceneAppPageLike[];
|
2268
2299
|
name?: string;
|
2269
2300
|
urlSyncOptions?: SceneUrlSyncOptions;
|
2301
|
+
scopesBridge?: SceneScopesBridge;
|
2270
2302
|
}
|
2271
2303
|
interface SceneAppRoute {
|
2272
2304
|
path: string;
|
@@ -2311,6 +2343,7 @@ interface SceneAppPageState extends SceneObjectState {
|
|
2311
2343
|
*/
|
2312
2344
|
getFallbackPage?: () => SceneAppPageLike;
|
2313
2345
|
layout?: PageLayoutType;
|
2346
|
+
useScopes?: boolean;
|
2314
2347
|
}
|
2315
2348
|
interface SceneAppPageLike extends SceneObject<SceneAppPageState>, DataRequestEnricher {
|
2316
2349
|
initializeScene(scene: SceneObject): void;
|
@@ -2335,6 +2368,7 @@ interface SceneAppDrilldownView {
|
|
2335
2368
|
* Responsible for top level pages routing
|
2336
2369
|
*/
|
2337
2370
|
declare class SceneApp extends SceneObjectBase<SceneAppState> implements DataRequestEnricher {
|
2371
|
+
protected _renderBeforeActivation: boolean;
|
2338
2372
|
enrichDataRequest(): {
|
2339
2373
|
app: string;
|
2340
2374
|
};
|
@@ -2352,7 +2386,9 @@ declare class SceneAppPage extends SceneObjectBase<SceneAppPageState> implements
|
|
2352
2386
|
static Component: typeof SceneAppPageRenderer;
|
2353
2387
|
private _sceneCache;
|
2354
2388
|
private _drilldownCache;
|
2389
|
+
private _scopesBridge;
|
2355
2390
|
constructor(state: SceneAppPageState);
|
2391
|
+
private _activationHandler;
|
2356
2392
|
initializeScene(scene: EmbeddedScene): void;
|
2357
2393
|
getScene(routeMatch: SceneRouteMatch): EmbeddedScene;
|
2358
2394
|
getDrilldownPage(drilldown: SceneAppDrilldownView, routeMatch: SceneRouteMatch<{}>): SceneAppPageLike;
|
@@ -2853,4 +2889,4 @@ declare const sceneUtils: {
|
|
2853
2889
|
isGroupByVariable: typeof isGroupByVariable;
|
2854
2890
|
};
|
2855
2891
|
|
2856
|
-
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 };
|
2892
|
+
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, 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
@@ -2904,7 +2904,7 @@ class GroupByVariable extends MultiValueVariable {
|
|
2904
2904
|
this.isLazy = true;
|
2905
2905
|
this._urlSync = new GroupByVariableUrlSyncHandler(this);
|
2906
2906
|
this._getKeys = async (ds) => {
|
2907
|
-
var _a, _b, _c;
|
2907
|
+
var _a, _b, _c, _d;
|
2908
2908
|
const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, null));
|
2909
2909
|
if (override && override.replace) {
|
2910
2910
|
return override.values;
|
@@ -2921,7 +2921,8 @@ class GroupByVariable extends MultiValueVariable {
|
|
2921
2921
|
const response = await ds.getTagKeys(__spreadValues$F({
|
2922
2922
|
filters: otherFilters,
|
2923
2923
|
queries,
|
2924
|
-
timeRange
|
2924
|
+
timeRange,
|
2925
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
2925
2926
|
}, getEnrichedFiltersRequest(this)));
|
2926
2927
|
if (responseHasError(response)) {
|
2927
2928
|
this.setState({ error: response.error.message });
|
@@ -2937,6 +2938,7 @@ class GroupByVariable extends MultiValueVariable {
|
|
2937
2938
|
return keys;
|
2938
2939
|
};
|
2939
2940
|
this.addActivationHandler(() => {
|
2941
|
+
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
2940
2942
|
allActiveGroupByVariables.add(this);
|
2941
2943
|
return () => allActiveGroupByVariables.delete(this);
|
2942
2944
|
});
|
@@ -4986,9 +4988,13 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
4986
4988
|
this._scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };
|
4987
4989
|
this._dataSourceSrv = runtime.getDataSourceSrv();
|
4988
4990
|
this._urlSync = new AdHocFiltersVariableUrlSyncHandler(this);
|
4991
|
+
this._activationHandler = () => {
|
4992
|
+
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
4993
|
+
};
|
4989
4994
|
if (this.state.applyMode === "auto") {
|
4990
4995
|
patchGetAdhocFilters(this);
|
4991
4996
|
}
|
4997
|
+
this.addActivationHandler(this._activationHandler);
|
4992
4998
|
}
|
4993
4999
|
setState(update) {
|
4994
5000
|
let filterExpressionChanged = false;
|
@@ -5057,7 +5063,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5057
5063
|
}
|
5058
5064
|
}
|
5059
5065
|
async _getKeys(currentKey) {
|
5060
|
-
var _a, _b, _c;
|
5066
|
+
var _a, _b, _c, _d;
|
5061
5067
|
const override = await ((_b = (_a = this.state).getTagKeysProvider) == null ? void 0 : _b.call(_a, this, currentKey));
|
5062
5068
|
if (override && override.replace) {
|
5063
5069
|
return dataFromResponse(override.values).map(toSelectableValue);
|
@@ -5075,7 +5081,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5075
5081
|
const response = await ds.getTagKeys(__spreadValues$z({
|
5076
5082
|
filters: otherFilters,
|
5077
5083
|
queries,
|
5078
|
-
timeRange
|
5084
|
+
timeRange,
|
5085
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
5079
5086
|
}, getEnrichedFiltersRequest(this)));
|
5080
5087
|
if (responseHasError(response)) {
|
5081
5088
|
this.setState({ error: response.error.message });
|
@@ -5091,7 +5098,7 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5091
5098
|
return keys.map(toSelectableValue);
|
5092
5099
|
}
|
5093
5100
|
async _getValuesFor(filter) {
|
5094
|
-
var _a, _b, _c;
|
5101
|
+
var _a, _b, _c, _d;
|
5095
5102
|
const override = await ((_b = (_a = this.state).getTagValuesProvider) == null ? void 0 : _b.call(_a, this, filter));
|
5096
5103
|
if (override && override.replace) {
|
5097
5104
|
return dataFromResponse(override.values).map(toSelectableValue);
|
@@ -5107,7 +5114,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
5107
5114
|
key: filter.key,
|
5108
5115
|
filters: otherFilters,
|
5109
5116
|
timeRange,
|
5110
|
-
queries
|
5117
|
+
queries,
|
5118
|
+
scopes: (_d = this._scopesBridge) == null ? void 0 : _d.getValue()
|
5111
5119
|
}, getEnrichedFiltersRequest(this)));
|
5112
5120
|
if (responseHasError(response)) {
|
5113
5121
|
this.setState({ error: response.error.message });
|
@@ -5284,6 +5292,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5284
5292
|
_onActivate() {
|
5285
5293
|
if (this.isQueryModeAuto()) {
|
5286
5294
|
const timeRange = sceneGraph.getTimeRange(this);
|
5295
|
+
const scopesBridge = sceneGraph.getScopesBridge(this);
|
5287
5296
|
const providers = this.getClosestExtraQueryProviders();
|
5288
5297
|
for (const provider of providers) {
|
5289
5298
|
this._subs.add(
|
@@ -5294,6 +5303,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5294
5303
|
})
|
5295
5304
|
);
|
5296
5305
|
}
|
5306
|
+
this.subscribeToScopesChanges(scopesBridge);
|
5297
5307
|
this.subscribeToTimeRangeChanges(timeRange);
|
5298
5308
|
if (this.shouldRunQueriesOnActivate()) {
|
5299
5309
|
this.runQueries();
|
@@ -5439,6 +5449,21 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5439
5449
|
isDataReadyToDisplay() {
|
5440
5450
|
return Boolean(this.state._hasFetchedData);
|
5441
5451
|
}
|
5452
|
+
subscribeToScopesChanges(scopesBridge) {
|
5453
|
+
if (!scopesBridge) {
|
5454
|
+
return;
|
5455
|
+
}
|
5456
|
+
if (this._scopesSubBridge === scopesBridge) {
|
5457
|
+
return;
|
5458
|
+
}
|
5459
|
+
if (this._scopesSub) {
|
5460
|
+
this._scopesSub.unsubscribe();
|
5461
|
+
}
|
5462
|
+
this._scopesSubBridge = scopesBridge;
|
5463
|
+
this._scopesSub = scopesBridge.subscribeToValue(() => {
|
5464
|
+
this.runWithTimeRangeAndScopes(sceneGraph.getTimeRange(this), scopesBridge);
|
5465
|
+
});
|
5466
|
+
}
|
5442
5467
|
subscribeToTimeRangeChanges(timeRange) {
|
5443
5468
|
if (this._timeSubRange === timeRange) {
|
5444
5469
|
return;
|
@@ -5448,15 +5473,17 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5448
5473
|
}
|
5449
5474
|
this._timeSubRange = timeRange;
|
5450
5475
|
this._timeSub = timeRange.subscribeToState(() => {
|
5451
|
-
this.
|
5476
|
+
this.runWithTimeRangeAndScopes(timeRange, sceneGraph.getScopesBridge(this));
|
5452
5477
|
});
|
5453
5478
|
}
|
5454
5479
|
runQueries() {
|
5455
5480
|
const timeRange = sceneGraph.getTimeRange(this);
|
5481
|
+
const scopesBridge = sceneGraph.getScopesBridge(this);
|
5456
5482
|
if (this.isQueryModeAuto()) {
|
5457
5483
|
this.subscribeToTimeRangeChanges(timeRange);
|
5484
|
+
this.subscribeToScopesChanges(scopesBridge);
|
5458
5485
|
}
|
5459
|
-
this.
|
5486
|
+
this.runWithTimeRangeAndScopes(timeRange, scopesBridge);
|
5460
5487
|
}
|
5461
5488
|
getMaxDataPoints() {
|
5462
5489
|
var _a;
|
@@ -5476,8 +5503,8 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5476
5503
|
data: __spreadProps$m(__spreadValues$y({}, this.state.data), { state: schema.LoadingState.Done })
|
5477
5504
|
});
|
5478
5505
|
}
|
5479
|
-
async
|
5480
|
-
var _a, _b, _c;
|
5506
|
+
async runWithTimeRangeAndScopes(timeRange, scopesBridge) {
|
5507
|
+
var _a, _b, _c, _d;
|
5481
5508
|
if (!this.state.maxDataPoints && this.state.maxDataPointsFromWidth && !this._containerWidth) {
|
5482
5509
|
return;
|
5483
5510
|
}
|
@@ -5490,17 +5517,22 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5490
5517
|
this.setState({ data: __spreadProps$m(__spreadValues$y({}, (_b = this.state.data) != null ? _b : emptyPanelData), { state: schema.LoadingState.Loading }) });
|
5491
5518
|
return;
|
5492
5519
|
}
|
5520
|
+
if (scopesBridge == null ? void 0 : scopesBridge.isLoading()) {
|
5521
|
+
writeSceneLog("SceneQueryRunner", "Scopes are in loading state, skipping query execution");
|
5522
|
+
this.setState({ data: __spreadProps$m(__spreadValues$y({}, (_c = this.state.data) != null ? _c : emptyPanelData), { state: schema.LoadingState.Loading }) });
|
5523
|
+
return;
|
5524
|
+
}
|
5493
5525
|
const { queries } = this.state;
|
5494
5526
|
if (!(queries == null ? void 0 : queries.length)) {
|
5495
5527
|
this._setNoDataState();
|
5496
5528
|
return;
|
5497
5529
|
}
|
5498
5530
|
try {
|
5499
|
-
const datasource = (
|
5531
|
+
const datasource = (_d = this.state.datasource) != null ? _d : findFirstDatasource(queries);
|
5500
5532
|
const ds = await getDataSource(datasource, this._scopedVars);
|
5501
5533
|
this.findAndSubscribeToAdHocFilters(datasource == null ? void 0 : datasource.uid);
|
5502
5534
|
const runRequest = runtime.getRunRequest();
|
5503
|
-
const { primary, secondaries, processors } = this.prepareRequests(timeRange, ds);
|
5535
|
+
const { primary, secondaries, processors } = this.prepareRequests(timeRange, ds, scopesBridge);
|
5504
5536
|
writeSceneLog("SceneQueryRunner", "Starting runRequest", this.state.key);
|
5505
5537
|
let stream = runRequest(ds, primary);
|
5506
5538
|
if (secondaries.length > 0) {
|
@@ -5539,7 +5571,7 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5539
5571
|
clone["_results"].next({ origin: this, data: (_a = this.state.data) != null ? _a : emptyPanelData });
|
5540
5572
|
return clone;
|
5541
5573
|
}
|
5542
|
-
prepareRequests(timeRange, ds) {
|
5574
|
+
prepareRequests(timeRange, ds, scopesBridge) {
|
5543
5575
|
var _a;
|
5544
5576
|
const { minInterval, queries } = this.state;
|
5545
5577
|
let request = __spreadValues$y({
|
@@ -5559,7 +5591,8 @@ class SceneQueryRunner extends SceneObjectBase {
|
|
5559
5591
|
to: timeRange.state.to
|
5560
5592
|
},
|
5561
5593
|
cacheTimeout: this.state.cacheTimeout,
|
5562
|
-
queryCachingTTL: this.state.queryCachingTTL
|
5594
|
+
queryCachingTTL: this.state.queryCachingTTL,
|
5595
|
+
scopes: scopesBridge == null ? void 0 : scopesBridge.getValue()
|
5563
5596
|
}, getEnrichedDataRequest(this));
|
5564
5597
|
if (this._adhocFiltersVar) {
|
5565
5598
|
request.filters = this._adhocFiltersVar.state.filters.filter(isFilterComplete);
|
@@ -6486,6 +6519,108 @@ function containsSearchFilter(query) {
|
|
6486
6519
|
return str.indexOf(SEARCH_FILTER_VARIABLE) > -1;
|
6487
6520
|
}
|
6488
6521
|
|
6522
|
+
class SceneScopesBridge extends SceneObjectBase {
|
6523
|
+
constructor() {
|
6524
|
+
super(...arguments);
|
6525
|
+
this._urlSync = new SceneObjectUrlSyncConfig(this, { keys: ["scopes"] });
|
6526
|
+
this._renderBeforeActivation = true;
|
6527
|
+
this._contextSubject = new rxjs.BehaviorSubject(void 0);
|
6528
|
+
this._pendingScopes = null;
|
6529
|
+
}
|
6530
|
+
getUrlState() {
|
6531
|
+
var _a, _b, _c;
|
6532
|
+
return {
|
6533
|
+
scopes: (_c = this._pendingScopes) != null ? _c : ((_b = (_a = this.context) == null ? void 0 : _a.state.value) != null ? _b : []).map((scope) => scope.metadata.name)
|
6534
|
+
};
|
6535
|
+
}
|
6536
|
+
updateFromUrl(values) {
|
6537
|
+
var _a, _b;
|
6538
|
+
let scopes = (_a = values["scopes"]) != null ? _a : [];
|
6539
|
+
scopes = (Array.isArray(scopes) ? scopes : [scopes]).map(String);
|
6540
|
+
if (!this.context) {
|
6541
|
+
this._pendingScopes = scopes;
|
6542
|
+
return;
|
6543
|
+
}
|
6544
|
+
(_b = this.context) == null ? void 0 : _b.changeScopes(scopes);
|
6545
|
+
}
|
6546
|
+
getValue() {
|
6547
|
+
var _a, _b;
|
6548
|
+
return (_b = (_a = this.context) == null ? void 0 : _a.state.value) != null ? _b : [];
|
6549
|
+
}
|
6550
|
+
subscribeToValue(cb) {
|
6551
|
+
return this.contextObservable.pipe(
|
6552
|
+
rxjs.filter((context) => !!context && !context.state.loading),
|
6553
|
+
rxjs.pairwise(),
|
6554
|
+
rxjs.map(
|
6555
|
+
([prevContext, newContext]) => {
|
6556
|
+
var _a, _b;
|
6557
|
+
return [(_a = prevContext == null ? void 0 : prevContext.state.value) != null ? _a : [], (_b = newContext == null ? void 0 : newContext.state.value) != null ? _b : []];
|
6558
|
+
}
|
6559
|
+
),
|
6560
|
+
rxjs.filter(([prevScopes, newScopes]) => !lodash.isEqual(prevScopes, newScopes))
|
6561
|
+
).subscribe(([prevScopes, newScopes]) => {
|
6562
|
+
cb(newScopes, prevScopes);
|
6563
|
+
});
|
6564
|
+
}
|
6565
|
+
isLoading() {
|
6566
|
+
var _a, _b;
|
6567
|
+
return (_b = (_a = this.context) == null ? void 0 : _a.state.loading) != null ? _b : false;
|
6568
|
+
}
|
6569
|
+
subscribeToLoading(cb) {
|
6570
|
+
return this.contextObservable.pipe(
|
6571
|
+
rxjs.filter((context) => !!context),
|
6572
|
+
rxjs.pairwise(),
|
6573
|
+
rxjs.map(
|
6574
|
+
([prevContext, newContext]) => {
|
6575
|
+
var _a, _b;
|
6576
|
+
return [(_a = prevContext == null ? void 0 : prevContext.state.loading) != null ? _a : false, (_b = newContext == null ? void 0 : newContext.state.loading) != null ? _b : false];
|
6577
|
+
}
|
6578
|
+
),
|
6579
|
+
rxjs.filter(([prevLoading, newLoading]) => prevLoading !== newLoading)
|
6580
|
+
).subscribe(([_prevLoading, newLoading]) => {
|
6581
|
+
cb(newLoading);
|
6582
|
+
});
|
6583
|
+
}
|
6584
|
+
setEnabled(enabled) {
|
6585
|
+
var _a;
|
6586
|
+
(_a = this.context) == null ? void 0 : _a.setEnabled(enabled);
|
6587
|
+
}
|
6588
|
+
setReadOnly(readOnly) {
|
6589
|
+
var _a;
|
6590
|
+
(_a = this.context) == null ? void 0 : _a.setReadOnly(readOnly);
|
6591
|
+
}
|
6592
|
+
updateContext(newContext) {
|
6593
|
+
var _a, _b;
|
6594
|
+
if (this._pendingScopes && newContext) {
|
6595
|
+
setTimeout(() => {
|
6596
|
+
newContext == null ? void 0 : newContext.changeScopes(this._pendingScopes);
|
6597
|
+
this._pendingScopes = null;
|
6598
|
+
});
|
6599
|
+
}
|
6600
|
+
if (this.context !== newContext || ((_a = this.context) == null ? void 0 : _a.state) !== (newContext == null ? void 0 : newContext.state)) {
|
6601
|
+
const shouldUpdate = ((_b = this.context) == null ? void 0 : _b.state.value) !== (newContext == null ? void 0 : newContext.state.value);
|
6602
|
+
this._contextSubject.next(newContext);
|
6603
|
+
if (shouldUpdate) {
|
6604
|
+
this.forceRender();
|
6605
|
+
}
|
6606
|
+
}
|
6607
|
+
}
|
6608
|
+
get context() {
|
6609
|
+
return this._contextSubject.getValue();
|
6610
|
+
}
|
6611
|
+
get contextObservable() {
|
6612
|
+
return this._contextSubject.asObservable();
|
6613
|
+
}
|
6614
|
+
}
|
6615
|
+
SceneScopesBridge.Component = SceneScopesBridgeRenderer;
|
6616
|
+
function SceneScopesBridgeRenderer({ model }) {
|
6617
|
+
const context = runtime.useScopes();
|
6618
|
+
React.useEffect(() => {
|
6619
|
+
model.updateContext(context);
|
6620
|
+
}, [context, model]);
|
6621
|
+
return null;
|
6622
|
+
}
|
6623
|
+
|
6489
6624
|
function getVariables(sceneObject) {
|
6490
6625
|
var _a;
|
6491
6626
|
return (_a = getClosest(sceneObject, (s) => s.state.$variables)) != null ? _a : EmptyVariableSet;
|
@@ -6653,6 +6788,10 @@ function getUrlSyncManager(sceneObject) {
|
|
6653
6788
|
}
|
6654
6789
|
return void 0;
|
6655
6790
|
}
|
6791
|
+
function getScopesBridge(sceneObject) {
|
6792
|
+
var _a;
|
6793
|
+
return (_a = findObject(sceneObject, (s) => s instanceof SceneScopesBridge)) != null ? _a : void 0;
|
6794
|
+
}
|
6656
6795
|
|
6657
6796
|
const sceneGraph = {
|
6658
6797
|
getVariables,
|
@@ -6670,7 +6809,8 @@ const sceneGraph = {
|
|
6670
6809
|
getAncestor,
|
6671
6810
|
findDescendents,
|
6672
6811
|
getQueryController,
|
6673
|
-
getUrlSyncManager
|
6812
|
+
getUrlSyncManager,
|
6813
|
+
getScopesBridge
|
6674
6814
|
};
|
6675
6815
|
|
6676
6816
|
class UniqueUrlKeyMapper {
|
@@ -12355,6 +12495,10 @@ class SplitLayout extends SceneObjectBase {
|
|
12355
12495
|
SplitLayout.Component = SplitLayoutRenderer;
|
12356
12496
|
|
12357
12497
|
class SceneApp extends SceneObjectBase {
|
12498
|
+
constructor() {
|
12499
|
+
super(...arguments);
|
12500
|
+
this._renderBeforeActivation = true;
|
12501
|
+
}
|
12358
12502
|
enrichDataRequest() {
|
12359
12503
|
return {
|
12360
12504
|
app: this.state.name || "app"
|
@@ -12362,15 +12506,17 @@ class SceneApp extends SceneObjectBase {
|
|
12362
12506
|
}
|
12363
12507
|
}
|
12364
12508
|
SceneApp.Component = ({ model }) => {
|
12365
|
-
const { pages } = model.useState();
|
12366
|
-
return /* @__PURE__ */ React__default["default"].createElement(
|
12509
|
+
const { pages, scopesBridge } = model.useState();
|
12510
|
+
return /* @__PURE__ */ React__default["default"].createElement(React__default["default"].Fragment, null, scopesBridge && /* @__PURE__ */ React__default["default"].createElement(scopesBridge.Component, {
|
12511
|
+
model: scopesBridge
|
12512
|
+
}), /* @__PURE__ */ React__default["default"].createElement(SceneAppContext.Provider, {
|
12367
12513
|
value: model
|
12368
12514
|
}, /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Switch, null, pages.map((page) => /* @__PURE__ */ React__default["default"].createElement(reactRouterDom.Route, {
|
12369
12515
|
key: page.state.url,
|
12370
12516
|
exact: false,
|
12371
12517
|
path: page.state.url,
|
12372
12518
|
render: (props) => renderSceneComponentWithRouteProps(page, props)
|
12373
|
-
}))));
|
12519
|
+
})))));
|
12374
12520
|
};
|
12375
12521
|
const SceneAppContext = React.createContext(null);
|
12376
12522
|
const sceneAppCache = /* @__PURE__ */ new Map();
|
@@ -12720,6 +12866,21 @@ class SceneAppPage extends SceneObjectBase {
|
|
12720
12866
|
super(state);
|
12721
12867
|
this._sceneCache = /* @__PURE__ */ new Map();
|
12722
12868
|
this._drilldownCache = /* @__PURE__ */ new Map();
|
12869
|
+
this._activationHandler = () => {
|
12870
|
+
if (!this.state.useScopes) {
|
12871
|
+
return;
|
12872
|
+
}
|
12873
|
+
this._scopesBridge = sceneGraph.getScopesBridge(this);
|
12874
|
+
if (!this._scopesBridge) {
|
12875
|
+
throw new Error("Use of scopes is enabled but no scopes bridge found");
|
12876
|
+
}
|
12877
|
+
this._scopesBridge.setEnabled(true);
|
12878
|
+
return () => {
|
12879
|
+
var _a;
|
12880
|
+
(_a = this._scopesBridge) == null ? void 0 : _a.setEnabled(false);
|
12881
|
+
};
|
12882
|
+
};
|
12883
|
+
this.addActivationHandler(this._activationHandler);
|
12723
12884
|
}
|
12724
12885
|
initializeScene(scene) {
|
12725
12886
|
this.setState({ initializedScene: scene });
|
@@ -13729,6 +13890,7 @@ exports.SceneObjectUrlSyncConfig = SceneObjectUrlSyncConfig;
|
|
13729
13890
|
exports.SceneQueryRunner = SceneQueryRunner;
|
13730
13891
|
exports.SceneReactObject = SceneReactObject;
|
13731
13892
|
exports.SceneRefreshPicker = SceneRefreshPicker;
|
13893
|
+
exports.SceneScopesBridge = SceneScopesBridge;
|
13732
13894
|
exports.SceneTimePicker = SceneTimePicker;
|
13733
13895
|
exports.SceneTimeRange = SceneTimeRange;
|
13734
13896
|
exports.SceneTimeRangeCompare = SceneTimeRangeCompare;
|