diff --git a/pkg/datasource/response_handler.go b/pkg/datasource/response_handler.go index 9d6a768..ef304a4 100644 --- a/pkg/datasource/response_handler.go +++ b/pkg/datasource/response_handler.go @@ -50,6 +50,7 @@ func convertHistoryToTimeSeries(history zabbix.History, items []*zabbix.Item) [] series = append(series, tsd) } + timeseries.SortByItem(series) return series } diff --git a/pkg/timeseries/sort.go b/pkg/timeseries/sort.go index 8c5150f..a862596 100644 --- a/pkg/timeseries/sort.go +++ b/pkg/timeseries/sort.go @@ -2,6 +2,7 @@ package timeseries import ( "sort" + "strconv" ) // SortBy sorts series by value calculated with provided aggFunc in given order @@ -31,3 +32,21 @@ func SortBy(series []*TimeSeriesData, order string, aggFunc AggFunc) []*TimeSeri return series } + +func SortByItem(series []*TimeSeriesData) []*TimeSeriesData { + sort.Slice(series, func(i, j int) bool { + itemIDi, err := strconv.Atoi(series[i].Meta.Item.ID) + if err != nil { + return false + } + + itemIDj, err := strconv.Atoi(series[j].Meta.Item.ID) + if err != nil { + return false + } + + return itemIDi < itemIDj + }) + + return series +}