Kenric Nugteren 1 год назад
Родитель
Сommit
ac227fd119

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

@@ -123,7 +123,7 @@ namespace InABox.Core
 
         #region Simplified Generic Helpers
 
-        public void Add<T>(Filter<T> filter = null, Columns<T> columns = null, SortOrder<T> sort = null)
+        public void Add<T>(Filter<T>? filter = null, Columns<T>? columns = null, SortOrder<T>? sort = null)
             where T : Entity, IRemotable, IPersistent, new()
         {
             Add(new QueryDef<T>(filter, columns, sort), typeof(T));

+ 4 - 0
InABox.Poster.Timberline/InABox.Poster.Timberline.csproj

@@ -6,6 +6,10 @@
     <Nullable>enable</Nullable>
   </PropertyGroup>
 
+  <ItemGroup>
+    <PackageReference Include="CsvHelper" Version="30.0.1" />
+  </ItemGroup>
+
   <ItemGroup>
     <ProjectReference Include="..\InABox.Core\InABox.Core.csproj" />
     <ProjectReference Include="..\inabox.scripting\InABox.Scripting.csproj" />

+ 61 - 0
InABox.Poster.Timberline/TimberlineConverters.cs

@@ -0,0 +1,61 @@
+using CsvHelper;
+using CsvHelper.Configuration;
+using CsvHelper.TypeConversion;
+using InABox.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace InABox.Poster.Timberline
+{
+    public class TimberlinePosterStringConverter : DefaultTypeConverter
+    {
+        public int MaxLength { get; set; }
+
+        public TimberlinePosterStringConverter(int maxLength)
+        {
+            MaxLength = maxLength;
+        }
+
+        public override object? ConvertFromString(string? text, IReaderRow row, MemberMapData memberMapData)
+        {
+            return text;
+        }
+
+        public override string? ConvertToString(object? value, IWriterRow row, MemberMapData memberMapData)
+        {
+            var str = value?.ToString() ?? "";
+            if (str.Length > MaxLength)
+            {
+                str = str[..MaxLength];
+            }
+            return str;
+        }
+    }
+
+    public class TimberlinePosterDateConverter : DefaultTypeConverter
+    {
+        public override object? ConvertFromString(string? text, IReaderRow row, MemberMapData memberMapData)
+        {
+            if (text.IsNullOrWhiteSpace())
+            {
+                return DateTime.MinValue;
+            }
+            return DateTime.Parse(text);
+        }
+
+        public override string? ConvertToString(object? value, IWriterRow row, MemberMapData memberMapData)
+        {
+            if(value is DateTime date && date == DateTime.MinValue)
+            {
+                return "";
+            }
+            else
+            {
+                return string.Format("{0:dd/MM/yyyy}", value);
+            }
+        }
+    }
+}

+ 1 - 1
inabox.wpf/DigitalForms/DigitalFormReportGrid.cs

@@ -71,7 +71,7 @@ namespace InABox.DynamicGrid
             options.EndUpdate();
         }
 
-        public void Load(object item, Func<Type, CoreTable>? PageDataHandler)
+        public void Load(object item, Func<Type, CoreTable?>? PageDataHandler)
         {
             Form = (DigitalForm)item;
 

+ 1 - 1
inabox.wpf/DynamicGrid/DynamicEditorForm/DynamicEditorForm.xaml.cs

@@ -126,7 +126,7 @@ namespace InABox.DynamicGrid
         }
 
         public void Setup(Type type, DynamicEditorPages? pages = null, DynamicEditorButtons? buttons = null,
-            Func<Type, CoreTable>? pageDataHandler = null, bool preloadPages = false)
+            Func<Type, CoreTable?>? pageDataHandler = null, bool preloadPages = false)
         {
             Form.Setup(type, pages, buttons, pageDataHandler, preloadPages);
         }

+ 1 - 1
inabox.wpf/DynamicGrid/DynamicEditorForm/EmbeddedDynamicEditorForm.xaml.cs

@@ -216,7 +216,7 @@ namespace InABox.DynamicGrid
         }
 
         public void Setup(Type type, DynamicEditorPages? pages = null, DynamicEditorButtons? buttons = null,
-            Func<Type, CoreTable>? PageDataHandler = null, bool PreloadPages = false)
+            Func<Type, CoreTable?>? PageDataHandler = null, bool PreloadPages = false)
         {
             ClearEvents();
             

+ 1 - 1
inabox.wpf/DynamicGrid/DynamicEditorForm/IDynamicEditorForm.cs

@@ -36,7 +36,7 @@ namespace InABox.DynamicGrid
         BaseObject[] Items { get; set; }
 
         void Setup(Type type, DynamicEditorPages? pages = null, DynamicEditorButtons? buttons = null,
-            Func<Type, CoreTable>? pageDataHandler = null, bool preloadPages = false);
+            Func<Type, CoreTable?>? pageDataHandler = null, bool preloadPages = false);
 
         IDynamicEditorControl FindEditor(string columnName);
         object? GetEditorValue(string columnName);

+ 1 - 1
inabox.wpf/DynamicGrid/DynamicEditorGrid.xaml.cs

@@ -430,7 +430,7 @@ namespace InABox.DynamicGrid
                 }
             }
 
-            public void Load(object item, Func<Type, CoreTable>? PageDataHandler)
+            public void Load(object item, Func<Type, CoreTable?>? PageDataHandler)
             {
                 ConfigureEditors();
                 LoadEditorValues();

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

@@ -22,7 +22,7 @@ namespace InABox.DynamicGrid
 
         bool ReadOnly { get; set; }
 
-        void Load(object item, Func<Type, CoreTable>? PageDataHandler);
+        void Load(object item, Func<Type, CoreTable?>? PageDataHandler);
 
         void BeforeSave(object item);
 

+ 2 - 3
inabox.wpf/DynamicGrid/DynamicEnclosedListGrid.cs

@@ -63,12 +63,11 @@ namespace InABox.DynamicGrid
             return int.MinValue;
         }
 
-        public void Load(object item, Func<Type, CoreTable>? PageDataHandler)
+        public void Load(object item, Func<Type, CoreTable?>? PageDataHandler)
         {
             Entity = (TOne)item;
             MasterList.Clear();
-            var list = property.GetValue(item) as IList;
-            if (list != null)
+            if (property.GetValue(item) is IList list)
                 foreach (var entry in list)
                     MasterList.Add((TMany)entry);
             Items.AddRange(MasterList);

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

@@ -2885,7 +2885,7 @@ namespace InABox.DynamicGrid
             form.BeforeLoad();
         }
 
-        public override void InitialiseEditorForm(IDynamicEditorForm editor, T[] items, Func<Type, CoreTable>? pageDataHandler = null, bool preloadPages = false)
+        public override void InitialiseEditorForm(IDynamicEditorForm editor, T[] items, Func<Type, CoreTable?>? pageDataHandler = null, bool preloadPages = false)
         {
             var pages = items.Length == 1 ? LoadEditorPages(items.First()) : new DynamicEditorPages();
 
@@ -2970,7 +2970,7 @@ namespace InABox.DynamicGrid
         }
 
 
-        public override bool EditItems(T[] items, Func<Type, CoreTable>? PageDataHandler = null, bool PreloadPages = false)
+        public override bool EditItems(T[] items, Func<Type, CoreTable?>? PageDataHandler = null, bool PreloadPages = false)
         {
             DynamicEditorForm editor;
             using (var cursor = new WaitCursor())

+ 2 - 4
inabox.wpf/DynamicGrid/DynamicManyToManyGrid.cs

@@ -104,13 +104,11 @@ namespace InABox.DynamicGrid
 
         public bool Ready { get; set; }
 
-        public void Load(object item, Func<Type, CoreTable>? PageDataHandler)
+        public void Load(object item, Func<Type, CoreTable?>? PageDataHandler)
         {
             Item = (TThis)item;
 
-            CoreTable? data = null;
-            if (PageDataHandler != null)
-                data = PageDataHandler.Invoke(typeof(TManyToMany));
+            var data = PageDataHandler?.Invoke(typeof(TManyToMany));
             if (data != null)
             {
                 RefreshData(data);

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

@@ -112,13 +112,13 @@ namespace InABox.DynamicGrid
             return int.MinValue;
         }
 
-        public virtual void Load(object item, Func<Type, CoreTable>? PageDataHandler)
+        public virtual void Load(object item, Func<Type, CoreTable?>? PageDataHandler)
         {
             Reconfigure();
 
             Item = (TOne)item;
             
-            CoreTable? data = PageDataHandler?.Invoke(typeof(TMany));
+            var data = PageDataHandler?.Invoke(typeof(TMany));
 
             if (data == null)
             {

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

@@ -120,7 +120,7 @@ namespace InABox.DynamicGrid
             datagrid.Refresh(true, true);
             if (!String.IsNullOrEmpty(column) && !String.IsNullOrEmpty(value))
                 datagrid.AddVisualFilter(column, value, filtertype);
-            if (window.ShowDialog() != null)
+            if (window.ShowDialog() == true)
                 return true;
             return false;
         }