mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-09-22 08:30:42 +02:00
🎨 Improve av refresh https://github.com/siyuan-note/siyuan/issues/12997
This commit is contained in:
parent
885348293a
commit
f3bee2adcf
1 changed files with 24 additions and 4 deletions
|
@ -1235,7 +1235,7 @@ func getRefDefIDs(node *ast.Node) (refDefIDs []string) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func upsertAvBlockRel(node *ast.Node) {
|
func upsertAvBlockRel(node *ast.Node) {
|
||||||
var avIDs []string
|
var affectedAvIDs []string
|
||||||
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
|
ast.Walk(node, func(n *ast.Node, entering bool) ast.WalkStatus {
|
||||||
if !entering {
|
if !entering {
|
||||||
return ast.WalkContinue
|
return ast.WalkContinue
|
||||||
|
@ -1244,13 +1244,33 @@ func upsertAvBlockRel(node *ast.Node) {
|
||||||
if ast.NodeAttributeView == n.Type {
|
if ast.NodeAttributeView == n.Type {
|
||||||
avID := n.AttributeViewID
|
avID := n.AttributeViewID
|
||||||
if changed := av.UpsertBlockRel(avID, n.ID); changed {
|
if changed := av.UpsertBlockRel(avID, n.ID); changed {
|
||||||
avIDs = append(avIDs, avID)
|
affectedAvIDs = append(affectedAvIDs, avID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ast.WalkContinue
|
return ast.WalkContinue
|
||||||
})
|
})
|
||||||
avIDs = gulu.Str.RemoveDuplicatedElem(avIDs)
|
|
||||||
for _, avID := range avIDs {
|
updatedNodes := []*ast.Node{node}
|
||||||
|
var parents []*ast.Node
|
||||||
|
for parent := node.Parent; nil != parent && ast.NodeDocument != parent.Type; parent = parent.Parent {
|
||||||
|
parents = append(parents, parent)
|
||||||
|
}
|
||||||
|
updatedNodes = append(updatedNodes, parents...)
|
||||||
|
for _, updatedNode := range updatedNodes {
|
||||||
|
ast.Walk(updatedNode, func(n *ast.Node, entering bool) ast.WalkStatus {
|
||||||
|
avs := n.IALAttr(av.NodeAttrNameAvs)
|
||||||
|
if "" == avs {
|
||||||
|
return ast.WalkContinue
|
||||||
|
}
|
||||||
|
|
||||||
|
avIDs := strings.Split(avs, ",")
|
||||||
|
affectedAvIDs = append(affectedAvIDs, avIDs...)
|
||||||
|
return ast.WalkContinue
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
affectedAvIDs = gulu.Str.RemoveDuplicatedElem(affectedAvIDs)
|
||||||
|
for _, avID := range affectedAvIDs {
|
||||||
ReloadAttrView(avID)
|
ReloadAttrView(avID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue