@grafana/scenes 6.51.0--canary.1316.20309633325.0 → 6.51.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.
Files changed (25) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/esm/packages/scenes/src/locales/en-US/grafana-scenes.json.js +0 -4
  3. package/dist/esm/packages/scenes/src/locales/en-US/grafana-scenes.json.js.map +1 -1
  4. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js +2 -2
  5. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersAlwaysWipCombobox.js.map +1 -1
  6. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js +1 -3
  7. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersCombobox.js.map +1 -1
  8. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js +23 -115
  9. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/AdHocFiltersComboboxRenderer.js.map +1 -1
  10. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/utils.js +0 -3
  11. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersCombobox/utils.js.map +1 -1
  12. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersVariable.js +0 -12
  13. package/dist/esm/packages/scenes/src/variables/adhoc/AdHocFiltersVariable.js.map +1 -1
  14. package/dist/esm/packages/scenes/src/variables/adhoc/controller/AdHocFiltersVariableController.js +0 -4
  15. package/dist/esm/packages/scenes/src/variables/adhoc/controller/AdHocFiltersVariableController.js.map +1 -1
  16. package/dist/esm/packages/scenes/src/variables/groupby/GroupByVariable.js +6 -30
  17. package/dist/esm/packages/scenes/src/variables/groupby/GroupByVariable.js.map +1 -1
  18. package/dist/esm/packages/scenes/src/variables/variants/query/toMetricFindValues.js +19 -31
  19. package/dist/esm/packages/scenes/src/variables/variants/query/toMetricFindValues.js.map +1 -1
  20. package/dist/{grafana-scenes-DrGXYYn6.js → grafana-scenes-C9F_2hih.js} +1 -5
  21. package/dist/{grafana-scenes-DrGXYYn6.js.map → grafana-scenes-C9F_2hih.js.map} +1 -1
  22. package/dist/index.d.ts +0 -23
  23. package/dist/index.js +51 -198
  24. package/dist/index.js.map +1 -1
  25. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"GroupByVariable.js","sources":["../../../../../../../src/variables/groupby/GroupByVariable.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport {\n AdHocVariableFilter,\n DataSourceApi,\n // @ts-expect-error (temporary till we update grafana/data)\n DrilldownsApplicability,\n GetTagResponse,\n GrafanaTheme2,\n MetricFindValue,\n SelectableValue,\n} from '@grafana/data';\nimport { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid';\nimport { DataSourceRef, VariableType } from '@grafana/schema';\nimport { SceneComponentProps, ControlsLayout, SceneObjectUrlSyncHandler, SceneDataQuery } from '../../core/types';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport {\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n VariableValueOption,\n VariableValueSingle,\n} from '../types';\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from '../variants/MultiValueVariable';\nimport { from, lastValueFrom, map, mergeMap, Observable, of, take, tap } from 'rxjs';\nimport { getDataSource } from '../../utils/getDataSource';\nimport { components, GroupBase, MenuProps } from 'react-select';\nimport { InputActionMeta, MultiSelect, Select, useStyles2 } from '@grafana/ui';\nimport { isArray, isEqual } from 'lodash';\nimport { dataFromResponse, getQueriesForVariables, handleOptionGroups, responseHasError } from '../utils';\nimport { OptionWithCheckbox } from '../components/VariableValueSelect';\nimport { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler';\nimport { getOptionSearcher } from '../components/getOptionSearcher';\nimport { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest';\nimport { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject';\nimport { DefaultGroupByCustomIndicatorContainer } from './DefaultGroupByCustomIndicatorContainer';\nimport { GroupByValueContainer, GroupByContainerProps } from './GroupByValueContainer';\nimport { getInteractionTracker } from '../../core/sceneGraph/getInteractionTracker';\nimport { GROUPBY_DIMENSIONS_INTERACTION } from '../../performance/interactionConstants';\nimport { css, cx } from '@emotion/css';\nimport { GroupByRecommendations } from './GroupByRecommendations';\n\nexport interface GroupByVariableState extends MultiValueVariableState {\n /** Defaults to \"Group\" */\n name: string;\n /** The visible keys to group on */\n // TODO review this type and name (naming is hard)\n defaultOptions?: MetricFindValue[];\n /** Base filters to always apply when looking up keys */\n baseFilters?: AdHocVariableFilter[];\n /** Datasource to use for getTagKeys and also controls which scene queries the group by should apply to */\n datasource: DataSourceRef | null;\n /** Default value set for this groupBy. When this field is set, changing value will allow the user to restore back to this default value */\n defaultValue?: { text: VariableValue; value: VariableValue };\n /** Needed for url sync when passing flag to another dashboard */\n restorable?: boolean;\n /** Controls if the group by can be changed */\n readOnly?: boolean;\n /**\n * @experimental\n * Controls the layout and design of the label.\n * Vertical layout does not yet support operator selector.\n */\n layout?: ControlsLayout;\n /**\n * Defaults to same-datasource which means group by will automatically be applied to all queries with the same data source as this GroupBySet.\n * In manual mode no queries are re-run on changes, and you have to manually apply the filter to whatever queries you want.\n */\n applyMode?: 'auto' | 'manual';\n /**\n * Filter out the keys that do not match the regex.\n */\n tagKeyRegexFilter?: RegExp;\n /**\n * Extension hook for customizing the key lookup.\n * Return replace: true if you want to override the default lookup\n * Return replace: false if you want to combine the results with the default lookup\n */\n getTagKeysProvider?: getTagKeysProvider;\n /**\n * Holds the applicability for each of the selected keys\n */\n keysApplicability?: DrilldownsApplicability[];\n /**\n * state for checking whether drilldown applicability is enabled\n */\n applicabilityEnabled?: boolean;\n /**\n * Whether the input should be wide. For example, this is needed when dashboardAdHocAndGroupByWrapper feature toggle is enabled so that\n * the input fills the remaining space in the row.\n */\n wideInput?: boolean;\n\n /**\n * enables drilldown recommendations\n */\n drilldownRecommendationsEnabled?: boolean;\n}\n\nexport type getTagKeysProvider = (\n set: GroupByVariable,\n currentKey: string | null\n) => Promise<{ replace?: boolean; values: MetricFindValue[] | GetTagResponse }>;\n\nexport class GroupByVariable extends MultiValueVariable<GroupByVariableState> {\n static Component = GroupByVariableRenderer;\n isLazy = true;\n\n protected _urlSync: SceneObjectUrlSyncHandler = new GroupByVariableUrlSyncHandler(this);\n\n private _scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };\n\n private _recommendations: GroupByRecommendations | undefined;\n\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n return this.getValueOptions({}).pipe(\n map((options) => {\n this._updateValueGivenNewOptions(options);\n return {};\n })\n );\n }\n\n private _updateValueGivenNewOptions(options: VariableValueOption[]) {\n const { value: currentValue, text: currentText } = this.state;\n\n const stateUpdate: Partial<MultiValueVariableState> = {\n options,\n loading: false,\n value: currentValue ?? [],\n text: currentText ?? [],\n };\n\n this.setState(stateUpdate);\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n // When default dimensions are provided, return the static list\n if (this.state.defaultOptions) {\n return of(\n this.state.defaultOptions.map((o) => ({\n label: o.text,\n value: String(o.value),\n group: o.group,\n }))\n );\n }\n\n this.setState({ loading: true, error: null });\n\n return from(getDataSource(this.state.datasource, this._scopedVars)).pipe(\n mergeMap((ds) => {\n return from(this._getKeys(ds)).pipe(\n tap((response) => {\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n }),\n map((response) => dataFromResponse(response)),\n take(1),\n mergeMap((data) => {\n const a: VariableValueOption[] = data.map((i) => {\n return {\n label: i.text,\n value: i.value ? String(i.value) : i.text,\n group: i.group,\n };\n });\n return of(a);\n })\n );\n })\n );\n }\n\n public constructor(initialState: Partial<GroupByVariableState>) {\n const behaviors = initialState.$behaviors ?? [];\n const recommendations = initialState.drilldownRecommendationsEnabled ? new GroupByRecommendations() : undefined;\n\n if (recommendations) {\n behaviors.push(recommendations);\n }\n\n super({\n isMulti: true,\n name: '',\n value: [],\n text: [],\n options: [],\n datasource: null,\n baseFilters: [],\n applyMode: 'auto',\n layout: 'horizontal',\n type: 'groupby' as VariableType,\n ...initialState,\n noValueOnClear: true,\n $behaviors: behaviors.length > 0 ? behaviors : undefined,\n });\n\n this._recommendations = recommendations;\n\n if (this.state.defaultValue) {\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, false);\n }\n\n if (this.state.applyMode === 'auto') {\n this.addActivationHandler(() => {\n allActiveGroupByVariables.add(this);\n\n return () => allActiveGroupByVariables.delete(this);\n });\n }\n\n this.addActivationHandler(this._activationHandler);\n }\n\n private _activationHandler = () => {\n this._verifyApplicability();\n\n if (this.state.defaultValue) {\n if (this.checkIfRestorable(this.state.value)) {\n this.setState({ restorable: true });\n }\n }\n\n return () => {\n if (this.state.defaultValue) {\n this.restoreDefaultValues();\n }\n\n this.setState({ applicabilityEnabled: false });\n };\n };\n\n /**\n * Gets the GroupByRecommendations behavior if it exists in $behaviors\n */\n public getRecommendations(): GroupByRecommendations | undefined {\n return this._recommendations;\n }\n\n public getApplicableKeys(): string[] {\n const { value, keysApplicability } = this.state;\n\n const valueArray = isArray(value) ? value.map(String) : value ? [String(value)] : [];\n\n if (!keysApplicability || keysApplicability.length === 0) {\n return valueArray;\n }\n\n const applicableValues = valueArray.filter((val) => {\n const applicability = keysApplicability.find((item) => item.key === val);\n return !applicability || applicability.applicable !== false;\n });\n\n return applicableValues;\n }\n\n public async getGroupByApplicabilityForQueries(\n value: VariableValue,\n queries: SceneDataQuery[]\n ): Promise<DrilldownsApplicability[] | undefined> {\n const ds = await getDataSource(this.state.datasource, this._scopedVars);\n\n // @ts-expect-error (temporary till we update grafana/data)\n if (!ds.getDrilldownsApplicability) {\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n\n // @ts-expect-error (temporary till we update grafana/data)\n return await ds.getDrilldownsApplicability({\n groupByKeys: Array.isArray(value) ? value.map((v) => String(v)) : value ? [String(value)] : [],\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n }\n\n public async _verifyApplicability() {\n const queries = getQueriesForVariables(this);\n const value = this.state.value;\n\n const response = await this.getGroupByApplicabilityForQueries(value, queries);\n\n if (!response) {\n return;\n }\n\n if (!isEqual(response, this.state.keysApplicability)) {\n this.setState({ keysApplicability: response ?? undefined, applicabilityEnabled: true });\n\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n } else {\n this.setState({ applicabilityEnabled: true });\n }\n }\n\n // This method is related to the defaultValue property. We check if the current value\n // is different from the default value. If it is, the groupBy will show a button\n // allowing the user to restore the default values.\n public checkIfRestorable(values: VariableValue) {\n const originalValues = isArray(this.state.defaultValue?.value)\n ? this.state.defaultValue?.value\n : this.state.defaultValue?.value\n ? [this.state.defaultValue?.value]\n : [];\n const vals = isArray(values) ? values : [values];\n\n if (vals.length !== originalValues.length) {\n return true;\n }\n\n return !isEqual(vals, originalValues);\n }\n\n public restoreDefaultValues() {\n this.setState({ restorable: false });\n\n if (!this.state.defaultValue) {\n return;\n }\n\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, true);\n }\n\n /**\n * Get possible keys given current filters. Do not call from plugins directly\n */\n public _getKeys = async (ds: DataSourceApi) => {\n // TODO: provide current dimensions?\n const override = await this.state.getTagKeysProvider?.(this, null);\n\n if (override && override.replace) {\n return override.values;\n }\n\n if (this.state.defaultOptions) {\n return this.state.defaultOptions.concat(dataFromResponse(override?.values ?? []));\n }\n\n if (!ds.getTagKeys) {\n return [];\n }\n\n const queries = getQueriesForVariables(this);\n\n const otherFilters = this.state.baseFilters || [];\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const response = await ds.getTagKeys({\n filters: otherFilters,\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n\n let keys = dataFromResponse(response);\n if (override) {\n keys = keys.concat(dataFromResponse(override.values));\n }\n\n const tagKeyRegexFilter = this.state.tagKeyRegexFilter;\n if (tagKeyRegexFilter) {\n keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));\n }\n\n return keys;\n };\n\n public async _verifyApplicabilityAndStoreRecentGrouping() {\n await this._verifyApplicability();\n\n if (!this._recommendations) {\n return;\n }\n\n const applicableValues = this.getApplicableKeys();\n if (applicableValues.length === 0) {\n return;\n }\n\n this._recommendations.storeRecentGrouping(applicableValues);\n }\n\n /**\n * Allows clearing the value of the variable to an empty value. Overrides default behavior of a MultiValueVariable\n */\n public getDefaultMultiState(options: VariableValueOption[]) {\n return { value: [], text: [] };\n }\n}\n\nexport function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>) {\n const {\n value,\n text,\n key,\n isMulti = true,\n maxVisibleValues,\n noValueOnClear,\n options,\n includeAll,\n allowCustomValue = true,\n defaultValue,\n keysApplicability,\n drilldownRecommendationsEnabled,\n } = model.useState();\n\n const recommendations = model.getRecommendations();\n\n const styles = useStyles2(getStyles);\n\n const values = useMemo<Array<SelectableValue<VariableValueSingle>>>(() => {\n const arrayValue = isArray(value) ? value : [value];\n const arrayText = isArray(text) ? text : [text];\n\n return arrayValue.map((value, idx) => ({\n value,\n label: String(arrayText[idx] ?? value),\n }));\n }, [value, text]);\n\n const [isFetchingOptions, setIsFetchingOptions] = useState(false);\n const [isOptionsOpen, setIsOptionsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n\n // To not trigger queries on every selection we store this state locally here and only update the variable onBlur\n const [uncommittedValue, setUncommittedValue] = useState(values);\n\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n\n const hasDefaultValue = defaultValue !== undefined;\n\n // Detect value changes outside\n useEffect(() => {\n setUncommittedValue(values);\n }, [values]);\n\n const onInputChange = (value: string, { action }: InputActionMeta) => {\n if (action === 'input-change') {\n setInputValue(value);\n if (model.onSearchChange) {\n model.onSearchChange!(value);\n }\n return value;\n }\n\n if (action === 'input-blur') {\n setInputValue('');\n return '';\n }\n\n return inputValue;\n };\n\n const filteredOptions = useMemo(\n () => handleOptionGroups(optionSearcher(inputValue).map(toSelectableValue)),\n [optionSearcher, inputValue]\n );\n\n const WideInputWrapper = (children: React.ReactNode) => <div className={styles.selectWrapper}>{children}</div>;\n\n const select = isMulti ? (\n <ConditionalWrapper condition={model.state.wideInput ?? false} wrapper={WideInputWrapper}>\n <MultiSelect<VariableValueSingle>\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n className={cx(drilldownRecommendationsEnabled && styles.selectStylesInWrapper)}\n allowCustomValue={allowCustomValue}\n inputValue={inputValue}\n value={uncommittedValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={false}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n isLoading={isFetchingOptions}\n components={{\n Option: OptionWithCheckbox,\n Menu: WideMenu,\n ...(hasDefaultValue\n ? {\n IndicatorsContainer: () => <DefaultGroupByCustomIndicatorContainer model={model} />,\n }\n : {}),\n MultiValueContainer: ({ innerProps, children }: React.PropsWithChildren<GroupByContainerProps>) => (\n <GroupByValueContainer innerProps={innerProps} keysApplicability={keysApplicability}>\n {children}\n </GroupByValueContainer>\n ),\n }}\n onInputChange={onInputChange}\n onBlur={() => {\n model.changeValueTo(\n uncommittedValue.map((x) => x.value!),\n uncommittedValue.map((x) => x.label!),\n true\n );\n\n const restorable = model.checkIfRestorable(uncommittedValue.map((v) => v.value!));\n\n if (restorable !== model.state.restorable) {\n model.setState({ restorable: restorable });\n }\n\n model._verifyApplicabilityAndStoreRecentGrouping();\n }}\n onChange={(newValue, action) => {\n if (action.action === 'clear' && noValueOnClear) {\n model.changeValueTo([], undefined, true);\n }\n\n setUncommittedValue(newValue);\n setInputValue('');\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n </ConditionalWrapper>\n ) : (\n <ConditionalWrapper condition={model.state.wideInput ?? false} wrapper={WideInputWrapper}>\n <Select\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n inputValue={inputValue}\n value={uncommittedValue && uncommittedValue.length > 0 ? uncommittedValue : null}\n allowCustomValue={allowCustomValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={true}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n noValueOnClear={true}\n isLoading={isFetchingOptions}\n components={{ Menu: WideMenu }}\n onInputChange={onInputChange}\n onChange={(newValue, action) => {\n if (action.action === 'clear') {\n setUncommittedValue([]);\n if (noValueOnClear) {\n model.changeValueTo([]);\n }\n return;\n }\n if (newValue?.value) {\n setUncommittedValue([newValue]);\n model.changeValueTo([newValue.value], newValue.label ? [newValue.label] : undefined);\n }\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n </ConditionalWrapper>\n );\n\n if (!recommendations) {\n return select;\n }\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.recommendations}>\n <recommendations.Component model={recommendations} />\n </div>\n\n {select}\n </div>\n );\n}\n\nconst ConditionalWrapper = ({\n condition,\n wrapper,\n children,\n}: {\n condition: boolean;\n wrapper: (children: React.ReactNode) => React.ReactElement;\n children: React.ReactNode;\n}) => {\n return condition ? wrapper(children) : <>{children}</>;\n};\n\nconst filterNoOp = () => true;\n\n// custom minWidth menu component to fit custom value message\nfunction WideMenu<Option, IsMulti extends boolean, Group extends GroupBase<Option>>(\n props: MenuProps<Option, IsMulti, Group>\n) {\n return (\n <components.Menu {...props}>\n <div style={{ minWidth: '220px' }}>{props.children}</div>\n </components.Menu>\n );\n}\n\nfunction toSelectableValue(input: VariableValueOption): SelectableValue<VariableValueSingle> {\n const { label, value, group } = input;\n const result: SelectableValue<VariableValueSingle> = {\n label,\n value,\n };\n\n if (group) {\n result.group = group;\n }\n\n return result;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n selectWrapper: css({\n display: 'flex',\n minWidth: 0,\n width: '100%',\n }),\n // Fix for noMultiValueWrap grid layout - prevent pills from stretching\n // when the select is full width. The grid layout uses gridAutoFlow: column\n // which stretches items by default.\n fullWidthMultiSelect: css({\n width: '100%',\n // Target the value container (has data-testid) which uses grid layout\n '& [data-testid]': {\n gridAutoColumns: 'max-content',\n justifyItems: 'start',\n },\n }),\n wrapper: css({\n display: 'flex',\n }),\n selectStylesInWrapper: css({\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n border: `1px solid ${theme.colors.border.strong}`,\n borderLeft: 'none',\n }),\n recommendations: css({\n display: 'flex',\n alignItems: 'center',\n paddingInline: theme.spacing(0.5),\n borderTop: `1px solid ${theme.colors.border.strong}`,\n borderBottom: `1px solid ${theme.colors.border.strong}`,\n backgroundColor: theme.components.input.background,\n '& button': {\n borderRadius: 0,\n height: '100%',\n margin: 0,\n paddingInline: theme.spacing(0.5),\n },\n }),\n});\n"],"names":["value","_a"],"mappings":"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"}
1
+ {"version":3,"file":"GroupByVariable.js","sources":["../../../../../../../src/variables/groupby/GroupByVariable.tsx"],"sourcesContent":["import { t } from '@grafana/i18n';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport {\n AdHocVariableFilter,\n DataSourceApi,\n // @ts-expect-error (temporary till we update grafana/data)\n DrilldownsApplicability,\n GetTagResponse,\n GrafanaTheme2,\n MetricFindValue,\n SelectableValue,\n} from '@grafana/data';\nimport { allActiveGroupByVariables } from './findActiveGroupByVariablesByUid';\nimport { DataSourceRef, VariableType } from '@grafana/schema';\nimport { SceneComponentProps, ControlsLayout, SceneObjectUrlSyncHandler, SceneDataQuery } from '../../core/types';\nimport { sceneGraph } from '../../core/sceneGraph';\nimport {\n SceneVariableValueChangedEvent,\n ValidateAndUpdateResult,\n VariableValue,\n VariableValueOption,\n VariableValueSingle,\n} from '../types';\nimport { MultiValueVariable, MultiValueVariableState, VariableGetOptionsArgs } from '../variants/MultiValueVariable';\nimport { from, lastValueFrom, map, mergeMap, Observable, of, take, tap } from 'rxjs';\nimport { getDataSource } from '../../utils/getDataSource';\nimport { InputActionMeta, MultiSelect, Select, useStyles2 } from '@grafana/ui';\nimport { components, GroupBase, MenuProps } from 'react-select';\nimport { isArray, isEqual } from 'lodash';\nimport { dataFromResponse, getQueriesForVariables, handleOptionGroups, responseHasError } from '../utils';\nimport { OptionWithCheckbox } from '../components/VariableValueSelect';\nimport { GroupByVariableUrlSyncHandler } from './GroupByVariableUrlSyncHandler';\nimport { getOptionSearcher } from '../components/getOptionSearcher';\nimport { getEnrichedFiltersRequest } from '../getEnrichedFiltersRequest';\nimport { wrapInSafeSerializableSceneObject } from '../../utils/wrapInSafeSerializableSceneObject';\nimport { DefaultGroupByCustomIndicatorContainer } from './DefaultGroupByCustomIndicatorContainer';\nimport { GroupByValueContainer, GroupByContainerProps } from './GroupByValueContainer';\nimport { getInteractionTracker } from '../../core/sceneGraph/getInteractionTracker';\nimport { GROUPBY_DIMENSIONS_INTERACTION } from '../../performance/interactionConstants';\nimport { css, cx } from '@emotion/css';\nimport { GroupByRecommendations } from './GroupByRecommendations';\n\nexport interface GroupByVariableState extends MultiValueVariableState {\n /** Defaults to \"Group\" */\n name: string;\n /** The visible keys to group on */\n // TODO review this type and name (naming is hard)\n defaultOptions?: MetricFindValue[];\n /** Base filters to always apply when looking up keys */\n baseFilters?: AdHocVariableFilter[];\n /** Datasource to use for getTagKeys and also controls which scene queries the group by should apply to */\n datasource: DataSourceRef | null;\n /** Default value set for this groupBy. When this field is set, changing value will allow the user to restore back to this default value */\n defaultValue?: { text: VariableValue; value: VariableValue };\n /** Needed for url sync when passing flag to another dashboard */\n restorable?: boolean;\n /** Controls if the group by can be changed */\n readOnly?: boolean;\n /**\n * @experimental\n * Controls the layout and design of the label.\n * Vertical layout does not yet support operator selector.\n */\n layout?: ControlsLayout;\n /**\n * Defaults to same-datasource which means group by will automatically be applied to all queries with the same data source as this GroupBySet.\n * In manual mode no queries are re-run on changes, and you have to manually apply the filter to whatever queries you want.\n */\n applyMode?: 'auto' | 'manual';\n /**\n * Filter out the keys that do not match the regex.\n */\n tagKeyRegexFilter?: RegExp;\n /**\n * Extension hook for customizing the key lookup.\n * Return replace: true if you want to override the default lookup\n * Return replace: false if you want to combine the results with the default lookup\n */\n getTagKeysProvider?: getTagKeysProvider;\n /**\n * Holds the applicability for each of the selected keys\n */\n keysApplicability?: DrilldownsApplicability[];\n /**\n * state for checking whether drilldown applicability is enabled\n */\n applicabilityEnabled?: boolean;\n\n /**\n * enables drilldown recommendations\n */\n drilldownRecommendationsEnabled?: boolean;\n}\n\nexport type getTagKeysProvider = (\n set: GroupByVariable,\n currentKey: string | null\n) => Promise<{ replace?: boolean; values: MetricFindValue[] | GetTagResponse }>;\n\nexport class GroupByVariable extends MultiValueVariable<GroupByVariableState> {\n static Component = GroupByVariableRenderer;\n isLazy = true;\n\n protected _urlSync: SceneObjectUrlSyncHandler = new GroupByVariableUrlSyncHandler(this);\n\n private _scopedVars = { __sceneObject: wrapInSafeSerializableSceneObject(this) };\n\n private _recommendations: GroupByRecommendations | undefined;\n\n public validateAndUpdate(): Observable<ValidateAndUpdateResult> {\n return this.getValueOptions({}).pipe(\n map((options) => {\n this._updateValueGivenNewOptions(options);\n return {};\n })\n );\n }\n\n private _updateValueGivenNewOptions(options: VariableValueOption[]) {\n const { value: currentValue, text: currentText } = this.state;\n\n const stateUpdate: Partial<MultiValueVariableState> = {\n options,\n loading: false,\n value: currentValue ?? [],\n text: currentText ?? [],\n };\n\n this.setState(stateUpdate);\n }\n\n public getValueOptions(args: VariableGetOptionsArgs): Observable<VariableValueOption[]> {\n // When default dimensions are provided, return the static list\n if (this.state.defaultOptions) {\n return of(\n this.state.defaultOptions.map((o) => ({\n label: o.text,\n value: String(o.value),\n group: o.group,\n }))\n );\n }\n\n this.setState({ loading: true, error: null });\n\n return from(getDataSource(this.state.datasource, this._scopedVars)).pipe(\n mergeMap((ds) => {\n return from(this._getKeys(ds)).pipe(\n tap((response) => {\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n }),\n map((response) => dataFromResponse(response)),\n take(1),\n mergeMap((data) => {\n const a: VariableValueOption[] = data.map((i) => {\n return {\n label: i.text,\n value: i.value ? String(i.value) : i.text,\n group: i.group,\n };\n });\n return of(a);\n })\n );\n })\n );\n }\n\n public constructor(initialState: Partial<GroupByVariableState>) {\n const behaviors = initialState.$behaviors ?? [];\n const recommendations = initialState.drilldownRecommendationsEnabled ? new GroupByRecommendations() : undefined;\n\n if (recommendations) {\n behaviors.push(recommendations);\n }\n\n super({\n isMulti: true,\n name: '',\n value: [],\n text: [],\n options: [],\n datasource: null,\n baseFilters: [],\n applyMode: 'auto',\n layout: 'horizontal',\n type: 'groupby' as VariableType,\n ...initialState,\n noValueOnClear: true,\n $behaviors: behaviors.length > 0 ? behaviors : undefined,\n });\n\n this._recommendations = recommendations;\n\n if (this.state.defaultValue) {\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, false);\n }\n\n if (this.state.applyMode === 'auto') {\n this.addActivationHandler(() => {\n allActiveGroupByVariables.add(this);\n\n return () => allActiveGroupByVariables.delete(this);\n });\n }\n\n this.addActivationHandler(this._activationHandler);\n }\n\n private _activationHandler = () => {\n this._verifyApplicability();\n\n if (this.state.defaultValue) {\n if (this.checkIfRestorable(this.state.value)) {\n this.setState({ restorable: true });\n }\n }\n\n return () => {\n if (this.state.defaultValue) {\n this.restoreDefaultValues();\n }\n\n this.setState({ applicabilityEnabled: false });\n };\n };\n\n /**\n * Gets the GroupByRecommendations behavior if it exists in $behaviors\n */\n public getRecommendations(): GroupByRecommendations | undefined {\n return this._recommendations;\n }\n\n public getApplicableKeys(): string[] {\n const { value, keysApplicability } = this.state;\n\n const valueArray = isArray(value) ? value.map(String) : value ? [String(value)] : [];\n\n if (!keysApplicability || keysApplicability.length === 0) {\n return valueArray;\n }\n\n const applicableValues = valueArray.filter((val) => {\n const applicability = keysApplicability.find((item) => item.key === val);\n return !applicability || applicability.applicable !== false;\n });\n\n return applicableValues;\n }\n\n public async getGroupByApplicabilityForQueries(\n value: VariableValue,\n queries: SceneDataQuery[]\n ): Promise<DrilldownsApplicability[] | undefined> {\n const ds = await getDataSource(this.state.datasource, this._scopedVars);\n\n // @ts-expect-error (temporary till we update grafana/data)\n if (!ds.getDrilldownsApplicability) {\n return;\n }\n\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n\n // @ts-expect-error (temporary till we update grafana/data)\n return await ds.getDrilldownsApplicability({\n groupByKeys: Array.isArray(value) ? value.map((v) => String(v)) : value ? [String(value)] : [],\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n }\n\n public async _verifyApplicability() {\n const queries = getQueriesForVariables(this);\n const value = this.state.value;\n\n const response = await this.getGroupByApplicabilityForQueries(value, queries);\n\n if (!response) {\n return;\n }\n\n if (!isEqual(response, this.state.keysApplicability)) {\n this.setState({ keysApplicability: response ?? undefined, applicabilityEnabled: true });\n\n this.publishEvent(new SceneVariableValueChangedEvent(this), true);\n } else {\n this.setState({ applicabilityEnabled: true });\n }\n }\n\n // This method is related to the defaultValue property. We check if the current value\n // is different from the default value. If it is, the groupBy will show a button\n // allowing the user to restore the default values.\n public checkIfRestorable(values: VariableValue) {\n const originalValues = isArray(this.state.defaultValue?.value)\n ? this.state.defaultValue?.value\n : this.state.defaultValue?.value\n ? [this.state.defaultValue?.value]\n : [];\n const vals = isArray(values) ? values : [values];\n\n if (vals.length !== originalValues.length) {\n return true;\n }\n\n return !isEqual(vals, originalValues);\n }\n\n public restoreDefaultValues() {\n this.setState({ restorable: false });\n\n if (!this.state.defaultValue) {\n return;\n }\n\n this.changeValueTo(this.state.defaultValue.value, this.state.defaultValue.text, true);\n }\n\n /**\n * Get possible keys given current filters. Do not call from plugins directly\n */\n public _getKeys = async (ds: DataSourceApi) => {\n // TODO: provide current dimensions?\n const override = await this.state.getTagKeysProvider?.(this, null);\n\n if (override && override.replace) {\n return override.values;\n }\n\n if (this.state.defaultOptions) {\n return this.state.defaultOptions.concat(dataFromResponse(override?.values ?? []));\n }\n\n if (!ds.getTagKeys) {\n return [];\n }\n\n const queries = getQueriesForVariables(this);\n\n const otherFilters = this.state.baseFilters || [];\n const timeRange = sceneGraph.getTimeRange(this).state.value;\n const response = await ds.getTagKeys({\n filters: otherFilters,\n queries,\n timeRange,\n scopes: sceneGraph.getScopes(this),\n ...getEnrichedFiltersRequest(this),\n });\n if (responseHasError(response)) {\n this.setState({ error: response.error.message });\n }\n\n let keys = dataFromResponse(response);\n if (override) {\n keys = keys.concat(dataFromResponse(override.values));\n }\n\n const tagKeyRegexFilter = this.state.tagKeyRegexFilter;\n if (tagKeyRegexFilter) {\n keys = keys.filter((f) => f.text.match(tagKeyRegexFilter));\n }\n\n return keys;\n };\n\n public async _verifyApplicabilityAndStoreRecentGrouping() {\n await this._verifyApplicability();\n\n if (!this._recommendations) {\n return;\n }\n\n const applicableValues = this.getApplicableKeys();\n if (applicableValues.length === 0) {\n return;\n }\n\n this._recommendations.storeRecentGrouping(applicableValues);\n }\n\n /**\n * Allows clearing the value of the variable to an empty value. Overrides default behavior of a MultiValueVariable\n */\n public getDefaultMultiState(options: VariableValueOption[]) {\n return { value: [], text: [] };\n }\n}\n\nexport function GroupByVariableRenderer({ model }: SceneComponentProps<GroupByVariable>) {\n const {\n value,\n text,\n key,\n isMulti = true,\n maxVisibleValues,\n noValueOnClear,\n options,\n includeAll,\n allowCustomValue = true,\n defaultValue,\n keysApplicability,\n drilldownRecommendationsEnabled,\n } = model.useState();\n\n const recommendations = model.getRecommendations();\n\n const styles = useStyles2(getStyles);\n\n const values = useMemo<Array<SelectableValue<VariableValueSingle>>>(() => {\n const arrayValue = isArray(value) ? value : [value];\n const arrayText = isArray(text) ? text : [text];\n\n return arrayValue.map((value, idx) => ({\n value,\n label: String(arrayText[idx] ?? value),\n }));\n }, [value, text]);\n\n const [isFetchingOptions, setIsFetchingOptions] = useState(false);\n const [isOptionsOpen, setIsOptionsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n\n // To not trigger queries on every selection we store this state locally here and only update the variable onBlur\n const [uncommittedValue, setUncommittedValue] = useState(values);\n\n const optionSearcher = useMemo(() => getOptionSearcher(options, includeAll), [options, includeAll]);\n\n const hasDefaultValue = defaultValue !== undefined;\n\n // Detect value changes outside\n useEffect(() => {\n setUncommittedValue(values);\n }, [values]);\n\n const onInputChange = (value: string, { action }: InputActionMeta) => {\n if (action === 'input-change') {\n setInputValue(value);\n if (model.onSearchChange) {\n model.onSearchChange!(value);\n }\n return value;\n }\n\n if (action === 'input-blur') {\n setInputValue('');\n return '';\n }\n\n return inputValue;\n };\n\n const filteredOptions = useMemo(\n () => handleOptionGroups(optionSearcher(inputValue).map(toSelectableValue)),\n [optionSearcher, inputValue]\n );\n\n const select = isMulti ? (\n <MultiSelect<VariableValueSingle>\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n className={cx(drilldownRecommendationsEnabled && styles.selectStylesInWrapper)}\n allowCustomValue={allowCustomValue}\n inputValue={inputValue}\n value={uncommittedValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={false}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n isLoading={isFetchingOptions}\n components={{\n Option: OptionWithCheckbox,\n Menu: WideMenu,\n ...(hasDefaultValue\n ? {\n IndicatorsContainer: () => <DefaultGroupByCustomIndicatorContainer model={model} />,\n }\n : {}),\n MultiValueContainer: ({ innerProps, children }: React.PropsWithChildren<GroupByContainerProps>) => (\n <GroupByValueContainer innerProps={innerProps} keysApplicability={keysApplicability}>\n {children}\n </GroupByValueContainer>\n ),\n }}\n onInputChange={onInputChange}\n onBlur={() => {\n model.changeValueTo(\n uncommittedValue.map((x) => x.value!),\n uncommittedValue.map((x) => x.label!),\n true\n );\n\n const restorable = model.checkIfRestorable(uncommittedValue.map((v) => v.value!));\n\n if (restorable !== model.state.restorable) {\n model.setState({ restorable: restorable });\n }\n\n model._verifyApplicabilityAndStoreRecentGrouping();\n }}\n onChange={(newValue, action) => {\n if (action.action === 'clear' && noValueOnClear) {\n model.changeValueTo([], undefined, true);\n }\n\n setUncommittedValue(newValue);\n setInputValue('');\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n ) : (\n <Select\n aria-label={t(\n 'grafana-scenes.variables.group-by-variable-renderer.aria-label-group-by-selector',\n 'Group by selector'\n )}\n data-testid={`GroupBySelect-${key}`}\n id={key}\n placeholder={t(\n 'grafana-scenes.variables.group-by-variable-renderer.placeholder-group-by-label',\n 'Group by label'\n )}\n width=\"auto\"\n className={cx(drilldownRecommendationsEnabled && styles.selectStylesInWrapper)}\n inputValue={inputValue}\n value={uncommittedValue && uncommittedValue.length > 0 ? uncommittedValue : null}\n allowCustomValue={allowCustomValue}\n noMultiValueWrap={true}\n maxVisibleValues={maxVisibleValues ?? 5}\n tabSelectsValue={false}\n virtualized\n options={filteredOptions}\n filterOption={filterNoOp}\n closeMenuOnSelect={true}\n isOpen={isOptionsOpen}\n isClearable={true}\n hideSelectedOptions={false}\n noValueOnClear={true}\n isLoading={isFetchingOptions}\n components={{ Menu: WideMenu }}\n onInputChange={onInputChange}\n onChange={(newValue, action) => {\n if (action.action === 'clear') {\n setUncommittedValue([]);\n if (noValueOnClear) {\n model.changeValueTo([]);\n }\n return;\n }\n if (newValue?.value) {\n setUncommittedValue([newValue]);\n model.changeValueTo([newValue.value], newValue.label ? [newValue.label] : undefined);\n }\n }}\n onOpenMenu={async () => {\n const profiler = getInteractionTracker(model);\n profiler?.startInteraction(GROUPBY_DIMENSIONS_INTERACTION);\n\n setIsFetchingOptions(true);\n await lastValueFrom(model.validateAndUpdate());\n setIsFetchingOptions(false);\n setIsOptionsOpen(true);\n\n profiler?.stopInteraction();\n }}\n onCloseMenu={() => {\n setIsOptionsOpen(false);\n }}\n />\n );\n\n if (!recommendations) {\n return select;\n }\n\n return (\n <div className={styles.wrapper}>\n <div className={styles.recommendations}>\n <recommendations.Component model={recommendations} />\n </div>\n\n {select}\n </div>\n );\n}\n\nconst filterNoOp = () => true;\n\n// custom minWidth menu component to fit custom value message\nfunction WideMenu<Option, IsMulti extends boolean, Group extends GroupBase<Option>>(\n props: MenuProps<Option, IsMulti, Group>\n) {\n return (\n <components.Menu {...props}>\n <div style={{ minWidth: '220px' }}>{props.children}</div>\n </components.Menu>\n );\n}\n\nfunction toSelectableValue(input: VariableValueOption): SelectableValue<VariableValueSingle> {\n const { label, value, group } = input;\n const result: SelectableValue<VariableValueSingle> = {\n label,\n value,\n };\n\n if (group) {\n result.group = group;\n }\n\n return result;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n wrapper: css({\n display: 'flex',\n }),\n selectStylesInWrapper: css({\n borderTopLeftRadius: 0,\n borderBottomLeftRadius: 0,\n border: `1px solid ${theme.colors.border.strong}`,\n borderLeft: 'none',\n }),\n recommendations: css({\n display: 'flex',\n alignItems: 'center',\n paddingInline: theme.spacing(0.5),\n borderTop: `1px solid ${theme.colors.border.strong}`,\n borderBottom: `1px solid ${theme.colors.border.strong}`,\n backgroundColor: theme.components.input.background,\n '& button': {\n borderRadius: 0,\n height: '100%',\n margin: 0,\n paddingInline: theme.spacing(0.5),\n },\n }),\n});\n"],"names":["value"],"mappings":"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"}
@@ -22,31 +22,22 @@ function toMetricFindValues(valueProp, textProp) {
22
22
  const value = fieldValue(indices.value);
23
23
  const text = fieldValue(indices.text);
24
24
  const expandable = fieldValue(indices.expandable);
25
- if (!indices.properties.length) {
26
- metrics.push({
27
- value: value || text,
28
- text: text || value,
29
- expandable
30
- });
31
- continue;
32
- }
33
25
  const properties = {};
34
26
  for (const p of indices.properties) {
35
27
  properties[p.name] = fieldValue(p.index);
36
28
  }
37
- metrics.push({
38
- value: value || valueProp || text || textProp,
39
- text: text || textProp || value || valueProp,
40
- properties,
41
- expandable
42
- });
29
+ const result = { value, text, properties };
30
+ if (expandable !== void 0) {
31
+ result.expandable = Boolean(expandable);
32
+ }
33
+ metrics.push(result);
43
34
  }
44
35
  }
45
36
  return metrics;
46
37
  })
47
38
  );
48
39
  }
49
- function findFieldsIndices(frames) {
40
+ function findFieldsIndices(frames, valueProp, textProp) {
50
41
  const indices = {
51
42
  value: -1,
52
43
  text: -1,
@@ -58,17 +49,11 @@ function findFieldsIndices(frames) {
58
49
  const field = frame.fields[index];
59
50
  const fieldName = getFieldDisplayName(field, frame, frames).toLowerCase();
60
51
  if (field.type === FieldType.string) {
61
- if (fieldName === "value") {
62
- if (indices.value === -1) {
63
- indices.value = index;
64
- }
65
- continue;
52
+ if (fieldName === "value" && indices.value === -1) {
53
+ indices.value = index;
66
54
  }
67
- if (fieldName === "text") {
68
- if (indices.text === -1) {
69
- indices.text = index;
70
- }
71
- continue;
55
+ if (fieldName === "text" && indices.text === -1) {
56
+ indices.text = index;
72
57
  }
73
58
  indices.properties.push({ name: fieldName, index });
74
59
  continue;
@@ -80,17 +65,20 @@ function findFieldsIndices(frames) {
80
65
  }
81
66
  return indices;
82
67
  }
83
- function validateIndices(indices, valueProp, textProp) {
68
+ function validateIndices(indices) {
84
69
  const hasNoValueOrText = indices.value === -1 && indices.text === -1;
85
- if (hasNoValueOrText && !indices.properties.length) {
70
+ if (!indices.properties.length) {
86
71
  throw new Error("Couldn't find any field of type string in the results");
87
72
  }
88
- if (hasNoValueOrText && indices.properties.length === 1) {
73
+ if (hasNoValueOrText) {
89
74
  indices.value = indices.properties[0].index;
90
- indices.properties = [];
75
+ indices.text = indices.properties[0].index;
76
+ }
77
+ if (indices.value === -1 && indices.text !== -1) {
78
+ indices.value = indices.text;
91
79
  }
92
- if (hasNoValueOrText && indices.properties.length && true && true) {
93
- throw new Error("Properties found in series but missing valueProp and textProp");
80
+ if (indices.text === -1 && indices.value !== -1) {
81
+ indices.text = indices.value;
94
82
  }
95
83
  return indices;
96
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"toMetricFindValues.js","sources":["../../../../../../../../src/variables/variants/query/toMetricFindValues.ts"],"sourcesContent":["import {\n DataFrame,\n FieldType,\n getFieldDisplayName,\n getProcessedDataFrames,\n isDataFrame,\n MetricFindValue,\n PanelData,\n} from '@grafana/data';\nimport { map, OperatorFunction } from 'rxjs';\n\ninterface MetricFindValueWithOptionalProperties extends MetricFindValue {\n properties?: Record<string, string>;\n}\n\nexport function toMetricFindValues(\n valueProp?: string,\n textProp?: string\n): OperatorFunction<PanelData, MetricFindValueWithOptionalProperties[]> {\n return (source) =>\n source.pipe(\n map((panelData) => {\n const frames = panelData.series;\n if (!frames || !frames.length) {\n return [];\n }\n\n if (areMetricFindValues(frames)) {\n return frames;\n }\n\n if (frames[0].fields.length === 0) {\n return [];\n }\n\n const indices = validateIndices(findFieldsIndices(frames), valueProp, textProp);\n\n const metrics: MetricFindValueWithOptionalProperties[] = [];\n\n for (const frame of frames) {\n for (let index = 0; index < frame.length; index++) {\n const fieldValue = (fieldIndex: number) =>\n fieldIndex !== -1 ? frame.fields[fieldIndex].values.get(index) : undefined;\n\n const value = fieldValue(indices.value);\n const text = fieldValue(indices.text);\n const expandable = fieldValue(indices.expandable);\n\n if (!indices.properties.length) {\n metrics.push({\n value: value || text,\n text: text || value,\n expandable,\n });\n continue;\n }\n\n const properties: MetricFindValueWithOptionalProperties['properties'] = {};\n for (const p of indices.properties) {\n properties[p.name] = fieldValue(p.index);\n }\n\n metrics.push({\n value: value || (valueProp && properties[valueProp]) || text || (textProp && properties[textProp]),\n text: text || (textProp && properties[textProp]) || value || (valueProp && properties[valueProp]),\n properties,\n expandable,\n });\n }\n }\n\n return metrics;\n })\n );\n}\n\ntype Indices = {\n value: number;\n text: number;\n properties: Array<{ name: string; index: number }>;\n expandable: number;\n};\n\nfunction findFieldsIndices(frames: DataFrame[]): Indices {\n const indices: Indices = {\n value: -1,\n text: -1,\n expandable: -1,\n properties: [],\n };\n\n for (const frame of getProcessedDataFrames(frames)) {\n for (let index = 0; index < frame.fields.length; index++) {\n const field = frame.fields[index];\n const fieldName = getFieldDisplayName(field, frame, frames).toLowerCase();\n\n if (field.type === FieldType.string) {\n if (fieldName === 'value') {\n if (indices.value === -1) {\n indices.value = index;\n }\n continue;\n }\n\n if (fieldName === 'text') {\n if (indices.text === -1) {\n indices.text = index;\n }\n continue;\n }\n\n indices.properties.push({ name: fieldName, index });\n continue;\n }\n\n if (\n fieldName === 'expandable' &&\n (field.type === FieldType.boolean || field.type === FieldType.number) &&\n indices.expandable === -1\n ) {\n indices.expandable = index;\n }\n }\n }\n\n return indices;\n}\n\nfunction validateIndices(indices: Indices, valueProp?: string, textProp?: string): Indices {\n const hasNoValueOrText = indices.value === -1 && indices.text === -1;\n\n if (hasNoValueOrText && !indices.properties.length) {\n throw new Error(\"Couldn't find any field of type string in the results\");\n }\n\n // A single field of type string that is neither named \"value\" nor \"text\" is considered as \"value\"\n if (hasNoValueOrText && indices.properties.length === 1) {\n indices.value = indices.properties[0].index;\n indices.properties = [];\n }\n\n if (hasNoValueOrText && indices.properties.length && !valueProp && !textProp) {\n throw new Error('Properties found in series but missing valueProp and textProp');\n }\n\n return indices;\n}\n\nfunction areMetricFindValues(data: any[]): data is MetricFindValue[] {\n if (!data) {\n return false;\n }\n\n if (!data.length) {\n return true;\n }\n\n const firstValue: any = data[0];\n\n if (isDataFrame(firstValue)) {\n return false;\n }\n\n for (const firstValueKey in firstValue) {\n if (!firstValue.hasOwnProperty(firstValueKey)) {\n continue;\n }\n\n const value = firstValue[firstValueKey];\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n continue;\n }\n\n const key = firstValueKey.toLowerCase();\n\n if (key === 'text' || key === 'value') {\n return true;\n }\n }\n\n return false;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toMetricFindValues.js","sources":["../../../../../../../../src/variables/variants/query/toMetricFindValues.ts"],"sourcesContent":["import {\n DataFrame,\n FieldType,\n getFieldDisplayName,\n getProcessedDataFrames,\n isDataFrame,\n MetricFindValue,\n PanelData,\n} from '@grafana/data';\nimport { map, OperatorFunction } from 'rxjs';\n\ninterface MetricFindValueWithOptionalProperties extends MetricFindValue {\n properties?: Record<string, string>;\n}\n\nexport function toMetricFindValues(\n valueProp?: string,\n textProp?: string\n): OperatorFunction<PanelData, MetricFindValueWithOptionalProperties[]> {\n return (source) =>\n source.pipe(\n map((panelData) => {\n const frames = panelData.series;\n if (!frames || !frames.length) {\n return [];\n }\n\n if (areMetricFindValues(frames)) {\n return frames;\n }\n\n if (frames[0].fields.length === 0) {\n return [];\n }\n\n const indices = validateIndices(findFieldsIndices(frames, valueProp, textProp));\n\n const metrics: MetricFindValueWithOptionalProperties[] = [];\n\n for (const frame of frames) {\n for (let index = 0; index < frame.length; index++) {\n const fieldValue = (fieldIndex: number) =>\n fieldIndex !== -1 ? frame.fields[fieldIndex].values.get(index) : undefined;\n\n const value = fieldValue(indices.value);\n const text = fieldValue(indices.text);\n const expandable = fieldValue(indices.expandable);\n\n const properties: MetricFindValueWithOptionalProperties['properties'] = {};\n\n for (const p of indices.properties) {\n properties[p.name] = fieldValue(p.index);\n }\n\n const result: MetricFindValueWithOptionalProperties = { value, text, properties: properties };\n\n if (expandable !== undefined) {\n result.expandable = Boolean(expandable);\n }\n\n metrics.push(result);\n }\n }\n\n return metrics;\n })\n );\n}\n\ntype Indices = {\n value: number;\n text: number;\n properties: Array<{ name: string; index: number }>;\n expandable: number;\n};\n\nfunction findFieldsIndices(frames: DataFrame[], valueProp?: string, textProp?: string): Indices {\n const indices: Indices = {\n value: -1,\n text: -1,\n expandable: -1,\n properties: [],\n };\n\n for (const frame of getProcessedDataFrames(frames)) {\n for (let index = 0; index < frame.fields.length; index++) {\n const field = frame.fields[index];\n const fieldName = getFieldDisplayName(field, frame, frames).toLowerCase();\n\n if (field.type === FieldType.string) {\n if (valueProp && fieldName === valueProp) {\n indices.value = index;\n }\n\n if (textProp && fieldName === textProp) {\n indices.text = index;\n }\n\n if (fieldName === 'value' && indices.value === -1) {\n indices.value = index;\n }\n\n if (fieldName === 'text' && indices.text === -1) {\n indices.text = index;\n }\n\n indices.properties.push({ name: fieldName, index });\n continue;\n }\n\n if (\n fieldName === 'expandable' &&\n (field.type === FieldType.boolean || field.type === FieldType.number) &&\n indices.expandable === -1\n ) {\n indices.expandable = index;\n }\n }\n }\n\n return indices;\n}\n\nfunction validateIndices(indices: Indices): Indices {\n const hasNoValueOrText = indices.value === -1 && indices.text === -1;\n\n if (!indices.properties.length) {\n throw new Error(\"Couldn't find any field of type string in the results\");\n }\n\n if (hasNoValueOrText) {\n indices.value = indices.properties[0].index;\n indices.text = indices.properties[0].index;\n }\n\n if (indices.value === -1 && indices.text !== -1) {\n indices.value = indices.text;\n }\n\n if (indices.text === -1 && indices.value !== -1) {\n indices.text = indices.value;\n }\n\n return indices;\n}\n\nfunction areMetricFindValues(data: any[]): data is MetricFindValue[] {\n if (!data) {\n return false;\n }\n\n if (!data.length) {\n return true;\n }\n\n const firstValue: any = data[0];\n\n if (isDataFrame(firstValue)) {\n return false;\n }\n\n for (const firstValueKey in firstValue) {\n if (!firstValue.hasOwnProperty(firstValueKey)) {\n continue;\n }\n\n const value = firstValue[firstValueKey];\n if (value !== null && typeof value !== 'string' && typeof value !== 'number') {\n continue;\n }\n\n const key = firstValueKey.toLowerCase();\n\n if (key === 'text' || key === 'value') {\n return true;\n }\n }\n\n return false;\n}\n"],"names":[],"mappings":"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"}
@@ -102,10 +102,6 @@ var grafanaScenes = {
102
102
  "placeholder-select-value": "Select value"
103
103
  }
104
104
  },
105
- "adhoc-filters-combobox-renderer": {
106
- collapse: "Collapse",
107
- "collapse-filters": "Collapse filters"
108
- },
109
105
  "data-source-variable": {
110
106
  label: {
111
107
  "default": "default"
@@ -175,4 +171,4 @@ var grafanaScenes = {
175
171
  };
176
172
 
177
173
  exports.default = grafanaScenes;
178
- //# sourceMappingURL=grafana-scenes-DrGXYYn6.js.map
174
+ //# sourceMappingURL=grafana-scenes-C9F_2hih.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"grafana-scenes-DrGXYYn6.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"grafana-scenes-C9F_2hih.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/dist/index.d.ts CHANGED
@@ -1128,11 +1128,6 @@ interface AdHocFiltersVariableState extends SceneVariableState {
1128
1128
  * state for checking whether drilldown applicability is enabled
1129
1129
  */
1130
1130
  applicabilityEnabled?: boolean;
1131
- /**
1132
- * When true, enables a collapse button that appears when filters wrap to multiple lines.
1133
- * Allows users to collapse the filter UI to save vertical space.
1134
- */
1135
- collapsible?: boolean;
1136
1131
  /**
1137
1132
  * enables drilldown recommendations
1138
1133
  */
@@ -1186,10 +1181,6 @@ declare class AdHocFiltersVariable extends SceneObjectBase<AdHocFiltersVariableS
1186
1181
  forcePublish?: boolean;
1187
1182
  }): void;
1188
1183
  restoreOriginalFilter(filter: AdHocFilterWithLabels): void;
1189
- /**
1190
- * Clear all user-added filters and restore origin filters to their original values.
1191
- */
1192
- clearAll(): void;
1193
1184
  getValue(fieldPath?: string): VariableValue | undefined;
1194
1185
  _updateFilter(filter: AdHocFilterWithLabels, update: Partial<AdHocFilterWithLabels>): void;
1195
1186
  updateToMatchAll(filter: AdHocFilterWithLabels): void;
@@ -1471,11 +1462,6 @@ interface GroupByVariableState extends MultiValueVariableState {
1471
1462
  * state for checking whether drilldown applicability is enabled
1472
1463
  */
1473
1464
  applicabilityEnabled?: boolean;
1474
- /**
1475
- * Whether the input should be wide. For example, this is needed when dashboardAdHocAndGroupByWrapper feature toggle is enabled so that
1476
- * the input fills the remaining space in the row.
1477
- */
1478
- wideInput?: boolean;
1479
1465
  /**
1480
1466
  * enables drilldown recommendations
1481
1467
  */
@@ -2571,10 +2557,6 @@ interface AdHocFiltersControllerState {
2571
2557
  onAddCustomValue?: OnAddCustomValueFn;
2572
2558
  wip?: AdHocFilterWithLabels;
2573
2559
  inputPlaceholder?: string;
2574
- /**
2575
- * When true, enables a collapse button that appears when filters wrap to multiple lines.
2576
- */
2577
- collapsible?: boolean;
2578
2560
  valueRecommendations?: AdHocFiltersRecommendations;
2579
2561
  drilldownRecommendationsEnabled?: boolean;
2580
2562
  }
@@ -2645,10 +2627,6 @@ interface AdHocFiltersController {
2645
2627
  * @param filter - The filter to restore
2646
2628
  */
2647
2629
  restoreOriginalFilter(filter: AdHocFilterWithLabels): void;
2648
- /**
2649
- * Clear all user-added filters and restore origin filters to original values.
2650
- */
2651
- clearAll?(): void;
2652
2630
  /**
2653
2631
  * Optional: Start profiling an interaction (for performance tracking).
2654
2632
  * @param name - The interaction name
@@ -2687,7 +2665,6 @@ declare class AdHocFiltersVariableController implements AdHocFiltersController {
2687
2665
  handleComboboxBackspace(filter: AdHocFilterWithLabels): void;
2688
2666
  addWip(): void;
2689
2667
  restoreOriginalFilter(filter: AdHocFilterWithLabels): void;
2690
- clearAll(): void;
2691
2668
  startProfile(name: string): void;
2692
2669
  startInteraction(name: string): void;
2693
2670
  stopInteraction(): void;