Browse Source

Direct Edit Columns now default to general columns if they are not yet set.

frogsoftware 1 year ago
parent
commit
282e6e0a08
1 changed files with 38 additions and 18 deletions
  1. 38 18
      inabox.wpf/DynamicGrid/DynamicGridCustomColumnsComponent.cs

+ 38 - 18
inabox.wpf/DynamicGrid/DynamicGridCustomColumnsComponent.cs

@@ -32,18 +32,40 @@ public class DynamicGridCustomColumnsComponent<T>
 
     public DynamicGridColumns LoadColumns()
     {
-        var tag = GetTag();
-
-        var user = Task.Run(() => new UserConfiguration<DynamicGridColumns>(tag).Load());
-        user.Wait();
-
-        var global = Task.Run(() => new GlobalConfiguration<DynamicGridColumns>(tag).Load());
-        global.Wait();
-        //Task.WaitAll(user, global);
-        var columns = user.Result.Any() ? user.Result : global.Result;
-
-        //if (!columns.Any())
-        //    GenerateColumns(columns); //override this to provide specific columns on startup
+        DynamicGridColumns uvc = null;
+        DynamicGridColumns udc = null;
+        DynamicGridColumns gvc = null;
+        DynamicGridColumns gdc = null;
+        var tasks = new Task[]
+        {
+            Task.Run(() => uvc = new UserConfiguration<DynamicGridColumns>(GetTag(false)).Load()),
+            Task.Run(() => udc = new UserConfiguration<DynamicGridColumns>(GetTag(true)).Load()),
+            Task.Run(() => gvc = new GlobalConfiguration<DynamicGridColumns>(GetTag(false)).Load()),
+            Task.Run(() => gdc = new GlobalConfiguration<DynamicGridColumns>(GetTag(true)).Load())
+            
+        };
+        Task.WaitAll(tasks);
+        var columns = Grid.IsDirectEditMode()
+            ? udc?.Any() == true 
+                ? udc 
+                : gdc?.Any() == true
+                    ? gdc
+                    : uvc?.Any() == true
+                        ? uvc
+                        : gvc ?? new DynamicGridColumns()
+            : uvc?.Any() == true
+                ? uvc
+                : gvc ?? new DynamicGridColumns();
+        
+        // var user = Task.Run(() => new UserConfiguration<DynamicGridColumns>(tag).Load());
+        // user.Wait();
+        // var global = Task.Run(() => new GlobalConfiguration<DynamicGridColumns>(tag).Load());
+        // global.Wait();
+        // //Task.WaitAll(user, global);
+        // var columns = user.Result.Any() ? user.Result : global.Result;
+
+        // if (!columns.Any())
+        //     GenerateColumns(columns); //override this to provide specific columns on startup
 
         var removes = columns.Where(x => x is null || string.IsNullOrWhiteSpace(x.ColumnName) || DatabaseSchema.Property(typeof(T), x.ColumnName) == null || GetColumnEditor(x) is NullEditor)
            .ToArray();
@@ -77,7 +99,7 @@ public class DynamicGridCustomColumnsComponent<T>
 
     public void SaveColumns(DynamicGridColumns columns)
     {
-        var tag = GetTag();
+        var tag = GetTag(Grid.IsDirectEditMode());
         new UserConfiguration<DynamicGridColumns>(tag).Save(columns);
     }
 
@@ -96,13 +118,11 @@ public class DynamicGridCustomColumnsComponent<T>
         }
     }
 
-    private string GetTag()
+    private string GetTag(bool directedit)
     {
         var tag = Tag ?? typeof(T).Name;
-        if (Grid.IsDirectEditMode())
-        {
+        if (directedit)
             tag += ":DirectEdit";
-        }
         return tag;
     }
 
@@ -133,7 +153,7 @@ public class DynamicGridCustomColumnsComponent<T>
 
     private void UpdateDefaultColumnsClick(object sender, RoutedEventArgs e)
     {
-        var tag = GetTag();
+        var tag = GetTag(Grid.IsDirectEditMode());
         new GlobalConfiguration<DynamicGridColumns>(tag).Save(Grid.VisibleColumns);
         new UserConfiguration<DynamicGridColumns>(tag).Delete();
         Grid.Refresh(true, true);