From 6e6797653eba9bb6ea38819af0a51ef6cd271522 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Mon, 31 May 2021 18:37:00 +0300 Subject: [PATCH] Sort response by item id --- pkg/datasource/response_handler.go | 1 + pkg/timeseries/sort.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) 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 +}