🎨 Improve database field default filling https://github.com/siyuan-note/siyuan/issues/15550

This commit is contained in:
Daniel 2025-08-12 22:28:52 +08:00
parent 8ba02f517c
commit 7f004877ca
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -1773,6 +1773,7 @@ type GroupState struct {
Folded bool
Hidden int
Sort int
ItemIDs []string
}
func getAttrViewGroupStates(view *av.View) (groupStates map[string]*GroupState) {
@ -1787,6 +1788,7 @@ func getAttrViewGroupStates(view *av.View) (groupStates map[string]*GroupState)
Folded: groupView.GroupFolded,
Hidden: groupView.GroupHidden,
Sort: groupView.GroupSort,
ItemIDs: groupView.GroupItemIDs,
}
}
return
@ -1799,6 +1801,15 @@ func setAttrViewGroupStates(view *av.View, groupStates map[string]*GroupState) {
groupView.GroupFolded = state.Folded
groupView.GroupHidden = state.Hidden
groupView.GroupSort = state.Sort
itemIDsSort := map[string]int{}
for i, itemID := range state.ItemIDs {
itemIDsSort[itemID] = i
}
sort.SliceStable(groupView.GroupItemIDs, func(i, j int) bool {
return itemIDsSort[groupView.GroupItemIDs[i]] < itemIDsSort[groupView.GroupItemIDs[j]]
})
}
}
@ -3494,6 +3505,11 @@ func sortAttributeViewRow(operation *Operation) (err error) {
}
}
targetGroupView.GroupItemIDs = util.InsertElem(targetGroupView.GroupItemIDs, previousIndex, itemID)
if groupKey := view.GetGroupKey(attrView); av.KeyTypeMSelect == groupKey.Type {
// 跨多选分组时一个项目可能会同时存在于多个分组中,需要重新生成分组
regenAttrViewGroups(attrView, "force")
}
}
} else { // 同分组内排序
for i, r := range groupView.GroupItemIDs {