From 2b37ea5d06b804aa854cc16ffe630eefe1c0e964 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Sun, 4 Feb 2024 09:54:43 +0800 Subject: [PATCH] :bug: Fix rollup column sort https://ld246.com/article/1706960677814 --- kernel/av/table.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/kernel/av/table.go b/kernel/av/table.go index 711ca6cf9..c38922c0a 100644 --- a/kernel/av/table.go +++ b/kernel/av/table.go @@ -17,6 +17,7 @@ package av import ( + "bytes" "math" "sort" "strconv" @@ -210,8 +211,19 @@ func (value *Value) Compare(other *Value) int { } case KeyTypeRollup: if nil != value.Rollup && nil != other.Rollup { - vContent := strings.TrimSpace(strings.Join(value.Relation.Contents, " ")) - oContent := strings.TrimSpace(strings.Join(other.Relation.Contents, " ")) + vContentBuf := bytes.Buffer{} + for _, c := range value.Rollup.Contents { + vContentBuf.WriteString(c.String()) + vContentBuf.WriteByte(' ') + } + vContent := strings.TrimSpace(vContentBuf.String()) + oContentBuf := bytes.Buffer{} + for _, c := range other.Rollup.Contents { + oContentBuf.WriteString(c.String()) + oContentBuf.WriteByte(' ') + } + oContent := strings.TrimSpace(oContentBuf.String()) + if util.IsNumeric(vContent) && util.IsNumeric(oContent) { v1, _ := strconv.ParseFloat(vContent, 64) v2, _ := strconv.ParseFloat(oContent, 64)