Query option to override use trends option, fixes #1442

This commit is contained in:
Alexander Zobnin
2022-12-29 14:07:02 +01:00
parent 1cee6f0ae3
commit cf6b19e189
6 changed files with 39 additions and 15 deletions

View File

@@ -69,6 +69,7 @@ const getDefaultQuery: () => Partial<ZabbixMetricsQuery> = () => ({
skipEmptyValues: false,
disableDataAlignment: false,
useZabbixValueMapping: false,
useTrends: 'default',
},
table: {
skipEmptyValues: false,
@@ -103,7 +104,9 @@ export interface ZabbixQueryEditorProps
extends QueryEditorProps<ZabbixDatasource, ZabbixMetricsQuery, ZabbixDSOptions> {}
export const QueryEditor = ({ query, datasource, onChange, onRunQuery }: ZabbixQueryEditorProps) => {
query = { ...getDefaultQuery(), ...query };
const queryDefaults = getDefaultQuery();
query = { ...queryDefaults, ...query };
query.options = { ...queryDefaults.options, ...query.options };
const { queryType } = query;
if (queryType === c.MODE_PROBLEMS || queryType === c.MODE_TRIGGERS) {
const defaults = getProblemsQueryDefaults();

View File

@@ -26,6 +26,12 @@ const sortOptions: Array<SelectableValue<string>> = [
{ label: 'Severity', value: 'severity' },
];
const trendsOptions: Array<SelectableValue<string>> = [
{ label: 'Default', value: 'default' },
{ label: 'True', value: 'true' },
{ label: 'False', value: 'false' },
];
interface Props {
queryType: string;
queryOptions: ZabbixQueryOptions;
@@ -93,6 +99,15 @@ export const QueryOptionsEditor = ({ queryType, queryOptions, onChange }: Props)
const renderMetricOptions = () => {
return (
<>
<InlineField label="Trends" labelWidth={24}>
<Select
isSearchable={false}
width={16}
value={queryOptions.useTrends}
options={trendsOptions}
onChange={onPropChange('useTrends')}
/>
</InlineField>
<InlineField label="Show disabled items" labelWidth={24}>
<InlineSwitch
value={queryOptions.showDisabledItems}

View File

@@ -279,7 +279,7 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
request.scopedVars = Object.assign({}, request.scopedVars, utils.getRangeScopedVars(request.range));
this.replaceTargetVariables(target, request);
const timeRange = this.buildTimeRange(request, target);
const useTrends = this.isUseTrends(timeRange);
const useTrends = this.isUseTrends(timeRange, target);
if (!target.queryType || target.queryType === c.MODE_METRICS) {
return this.queryNumericData(target, timeRange, useTrends, request);
@@ -857,11 +857,16 @@ export class ZabbixDatasource extends DataSourceApi<ZabbixMetricsQuery, ZabbixDS
});
}
isUseTrends(timeRange) {
isUseTrends(timeRange, target: ZabbixMetricsQuery) {
if (target.options.useTrends === 'false') {
return false;
}
const [timeFrom, timeTo] = timeRange;
const useTrendsFrom = Math.ceil(dateMath.parse('now-' + this.trendsFrom) / 1000);
const useTrendsRange = Math.ceil(utils.parseInterval(this.trendsRange) / 1000);
const useTrends = this.trends && (timeFrom < useTrendsFrom || timeTo - timeFrom > useTrendsRange);
const useTrendsToggle = target.options.useTrends === 'true';
const useTrends =
(useTrendsToggle || this.trends) && (timeFrom < useTrendsFrom || timeTo - timeFrom > useTrendsRange);
return useTrends;
}

View File

@@ -67,6 +67,7 @@ export interface ZabbixQueryOptions {
skipEmptyValues?: boolean;
disableDataAlignment?: boolean;
useZabbixValueMapping?: boolean;
useTrends?: 'default' | 'true' | 'false';
// Problems options
minSeverity?: number;
sortProblems?: string;