From 0d5320f08b51b3cb7bf437ff5f43fe2f0b3b999f Mon Sep 17 00:00:00 2001 From: Daniel <845765@qq.com> Date: Fri, 25 Jul 2025 11:56:32 +0800 Subject: [PATCH] :art: Database grouping by field https://github.com/siyuan-note/siyuan/issues/10964 --- app/src/protyle/render/av/groups.ts | 2 +- kernel/model/attribute_view.go | 52 ++++------------------------- kernel/model/transaction.go | 2 -- 3 files changed, 8 insertions(+), 48 deletions(-) diff --git a/app/src/protyle/render/av/groups.ts b/app/src/protyle/render/av/groups.ts index 6dd056c17..af317a200 100644 --- a/app/src/protyle/render/av/groups.ts +++ b/app/src/protyle/render/av/groups.ts @@ -164,7 +164,7 @@ export const bindGroupsNumber = (options: { export const getGroupsHTML = (columns: IAVColumn[], view: IAVView) => { let html = ""; let column: IAVColumn; - if (view.group && view.group.field) { + if (view.group && view.group.field && view.groups) { let groupHTML = ""; column = columns.find(item => item.id === view.group.field); if (view.groups.length > 0) { diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index 3511ffe16..9a03e86a2 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -93,45 +93,6 @@ func syncAttrViewTableColWidth(operation *Operation) (err error) { return } -func (tx *Transaction) doSetAttrViewHideEmptyGroup(operation *Operation) (ret *TxErr) { - if err := setAttrViewHideEmptyGroup(operation.AvID, operation.BlockID, operation.Data.(bool)); nil != err { - return &TxErr{code: TxErrHandleAttributeView, id: operation.AvID, msg: err.Error()} - } - return -} - -func setAttrViewHideEmptyGroup(avID, blockID string, hidden bool) (err error) { - attrView, err := av.ParseAttributeView(avID) - if err != nil { - return err - } - - view, err := getAttrViewViewByBlockID(attrView, blockID) - if err != nil { - return err - } - - if nil == view.Group { - return - } - - view.Group.HideEmpty = hidden - for _, group := range view.Groups { - if hidden { - group.GroupHidden = true - } else { - group.GroupHidden = false - } - } - - err = av.SaveAttributeView(attrView) - if err != nil { - logging.LogErrorf("save attribute view [%s] failed: %s", avID, err) - return err - } - return nil -} - func (tx *Transaction) doHideAttrViewGroup(operation *Operation) (ret *TxErr) { if err := HideAttributeViewGroup(operation.AvID, operation.BlockID, operation.ID, operation.Data.(bool)); nil != err { return &TxErr{code: TxErrHandleAttributeView, id: operation.AvID, msg: err.Error()} @@ -198,16 +159,17 @@ func SetAttributeViewGroup(avID, blockID string, group *av.ViewGroup) (err error return err } - if nil == view.Group { - view.Group = group - } else { - if err = copier.Copy(view.Group, group); nil != err { - return + view.Group = group + for _, g := range view.Groups { + if group.HideEmpty { + g.GroupHidden = true + } else { + g.GroupHidden = false } } genAttrViewViewGroups(view, attrView) - return err + return } func (tx *Transaction) doSetAttrViewCardAspectRatio(operation *Operation) (ret *TxErr) { diff --git a/kernel/model/transaction.go b/kernel/model/transaction.go index 8bf6182b9..28da677cd 100644 --- a/kernel/model/transaction.go +++ b/kernel/model/transaction.go @@ -301,8 +301,6 @@ func performTx(tx *Transaction) (ret *TxErr) { ret = tx.doSetAttrViewGroup(op) case "hideAttrViewGroup": ret = tx.doHideAttrViewGroup(op) - case "setAttrViewHideEmptyGroup": - ret = tx.doSetAttrViewHideEmptyGroup(op) case "syncAttrViewTableColWidth": ret = tx.doSyncAttrViewTableColWidth(op) }