From cd2b131dc9fc30f7a7b476119725b241ae91abd4 Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 22 Aug 2025 11:17:57 +0800 Subject: [PATCH] :art: Improve av https://github.com/siyuan-note/siyuan/issues/15653 --- kernel/av/value.go | 4 +++- kernel/model/attribute_view.go | 24 +++++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/kernel/av/value.go b/kernel/av/value.go index 3dd8c057b..d4ff996ee 100644 --- a/kernel/av/value.go +++ b/kernel/av/value.go @@ -65,6 +65,8 @@ func (value *Value) SetUpdatedAt(mills int64) { } } +const CheckboxCheckedStr = "√" + func (value *Value) String(format bool) string { if nil == value { return "" @@ -153,7 +155,7 @@ func (value *Value) String(format bool) string { return "" } if value.Checkbox.Checked { - return "√" + return CheckboxCheckedStr } return "" case KeyTypeRelation: diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index a8c15ae9c..aee199b98 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -557,11 +557,21 @@ func SetAttributeViewGroup(avID, blockID string, group *av.ViewGroup) (err error } } - if firstInit || changeGroupField { - if groupKey := view.GetGroupKey(attrView); nil != groupKey && (av.KeyTypeSelect == groupKey.Type || av.KeyTypeMSelect == groupKey.Type) { - // 首次设置分组时,如果分组字段是单选或多选类型,则将分组方式改为按选项排序 https://github.com/siyuan-note/siyuan/issues/15534 - view.Group.Order = av.GroupOrderSelectOption - sortGroupsBySelectOption(view, groupKey) + if firstInit || changeGroupField { // 首次设置分组时 + if groupKey := view.GetGroupKey(attrView); nil != groupKey { + if av.KeyTypeSelect == groupKey.Type || av.KeyTypeMSelect == groupKey.Type { + // 如果分组字段是单选或多选,则将分组排序方式改为按选项排序 https://github.com/siyuan-note/siyuan/issues/15534 + view.Group.Order = av.GroupOrderSelectOption + sortGroupsBySelectOption(view, groupKey) + } else if av.KeyTypeCheckbox == groupKey.Type { + // 如果分组字段是复选框,则将分组排序改为手动排序,并且已勾选在前面 + view.Group.Order = av.GroupOrderMan + checked := view.GetGroupByGroupValue(av.CheckboxCheckedStr) + unchecked := view.GetGroupByGroupValue("") + view.Groups = nil + view.Groups = append(view.Groups, checked, unchecked) + } + } for i, g := range view.Groups { @@ -1857,8 +1867,8 @@ func genAttrViewGroups(view *av.View, attrView *av.AttributeView) { if nil == groupItemsMap[""] { groupItemsMap[""] = []av.Item{} } - if nil == groupItemsMap["√"] { - groupItemsMap["√"] = []av.Item{} + if nil == groupItemsMap[av.CheckboxCheckedStr] { + groupItemsMap[av.CheckboxCheckedStr] = []av.Item{} } }