package chartjs import "time" // TimeSeriesGroup 时间计算数据, 实现类似以时间为维度的折线图 type TimeSeriesGroup struct { step string values map[string]*TimeSeries } func (g *TimeSeriesGroup) Inc(tm time.Time, key string, value float64) { v, ok := g.values[key] if !ok { v = NewTimeSeries(g.step) g.values[key] = v } v.Inc(tm, value) } func (g *TimeSeriesGroup) Dec(tm time.Time, key string, value float64) { v, ok := g.values[key] if !ok { v = NewTimeSeries(g.step) g.values[key] = v } v.Dec(tm, value) } // Data 生成chart.js 的图表dataset func (g *TimeSeriesGroup) Data(sts, ets int64) (values []*TimeseriesData) { for key, row := range g.values { data := &TimeseriesData{ Label: key, Data: row.Values(sts, ets), } values = append(values, data) } return } func NewTimeSeriesGroup(step string) *TimeSeriesGroup { return &TimeSeriesGroup{ step: step, values: make(map[string]*TimeSeries), } }