From 12162eb9e3466bf9319855696655abe383103dbc Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 28 Sep 2023 00:38:56 +0800 Subject: [PATCH] :art: New a row in the database no longer require to create a relevant doc https://github.com/siyuan-note/siyuan/issues/9294 --- kernel/model/attribute_view.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index c982d0addaa..6c93c4b048b 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -925,6 +925,8 @@ func UpdateAttributeViewCell(avID, keyID, rowID, cellID string, valueData interf break } + oldIsDetached := val.IsDetached + data, err := gulu.JSON.MarshalJSON(valueData) if nil != err { return @@ -933,6 +935,34 @@ func UpdateAttributeViewCell(avID, keyID, rowID, cellID string, valueData interf return } + if oldIsDetached && !val.IsDetached { + // 将游离行绑定到新建的块上 + tree, loadErr := loadTreeByBlockID(rowID) + if nil != loadErr { + logging.LogWarnf("load tree by block id [%s] failed: %s", rowID, loadErr) + } else { + node := treenode.GetNodeInTree(tree, rowID) + if nil == node { + logging.LogWarnf("node [%s] not found in tree [%s]", rowID, tree.ID) + } else { + attrs := parse.IAL2Map(node.KramdownIAL) + + if "" == attrs[NodeAttrNameAvs] { + attrs[NodeAttrNameAvs] = avID + } else { + avIDs := strings.Split(attrs[NodeAttrNameAvs], ",") + avIDs = append(avIDs, avID) + avIDs = gulu.Str.RemoveDuplicatedElem(avIDs) + attrs[NodeAttrNameAvs] = strings.Join(avIDs, ",") + } + + if err = setNodeAttrs(node, tree, attrs); nil != err { + logging.LogWarnf("set node [%s] attrs failed: %s", rowID, err) + } + } + } + } + if err = av.SaveAttributeView(attrView); nil != err { return }