From 83af400f65d91ab30183197bc97d1210d38a3572 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 22 Aug 2025 00:00:38 +0800 Subject: [PATCH] :art: Improve av https://github.com/siyuan-note/siyuan/issues/15643 --- kernel/model/attribute_view.go | 9 +++++++-- kernel/model/attribute_view_render.go | 6 ++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 1bc60928b..2c622997a 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -538,14 +538,19 @@ func SetAttributeViewGroup(avID, blockID string, group *av.ViewGroup) (err error if view.Group.HideEmpty != oldHideEmpty { if !oldHideEmpty && view.Group.HideEmpty { // 启用隐藏空分组 for _, g := range view.Groups { - if g.GroupHidden == 0 && 1 > len(g.GroupItemIDs) { + groupViewable := sql.RenderGroupView(attrView, view, g, "") + // 必须经过渲染才能得到最终的条目数 + renderViewableInstance(groupViewable, view, attrView, 1, -1) + if g.GroupHidden == 0 && 1 > groupViewable.(av.Collection).CountItems() { g.GroupHidden = 1 } } } if oldHideEmpty && !view.Group.HideEmpty { // 禁用隐藏空分组 for _, g := range view.Groups { - if g.GroupHidden == 1 && 1 > len(g.GroupItemIDs) { + groupViewable := sql.RenderGroupView(attrView, view, g, "") + renderViewableInstance(groupViewable, view, attrView, 1, -1) + if g.GroupHidden == 1 && 1 > groupViewable.(av.Collection).CountItems() { g.GroupHidden = 0 } } diff --git a/kernel/model/attribute_view_render.go b/kernel/model/attribute_view_render.go index 4ae004887..51c19dd58 100644 --- a/kernel/model/attribute_view_render.go +++ b/kernel/model/attribute_view_render.go @@ -184,14 +184,16 @@ func hideEmptyGroupViews(view *av.View, viewable av.Viewable) { return } + groupHidden := viewable.GetGroupHidden() if !view.Group.HideEmpty { - if 2 != viewable.GetGroupHidden() { + if 2 != groupHidden { viewable.SetGroupHidden(0) } return } - if 1 == viewable.GetGroupHidden() && 0 < viewable.(av.Collection).CountItems() { + itemCount := viewable.(av.Collection).CountItems() + if 1 == groupHidden && 0 < itemCount { viewable.SetGroupHidden(0) } }