/// 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, function(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) { var po = pipelineOptions[metricType]; return po !== null && po !== undefined; } return false; } export function getPipelineAggOptions(targets) { var result = []; _.each(targets.metrics, function(metric) { if (!isPipelineAgg(metric.type)) { result.push({text: describeMetric(metric), value: metric.id }); } }); return result; } export function getMovingAvgSettings(model, filtered) { var filteredResult = []; if (filtered) { _.each(movingAvgModelSettings[model], function(setting) { if (!(setting.isCheckbox)) { filteredResult.push(setting); } }); return filteredResult; } return movingAvgModelSettings[model]; } export function getOrderByOptions(target) { var metricRefs = []; _.each(target.metrics, function(metric) { if (metric.type !== 'count') { metricRefs.push({text: describeMetric(metric), value: metric.id}); } }); return orderByOptions.concat(metricRefs); } export function describeOrder(order) { var def = _.find(orderOptions, {value: order}); return def.text; } export function describeMetric(metric) { var def = _.find(metricAggTypes, {value: metric.type}); return def.text + ' ' + metric.field; } export function describeOrderBy(orderBy, target) { var def = _.find(orderByOptions, {value: orderBy}); if (def) { return def.text; } var metric = _.find(target.metrics, {id: orderBy}); if (metric) { return describeMetric(metric); } else { return "metric not found"; } }