From 945e8af6beaa288db55b2323e9dcce27828439f7 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 7 Sep 2023 17:21:01 +0800 Subject: [PATCH 1/4] :art: Update av --- kernel/model/attribute_view.go | 1 - kernel/model/blockial.go | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index dd75ff398..2e615df4b 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -454,7 +454,6 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre blockValues.Values = append(blockValues.Values, value) attrs := parse.IAL2Map(node.KramdownIAL) - attrs[NodeAttrNamePrefixAvKey+operation.AvID+"-"+blockValues.Key.ID] = "" // 将列作为属性添加到块中 if "" == attrs[NodeAttrNameAvs] { attrs[NodeAttrNameAvs] = operation.AvID diff --git a/kernel/model/blockial.go b/kernel/model/blockial.go index 70b7e6af0..012de75ef 100644 --- a/kernel/model/blockial.go +++ b/kernel/model/blockial.go @@ -175,7 +175,7 @@ func setNodeAttrs0(node *ast.Node, nameValues map[string]string) (oldAttrs map[s } for name, value := range nameValues { - if strings.HasPrefix(name, "av") { + if strings.HasPrefix(name, "custom-av") { // 属性视图设置的属性值可以为空 node.SetIALAttr(name, value) continue From 544ae88e874143c6f1c41601936e243e4b2848e4 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 7 Sep 2023 18:02:47 +0800 Subject: [PATCH 2/4] :art: Remove av block also remove node attr https://github.com/siyuan-note/siyuan/issues/9091#issuecomment-1709824006 --- kernel/model/attribute_view.go | 35 +++++++++++++++++++++++++--------- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 2e615df4b..e7f0896fa 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -487,14 +487,14 @@ func addAttributeViewBlock(blockID string, operation *Operation, tree *parse.Tre } func (tx *Transaction) doRemoveAttrViewBlock(operation *Operation) (ret *TxErr) { - err := removeAttributeViewBlock(operation) + err := tx.removeAttributeViewBlock(operation) if nil != err { return &TxErr{code: TxErrWriteAttributeView, id: operation.AvID} } return } -func removeAttributeViewBlock(operation *Operation) (err error) { +func (tx *Transaction) removeAttributeViewBlock(operation *Operation) (err error) { attrView, err := av.ParseAttributeView(operation.AvID) if nil != err { return @@ -505,11 +505,35 @@ func removeAttributeViewBlock(operation *Operation) (err error) { return } + trees := map[string]*parse.Tree{} for _, keyValues := range attrView.KeyValues { tmp := keyValues.Values[:0] for i, values := range keyValues.Values { if !gulu.Str.Contains(values.BlockID, operation.SrcIDs) { tmp = append(tmp, keyValues.Values[i]) + } else { + if bt := treenode.GetBlockTree(values.BlockID); nil != bt { + tree := trees[bt.RootID] + if nil == tree { + tree, _ = loadTreeByBlockID(values.BlockID) + } + + if nil != tree { + trees[bt.RootID] = tree + if node := treenode.GetNodeInTree(tree, values.BlockID); nil != node { + attrs := parse.IAL2Map(node.KramdownIAL) + if ast.NodeDocument == node.Type { + delete(attrs, "custom-hidden") + } + delete(attrs, NodeAttrNamePrefixAvKey+operation.AvID+"-"+values.KeyID) + node.RemoveIALAttr(NodeAttrNamePrefixAvKey + operation.AvID + "-" + values.KeyID) + + if err = setNodeAttrsWithTx(tx, node, tree, attrs); nil != err { + return + } + } + } + } } } keyValues.Values = tmp @@ -517,13 +541,6 @@ func removeAttributeViewBlock(operation *Operation) (err error) { for _, blockID := range operation.SrcIDs { view.Table.RowIDs = gulu.Str.RemoveElem(view.Table.RowIDs, blockID) - - if bt := treenode.GetBlockTree(blockID); nil != bt && "d" == bt.Type { - if tree, _ := loadTreeByBlockID(blockID); nil != tree { - tree.Root.RemoveIALAttr("custom-hidden") - writeJSONQueue(tree) - } - } } err = av.SaveAttributeView(attrView) From 02776afc8785815850d277940620814b4249bc51 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 7 Sep 2023 18:04:43 +0800 Subject: [PATCH 3/4] :art: Remove av block also remove node attr https://github.com/siyuan-note/siyuan/issues/9091#issuecomment-1709824006 --- kernel/model/attribute_view.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index e7f0896fa..11d50a31e 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -524,10 +524,10 @@ func (tx *Transaction) removeAttributeViewBlock(operation *Operation) (err error attrs := parse.IAL2Map(node.KramdownIAL) if ast.NodeDocument == node.Type { delete(attrs, "custom-hidden") + node.RemoveIALAttr("custom-hidden") } delete(attrs, NodeAttrNamePrefixAvKey+operation.AvID+"-"+values.KeyID) node.RemoveIALAttr(NodeAttrNamePrefixAvKey + operation.AvID + "-" + values.KeyID) - if err = setNodeAttrsWithTx(tx, node, tree, attrs); nil != err { return } From 10cba1dc98c314b43fd30b7ab5d3d768f53e3ad7 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Thu, 7 Sep 2023 18:06:10 +0800 Subject: [PATCH 4/4] :art: Remove av block also remove node attr https://github.com/siyuan-note/siyuan/issues/9091#issuecomment-1709824006 --- kernel/model/attribute_view.go | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 11d50a31e..f5f46ca12 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -512,6 +512,7 @@ func (tx *Transaction) removeAttributeViewBlock(operation *Operation) (err error if !gulu.Str.Contains(values.BlockID, operation.SrcIDs) { tmp = append(tmp, keyValues.Values[i]) } else { + // Remove av block also remove node attr https://github.com/siyuan-note/siyuan/issues/9091#issuecomment-1709824006 if bt := treenode.GetBlockTree(values.BlockID); nil != bt { tree := trees[bt.RootID] if nil == tree {