Skip to content
This repository was archived by the owner on Aug 23, 2023. It is now read-only.

Commit 1867b24

Browse files
authored
Merge pull request #1308 from DeleurApps/filter-other-funcs
Added 8 functions related to filterSeries
2 parents a86c6fa + e1ab942 commit 1867b24

File tree

3 files changed

+29
-8
lines changed

3 files changed

+29
-8
lines changed

docs/graphite.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ See also:
5050
| applyByNode | | No |
5151
| areaBetween | | No |
5252
| asPercent(seriesList, seriesList, nodeList) seriesList | | Stable |
53-
| averageAbove | | No |
54-
| averageBelow | | No |
53+
| averageAbove | | Stable |
54+
| averageBelow | | Stable |
5555
| averageOutsidePercentile | | No |
5656
| averageSeries(seriesLists) series | avg | Stable |
5757
| averageSeriesWithWildcards | | No |
@@ -62,8 +62,8 @@ See also:
6262
| constantLine | | No |
6363
| countSeries(seriesLists) series | | Stable |
6464
| cumulative | | Stable |
65-
| currentAbove | | No |
66-
| currentBelow | | No |
65+
| currentAbove | | Stable |
66+
| currentBelow | | Stable |
6767
| dashed | | No |
6868
| delay | | No |
6969
| derivative(seriesLists) series | | Stable |
@@ -106,11 +106,11 @@ See also:
106106
| lowestAverage(seriesList, n, func) seriesList | | Stable |
107107
| lowestCurrent(seriesList, n, func) seriesList | | Stable |
108108
| mapSeries | map | No |
109-
| maximumAbove | | No |
110-
| maximumBelow | | No |
109+
| maximumAbove | | Stable |
110+
| maximumBelow | | Stable |
111111
| maxSeries(seriesList) series | max | Stable |
112-
| minimumAbove | | No |
113-
| minimumBelow | | No |
112+
| minimumAbove | | Stable |
113+
| minimumBelow | | Stable |
114114
| minMax | | No |
115115
| minSeries(seriesList) series | min | Stable |
116116
| mostDeviant | | No |

expr/func_filterseries.go

+13
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,26 @@ func NewFilterSeries() GraphiteFunc {
1919
return &FuncFilterSeries{}
2020
}
2121

22+
func NewFilterSeriesConstructor(fn string, operator string) func() GraphiteFunc {
23+
return func() GraphiteFunc {
24+
return &FuncFilterSeries{fn: fn, operator: operator}
25+
}
26+
}
27+
2228
func (s *FuncFilterSeries) Signature() ([]Arg, []Arg) {
29+
if s.fn != "" && s.operator != "" {
30+
return []Arg{
31+
ArgSeriesList{val: &s.in},
32+
ArgFloat{key: "threshold", val: &s.threshold},
33+
}, []Arg{ArgSeriesList{}}
34+
}
2335
return []Arg{
2436
ArgSeriesList{val: &s.in},
2537
ArgString{key: "func", val: &s.fn, validator: []Validator{IsConsolFunc}},
2638
ArgString{key: "operator", val: &s.operator, validator: []Validator{IsOperator}},
2739
ArgFloat{key: "threshold", val: &s.threshold},
2840
}, []Arg{ArgSeriesList{}}
41+
2942
}
3043

3144
func (s *FuncFilterSeries) Context(context Context) Context {

expr/funcs.go

+8
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,14 @@ func init() {
5555
"aliasSub": {NewAliasSub, true},
5656
"asPercent": {NewAsPercent, true},
5757
"avg": {NewAggregateConstructor("average", crossSeriesAvg), true},
58+
"averageAbove": {NewFilterSeriesConstructor("average", ">"), true},
59+
"averageBelow": {NewFilterSeriesConstructor("average", "<="), true},
5860
"averageSeries": {NewAggregateConstructor("average", crossSeriesAvg), true},
5961
"consolidateBy": {NewConsolidateBy, true},
6062
"countSeries": {NewCountSeries, true},
6163
"cumulative": {NewConsolidateByConstructor("sum"), true},
64+
"currentAbove": {NewFilterSeriesConstructor("last", ">"), true},
65+
"currentBelow": {NewFilterSeriesConstructor("last", "<="), true},
6266
"derivative": {NewDerivative, true},
6367
"diffSeries": {NewAggregateConstructor("diff", crossSeriesDiff), true},
6468
"divideSeries": {NewDivideSeries, true},
@@ -77,8 +81,12 @@ func init() {
7781
"lowestAverage": {NewHighestLowestConstructor("average", false), true},
7882
"lowestCurrent": {NewHighestLowestConstructor("current", false), true},
7983
"max": {NewAggregateConstructor("max", crossSeriesMax), true},
84+
"maximumAbove": {NewFilterSeriesConstructor("max", ">"), true},
85+
"maximumBelow": {NewFilterSeriesConstructor("max", "<="), true},
8086
"maxSeries": {NewAggregateConstructor("max", crossSeriesMax), true},
8187
"min": {NewAggregateConstructor("min", crossSeriesMin), true},
88+
"minimumAbove": {NewFilterSeriesConstructor("min", ">"), true},
89+
"minimumBelow": {NewFilterSeriesConstructor("min", "<="), true},
8290
"minSeries": {NewAggregateConstructor("min", crossSeriesMin), true},
8391
"multiplySeries": {NewAggregateConstructor("multiply", crossSeriesMultiply), true},
8492
"movingAverage": {NewMovingAverage, false},

0 commit comments

Comments
 (0)