@grafana/scenes 6.50.0--canary.1312.20228210142.0 → 6.50.0--canary.1315.20233534152.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/packages/scenes/src/index.js +1 -1
- package/dist/esm/packages/scenes/src/index.js.map +1 -1
- package/dist/esm/packages/scenes/src/locales/en-US/grafana-scenes.json.js +0 -7
- package/dist/esm/packages/scenes/src/locales/en-US/grafana-scenes.json.js.map +1 -1
- package/dist/esm/packages/scenes/src/variables/DrilldownDependenciesManager.js.map +1 -1
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +1 -21
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersVariable.js +6 -95
- package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
- package/dist/esm/packages/scenes/src/variables/adhoc/controller/AdHocFiltersVariableController.js +1 -7
- package/dist/esm/packages/scenes/src/variables/adhoc/controller/AdHocFiltersVariableController.js.map +1 -1
- package/dist/esm/packages/scenes/src/variables/groupby/GroupByVariable.js +8 -163
- package/dist/esm/packages/scenes/src/variables/groupby/GroupByVariable.js.map +1 -1
- package/dist/esm/packages/scenes/src/variables/types.js.map +1 -1
- package/dist/{grafana-scenes-C9F_2hih.js → grafana-scenes-D5iZGLtK.js} +1 -8
- package/dist/{grafana-scenes-C9F_2hih.js.map → grafana-scenes-D5iZGLtK.js.map} +1 -1
- package/dist/index.d.ts +9 -60
- package/dist/index.js +4539 -4896
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/esm/packages/scenes/src/variables/components/DrilldownRecommendations.js +0 -102
- package/dist/esm/packages/scenes/src/variables/components/DrilldownRecommendations.js.map +0 -1
|
@@ -9,7 +9,7 @@ export { PATH_ID_SEPARATOR } from './utils/pathId.js';
|
|
|
9
9
|
import { isRepeatCloneOrChildOf } from './utils/utils.js';
|
|
10
10
|
import { registerVariableMacro } from './variables/macros/index.js';
|
|
11
11
|
import { escapeURLDelimiters, escapeLabelValueInExactSelector, escapeLabelValueInRegexSelector, renderPrometheusLabelFilters } from './variables/utils.js';
|
|
12
|
-
export { escapeUrlPipeDelimiters
|
|
12
|
+
export { escapeUrlPipeDelimiters } from './variables/utils.js';
|
|
13
13
|
import { isSwitchVariable, isGroupByVariable, isTextBoxVariable, isQueryVariable, isIntervalVariable, isDataSourceVariable, isCustomVariable, isConstantVariable, isAdHocVariable } from './variables/variants/guards.js';
|
|
14
14
|
export { isDataLayer, isDataRequestEnricher, isFiltersRequestEnricher, isSceneObject } from './core/types.js';
|
|
15
15
|
export { SceneObjectStateChangedEvent, UserActionEvent } from './core/events.js';
|
|
@@ -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/cloneSceneObject';\nimport { registerRuntimeDataSource } from './querying/RuntimeDataSource';\nimport { getUrlState, syncStateFromSearchParams } from './services/utils';\nimport { buildPathIdFor } from './utils/pathId';\nimport { isRepeatCloneOrChildOf } from './utils/utils';\n\nimport { registerVariableMacro } from './variables/macros';\nimport {\n escapeLabelValueInExactSelector,\n escapeLabelValueInRegexSelector,\n escapeURLDelimiters,\n renderPrometheusLabelFilters,\n} from './variables/utils';\nimport {\n isAdHocVariable,\n isQueryVariable,\n isTextBoxVariable,\n isCustomVariable,\n isDataSourceVariable,\n isConstantVariable,\n isIntervalVariable,\n isGroupByVariable,\n isSwitchVariable,\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 performanceUtils from './performance';\nexport { writePerformanceLog } from './utils/writePerformanceLog';\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/types';\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 { SwitchVariable } from './variables/variants/SwitchVariable';\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 { ScopesVariable } from './variables/variants/ScopesVariable';\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 type { AdHocFilterWithLabels } from './variables/adhoc/AdHocFiltersVariable';\nexport type {\n AdHocFiltersController,\n AdHocFiltersControllerState,\n} from './variables/adhoc/controller/AdHocFiltersController';\nexport { AdHocFiltersVariableController } from './variables/adhoc/controller/AdHocFiltersVariableController';\nexport { AdHocFiltersComboboxRenderer } from './variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer';\nexport { GroupByVariable } from './variables/groupby/GroupByVariable';\nexport { type MacroVariableConstructor } from './variables/macros/types';\nexport { escapeUrlPipeDelimiters
|
|
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/cloneSceneObject';\nimport { registerRuntimeDataSource } from './querying/RuntimeDataSource';\nimport { getUrlState, syncStateFromSearchParams } from './services/utils';\nimport { buildPathIdFor } from './utils/pathId';\nimport { isRepeatCloneOrChildOf } from './utils/utils';\n\nimport { registerVariableMacro } from './variables/macros';\nimport {\n escapeLabelValueInExactSelector,\n escapeLabelValueInRegexSelector,\n escapeURLDelimiters,\n renderPrometheusLabelFilters,\n} from './variables/utils';\nimport {\n isAdHocVariable,\n isQueryVariable,\n isTextBoxVariable,\n isCustomVariable,\n isDataSourceVariable,\n isConstantVariable,\n isIntervalVariable,\n isGroupByVariable,\n isSwitchVariable,\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 performanceUtils from './performance';\nexport { writePerformanceLog } from './utils/writePerformanceLog';\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/types';\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 { SwitchVariable } from './variables/variants/SwitchVariable';\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 { ScopesVariable } from './variables/variants/ScopesVariable';\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 type { AdHocFilterWithLabels } from './variables/adhoc/AdHocFiltersVariable';\nexport type {\n AdHocFiltersController,\n AdHocFiltersControllerState,\n} from './variables/adhoc/controller/AdHocFiltersController';\nexport { AdHocFiltersVariableController } from './variables/adhoc/controller/AdHocFiltersVariableController';\nexport { AdHocFiltersComboboxRenderer } from './variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer';\nexport { GroupByVariable } from './variables/groupby/GroupByVariable';\nexport { type MacroVariableConstructor } from './variables/macros/types';\nexport { escapeUrlPipeDelimiters } from './variables/utils';\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 { SceneGridLayoutDragStartEvent } from './components/layout/grid/types';\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 { LazyLoader } from './components/layout/LazyLoader';\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 { MultiOrSingleValueSelect } 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 escapeLabelValueInRegexSelector,\n escapeLabelValueInExactSelector,\n escapeURLDelimiters,\n\n // Variable guards\n isAdHocVariable,\n isConstantVariable,\n isCustomVariable,\n isDataSourceVariable,\n isIntervalVariable,\n isQueryVariable,\n isTextBoxVariable,\n isGroupByVariable,\n isSwitchVariable,\n isRepeatCloneOrChildOf,\n buildPathIdFor,\n};\n\nexport { SafeSerializableSceneObject } from './utils/SafeSerializableSceneObject';\nexport { getExploreURL } from './utils/explore';\nexport { loadResources } from './utils/loadResources';\nexport { PATH_ID_SEPARATOR } from './utils/pathId';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwJO,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,EACA,+BAAA;AAAA,EACA,+BAAA;AAAA,EACA,mBAAA;AAAA;AAAA,EAGA,eAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,oBAAA;AAAA,EACA,kBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,gBAAA;AAAA,EACA,sBAAA;AAAA,EACA;AACF;;;;"}
|
|
@@ -11,13 +11,6 @@ var grafanaScenes = {
|
|
|
11
11
|
"remove-filter-value": "Remove filter value - {{itemLabel}}",
|
|
12
12
|
"use-custom-value": "Use custom value: {{itemLabel}}"
|
|
13
13
|
},
|
|
14
|
-
"drilldown-recommendations": {
|
|
15
|
-
recent: "Recent",
|
|
16
|
-
"recent-empty": "No recent values",
|
|
17
|
-
recommended: "Recommended",
|
|
18
|
-
"recommended-empty": "No recommended values",
|
|
19
|
-
tooltip: "Show recommendations"
|
|
20
|
-
},
|
|
21
14
|
"fallback-page": {
|
|
22
15
|
content: "If you found your way here using a link then there might be a bug in this application.",
|
|
23
16
|
subTitle: "The url did not match any page",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grafana-scenes.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grafana-scenes.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrilldownDependenciesManager.js","sources":["../../../../../../src/variables/DrilldownDependenciesManager.ts"],"sourcesContent":["import { findActiveAdHocFilterVariableByUid } from '../variables/adhoc/patchGetAdhocFilters';\nimport { findActiveGroupByVariablesByUid } from '../variables/groupby/findActiveGroupByVariablesByUid';\nimport { GroupByVariable } from '../variables/groupby/GroupByVariable';\nimport {\n AdHocFilterWithLabels,\n AdHocFiltersVariable,\n isFilterApplicable,\n isFilterComplete,\n} from '../variables/adhoc/AdHocFiltersVariable';\nimport { VariableDependencyConfig } from '../variables/VariableDependencyConfig';\nimport { SceneObjectState } from '../core/types';\n\n/**\n * Manages ad-hoc filters and group-by variables for data providers\n */\nexport class DrilldownDependenciesManager<TState extends SceneObjectState> {\n private _adhocFiltersVar?: AdHocFiltersVariable;\n private _groupByVar?: GroupByVariable;\n private _variableDependency: VariableDependencyConfig<TState>;\n\n public constructor(variableDependency: VariableDependencyConfig<TState>) {\n this._variableDependency = variableDependency;\n }\n\n /**\n * Walk up scene graph and find the closest filterset with matching data source\n */\n public findAndSubscribeToDrilldowns(interpolatedUid: string | undefined) {\n const filtersVar = findActiveAdHocFilterVariableByUid(interpolatedUid);\n const groupByVar = findActiveGroupByVariablesByUid(interpolatedUid);\n\n let hasChanges = false;\n\n if (this._adhocFiltersVar !== filtersVar) {\n this._adhocFiltersVar = filtersVar;\n hasChanges = true;\n }\n\n if (this._groupByVar !== groupByVar) {\n this._groupByVar = groupByVar;\n hasChanges = true;\n }\n\n if (hasChanges) {\n this._updateExplicitDrilldownVariableDependencies();\n }\n }\n\n private _updateExplicitDrilldownVariableDependencies(): void {\n const explicitDependencies: string[] = [];\n\n if (this._adhocFiltersVar) {\n explicitDependencies.push(this._adhocFiltersVar.state.name);\n }\n\n if (this._groupByVar) {\n explicitDependencies.push(this._groupByVar.state.name);\n }\n\n this._variableDependency.setVariableNames(explicitDependencies);\n }\n\n public get adHocFiltersVar(): AdHocFiltersVariable | undefined {\n return this._adhocFiltersVar;\n }\n\n public get groupByVar(): GroupByVariable | undefined {\n return this._groupByVar;\n }\n\n public getFilters(): AdHocFilterWithLabels[] | undefined {\n return this._adhocFiltersVar\n ? [...(this._adhocFiltersVar.state.originFilters ?? []), ...this._adhocFiltersVar.state.filters].filter(\n (f) => isFilterComplete(f) && isFilterApplicable(f)\n )\n : undefined;\n }\n\n public getGroupByKeys(): string[] | undefined {\n return this._groupByVar ? this._groupByVar.getApplicableKeys() : undefined;\n }\n\n public cleanup(): void {\n this._adhocFiltersVar = undefined;\n this._groupByVar = undefined;\n }\n}\n"],"names":[],"mappings":";;;;AAeO,MAAM,4BAA8D,CAAA;AAAA,EAKlE,YAAY,kBAAsD,EAAA;AACvE,IAAA,IAAA,CAAK,mBAAsB,GAAA,kBAAA;AAAA;AAC7B;AAAA;AAAA;AAAA,EAKO,6BAA6B,eAAqC,EAAA;AACvE,IAAM,MAAA,UAAA,GAAa,mCAAmC,eAAe,CAAA;AACrE,IAAM,MAAA,UAAA,GAAa,gCAAgC,eAAe,CAAA;AAElE,IAAA,IAAI,UAAa,GAAA,KAAA;AAEjB,IAAI,IAAA,IAAA,CAAK,qBAAqB,UAAY,EAAA;AACxC,MAAA,IAAA,CAAK,gBAAmB,GAAA,UAAA;AACxB,MAAa,UAAA,GAAA,IAAA;AAAA;AAGf,IAAI,IAAA,IAAA,CAAK,gBAAgB,UAAY,EAAA;AACnC,MAAA,IAAA,CAAK,WAAc,GAAA,UAAA;AACnB,MAAa,UAAA,GAAA,IAAA;AAAA;AAGf,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,IAAA,CAAK,4CAA6C,EAAA;AAAA;AACpD;AACF,EAEQ,4CAAqD,GAAA;AAC3D,IAAA,MAAM,uBAAiC,EAAC;AAExC,IAAA,IAAI,KAAK,gBAAkB,EAAA;AACzB,MAAA,oBAAA,CAAqB,IAAK,CAAA,IAAA,CAAK,gBAAiB,CAAA,KAAA,CAAM,IAAI,CAAA;AAAA;AAG5D,IAAA,IAAI,KAAK,WAAa,EAAA;AACpB,MAAA,oBAAA,CAAqB,IAAK,CAAA,IAAA,CAAK,WAAY,CAAA,KAAA,CAAM,IAAI,CAAA;AAAA;AAGvD,IAAK,IAAA,CAAA,mBAAA,CAAoB,iBAAiB,oBAAoB,CAAA;AAAA;AAChE,EAEA,IAAW,eAAoD,GAAA;AAC7D,IAAA,OAAO,IAAK,CAAA,gBAAA;AAAA;AACd,EAEA,IAAW,UAA0C,GAAA;AACnD,IAAA,OAAO,IAAK,CAAA,WAAA;AAAA;AACd,EAEO,UAAkD,GAAA;AAtE3D,IAAA,IAAA,EAAA;AAuEI,IAAA,OAAO,KAAK,gBACR,GAAA,CAAC,GAAI,CAAA,EAAA,GAAA,IAAA,CAAK,iBAAiB,KAAM,CAAA,aAAA,KAA5B,IAA6C,GAAA,EAAA,GAAA,IAAK,GAAG,IAAA,CAAK,gBAAiB,CAAA,KAAA,CAAM,OAAO,CAAE,CAAA,MAAA;AAAA,MAC7F,CAAC,CAAM,KAAA,gBAAA,CAAiB,CAAC,CAAA,IAAK,mBAAmB,CAAC;AAAA,KAEpD,GAAA,MAAA;AAAA;AACN,EAEO,cAAuC,GAAA;AAC5C,IAAA,OAAO,IAAK,CAAA,WAAA,
|
|
1
|
+
{"version":3,"file":"DrilldownDependenciesManager.js","sources":["../../../../../../src/variables/DrilldownDependenciesManager.ts"],"sourcesContent":["import { findActiveAdHocFilterVariableByUid } from '../variables/adhoc/patchGetAdhocFilters';\nimport { findActiveGroupByVariablesByUid } from '../variables/groupby/findActiveGroupByVariablesByUid';\nimport { GroupByVariable } from '../variables/groupby/GroupByVariable';\nimport {\n AdHocFilterWithLabels,\n AdHocFiltersVariable,\n isFilterApplicable,\n isFilterComplete,\n} from '../variables/adhoc/AdHocFiltersVariable';\nimport { VariableDependencyConfig } from '../variables/VariableDependencyConfig';\nimport { SceneObjectState } from '../core/types';\n\n/**\n * Manages ad-hoc filters and group-by variables for data providers\n */\nexport class DrilldownDependenciesManager<TState extends SceneObjectState> {\n private _adhocFiltersVar?: AdHocFiltersVariable;\n private _groupByVar?: GroupByVariable;\n private _variableDependency: VariableDependencyConfig<TState>;\n\n public constructor(variableDependency: VariableDependencyConfig<TState>) {\n this._variableDependency = variableDependency;\n }\n\n /**\n * Walk up scene graph and find the closest filterset with matching data source\n */\n public findAndSubscribeToDrilldowns(interpolatedUid: string | undefined) {\n const filtersVar = findActiveAdHocFilterVariableByUid(interpolatedUid);\n const groupByVar = findActiveGroupByVariablesByUid(interpolatedUid);\n\n let hasChanges = false;\n\n if (this._adhocFiltersVar !== filtersVar) {\n this._adhocFiltersVar = filtersVar;\n hasChanges = true;\n }\n\n if (this._groupByVar !== groupByVar) {\n this._groupByVar = groupByVar;\n hasChanges = true;\n }\n\n if (hasChanges) {\n this._updateExplicitDrilldownVariableDependencies();\n }\n }\n\n private _updateExplicitDrilldownVariableDependencies(): void {\n const explicitDependencies: string[] = [];\n\n if (this._adhocFiltersVar) {\n explicitDependencies.push(this._adhocFiltersVar.state.name);\n }\n\n if (this._groupByVar) {\n explicitDependencies.push(this._groupByVar.state.name);\n }\n\n this._variableDependency.setVariableNames(explicitDependencies);\n }\n\n public get adHocFiltersVar(): AdHocFiltersVariable | undefined {\n return this._adhocFiltersVar;\n }\n\n public get groupByVar(): GroupByVariable | undefined {\n return this._groupByVar;\n }\n\n public getFilters(): AdHocFilterWithLabels[] | undefined {\n return this._adhocFiltersVar\n ? [...(this._adhocFiltersVar.state.originFilters ?? []), ...this._adhocFiltersVar.state.filters].filter(\n (f) => isFilterComplete(f) && isFilterApplicable(f)\n )\n : undefined;\n }\n\n public getGroupByKeys(): string[] | undefined {\n return this._groupByVar ? (this._groupByVar.getApplicableKeys() as string[]) : undefined;\n }\n\n public cleanup(): void {\n this._adhocFiltersVar = undefined;\n this._groupByVar = undefined;\n }\n}\n"],"names":[],"mappings":";;;;AAeO,MAAM,4BAA8D,CAAA;AAAA,EAKlE,YAAY,kBAAsD,EAAA;AACvE,IAAA,IAAA,CAAK,mBAAsB,GAAA,kBAAA;AAAA;AAC7B;AAAA;AAAA;AAAA,EAKO,6BAA6B,eAAqC,EAAA;AACvE,IAAM,MAAA,UAAA,GAAa,mCAAmC,eAAe,CAAA;AACrE,IAAM,MAAA,UAAA,GAAa,gCAAgC,eAAe,CAAA;AAElE,IAAA,IAAI,UAAa,GAAA,KAAA;AAEjB,IAAI,IAAA,IAAA,CAAK,qBAAqB,UAAY,EAAA;AACxC,MAAA,IAAA,CAAK,gBAAmB,GAAA,UAAA;AACxB,MAAa,UAAA,GAAA,IAAA;AAAA;AAGf,IAAI,IAAA,IAAA,CAAK,gBAAgB,UAAY,EAAA;AACnC,MAAA,IAAA,CAAK,WAAc,GAAA,UAAA;AACnB,MAAa,UAAA,GAAA,IAAA;AAAA;AAGf,IAAA,IAAI,UAAY,EAAA;AACd,MAAA,IAAA,CAAK,4CAA6C,EAAA;AAAA;AACpD;AACF,EAEQ,4CAAqD,GAAA;AAC3D,IAAA,MAAM,uBAAiC,EAAC;AAExC,IAAA,IAAI,KAAK,gBAAkB,EAAA;AACzB,MAAA,oBAAA,CAAqB,IAAK,CAAA,IAAA,CAAK,gBAAiB,CAAA,KAAA,CAAM,IAAI,CAAA;AAAA;AAG5D,IAAA,IAAI,KAAK,WAAa,EAAA;AACpB,MAAA,oBAAA,CAAqB,IAAK,CAAA,IAAA,CAAK,WAAY,CAAA,KAAA,CAAM,IAAI,CAAA;AAAA;AAGvD,IAAK,IAAA,CAAA,mBAAA,CAAoB,iBAAiB,oBAAoB,CAAA;AAAA;AAChE,EAEA,IAAW,eAAoD,GAAA;AAC7D,IAAA,OAAO,IAAK,CAAA,gBAAA;AAAA;AACd,EAEA,IAAW,UAA0C,GAAA;AACnD,IAAA,OAAO,IAAK,CAAA,WAAA;AAAA;AACd,EAEO,UAAkD,GAAA;AAtE3D,IAAA,IAAA,EAAA;AAuEI,IAAA,OAAO,KAAK,gBACR,GAAA,CAAC,GAAI,CAAA,EAAA,GAAA,IAAA,CAAK,iBAAiB,KAAM,CAAA,aAAA,KAA5B,IAA6C,GAAA,EAAA,GAAA,IAAK,GAAG,IAAA,CAAK,gBAAiB,CAAA,KAAA,CAAM,OAAO,CAAE,CAAA,MAAA;AAAA,MAC7F,CAAC,CAAM,KAAA,gBAAA,CAAiB,CAAC,CAAA,IAAK,mBAAmB,CAAC;AAAA,KAEpD,GAAA,MAAA;AAAA;AACN,EAEO,cAAuC,GAAA;AAC5C,IAAA,OAAO,IAAK,CAAA,WAAA,GAAe,IAAK,CAAA,WAAA,CAAY,mBAAmC,GAAA,MAAA;AAAA;AACjF,EAEO,OAAgB,GAAA;AACrB,IAAA,IAAA,CAAK,gBAAmB,GAAA,MAAA;AACxB,IAAA,IAAA,CAAK,WAAc,GAAA,MAAA;AAAA;AAEvB;;;;"}
|
|
@@ -3,29 +3,10 @@ import { useStyles2, Icon } from '@grafana/ui';
|
|
|
3
3
|
import React, { memo, useRef } from 'react';
|
|
4
4
|
import { AdHocFilterPill } from './AdHocFilterPill.js';
|
|
5
5
|
import { AdHocFiltersAlwaysWipCombobox } from './AdHocFiltersAlwaysWipCombobox.js';
|
|
6
|
-
import { DrilldownRecommendations } from '../../components/DrilldownRecommendations.js';
|
|
7
6
|
|
|
8
7
|
const AdHocFiltersComboboxRenderer = memo(function AdHocFiltersComboboxRenderer2({ controller }) {
|
|
9
|
-
const { originFilters, filters, readOnly
|
|
8
|
+
const { originFilters, filters, readOnly } = controller.useState();
|
|
10
9
|
const styles = useStyles2(getStyles);
|
|
11
|
-
let drilldownRecommendationComponent = null;
|
|
12
|
-
if (drilldownRecommendationsEnabled) {
|
|
13
|
-
const recentDrilldowns = recentFilters == null ? void 0 : recentFilters.map((filter) => ({
|
|
14
|
-
label: `${filter.key} ${filter.operator} ${filter.value}`,
|
|
15
|
-
onClick: () => {
|
|
16
|
-
var _a;
|
|
17
|
-
(_a = controller.updateFilters) == null ? void 0 : _a.call(controller, [...filters, filter]);
|
|
18
|
-
}
|
|
19
|
-
}));
|
|
20
|
-
const recommendedDrilldowns = recommendedFilters == null ? void 0 : recommendedFilters.map((filter) => ({
|
|
21
|
-
label: `${filter.key} ${filter.operator} ${filter.value}`,
|
|
22
|
-
onClick: () => {
|
|
23
|
-
var _a;
|
|
24
|
-
(_a = controller.updateFilters) == null ? void 0 : _a.call(controller, [...filters, filter]);
|
|
25
|
-
}
|
|
26
|
-
}));
|
|
27
|
-
drilldownRecommendationComponent = /* @__PURE__ */ React.createElement(DrilldownRecommendations, { recentDrilldowns, recommendedDrilldowns });
|
|
28
|
-
}
|
|
29
10
|
const focusOnWipInputRef = useRef();
|
|
30
11
|
return /* @__PURE__ */ React.createElement(
|
|
31
12
|
"div",
|
|
@@ -37,7 +18,6 @@ const AdHocFiltersComboboxRenderer = memo(function AdHocFiltersComboboxRenderer2
|
|
|
37
18
|
}
|
|
38
19
|
},
|
|
39
20
|
/* @__PURE__ */ React.createElement(Icon, { name: "filter", className: styles.filterIcon, size: "lg" }),
|
|
40
|
-
drilldownRecommendationComponent,
|
|
41
21
|
originFilters == null ? void 0 : originFilters.map(
|
|
42
22
|
(filter, index) => filter.origin ? /* @__PURE__ */ React.createElement(
|
|
43
23
|
AdHocFilterPill,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdHocFiltersComboboxRenderer.js","sources":["../../../../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Icon, useStyles2 } from '@grafana/ui';\nimport React, { memo, useRef } from 'react';\nimport { AdHocFiltersController } from '../controller/AdHocFiltersController';\nimport { AdHocFilterPill } from './AdHocFilterPill';\nimport { AdHocFiltersAlwaysWipCombobox } from './AdHocFiltersAlwaysWipCombobox';\
|
|
1
|
+
{"version":3,"file":"AdHocFiltersComboboxRenderer.js","sources":["../../../../../../../../src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.tsx"],"sourcesContent":["import { css, cx } from '@emotion/css';\nimport { GrafanaTheme2 } from '@grafana/data';\nimport { Icon, useStyles2 } from '@grafana/ui';\nimport React, { memo, useRef } from 'react';\nimport { AdHocFiltersController } from '../controller/AdHocFiltersController';\nimport { AdHocFilterPill } from './AdHocFilterPill';\nimport { AdHocFiltersAlwaysWipCombobox } from './AdHocFiltersAlwaysWipCombobox';\n\ninterface Props {\n controller: AdHocFiltersController;\n}\n\nexport const AdHocFiltersComboboxRenderer = memo(function AdHocFiltersComboboxRenderer({ controller }: Props) {\n const { originFilters, filters, readOnly } = controller.useState();\n const styles = useStyles2(getStyles);\n\n // ref that focuses on the always wip filter input\n // defined in the combobox component via useImperativeHandle\n const focusOnWipInputRef = useRef<() => void>();\n\n return (\n <div\n className={cx(styles.comboboxWrapper, { [styles.comboboxFocusOutline]: !readOnly })}\n onClick={() => {\n focusOnWipInputRef.current?.();\n }}\n >\n <Icon name=\"filter\" className={styles.filterIcon} size=\"lg\" />\n\n {originFilters?.map((filter, index) =>\n filter.origin ? (\n <AdHocFilterPill\n key={`${index}-${filter.key}`}\n filter={filter}\n controller={controller}\n focusOnWipInputRef={focusOnWipInputRef.current}\n />\n ) : null\n )}\n\n {filters\n .filter((filter) => !filter.hidden)\n .map((filter, index) => (\n <AdHocFilterPill\n key={`${index}-${filter.key}`}\n filter={filter}\n controller={controller}\n readOnly={readOnly || filter.readOnly}\n focusOnWipInputRef={focusOnWipInputRef.current}\n />\n ))}\n\n {!readOnly ? <AdHocFiltersAlwaysWipCombobox controller={controller} ref={focusOnWipInputRef} /> : null}\n </div>\n );\n});\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n comboboxWrapper: css({\n display: 'flex',\n flexWrap: 'wrap',\n alignItems: 'center',\n columnGap: theme.spacing(1),\n rowGap: theme.spacing(0.5),\n minHeight: theme.spacing(4),\n backgroundColor: theme.components.input.background,\n border: `1px solid ${theme.colors.border.strong}`,\n borderRadius: theme.shape.radius.default,\n paddingInline: theme.spacing(1),\n paddingBlock: theme.spacing(0.5),\n flexGrow: 1,\n }),\n comboboxFocusOutline: css({\n '&:focus-within': {\n outline: '2px dotted transparent',\n outlineOffset: '2px',\n boxShadow: `0 0 0 2px ${theme.colors.background.canvas}, 0 0 0px 4px ${theme.colors.primary.main}`,\n transitionTimingFunction: `cubic-bezier(0.19, 1, 0.22, 1)`,\n transitionDuration: '0.2s',\n transitionProperty: 'outline, outline-offset, box-shadow',\n zIndex: 2,\n },\n }),\n filterIcon: css({\n color: theme.colors.text.secondary,\n alignSelf: 'center',\n }),\n});\n"],"names":["AdHocFiltersComboboxRenderer"],"mappings":"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"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import React, { useMemo } from 'react';
|
|
2
|
-
import { store } from '@grafana/data';
|
|
3
2
|
import { SceneObjectBase } from '../../core/SceneObjectBase.js';
|
|
4
3
|
import { SceneVariableValueChangedEvent } from '../types.js';
|
|
5
|
-
import {
|
|
4
|
+
import { escapeOriginFilterUrlDelimiters, getQueriesForVariables, dataFromResponse, responseHasError, renderPrometheusLabelFilters } from '../utils.js';
|
|
6
5
|
import { patchGetAdhocFilters } from './patchGetAdhocFilters.js';
|
|
7
6
|
import { useStyles2 } from '@grafana/ui';
|
|
8
7
|
import { sceneGraph } from '../../core/sceneGraph/index.js';
|
|
9
8
|
import { AdHocFilterBuilder } from './AdHocFilterBuilder.js';
|
|
10
9
|
import { AdHocFilterRenderer } from './AdHocFilterRenderer.js';
|
|
11
|
-
import { getDataSourceSrv
|
|
10
|
+
import { getDataSourceSrv } from '@grafana/runtime';
|
|
12
11
|
import { AdHocFiltersVariableUrlSyncHandler, toArray } from './AdHocFiltersVariableUrlSyncHandler.js';
|
|
13
12
|
import { css } from '@emotion/css';
|
|
14
13
|
import { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest.js';
|
|
15
|
-
import { getEnrichedDataRequest } from '../../querying/getEnrichedDataRequest.js';
|
|
16
14
|
import { AdHocFiltersComboboxRenderer } from './AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js';
|
|
17
15
|
import { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject.js';
|
|
18
16
|
import { debounce, isEqual } from 'lodash';
|
|
@@ -23,7 +21,6 @@ import { FILTER_RESTORED_INTERACTION, FILTER_REMOVED_INTERACTION } from '../../p
|
|
|
23
21
|
import { AdHocFiltersVariableController } from './controller/AdHocFiltersVariableController.js';
|
|
24
22
|
|
|
25
23
|
const ORIGIN_FILTERS_KEY = "originFilters";
|
|
26
|
-
const RECENT_FILTERS_KEY = "grafana.filters.recent";
|
|
27
24
|
const OPERATORS = [
|
|
28
25
|
{
|
|
29
26
|
value: "=",
|
|
@@ -89,7 +86,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
89
86
|
// to its original value if edited at some point
|
|
90
87
|
this._originalValues = /* @__PURE__ */ new Map();
|
|
91
88
|
this._prevScopes = [];
|
|
92
|
-
this._store = store;
|
|
93
89
|
/** Needed for scopes dependency */
|
|
94
90
|
this._variableDependency = new VariableDependencyConfig(this, {
|
|
95
91
|
dependsOnScopes: true,
|
|
@@ -99,16 +95,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
99
95
|
this._debouncedVerifyApplicability = debounce(this._verifyApplicability, 100);
|
|
100
96
|
this._activationHandler = () => {
|
|
101
97
|
this._debouncedVerifyApplicability();
|
|
102
|
-
if (this.state.drilldownRecommendationsEnabled) {
|
|
103
|
-
const json = this._store.get(RECENT_FILTERS_KEY);
|
|
104
|
-
const storedFilters = json ? JSON.parse(json) : [];
|
|
105
|
-
if (storedFilters.length > 0) {
|
|
106
|
-
this._verifyRecentFiltersApplicability(storedFilters);
|
|
107
|
-
} else {
|
|
108
|
-
this.setState({ _recentFilters: [] });
|
|
109
|
-
}
|
|
110
|
-
this._fetchRecommendedDrilldowns();
|
|
111
|
-
}
|
|
112
98
|
return () => {
|
|
113
99
|
var _a;
|
|
114
100
|
(_a = this.state.originFilters) == null ? void 0 : _a.forEach((filter) => {
|
|
@@ -131,34 +117,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
131
117
|
});
|
|
132
118
|
this.addActivationHandler(this._activationHandler);
|
|
133
119
|
}
|
|
134
|
-
async _fetchRecommendedDrilldowns() {
|
|
135
|
-
var _a;
|
|
136
|
-
const ds = await this._dataSourceSrv.get(this.state.datasource, this._scopedVars);
|
|
137
|
-
if (!ds || !ds.getRecommendedDrilldowns) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
|
|
141
|
-
const timeRange = sceneGraph.getTimeRange(this).state.value;
|
|
142
|
-
const scopes = sceneGraph.getScopes(this);
|
|
143
|
-
const filters = [...(_a = this.state.originFilters) != null ? _a : [], ...this.state.filters];
|
|
144
|
-
const enrichedRequest = getEnrichedDataRequest(this);
|
|
145
|
-
const dashboardUid = enrichedRequest == null ? void 0 : enrichedRequest.dashboardUID;
|
|
146
|
-
try {
|
|
147
|
-
const recommendedDrilldowns = await ds.getRecommendedDrilldowns({
|
|
148
|
-
timeRange,
|
|
149
|
-
dashboardUid,
|
|
150
|
-
queries: queries != null ? queries : [],
|
|
151
|
-
filters,
|
|
152
|
-
scopes,
|
|
153
|
-
loggedUser: config.bootData.user.login
|
|
154
|
-
});
|
|
155
|
-
if (recommendedDrilldowns == null ? void 0 : recommendedDrilldowns.filters) {
|
|
156
|
-
this.setRecommendedFilters(recommendedDrilldowns.filters);
|
|
157
|
-
}
|
|
158
|
-
} catch (error) {
|
|
159
|
-
console.error("Failed to fetch recommended drilldowns:", error);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
120
|
_updateScopesFilters() {
|
|
163
121
|
var _a, _b;
|
|
164
122
|
const scopes = sceneGraph.getScopes(this);
|
|
@@ -206,13 +164,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
206
164
|
this._prevScopes = scopes;
|
|
207
165
|
this._debouncedVerifyApplicability();
|
|
208
166
|
}
|
|
209
|
-
async verifyApplicabilityAndStoreRecentFilter(update) {
|
|
210
|
-
await this._verifyApplicability();
|
|
211
|
-
if (!this.state.drilldownRecommendationsEnabled) {
|
|
212
|
-
return;
|
|
213
|
-
}
|
|
214
|
-
this.storeRecentFilter(update);
|
|
215
|
-
}
|
|
216
167
|
setState(update) {
|
|
217
168
|
var _a, _b;
|
|
218
169
|
let filterExpressionChanged = false;
|
|
@@ -304,11 +255,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
304
255
|
}
|
|
305
256
|
if (filter === _wip) {
|
|
306
257
|
if ("value" in update && update["value"] !== "") {
|
|
307
|
-
this.setState({
|
|
308
|
-
|
|
309
|
-
_wip: void 0
|
|
310
|
-
});
|
|
311
|
-
this.verifyApplicabilityAndStoreRecentFilter({ ..._wip, ...update });
|
|
258
|
+
this.setState({ filters: [...filters, { ..._wip, ...update }], _wip: void 0 });
|
|
259
|
+
this._debouncedVerifyApplicability();
|
|
312
260
|
} else {
|
|
313
261
|
this.setState({ _wip: { ...filter, ...update } });
|
|
314
262
|
}
|
|
@@ -318,37 +266,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
318
266
|
return f === filter ? { ...f, ...update } : f;
|
|
319
267
|
});
|
|
320
268
|
this.setState({ filters: updatedFilters });
|
|
321
|
-
this.storeRecentFilter({ ...filter, ...update });
|
|
322
|
-
}
|
|
323
|
-
storeRecentFilter(update) {
|
|
324
|
-
if (!this.state.drilldownRecommendationsEnabled) {
|
|
325
|
-
return;
|
|
326
|
-
}
|
|
327
|
-
const storedFilters = this._store.get(RECENT_FILTERS_KEY);
|
|
328
|
-
const allRecentFilters = storedFilters ? JSON.parse(storedFilters) : [];
|
|
329
|
-
const updatedStoredFilters = [...allRecentFilters, update].slice(-10);
|
|
330
|
-
this._store.set(RECENT_FILTERS_KEY, JSON.stringify(updatedStoredFilters));
|
|
331
|
-
const filter = this.state.filters.find((f) => f.key === update.key && !Boolean(f.nonApplicable));
|
|
332
|
-
if (filter && !Boolean(filter.nonApplicable)) {
|
|
333
|
-
this.setState({ _recentFilters: updatedStoredFilters.slice(-3) });
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
async _verifyRecentFiltersApplicability(storedFilters) {
|
|
337
|
-
const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
|
|
338
|
-
const response = await this.getFiltersApplicabilityForQueries(storedFilters, queries != null ? queries : []);
|
|
339
|
-
if (!response) {
|
|
340
|
-
this.setState({ _recentFilters: storedFilters.slice(-3) });
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
|
-
const applicabilityMap = /* @__PURE__ */ new Map();
|
|
344
|
-
response.forEach((item) => {
|
|
345
|
-
applicabilityMap.set(item.key, item.applicable !== false);
|
|
346
|
-
});
|
|
347
|
-
const applicableFilters = storedFilters.filter((f) => {
|
|
348
|
-
const isApplicable = applicabilityMap.get(f.key);
|
|
349
|
-
return isApplicable === void 0 || isApplicable === true;
|
|
350
|
-
}).slice(-3);
|
|
351
|
-
this.setState({ _recentFilters: applicableFilters });
|
|
352
269
|
}
|
|
353
270
|
updateToMatchAll(filter) {
|
|
354
271
|
this._updateFilter(filter, {
|
|
@@ -425,11 +342,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
425
342
|
});
|
|
426
343
|
}
|
|
427
344
|
}
|
|
428
|
-
setRecommendedFilters(recommendedFilters) {
|
|
429
|
-
this.setState({
|
|
430
|
-
_recommendedFilters: recommendedFilters
|
|
431
|
-
});
|
|
432
|
-
}
|
|
433
345
|
async getFiltersApplicabilityForQueries(filters, queries) {
|
|
434
346
|
const ds = await this._dataSourceSrv.get(this.state.datasource, this._scopedVars);
|
|
435
347
|
if (!ds || !ds.getDrilldownsApplicability) {
|
|
@@ -544,12 +456,11 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
544
456
|
let scopes = sceneGraph.getScopes(this);
|
|
545
457
|
if (filter.origin === "scope") {
|
|
546
458
|
scopes = scopes == null ? void 0 : scopes.map((scope) => {
|
|
547
|
-
var _a2;
|
|
548
459
|
return {
|
|
549
460
|
...scope,
|
|
550
461
|
spec: {
|
|
551
462
|
...scope.spec,
|
|
552
|
-
filters:
|
|
463
|
+
filters: scope.spec.filters.filter((f) => f.key !== filter.key)
|
|
553
464
|
}
|
|
554
465
|
};
|
|
555
466
|
});
|
|
@@ -652,5 +563,5 @@ function isMultiValueOperator(operatorValue) {
|
|
|
652
563
|
return Boolean(operator.isMulti);
|
|
653
564
|
}
|
|
654
565
|
|
|
655
|
-
export { AdHocFiltersVariable, AdHocFiltersVariableRenderer, OPERATORS,
|
|
566
|
+
export { AdHocFiltersVariable, AdHocFiltersVariableRenderer, OPERATORS, isFilterApplicable, isFilterComplete, isMatchAllFilter, isMultiValueOperator, toSelectableValue };
|
|
656
567
|
//# sourceMappingURL=AdHocFiltersVariable.js.map
|