mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-20 08:30:12 +01:00
🎨 Database asset fields support filtering https://github.com/siyuan-note/siyuan/issues/11967
Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
parent
533e11cc1e
commit
0f24054d3d
1 changed files with 57 additions and 4 deletions
|
|
@ -153,10 +153,9 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
|
||||||
return !value.IsEmpty()
|
return !value.IsEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 单独处理汇总
|
||||||
if nil != value.Rollup && KeyTypeRollup == value.Type && nil != filter.Value && KeyTypeRollup == filter.Value.Type &&
|
if nil != value.Rollup && KeyTypeRollup == value.Type && nil != filter.Value && KeyTypeRollup == filter.Value.Type &&
|
||||||
nil != filter.Value.Rollup && 0 < len(filter.Value.Rollup.Contents) {
|
nil != filter.Value.Rollup && 0 < len(filter.Value.Rollup.Contents) {
|
||||||
// 单独处理汇总类型的比较
|
|
||||||
|
|
||||||
key, _ := attrView.GetKey(value.KeyID)
|
key, _ := attrView.GetKey(value.KeyID)
|
||||||
if nil == key {
|
if nil == key {
|
||||||
return false
|
return false
|
||||||
|
|
@ -214,10 +213,9 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 单独处理关联
|
||||||
if nil != value.Relation && KeyTypeRelation == value.Type && nil != filter.Value && KeyTypeRelation == filter.Value.Type &&
|
if nil != value.Relation && KeyTypeRelation == value.Type && nil != filter.Value && KeyTypeRelation == filter.Value.Type &&
|
||||||
nil != filter.Value.Relation && 0 < len(filter.Value.Relation.BlockIDs) {
|
nil != filter.Value.Relation && 0 < len(filter.Value.Relation.BlockIDs) {
|
||||||
// 单独处理关联类型的比较
|
|
||||||
|
|
||||||
for _, relationValue := range value.Relation.Contents {
|
for _, relationValue := range value.Relation.Contents {
|
||||||
filterValue := &Value{Type: KeyTypeBlock, Block: &ValueBlock{Content: filter.Value.Relation.BlockIDs[0]}}
|
filterValue := &Value{Type: KeyTypeBlock, Block: &ValueBlock{Content: filter.Value.Relation.BlockIDs[0]}}
|
||||||
|
|
||||||
|
|
@ -247,6 +245,61 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 单独处理资源
|
||||||
|
if nil != value.MAsset && KeyTypeMAsset == value.Type && nil != filter.Value && KeyTypeMAsset == filter.Value.Type && 0 < len(filter.Value.MAsset) {
|
||||||
|
key, _ := attrView.GetKey(value.KeyID)
|
||||||
|
if nil == key {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
switch filter.Qualifier {
|
||||||
|
case FilterQuantifierUndefined, FilterQuantifierAny:
|
||||||
|
for _, asset := range value.MAsset {
|
||||||
|
switch asset.Type {
|
||||||
|
case AssetTypeFile:
|
||||||
|
if filterTextContent(filter.Operator, asset.Name, filter.Value.MAsset[0].Name) ||
|
||||||
|
filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
case AssetTypeImage:
|
||||||
|
if filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case FilterQuantifierAll:
|
||||||
|
for _, asset := range value.MAsset {
|
||||||
|
switch asset.Type {
|
||||||
|
case AssetTypeFile:
|
||||||
|
if !filterTextContent(filter.Operator, asset.Name, filter.Value.MAsset[0].Name) &&
|
||||||
|
!filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
case AssetTypeImage:
|
||||||
|
if !filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
case FilterQuantifierNone:
|
||||||
|
for _, asset := range value.MAsset {
|
||||||
|
switch asset.Type {
|
||||||
|
case AssetTypeFile:
|
||||||
|
if filterTextContent(filter.Operator, asset.Name, filter.Value.MAsset[0].Name) ||
|
||||||
|
filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
case AssetTypeImage:
|
||||||
|
if filterTextContent(filter.Operator, asset.Content, filter.Value.MAsset[0].Content) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
return value.filter(filter.Value, filter.RelativeDate, filter.RelativeDate2, filter.Operator)
|
return value.filter(filter.Value, filter.RelativeDate, filter.RelativeDate2, filter.Operator)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue