From 86fbb759ed9ab63ec67d3a6fc8e4732b885ae4ce Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Thu, 2 Mar 2023 14:47:57 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20=E6=8C=81=E4=B9=85=E5=8C=96=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E8=A7=86=E5=9B=BE=20https://github.com/siyuan-note/si?= =?UTF-8?q?yuan/issues/2829?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/attribute_view.go | 14 +++++++++++--- kernel/model/blockial.go | 13 +++++++++---- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 413e11138..bf9e2ccf1 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -17,6 +17,7 @@ package model import ( + "github.com/88250/lute/parse" "github.com/siyuan-note/siyuan/kernel/av" "github.com/siyuan-note/siyuan/kernel/sql" "github.com/siyuan-note/siyuan/kernel/treenode" @@ -45,11 +46,18 @@ func AddBlockToAttributeView(blockID, avID string) (err error) { return } + attrs := parse.IAL2Map(node.KramdownIAL) var row []av.Cell row = append(row, av.NewCellBlock(block.ID)) - for _, col := range attrView.Columns[1:] { - // TODO 为块添加列对应的属性 - _ = col + if 1 < len(attrView.Columns) { + for _, col := range attrView.Columns[1:] { + colName := col.Name() + attrs[colName] = "" + } + + if err = setNodeAttrs(node, tree, attrs); nil != err { + return + } } attrView.Rows = append(attrView.Rows, row) diff --git a/kernel/model/blockial.go b/kernel/model/blockial.go index 08e56d495..6a0599843 100644 --- a/kernel/model/blockial.go +++ b/kernel/model/blockial.go @@ -19,13 +19,13 @@ package model import ( "errors" "fmt" + "github.com/88250/lute/parse" "time" "github.com/88250/gulu" "github.com/88250/lute/ast" "github.com/88250/lute/html" "github.com/88250/lute/lex" - "github.com/88250/lute/parse" "github.com/araddon/dateparse" "github.com/siyuan-note/siyuan/kernel/cache" "github.com/siyuan-note/siyuan/kernel/treenode" @@ -105,12 +105,17 @@ func SetBlockAttrs(id string, nameValues map[string]string) (err error) { return errors.New(fmt.Sprintf(Conf.Language(15), id)) } + err = setNodeAttrs(node, tree, nameValues) + return +} + +func setNodeAttrs(node *ast.Node, tree *parse.Tree, nameValues map[string]string) (err error) { oldAttrs := parse.IAL2Map(node.KramdownIAL) for name := range nameValues { for i := 0; i < len(name); i++ { if !lex.IsASCIILetterNumHyphen(name[i]) { - return errors.New(fmt.Sprintf(Conf.Language(25), id)) + return errors.New(fmt.Sprintf(Conf.Language(25), node.ID)) } } } @@ -135,10 +140,10 @@ func SetBlockAttrs(id string, nameValues map[string]string) (err error) { } IncSync() - cache.PutBlockIAL(id, parse.IAL2Map(node.KramdownIAL)) + cache.PutBlockIAL(node.ID, parse.IAL2Map(node.KramdownIAL)) newAttrs := parse.IAL2Map(node.KramdownIAL) - doOp := &Operation{Action: "updateAttrs", Data: map[string]interface{}{"old": oldAttrs, "new": newAttrs}, ID: id} + doOp := &Operation{Action: "updateAttrs", Data: map[string]interface{}{"old": oldAttrs, "new": newAttrs}, ID: node.ID} trans := []*Transaction{{ DoOperations: []*Operation{doOp}, UndoOperations: []*Operation{},