Ver código fonte

Added FilerConstant.Null to Numeric Aggregate filters

frogsoftware 10 meses atrás
pai
commit
fd2f12ab52

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

@@ -144,9 +144,9 @@ namespace InABox.Core
             Operator.IsLessThanOrEqualTo
             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 };
                 return new[] { FilterConstant.Null };
 
 
             if ((type == typeof(DateTime)) && SimpleOperators.Contains(op))
             if ((type == typeof(DateTime)) && SimpleOperators.Contains(op))
@@ -190,13 +190,14 @@ namespace InABox.Core
                     FilterConstant.StartOfNextFinancialYear,
                     FilterConstant.StartOfNextFinancialYear,
                     FilterConstant.EndOfNextFinancialYear
                     FilterConstant.EndOfNextFinancialYear
                 };
                 };
-            
+
             if (type.IsNumeric() && SimpleOperators.Contains(op))
             if (type.IsNumeric() && SimpleOperators.Contains(op))
-                return new[]
-                {
-                    FilterConstant.Zero
-                };
-            
+            {
+                return aggregate 
+                    ? new[] { FilterConstant.Null }
+                    : new [] { FilterConstant.Zero };
+            }
+
             return new FilterConstant[] { };
             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))
         if (!string.IsNullOrWhiteSpace(propertyName))
         {
         {
             var property = CoreUtils.GetProperty(typeof(T), 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())
             if (constants.Any())
             {
             {
                 values.Add(new KeyValuePair<string, FilterConstant?>("", null));
                 values.Add(new KeyValuePair<string, FilterConstant?>("", null));