From 00ef1b01bcda190dae54839f88e3aae9cdc7d014 Mon Sep 17 00:00:00 2001 From: Eric_Lee <xplzv@126.com> Date: Thu, 26 Sep 2019 12:53:45 +0800 Subject: [PATCH] fix assets sort bug (#88) --- pkg/handler/pagination.go | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/pkg/handler/pagination.go b/pkg/handler/pagination.go index f7b3174..5cba5b1 100644 --- a/pkg/handler/pagination.go +++ b/pkg/handler/pagination.go @@ -202,6 +202,7 @@ type UserAssetPagination struct { displayPolicy bool Data model.AssetsPaginationResponse IsNeedProxy bool + currentData []model.Asset } func (p *UserAssetPagination) Start() []model.Asset { @@ -212,13 +213,13 @@ func (p *UserAssetPagination) Start() []model.Asset { if p.displayPolicy && p.Data.Total == 1 { p.IsNeedProxy = true - return p.Data.Data + return p.currentData } // æ— ä¸Šä¸‹é¡µï¼Œåˆ™é€€å‡ºå¾ªçŽ¯ if p.Data.NextURL == "" && p.Data.PreviousURL == "" { p.displayPageAssets() - return p.Data.Data + return p.currentData } inLoop: @@ -226,7 +227,7 @@ func (p *UserAssetPagination) Start() []model.Asset { p.displayTipsInfo() line, err := p.term.ReadLine() if err != nil { - return p.Data.Data + return p.currentData } line = strings.TrimSpace(line) @@ -247,18 +248,18 @@ func (p *UserAssetPagination) Start() []model.Asset { return []model.Asset{} default: if indexID, err := strconv.Atoi(line); err == nil { - if indexID > 0 && indexID <= len(p.Data.Data) { + if indexID > 0 && indexID <= len(p.currentData) { p.IsNeedProxy = true - return []model.Asset{p.Data.Data[indexID-1]} + return []model.Asset{p.currentData[indexID-1]} } } goto inLoop } default: if indexID, err := strconv.Atoi(line); err == nil { - if indexID > 0 && indexID <= len(p.Data.Data) { + if indexID > 0 && indexID <= len(p.currentData) { p.IsNeedProxy = true - return []model.Asset{p.Data.Data[indexID-1]} + return []model.Asset{p.currentData[indexID-1]} } } goto inLoop @@ -275,8 +276,9 @@ func (p *UserAssetPagination) displayPageAssets() { Labels := []string{i18n.T("ID"), i18n.T("hostname"), i18n.T("IP"), i18n.T("comment")} fields := []string{"ID", "hostname", "IP", "comment"} - data := make([]map[string]string, len(p.Data.Data)) - for i, j := range p.Data.Data { + p.currentData = model.AssetList(p.Data.Data).SortBy(config.GetConf().AssetListSortBy) + data := make([]map[string]string, len(p.currentData)) + for i, j := range p.currentData { row := make(map[string]string) row["ID"] = strconv.Itoa(i + 1) row["hostname"] = j.Hostname @@ -298,10 +300,10 @@ func (p *UserAssetPagination) displayPageAssets() { var currentPage int var totalCount int var currentOffset int - currentOffset = p.offset + len(p.Data.Data) + currentOffset = p.offset + len(p.currentData) switch p.limit { case 0: - pageSize = len(p.Data.Data) + pageSize = len(p.currentData) totalCount = pageSize totalPage = 1 currentPage = 1 -- 2.18.0