Use time series format internally
This commit is contained in:
@@ -1,6 +1,10 @@
|
||||
package timeseries
|
||||
|
||||
import "time"
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/alexanderzobnin/grafana-zabbix/pkg/zabbix"
|
||||
)
|
||||
|
||||
type TimePoint struct {
|
||||
Time time.Time
|
||||
@@ -16,3 +20,12 @@ func NewTimeSeries() TimeSeries {
|
||||
func (ts *TimeSeries) Len() int {
|
||||
return len(*ts)
|
||||
}
|
||||
|
||||
type TimeSeriesData struct {
|
||||
TS TimeSeries
|
||||
Meta TimeSeriesMeta
|
||||
}
|
||||
|
||||
type TimeSeriesMeta struct {
|
||||
Item *zabbix.Item
|
||||
}
|
||||
|
||||
@@ -10,6 +10,26 @@ import (
|
||||
"github.com/grafana/grafana-plugin-sdk-go/data"
|
||||
)
|
||||
|
||||
func NewTimeSeriesData() *TimeSeriesData {
|
||||
return &TimeSeriesData{
|
||||
TS: NewTimeSeries(),
|
||||
Meta: TimeSeriesMeta{},
|
||||
}
|
||||
}
|
||||
|
||||
func (tsd *TimeSeriesData) Len() int {
|
||||
return len(tsd.TS)
|
||||
}
|
||||
|
||||
func (tsd *TimeSeriesData) Add(point TimePoint) *TimeSeriesData {
|
||||
if tsd.TS == nil {
|
||||
tsd.TS = NewTimeSeries()
|
||||
}
|
||||
|
||||
tsd.TS = append(tsd.TS, point)
|
||||
return tsd
|
||||
}
|
||||
|
||||
// Aligns point's time stamps according to provided interval.
|
||||
func (ts TimeSeries) Align(interval time.Duration) TimeSeries {
|
||||
if interval <= 0 || ts.Len() < 2 {
|
||||
|
||||
Reference in New Issue
Block a user