This commit is contained in:
Daniel 2024-11-02 14:09:50 +08:00
parent 885348293a
commit f3bee2adcf
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -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)
} }
} }