1import { BucketsConfiguration } from '../../../types';
2import { defaultFilter } from './SettingsEditor/FiltersSettingsEditor/utils';
3import { InternalTimeZones, SelectableValue } from '@grafana/data';
4
5export const bucketAggregationConfig: BucketsConfiguration = {
6  terms: {
7    label: 'Terms',
8    requiresField: true,
9    defaultSettings: {
10      min_doc_count: '1',
11      size: '10',
12      order: 'desc',
13      orderBy: '_term',
14    },
15  },
16  filters: {
17    label: 'Filters',
18    requiresField: false,
19    defaultSettings: {
20      filters: [defaultFilter()],
21    },
22  },
23  geohash_grid: {
24    label: 'Geo Hash Grid',
25    requiresField: true,
26    defaultSettings: {
27      precision: '3',
28    },
29  },
30  date_histogram: {
31    label: 'Date Histogram',
32    requiresField: true,
33    defaultSettings: {
34      interval: 'auto',
35      min_doc_count: '0',
36      trimEdges: '0',
37      timeZone: InternalTimeZones.utc,
38    },
39  },
40  histogram: {
41    label: 'Histogram',
42    requiresField: true,
43    defaultSettings: {
44      interval: '1000',
45      min_doc_count: '0',
46    },
47  },
48};
49
50export const orderByOptions: Array<SelectableValue<string>> = [
51  { label: 'Term value', value: '_term' },
52  { label: 'Doc Count', value: '_count' },
53];
54
55export const orderOptions: Array<SelectableValue<string>> = [
56  { label: 'Top', value: 'desc' },
57  { label: 'Bottom', value: 'asc' },
58];
59
60export const sizeOptions = [
61  { label: 'No limit', value: '0' },
62  { label: '1', value: '1' },
63  { label: '2', value: '2' },
64  { label: '3', value: '3' },
65  { label: '5', value: '5' },
66  { label: '10', value: '10' },
67  { label: '15', value: '15' },
68  { label: '20', value: '20' },
69];
70