* CI: fix shellcheck issues (#789) Signed-off-by: Mario Trangoni <mjtrangoni@gmail.com> * annotations: fix options in grafana 6.x, fix #813 * fix function editor in Grafana 6.4, closes #810 * add typings for grafana packages * Add $__range_series variable for calculating function over the whole series, #531 * fix tests * Don't set alert styles for react panels, fix #823 * docs: add range variables * docs: percentile reference * fix codespell * update packages (build with node 12) * update circleci node image to 12 * fix test configuration (babel) * Fix 817 (#851) * problems: update panel schema * update packages (build with node 12) * problems: use datasource from target * problems: fix query editor after schema update * problems: fix list layout * update circleci node image to 12 * fix tests * build(deps-dev): bump lodash from 4.17.10 to 4.17.13 (#852) Bumps [lodash](https://github.com/lodash/lodash) from 4.17.10 to 4.17.13. - [Release notes](https://github.com/lodash/lodash/releases) - [Commits](https://github.com/lodash/lodash/compare/4.17.10...4.17.13) Signed-off-by: dependabot[bot] <support@github.com> * fix packages security alerts * problems: fix tags adding and removal * fix adding func from typeahead, closes #468 * update change log * bump plugin version to 3.10.5 * problems: fix tag removal (list layout) * Fix percentile() function, closes #862 (#863) Like the other aggregation functions, the datapoints need to be sorted in time before calling groupBy_perf(). * Update copyright, happy New Year! * fix not acknowledged problem color with a message (#858) * fix not acknowledged problem color with a message * fix not acknowledged problem color with a message, closes #857 * Variable query editor (#856) * refactor: convert module to typescript * refactor: covert utils to typescript * variable query editor WIP * variable editor: fix type error after grafana/ui update * variable editor: use FormLabel from grafana/ui * variable editor: refactor * variable editor: input validation and highlights * variable editor: fix tests * variable query: fix backward compatibility with empty queries * fix linter errors * variable editor: fix variable replacement in queries * Fixes for backend Co-authored-by: Mario Trangoni <mario@mariotrangoni.de> Co-authored-by: Alexander Zobnin <alexanderzobnin@gmail.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Mark Reibert <mreibert@netskope.com> Co-authored-by: memfiz <arnis.civciss@gmail.com>
71 lines
1.7 KiB
TypeScript
71 lines
1.7 KiB
TypeScript
import React, { FC } from 'react';
|
|
import { css, cx } from 'emotion';
|
|
import { Themeable, withTheme, Input, EventsWithValidation, ValidationEvents } from '@grafana/ui';
|
|
import { GrafanaTheme } from '@grafana/data';
|
|
import { isRegex, variableRegex } from '../utils';
|
|
|
|
const variablePattern = RegExp(`^${variableRegex.source}`);
|
|
|
|
const getStyles = (theme: GrafanaTheme) => ({
|
|
inputRegex: css`
|
|
color: ${theme.colors.orange}
|
|
`,
|
|
inputVariable: css`
|
|
color: ${theme.colors.variable}
|
|
`,
|
|
});
|
|
|
|
const zabbixInputValidationEvents: ValidationEvents = {
|
|
[EventsWithValidation.onBlur]: [
|
|
{
|
|
rule: value => {
|
|
if (!value) {
|
|
return true;
|
|
}
|
|
if (value.length > 1 && value[0] === '/') {
|
|
if (value[value.length - 1] !== '/') {
|
|
return false;
|
|
}
|
|
}
|
|
return true;
|
|
},
|
|
errorMessage: 'Not a valid regex',
|
|
},
|
|
{
|
|
rule: value => {
|
|
if (value === '*') {
|
|
return false;
|
|
}
|
|
return true;
|
|
},
|
|
errorMessage: 'Wildcards not supported. Use /.*/ instead',
|
|
},
|
|
],
|
|
};
|
|
|
|
interface Props extends React.ComponentProps<typeof Input>, Themeable {
|
|
}
|
|
|
|
const UnthemedZabbixInput: FC<Props> = ({ theme, value, ref, validationEvents, ...restProps }) => {
|
|
const styles = getStyles(theme);
|
|
|
|
let inputClass;
|
|
if (variablePattern.test(value as string)) {
|
|
inputClass = styles.inputVariable;
|
|
}
|
|
if (isRegex(value)) {
|
|
inputClass = styles.inputRegex;
|
|
}
|
|
|
|
return (
|
|
<Input
|
|
className={inputClass}
|
|
value={value}
|
|
validationEvents={zabbixInputValidationEvents}
|
|
{...restProps}
|
|
/>
|
|
);
|
|
};
|
|
|
|
export const ZabbixInput = withTheme(UnthemedZabbixInput);
|