diff --git a/kernel/av/filter.go b/kernel/av/filter.go index 31f2834ef..9231b2f2e 100644 --- a/kernel/av/filter.go +++ b/kernel/av/filter.go @@ -157,10 +157,6 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s // 单独处理汇总 if nil != value.Rollup && KeyTypeRollup == value.Type && nil != filter.Value && KeyTypeRollup == filter.Value.Type && nil != filter.Value.Rollup { - if 1 > len(filter.Value.Rollup.Contents) { - return true - } - key, _ := attrView.GetKey(value.KeyID) if nil == key { return false @@ -200,10 +196,16 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s if FilterOperatorIsEmpty == filter.Operator { return true } else if FilterOperatorIsNotEmpty == filter.Operator { - return false + if 0 < len(value.Rollup.Contents) { + return true + } } } + if 1 > len(filter.Value.Rollup.Contents) { + return true + } + for _, content := range value.Rollup.Contents { if content.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) { return true @@ -220,6 +222,10 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s } } + if 1 > len(filter.Value.Rollup.Contents) { + return true + } + for _, content := range value.Rollup.Contents { if !content.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) { return false @@ -235,6 +241,10 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s } } + if 1 > len(filter.Value.Rollup.Contents) { + return true + } + for _, content := range value.Rollup.Contents { if content.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) { return false @@ -282,15 +292,16 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s // 单独处理资源 if nil != value.MAsset && KeyTypeMAsset == value.Type && nil != filter.Value && KeyTypeMAsset == filter.Value.Type { - if 1 > len(filter.Value.MAsset) { - return true - } - key, _ := attrView.GetKey(value.KeyID) if nil == key { return false } + var filterContent string + if 1 <= len(filter.Value.MAsset) { + filterContent = filter.Value.MAsset[0].Content + } + switch filter.Qualifier { case FilterQuantifierUndefined, FilterQuantifierAny: if 1 > len(value.MAsset) { // 说明资源字段为空 @@ -304,12 +315,12 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s for _, asset := range value.MAsset { switch asset.Type { case AssetTypeFile: - if filterTextContent(filter.Operator, asset.Name, filter.Value.MAsset[0].Content) || - filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) { + if filterTextContent(filter.Operator, asset.Name, filterContent) || + filterTextContent(filter.Operator, asset.Content, filterContent) { return true } case AssetTypeImage: - if filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) { + if filterTextContent(filter.Operator, asset.Content, filterContent) { return true } } @@ -326,12 +337,12 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s for _, asset := range value.MAsset { switch asset.Type { case AssetTypeFile: - if !filterTextContent(filter.Operator, asset.Name, filter.Value.MAsset[0].Content) && - !filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) { + if !filterTextContent(filter.Operator, asset.Name, filterContent) && + !filterTextContent(filter.Operator, asset.Content, filterContent) { return false } case AssetTypeImage: - if !filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) { + if !filterTextContent(filter.Operator, asset.Content, filterContent) { return false } } @@ -350,17 +361,17 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s switch asset.Type { case AssetTypeFile: if "" != strings.TrimSpace(asset.Name) { - if filterTextContent(filter.Operator, asset.Name, filter.Value.MAsset[0].Content) { + if filterTextContent(filter.Operator, asset.Name, filterContent) { return false } } if "" != strings.TrimSpace(asset.Content) { - if filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) { + if filterTextContent(filter.Operator, asset.Content, filterContent) { return false } } case AssetTypeImage: - if filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) { + if filterTextContent(filter.Operator, asset.Content, filterContent) { return false } } diff --git a/kernel/go.mod b/kernel/go.mod index 05c52307e..41a58b2bf 100644 --- a/kernel/go.mod +++ b/kernel/go.mod @@ -58,7 +58,7 @@ require ( github.com/sashabaranov/go-openai v1.41.2 github.com/shirou/gopsutil/v4 v4.25.9 github.com/siyuan-note/dataparser v0.0.0-20250804100744-b41253b236f3 - github.com/siyuan-note/dejavu v0.0.0-20251010020807-e50148909b03 + github.com/siyuan-note/dejavu v0.0.0-20251011030034-d7e5aa18aadd github.com/siyuan-note/encryption v0.0.0-20250326023622-24a67e6956ec github.com/siyuan-note/eventbus v0.0.0-20240627125516-396fdb0f0f97 github.com/siyuan-note/filelock v0.0.0-20251010020544-2603449ff16d diff --git a/kernel/go.sum b/kernel/go.sum index dad27ffe9..a6ca7783f 100644 --- a/kernel/go.sum +++ b/kernel/go.sum @@ -375,8 +375,8 @@ github.com/shurcooL/gofontwoff v0.0.0-20181114050219-180f79e6909d/go.mod h1:05Ut github.com/simplereach/timeutils v1.2.0/go.mod h1:VVbQDfN/FHRZa1LSqcwo4kNZ62OOyqLLGQKYB3pB0Q8= github.com/siyuan-note/dataparser v0.0.0-20250804100744-b41253b236f3 h1:EH063L0HD1f82DvddurUmEXS0obXypv8pQrcaC/zNgI= github.com/siyuan-note/dataparser v0.0.0-20250804100744-b41253b236f3/go.mod h1:8lb+SsWAPQblGbjmwEBsBdJszMCcLeECtB95fv6mReg= -github.com/siyuan-note/dejavu v0.0.0-20251010020807-e50148909b03 h1:dKqzqYqoWx88CFh/Bm/U1uvoaItJXX9pPM3/PZ8JDqs= -github.com/siyuan-note/dejavu v0.0.0-20251010020807-e50148909b03/go.mod h1:fdVodB/Jr2nj1gIlT2Ys7N8318Z67l+3yhSEwo2FteY= +github.com/siyuan-note/dejavu v0.0.0-20251011030034-d7e5aa18aadd h1:NW2Bd601ZCBUveU5L85RXqYWwMYDOhd/PAX+obuEZm0= +github.com/siyuan-note/dejavu v0.0.0-20251011030034-d7e5aa18aadd/go.mod h1:fdVodB/Jr2nj1gIlT2Ys7N8318Z67l+3yhSEwo2FteY= github.com/siyuan-note/encryption v0.0.0-20250326023622-24a67e6956ec h1:D8Sjwa+7WxP3XrIBscT4PxBZZddZ83/O+5nX1sq6g6g= github.com/siyuan-note/encryption v0.0.0-20250326023622-24a67e6956ec/go.mod h1:6iAxXPOOAG3+M4bCiKQZTQ+n4gSUx/OyHhsP57dJlS8= github.com/siyuan-note/eventbus v0.0.0-20240627125516-396fdb0f0f97 h1:lM5v8BfNtbOL5jYwhCdMYBcYtr06IYBKjjSLAPMKTM8=