Query option to override use trends option, fixes #1442
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -67,6 +67,7 @@ export interface ZabbixQueryOptions {
|
||||
skipEmptyValues?: boolean;
|
||||
disableDataAlignment?: boolean;
|
||||
useZabbixValueMapping?: boolean;
|
||||
useTrends?: 'default' | 'true' | 'false';
|
||||
// Problems options
|
||||
minSeverity?: number;
|
||||
sortProblems?: string;
|
||||
|
||||
Reference in New Issue
Block a user