2020-06-04 19:44:48 +08:00
|
|
|
import React, { FC, useCallback, useMemo } from 'react';
|
|
|
|
import { useSelector } from 'react-redux';
|
|
|
|
import { Select } from '@grafana/ui';
|
|
|
|
import { SelectableValue } from '@grafana/data';
|
|
|
|
|
|
|
|
import { getVariables } from '../../../variables/state/selectors';
|
|
|
|
import { StoreState } from '../../../../types';
|
|
|
|
|
|
|
|
export interface Props {
|
Chore: Fix all Typescript strict null errors (#26204)
* Chore: Fix typescript strict null errors
* Added new limit
* Fixed ts issue
* fixed tests
* trying to fix type inference
* Fixing more ts errors
* Revert tsconfig option
* Fix
* Fixed code
* More fixes
* fix tests
* Updated snapshot
* Chore: More ts strict null fixes
* More fixes in some really messed up azure config components
* More fixes, current count: 441
* 419
* More fixes
* Fixed invalid initial state in explore
* Fixing tests
* Fixed tests
* Explore fix
* More fixes
* Progress
* Sub 300
* Now at 218
* Progress
* Update
* Progress
* Updated tests
* at 159
* fixed tests
* Progress
* YAy blow 100! at 94
* 10,9,8,7,6,5,4,3,2,1... lift off
* Fixed tests
* Fixed more type errors
Co-authored-by: Ryan McKinley <ryantxu@gmail.com>
2020-07-10 18:46:59 +08:00
|
|
|
repeat: string | undefined | null;
|
|
|
|
onChange: (name: string | null | undefined) => void;
|
2020-06-04 19:44:48 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
export const RepeatRowSelect: FC<Props> = ({ repeat, onChange }) => {
|
|
|
|
const variables = useSelector((state: StoreState) => getVariables(state));
|
|
|
|
|
|
|
|
const variableOptions = useMemo(() => {
|
|
|
|
const options = variables.map((item: any) => {
|
|
|
|
return { label: item.name, value: item.name };
|
|
|
|
});
|
|
|
|
|
|
|
|
if (options.length === 0) {
|
|
|
|
options.unshift({
|
|
|
|
label: 'No template variables found',
|
|
|
|
value: null,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
options.unshift({
|
|
|
|
label: 'Disable repeating',
|
|
|
|
value: null,
|
|
|
|
});
|
|
|
|
|
|
|
|
return options;
|
|
|
|
}, variables);
|
|
|
|
|
|
|
|
const onSelectChange = useCallback((option: SelectableValue<string | null>) => onChange(option.value), [onChange]);
|
|
|
|
|
|
|
|
return <Select value={repeat} onChange={onSelectChange} options={variableOptions} />;
|
|
|
|
};
|