From 98f7febed1de5d87390b43b1252d95a59426e791 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Mon, 30 Nov 2015 16:28:56 +0100 Subject: [PATCH] feat(influxdb): added all functions --- .../datasource/influxdb/influx_query.ts | 3 + .../plugins/datasource/influxdb/query_part.ts | 126 ++++++++++++++++++ 2 files changed, 129 insertions(+) diff --git a/public/app/plugins/datasource/influxdb/influx_query.ts b/public/app/plugins/datasource/influxdb/influx_query.ts index 092eb45c2df..34b86e16930 100644 --- a/public/app/plugins/datasource/influxdb/influx_query.ts +++ b/public/app/plugins/datasource/influxdb/influx_query.ts @@ -85,6 +85,9 @@ class InfluxQuery { if (partModel.def.category === categories.Aggregations) { return false; } + if (partModel.def.category === categories.Selectors) { + return false; + } return true; }); }); diff --git a/public/app/plugins/datasource/influxdb/query_part.ts b/public/app/plugins/datasource/influxdb/query_part.ts index 152cb50b5a9..56ea7eecd23 100644 --- a/public/app/plugins/datasource/influxdb/query_part.ts +++ b/public/app/plugins/datasource/influxdb/query_part.ts @@ -5,6 +5,7 @@ import _ = require('lodash'); var index = []; var categories = { Aggregations: [], + Selectors: [], Transformations: [], Math: [], Aliasing: [], @@ -91,6 +92,10 @@ function replaceAggregationAddStrategy(selectParts, partModel) { selectParts[i] = partModel; return; } + if (part.def.category === categories.Selectors) { + selectParts[i] = partModel; + return; + } } selectParts.splice(1, 0, partModel); @@ -161,6 +166,34 @@ QueryPartDef.register({ renderer: fieldRenderer, }); +// Aggregations +QueryPartDef.register({ + type: 'count', + addStrategy: replaceAggregationAddStrategy, + category: categories.Aggregations, + params: [], + defaultParams: [], + renderer: functionRenderer, +}); + +QueryPartDef.register({ + type: 'distinct', + addStrategy: replaceAggregationAddStrategy, + category: categories.Aggregations, + params: [], + defaultParams: [], + renderer: functionRenderer, +}); + +QueryPartDef.register({ + type: 'integral', + addStrategy: replaceAggregationAddStrategy, + category: categories.Aggregations, + params: [], + defaultParams: [], + renderer: functionRenderer, +}); + QueryPartDef.register({ type: 'mean', addStrategy: replaceAggregationAddStrategy, @@ -170,6 +203,15 @@ QueryPartDef.register({ renderer: functionRenderer, }); +QueryPartDef.register({ + type: 'median', + addStrategy: replaceAggregationAddStrategy, + category: categories.Aggregations, + params: [], + defaultParams: [], + renderer: functionRenderer, +}); + QueryPartDef.register({ type: 'sum', addStrategy: replaceAggregationAddStrategy, @@ -179,6 +221,8 @@ QueryPartDef.register({ renderer: functionRenderer, }); +// transformations + QueryPartDef.register({ type: 'derivative', addStrategy: addTransformationStrategy, @@ -188,6 +232,24 @@ QueryPartDef.register({ renderer: functionRenderer, }); +QueryPartDef.register({ + type: 'non_negative_derivative', + addStrategy: addTransformationStrategy, + category: categories.Transformations, + params: [{ name: "duration", type: "interval", options: ['1s', '10s', '1m', '5min', '10m', '15m', '1h']}], + defaultParams: ['10s'], + renderer: functionRenderer, +}); + +QueryPartDef.register({ + type: 'stddev', + addStrategy: addTransformationStrategy, + category: categories.Transformations, + params: [], + defaultParams: [], + renderer: functionRenderer, +}); + QueryPartDef.register({ type: 'time', category: groupByTimeFunctions, @@ -204,6 +266,70 @@ QueryPartDef.register({ renderer: functionRenderer, }); +// Selectors +QueryPartDef.register({ + type: 'bottom', + addStrategy: replaceAggregationAddStrategy, + category: categories.Selectors, + params: [{name: 'count', type: 'int'}], + defaultParams: [3], + renderer: functionRenderer, +}); + +QueryPartDef.register({ + type: 'first', + addStrategy: replaceAggregationAddStrategy, + category: categories.Selectors, + params: [], + defaultParams: [], + renderer: functionRenderer, +}); + +QueryPartDef.register({ + type: 'last', + addStrategy: replaceAggregationAddStrategy, + category: categories.Selectors, + params: [], + defaultParams: [], + renderer: functionRenderer, +}); + +QueryPartDef.register({ + type: 'max', + addStrategy: replaceAggregationAddStrategy, + category: categories.Selectors, + params: [], + defaultParams: [], + renderer: functionRenderer, +}); + +QueryPartDef.register({ + type: 'min', + addStrategy: replaceAggregationAddStrategy, + category: categories.Selectors, + params: [], + defaultParams: [], + renderer: functionRenderer, +}); + +QueryPartDef.register({ + type: 'percentile', + addStrategy: replaceAggregationAddStrategy, + category: categories.Selectors, + params: [{name: 'nth', type: 'int'}], + defaultParams: [95], + renderer: functionRenderer, +}); + +QueryPartDef.register({ + type: 'top', + addStrategy: replaceAggregationAddStrategy, + category: categories.Selectors, + params: [{name: 'count', type: 'int'}], + defaultParams: [3], + renderer: functionRenderer, +}); + QueryPartDef.register({ type: 'tag', category: groupByTimeFunctions,