import { toOption } from '@grafana/data'; import { InlineLabel, Select, Input, InlineFormLabel, InlineSwitch, Stack } from '@grafana/ui'; import { OpenTsdbQuery } from '../types'; export interface DownSampleProps { query: OpenTsdbQuery; onChange: (query: OpenTsdbQuery) => void; onRunQuery: () => void; aggregators: string[]; fillPolicies: string[]; tsdbVersion: number; } export function DownSample({ query, onChange, onRunQuery, aggregators, fillPolicies, tsdbVersion }: DownSampleProps) { const aggregatorOptions = aggregators.map((value: string) => toOption(value)); const fillPolicyOptions = fillPolicies.map((value: string) => toOption(value)); return ( Leave interval blank for auto or for example use 1m } > Down sample { const value = e.currentTarget.value; onChange({ ...query, downsampleInterval: value }); }} onBlur={() => onRunQuery()} /> Aggregator { if (value) { onChange({ ...query, downsampleFillPolicy: value }); onRunQuery(); } }} /> )} Disable downsampling { const disableDownsampling = query.disableDownsampling ?? false; onChange({ ...query, disableDownsampling: !disableDownsampling }); onRunQuery(); }} /> ); } export const testIds = { section: 'opentsdb-downsample', interval: 'downsample-interval', };