Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
Vanessa 2025-08-01 22:49:19 +08:00
commit 27f412658b
3 changed files with 32 additions and 16 deletions

View file

@ -93,7 +93,7 @@ func setAttrViewGroup(c *gin.Context) {
return
}
ret = renderAttrView(blockID, avID, "", "", 1, -1)
ret = renderAttrView(blockID, avID, "", "", 1, -1, nil)
c.JSON(http.StatusOK, ret)
}
@ -116,7 +116,7 @@ func changeAttrViewLayout(c *gin.Context) {
return
}
ret = renderAttrView(blockID, avID, "", "", 1, -1)
ret = renderAttrView(blockID, avID, "", "", 1, -1, nil)
c.JSON(http.StatusOK, ret)
}
@ -664,13 +664,19 @@ func renderAttributeView(c *gin.Context) {
query = queryArg.(string)
}
ret = renderAttrView(blockID, id, viewID, query, page, pageSize)
groupPaging := map[string]interface{}{}
groupPagingArg := arg["groupPaging"]
if nil != groupPagingArg {
groupPaging = groupPagingArg.(map[string]interface{})
}
ret = renderAttrView(blockID, id, viewID, query, page, pageSize, groupPaging)
c.JSON(http.StatusOK, ret)
}
func renderAttrView(blockID, avID, viewID, query string, page, pageSize int) (ret *gulu.Result) {
func renderAttrView(blockID, avID, viewID, query string, page, pageSize int, groupPaging map[string]interface{}) (ret *gulu.Result) {
ret = gulu.Ret.NewResult()
view, attrView, err := model.RenderAttributeView(blockID, avID, viewID, query, page, pageSize)
view, attrView, err := model.RenderAttributeView(blockID, avID, viewID, query, page, pageSize, groupPaging)
if err != nil {
ret.Code = -1
ret.Msg = err.Error()

View file

@ -1395,7 +1395,7 @@ func RenderRepoSnapshotAttributeView(indexID, avID string) (viewable av.Viewable
}
}
viewable, err = renderAttributeView(attrView, "", "", "", 1, -1)
viewable, err = renderAttributeView(attrView, "", "", "", 1, -1, nil)
return
}
@ -1438,11 +1438,11 @@ func RenderHistoryAttributeView(avID, created string) (viewable av.Viewable, att
}
}
viewable, err = renderAttributeView(attrView, "", "", "", 1, -1)
viewable, err = renderAttributeView(attrView, "", "", "", 1, -1, nil)
return
}
func RenderAttributeView(blockID, avID, viewID, query string, page, pageSize int) (viewable av.Viewable, attrView *av.AttributeView, err error) {
func RenderAttributeView(blockID, avID, viewID, query string, page, pageSize int, groupPaging map[string]interface{}) (viewable av.Viewable, attrView *av.AttributeView, err error) {
waitForSyncingStorages()
if avJSONPath := av.GetAttributeViewDataPath(avID); !filelock.IsExist(avJSONPath) {
@ -1459,7 +1459,7 @@ func RenderAttributeView(blockID, avID, viewID, query string, page, pageSize int
return
}
viewable, err = renderAttributeView(attrView, blockID, viewID, query, page, pageSize)
viewable, err = renderAttributeView(attrView, blockID, viewID, query, page, pageSize, groupPaging)
return
}
@ -1471,7 +1471,7 @@ const (
groupValueNext7Days, groupValueNext30Days = "_@next7Days@_", "_@next30Days@_"
)
func renderAttributeView(attrView *av.AttributeView, blockID, viewID, query string, page, pageSize int) (viewable av.Viewable, err error) {
func renderAttributeView(attrView *av.AttributeView, blockID, viewID, query string, page, pageSize int, groupPaging map[string]interface{}) (viewable av.Viewable, err error) {
if 1 > len(attrView.Views) {
view, _, _ := av.NewTableViewWithBlockKey(ast.NewNodeID())
attrView.Views = append(attrView.Views, view)
@ -1557,8 +1557,18 @@ func renderAttributeView(attrView *av.AttributeView, blockID, viewID, query stri
var groups []av.Viewable
for _, groupView := range view.Groups {
groupViewable := sql.RenderGroupView(attrView, view, groupView)
err = renderViewableInstance(groupViewable, view, attrView, page, pageSize)
groupViewable := sql.RenderGroupView(attrView, view, groupView, query)
groupPage, groupPageSize := page, pageSize
if nil != groupPaging {
if paging := groupPaging[groupView.ID]; nil != paging {
pagingMap := paging.(map[string]interface{})
groupPage = int(pagingMap["page"].(float64))
groupPageSize = int(pagingMap["pageSize"].(float64))
}
}
err = renderViewableInstance(groupViewable, view, attrView, groupPage, groupPageSize)
if nil != err {
return
}
@ -1856,7 +1866,7 @@ func genAttrViewViewGroups(view *av.View, attrView *av.AttributeView) {
if av.GroupOrderDesc == view.Group.Order {
slices.Reverse(relativeDateGroups)
}
view.Groups = relativeDateGroups
} else {
sort.SliceStable(view.Groups, func(i, j int) bool {
@ -3216,7 +3226,7 @@ func getNewValueByNearItem(nearItem av.Item, key *av.Key, blockID string) (ret *
}
func getNearItem(attrView *av.AttributeView, view, groupView *av.View, previousItemID string) (ret av.Item) {
viewable := sql.RenderGroupView(attrView, view, groupView)
viewable := sql.RenderGroupView(attrView, view, groupView, "")
av.Filter(viewable, attrView)
av.Sort(viewable, attrView)
items := viewable.(av.Collection).GetItems()

View file

@ -32,7 +32,7 @@ import (
"github.com/siyuan-note/siyuan/kernel/util"
)
func RenderGroupView(attrView *av.AttributeView, view, groupView *av.View) (ret av.Viewable) {
func RenderGroupView(attrView *av.AttributeView, view, groupView *av.View, query string) (ret av.Viewable) {
switch groupView.LayoutType {
case av.LayoutTypeTable:
groupView.Table.Columns = view.Table.Columns
@ -42,7 +42,7 @@ func RenderGroupView(attrView *av.AttributeView, view, groupView *av.View) (ret
groupView.Filters = view.Filters
groupView.Sorts = view.Sorts
return RenderView(attrView, groupView, "")
return RenderView(attrView, groupView, query)
}
func RenderView(attrView *av.AttributeView, view *av.View, query string) (ret av.Viewable) {