Browse Source

Fixed issue with Entity Initialisation and UserProperties
Added duplicate checks for DynamicGrid hidden columns
Fixed an issue with MultiSelectDialogs
Report Preview Window now shows errors if found and launches designer to allow fixing

frogsoftware 1 year ago
parent
commit
2450b9ba47

+ 1 - 1
InABox.Core/DatabaseSchema/DatabaseSchema.cs

@@ -309,7 +309,7 @@ namespace InABox.Core
         {
         {
             entity.UserProperties.Load(Properties(entity.GetType())
             entity.UserProperties.Load(Properties(entity.GetType())
                 .Where(x => x is CustomProperty)
                 .Where(x => x is CustomProperty)
-                .Select(x => new KeyValuePair<string, object?>(x.Name, x.PropertyType)));
+                .Select(x => new KeyValuePair<string, object?>(x.Name, DefaultValue(x.PropertyType))));
         }
         }
     }
     }
 }
 }

+ 7 - 13
inabox.wpf/DynamicGrid/BaseDynamicGrid.cs

@@ -160,20 +160,17 @@ namespace InABox.DynamicGrid
 
 
             public IEnumerable<string> ColumnNames => Columns;
             public IEnumerable<string> ColumnNames => Columns;
 
 
-            public void Add(Expression<Func<T, object?>> column)
-            {
-                Columns.Add(CoreUtils.GetFullPropertyName(column, "."));
-            }
+            public void Add(Expression<Func<T, object?>> column) => Add(CoreUtils.GetFullPropertyName(column, "."));
 
 
-            public void Add(IColumn column)
-            {
-                Columns.Add(column.Property);
-            }
+            public void Add(IColumn column) => Add(column.Property);
 
 
             public void Add(string column)
             public void Add(string column)
             {
             {
-                Columns.Add(column);
+                if (!Contains(column))
+                    Columns.Add(column);
             }
             }
+
+            public bool Contains(string column) => Columns.Contains(column);
         }
         }
 
 
         public HiddenColumnsList HiddenColumns { get; }
         public HiddenColumnsList HiddenColumns { get; }
@@ -218,10 +215,7 @@ namespace InABox.DynamicGrid
         public virtual double HeaderHeight { get; set; }
         public virtual double HeaderHeight { get; set; }
         public new virtual double FontSize { get; set; }
         public new virtual double FontSize { get; set; }
 
 
-        public void AddHiddenColumn(string column)
-        {
-            HiddenColumns.Add(column);
-        }
+        public void AddHiddenColumn(string column) => HiddenColumns.Add(column);
 
 
         public abstract int DesiredWidth();
         public abstract int DesiredWidth();
 
 

+ 1 - 1
inabox.wpf/DynamicGrid/MultiSelectDialog.cs

@@ -163,7 +163,7 @@ namespace InABox.DynamicGrid
             result.Columns.Add(new CoreColumn { ColumnName = "ID", DataType = typeof(Guid) });
             result.Columns.Add(new CoreColumn { ColumnName = "ID", DataType = typeof(Guid) });
             if(_columns is not null)
             if(_columns is not null)
             {
             {
-                foreach (var column in _columns.Items)
+                foreach (var column in _columns.Items.Where(x=>!String.Equals(x.Property,"ID")))
                     result.Columns.Add(new CoreColumn { ColumnName = column.Property, DataType = column.Type });
                     result.Columns.Add(new CoreColumn { ColumnName = column.Property, DataType = column.Type });
             }
             }
 
 

+ 14 - 3
inabox.wpf/Reports/PreviewWindow.xaml.cs

@@ -26,6 +26,7 @@ using System.Linq;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 using System.Windows.Threading;
 using System.Windows.Threading;
 using FastReport.Design;
 using FastReport.Design;
+using Syncfusion.Windows.Controls.RichTextBoxAdv;
 
 
 namespace InABox.Wpf.Reports
 namespace InABox.Wpf.Reports
 {
 {
@@ -189,9 +190,19 @@ namespace InABox.Wpf.Reports
                     {
                     {
                         Dispatcher.BeginInvoke(() =>
                         Dispatcher.BeginInvoke(() =>
                         {
                         {
-                            Designer.Report ??= _report;
-                            action();
-                            CloseLoading();
+                            try
+                            {
+                                Designer.Report ??= _report;
+                                action();
+                                CloseLoading();
+                            }
+                            catch (Exception e)
+                            {
+                                MessageWindow.ShowMessage(e.Message,"Error in Report");
+                                CloseLoading();
+                                ShowDesigner();
+                            }
+   
                         });
                         });
                     }
                     }
                     else
                     else