This commit is contained in:
Daniel 2025-06-12 22:21:07 +08:00
parent 67370745b2
commit d05010a71f
No known key found for this signature in database
GPG key ID: 86211BA83DF03017
5 changed files with 73 additions and 25 deletions

View file

@ -2418,34 +2418,49 @@ func addAttributeViewBlock(now int64, avID, blockID, previousBlockID, addingBloc
// 如果存在过滤条件,则将过滤条件应用到新添加的块上
view, _ := getAttrViewViewByBlockID(attrView, blockID)
if nil != view && 0 < len(view.Table.Filters) && !ignoreFillFilter {
viewable := sql.RenderAttributeViewTable(attrView, view, "")
var filters []*av.ViewFilter
if nil != view {
filters = view.GetFilters()
}
if nil != view && 0 < len(filters) && !ignoreFillFilter {
var viewable av.Viewable
switch view.LayoutType {
case av.LayoutTypeTable:
viewable = sql.RenderAttributeViewTable(attrView, view, "")
case av.LayoutTypeGallery:
viewable = sql.RenderAttributeViewGallery(attrView, view, "")
}
viewable.Filter(attrView)
viewable.Sort(attrView)
var nearRow *av.TableRow
if 0 < len(viewable.Rows) {
collection := viewable.(av.Collection)
items := collection.GetItems()
var nearItem av.Item
if 0 < len(items) {
if "" != previousBlockID {
for _, row := range viewable.Rows {
if row.ID == previousBlockID {
nearRow = row
for _, row := range items {
if row.GetID() == previousBlockID {
nearItem = row
break
}
}
} else {
if 0 < len(viewable.Rows) {
nearRow = viewable.Rows[0]
if 0 < len(items) {
nearItem = items[0]
}
}
}
sameKeyFilterSort := false // 是否在同一个字段上同时存在过滤和排序
if 0 < len(viewable.Sorts) {
sorts := view.GetSorts()
if 0 < len(sorts) {
filterKeys, sortKeys := map[string]bool{}, map[string]bool{}
for _, f := range view.Table.Filters {
for _, f := range filters {
filterKeys[f.Column] = true
}
for _, s := range view.Table.Sorts {
for _, s := range sorts {
sortKeys[s.Column] = true
}
@ -2459,12 +2474,12 @@ func addAttributeViewBlock(now int64, avID, blockID, previousBlockID, addingBloc
if !sameKeyFilterSort {
// 如果在同一个字段上仅存在过滤条件,则将过滤条件应用到新添加的块上
for _, filter := range view.Table.Filters {
for _, filter := range filters {
for _, keyValues := range attrView.KeyValues {
if keyValues.Key.ID == filter.Column {
var defaultVal *av.Value
if nil != nearRow {
defaultVal = nearRow.GetValue(filter.Column)
if nil != nearItem {
defaultVal = nearItem.GetValue(filter.Column)
}
newValue := filter.GetAffectValue(keyValues.Key, defaultVal)