2020-11-25 03:21:48 -06:00
|
|
|
import React, { PropsWithChildren, useMemo } from 'react';
|
2022-04-22 08:33:13 -05:00
|
|
|
|
2020-11-25 03:21:48 -06:00
|
|
|
import { SelectableValue } from '@grafana/data';
|
|
|
|
import { selectors } from '@grafana/e2e-selectors';
|
2022-04-22 08:33:13 -05:00
|
|
|
|
2020-11-25 03:21:48 -06:00
|
|
|
import { VariableSelectField } from '../editor/VariableSelectField';
|
|
|
|
import { VariableSort } from '../types';
|
|
|
|
|
|
|
|
interface Props {
|
|
|
|
onChange: (option: SelectableValue<VariableSort>) => void;
|
|
|
|
sort: VariableSort;
|
|
|
|
}
|
|
|
|
|
|
|
|
const SORT_OPTIONS = [
|
|
|
|
{ label: 'Disabled', value: VariableSort.disabled },
|
|
|
|
{ label: 'Alphabetical (asc)', value: VariableSort.alphabeticalAsc },
|
|
|
|
{ label: 'Alphabetical (desc)', value: VariableSort.alphabeticalDesc },
|
|
|
|
{ label: 'Numerical (asc)', value: VariableSort.numericalAsc },
|
|
|
|
{ label: 'Numerical (desc)', value: VariableSort.numericalDesc },
|
|
|
|
{ label: 'Alphabetical (case-insensitive, asc)', value: VariableSort.alphabeticalCaseInsensitiveAsc },
|
|
|
|
{ label: 'Alphabetical (case-insensitive, desc)', value: VariableSort.alphabeticalCaseInsensitiveDesc },
|
|
|
|
];
|
|
|
|
|
|
|
|
export function QueryVariableSortSelect({ onChange, sort }: PropsWithChildren<Props>) {
|
2021-01-20 00:59:48 -06:00
|
|
|
const value = useMemo(() => SORT_OPTIONS.find((o) => o.value === sort) ?? SORT_OPTIONS[0], [sort]);
|
2020-11-25 03:21:48 -06:00
|
|
|
|
|
|
|
return (
|
|
|
|
<VariableSelectField
|
|
|
|
name="Sort"
|
2022-10-12 03:43:41 -05:00
|
|
|
description="How to sort the values of this variable"
|
2020-11-25 03:21:48 -06:00
|
|
|
value={value}
|
|
|
|
options={SORT_OPTIONS}
|
|
|
|
onChange={onChange}
|
2022-02-03 18:55:19 -06:00
|
|
|
testId={selectors.pages.Dashboard.Settings.Variables.Edit.QueryVariable.queryOptionsSortSelectV2}
|
2022-10-12 03:43:41 -05:00
|
|
|
width={25}
|
2020-11-25 03:21:48 -06:00
|
|
|
/>
|
|
|
|
);
|
|
|
|
}
|