Problems: filter by particular severity, fixes #572

This commit is contained in:
Alexander Zobnin
2023-03-20 17:20:44 +01:00
parent 9deb7ddc3e
commit 07c02ca97a
3 changed files with 25 additions and 13 deletions

View File

@@ -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>

View File

@@ -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;
} }

View File

@@ -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;