@grafana/scenes 6.7.0 → 6.8.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/CHANGELOG.md +13 -0
- package/dist/esm/components/layout/CSSGrid/SceneCSSGridItem.js +33 -0
- package/dist/esm/dist/esm/behaviors/CursorSync.js +76 -0
- package/dist/esm/dist/esm/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/dist/esm/behaviors/SceneQueryController.js +14 -0
- package/dist/esm/dist/esm/components/EmbeddedScene.js +59 -0
- package/dist/esm/dist/esm/components/NestedScene.js +95 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneApp.js +27 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/dist/esm/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/dist/esm/components/SceneApp/utils.js +42 -0
- package/dist/esm/dist/esm/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/dist/esm/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/dist/esm/components/SceneCanvasText.js +32 -0
- package/dist/esm/dist/esm/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/dist/esm/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/dist/esm/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/dist/esm/components/SceneReactObject.js +34 -0
- package/dist/esm/dist/esm/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/dist/esm/components/SceneTimePicker.js +139 -0
- package/dist/esm/dist/esm/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/dist/esm/components/SceneToolbarButton.js +33 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/dist/esm/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/dist/esm/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/dist/esm/components/VizPanel/registerRuntimePanelPlugin.js +11 -0
- package/dist/esm/dist/esm/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/dist/esm/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/dist/esm/components/layout/LazyLoader.js +103 -0
- package/dist/esm/dist/esm/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/dist/esm/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/dist/esm/components/layout/grid/constants.js +7 -0
- package/dist/esm/dist/esm/components/layout/grid/utils.js +36 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/dist/esm/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/dist/esm/components/layout/split/Splitter.js +386 -0
- package/dist/esm/dist/esm/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/dist/esm/core/SceneDataNode.js +43 -0
- package/dist/esm/dist/esm/core/SceneObjectBase.js +286 -0
- package/dist/esm/dist/esm/core/SceneObjectRef.js +32 -0
- package/dist/esm/dist/esm/core/SceneTimeRange.js +231 -0
- package/dist/esm/dist/esm/core/events.js +11 -0
- package/dist/esm/dist/esm/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/dist/esm/core/sceneGraph/index.js +25 -0
- package/dist/esm/dist/esm/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/dist/esm/core/sceneGraph/utils.js +64 -0
- package/dist/esm/dist/esm/core/types.js +15 -0
- package/dist/esm/dist/esm/querying/DataLayersMerger.js +46 -0
- package/dist/esm/dist/esm/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/dist/esm/querying/RuntimeDataSource.js +6 -0
- package/dist/esm/dist/esm/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/dist/esm/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/dist/esm/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/dist/esm/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/dist/esm/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/dist/esm/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/dist/esm/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/dist/esm/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/dist/esm/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/dist/esm/querying/registerQueryWithController.js +41 -0
- package/dist/esm/dist/esm/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/dist/esm/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/dist/esm/services/UrlSyncManager.js +167 -0
- package/dist/esm/dist/esm/services/useUrlSync.js +29 -0
- package/dist/esm/dist/esm/services/utils.js +71 -0
- package/dist/esm/dist/esm/utils/ControlsLabel.js +107 -0
- package/dist/esm/dist/esm/utils/LoadingIndicator.js +19 -0
- package/dist/esm/dist/esm/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/dist/esm/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/dist/esm/utils/date.js +15 -0
- package/dist/esm/dist/esm/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/dist/esm/utils/explore.js +47 -0
- package/dist/esm/dist/esm/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/dist/esm/utils/getDataSource.js +18 -0
- package/dist/esm/dist/esm/utils/getMessageFromError.js +24 -0
- package/dist/esm/dist/esm/utils/metricTree.js +53 -0
- package/dist/esm/dist/esm/utils/parseUrlParam.js +41 -0
- package/dist/esm/dist/esm/utils/utils.js +11 -0
- package/dist/esm/dist/esm/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/dist/esm/utils/writeSceneLog.js +12 -0
- package/dist/esm/dist/esm/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/dist/esm/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/dist/esm/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/dist/esm/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/dist/esm/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/dist/esm/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/dist/esm/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/dist/esm/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/dist/esm/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/dist/esm/variables/constants.js +9 -0
- package/dist/esm/dist/esm/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/dist/esm/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/dist/esm/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/dist/esm/variables/interpolation/defaults.js +21 -0
- package/dist/esm/dist/esm/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/dist/esm/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/dist/esm/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/dist/esm/variables/lookupVariable.js +20 -0
- package/dist/esm/dist/esm/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/dist/esm/variables/macros/contextMacros.js +43 -0
- package/dist/esm/dist/esm/variables/macros/dataMacros.js +134 -0
- package/dist/esm/dist/esm/variables/macros/index.js +26 -0
- package/dist/esm/dist/esm/variables/macros/templateProxies.js +51 -0
- package/dist/esm/dist/esm/variables/macros/timeMacros.js +86 -0
- package/dist/esm/dist/esm/variables/macros/types.js +11 -0
- package/dist/esm/dist/esm/variables/macros/urlMacros.js +56 -0
- package/dist/esm/dist/esm/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/dist/esm/variables/types.js +11 -0
- package/dist/esm/dist/esm/variables/utils.js +172 -0
- package/dist/esm/dist/esm/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/dist/esm/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/dist/esm/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/dist/esm/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/dist/esm/variables/variants/TestVariable.js +117 -0
- package/dist/esm/dist/esm/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/dist/esm/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/dist/esm/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/dist/esm/variables/variants/query/guards.js +28 -0
- package/dist/esm/dist/esm/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/dist/esm/variables/variants/query/utils.js +124 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/querying/DataProviderSharer.js +39 -0
- package/dist/esm/src/behaviors/ActWhenVariableChanged.js +27 -0
- package/dist/esm/src/behaviors/CursorSync.js +76 -0
- package/dist/esm/src/behaviors/LiveNowTimer.js +44 -0
- package/dist/esm/src/behaviors/SceneQueryController.js +60 -0
- package/dist/esm/src/behaviors/index.js +5 -0
- package/dist/esm/src/components/EmbeddedScene.js +59 -0
- package/dist/esm/src/components/NestedScene.js +95 -0
- package/dist/esm/src/components/SceneApp/SceneApp.js +37 -0
- package/dist/esm/src/components/SceneApp/SceneAppPage.js +176 -0
- package/dist/esm/src/components/SceneApp/SceneAppPageView.js +104 -0
- package/dist/esm/src/components/SceneApp/utils.js +42 -0
- package/dist/esm/src/components/SceneByFrameRepeater.js +41 -0
- package/dist/esm/src/components/SceneByVariableRepeater.js +55 -0
- package/dist/esm/src/components/SceneCanvasText.js +32 -0
- package/dist/esm/src/components/SceneControlsSpacer.js +17 -0
- package/dist/esm/src/components/SceneDebugger/DebugDetails.js +82 -0
- package/dist/esm/src/components/SceneDebugger/DebugTreeNode.js +72 -0
- package/dist/esm/src/components/SceneDebugger/SceneDebugger.js +77 -0
- package/dist/esm/src/components/SceneReactObject.js +34 -0
- package/dist/esm/src/components/SceneRefreshPicker.js +205 -0
- package/dist/esm/src/components/SceneTimePicker.js +139 -0
- package/dist/esm/src/components/SceneTimeRangeCompare.js +240 -0
- package/dist/esm/src/components/SceneToolbarButton.js +33 -0
- package/dist/esm/src/components/VizPanel/VizPanel.js +406 -0
- package/dist/esm/src/components/VizPanel/VizPanelExploreButton.js +44 -0
- package/dist/esm/src/components/VizPanel/VizPanelMenu.js +59 -0
- package/dist/esm/src/components/VizPanel/VizPanelRenderer.js +285 -0
- package/dist/esm/src/components/VizPanel/VizPanelSeriesLimit.js +45 -0
- package/dist/esm/src/components/VizPanel/colorSeriesConfigFactory.js +72 -0
- package/dist/esm/src/components/VizPanel/registerRuntimePanelPlugin.js +56 -0
- package/dist/esm/src/components/VizPanel/seriesVisibilityConfigFactory.js +164 -0
- package/dist/esm/src/components/layout/CSSGrid/SceneCSSGridLayout.js +124 -0
- package/dist/esm/src/components/layout/LazyLoader.js +103 -0
- package/dist/esm/src/components/layout/SceneFlexLayout.js +135 -0
- package/dist/esm/src/components/layout/grid/SceneGridItem.js +30 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayout.js +283 -0
- package/dist/esm/src/components/layout/grid/SceneGridLayoutRenderer.js +178 -0
- package/dist/esm/src/components/layout/grid/SceneGridRow.js +190 -0
- package/dist/esm/src/components/layout/grid/constants.js +7 -0
- package/dist/esm/src/components/layout/grid/utils.js +36 -0
- package/dist/esm/src/components/layout/split/SplitLayout.js +17 -0
- package/dist/esm/src/components/layout/split/SplitLayoutRenderer.js +29 -0
- package/dist/esm/src/components/layout/split/Splitter.js +386 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilder.js +100 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigBuilders.js +75 -0
- package/dist/esm/src/core/PanelBuilders/FieldConfigOverridesBuilder.js +75 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilder.js +22 -0
- package/dist/esm/src/core/PanelBuilders/PanelOptionsBuilders.js +85 -0
- package/dist/esm/src/core/PanelBuilders/StandardFieldConfigBuilders.js +52 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilder.js +78 -0
- package/dist/esm/src/core/PanelBuilders/VizConfigBuilders.js +114 -0
- package/dist/esm/src/core/PanelBuilders/VizPanelBuilder.js +162 -0
- package/dist/esm/src/core/PanelBuilders/index.js +116 -0
- package/dist/esm/src/core/SceneComponentWrapper.js +57 -0
- package/dist/esm/src/core/SceneDataNode.js +43 -0
- package/dist/esm/src/core/SceneObjectBase.js +286 -0
- package/dist/esm/src/core/SceneObjectRef.js +32 -0
- package/dist/esm/src/core/SceneTimeRange.js +231 -0
- package/dist/esm/src/core/SceneTimeRangeTransformerBase.js +35 -0
- package/dist/esm/src/core/SceneTimeZoneOverride.js +63 -0
- package/dist/esm/src/core/events.js +11 -0
- package/dist/esm/src/core/sceneGraph/getTimeRange.js +10 -0
- package/dist/esm/src/core/sceneGraph/index.js +25 -0
- package/dist/esm/src/core/sceneGraph/sceneGraph.js +178 -0
- package/dist/esm/src/core/sceneGraph/utils.js +64 -0
- package/dist/esm/src/core/types.js +15 -0
- package/dist/esm/src/index.js +108 -0
- package/dist/esm/src/querying/DataLayersMerger.js +46 -0
- package/dist/esm/src/querying/DataProviderProxy.js +37 -0
- package/dist/esm/src/querying/DataProviderSharer.js +108 -0
- package/dist/esm/src/querying/ExtraQueryProvider.js +6 -0
- package/dist/esm/src/querying/RuntimeDataSource.js +49 -0
- package/dist/esm/src/querying/SceneDataLayerSet.js +100 -0
- package/dist/esm/src/querying/SceneDataTransformer.js +178 -0
- package/dist/esm/src/querying/SceneQueryRunner.js +468 -0
- package/dist/esm/src/querying/extraQueryProcessingOperator.js +46 -0
- package/dist/esm/src/querying/getEnrichedDataRequest.js +12 -0
- package/dist/esm/src/querying/layers/SceneDataLayerBase.js +112 -0
- package/dist/esm/src/querying/layers/SceneDataLayerControls.js +51 -0
- package/dist/esm/src/querying/layers/annotations/AnnotationsDataLayer.js +130 -0
- package/dist/esm/src/querying/layers/annotations/filterAnnotations.js +85 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationQuery.js +121 -0
- package/dist/esm/src/querying/layers/annotations/standardAnnotationsSupport.js +211 -0
- package/dist/esm/src/querying/layers/annotations/utils.js +77 -0
- package/dist/esm/src/querying/layers/index.js +2 -0
- package/dist/esm/src/querying/registerQueryWithController.js +41 -0
- package/dist/esm/src/services/SceneObjectUrlSyncConfig.js +30 -0
- package/dist/esm/src/services/UniqueUrlKeyMapper.js +45 -0
- package/dist/esm/src/services/UrlSyncContextProvider.js +17 -0
- package/dist/esm/src/services/UrlSyncManager.js +167 -0
- package/dist/esm/src/services/useUrlSync.js +29 -0
- package/dist/esm/src/services/utils.js +75 -0
- package/dist/esm/src/utils/ControlsLabel.js +107 -0
- package/dist/esm/src/utils/LoadingIndicator.js +19 -0
- package/dist/esm/src/utils/SafeSerializableSceneObject.js +39 -0
- package/dist/esm/src/utils/compatibility/setWindowGrafanaSceneContext.js +16 -0
- package/dist/esm/src/utils/date.js +15 -0
- package/dist/esm/src/utils/evaluateTimeRange.js +16 -0
- package/dist/esm/src/utils/explore.js +47 -0
- package/dist/esm/src/utils/getCompareSeriesRefId.js +4 -0
- package/dist/esm/src/utils/getDataSource.js +18 -0
- package/dist/esm/src/utils/getMessageFromError.js +24 -0
- package/dist/esm/src/utils/metricTree.js +53 -0
- package/dist/esm/src/utils/parseUrlParam.js +41 -0
- package/dist/esm/src/utils/utils.js +11 -0
- package/dist/esm/src/utils/wrapInSafeSerializableSceneObject.js +30 -0
- package/dist/esm/src/utils/writeSceneLog.js +12 -0
- package/dist/esm/src/variables/VariableDependencyConfig.js +150 -0
- package/dist/esm/src/variables/VariableValueRecorder.js +71 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterBuilder.js +24 -0
- package/dist/esm/src/variables/adhoc/AdHocFilterRenderer.js +303 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFilterPill.js +162 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +20 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +640 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +65 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/DropdownItem.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/MultiValuePill.js +114 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/useFloatingInteractions.js +68 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersCombobox/utils.js +146 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariable.js +289 -0
- package/dist/esm/src/variables/adhoc/AdHocFiltersVariableUrlSyncHandler.js +76 -0
- package/dist/esm/src/variables/adhoc/getAdhocOptionSearcher.js +13 -0
- package/dist/esm/src/variables/adhoc/patchGetAdhocFilters.js +47 -0
- package/dist/esm/src/variables/components/VariableValueControl.js +23 -0
- package/dist/esm/src/variables/components/VariableValueInput.js +33 -0
- package/dist/esm/src/variables/components/VariableValueSelect.js +228 -0
- package/dist/esm/src/variables/components/VariableValueSelectors.js +72 -0
- package/dist/esm/src/variables/components/getOptionSearcher.js +15 -0
- package/dist/esm/src/variables/constants.js +9 -0
- package/dist/esm/src/variables/getEnrichedFiltersRequest.js +12 -0
- package/dist/esm/src/variables/groupby/GroupByVariable.js +259 -0
- package/dist/esm/src/variables/groupby/GroupByVariableUrlSyncHandler.js +63 -0
- package/dist/esm/src/variables/groupby/findActiveGroupByVariablesByUid.js +13 -0
- package/dist/esm/src/variables/interpolation/ScopedVarsVariable.js +40 -0
- package/dist/esm/src/variables/interpolation/defaults.js +21 -0
- package/dist/esm/src/variables/interpolation/fieldAccessorCache.js +13 -0
- package/dist/esm/src/variables/interpolation/formatRegistry.js +296 -0
- package/dist/esm/src/variables/interpolation/sceneInterpolator.js +87 -0
- package/dist/esm/src/variables/lookupVariable.js +20 -0
- package/dist/esm/src/variables/macros/AllVariablesMacro.js +57 -0
- package/dist/esm/src/variables/macros/contextMacros.js +43 -0
- package/dist/esm/src/variables/macros/dataMacros.js +134 -0
- package/dist/esm/src/variables/macros/index.js +35 -0
- package/dist/esm/src/variables/macros/templateProxies.js +51 -0
- package/dist/esm/src/variables/macros/timeMacros.js +86 -0
- package/dist/esm/src/variables/macros/types.js +11 -0
- package/dist/esm/src/variables/macros/urlMacros.js +56 -0
- package/dist/esm/src/variables/sets/SceneVariableSet.js +254 -0
- package/dist/esm/src/variables/types.js +11 -0
- package/dist/esm/src/variables/utils.js +172 -0
- package/dist/esm/src/variables/variants/ConstantVariable.js +38 -0
- package/dist/esm/src/variables/variants/CustomVariable.js +60 -0
- package/dist/esm/src/variables/variants/DataSourceVariable.js +88 -0
- package/dist/esm/src/variables/variants/IntervalVariable.js +117 -0
- package/dist/esm/src/variables/variants/JsonVariable.js +193 -0
- package/dist/esm/src/variables/variants/LocalValueVariable.js +56 -0
- package/dist/esm/src/variables/variants/MultiValueVariable.js +295 -0
- package/dist/esm/src/variables/variants/TestVariable.js +117 -0
- package/dist/esm/src/variables/variants/TextBoxVariable.js +61 -0
- package/dist/esm/src/variables/variants/guards.js +27 -0
- package/dist/esm/src/variables/variants/query/QueryVariable.js +139 -0
- package/dist/esm/src/variables/variants/query/createQueryVariableRunner.js +129 -0
- package/dist/esm/src/variables/variants/query/guards.js +28 -0
- package/dist/esm/src/variables/variants/query/toMetricFindValues.js +96 -0
- package/dist/esm/src/variables/variants/query/utils.js +124 -0
- package/dist/esm/variables/components/VariableValueSelect.js +13 -9
- package/dist/esm/variables/components/VariableValueSelect.js.map +1 -1
- package/dist/esm/variables/variants/ConstantVariable.js +22 -0
- package/dist/esm/variables/variants/ConstantVariable.js.map +1 -1
- package/dist/esm/variables/variants/CustomVariable.js +3 -2
- package/dist/esm/variables/variants/CustomVariable.js.map +1 -1
- package/dist/esm/variables/variants/DataSourceVariable.js +3 -2
- package/dist/esm/variables/variants/DataSourceVariable.js.map +1 -1
- package/dist/esm/variables/variants/JsonVariable.js +96 -0
- package/dist/esm/variables/variants/TestVariable.js +3 -2
- package/dist/esm/variables/variants/TestVariable.js.map +1 -1
- package/dist/esm/variables/variants/json/JsonVariable.js +95 -0
- package/dist/esm/variables/variants/json/JsonVariableOptionProviders.js +70 -0
- package/dist/esm/variables/variants/query/QueryVariable.js +3 -2
- package/dist/esm/variables/variants/query/QueryVariable.js.map +1 -1
- package/dist/index.d.ts +14 -6
- package/dist/index.js +35 -13
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { lastValueFrom, of, from, mergeMap, filter, take, throwError, catchError } from 'rxjs';
|
|
2
|
+
import { v4 } from 'uuid';
|
|
3
|
+
import { VariableRefresh, VariableSort, LoadingState, CoreApp } from '@grafana/data';
|
|
4
|
+
import { sceneGraph } from '../../../core/sceneGraph/index.js';
|
|
5
|
+
import { VariableDependencyConfig } from '../../VariableDependencyConfig.js';
|
|
6
|
+
import { renderSelectForVariable } from '../../components/VariableValueSelect.js';
|
|
7
|
+
import { MultiValueVariable } from '../MultiValueVariable.js';
|
|
8
|
+
import { createQueryVariableRunner } from './createQueryVariableRunner.js';
|
|
9
|
+
import { metricNamesToVariableValues } from './utils.js';
|
|
10
|
+
import { toMetricFindValues } from './toMetricFindValues.js';
|
|
11
|
+
import { getDataSource } from '../../../utils/getDataSource.js';
|
|
12
|
+
import { safeStringifyValue } from '../../utils.js';
|
|
13
|
+
import { SEARCH_FILTER_VARIABLE } from '../../constants.js';
|
|
14
|
+
import { debounce } from 'lodash';
|
|
15
|
+
import { registerQueryWithController } from '../../../querying/registerQueryWithController.js';
|
|
16
|
+
import { wrapInSafeSerializableSceneObject } from '../../../utils/wrapInSafeSerializableSceneObject.js';
|
|
17
|
+
|
|
18
|
+
var __defProp = Object.defineProperty;
|
|
19
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
20
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
21
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
22
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
23
|
+
var __spreadValues = (a, b) => {
|
|
24
|
+
for (var prop in b || (b = {}))
|
|
25
|
+
if (__hasOwnProp.call(b, prop))
|
|
26
|
+
__defNormalProp(a, prop, b[prop]);
|
|
27
|
+
if (__getOwnPropSymbols)
|
|
28
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
29
|
+
if (__propIsEnum.call(b, prop))
|
|
30
|
+
__defNormalProp(a, prop, b[prop]);
|
|
31
|
+
}
|
|
32
|
+
return a;
|
|
33
|
+
};
|
|
34
|
+
class QueryVariable extends MultiValueVariable {
|
|
35
|
+
constructor(initialState) {
|
|
36
|
+
super(__spreadValues({
|
|
37
|
+
type: "query",
|
|
38
|
+
name: "",
|
|
39
|
+
value: "",
|
|
40
|
+
text: "",
|
|
41
|
+
options: [],
|
|
42
|
+
datasource: null,
|
|
43
|
+
regex: "",
|
|
44
|
+
query: "",
|
|
45
|
+
refresh: VariableRefresh.onDashboardLoad,
|
|
46
|
+
sort: VariableSort.disabled
|
|
47
|
+
}, initialState));
|
|
48
|
+
this._variableDependency = new VariableDependencyConfig(this, {
|
|
49
|
+
statePaths: ["regex", "query", "datasource"]
|
|
50
|
+
});
|
|
51
|
+
this.onSearchChange = (searchFilter) => {
|
|
52
|
+
if (!containsSearchFilter(this.state.query)) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this._updateOptionsBasedOnSearchFilter(searchFilter);
|
|
56
|
+
};
|
|
57
|
+
this._updateOptionsBasedOnSearchFilter = debounce(async (searchFilter) => {
|
|
58
|
+
const result = await lastValueFrom(this.getValueOptions({ searchFilter }));
|
|
59
|
+
this.setState({ options: result, loading: false });
|
|
60
|
+
}, 400);
|
|
61
|
+
}
|
|
62
|
+
getValueOptions(args) {
|
|
63
|
+
if (!this.state.query) {
|
|
64
|
+
return of([]);
|
|
65
|
+
}
|
|
66
|
+
this.setState({ loading: true, error: null });
|
|
67
|
+
return from(
|
|
68
|
+
getDataSource(this.state.datasource, {
|
|
69
|
+
__sceneObject: wrapInSafeSerializableSceneObject(this)
|
|
70
|
+
})
|
|
71
|
+
).pipe(
|
|
72
|
+
mergeMap((ds) => {
|
|
73
|
+
const runner = createQueryVariableRunner(ds);
|
|
74
|
+
const target = runner.getTarget(this);
|
|
75
|
+
const request = this.getRequest(target, args.searchFilter);
|
|
76
|
+
return runner.runRequest({ variable: this, searchFilter: args.searchFilter }, request).pipe(
|
|
77
|
+
registerQueryWithController({
|
|
78
|
+
type: "variable",
|
|
79
|
+
request,
|
|
80
|
+
origin: this
|
|
81
|
+
}),
|
|
82
|
+
filter((data) => data.state === LoadingState.Done || data.state === LoadingState.Error),
|
|
83
|
+
take(1),
|
|
84
|
+
mergeMap((data) => {
|
|
85
|
+
if (data.state === LoadingState.Error) {
|
|
86
|
+
return throwError(() => data.error);
|
|
87
|
+
}
|
|
88
|
+
return of(data);
|
|
89
|
+
}),
|
|
90
|
+
toMetricFindValues(),
|
|
91
|
+
mergeMap((values) => {
|
|
92
|
+
let regex = "";
|
|
93
|
+
if (this.state.regex) {
|
|
94
|
+
regex = sceneGraph.interpolate(this, this.state.regex, void 0, "regex");
|
|
95
|
+
}
|
|
96
|
+
return of(metricNamesToVariableValues(regex, this.state.sort, values));
|
|
97
|
+
}),
|
|
98
|
+
catchError((error) => {
|
|
99
|
+
if (error.cancelled) {
|
|
100
|
+
return of([]);
|
|
101
|
+
}
|
|
102
|
+
return throwError(() => error);
|
|
103
|
+
})
|
|
104
|
+
);
|
|
105
|
+
})
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
getRequest(target, searchFilter) {
|
|
109
|
+
const scopedVars = {
|
|
110
|
+
__sceneObject: wrapInSafeSerializableSceneObject(this)
|
|
111
|
+
};
|
|
112
|
+
if (searchFilter) {
|
|
113
|
+
scopedVars.__searchFilter = { value: searchFilter, text: searchFilter };
|
|
114
|
+
}
|
|
115
|
+
const range = sceneGraph.getTimeRange(this).state.value;
|
|
116
|
+
const request = {
|
|
117
|
+
app: CoreApp.Dashboard,
|
|
118
|
+
requestId: v4(),
|
|
119
|
+
timezone: "",
|
|
120
|
+
range,
|
|
121
|
+
interval: "",
|
|
122
|
+
intervalMs: 0,
|
|
123
|
+
targets: [target],
|
|
124
|
+
scopedVars,
|
|
125
|
+
startTime: Date.now()
|
|
126
|
+
};
|
|
127
|
+
return request;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
QueryVariable.Component = ({ model }) => {
|
|
131
|
+
return renderSelectForVariable(model);
|
|
132
|
+
};
|
|
133
|
+
function containsSearchFilter(query) {
|
|
134
|
+
const str = safeStringifyValue(query);
|
|
135
|
+
return str.indexOf(SEARCH_FILTER_VARIABLE) > -1;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
export { QueryVariable };
|
|
139
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVlcnlWYXJpYWJsZS5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy92YXJpYW50cy9xdWVyeS9RdWVyeVZhcmlhYmxlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiwgZmlsdGVyLCB0YWtlLCBtZXJnZU1hcCwgY2F0Y2hFcnJvciwgdGhyb3dFcnJvciwgZnJvbSwgbGFzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5cbmltcG9ydCB7XG4gIENvcmVBcHAsXG4gIERhdGFRdWVyeVJlcXVlc3QsXG4gIExvYWRpbmdTdGF0ZSxcbiAgUGFuZWxEYXRhLFxuICBTY29wZWRWYXJzLFxuICBWYXJpYWJsZVJlZnJlc2gsXG4gIFZhcmlhYmxlU29ydCxcbn0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5cbmltcG9ydCB7IHNjZW5lR3JhcGggfSBmcm9tICcuLi8uLi8uLi9jb3JlL3NjZW5lR3JhcGgnO1xuaW1wb3J0IHsgU2NlbmVDb21wb25lbnRQcm9wcywgU2NlbmVEYXRhUXVlcnkgfSBmcm9tICcuLi8uLi8uLi9jb3JlL3R5cGVzJztcbmltcG9ydCB7IFZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZyB9IGZyb20gJy4uLy4uL1ZhcmlhYmxlRGVwZW5kZW5jeUNvbmZpZyc7XG5pbXBvcnQgeyByZW5kZXJTZWxlY3RGb3JWYXJpYWJsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvVmFyaWFibGVWYWx1ZVNlbGVjdCc7XG5pbXBvcnQgeyBWYXJpYWJsZVZhbHVlT3B0aW9uIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTXVsdGlWYWx1ZVZhcmlhYmxlLCBNdWx0aVZhbHVlVmFyaWFibGVTdGF0ZSwgVmFyaWFibGVHZXRPcHRpb25zQXJncyB9IGZyb20gJy4uL011bHRpVmFsdWVWYXJpYWJsZSc7XG5cbmltcG9ydCB7IGNyZWF0ZVF1ZXJ5VmFyaWFibGVSdW5uZXIgfSBmcm9tICcuL2NyZWF0ZVF1ZXJ5VmFyaWFibGVSdW5uZXInO1xuaW1wb3J0IHsgbWV0cmljTmFtZXNUb1ZhcmlhYmxlVmFsdWVzIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyB0b01ldHJpY0ZpbmRWYWx1ZXMgfSBmcm9tICcuL3RvTWV0cmljRmluZFZhbHVlcyc7XG5pbXBvcnQgeyBnZXREYXRhU291cmNlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZ2V0RGF0YVNvdXJjZSc7XG5pbXBvcnQgeyBzYWZlU3RyaW5naWZ5VmFsdWUgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBEYXRhUXVlcnksIERhdGFTb3VyY2VSZWYgfSBmcm9tICdAZ3JhZmFuYS9zY2hlbWEnO1xuaW1wb3J0IHsgU0VBUkNIX0ZJTFRFUl9WQVJJQUJMRSB9IGZyb20gJy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyByZWdpc3RlclF1ZXJ5V2l0aENvbnRyb2xsZXIgfSBmcm9tICcuLi8uLi8uLi9xdWVyeWluZy9yZWdpc3RlclF1ZXJ5V2l0aENvbnRyb2xsZXInO1xuaW1wb3J0IHsgd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvd3JhcEluU2FmZVNlcmlhbGl6YWJsZVNjZW5lT2JqZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVZhcmlhYmxlU3RhdGUgZXh0ZW5kcyBNdWx0aVZhbHVlVmFyaWFibGVTdGF0ZSB7XG4gIHR5cGU6ICdxdWVyeSc7XG4gIGRhdGFzb3VyY2U6IERhdGFTb3VyY2VSZWYgfCBudWxsO1xuICBxdWVyeTogc3RyaW5nIHwgU2NlbmVEYXRhUXVlcnk7XG4gIHJlZ2V4OiBzdHJpbmc7XG4gIHJlZnJlc2g6IFZhcmlhYmxlUmVmcmVzaDtcbiAgc29ydDogVmFyaWFibGVTb3J0O1xuICAvKiogQGludGVybmFsIE9ubHkgZm9yIHVzZSBpbnNpZGUgY29yZSBkYXNoYm9hcmRzICovXG4gIGRlZmluaXRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBRdWVyeVZhcmlhYmxlIGV4dGVuZHMgTXVsdGlWYWx1ZVZhcmlhYmxlPFF1ZXJ5VmFyaWFibGVTdGF0ZT4ge1xuICBwcm90ZWN0ZWQgX3ZhcmlhYmxlRGVwZW5kZW5jeSA9IG5ldyBWYXJpYWJsZURlcGVuZGVuY3lDb25maWcodGhpcywge1xuICAgIHN0YXRlUGF0aHM6IFsncmVnZXgnLCAncXVlcnknLCAnZGF0YXNvdXJjZSddLFxuICB9KTtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoaW5pdGlhbFN0YXRlOiBQYXJ0aWFsPFF1ZXJ5VmFyaWFibGVTdGF0ZT4pIHtcbiAgICBzdXBlcih7XG4gICAgICB0eXBlOiAncXVlcnknLFxuICAgICAgbmFtZTogJycsXG4gICAgICB2YWx1ZTogJycsXG4gICAgICB0ZXh0OiAnJyxcbiAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgZGF0YXNvdXJjZTogbnVsbCxcbiAgICAgIHJlZ2V4OiAnJyxcbiAgICAgIHF1ZXJ5OiAnJyxcbiAgICAgIHJlZnJlc2g6IFZhcmlhYmxlUmVmcmVzaC5vbkRhc2hib2FyZExvYWQsXG4gICAgICBzb3J0OiBWYXJpYWJsZVNvcnQuZGlzYWJsZWQsXG4gICAgICAuLi5pbml0aWFsU3RhdGUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0VmFsdWVPcHRpb25zKGFyZ3M6IFZhcmlhYmxlR2V0T3B0aW9uc0FyZ3MpOiBPYnNlcnZhYmxlPFZhcmlhYmxlVmFsdWVPcHRpb25bXT4ge1xuICAgIGlmICghdGhpcy5zdGF0ZS5xdWVyeSkge1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG5cbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSwgZXJyb3I6IG51bGwgfSk7XG5cbiAgICByZXR1cm4gZnJvbShcbiAgICAgIGdldERhdGFTb3VyY2UodGhpcy5zdGF0ZS5kYXRhc291cmNlLCB7XG4gICAgICAgIF9fc2NlbmVPYmplY3Q6IHdyYXBJblNhZmVTZXJpYWxpemFibGVTY2VuZU9iamVjdCh0aGlzKSxcbiAgICAgIH0pXG4gICAgKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoKGRzKSA9PiB7XG4gICAgICAgIGNvbnN0IHJ1bm5lciA9IGNyZWF0ZVF1ZXJ5VmFyaWFibGVSdW5uZXIoZHMpO1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBydW5uZXIuZ2V0VGFyZ2V0KHRoaXMpO1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gdGhpcy5nZXRSZXF1ZXN0KHRhcmdldCwgYXJncy5zZWFyY2hGaWx0ZXIpO1xuXG4gICAgICAgIHJldHVybiBydW5uZXIucnVuUmVxdWVzdCh7IHZhcmlhYmxlOiB0aGlzLCBzZWFyY2hGaWx0ZXI6IGFyZ3Muc2VhcmNoRmlsdGVyIH0sIHJlcXVlc3QpLnBpcGUoXG4gICAgICAgICAgcmVnaXN0ZXJRdWVyeVdpdGhDb250cm9sbGVyKHtcbiAgICAgICAgICAgIHR5cGU6ICd2YXJpYWJsZScsXG4gICAgICAgICAgICByZXF1ZXN0OiByZXF1ZXN0LFxuICAgICAgICAgICAgb3JpZ2luOiB0aGlzLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIGZpbHRlcigoZGF0YSkgPT4gZGF0YS5zdGF0ZSA9PT0gTG9hZGluZ1N0YXRlLkRvbmUgfHwgZGF0YS5zdGF0ZSA9PT0gTG9hZGluZ1N0YXRlLkVycm9yKSwgLy8gd2Ugb25seSBjYXJlIGFib3V0IGRvbmUgb3IgZXJyb3IgZm9yIG5vd1xuICAgICAgICAgIHRha2UoMSksIC8vIHRha2UgdGhlIGZpcnN0IHJlc3VsdCwgdXNpbmcgZmlyc3QgY2F1c2VkIGEgYnVnIHdoZXJlIGl0IGluIHNvbWUgc2l0dWF0aW9ucyB0aHJvdyBhbiB1bmNhdWdodCBlcnJvciBiZWNhdXNlIG9mIG5vIHJlc3VsdHMgaGFkIGJlZW4gcmVjZWl2ZWQgeWV0XG4gICAgICAgICAgbWVyZ2VNYXAoKGRhdGE6IFBhbmVsRGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGRhdGEuc3RhdGUgPT09IExvYWRpbmdTdGF0ZS5FcnJvcikge1xuICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBkYXRhLmVycm9yKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvZihkYXRhKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB0b01ldHJpY0ZpbmRWYWx1ZXMoKSxcbiAgICAgICAgICBtZXJnZU1hcCgodmFsdWVzKSA9PiB7XG4gICAgICAgICAgICBsZXQgcmVnZXggPSAnJztcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLnJlZ2V4KSB7XG4gICAgICAgICAgICAgIHJlZ2V4ID0gc2NlbmVHcmFwaC5pbnRlcnBvbGF0ZSh0aGlzLCB0aGlzLnN0YXRlLnJlZ2V4LCB1bmRlZmluZWQsICdyZWdleCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9mKG1ldHJpY05hbWVzVG9WYXJpYWJsZVZhbHVlcyhyZWdleCwgdGhpcy5zdGF0ZS5zb3J0LCB2YWx1ZXMpKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yLmNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gZXJyb3IpO1xuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFJlcXVlc3QodGFyZ2V0OiBEYXRhUXVlcnkgfCBzdHJpbmcsIHNlYXJjaEZpbHRlcj86IHN0cmluZykge1xuICAgIGNvbnN0IHNjb3BlZFZhcnM6IFNjb3BlZFZhcnMgPSB7XG4gICAgICBfX3NjZW5lT2JqZWN0OiB3cmFwSW5TYWZlU2VyaWFsaXphYmxlU2NlbmVPYmplY3QodGhpcyksXG4gICAgfTtcblxuICAgIGlmIChzZWFyY2hGaWx0ZXIpIHtcbiAgICAgIHNjb3BlZFZhcnMuX19zZWFyY2hGaWx0ZXIgPSB7IHZhbHVlOiBzZWFyY2hGaWx0ZXIsIHRleHQ6IHNlYXJjaEZpbHRlciB9O1xuICAgIH1cblxuICAgIGNvbnN0IHJhbmdlID0gc2NlbmVHcmFwaC5nZXRUaW1lUmFuZ2UodGhpcykuc3RhdGUudmFsdWU7XG5cbiAgICBjb25zdCByZXF1ZXN0OiBEYXRhUXVlcnlSZXF1ZXN0ID0ge1xuICAgICAgYXBwOiBDb3JlQXBwLkRhc2hib2FyZCxcbiAgICAgIHJlcXVlc3RJZDogdXVpZHY0KCksXG4gICAgICB0aW1lem9uZTogJycsXG4gICAgICByYW5nZSxcbiAgICAgIGludGVydmFsOiAnJyxcbiAgICAgIGludGVydmFsTXM6IDAsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0YXJnZXRzOiBbdGFyZ2V0XSxcbiAgICAgIHNjb3BlZFZhcnMsXG4gICAgICBzdGFydFRpbWU6IERhdGUubm93KCksXG4gICAgfTtcblxuICAgIHJldHVybiByZXF1ZXN0O1xuICB9XG5cbiAgb25TZWFyY2hDaGFuZ2UgPSAoc2VhcmNoRmlsdGVyOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoIWNvbnRhaW5zU2VhcmNoRmlsdGVyKHRoaXMuc3RhdGUucXVlcnkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdXBkYXRlT3B0aW9uc0Jhc2VkT25TZWFyY2hGaWx0ZXIoc2VhcmNoRmlsdGVyKTtcbiAgfTtcblxuICBwcml2YXRlIF91cGRhdGVPcHRpb25zQmFzZWRPblNlYXJjaEZpbHRlciA9IGRlYm91bmNlKGFzeW5jIChzZWFyY2hGaWx0ZXI6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5nZXRWYWx1ZU9wdGlvbnMoeyBzZWFyY2hGaWx0ZXIgfSkpO1xuICAgIHRoaXMuc2V0U3RhdGUoeyBvcHRpb25zOiByZXN1bHQsIGxvYWRpbmc6IGZhbHNlIH0pO1xuICB9LCA0MDApO1xuXG4gIHB1YmxpYyBzdGF0aWMgQ29tcG9uZW50ID0gKHsgbW9kZWwgfTogU2NlbmVDb21wb25lbnRQcm9wczxNdWx0aVZhbHVlVmFyaWFibGU+KSA9PiB7XG4gICAgcmV0dXJuIHJlbmRlclNlbGVjdEZvclZhcmlhYmxlKG1vZGVsKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY29udGFpbnNTZWFyY2hGaWx0ZXIocXVlcnk6IHN0cmluZyB8IERhdGFRdWVyeSkge1xuICBjb25zdCBzdHIgPSBzYWZlU3RyaW5naWZ5VmFsdWUocXVlcnkpO1xuICByZXR1cm4gc3RyLmluZGV4T2YoU0VBUkNIX0ZJTFRFUl9WQVJJQUJMRSkgPiAtMTtcbn1cbiJdLCJuYW1lcyI6WyJ1dWlkdjQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBDTyxNQUFNLHNCQUFzQixrQkFBdUMsQ0FBQTtBQUFBLEVBS2pFLFlBQVksWUFBMkMsRUFBQTtBQUM1RCxJQUFNLEtBQUEsQ0FBQSxjQUFBLENBQUE7QUFBQSxNQUNKLElBQU0sRUFBQSxPQUFBO0FBQUEsTUFDTixJQUFNLEVBQUEsRUFBQTtBQUFBLE1BQ04sS0FBTyxFQUFBLEVBQUE7QUFBQSxNQUNQLElBQU0sRUFBQSxFQUFBO0FBQUEsTUFDTixTQUFTLEVBQUM7QUFBQSxNQUNWLFVBQVksRUFBQSxJQUFBO0FBQUEsTUFDWixLQUFPLEVBQUEsRUFBQTtBQUFBLE1BQ1AsS0FBTyxFQUFBLEVBQUE7QUFBQSxNQUNQLFNBQVMsZUFBZ0IsQ0FBQSxlQUFBO0FBQUEsTUFDekIsTUFBTSxZQUFhLENBQUEsUUFBQTtBQUFBLEtBQUEsRUFDaEIsWUFDSixDQUFBLENBQUEsQ0FBQTtBQWpCSCxJQUFVLElBQUEsQ0FBQSxtQkFBQSxHQUFzQixJQUFJLHdCQUFBLENBQXlCLElBQU0sRUFBQTtBQUFBLE1BQ2pFLFVBQVksRUFBQSxDQUFDLE9BQVMsRUFBQSxPQUFBLEVBQVMsWUFBWSxDQUFBO0FBQUEsS0FDNUMsQ0FB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
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { from, mergeMap, of } from 'rxjs';
|
|
2
|
+
import { LoadingState, getDefaultTimeRange } from '@grafana/data';
|
|
3
|
+
import { getRunRequest } from '@grafana/runtime';
|
|
4
|
+
import { hasStandardVariableSupport, hasLegacyVariableSupport, hasCustomVariableSupport } from './guards.js';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __defProps = Object.defineProperties;
|
|
8
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
9
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
10
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
11
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
12
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
13
|
+
var __spreadValues = (a, b) => {
|
|
14
|
+
for (var prop in b || (b = {}))
|
|
15
|
+
if (__hasOwnProp.call(b, prop))
|
|
16
|
+
__defNormalProp(a, prop, b[prop]);
|
|
17
|
+
if (__getOwnPropSymbols)
|
|
18
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
19
|
+
if (__propIsEnum.call(b, prop))
|
|
20
|
+
__defNormalProp(a, prop, b[prop]);
|
|
21
|
+
}
|
|
22
|
+
return a;
|
|
23
|
+
};
|
|
24
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
class StandardQueryRunner {
|
|
26
|
+
constructor(datasource, _runRequest = getRunRequest()) {
|
|
27
|
+
this.datasource = datasource;
|
|
28
|
+
this._runRequest = _runRequest;
|
|
29
|
+
}
|
|
30
|
+
getTarget(variable) {
|
|
31
|
+
if (hasStandardVariableSupport(this.datasource)) {
|
|
32
|
+
return this.datasource.variables.toDataQuery(ensureVariableQueryModelIsADataQuery(variable));
|
|
33
|
+
}
|
|
34
|
+
throw new Error("Couldn't create a target with supplied arguments.");
|
|
35
|
+
}
|
|
36
|
+
runRequest(_, request) {
|
|
37
|
+
if (!hasStandardVariableSupport(this.datasource)) {
|
|
38
|
+
return getEmptyMetricFindValueObservable();
|
|
39
|
+
}
|
|
40
|
+
if (!this.datasource.variables.query) {
|
|
41
|
+
return this._runRequest(this.datasource, request);
|
|
42
|
+
}
|
|
43
|
+
return this._runRequest(this.datasource, request, this.datasource.variables.query.bind(this.datasource.variables));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
class LegacyQueryRunner {
|
|
47
|
+
constructor(datasource) {
|
|
48
|
+
this.datasource = datasource;
|
|
49
|
+
}
|
|
50
|
+
getTarget(variable) {
|
|
51
|
+
if (hasLegacyVariableSupport(this.datasource)) {
|
|
52
|
+
return variable.state.query;
|
|
53
|
+
}
|
|
54
|
+
throw new Error("Couldn't create a target with supplied arguments.");
|
|
55
|
+
}
|
|
56
|
+
runRequest({ variable, searchFilter }, request) {
|
|
57
|
+
if (!hasLegacyVariableSupport(this.datasource)) {
|
|
58
|
+
return getEmptyMetricFindValueObservable();
|
|
59
|
+
}
|
|
60
|
+
return from(
|
|
61
|
+
this.datasource.metricFindQuery(variable.state.query, __spreadProps(__spreadValues({}, request), {
|
|
62
|
+
variable: {
|
|
63
|
+
name: variable.state.name,
|
|
64
|
+
type: variable.state.type
|
|
65
|
+
},
|
|
66
|
+
searchFilter
|
|
67
|
+
}))
|
|
68
|
+
).pipe(
|
|
69
|
+
mergeMap((values) => {
|
|
70
|
+
if (!values || !values.length) {
|
|
71
|
+
return getEmptyMetricFindValueObservable();
|
|
72
|
+
}
|
|
73
|
+
const series = values;
|
|
74
|
+
return of({ series, state: LoadingState.Done, timeRange: request.range });
|
|
75
|
+
})
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
class CustomQueryRunner {
|
|
80
|
+
constructor(datasource, _runRequest = getRunRequest()) {
|
|
81
|
+
this.datasource = datasource;
|
|
82
|
+
this._runRequest = _runRequest;
|
|
83
|
+
}
|
|
84
|
+
getTarget(variable) {
|
|
85
|
+
if (hasCustomVariableSupport(this.datasource)) {
|
|
86
|
+
return variable.state.query;
|
|
87
|
+
}
|
|
88
|
+
throw new Error("Couldn't create a target with supplied arguments.");
|
|
89
|
+
}
|
|
90
|
+
runRequest(_, request) {
|
|
91
|
+
if (!hasCustomVariableSupport(this.datasource)) {
|
|
92
|
+
return getEmptyMetricFindValueObservable();
|
|
93
|
+
}
|
|
94
|
+
if (!this.datasource.variables.query) {
|
|
95
|
+
return this._runRequest(this.datasource, request);
|
|
96
|
+
}
|
|
97
|
+
return this._runRequest(this.datasource, request, this.datasource.variables.query.bind(this.datasource.variables));
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function getEmptyMetricFindValueObservable() {
|
|
101
|
+
return of({ state: LoadingState.Done, series: [], timeRange: getDefaultTimeRange() });
|
|
102
|
+
}
|
|
103
|
+
function createQueryVariableRunnerFactory(datasource) {
|
|
104
|
+
if (hasStandardVariableSupport(datasource)) {
|
|
105
|
+
return new StandardQueryRunner(datasource, getRunRequest());
|
|
106
|
+
}
|
|
107
|
+
if (hasLegacyVariableSupport(datasource)) {
|
|
108
|
+
return new LegacyQueryRunner(datasource);
|
|
109
|
+
}
|
|
110
|
+
if (hasCustomVariableSupport(datasource)) {
|
|
111
|
+
return new CustomQueryRunner(datasource);
|
|
112
|
+
}
|
|
113
|
+
throw new Error(`Couldn't create a query runner for datasource ${datasource.type}`);
|
|
114
|
+
}
|
|
115
|
+
let createQueryVariableRunner = createQueryVariableRunnerFactory;
|
|
116
|
+
function ensureVariableQueryModelIsADataQuery(variable) {
|
|
117
|
+
var _a;
|
|
118
|
+
const query = (_a = variable.state.query) != null ? _a : "";
|
|
119
|
+
if (typeof query === "string") {
|
|
120
|
+
return { query, refId: `variable-${variable.state.name}` };
|
|
121
|
+
}
|
|
122
|
+
if (query.refId == null) {
|
|
123
|
+
return __spreadProps(__spreadValues({}, query), { refId: `variable-${variable.state.name}` });
|
|
124
|
+
}
|
|
125
|
+
return variable.state.query;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export { createQueryVariableRunner };
|
|
129
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlUXVlcnlWYXJpYWJsZVJ1bm5lci5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3ZhcmlhYmxlcy92YXJpYW50cy9xdWVyeS9jcmVhdGVRdWVyeVZhcmlhYmxlUnVubmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb20sIG1lcmdlTWFwLCBPYnNlcnZhYmxlLCBvZiB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICBEYXRhUXVlcnlSZXF1ZXN0LFxuICBEYXRhU291cmNlQXBpLFxuICBnZXREZWZhdWx0VGltZVJhbmdlLFxuICBMb2FkaW5nU3RhdGUsXG4gIFBhbmVsRGF0YSxcbiAgU3RhbmRhcmRWYXJpYWJsZVF1ZXJ5LFxufSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IGdldFJ1blJlcXVlc3QgfSBmcm9tICdAZ3JhZmFuYS9ydW50aW1lJztcblxuaW1wb3J0IHsgaGFzQ3VzdG9tVmFyaWFibGVTdXBwb3J0LCBoYXNMZWdhY3lWYXJpYWJsZVN1cHBvcnQsIGhhc1N0YW5kYXJkVmFyaWFibGVTdXBwb3J0IH0gZnJvbSAnLi9ndWFyZHMnO1xuXG5pbXBvcnQgeyBRdWVyeVZhcmlhYmxlIH0gZnJvbSAnLi9RdWVyeVZhcmlhYmxlJztcbmltcG9ydCB7IERhdGFRdWVyeSB9IGZyb20gJ0BncmFmYW5hL3NjaGVtYSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnVubmVyQXJncyB7XG4gIHNlYXJjaEZpbHRlcj86IHN0cmluZztcbiAgdmFyaWFibGU6IFF1ZXJ5VmFyaWFibGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSdW5uZXIge1xuICBnZXRUYXJnZXQ6ICh2YXJpYWJsZTogUXVlcnlWYXJpYWJsZSkgPT4gRGF0YVF1ZXJ5IHwgc3RyaW5nO1xuICBydW5SZXF1ZXN0OiAoYXJnczogUnVubmVyQXJncywgcmVxdWVzdDogRGF0YVF1ZXJ5UmVxdWVzdCkgPT4gT2JzZXJ2YWJsZTxQYW5lbERhdGE+O1xufVxuXG5jbGFzcyBTdGFuZGFyZFF1ZXJ5UnVubmVyIGltcGxlbWVudHMgUXVlcnlSdW5uZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhc291cmNlOiBEYXRhU291cmNlQXBpLCBwcml2YXRlIF9ydW5SZXF1ZXN0ID0gZ2V0UnVuUmVxdWVzdCgpKSB7fVxuXG4gIHB1YmxpYyBnZXRUYXJnZXQodmFyaWFibGU6IFF1ZXJ5VmFyaWFibGUpIHtcbiAgICBpZiAoaGFzU3RhbmRhcmRWYXJpYWJsZVN1cHBvcnQodGhpcy5kYXRhc291cmNlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YXNvdXJjZS52YXJpYWJsZXMudG9EYXRhUXVlcnkoZW5zdXJlVmFyaWFibGVRdWVyeU1vZGVsSXNBRGF0YVF1ZXJ5KHZhcmlhYmxlKSk7XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgY3JlYXRlIGEgdGFyZ2V0IHdpdGggc3VwcGxpZWQgYXJndW1lbnRzLlwiKTtcbiAgfVxuXG4gIHB1YmxpYyBydW5SZXF1ZXN0KF86IFJ1bm5lckFyZ3MsIHJlcXVlc3Q6IERhdGFRdWVyeVJlcXVlc3QpIHtcbiAgICBpZiAoIWhhc1N0YW5kYXJkVmFyaWFibGVTdXBwb3J0KHRoaXMuZGF0YXNvdXJjZSkpIHtcbiAgICAgIHJldHVybiBnZXRFbXB0eU1ldHJpY0ZpbmRWYWx1ZU9ic2VydmFibGUoKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuZGF0YXNvdXJjZS52YXJpYWJsZXMucXVlcnkpIHtcbiAgICAgIHJldHVybiB0aGlzLl9ydW5SZXF1ZXN0KHRoaXMuZGF0YXNvdXJjZSwgcmVxdWVzdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3J1blJlcXVlc3QodGhpcy5kYXRhc291cmNlLCByZXF1ZXN0LCB0aGlzLmRhdGFzb3VyY2UudmFyaWFibGVzLnF1ZXJ5LmJpbmQodGhpcy5kYXRhc291cmNlLnZhcmlhYmxlcykpO1xuICB9XG59XG5cbmNsYXNzIExlZ2FjeVF1ZXJ5UnVubmVyIGltcGxlbWVudHMgUXVlcnlSdW5uZXIge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRhc291cmNlOiBEYXRhU291cmNlQXBpKSB7fVxuXG4gIHB1YmxpYyBnZXRUYXJnZXQodmFyaWFibGU6IFF1ZXJ5VmFyaWFibGUpIHtcbiAgICBpZiAoaGFzTGVnYWN5VmFyaWFibGVTdXBwb3J0KHRoaXMuZGF0YXNvdXJjZSkpIHtcbiAgICAgIHJldHVybiB2YXJpYWJsZS5zdGF0ZS5xdWVyeTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBjcmVhdGUgYSB0YXJnZXQgd2l0aCBzdXBwbGllZCBhcmd1bWVudHMuXCIpO1xuICB9XG5cbiAgcHVibGljIHJ1blJlcXVlc3QoeyB2YXJpYWJsZSwgc2VhcmNoRmlsdGVyIH06IFJ1bm5lckFyZ3MsIHJlcXVlc3Q6IERhdGFRdWVyeVJlcXVlc3QpIHtcbiAgICBpZiAoIWhhc0xlZ2FjeVZhcmlhYmxlU3VwcG9ydCh0aGlzLmRhdGFzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gZ2V0RW1wdHlNZXRyaWNGaW5kVmFsdWVPYnNlcnZhYmxlKCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZyb20oXG4gICAgICB0aGlzLmRhdGFzb3VyY2UubWV0cmljRmluZFF1ZXJ5KHZhcmlhYmxlLnN0YXRlLnF1ZXJ5LCB7XG4gICAgICAgIC4uLnJlcXVlc3QsXG4gICAgICAgIC8vIHZhcmlhYmxlIGlzIHVzZWQgYnkgU1FMIGNvbW1vbiBkYXRhIHNvdXJjZVxuICAgICAgICB2YXJpYWJsZToge1xuICAgICAgICAgIG5hbWU6IHZhcmlhYmxlLnN0YXRlLm5hbWUsXG4gICAgICAgICAgdHlwZTogdmFyaWFibGUuc3RhdGUudHlwZSxcbiAgICAgICAgfSxcbiAgICAgICAgc2VhcmNoRmlsdGVyLFxuICAgICAgfSlcbiAgICApLnBpcGUoXG4gICAgICBtZXJnZU1hcCgodmFsdWVzKSA9PiB7XG4gICAgICAgIGlmICghdmFsdWVzIHx8ICF2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgcmV0dXJuIGdldEVtcHR5TWV0cmljRmluZFZhbHVlT2JzZXJ2YWJsZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VyaWVzOiBhbnkgPSB2YWx1ZXM7XG4gICAgICAgIHJldHVybiBvZih7IHNlcmllcywgc3RhdGU6IExvYWRpbmdTdGF0ZS5Eb25lLCB0aW1lUmFuZ2U6IHJlcXVlc3QucmFuZ2UgfSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuY2xhc3MgQ3VzdG9tUXVlcnlSdW5uZXIgaW1wbGVtZW50cyBRdWVyeVJ1bm5lciB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIGRhdGFzb3VyY2U6IERhdGFTb3VyY2VBcGksIHByaXZhdGUgX3J1blJlcXVlc3QgPSBnZXRSdW5SZXF1ZXN0KCkpIHt9XG5cbiAgcHVibGljIGdldFRhcmdldCh2YXJpYWJsZTogUXVlcnlWYXJpYWJsZSkge1xuICAgIGlmIChoYXNDdXN0b21WYXJpYWJsZVN1cHBvcnQodGhpcy5kYXRhc291cmNlKSkge1xuICAgICAgcmV0dXJuIHZhcmlhYmxlLnN0YXRlLnF1ZXJ5O1xuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGNyZWF0ZSBhIHRhcmdldCB3aXRoIHN1cHBsaWVkIGFyZ3VtZW50cy5cIik7XG4gIH1cblxuICBwdWJsaWMgcnVuUmVxdWVzdChfOiBSdW5uZXJBcmdzLCByZXF1ZXN0OiBEYXRhUXVlcnlSZXF1ZXN0KSB7XG4gICAgaWYgKCFoYXNDdXN0b21WYXJpYWJsZVN1cHBvcnQodGhpcy5kYXRhc291cmNlKSkge1xuICAgICAgcmV0dXJuIGdldEVtcHR5TWV0cmljRmluZFZhbHVlT2JzZXJ2YWJsZSgpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5kYXRhc291cmNlLnZhcmlhYmxlcy5xdWVyeSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3J1blJlcXVlc3QodGhpcy5kYXRhc291cmNlLCByZXF1ZXN0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3J1blJlcXVlc3QodGhpcy5kYXRhc291cmNlLCByZXF1ZXN0LCB0aGlzLmRhdGFzb3VyY2UudmFyaWFibGVzLnF1ZXJ5LmJpbmQodGhpcy5kYXRhc291cmNlLnZhcmlhYmxlcykpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEVtcHR5TWV0cmljRmluZFZhbHVlT2JzZXJ2YWJsZSgpOiBPYnNlcnZhYmxlPFBhbmVsRGF0YT4ge1xuICByZXR1cm4gb2YoeyBzdGF0ZTogTG9hZGluZ1N0YXRlLkRvbmUsIHNlcmllczogW10sIHRpbWVSYW5nZTogZ2V0RGVmYXVsdFRpbWVSYW5nZSgpIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVRdWVyeVZhcmlhYmxlUnVubmVyRmFjdG9yeShkYXRhc291cmNlOiBEYXRhU291cmNlQXBpKTogUXVlcnlSdW5uZXIge1xuICBpZiAoaGFzU3RhbmRhcmRWYXJpYWJsZVN1cHBvcnQoZGF0YXNvdXJjZSkpIHtcbiAgICByZXR1cm4gbmV3IFN0YW5kYXJkUXVlcnlSdW5uZXIoZGF0YXNvdXJjZSwgZ2V0UnVuUmVxdWVzdCgpKTtcbiAgfVxuXG4gIGlmIChoYXNMZWdhY3lWYXJpYWJsZVN1cHBvcnQoZGF0YXNvdXJjZSkpIHtcbiAgICByZXR1cm4gbmV3IExlZ2FjeVF1ZXJ5UnVubmVyKGRhdGFzb3VyY2UpO1xuICB9XG5cbiAgaWYgKGhhc0N1c3RvbVZhcmlhYmxlU3VwcG9ydChkYXRhc291cmNlKSkge1xuICAgIHJldHVybiBuZXcgQ3VzdG9tUXVlcnlSdW5uZXIoZGF0YXNvdXJjZSk7XG4gIH1cblxuICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkbid0IGNyZWF0ZSBhIHF1ZXJ5IHJ1bm5lciBmb3IgZGF0YXNvdXJjZSAke2RhdGFzb3VyY2UudHlwZX1gKTtcbn1cblxuZXhwb3J0IGxldCBjcmVhdGVRdWVyeVZhcmlhYmxlUnVubmVyID0gY3JlYXRlUXVlcnlWYXJpYWJsZVJ1bm5lckZhY3Rvcnk7XG5cbi8qKlxuICogVXNlIG9ubHkgaW4gdGVzdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNldENyZWF0ZVF1ZXJ5VmFyaWFibGVSdW5uZXJGYWN0b3J5KGZuOiAoZGF0YXNvdXJjZTogRGF0YVNvdXJjZUFwaSkgPT4gUXVlcnlSdW5uZXIpIHtcbiAgY3JlYXRlUXVlcnlWYXJpYWJsZVJ1bm5lciA9IGZuO1xufVxuXG4vKipcbiAqIEZpeGVzIG9sZCBsZWdhY3kgcXVlcnkgc3RyaW5nIG1vZGVscyBhbmQgYWRkcyByZWZJZCBpZiBtaXNzaW5nXG4gKi9cbmZ1bmN0aW9uIGVuc3VyZVZhcmlhYmxlUXVlcnlNb2RlbElzQURhdGFRdWVyeSh2YXJpYWJsZTogUXVlcnlWYXJpYWJsZSk6IFN0YW5kYXJkVmFyaWFibGVRdWVyeSB7XG4gIGNvbnN0IHF1ZXJ5ID0gdmFyaWFibGUuc3RhdGUucXVlcnkgPz8gJyc7XG5cbiAgLy8gVHVybiBpbnRvIHF1ZXJ5IG9iamVjdCBpZiBpdCdzIGp1c3QgYSBzdHJpbmdcbiAgaWYgKHR5cGVvZiBxdWVyeSA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4geyBxdWVyeSwgcmVmSWQ6IGB2YXJpYWJsZS0ke3ZhcmlhYmxlLnN0YXRlLm5hbWV9YCB9O1xuICB9XG5cbiAgLy8gQWRkIHBvdGVudGlhbGx5IG1pc3NpbmcgcmVmSWRcbiAgaWYgKHF1ZXJ5LnJlZklkID09IG51bGwpIHtcbiAgICByZXR1cm4geyAuLi5xdWVyeSwgcmVmSWQ6IGB2YXJpYWJsZS0ke3ZhcmlhYmxlLnN0YXRlLm5hbWV9YCB9IGFzIFN0YW5kYXJkVmFyaWFibGVRdWVyeTtcbiAgfVxuXG4gIHJldHVybiB2YXJpYWJsZS5zdGF0ZS5xdWVyeSBhcyBTdGFuZGFyZFZhcmlhYmxlUXVlcnk7XG59XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMkJBLE1BQU0sbUJBQTJDLENBQUE7QUFBQSxFQUN4QyxXQUFvQixDQUFBLFVBQUEsRUFBbUMsV0FBYyxHQUFBLGFBQUEsRUFBaUIsRUFBQTtBQUFsRSxJQUFBLElBQUEsQ0FBQSxVQUFBLEdBQUEsVUFBQSxDQUFBO0FBQW1DLElBQUEsSUFBQSxDQUFBLFdBQUEsR0FBQSxXQUFBLENBQUE7QUFBQSxHQUFnQztBQUFBLEVBRXZGLFVBQVUsUUFBeUIsRUFBQTtBQUN4QyxJQUFJLElBQUEsMEJBQUEsQ0FBMkIsSUFBSyxDQUFBLFVBQVUsQ0FBRyxFQUFBO0FBQy9DLE1BQUEsT0FBTyxLQUFLLFVBQVcsQ0FBQSxTQUFBLENBQVUsV0FBWSxDQUFBLG9DQUFBLENBQXFDLFFBQVEsQ0FBQyxDQUFBLENBQUE7QUFBQSxLQUM3RjtBQUVBLElBQU0sTUFBQSxJQUFJLE1BQU0sbURBQW1ELENBQUEsQ0FBQTtBQUFBLEdBQ3JFO0FBQUEsRUFFTyxVQUFBLENBQVcsR0FBZSxPQUEyQixFQUFBO0FBQzFELElBQUEsSUFBSSxDQUFDLDBCQUFBLENBQTJCLElBQUssQ0FBQSxVQUFVLENBQUcsRUFBQTtBQUNoRCxNQUFBLE9BQU8saUNBQWtDLEVBQUEsQ0FBQTtBQUFBLEtBQzNDO0FBRUEsSUFBQSxJQUFJLENBQUMsSUFBQSxDQUFLLFVBQVcsQ0FBQSxTQUFBLENBQVUsS0FBTyxFQUFBO0FBQ3BDLE1BQUEsT0FBTyxJQUFLLENBQUEsV0FBQSxDQUFZLElBQUssQ0FBQSxVQUFBLEVBQVksT0FBTyxDQUFBLENBQUE7QUFBQSxLQUNsRDtBQUVBLElBQUEsT0FBTyxJQUFLLENBQUEsV0FBQSxDQUFZLElBQUssQ0FBQSxVQUFBLEVBQVksT0FBUyxFQUFBLElBQUEsQ0FBSyxVQUFXLENBQUEsU0FBQSxDQUFVLEtBQU0sQ0FBQSxJQUFBLENBQUssSUFBSyxDQUFBLFVBQUEsQ0FBVyxTQUFTLENBQUMsQ0FBQSxDQUFBO0FBQUEsR0FDbkg7QUFDRixDQUFBO0FBRUEsTUFBTSxpQkFBeUMsQ0FBQTtBQUFBLEVBQ3RDLFlBQW9CLFVBQTJCLEVBQUE7QUFBM0IsSUFBQSxJQUFBLENBQUEsVUFBQSxHQUFBLFVBQUEsQ0FBQTtBQUFBLEdBQTRCO0FBQUEsRUFFaEQsVUFBVSxRQUF5QixFQUFBO0FBQ3hDLElBQUksSUFBQSx3QkFBQSxDQUF5QixJQUFLLENBQUEsVUFBVSxDQUFHLEVBQUE7QUFDN0MsTUFBQSxPQUFPLFNBQVMsS0FBTSxDQUFBLEtBQUEsQ0FBQTtBQUFBLEtBQ3hCO0FBRUEsSUFBTSxNQUFBLElBQUksTUFBTSxtREFBbUQsQ0FBQSxDQUFBO0FBQUEsR0FDckU7QUFBQSxFQUVPLFVBQVcsQ0FBQSxFQUFFLFFBQVUsRUFBQSxZQUFBLElBQTRCLE9BQTJCLEVBQUE7QUFDbkYsSUFBQSxJQUFJLENBQUMsd0JBQUEsQ0FBeUIsSUFBSyxDQUFBLFVBQVUsQ0FBRyxFQUFBO0FBQzlDLE1BQUEsT0FBTyxpQ0FBa0MsRUFBQSxDQUFBO0FBQUEsS0FDM0M7QUFFQSxJQUFPLE9BQUEsSUFBQTtBQUFBLE1BQ0wsS0FBSyxVQUFXLENBQUEsZUFBQSxDQUFnQixTQUFTLEtBQU0sQ0FBQSxLQUFBLEVBQU8saUNBQ2pELE9BRGlELENBQUEsRUFBQTtBQUFBLFFBR3BELFFBQVUsRUFBQTtBQUFBLFVBQ1IsSUFBQSxFQUFNLFNBQVMsS0FBTSxDQUFBLElBQUE7QUFBQSxVQUNyQixJQUFBLEVBQU0sU0FBUyxLQUFNLENBQUEsSUFBQTtBQUFBLFNBQ3ZCO0FBQUEsUUFDQSxZQUFBO0FBQUEsT0FDRCxDQUFBLENBQUE7QUFBQSxLQUNELENBQUEsSUFBQTtBQUFBLE1BQ0EsUUFBQSxDQUFTLENBQUMsTUFBVyxLQUFBO0FBQ25CLFFBQUEsSUFBSSxDQUFDLE1BQUEsSUFBVSxDQUFDLE1BQUEsQ0FBTyxNQUFRLEVBQUE7QUFDN0IsVUFBQSxPQUFPLGlDQUFrQyxFQUFBLENBQUE7QUFBQSxTQUMzQztBQUVBLFFBQUEsTUFBTSxNQUFjLEdBQUEsTUFBQSxDQUFBO0FBQ3BCLFFBQU8sT0FBQSxFQUFBLENBQUcsRUFBRSxNQUFRLEVBQUEsS0FBQSxFQUFPLGFBQWEsSUFBTSxFQUFBLFNBQUEsRUFBVyxPQUFRLENBQUEsS0FBQSxFQUFPLENBQUEsQ0FBQTtBQUFBLE9BQ3pFLENBQUE7QUFBQSxLQUNILENBQUE7QUFBQSxHQUNGO0FBQ0YsQ0FBQTtBQUVBLE1BQU0saUJBQXlDLENBQUE7QUFBQSxFQUN0QyxXQUFvQixDQUFBLFVBQUEsRUFBbUMsV0FBYyxHQUFBLGFBQUEsRUFBaUIsRUFBQTtBQUFsRSxJQUFBLElBQUEsQ0FBQSxVQUFBLEdBQUEsVUFBQSxDQUFBO0FBQW1DLElBQUEsSUFBQSxDQUFBLFdBQUEsR0FBQSxXQUFBLENBQUE7QUFBQSxHQUFnQztBQUFBLEVBRXZGLFVBQVUsUUFBeUIsRUFBQTtBQUN4QyxJQUFJLElBQUEsd0JBQUEsQ0FBeUIsSUFBSyxDQUFBLFVBQVUsQ0FBRyxFQUFBO0FBQzdDLE1BQUEsT0FBTyxTQUFTLEtBQU0sQ0FBQSxLQUFBLENBQUE7QUFBQSxLQUN4QjtBQUVBLElBQU0sTUFBQSxJQUFJLE1BQU0sbURBQW1ELENBQUEsQ0FBQTtBQUFBLEdBQ3JFO0FBQUEsRUFFTyxVQUFBLENBQVcsR0FBZSxPQUEyQixFQUFBO0FBQzFELElBQUEsSUFBSSxDQUFDLHdCQUFBLENBQXlCLElBQUssQ0FBQSxVQUFVLENBQUcsRUFBQTtBQUM5QyxNQUFBLE9BQU8saUNBQWtDLEVBQUEsQ0FBQTtBQUFBLEtBQzNDO0FBRUEsSUFBQSxJQUFJLENBQUMsSUFBQSxDQUFLLFVBQVcsQ0FBQSxTQUFBLENBQVUsS0FBTyxFQUFBO0FBQ3BDLE1BQUEsT0FBTyxJQUFLLENBQUEsV0FBQSxDQUFZLElBQUssQ0FBQSxVQUFBLEVBQVksT0FBTyxDQUFBLENBQUE7QUFBQSxLQUNsRDtBQUNBLElBQUEsT0FBTyxJQUFLLENBQUEsV0FBQSxDQUFZLElBQUssQ0FBQSxVQUFBLEVBQVksT0FBUyxFQUFBLElBQUEsQ0FBSyxVQUFXLENBQUEsU0FBQSxDQUFVLEtBQU0sQ0FBQSxJQUFBLENBQUssSUFBSyxDQUFBLFVBQUEsQ0FBVyxTQUFTLENBQUMsQ0FBQSxDQUFBO0FBQUEsR0FDbkg7QUFDRixDQUFBO0FBRUEsU0FBUyxpQ0FBMkQsR0FBQTtBQUNsRSxFQUFPLE9BQUEsRUFBQSxDQUFHLEVBQUUsS0FBQSxFQUFPLFlBQWEsQ0FBQSxJQUFBLEVBQU0sTUFBUSxFQUFBLEVBQUksRUFBQSxTQUFBLEVBQVcsbUJBQW9CLEVBQUEsRUFBRyxDQUFBLENBQUE7QUFDdEYsQ0FBQTtBQUVBLFNBQVMsaUNBQWlDLFVBQXdDLEVBQUE7QUFDaEYsRUFBSSxJQUFBLDBCQUFBLENBQTJCLFVBQVUsQ0FBRyxFQUFBO0FBQzFDLElBQUEsT0FBTyxJQUFJLG1CQUFBLENBQW9CLFVBQVksRUFBQSxhQUFBLEVBQWUsQ0FBQSxDQUFBO0FBQUEsR0FDNUQ7QUFFQSxFQUFJLElBQUEsd0JBQUEsQ0FBeUIsVUFBVSxDQUFHLEVBQUE7QUFDeEMsSUFBTyxPQUFBLElBQUksa0JBQWtCLFVBQVUsQ0FBQSxDQUFBO0FBQUEsR0FDekM7QUFFQSxFQUFJLElBQUEsd0JBQUEsQ0FBeUIsVUFBVSxDQUFHLEVBQUE7QUFDeEMsSUFBTyxPQUFBLElBQUksa0JBQWtCLFVBQVUsQ0FBQSxDQUFBO0FBQUEsR0FDekM7QUFFQSxFQUFBLE1BQU0sSUFBSSxLQUFBLENBQU0sQ0FBaUQsOENBQUEsRUFBQSxVQUFBLENBQVcsSUFBTSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ3BGLENBQUE7QUFFTyxJQUFJLHlCQUE0QixHQUFBLGlDQUFBO0FBWXZDLFNBQVMscUNBQXFDLFFBQWdELEVBQUE7QUFqSjlGLEVBQUEsSUFBQSxFQUFBLENBQUE7QUFrSkUsRUFBQSxNQUFNLEtBQVEsR0FBQSxDQUFBLEVBQUEsR0FBQSxRQUFBLENBQVMsS0FBTSxDQUFBLEtBQUEsS0FBZixJQUF3QixHQUFBLEVBQUEsR0FBQSxFQUFBLENBQUE7QUFHdEMsRUFBSSxJQUFBLE9BQU8sVUFBVSxRQUFVLEVBQUE7QUFDN0IsSUFBQSxPQUFPLEVBQUUsS0FBTyxFQUFBLEtBQUEsRUFBTyxDQUFZLFNBQUEsRUFBQSxRQUFBLENBQVMsTUFBTSxJQUFPLENBQUEsQ0FBQSxFQUFBLENBQUE7QUFBQSxHQUMzRDtBQUdBLEVBQUksSUFBQSxLQUFBLENBQU0sU0FBUyxJQUFNLEVBQUE7QUFDdkIsSUFBQSxPQUFPLGlDQUFLLEtBQUwsQ0FBQSxFQUFBLEVBQVksT0FBTyxDQUFZLFNBQUEsRUFBQSxRQUFBLENBQVMsTUFBTSxJQUFPLENBQUEsQ0FBQSxFQUFBLENBQUEsQ0FBQTtBQUFBLEdBQzlEO0FBRUEsRUFBQSxPQUFPLFNBQVMsS0FBTSxDQUFBLEtBQUEsQ0FBQTtBQUN4Qjs7OzsifQ==
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { VariableSupportType } from '@grafana/data';
|
|
2
|
+
|
|
3
|
+
const hasLegacyVariableSupport = (datasource) => {
|
|
4
|
+
return Boolean(datasource.metricFindQuery) && !Boolean(datasource.variables);
|
|
5
|
+
};
|
|
6
|
+
const hasStandardVariableSupport = (datasource) => {
|
|
7
|
+
if (!datasource.variables) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
if (datasource.variables.getType() !== VariableSupportType.Standard) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
const variableSupport = datasource.variables;
|
|
14
|
+
return "toDataQuery" in variableSupport && Boolean(variableSupport.toDataQuery);
|
|
15
|
+
};
|
|
16
|
+
const hasCustomVariableSupport = (datasource) => {
|
|
17
|
+
if (!datasource.variables) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (datasource.variables.getType() !== VariableSupportType.Custom) {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
const variableSupport = datasource.variables;
|
|
24
|
+
return "query" in variableSupport && "editor" in variableSupport && Boolean(variableSupport.query) && Boolean(variableSupport.editor);
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export { hasCustomVariableSupport, hasLegacyVariableSupport, hasStandardVariableSupport };
|
|
28
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdmFyaWFibGVzL3ZhcmlhbnRzL3F1ZXJ5L2d1YXJkcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEYXRhUXVlcnksXG4gIERhdGFTb3VyY2VKc29uRGF0YSxcbiAgRGF0YVNvdXJjZUFwaSxcbiAgTWV0cmljRmluZFZhbHVlLFxuICBWYXJpYWJsZVN1cHBvcnRUeXBlLFxuICBTdGFuZGFyZFZhcmlhYmxlUXVlcnksXG4gIERhdGFRdWVyeVJlcXVlc3QsXG4gIERhdGFRdWVyeVJlc3BvbnNlLFxuICBRdWVyeUVkaXRvclByb3BzLFxufSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcbmltcG9ydCB7IFRlbXBsYXRlU3J2IH0gZnJvbSAnQGdyYWZhbmEvcnVudGltZSc7XG5pbXBvcnQgeyBDb21wb25lbnRUeXBlIH0gZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICogSW50ZXJmYWNlcyBhbmQgZ3VhcmRzIGJlbG93IGFyZSBjb3BpZWQgZnJvbSBjb3JlLlxuICogTm90IGV4cG9zaW5nIHZpYSBncmFmYW5hL2RhdGEgYXMgdGhlc2UgYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkIGluIGNvbnRleHQgb3RoZXIgdGhhbiB2YXJpYWJsZXMuXG4gKi9cblxuaW50ZXJmYWNlIERhdGFTb3VyY2VXaXRoTGVnYWN5VmFyaWFibGVTdXBwb3J0PFxuICBUUXVlcnkgZXh0ZW5kcyBEYXRhUXVlcnkgPSBEYXRhUXVlcnksXG4gIFRPcHRpb25zIGV4dGVuZHMgRGF0YVNvdXJjZUpzb25EYXRhID0gRGF0YVNvdXJjZUpzb25EYXRhXG4+IGV4dGVuZHMgRGF0YVNvdXJjZUFwaTxUUXVlcnksIFRPcHRpb25zPiB7XG4gIG1ldHJpY0ZpbmRRdWVyeShxdWVyeTogYW55LCBvcHRpb25zPzogYW55KTogUHJvbWlzZTxNZXRyaWNGaW5kVmFsdWVbXT47XG4gIHZhcmlhYmxlczogdW5kZWZpbmVkO1xufVxuXG5pbnRlcmZhY2UgRGF0YVNvdXJjZVdpdGhTdGFuZGFyZFZhcmlhYmxlU3VwcG9ydDxcbiAgVFF1ZXJ5IGV4dGVuZHMgRGF0YVF1ZXJ5ID0gRGF0YVF1ZXJ5LFxuICBUT3B0aW9ucyBleHRlbmRzIERhdGFTb3VyY2VKc29uRGF0YSA9IERhdGFTb3VyY2VKc29uRGF0YVxuPiBleHRlbmRzIERhdGFTb3VyY2VBcGk8VFF1ZXJ5LCBUT3B0aW9ucz4ge1xuICB2YXJpYWJsZXM6IHtcbiAgICBnZXRUeXBlKCk6IFZhcmlhYmxlU3VwcG9ydFR5cGU7XG4gICAgdG9EYXRhUXVlcnkocXVlcnk6IFN0YW5kYXJkVmFyaWFibGVRdWVyeSk6IFRRdWVyeTtcbiAgICBxdWVyeShyZXF1ZXN0OiBEYXRhUXVlcnlSZXF1ZXN0PFRRdWVyeT4pOiBPYnNlcnZhYmxlPERhdGFRdWVyeVJlc3BvbnNlPjtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIERhdGFTb3VyY2VXaXRoQ3VzdG9tVmFyaWFibGVTdXBwb3J0PFxuICBUUXVlcnkgZXh0ZW5kcyBEYXRhUXVlcnkgPSBEYXRhUXVlcnksXG4gIFRPcHRpb25zIGV4dGVuZHMgRGF0YVNvdXJjZUpzb25EYXRhID0gRGF0YVNvdXJjZUpzb25EYXRhXG4+IGV4dGVuZHMgRGF0YVNvdXJjZUFwaTxUUXVlcnksIFRPcHRpb25zPiB7XG4gIHZhcmlhYmxlczoge1xuICAgIGdldFR5cGUoKTogVmFyaWFibGVTdXBwb3J0VHlwZTtcbiAgICBlZGl0b3I6IFZhcmlhYmxlUXVlcnlFZGl0b3JUeXBlO1xuICAgIHF1ZXJ5KHJlcXVlc3Q6IERhdGFRdWVyeVJlcXVlc3Q8VFF1ZXJ5Pik6IE9ic2VydmFibGU8RGF0YVF1ZXJ5UmVzcG9uc2U+O1xuICB9O1xufVxuXG5pbnRlcmZhY2UgVmFyaWFibGVRdWVyeUVkaXRvclByb3BzIHtcbiAgcXVlcnk6IGFueTtcbiAgb25DaGFuZ2U6IChxdWVyeTogYW55LCBkZWZpbml0aW9uOiBzdHJpbmcpID0+IHZvaWQ7XG4gIGRhdGFzb3VyY2U6IGFueTtcbiAgdGVtcGxhdGVTcnY6IFRlbXBsYXRlU3J2O1xufVxuXG50eXBlIFZhcmlhYmxlUXVlcnlFZGl0b3JUeXBlPFxuICBUUXVlcnkgZXh0ZW5kcyBEYXRhUXVlcnkgPSBEYXRhUXVlcnksXG4gIFRPcHRpb25zIGV4dGVuZHMgRGF0YVNvdXJjZUpzb25EYXRhID0gRGF0YVNvdXJjZUpzb25EYXRhXG4+ID0gQ29tcG9uZW50VHlwZTxWYXJpYWJsZVF1ZXJ5RWRpdG9yUHJvcHM+IHwgQ29tcG9uZW50VHlwZTxRdWVyeUVkaXRvclByb3BzPGFueSwgVFF1ZXJ5LCBUT3B0aW9ucywgYW55Pj4gfCBudWxsO1xuXG5leHBvcnQgY29uc3QgaGFzTGVnYWN5VmFyaWFibGVTdXBwb3J0ID0gPFxuICBUUXVlcnkgZXh0ZW5kcyBEYXRhUXVlcnkgPSBEYXRhUXVlcnksXG4gIFRPcHRpb25zIGV4dGVuZHMgRGF0YVNvdXJjZUpzb25EYXRhID0gRGF0YVNvdXJjZUpzb25EYXRhXG4+KFxuICBkYXRhc291cmNlOiBEYXRhU291cmNlQXBpPFRRdWVyeSwgVE9wdGlvbnM+XG4pOiBkYXRhc291cmNlIGlzIERhdGFTb3VyY2VXaXRoTGVnYWN5VmFyaWFibGVTdXBwb3J0PFRRdWVyeSwgVE9wdGlvbnM+ID0+IHtcbiAgcmV0dXJuIEJvb2xlYW4oZGF0YXNvdXJjZS5tZXRyaWNGaW5kUXVlcnkpICYmICFCb29sZWFuKGRhdGFzb3VyY2UudmFyaWFibGVzKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNTdGFuZGFyZFZhcmlhYmxlU3VwcG9ydCA9IDxcbiAgVFF1ZXJ5IGV4dGVuZHMgRGF0YVF1ZXJ5ID0gRGF0YVF1ZXJ5LFxuICBUT3B0aW9ucyBleHRlbmRzIERhdGFTb3VyY2VKc29uRGF0YSA9IERhdGFTb3VyY2VKc29uRGF0YVxuPihcbiAgZGF0YXNvdXJjZTogRGF0YVNvdXJjZUFwaTxUUXVlcnksIFRPcHRpb25zPlxuKTogZGF0YXNvdXJjZSBpcyBEYXRhU291cmNlV2l0aFN0YW5kYXJkVmFyaWFibGVTdXBwb3J0PFRRdWVyeSwgVE9wdGlvbnM+ID0+IHtcbiAgaWYgKCFkYXRhc291cmNlLnZhcmlhYmxlcykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChkYXRhc291cmNlLnZhcmlhYmxlcy5nZXRUeXBlKCkgIT09IFZhcmlhYmxlU3VwcG9ydFR5cGUuU3RhbmRhcmQpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB2YXJpYWJsZVN1cHBvcnQgPSBkYXRhc291cmNlLnZhcmlhYmxlcztcbiAgcmV0dXJuICd0b0RhdGFRdWVyeScgaW4gdmFyaWFibGVTdXBwb3J0ICYmIEJvb2xlYW4odmFyaWFibGVTdXBwb3J0LnRvRGF0YVF1ZXJ5KTtcbn07XG5cbmV4cG9ydCBjb25zdCBoYXNDdXN0b21WYXJpYWJsZVN1cHBvcnQgPSA8XG4gIFRRdWVyeSBleHRlbmRzIERhdGFRdWVyeSA9IERhdGFRdWVyeSxcbiAgVE9wdGlvbnMgZXh0ZW5kcyBEYXRhU291cmNlSnNvbkRhdGEgPSBEYXRhU291cmNlSnNvbkRhdGFcbj4oXG4gIGRhdGFzb3VyY2U6IERhdGFTb3VyY2VBcGk8VFF1ZXJ5LCBUT3B0aW9ucz5cbik6IGRhdGFzb3VyY2UgaXMgRGF0YVNvdXJjZVdpdGhDdXN0b21WYXJpYWJsZVN1cHBvcnQ8VFF1ZXJ5LCBUT3B0aW9ucz4gPT4ge1xuICBpZiAoIWRhdGFzb3VyY2UudmFyaWFibGVzKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGRhdGFzb3VyY2UudmFyaWFibGVzLmdldFR5cGUoKSAhPT0gVmFyaWFibGVTdXBwb3J0VHlwZS5DdXN0b20pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCB2YXJpYWJsZVN1cHBvcnQgPSBkYXRhc291cmNlLnZhcmlhYmxlcztcbiAgcmV0dXJuIChcbiAgICAncXVlcnknIGluIHZhcmlhYmxlU3VwcG9ydCAmJlxuICAgICdlZGl0b3InIGluIHZhcmlhYmxlU3VwcG9ydCAmJlxuICAgIEJvb2xlYW4odmFyaWFibGVTdXBwb3J0LnF1ZXJ5KSAmJlxuICAgIEJvb2xlYW4odmFyaWFibGVTdXBwb3J0LmVkaXRvcilcbiAgKTtcbn07XG4iXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUErRGEsTUFBQSx3QkFBQSxHQUEyQixDQUl0QyxVQUN3RSxLQUFBO0FBQ3hFLEVBQUEsT0FBTyxRQUFRLFVBQVcsQ0FBQSxlQUFlLEtBQUssQ0FBQyxPQUFBLENBQVEsV0FBVyxTQUFTLENBQUEsQ0FBQTtBQUM3RSxFQUFBO0FBRWEsTUFBQSwwQkFBQSxHQUE2QixDQUl4QyxVQUMwRSxLQUFBO0FBQzFFLEVBQUksSUFBQSxDQUFDLFdBQVcsU0FBVyxFQUFBO0FBQ3pCLElBQU8sT0FBQSxLQUFBLENBQUE7QUFBQSxHQUNUO0FBRUEsRUFBQSxJQUFJLFVBQVcsQ0FBQSxTQUFBLENBQVUsT0FBUSxFQUFBLEtBQU0sb0JBQW9CLFFBQVUsRUFBQTtBQUNuRSxJQUFPLE9BQUEsS0FBQSxDQUFBO0FBQUEsR0FDVDtBQUVBLEVBQUEsTUFBTSxrQkFBa0IsVUFBVyxDQUFBLFNBQUEsQ0FBQTtBQUNuQyxFQUFBLE9BQU8sYUFBaUIsSUFBQSxlQUFBLElBQW1CLE9BQVEsQ0FBQSxlQUFBLENBQWdCLFdBQVcsQ0FBQSxDQUFBO0FBQ2hGLEVBQUE7QUFFYSxNQUFBLHdCQUFBLEdBQTJCLENBSXRDLFVBQ3dFLEtBQUE7QUFDeEUsRUFBSSxJQUFBLENBQUMsV0FBVyxTQUFXLEVBQUE7QUFDekIsSUFBTyxPQUFBLEtBQUEsQ0FBQTtBQUFBLEdBQ1Q7QUFFQSxFQUFBLElBQUksVUFBVyxDQUFBLFNBQUEsQ0FBVSxPQUFRLEVBQUEsS0FBTSxvQkFBb0IsTUFBUSxFQUFBO0FBQ2pFLElBQU8sT0FBQSxLQUFBLENBQUE7QUFBQSxHQUNUO0FBRUEsRUFBQSxNQUFNLGtCQUFrQixVQUFXLENBQUEsU0FBQSxDQUFBO0FBQ25DLEVBQ0UsT0FBQSxPQUFBLElBQVcsZUFDWCxJQUFBLFFBQUEsSUFBWSxlQUNaLElBQUEsT0FBQSxDQUFRLGdCQUFnQixLQUFLLENBQUEsSUFDN0IsT0FBUSxDQUFBLGVBQUEsQ0FBZ0IsTUFBTSxDQUFBLENBQUE7QUFFbEM7Ozs7In0=
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { getProcessedDataFrames, getFieldDisplayName, FieldType, isDataFrame } from '@grafana/data';
|
|
2
|
+
import { map } from 'rxjs';
|
|
3
|
+
|
|
4
|
+
function toMetricFindValues() {
|
|
5
|
+
return (source) => source.pipe(
|
|
6
|
+
map((panelData) => {
|
|
7
|
+
const frames = panelData.series;
|
|
8
|
+
if (!frames || !frames.length) {
|
|
9
|
+
return [];
|
|
10
|
+
}
|
|
11
|
+
if (areMetricFindValues(frames)) {
|
|
12
|
+
return frames;
|
|
13
|
+
}
|
|
14
|
+
if (frames[0].fields.length === 0) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
const processedDataFrames = getProcessedDataFrames(frames);
|
|
18
|
+
const metrics = [];
|
|
19
|
+
let valueIndex = -1;
|
|
20
|
+
let textIndex = -1;
|
|
21
|
+
let stringIndex = -1;
|
|
22
|
+
let expandableIndex = -1;
|
|
23
|
+
for (const frame of processedDataFrames) {
|
|
24
|
+
for (let index = 0; index < frame.fields.length; index++) {
|
|
25
|
+
const field = frame.fields[index];
|
|
26
|
+
const fieldName = getFieldDisplayName(field, frame, frames).toLowerCase();
|
|
27
|
+
if (field.type === FieldType.string && stringIndex === -1) {
|
|
28
|
+
stringIndex = index;
|
|
29
|
+
}
|
|
30
|
+
if (fieldName === "text" && field.type === FieldType.string && textIndex === -1) {
|
|
31
|
+
textIndex = index;
|
|
32
|
+
}
|
|
33
|
+
if (fieldName === "value" && field.type === FieldType.string && valueIndex === -1) {
|
|
34
|
+
valueIndex = index;
|
|
35
|
+
}
|
|
36
|
+
if (fieldName === "expandable" && (field.type === FieldType.boolean || field.type === FieldType.number) && expandableIndex === -1) {
|
|
37
|
+
expandableIndex = index;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (stringIndex === -1) {
|
|
42
|
+
throw new Error("Couldn't find any field of type string in the results.");
|
|
43
|
+
}
|
|
44
|
+
for (const frame of frames) {
|
|
45
|
+
for (let index = 0; index < frame.length; index++) {
|
|
46
|
+
const expandable = expandableIndex !== -1 ? frame.fields[expandableIndex].values.get(index) : void 0;
|
|
47
|
+
const string = frame.fields[stringIndex].values.get(index);
|
|
48
|
+
const text = textIndex !== -1 ? frame.fields[textIndex].values.get(index) : "";
|
|
49
|
+
const value = valueIndex !== -1 ? frame.fields[valueIndex].values.get(index) : "";
|
|
50
|
+
if (valueIndex === -1 && textIndex === -1) {
|
|
51
|
+
metrics.push({ text: string, value: string, expandable });
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
if (valueIndex === -1 && textIndex !== -1) {
|
|
55
|
+
metrics.push({ text, value: text, expandable });
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (valueIndex !== -1 && textIndex === -1) {
|
|
59
|
+
metrics.push({ text: value, value, expandable });
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
metrics.push({ text, value, expandable });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return metrics;
|
|
66
|
+
})
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
function areMetricFindValues(data) {
|
|
70
|
+
if (!data) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
if (!data.length) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
const firstValue = data[0];
|
|
77
|
+
if (isDataFrame(firstValue)) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
for (const firstValueKey in firstValue) {
|
|
81
|
+
if (!firstValue.hasOwnProperty(firstValueKey)) {
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (firstValue[firstValueKey] !== null && typeof firstValue[firstValueKey] !== "string" && typeof firstValue[firstValueKey] !== "number") {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const key = firstValueKey.toLowerCase();
|
|
88
|
+
if (key === "text" || key === "value") {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return false;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
export { toMetricFindValues };
|
|
96
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9NZXRyaWNGaW5kVmFsdWVzLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvdmFyaWFibGVzL3ZhcmlhbnRzL3F1ZXJ5L3RvTWV0cmljRmluZFZhbHVlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBGaWVsZFR5cGUsXG4gIGdldEZpZWxkRGlzcGxheU5hbWUsXG4gIGlzRGF0YUZyYW1lLFxuICBNZXRyaWNGaW5kVmFsdWUsXG4gIFBhbmVsRGF0YSxcbiAgZ2V0UHJvY2Vzc2VkRGF0YUZyYW1lcyxcbn0gZnJvbSAnQGdyYWZhbmEvZGF0YSc7XG5pbXBvcnQgeyBtYXAsIE9wZXJhdG9yRnVuY3Rpb24gfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHRvTWV0cmljRmluZFZhbHVlcygpOiBPcGVyYXRvckZ1bmN0aW9uPFBhbmVsRGF0YSwgTWV0cmljRmluZFZhbHVlW10+IHtcbiAgcmV0dXJuIChzb3VyY2UpID0+XG4gICAgc291cmNlLnBpcGUoXG4gICAgICBtYXAoKHBhbmVsRGF0YSkgPT4ge1xuICAgICAgICBjb25zdCBmcmFtZXMgPSBwYW5lbERhdGEuc2VyaWVzO1xuICAgICAgICBpZiAoIWZyYW1lcyB8fCAhZnJhbWVzLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChhcmVNZXRyaWNGaW5kVmFsdWVzKGZyYW1lcykpIHtcbiAgICAgICAgICByZXR1cm4gZnJhbWVzO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZyYW1lc1swXS5maWVsZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcHJvY2Vzc2VkRGF0YUZyYW1lcyA9IGdldFByb2Nlc3NlZERhdGFGcmFtZXMoZnJhbWVzKTtcbiAgICAgICAgY29uc3QgbWV0cmljczogTWV0cmljRmluZFZhbHVlW10gPSBbXTtcblxuICAgICAgICBsZXQgdmFsdWVJbmRleCA9IC0xO1xuICAgICAgICBsZXQgdGV4dEluZGV4ID0gLTE7XG4gICAgICAgIGxldCBzdHJpbmdJbmRleCA9IC0xO1xuICAgICAgICBsZXQgZXhwYW5kYWJsZUluZGV4ID0gLTE7XG5cbiAgICAgICAgZm9yIChjb25zdCBmcmFtZSBvZiBwcm9jZXNzZWREYXRhRnJhbWVzKSB7XG4gICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZyYW1lLmZpZWxkcy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkID0gZnJhbWUuZmllbGRzW2luZGV4XTtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGdldEZpZWxkRGlzcGxheU5hbWUoZmllbGQsIGZyYW1lLCBmcmFtZXMpLnRvTG93ZXJDYXNlKCk7XG5cbiAgICAgICAgICAgIGlmIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuc3RyaW5nICYmIHN0cmluZ0luZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgICBzdHJpbmdJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmllbGROYW1lID09PSAndGV4dCcgJiYgZmllbGQudHlwZSA9PT0gRmllbGRUeXBlLnN0cmluZyAmJiB0ZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIHRleHRJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZmllbGROYW1lID09PSAndmFsdWUnICYmIGZpZWxkLnR5cGUgPT09IEZpZWxkVHlwZS5zdHJpbmcgJiYgdmFsdWVJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgdmFsdWVJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIGZpZWxkTmFtZSA9PT0gJ2V4cGFuZGFibGUnICYmXG4gICAgICAgICAgICAgIChmaWVsZC50eXBlID09PSBGaWVsZFR5cGUuYm9vbGVhbiB8fCBmaWVsZC50eXBlID09PSBGaWVsZFR5cGUubnVtYmVyKSAmJlxuICAgICAgICAgICAgICBleHBhbmRhYmxlSW5kZXggPT09IC0xXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgZXhwYW5kYWJsZUluZGV4ID0gaW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN0cmluZ0luZGV4ID09PSAtMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvdWxkbid0IGZpbmQgYW55IGZpZWxkIG9mIHR5cGUgc3RyaW5nIGluIHRoZSByZXN1bHRzLlwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgZnJhbWUgb2YgZnJhbWVzKSB7XG4gICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZyYW1lLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgICAgY29uc3QgZXhwYW5kYWJsZSA9IGV4cGFuZGFibGVJbmRleCAhPT0gLTEgPyBmcmFtZS5maWVsZHNbZXhwYW5kYWJsZUluZGV4XS52YWx1ZXMuZ2V0KGluZGV4KSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZyA9IGZyYW1lLmZpZWxkc1tzdHJpbmdJbmRleF0udmFsdWVzLmdldChpbmRleCk7XG4gICAgICAgICAgICBjb25zdCB0ZXh0ID0gdGV4dEluZGV4ICE9PSAtMSA/IGZyYW1lLmZpZWxkc1t0ZXh0SW5kZXhdLnZhbHVlcy5nZXQoaW5kZXgpIDogJyc7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlSW5kZXggIT09IC0xID8gZnJhbWUuZmllbGRzW3ZhbHVlSW5kZXhdLnZhbHVlcy5nZXQoaW5kZXgpIDogJyc7XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZUluZGV4ID09PSAtMSAmJiB0ZXh0SW5kZXggPT09IC0xKSB7XG4gICAgICAgICAgICAgIG1ldHJpY3MucHVzaCh7IHRleHQ6IHN0cmluZywgdmFsdWU6IHN0cmluZywgZXhwYW5kYWJsZSB9KTtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZUluZGV4ID09PSAtMSAmJiB0ZXh0SW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgIG1ldHJpY3MucHVzaCh7IHRleHQsIHZhbHVlOiB0ZXh0LCBleHBhbmRhYmxlIH0pO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZhbHVlSW5kZXggIT09IC0xICYmIHRleHRJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgbWV0cmljcy5wdXNoKHsgdGV4dDogdmFsdWUsIHZhbHVlLCBleHBhbmRhYmxlIH0pO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWV0cmljcy5wdXNoKHsgdGV4dCwgdmFsdWUsIGV4cGFuZGFibGUgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1ldHJpY3M7XG4gICAgICB9KVxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGFyZU1ldHJpY0ZpbmRWYWx1ZXMoZGF0YTogYW55W10pOiBkYXRhIGlzIE1ldHJpY0ZpbmRWYWx1ZVtdIHtcbiAgaWYgKCFkYXRhKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFkYXRhLmxlbmd0aCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY29uc3QgZmlyc3RWYWx1ZTogYW55ID0gZGF0YVswXTtcblxuICBpZiAoaXNEYXRhRnJhbWUoZmlyc3RWYWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGNvbnN0IGZpcnN0VmFsdWVLZXkgaW4gZmlyc3RWYWx1ZSkge1xuICAgIGlmICghZmlyc3RWYWx1ZS5oYXNPd25Qcm9wZXJ0eShmaXJzdFZhbHVlS2V5KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgZmlyc3RWYWx1ZVtmaXJzdFZhbHVlS2V5XSAhPT0gbnVsbCAmJlxuICAgICAgdHlwZW9mIGZpcnN0VmFsdWVbZmlyc3RWYWx1ZUtleV0gIT09ICdzdHJpbmcnICYmXG4gICAgICB0eXBlb2YgZmlyc3RWYWx1ZVtmaXJzdFZhbHVlS2V5XSAhPT0gJ251bWJlcidcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IGZpcnN0VmFsdWVLZXkudG9Mb3dlckNhc2UoKTtcblxuICAgIGlmIChrZXkgPT09ICd0ZXh0JyB8fCBrZXkgPT09ICd2YWx1ZScpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFVTyxTQUFTLGtCQUFxRSxHQUFBO0FBQ25GLEVBQU8sT0FBQSxDQUFDLFdBQ04sTUFBTyxDQUFBLElBQUE7QUFBQSxJQUNMLEdBQUEsQ0FBSSxDQUFDLFNBQWMsS0FBQTtBQUNqQixNQUFBLE1BQU0sU0FBUyxTQUFVLENBQUEsTUFBQSxDQUFBO0FBQ3pCLE1BQUEsSUFBSSxDQUFDLE1BQUEsSUFBVSxDQUFDLE1BQUEsQ0FBTyxNQUFRLEVBQUE7QUFDN0IsUUFBQSxPQUFPLEVBQUMsQ0FBQTtBQUFBLE9BQ1Y7QUFFQSxNQUFJLElBQUEsbUJBQUEsQ0FBb0IsTUFBTSxDQUFHLEVBQUE7QUFDL0IsUUFBTyxPQUFBLE1BQUEsQ0FBQTtBQUFBLE9BQ1Q7QUFFQSxNQUFBLElBQUksTUFBTyxDQUFBLENBQUEsQ0FBQSxDQUFHLE1BQU8sQ0FBQSxNQUFBLEtBQVcsQ0FBRyxFQUFBO0FBQ2pDLFFBQUEsT0FBTyxFQUFDLENBQUE7QUFBQSxPQUNWO0FBRUEsTUFBTSxNQUFBLG1CQUFBLEdBQXNCLHVCQUF1QixNQUFNLENBQUEsQ0FBQTtBQUN6RCxNQUFBLE1BQU0sVUFB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
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { isNumber, uniqBy, sortBy, toLower } from 'lodash';
|
|
2
|
+
import { stringToJsRegex, VariableSort } from '@grafana/data';
|
|
3
|
+
|
|
4
|
+
function metricNamesToVariableValues(variableRegEx, sort, metricNames) {
|
|
5
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
|
|
6
|
+
let regex;
|
|
7
|
+
let options = [];
|
|
8
|
+
if (variableRegEx) {
|
|
9
|
+
regex = stringToJsRegex(variableRegEx);
|
|
10
|
+
}
|
|
11
|
+
for (let i = 0; i < metricNames.length; i++) {
|
|
12
|
+
const item = metricNames[i];
|
|
13
|
+
let text = (_b = (_a = item.text) != null ? _a : item.value) != null ? _b : "";
|
|
14
|
+
let value = (_d = (_c = item.value) != null ? _c : item.text) != null ? _d : "";
|
|
15
|
+
if (isNumber(value)) {
|
|
16
|
+
value = value.toString();
|
|
17
|
+
}
|
|
18
|
+
if (isNumber(text)) {
|
|
19
|
+
text = text.toString();
|
|
20
|
+
}
|
|
21
|
+
if (regex) {
|
|
22
|
+
const matches = getAllMatches(value, regex);
|
|
23
|
+
if (!matches.length) {
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
const valueGroup = matches.find((m) => m.groups && m.groups.value);
|
|
27
|
+
const textGroup = matches.find((m) => m.groups && m.groups.text);
|
|
28
|
+
const firstMatch = matches.find((m) => m.length > 1);
|
|
29
|
+
const manyMatches = matches.length > 1 && firstMatch;
|
|
30
|
+
if (valueGroup || textGroup) {
|
|
31
|
+
value = (_g = (_e = valueGroup == null ? void 0 : valueGroup.groups) == null ? void 0 : _e.value) != null ? _g : (_f = textGroup == null ? void 0 : textGroup.groups) == null ? void 0 : _f.text;
|
|
32
|
+
text = (_j = (_h = textGroup == null ? void 0 : textGroup.groups) == null ? void 0 : _h.text) != null ? _j : (_i = valueGroup == null ? void 0 : valueGroup.groups) == null ? void 0 : _i.value;
|
|
33
|
+
} else if (manyMatches) {
|
|
34
|
+
for (let j = 0; j < matches.length; j++) {
|
|
35
|
+
const match = matches[j];
|
|
36
|
+
options.push({ label: match[1], value: match[1] });
|
|
37
|
+
}
|
|
38
|
+
continue;
|
|
39
|
+
} else if (firstMatch) {
|
|
40
|
+
text = firstMatch[1];
|
|
41
|
+
value = firstMatch[1];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
options.push({ label: text, value });
|
|
45
|
+
}
|
|
46
|
+
options = uniqBy(options, "value");
|
|
47
|
+
return sortVariableValues(options, sort);
|
|
48
|
+
}
|
|
49
|
+
const getAllMatches = (str, regex) => {
|
|
50
|
+
const results = [];
|
|
51
|
+
let matches = null;
|
|
52
|
+
regex.lastIndex = 0;
|
|
53
|
+
do {
|
|
54
|
+
matches = regex.exec(str);
|
|
55
|
+
if (matches) {
|
|
56
|
+
results.push(matches);
|
|
57
|
+
}
|
|
58
|
+
} while (regex.global && matches && matches[0] !== "" && matches[0] !== void 0);
|
|
59
|
+
return results;
|
|
60
|
+
};
|
|
61
|
+
const sortVariableValues = (options, sortOrder) => {
|
|
62
|
+
if (sortOrder === VariableSort.disabled) {
|
|
63
|
+
return options;
|
|
64
|
+
}
|
|
65
|
+
const sortByNumeric = (opt) => {
|
|
66
|
+
if (!opt.text) {
|
|
67
|
+
return -1;
|
|
68
|
+
}
|
|
69
|
+
const matches = opt.text.match(/.*?(\d+).*/);
|
|
70
|
+
if (!matches || matches.length < 2) {
|
|
71
|
+
return -1;
|
|
72
|
+
} else {
|
|
73
|
+
return parseInt(matches[1], 10);
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
const sortByNaturalSort = (options2) => {
|
|
77
|
+
return options2.sort((a, b) => {
|
|
78
|
+
if (!a.text) {
|
|
79
|
+
return -1;
|
|
80
|
+
}
|
|
81
|
+
if (!b.text) {
|
|
82
|
+
return 1;
|
|
83
|
+
}
|
|
84
|
+
return a.text.localeCompare(b.text, void 0, { numeric: true });
|
|
85
|
+
});
|
|
86
|
+
};
|
|
87
|
+
switch (sortOrder) {
|
|
88
|
+
case VariableSort.alphabeticalAsc:
|
|
89
|
+
options = sortBy(options, "label");
|
|
90
|
+
break;
|
|
91
|
+
case VariableSort.alphabeticalDesc:
|
|
92
|
+
options = sortBy(options, "label").reverse();
|
|
93
|
+
break;
|
|
94
|
+
case VariableSort.numericalAsc:
|
|
95
|
+
options = sortBy(options, sortByNumeric);
|
|
96
|
+
break;
|
|
97
|
+
case VariableSort.numericalDesc:
|
|
98
|
+
options = sortBy(options, sortByNumeric);
|
|
99
|
+
options = options.reverse();
|
|
100
|
+
break;
|
|
101
|
+
case VariableSort.alphabeticalCaseInsensitiveAsc:
|
|
102
|
+
options = sortBy(options, (opt) => {
|
|
103
|
+
return toLower(opt.label);
|
|
104
|
+
});
|
|
105
|
+
break;
|
|
106
|
+
case VariableSort.alphabeticalCaseInsensitiveDesc:
|
|
107
|
+
options = sortBy(options, (opt) => {
|
|
108
|
+
return toLower(opt.label);
|
|
109
|
+
});
|
|
110
|
+
options = options.reverse();
|
|
111
|
+
break;
|
|
112
|
+
case (VariableSort.naturalAsc || 7):
|
|
113
|
+
options = sortByNaturalSort(options);
|
|
114
|
+
break;
|
|
115
|
+
case (VariableSort.naturalDesc || 8):
|
|
116
|
+
options = sortByNaturalSort(options);
|
|
117
|
+
options = options.reverse();
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
return options;
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
export { metricNamesToVariableValues, sortVariableValues };
|
|
124
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy92YXJpYWJsZXMvdmFyaWFudHMvcXVlcnkvdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNOdW1iZXIsIHNvcnRCeSwgdG9Mb3dlciwgdW5pcUJ5IH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgc3RyaW5nVG9Kc1JlZ2V4LCBWYXJpYWJsZVNvcnQgfSBmcm9tICdAZ3JhZmFuYS9kYXRhJztcblxuaW1wb3J0IHsgVmFyaWFibGVWYWx1ZU9wdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuZXhwb3J0IGZ1bmN0aW9uIG1ldHJpY05hbWVzVG9WYXJpYWJsZVZhbHVlcyh2YXJpYWJsZVJlZ0V4OiBzdHJpbmcsIHNvcnQ6IFZhcmlhYmxlU29ydCwgbWV0cmljTmFtZXM6IGFueVtdKSB7XG4gIGxldCByZWdleDtcbiAgbGV0IG9wdGlvbnM6IFZhcmlhYmxlVmFsdWVPcHRpb25bXSA9IFtdO1xuXG4gIGlmICh2YXJpYWJsZVJlZ0V4KSB7XG4gICAgcmVnZXggPSBzdHJpbmdUb0pzUmVnZXgodmFyaWFibGVSZWdFeCk7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IG1ldHJpY05hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgaXRlbSA9IG1ldHJpY05hbWVzW2ldO1xuICAgIGxldCB0ZXh0ID0gaXRlbS50ZXh0ID8/IGl0ZW0udmFsdWUgPz8gJyc7XG4gICAgbGV0IHZhbHVlID0gaXRlbS52YWx1ZSA/PyBpdGVtLnRleHQgPz8gJyc7XG5cbiAgICBpZiAoaXNOdW1iZXIodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKGlzTnVtYmVyKHRleHQpKSB7XG4gICAgICB0ZXh0ID0gdGV4dC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChyZWdleCkge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGdldEFsbE1hdGNoZXModmFsdWUsIHJlZ2V4KTtcbiAgICAgIGlmICghbWF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHZhbHVlR3JvdXAgPSBtYXRjaGVzLmZpbmQoKG0pID0+IG0uZ3JvdXBzICYmIG0uZ3JvdXBzLnZhbHVlKTtcbiAgICAgIGNvbnN0IHRleHRHcm91cCA9IG1hdGNoZXMuZmluZCgobSkgPT4gbS5ncm91cHMgJiYgbS5ncm91cHMudGV4dCk7XG4gICAgICBjb25zdCBmaXJzdE1hdGNoID0gbWF0Y2hlcy5maW5kKChtKSA9PiBtLmxlbmd0aCA+IDEpO1xuICAgICAgY29uc3QgbWFueU1hdGNoZXMgPSBtYXRjaGVzLmxlbmd0aCA+IDEgJiYgZmlyc3RNYXRjaDtcblxuICAgICAgaWYgKHZhbHVlR3JvdXAgfHwgdGV4dEdyb3VwKSB7XG4gICAgICAgIHZhbHVlID0gdmFsdWVHcm91cD8uZ3JvdXBzPy52YWx1ZSA/PyB0ZXh0R3JvdXA/Lmdyb3Vwcz8udGV4dDtcbiAgICAgICAgdGV4dCA9IHRleHRHcm91cD8uZ3JvdXBzPy50ZXh0ID8/IHZhbHVlR3JvdXA/Lmdyb3Vwcz8udmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKG1hbnlNYXRjaGVzKSB7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbWF0Y2hlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGNvbnN0IG1hdGNoID0gbWF0Y2hlc1tqXTtcbiAgICAgICAgICBvcHRpb25zLnB1c2goeyBsYWJlbDogbWF0Y2hbMV0sIHZhbHVlOiBtYXRjaFsxXSB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAoZmlyc3RNYXRjaCkge1xuICAgICAgICB0ZXh0ID0gZmlyc3RNYXRjaFsxXTtcbiAgICAgICAgdmFsdWUgPSBmaXJzdE1hdGNoWzFdO1xuICAgICAgfVxuICAgIH1cblxuICAgIG9wdGlvbnMucHVzaCh7IGxhYmVsOiB0ZXh0LCB2YWx1ZTogdmFsdWUgfSk7XG4gIH1cblxuICBvcHRpb25zID0gdW5pcUJ5KG9wdGlvbnMsICd2YWx1ZScpO1xuICByZXR1cm4gc29ydFZhcmlhYmxlVmFsdWVzKG9wdGlvbnMsIHNvcnQpO1xufVxuXG5jb25zdCBnZXRBbGxNYXRjaGVzID0gKHN0cjogc3RyaW5nLCByZWdleDogUmVnRXhwKTogUmVnRXhwRXhlY0FycmF5W10gPT4ge1xuICBjb25zdCByZXN1bHRzOiBSZWdFeHBFeGVjQXJyYXlbXSA9IFtdO1xuICBsZXQgbWF0Y2hlcyA9IG51bGw7XG5cbiAgcmVnZXgubGFzdEluZGV4ID0gMDtcblxuICBkbyB7XG4gICAgbWF0Y2hlcyA9IHJlZ2V4LmV4ZWMoc3RyKTtcbiAgICBpZiAobWF0Y2hlcykge1xuICAgICAgcmVzdWx0cy5wdXNoKG1hdGNoZXMpO1xuICAgIH1cbiAgfSB3aGlsZSAocmVnZXguZ2xvYmFsICYmIG1hdGNoZXMgJiYgbWF0Y2hlc1swXSAhPT0gJycgJiYgbWF0Y2hlc1swXSAhPT0gdW5kZWZpbmVkKTtcblxuICByZXR1cm4gcmVzdWx0cztcbn07XG5cbmV4cG9ydCBjb25zdCBzb3J0VmFyaWFibGVWYWx1ZXMgPSAob3B0aW9uczogYW55W10sIHNvcnRPcmRlcjogVmFyaWFibGVTb3J0KSA9PiB7XG4gIGlmIChzb3J0T3JkZXIgPT09IFZhcmlhYmxlU29ydC5kaXNhYmxlZCkge1xuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBzb3J0QnlOdW1lcmljID0gKG9wdCkgPT4ge1xuICAgIGlmICghb3B0LnRleHQpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlcyA9IG9wdC50ZXh0Lm1hdGNoKC8uKj8oXFxkKykuKi8pO1xuICAgIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHJldHVybiAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKTtcbiAgICB9XG4gIH07XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBzb3J0QnlOYXR1cmFsU29ydCA9IChvcHRpb25zKSA9PiB7XG4gICAgLy9AdHMtaWdub3JlXG4gICAgcmV0dXJuIG9wdGlvbnMuc29ydCgoYSwgYikgPT4ge1xuICAgICAgaWYgKCFhLnRleHQpIHtcbiAgICAgICAgcmV0dXJuIC0xO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWIudGV4dCkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGEudGV4dC5sb2NhbGVDb21wYXJlKGIudGV4dCwgdW5kZWZpbmVkLCB7IG51bWVyaWM6IHRydWUgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgc3dpdGNoIChzb3J0T3JkZXIpIHtcbiAgICBjYXNlIFZhcmlhYmxlU29ydC5hbHBoYWJldGljYWxBc2M6XG4gICAgICBvcHRpb25zID0gc29ydEJ5KG9wdGlvbnMsICdsYWJlbCcpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBWYXJpYWJsZVNvcnQuYWxwaGFiZXRpY2FsRGVzYzpcbiAgICAgIG9wdGlvbnMgPSBzb3J0Qnkob3B0aW9ucywgJ2xhYmVsJykucmV2ZXJzZSgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBWYXJpYWJsZVNvcnQubnVtZXJpY2FsQXNjOlxuICAgICAgb3B0aW9ucyA9IHNvcnRCeShvcHRpb25zLCBzb3J0QnlOdW1lcmljKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVmFyaWFibGVTb3J0Lm51bWVyaWNhbERlc2M6XG4gICAgICBvcHRpb25zID0gc29ydEJ5KG9wdGlvbnMsIHNvcnRCeU51bWVyaWMpO1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMucmV2ZXJzZSgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBWYXJpYWJsZVNvcnQuYWxwaGFiZXRpY2FsQ2FzZUluc2Vuc2l0aXZlQXNjOlxuICAgICAgb3B0aW9ucyA9IHNvcnRCeShvcHRpb25zLCAob3B0KSA9PiB7XG4gICAgICAgIHJldHVybiB0b0xvd2VyKG9wdC5sYWJlbCk7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVmFyaWFibGVTb3J0LmFscGhhYmV0aWNhbENhc2VJbnNlbnNpdGl2ZURlc2M6XG4gICAgICBvcHRpb25zID0gc29ydEJ5KG9wdGlvbnMsIChvcHQpID0+IHtcbiAgICAgICAgcmV0dXJuIHRvTG93ZXIob3B0LmxhYmVsKTtcbiAgICAgIH0pO1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMucmV2ZXJzZSgpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBWYXJpYWJsZVNvcnQubmF0dXJhbEFzYyB8fCA3OlxuICAgICAgLy8gU29ydCBieSBuYXR1cmFsIHNvcnRcbiAgICAgIG9wdGlvbnMgPSBzb3J0QnlOYXR1cmFsU29ydChvcHRpb25zKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgVmFyaWFibGVTb3J0Lm5hdHVyYWxEZXNjIHx8IDg6XG4gICAgICBvcHRpb25zID0gc29ydEJ5TmF0dXJhbFNvcnQob3B0aW9ucyk7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5yZXZlcnNlKCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIG9wdGlvbnM7XG59O1xuIl0sIm5hbWVzIjpbIm9wdGlvbnMiXSwibWFwcGluZ3MiOiI7OztBQU1nQixTQUFBLDJCQUFBLENBQTRCLGFBQXVCLEVBQUEsSUFBQSxFQUFvQixXQUFvQixFQUFBO0FBTjNHLEVBQUEsSUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLEVBQUEsRUFBQSxFQUFBLENBQUE7QUFPRSxFQUFJLElBQUEsS0FBQSxDQUFBO0FBQ0osRUFBQSxJQUFJLFVBQWlDLEVBQUMsQ0FBQTtBQUV0QyxFQUFBLElBQUksYUFBZSxFQUFBO0FBQ2pCLElBQUEs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
|