diff --git a/kernel/av/filter.go b/kernel/av/filter.go index 587293c56..960d40b36 100644 --- a/kernel/av/filter.go +++ b/kernel/av/filter.go @@ -1005,6 +1005,19 @@ func calcRelativeTimeRegion(count int, unit RelativeDateUnit, direction Relative return } +func (filter *ViewFilter) IsValid() bool { + if nil == filter || nil == filter.Value { + return false + } + + if FilterOperatorIsEmpty != filter.Operator && FilterOperatorIsNotEmpty != filter.Operator { + if filter.Value.IsEmpty() && nil == filter.RelativeDate { + return false + } + } + return true +} + func (filter *ViewFilter) GetAffectValue(key *Key, addingBlockID string) (ret *Value) { if nil != filter.Value { if KeyTypeRelation == filter.Value.Type || KeyTypeTemplate == filter.Value.Type || KeyTypeRollup == filter.Value.Type || KeyTypeUpdated == filter.Value.Type || KeyTypeCreated == filter.Value.Type { diff --git a/kernel/model/attribute_view.go b/kernel/model/attribute_view.go index e5d3b7f67..f11f2e623 100644 --- a/kernel/model/attribute_view.go +++ b/kernel/model/attribute_view.go @@ -196,6 +196,11 @@ func getAttrViewAddingBlockDefaultValues(attrView *av.AttributeView, view, group } newValue := filter.GetAffectValue(keyValues.Key, addingItemID) + if nil == newValue { + if filter.IsValid() { + newValue = getNewValueByNearItem(nearItem, keyValues.Key, addingItemID) + } + } if nil != newValue { if av.KeyTypeDate == keyValues.Key.Type { if nil != nearItem {