瀏覽代碼

Tweaks to FilterButton, publicising the configuration properties

Kenric Nugteren 1 年之前
父節點
當前提交
66a61f2be6

+ 23 - 0
InABox.Core/CoreUtils.cs

@@ -2799,6 +2799,29 @@ namespace InABox.Core
             return value;
         }
 
+        public static IEnumerable<T> NotNull<T>(this IEnumerable<T?> enumerable)
+            where T : struct
+        {
+            foreach(var obj in enumerable)
+            {
+                if (obj.HasValue)
+                {
+                    yield return obj.Value;
+                }
+            }
+        }
+        public static IEnumerable<T> NotNull<T>(this IEnumerable<T?> enumerable)
+            where T : class
+        {
+            foreach (var obj in enumerable)
+            {
+                if (obj != null)
+                {
+                    yield return obj;
+                }
+            }
+        }
+
         #endregion
 
     }

+ 2 - 2
inabox.wpf/DynamicGrid/BaseDynamicGrid.cs

@@ -243,9 +243,9 @@ namespace InABox.DynamicGrid
         public IEnumerable<TType> ExtractValues<TType>(Expression<Func<T, TType>> column, Selection selection)
         {
             var result = selection == Selection.None
-                ? new TType[] { }
+                ? Enumerable.Empty<TType>()
                 : selection == Selection.Selected
-                    ? SelectedRows.Select(r => r.Get(column)).ToArray()
+                    ? SelectedRows.Select(r => r.Get(column))
                     : Data.ExtractValues(column);
             return result;
         }

+ 6 - 3
inabox.wpf/DynamicGrid/DynamicGridFilterButtonComponent.cs

@@ -58,15 +58,18 @@ public abstract class DynamicGridFilterComponent<T>
 
     private Filter<T>? TemporaryFilter = null;
 
-    private IConfiguration<CoreFilterDefinitions> GlobalConfiguration;
-    private IConfiguration<CoreFilterDefinitions> UserConfiguration;
-
     private int NumberOfFilters => SelectedFilters.Count + (TemporaryFilter is null ? 0 : 1);
 
     #endregion
 
     #region Public Properties
 
+
+    public IConfiguration<CoreFilterDefinitions> GlobalConfiguration { get; set; }
+
+    public IConfiguration<CoreFilterDefinitions> UserConfiguration { get; set; }
+
+
     private bool _multipleFilters = false;
 
     private bool MultipleFilters

+ 0 - 1
inabox.wpf/Forms/FilterButton.cs

@@ -15,7 +15,6 @@ using System.Windows.Media.Imaging;
 namespace InABox.Wpf;
 
 public class FilterButton<T> : Button
-    where T : BaseObject, new()
 {
     public event DynamicGridFilterComponent<T>.FilterSelectedHandler? OnFiltersSelected
     {