From 06993bddd5c92ba0a6f2aa058cafd1fba4e772fd Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Mon, 3 Jun 2024 11:19:33 +0800 Subject: [PATCH] :bug: In some cases, the primary key sorting of the database panel fails https://github.com/siyuan-note/siyuan/issues/11621 --- kernel/model/attribute_view.go | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index f5e770581..f4f3c7c02 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -2449,12 +2449,25 @@ func SortAttributeViewKey(avID, keyID, previousKeyID string) (err error) { return } - if 1 > len(attrView.KeyIDs) { - for _, keyValues := range attrView.KeyValues { - attrView.KeyIDs = append(attrView.KeyIDs, keyValues.Key.ID) + existKeyIDs := map[string]bool{} + for _, keyValues := range attrView.KeyValues { + existKeyIDs[keyValues.Key.ID] = true + } + + for k, _ := range existKeyIDs { + if !gulu.Str.Contains(k, attrView.KeyIDs) { + attrView.KeyIDs = append(attrView.KeyIDs, k) } } + var tmp []string + for _, k := range attrView.KeyIDs { + if ok := existKeyIDs[k]; ok { + tmp = append(tmp, k) + } + } + attrView.KeyIDs = tmp + var currentKeyID string var idx, previousIndex int for i, k := range attrView.KeyIDs {