From 76433c0bc0b3b85fa62d4f259f75bb04c7947aa2 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 29 Dec 2023 09:11:40 +0800 Subject: [PATCH] :art: Database table view supports inserting columns in the middle https://github.com/siyuan-note/siyuan/issues/9993 --- kernel/model/attribute_view.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index a4cd1e6e9..aa98b32bf 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -1880,10 +1880,25 @@ func addAttributeViewColumn(operation *Operation) (err error) { key := av.NewKey(operation.ID, operation.Name, icon, keyType) attrView.KeyValues = append(attrView.KeyValues, &av.KeyValues{Key: key}) - for _, v := range attrView.Views { - switch v.LayoutType { + for _, view := range attrView.Views { + switch view.LayoutType { case av.LayoutTypeTable: - v.Table.Columns = append(v.Table.Columns, &av.ViewTableColumn{ID: key.ID}) + if "" == operation.PreviousID { + view.Table.Columns = append([]*av.ViewTableColumn{{ID: key.ID}}, view.Table.Columns...) + break + } + + added := false + for i, column := range view.Table.Columns { + if column.ID == operation.PreviousID { + view.Table.Columns = append(view.Table.Columns[:i+1], append([]*av.ViewTableColumn{{ID: key.ID}}, view.Table.Columns[i+1:]...)...) + added = true + break + } + } + if !added { + view.Table.Columns = append(view.Table.Columns, &av.ViewTableColumn{ID: key.ID}) + } } } }