diff --git a/kernel/api/av.go b/kernel/api/av.go index c13587ecd..476149786 100644 --- a/kernel/api/av.go +++ b/kernel/api/av.go @@ -48,7 +48,7 @@ func getAttributeViewPrimaryKeyValues(c *gin.Context) { pageSize = int(pageSizeArg.(float64)) } - rows, err := model.GetAttributeViewPrimaryKeyValues(id, page, pageSize) + attributeViewName, rows, err := model.GetAttributeViewPrimaryKeyValues(id, page, pageSize) if nil != err { ret.Code = -1 ret.Msg = err.Error() @@ -56,6 +56,7 @@ func getAttributeViewPrimaryKeyValues(c *gin.Context) { } ret.Data = map[string]interface{}{ + "name": attributeViewName, "rows": rows, } } diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index a1b7c8602..b9795a045 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -38,7 +38,7 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) -func GetAttributeViewPrimaryKeyValues(avID string, page, pageSize int) (ret *av.KeyValues, err error) { +func GetAttributeViewPrimaryKeyValues(avID string, page, pageSize int) (attributeViewName string, keyValues *av.KeyValues, err error) { waitForSyncingStorages() attrView, err := av.ParseAttributeView(avID) @@ -46,17 +46,35 @@ func GetAttributeViewPrimaryKeyValues(avID string, page, pageSize int) (ret *av. logging.LogErrorf("parse attribute view [%s] failed: %s", avID, err) return } + attributeViewName = attrView.Name + + keyValues = attrView.GetBlockKeyValues() + // 不在视图中的值要过滤掉 + tmp := map[string]*av.Value{} + for _, kv := range keyValues.Values { + for _, view := range attrView.Views { + switch view.LayoutType { + case av.LayoutTypeTable: + if gulu.Str.Contains(kv.Block.ID, view.Table.RowIDs) { + tmp[kv.Block.ID] = kv + } + } + } + } + keyValues.Values = []*av.Value{} + for _, v := range tmp { + keyValues.Values = append(keyValues.Values, v) + } - ret = attrView.GetBlockKeyValues() if 1 > pageSize { pageSize = 50 } start := (page - 1) * pageSize end := start + pageSize - if len(ret.Values) < end { - end = len(ret.Values) + if len(keyValues.Values) < end { + end = len(keyValues.Values) } - ret.Values = ret.Values[start:end] + keyValues.Values = keyValues.Values[start:end] return }