mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-02-28 05:32:52 +00:00
🎨 Improve database relation field filtering https://github.com/siyuan-note/siyuan/issues/11547
This commit is contained in:
@@ -138,11 +138,31 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, rowID st
|
||||
}
|
||||
}
|
||||
|
||||
if destVal.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
|
||||
return true
|
||||
switch filter.Operator {
|
||||
case FilterOperatorContains:
|
||||
if destVal.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
|
||||
return true
|
||||
}
|
||||
case FilterOperatorDoesNotContain:
|
||||
ret := destVal.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator)
|
||||
if !ret {
|
||||
return false
|
||||
}
|
||||
default:
|
||||
if destVal.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
|
||||
switch filter.Operator {
|
||||
case FilterOperatorContains:
|
||||
return false
|
||||
case FilterOperatorDoesNotContain:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
if nil != value.Relation && KeyTypeRelation == value.Type && 0 < len(value.Relation.Contents) && nil != filter.Value && KeyTypeRelation == filter.Value.Type &&
|
||||
@@ -151,11 +171,32 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, rowID st
|
||||
|
||||
for _, relationValue := range value.Relation.Contents {
|
||||
filterValue := &Value{Type: KeyTypeBlock, Block: &ValueBlock{Content: filter.Value.Relation.BlockIDs[0]}}
|
||||
if relationValue.filter(filterValue, filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
|
||||
return true
|
||||
|
||||
switch filter.Operator {
|
||||
case FilterOperatorContains:
|
||||
if relationValue.filter(filterValue, filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
|
||||
return true
|
||||
}
|
||||
case FilterOperatorDoesNotContain:
|
||||
ret := relationValue.filter(filterValue, filter.RelativeDate, filter.RelativeDate2, filter.Operator)
|
||||
if !ret {
|
||||
return false
|
||||
}
|
||||
default:
|
||||
if relationValue.filter(filterValue, filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
return false
|
||||
|
||||
switch filter.Operator {
|
||||
case FilterOperatorContains:
|
||||
return false
|
||||
case FilterOperatorDoesNotContain:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
return value.filter(filter.Value, filter.RelativeDate, filter.RelativeDate2, filter.Operator)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user