mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-02-06 15:41:48 +01:00
🎨 Improve av grouping https://github.com/siyuan-note/siyuan/issues/15428
This commit is contained in:
parent
5690081332
commit
0e5e32126b
1 changed files with 39 additions and 25 deletions
|
|
@ -360,8 +360,10 @@ func SetAttributeViewGroup(avID, blockID string, group *av.ViewGroup) (err error
|
|||
return err
|
||||
}
|
||||
|
||||
groupStates := getAttrViewGroupStates(view)
|
||||
view.Group = group
|
||||
regenAttrViewViewGroups(attrView, "force")
|
||||
setAttrViewGroupStates(view, groupStates)
|
||||
|
||||
err = av.SaveAttributeView(attrView)
|
||||
ReloadAttrView(avID)
|
||||
|
|
@ -1679,23 +1681,7 @@ func genAttrViewViewGroups(view *av.View, attrView *av.AttributeView) {
|
|||
return
|
||||
}
|
||||
|
||||
// 临时记录每个分组视图的状态,以便后面重新生成分组后可以恢复这些状态
|
||||
type GroupState struct {
|
||||
ID string
|
||||
Folded bool
|
||||
Hidden int
|
||||
Sort int
|
||||
}
|
||||
groupStates := map[string]*GroupState{}
|
||||
for i, groupView := range view.Groups {
|
||||
groupStates[groupView.GroupValue] = &GroupState{
|
||||
ID: groupView.ID,
|
||||
Folded: groupView.GroupFolded,
|
||||
Hidden: groupView.GroupHidden,
|
||||
Sort: i,
|
||||
}
|
||||
}
|
||||
|
||||
groupStates := getAttrViewGroupStates(view)
|
||||
group := view.Group
|
||||
view.Groups = nil
|
||||
viewable := sql.RenderView(attrView, view, "")
|
||||
|
|
@ -1854,14 +1840,7 @@ func genAttrViewViewGroups(view *av.View, attrView *av.AttributeView) {
|
|||
|
||||
view.GroupUpdated = time.Now().UnixMilli()
|
||||
|
||||
// 恢复分组视图状态
|
||||
for _, groupView := range view.Groups {
|
||||
if state, ok := groupStates[groupView.GroupValue]; ok {
|
||||
groupView.ID = state.ID
|
||||
groupView.GroupFolded = state.Folded
|
||||
groupView.GroupHidden = state.Hidden
|
||||
}
|
||||
}
|
||||
setAttrViewGroupStates(view, groupStates)
|
||||
|
||||
if av.GroupOrderMan == view.Group.Order {
|
||||
// 恢复分组视图的自定义顺序
|
||||
|
|
@ -1967,6 +1946,41 @@ func genAttrViewViewGroups(view *av.View, attrView *av.AttributeView) {
|
|||
}
|
||||
}
|
||||
|
||||
// GroupState 用于临时记录每个分组视图的状态,以便后面重新生成分组后可以恢复这些状态。
|
||||
type GroupState struct {
|
||||
ID string
|
||||
Folded bool
|
||||
Hidden int
|
||||
Sort int
|
||||
}
|
||||
|
||||
func getAttrViewGroupStates(view *av.View) (groupStates map[string]*GroupState) {
|
||||
groupStates = map[string]*GroupState{}
|
||||
if nil == view.Group {
|
||||
return
|
||||
}
|
||||
|
||||
for i, groupView := range view.Groups {
|
||||
groupStates[groupView.GroupValue] = &GroupState{
|
||||
ID: groupView.ID,
|
||||
Folded: groupView.GroupFolded,
|
||||
Hidden: groupView.GroupHidden,
|
||||
Sort: i,
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func setAttrViewGroupStates(view *av.View, groupStates map[string]*GroupState) {
|
||||
for _, groupView := range view.Groups {
|
||||
if state, ok := groupStates[groupView.GroupValue]; ok {
|
||||
groupView.ID = state.ID
|
||||
groupView.GroupFolded = state.Folded
|
||||
groupView.GroupHidden = state.Hidden
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func isGroupByDate(view *av.View) bool {
|
||||
if nil == view.Group {
|
||||
return false
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue