| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- import _ from 'lodash';
- export const metricAggTypes = [
- { text: 'Count', value: 'count', requiresField: false },
- {
- text: 'Average',
- value: 'avg',
- requiresField: true,
- supportsInlineScript: true,
- supportsMissing: true,
- },
- {
- text: 'Sum',
- value: 'sum',
- requiresField: true,
- supportsInlineScript: true,
- supportsMissing: true,
- },
- {
- text: 'Max',
- value: 'max',
- requiresField: true,
- supportsInlineScript: true,
- supportsMissing: true,
- },
- {
- text: 'Min',
- value: 'min',
- requiresField: true,
- supportsInlineScript: true,
- supportsMissing: true,
- },
- {
- text: 'Extended Stats',
- value: 'extended_stats',
- requiresField: true,
- supportsMissing: true,
- supportsInlineScript: true,
- },
- {
- text: 'Percentiles',
- value: 'percentiles',
- requiresField: true,
- supportsMissing: true,
- supportsInlineScript: true,
- },
- {
- text: 'Unique Count',
- value: 'cardinality',
- requiresField: true,
- supportsMissing: true,
- },
- {
- text: 'Moving Average',
- value: 'moving_avg',
- requiresField: false,
- isPipelineAgg: true,
- minVersion: 2,
- },
- {
- text: 'Derivative',
- value: 'derivative',
- requiresField: false,
- isPipelineAgg: true,
- minVersion: 2,
- },
- { text: 'Raw Document', value: 'raw_document', requiresField: false },
- ];
- export const bucketAggTypes = [
- { text: 'Terms', value: 'terms', requiresField: true },
- { text: 'Filters', value: 'filters' },
- { text: 'Geo Hash Grid', value: 'geohash_grid', requiresField: true },
- { text: 'Date Histogram', value: 'date_histogram', requiresField: true },
- { text: 'Histogram', value: 'histogram', requiresField: true },
- ];
- export const orderByOptions = [{ text: 'Doc Count', value: '_count' }, { text: 'Term value', value: '_term' }];
- export const orderOptions = [{ text: 'Top', value: 'desc' }, { text: 'Bottom', value: 'asc' }];
- export const sizeOptions = [
- { text: 'No limit', value: '0' },
- { text: '1', value: '1' },
- { text: '2', value: '2' },
- { text: '3', value: '3' },
- { text: '5', value: '5' },
- { text: '10', value: '10' },
- { text: '15', value: '15' },
- { text: '20', value: '20' },
- ];
- export const extendedStats = [
- { text: 'Avg', value: 'avg' },
- { text: 'Min', value: 'min' },
- { text: 'Max', value: 'max' },
- { text: 'Sum', value: 'sum' },
- { text: 'Count', value: 'count' },
- { text: 'Std Dev', value: 'std_deviation' },
- { text: 'Std Dev Upper', value: 'std_deviation_bounds_upper' },
- { text: 'Std Dev Lower', value: 'std_deviation_bounds_lower' },
- ];
- export const intervalOptions = [
- { text: 'auto', value: 'auto' },
- { text: '10s', value: '10s' },
- { text: '1m', value: '1m' },
- { text: '5m', value: '5m' },
- { text: '10m', value: '10m' },
- { text: '20m', value: '20m' },
- { text: '1h', value: '1h' },
- { text: '1d', value: '1d' },
- ];
- export const movingAvgModelOptions = [
- { text: 'Simple', value: 'simple' },
- { text: 'Linear', value: 'linear' },
- { text: 'Exponentially Weighted', value: 'ewma' },
- { text: 'Holt Linear', value: 'holt' },
- { text: 'Holt Winters', value: 'holt_winters' },
- ];
- export const pipelineOptions = {
- moving_avg: [
- { text: 'window', default: 5 },
- { text: 'model', default: 'simple' },
- { text: 'predict', default: undefined },
- { text: 'minimize', default: false },
- ],
- derivative: [{ text: 'unit', default: undefined }],
- };
- export const movingAvgModelSettings = {
- simple: [],
- linear: [],
- ewma: [{ text: 'Alpha', value: 'alpha', default: undefined }],
- holt: [{ text: 'Alpha', value: 'alpha', default: undefined }, { text: 'Beta', value: 'beta', default: undefined }],
- holt_winters: [
- { text: 'Alpha', value: 'alpha', default: undefined },
- { text: 'Beta', value: 'beta', default: undefined },
- { text: 'Gamma', value: 'gamma', default: undefined },
- { text: 'Period', value: 'period', default: undefined },
- { text: 'Pad', value: 'pad', default: undefined, isCheckbox: true },
- ],
- };
- export function getMetricAggTypes(esVersion) {
- return _.filter(metricAggTypes, f => {
- if (f.minVersion) {
- return f.minVersion <= esVersion;
- } else {
- return true;
- }
- });
- }
- export function getPipelineOptions(metric) {
- if (!isPipelineAgg(metric.type)) {
- return [];
- }
- return pipelineOptions[metric.type];
- }
- export function isPipelineAgg(metricType) {
- if (metricType) {
- const po = pipelineOptions[metricType];
- return po !== null && po !== undefined;
- }
- return false;
- }
- export function getPipelineAggOptions(targets) {
- const result = [];
- _.each(targets.metrics, metric => {
- if (!isPipelineAgg(metric.type)) {
- result.push({ text: describeMetric(metric), value: metric.id });
- }
- });
- return result;
- }
- export function getMovingAvgSettings(model, filtered) {
- const filteredResult = [];
- if (filtered) {
- _.each(movingAvgModelSettings[model], setting => {
- if (!setting.isCheckbox) {
- filteredResult.push(setting);
- }
- });
- return filteredResult;
- }
- return movingAvgModelSettings[model];
- }
- export function getOrderByOptions(target) {
- const metricRefs = [];
- _.each(target.metrics, metric => {
- if (metric.type !== 'count') {
- metricRefs.push({ text: describeMetric(metric), value: metric.id });
- }
- });
- return orderByOptions.concat(metricRefs);
- }
- export function describeOrder(order) {
- const def = _.find(orderOptions, { value: order });
- return def.text;
- }
- export function describeMetric(metric) {
- const def = _.find(metricAggTypes, { value: metric.type });
- return def.text + ' ' + metric.field;
- }
- export function describeOrderBy(orderBy, target) {
- const def = _.find(orderByOptions, { value: orderBy });
- if (def) {
- return def.text;
- }
- const metric = _.find(target.metrics, { id: orderBy });
- if (metric) {
- return describeMetric(metric);
- } else {
- return 'metric not found';
- }
- }
- export function defaultMetricAgg() {
- return { type: 'count', id: '1' };
- }
- export function defaultBucketAgg() {
- return { type: 'date_histogram', id: '2', settings: { interval: 'auto' } };
- }
|