Преглед изворни кода

Added CoreFilterDefinition visibility enum

Kenric Nugteren пре 1 година
родитељ
комит
99b3543f1e

+ 32 - 0
InABox.Core/CoreFilterDefinition.cs

@@ -5,6 +5,33 @@ using System.Collections.Generic;
 
 namespace InABox.Core
 {
+    public enum CoreFilterDefinitionVisibility
+    {
+        DesktopOnly,
+        DesktopAndMobile
+    }
+
+    public static class CoreFilterDefinitionVisibilityExtensions
+    {
+        public static bool IsVisibleOn(this CoreFilterDefinitionVisibility visibility, Platform platform)
+        {
+            switch(platform)
+            {
+                case Platform.GPSEngine:
+                case Platform.WebEngine:
+                case Platform.DatabaseEngine:
+                case Platform.SchedulerEngine:
+                case Platform.Server:
+                case Platform.Wpf:
+                    return true;
+                case Platform.TimeBench:
+                    return visibility == CoreFilterDefinitionVisibility.DesktopAndMobile;
+                default:
+                    return false;
+            }
+        }
+    }
+
     public class CoreFilterDefinition : BaseObject, ISequenceable
     {
         [EditorSequence(1)]
@@ -15,6 +42,11 @@ namespace InABox.Core
         [FilterEditor]
         public string Filter { get; set; } = "";
 
+        [EditorSequence(3)]
+        [EnumLookupEditor(typeof(CoreFilterDefinitionVisibility), ToolTip = "On which platforms is this filter visible?", LookupWidth = 150)]
+        [Caption("Visible On")]
+        public CoreFilterDefinitionVisibility Visibility { get; set; } = CoreFilterDefinitionVisibility.DesktopOnly;
+
         [NullEditor]
         public long Sequence { get; set; }
 

+ 1 - 0
InABox.Core/CoreUtils.cs

@@ -347,6 +347,7 @@ namespace InABox.Core
 
         public static bool HasAttribute<T>(this Type type) where T : Attribute => type.GetCustomAttribute<T>() != null;
 
+
         #endregion
 
         public static bool TryGetEntity(string entityname, [NotNullWhen(true)] out Type? type)

+ 5 - 2
InABox.Core/Filter.cs

@@ -1773,9 +1773,12 @@ namespace InABox.Core
             return this;
         }
 
-        public Filters<T> AddRange(IEnumerable<Filter<T>> criteria)
+        public Filters<T> AddRange(IEnumerable<Filter<T>?> criteria)
         {
-            filters.AddRange(criteria);
+            foreach(var filter in criteria)
+            {
+                Add(filter);
+            }
             return this;
         }
 

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

@@ -84,11 +84,11 @@ public class DynamicGridFilterButtonComponent<T>
     {
         public string Name { get; set; }
 
-        public Filter<T> Filter { get; }
+        public Filter<T>? Filter { get; }
 
         public CoreFilterDefinition Definition { get; set; }
 
-        public FilterItem(string name, Filter<T> filter, CoreFilterDefinition definition)
+        public FilterItem(string name, Filter<T>? filter, CoreFilterDefinition definition)
         {
             Name = name;
             Filter = filter;
@@ -104,11 +104,11 @@ public class DynamicGridFilterButtonComponent<T>
 
     public delegate void FilterSelectedHandler(DynamicGridSelectedFilterSettings filters);
 
-    public event FilterSelectedHandler OnFiltersSelected;
+    public event FilterSelectedHandler? OnFiltersSelected;
 
     public delegate void FilterRefreshHandler();
 
-    public event FilterRefreshHandler OnFilterRefresh;
+    public event FilterRefreshHandler? OnFilterRefresh;
 
     public DynamicGridFilterButtonComponent(IDynamicGrid grid, IConfiguration<CoreFilterDefinitions> configuration)
     {
@@ -258,7 +258,7 @@ public class DynamicGridFilterButtonComponent<T>
         }
         if (filter is not null && !SelectedFilters.Any(x => x.Name.Equals(filter.Name)))
         {
-            SelectedFilters.Add(new(filter.Name, Serialization.Deserialize<Filter<T>>(filter.Filter), filter));
+            SelectedFilters.Add(new(filter.Name, filter.AsFilter<T>(), filter));
         }
 
         if (SelectedFilters.Count != originalCount || !alreadyHas)
@@ -272,7 +272,7 @@ public class DynamicGridFilterButtonComponent<T>
         SelectedFilters.Clear();
         foreach (var filter in filters)
         {
-            SelectedFilters.Add(new(filter.Name, Serialization.Deserialize<Filter<T>>(filter.Filter), filter));
+            SelectedFilters.Add(new(filter.Name, filter.AsFilter<T>(), filter));
         }
         if (SelectedFilters.Count > 1 && !MultipleFilters)
         {