Support $__range_series variable
This commit is contained in:
@@ -8,6 +8,8 @@ import (
|
|||||||
"github.com/alexanderzobnin/grafana-zabbix/pkg/timeseries"
|
"github.com/alexanderzobnin/grafana-zabbix/pkg/timeseries"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const RANGE_VARIABLE_VALUE = "range_series"
|
||||||
|
|
||||||
var errFunctionNotSupported = func(name string) error {
|
var errFunctionNotSupported = func(name string) error {
|
||||||
return fmt.Errorf("function not supported: %s", name)
|
return fmt.Errorf("function not supported: %s", name)
|
||||||
}
|
}
|
||||||
@@ -75,12 +77,18 @@ func applyFunctions(series []*timeseries.TimeSeriesData, functions []QueryFuncti
|
|||||||
func applyGroupBy(series timeseries.TimeSeries, params ...string) (timeseries.TimeSeries, error) {
|
func applyGroupBy(series timeseries.TimeSeries, params ...string) (timeseries.TimeSeries, error) {
|
||||||
pInterval := params[0]
|
pInterval := params[0]
|
||||||
pAgg := params[1]
|
pAgg := params[1]
|
||||||
|
aggFunc := getAggFunc(pAgg)
|
||||||
|
|
||||||
|
if pInterval == RANGE_VARIABLE_VALUE {
|
||||||
|
s := series.GroupByRange(aggFunc)
|
||||||
|
return s, nil
|
||||||
|
}
|
||||||
|
|
||||||
interval, err := gtime.ParseInterval(pInterval)
|
interval, err := gtime.ParseInterval(pInterval)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, errParsingFunctionParam(err)
|
return nil, errParsingFunctionParam(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
aggFunc := getAggFunc(pAgg)
|
|
||||||
s := series.GroupBy(interval, aggFunc)
|
s := series.GroupBy(interval, aggFunc)
|
||||||
return s, nil
|
return s, nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,18 @@ func (ts TimeSeries) GroupBy(interval time.Duration, aggFunc AggFunc) TimeSeries
|
|||||||
return groupedSeries
|
return groupedSeries
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (ts TimeSeries) GroupByRange(aggFunc AggFunc) TimeSeries {
|
||||||
|
if ts.Len() == 0 {
|
||||||
|
return ts
|
||||||
|
}
|
||||||
|
|
||||||
|
value := aggFunc(ts)
|
||||||
|
return []TimePoint{
|
||||||
|
{Time: ts[0].Time, Value: value},
|
||||||
|
{Time: ts[ts.Len()-1].Time, Value: value},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (ts TimeSeries) Transform(transformFunc TransformFunc) TimeSeries {
|
func (ts TimeSeries) Transform(transformFunc TransformFunc) TimeSeries {
|
||||||
for i, p := range ts {
|
for i, p := range ts {
|
||||||
ts[i] = transformFunc(p)
|
ts[i] = transformFunc(p)
|
||||||
|
|||||||
Reference in New Issue
Block a user