Use time series format internally

This commit is contained in:
Alexander Zobnin
2021-05-24 17:11:36 +03:00
parent f3d6fa3c2b
commit 7748508a5c
6 changed files with 125 additions and 14 deletions

View File

@@ -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
}

View File

@@ -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 {