From 70be25933987128f09dbf5ca12e566700d7bcaa5 Mon Sep 17 00:00:00 2001 From: Stiven Deleur Date: Sun, 12 May 2019 20:35:46 +0100 Subject: [PATCH] added alias functions to filterSeries --- docs/graphite.md | 16 ++++++++-------- expr/func_filterseries.go | 13 +++++++++++++ expr/funcs.go | 8 ++++++++ 3 files changed, 29 insertions(+), 8 deletions(-) diff --git a/docs/graphite.md b/docs/graphite.md index 6202cd5a36..f0cb3e436d 100644 --- a/docs/graphite.md +++ b/docs/graphite.md @@ -50,8 +50,8 @@ See also: | applyByNode | | No | | areaBetween | | No | | asPercent(seriesList, seriesList, nodeList) seriesList | | Stable | -| averageAbove | | No | -| averageBelow | | No | +| averageAbove | | Stable | +| averageBelow | | Stable | | averageOutsidePercentile | | No | | averageSeries(seriesLists) series | avg | Stable | | averageSeriesWithWildcards | | No | @@ -62,8 +62,8 @@ See also: | constantLine | | No | | countSeries(seriesLists) series | | Stable | | cumulative | | No | -| currentAbove | | No | -| currentBelow | | No | +| currentAbove | | Stable | +| currentBelow | | Stable | | dashed | | No | | delay | | No | | derivative(seriesLists) series | | Stable | @@ -106,11 +106,11 @@ See also: | lowestAverage(seriesList, n, func) seriesList | | Stable | | lowestCurrent(seriesList, n, func) seriesList | | Stable | | mapSeries | map | No | -| maximumAbove | | No | -| maximumBelow | | No | +| maximumAbove | | Stable | +| maximumBelow | | Stable | | maxSeries(seriesList) series | max | Stable | -| minimumAbove | | No | -| minimumBelow | | No | +| minimumAbove | | Stable | +| minimumBelow | | Stable | | minMax | | No | | minSeries(seriesList) series | min | Stable | | mostDeviant | | No | diff --git a/expr/func_filterseries.go b/expr/func_filterseries.go index 256107d6af..ce12c388b9 100644 --- a/expr/func_filterseries.go +++ b/expr/func_filterseries.go @@ -19,13 +19,26 @@ func NewFilterSeries() GraphiteFunc { return &FuncFilterSeries{} } +func NewFilterSeriesConstructor(fn string, operator string) func() GraphiteFunc { + return func() GraphiteFunc { + return &FuncFilterSeries{fn: fn, operator: operator} + } +} + func (s *FuncFilterSeries) Signature() ([]Arg, []Arg) { + if s.fn != "" && s.operator != "" { + return []Arg{ + ArgSeriesList{val: &s.in}, + ArgFloat{key: "threshold", val: &s.threshold}, + }, []Arg{ArgSeriesList{}} + } return []Arg{ ArgSeriesList{val: &s.in}, ArgString{key: "func", val: &s.fn, validator: []Validator{IsConsolFunc}}, ArgString{key: "operator", val: &s.operator, validator: []Validator{IsOperator}}, ArgFloat{key: "threshold", val: &s.threshold}, }, []Arg{ArgSeriesList{}} + } func (s *FuncFilterSeries) Context(context Context) Context { diff --git a/expr/funcs.go b/expr/funcs.go index e021e9c46d..718224037f 100644 --- a/expr/funcs.go +++ b/expr/funcs.go @@ -55,9 +55,13 @@ func init() { "aliasSub": {NewAliasSub, true}, "asPercent": {NewAsPercent, true}, "avg": {NewAggregateConstructor("average", crossSeriesAvg), true}, + "averageAbove": {NewFilterSeriesConstructor("average", ">"), true}, + "averageBelow": {NewFilterSeriesConstructor("average", "<="), true}, "averageSeries": {NewAggregateConstructor("average", crossSeriesAvg), true}, "consolidateBy": {NewConsolidateBy, true}, "countSeries": {NewCountSeries, true}, + "currentAbove": {NewFilterSeriesConstructor("last", ">"), true}, + "currentBelow": {NewFilterSeriesConstructor("last", "<="), true}, "derivative": {NewDerivative, true}, "diffSeries": {NewAggregateConstructor("diff", crossSeriesDiff), true}, "divideSeries": {NewDivideSeries, true}, @@ -76,8 +80,12 @@ func init() { "lowestAverage": {NewHighestLowestConstructor("average", false), true}, "lowestCurrent": {NewHighestLowestConstructor("current", false), true}, "max": {NewAggregateConstructor("max", crossSeriesMax), true}, + "maximumAbove": {NewFilterSeriesConstructor("max", ">"), true}, + "maximumBelow": {NewFilterSeriesConstructor("max", "<="), true}, "maxSeries": {NewAggregateConstructor("max", crossSeriesMax), true}, "min": {NewAggregateConstructor("min", crossSeriesMin), true}, + "minimumAbove": {NewFilterSeriesConstructor("min", ">"), true}, + "minimumBelow": {NewFilterSeriesConstructor("min", "<="), true}, "minSeries": {NewAggregateConstructor("min", crossSeriesMin), true}, "multiplySeries": {NewAggregateConstructor("multiply", crossSeriesMultiply), true}, "movingAverage": {NewMovingAverage, false},