@grafana/scenes 6.50.0--canary.1312.20210310779.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 +5 -93
- 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 -161
- 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 -4894
- 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,8 +1,7 @@
|
|
|
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';
|
|
@@ -12,7 +11,6 @@ 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,33 +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
|
-
});
|
|
154
|
-
if (recommendedDrilldowns == null ? void 0 : recommendedDrilldowns.filters) {
|
|
155
|
-
this.setRecommendedFilters(recommendedDrilldowns.filters);
|
|
156
|
-
}
|
|
157
|
-
} catch (error) {
|
|
158
|
-
console.error("Failed to fetch recommended drilldowns:", error);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
120
|
_updateScopesFilters() {
|
|
162
121
|
var _a, _b;
|
|
163
122
|
const scopes = sceneGraph.getScopes(this);
|
|
@@ -205,13 +164,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
205
164
|
this._prevScopes = scopes;
|
|
206
165
|
this._debouncedVerifyApplicability();
|
|
207
166
|
}
|
|
208
|
-
async verifyApplicabilityAndStoreRecentFilter(update) {
|
|
209
|
-
await this._verifyApplicability();
|
|
210
|
-
if (!this.state.drilldownRecommendationsEnabled) {
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
this.storeRecentFilter(update);
|
|
214
|
-
}
|
|
215
167
|
setState(update) {
|
|
216
168
|
var _a, _b;
|
|
217
169
|
let filterExpressionChanged = false;
|
|
@@ -303,11 +255,8 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
303
255
|
}
|
|
304
256
|
if (filter === _wip) {
|
|
305
257
|
if ("value" in update && update["value"] !== "") {
|
|
306
|
-
this.setState({
|
|
307
|
-
|
|
308
|
-
_wip: void 0
|
|
309
|
-
});
|
|
310
|
-
this.verifyApplicabilityAndStoreRecentFilter({ ..._wip, ...update });
|
|
258
|
+
this.setState({ filters: [...filters, { ..._wip, ...update }], _wip: void 0 });
|
|
259
|
+
this._debouncedVerifyApplicability();
|
|
311
260
|
} else {
|
|
312
261
|
this.setState({ _wip: { ...filter, ...update } });
|
|
313
262
|
}
|
|
@@ -317,37 +266,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
317
266
|
return f === filter ? { ...f, ...update } : f;
|
|
318
267
|
});
|
|
319
268
|
this.setState({ filters: updatedFilters });
|
|
320
|
-
this.storeRecentFilter({ ...filter, ...update });
|
|
321
|
-
}
|
|
322
|
-
storeRecentFilter(update) {
|
|
323
|
-
if (!this.state.drilldownRecommendationsEnabled) {
|
|
324
|
-
return;
|
|
325
|
-
}
|
|
326
|
-
const storedFilters = this._store.get(RECENT_FILTERS_KEY);
|
|
327
|
-
const allRecentFilters = storedFilters ? JSON.parse(storedFilters) : [];
|
|
328
|
-
const updatedStoredFilters = [...allRecentFilters, update].slice(-10);
|
|
329
|
-
this._store.set(RECENT_FILTERS_KEY, JSON.stringify(updatedStoredFilters));
|
|
330
|
-
const filter = this.state.filters.find((f) => f.key === update.key && !Boolean(f.nonApplicable));
|
|
331
|
-
if (filter && !Boolean(filter.nonApplicable)) {
|
|
332
|
-
this.setState({ _recentFilters: updatedStoredFilters.slice(-3) });
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
async _verifyRecentFiltersApplicability(storedFilters) {
|
|
336
|
-
const queries = this.state.useQueriesAsFilterForOptions ? getQueriesForVariables(this) : void 0;
|
|
337
|
-
const response = await this.getFiltersApplicabilityForQueries(storedFilters, queries != null ? queries : []);
|
|
338
|
-
if (!response) {
|
|
339
|
-
this.setState({ _recentFilters: storedFilters.slice(-3) });
|
|
340
|
-
return;
|
|
341
|
-
}
|
|
342
|
-
const applicabilityMap = /* @__PURE__ */ new Map();
|
|
343
|
-
response.forEach((item) => {
|
|
344
|
-
applicabilityMap.set(item.key, item.applicable !== false);
|
|
345
|
-
});
|
|
346
|
-
const applicableFilters = storedFilters.filter((f) => {
|
|
347
|
-
const isApplicable = applicabilityMap.get(f.key);
|
|
348
|
-
return isApplicable === void 0 || isApplicable === true;
|
|
349
|
-
}).slice(-3);
|
|
350
|
-
this.setState({ _recentFilters: applicableFilters });
|
|
351
269
|
}
|
|
352
270
|
updateToMatchAll(filter) {
|
|
353
271
|
this._updateFilter(filter, {
|
|
@@ -424,11 +342,6 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
424
342
|
});
|
|
425
343
|
}
|
|
426
344
|
}
|
|
427
|
-
setRecommendedFilters(recommendedFilters) {
|
|
428
|
-
this.setState({
|
|
429
|
-
_recommendedFilters: recommendedFilters
|
|
430
|
-
});
|
|
431
|
-
}
|
|
432
345
|
async getFiltersApplicabilityForQueries(filters, queries) {
|
|
433
346
|
const ds = await this._dataSourceSrv.get(this.state.datasource, this._scopedVars);
|
|
434
347
|
if (!ds || !ds.getDrilldownsApplicability) {
|
|
@@ -543,12 +456,11 @@ class AdHocFiltersVariable extends SceneObjectBase {
|
|
|
543
456
|
let scopes = sceneGraph.getScopes(this);
|
|
544
457
|
if (filter.origin === "scope") {
|
|
545
458
|
scopes = scopes == null ? void 0 : scopes.map((scope) => {
|
|
546
|
-
var _a2;
|
|
547
459
|
return {
|
|
548
460
|
...scope,
|
|
549
461
|
spec: {
|
|
550
462
|
...scope.spec,
|
|
551
|
-
filters:
|
|
463
|
+
filters: scope.spec.filters.filter((f) => f.key !== filter.key)
|
|
552
464
|
}
|
|
553
465
|
};
|
|
554
466
|
});
|
|
@@ -651,5 +563,5 @@ function isMultiValueOperator(operatorValue) {
|
|
|
651
563
|
return Boolean(operator.isMulti);
|
|
652
564
|
}
|
|
653
565
|
|
|
654
|
-
export { AdHocFiltersVariable, AdHocFiltersVariableRenderer, OPERATORS,
|
|
566
|
+
export { AdHocFiltersVariable, AdHocFiltersVariableRenderer, OPERATORS, isFilterApplicable, isFilterComplete, isMatchAllFilter, isMultiValueOperator, toSelectableValue };
|
|
655
567
|
//# sourceMappingURL=AdHocFiltersVariable.js.map
|