Problems: filter by particular severity, fixes #572
This commit is contained in:
@@ -3,7 +3,7 @@ import React, { useEffect, FormEvent } from 'react';
|
|||||||
import { useAsyncFn } from 'react-use';
|
import { useAsyncFn } from 'react-use';
|
||||||
|
|
||||||
import { SelectableValue } from '@grafana/data';
|
import { SelectableValue } from '@grafana/data';
|
||||||
import { InlineField, Input, Select } from '@grafana/ui';
|
import { InlineField, Input, MultiSelect, Select } from '@grafana/ui';
|
||||||
import { QueryEditorRow } from './QueryEditorRow';
|
import { QueryEditorRow } from './QueryEditorRow';
|
||||||
import { MetricPicker } from '../../../components';
|
import { MetricPicker } from '../../../components';
|
||||||
import { getVariableOptions } from './utils';
|
import { getVariableOptions } from './utils';
|
||||||
@@ -143,9 +143,9 @@ export const ProblemsQueryEditor = ({ query, datasource, onChange }: Props) => {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
const onMinSeverityChange = (option: SelectableValue) => {
|
const onSeveritiesChange = (options: SelectableValue[]) => {
|
||||||
if (option.value !== null) {
|
if (options !== null) {
|
||||||
onChange({ ...query, options: { ...query.options, minSeverity: option.value } });
|
onChange({ ...query, options: { ...query.options, severities: options.map((o) => o.value) } });
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -217,13 +217,14 @@ export const ProblemsQueryEditor = ({ query, datasource, onChange }: Props) => {
|
|||||||
onChange={onPropChange('showProblems')}
|
onChange={onPropChange('showProblems')}
|
||||||
/>
|
/>
|
||||||
</InlineField>
|
</InlineField>
|
||||||
<InlineField label="Min severity" labelWidth={12}>
|
<InlineField label="Severity" labelWidth={12}>
|
||||||
<Select
|
<MultiSelect
|
||||||
isSearchable={false}
|
isSearchable={false}
|
||||||
width={24}
|
isClearable={true}
|
||||||
value={query.options?.minSeverity}
|
placeholder="Show all problems"
|
||||||
|
value={query.options?.severities}
|
||||||
options={severityOptions}
|
options={severityOptions}
|
||||||
onChange={onMinSeverityChange}
|
onChange={onSeveritiesChange}
|
||||||
/>
|
/>
|
||||||
</InlineField>
|
</InlineField>
|
||||||
</QueryEditorRow>
|
</QueryEditorRow>
|
||||||
|
|||||||
@@ -682,9 +682,10 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
|
|||||||
|
|
||||||
if (target.options?.minSeverity) {
|
if (target.options?.minSeverity) {
|
||||||
let severities = [0, 1, 2, 3, 4, 5].filter((v) => v >= target.options?.minSeverity);
|
let severities = [0, 1, 2, 3, 4, 5].filter((v) => v >= target.options?.minSeverity);
|
||||||
if (target.options?.severities) {
|
problemsOptions.severities = severities;
|
||||||
severities = severities.filter((v) => target.options?.severities.includes(v));
|
}
|
||||||
}
|
if (target.options?.severities?.length) {
|
||||||
|
let severities = [0, 1, 2, 3, 4, 5].filter((v) => target.options?.severities.includes(v));
|
||||||
problemsOptions.severities = severities;
|
problemsOptions.severities = severities;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import _ from 'lodash';
|
|||||||
import { ZabbixMetricsQuery } from './types';
|
import { ZabbixMetricsQuery } from './types';
|
||||||
import * as c from './constants';
|
import * as c from './constants';
|
||||||
|
|
||||||
export const DS_QUERY_SCHEMA = 11;
|
export const DS_QUERY_SCHEMA = 12;
|
||||||
export const DS_CONFIG_SCHEMA = 3;
|
export const DS_CONFIG_SCHEMA = 3;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -115,6 +115,15 @@ function migrateNewTriggersCountModes(target: any) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function migrateProblemsSeverity(target: any) {
|
||||||
|
if (target.schema >= 12) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (target?.options?.minSeverity) {
|
||||||
|
target.options.severities = [0, 1, 2, 3, 4, 5].filter((v) => v >= target.options.minSeverity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function migrate(target) {
|
export function migrate(target) {
|
||||||
target.resultFormat = target.resultFormat || 'time_series';
|
target.resultFormat = target.resultFormat || 'time_series';
|
||||||
target = fixTargetGroup(target);
|
target = fixTargetGroup(target);
|
||||||
@@ -129,6 +138,7 @@ export function migrate(target) {
|
|||||||
migrateSLAProperty(target);
|
migrateSLAProperty(target);
|
||||||
migrateTriggersMode(target);
|
migrateTriggersMode(target);
|
||||||
migrateNewTriggersCountModes(target);
|
migrateNewTriggersCountModes(target);
|
||||||
|
migrateProblemsSeverity(target);
|
||||||
|
|
||||||
target.schema = DS_QUERY_SCHEMA;
|
target.schema = DS_QUERY_SCHEMA;
|
||||||
return target;
|
return target;
|
||||||
|
|||||||
Reference in New Issue
Block a user