瀏覽代碼

Added FilerConstant.Null to Numeric Aggregate filters

frogsoftware 10 月之前
父節點
當前提交
fd2f12ab52
共有 2 個文件被更改,包括 10 次插入9 次删除
  1. 9 8
      InABox.Core/Query/Filter.cs
  2. 1 1
      inabox.wpf/DynamicGrid/Editors/FilterEditor/FilterNode.cs

+ 9 - 8
InABox.Core/Query/Filter.cs

@@ -144,9 +144,9 @@ namespace InABox.Core
             Operator.IsLessThanOrEqualTo
         };
         
-        public static FilterConstant[] Constants(Type type, Operator op)
+        public static FilterConstant[] Constants(Type type, Operator op, bool aggregate = false)
         {
-            if (type == typeof(Guid) && op == Operator.IsEqualTo || op == Operator.IsNotEqualTo)
+            if (type == typeof(Guid) && (op == Operator.IsEqualTo || op == Operator.IsNotEqualTo))
                 return new[] { FilterConstant.Null };
 
             if ((type == typeof(DateTime)) && SimpleOperators.Contains(op))
@@ -190,13 +190,14 @@ namespace InABox.Core
                     FilterConstant.StartOfNextFinancialYear,
                     FilterConstant.EndOfNextFinancialYear
                 };
-            
+
             if (type.IsNumeric() && SimpleOperators.Contains(op))
-                return new[]
-                {
-                    FilterConstant.Zero
-                };
-            
+            {
+                return aggregate 
+                    ? new[] { FilterConstant.Null }
+                    : new [] { FilterConstant.Zero };
+            }
+
             return new FilterConstant[] { };
         }
     }

+ 1 - 1
inabox.wpf/DynamicGrid/Editors/FilterEditor/FilterNode.cs

@@ -265,7 +265,7 @@ public class FilterNode<T> : BaseFilterNode
         if (!string.IsNullOrWhiteSpace(propertyName))
         {
             var property = CoreUtils.GetProperty(typeof(T), propertyName);
-            var constants = FilterConstants.Constants(property.PropertyType, op);
+            var constants = FilterConstants.Constants(property.PropertyType, op, property.GetCustomAttribute<AggregateAttribute>() != null);
             if (constants.Any())
             {
                 values.Add(new KeyValuePair<string, FilterConstant?>("", null));