mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-29 12:58:48 +01:00
🎨 Database gallery view https://github.com/siyuan-note/siyuan/issues/10414
This commit is contained in:
parent
67370745b2
commit
d05010a71f
5 changed files with 73 additions and 25 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue