Browse Source

Added "Reset Columns to Default" to OneToMany and ManyTOMany grids.

Kenric Nugteren 1 year ago
parent
commit
5e319b8e96

+ 1 - 1
InABox.Core/EntityLink.cs

@@ -116,7 +116,7 @@ namespace InABox.Core
             return result;
         }
 
-        protected override void DoPropertyChanged(string name, object before, object after)
+        protected override void DoPropertyChanged(string name, object? before, object? after)
         {
             var le = LinkedEntity();
             if (IsObserving() && le != null)

+ 1 - 1
InABox.Core/Script.cs

@@ -212,7 +212,7 @@ namespace InABox.Core
             return Code.Equals(GeneralTemplate());
         }
 
-        protected override void DoPropertyChanged(string name, object before, object after)
+        protected override void DoPropertyChanged(string name, object? before, object? after)
         {
             base.DoPropertyChanged(name, before, after);
             if (name.Equals("ScriptType") && IsDefault((ScriptType)before))

+ 0 - 1
InABox.Core/Serialization.cs

@@ -9,7 +9,6 @@ using System.Runtime.InteropServices.ComTypes;
 using System.Threading;
 using System.Xml.Linq;
 using InABox.Clients;
-using System.Diagnostics.CodeAnalysis;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Linq;
 

+ 1 - 1
InABox.Core/TimeSpanFormatter.cs

@@ -76,7 +76,7 @@ namespace InABox.Core
                             results.Add(span.Milliseconds.ToString("D3"));
                     return string.Join(":", results);
                 }
-                catch (Exception e)
+                catch
                 {
                     return GetDefault(format, arg);
                 }

+ 1 - 1
InABox.Core/UserTrackingAttribute.cs

@@ -143,7 +143,7 @@ namespace InABox.Core
             User = new UserLink();
         }
 
-        protected override void DoPropertyChanged(string name, object before, object after)
+        protected override void DoPropertyChanged(string name, object? before, object? after)
         {
             base.DoPropertyChanged(name, before, after);
             TotalRead = Hour00Read + Hour01Read + Hour02Read + Hour03Read + Hour04Read + Hour05Read + Hour06Read + Hour07Read + Hour08Read +

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

@@ -133,7 +133,7 @@ namespace InABox.DynamicGrid
         {
             InitialiseEditorForm(editor, items.Cast<T>().ToArray(), pageDataHandler, preloadPages);
         }
-        public virtual bool EditItems(object[] items, Func<Type, CoreTable>? PageDataHandler = null, bool PreloadPages = false)
+        public virtual bool EditItems(object[] items, Func<Type, CoreTable?>? PageDataHandler = null, bool PreloadPages = false)
         {
             var values = items.Cast<T>().ToArray();
             return EditItems(values, PageDataHandler, PreloadPages);
@@ -184,7 +184,7 @@ namespace InABox.DynamicGrid
         }
         
         public abstract void InitialiseEditorForm(IDynamicEditorForm editor, T[] items, Func<Type, CoreTable>? pageDataHandler = null, bool preloadPages = false);
-        public abstract bool EditItems(T[] items, Func<Type, CoreTable>? PageDataHandler = null, bool PreloadPages = false);
+        public abstract bool EditItems(T[] items, Func<Type, CoreTable?>? PageDataHandler = null, bool PreloadPages = false);
 
         public Filter<T>? DefineFilter()
         {

+ 0 - 1
inabox.wpf/DynamicGrid/DynamicGridUtils.cs

@@ -296,7 +296,6 @@ namespace InABox.DynamicGrid
                                         )
                                     );
 
-                                    IDynamicEditorPage page;
                                     if (subtypes.Any())
                                     {
                                         pageTypes.Add(new(subtypes.First(), property));

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

@@ -42,8 +42,7 @@ namespace InABox.DynamicGrid
             return result;
         }
 
-        protected override void Reload(Filters<TManyToMany> criteria, Columns<TManyToMany> columns, ref SortOrder<TManyToMany> sort,
-            Action<CoreTable, Exception> action)
+        protected override void Reload(Filters<TManyToMany> criteria, Columns<TManyToMany> columns, ref SortOrder<TManyToMany>? sort, Action<CoreTable?, Exception?> action)
         {
             var expr = CoreUtils.CreateLambdaExpression<TManyToMany>(prop.Name + ".ID");
             criteria.Add(new Filter<TManyToMany>(expr).IsEqualTo(ID));

+ 31 - 0
inabox.wpf/DynamicGrid/DynamicManyToManyGrid.cs

@@ -6,6 +6,7 @@ using System.Linq;
 using System.Reflection;
 using System.Threading.Tasks;
 using System.Windows;
+using System.Windows.Controls;
 using InABox.Clients;
 using InABox.Configuration;
 using InABox.Core;
@@ -194,6 +195,36 @@ namespace InABox.DynamicGrid
             var tag = GetTag();
             new UserConfiguration<DynamicGridColumns>(tag).Save(columns);
         }
+        protected override void LoadColumnsMenu(ContextMenu menu)
+        {
+            base.LoadColumnsMenu(menu);
+            //menu.Items.Add(new Separator());
+            var ResetColumns = new MenuItem { Header = "Reset Columns to Default" };
+            ResetColumns.Click += ResetColumnsClick;
+            menu.Items.Add(ResetColumns);
+            if (Security.IsAllowed<CanSetDefaultColumns>())
+            {
+                menu.Items.Add(new Separator());
+                var UpdateDefaultColumns = new MenuItem { Header = "Mark Columns as Default" };
+                UpdateDefaultColumns.Click += UpdateDefaultColumnsClick;
+                menu.Items.Add(UpdateDefaultColumns);
+            }
+        }
+
+        private void ResetColumnsClick(object sender, RoutedEventArgs e)
+        {
+            VisibleColumns.Clear();
+            SaveColumns(VisibleColumns);
+            Refresh(true, true);
+        }
+
+        private void UpdateDefaultColumnsClick(object sender, RoutedEventArgs e)
+        {
+            var tag = GetTag();
+            new GlobalConfiguration<DynamicGridColumns>(tag).Save(VisibleColumns);
+            new UserConfiguration<DynamicGridColumns>(tag).Delete();
+            Refresh(true, true);
+        }
 
         protected override DynamicGridSettings LoadSettings()
         {

+ 30 - 0
inabox.wpf/DynamicGrid/DynamicOneToManyGrid.cs

@@ -229,6 +229,36 @@ namespace InABox.DynamicGrid
             var tag = GetTag();
             new UserConfiguration<DynamicGridColumns>(tag).Save(columns);
         }
+        protected override void LoadColumnsMenu(ContextMenu menu)
+        {
+            base.LoadColumnsMenu(menu);
+            //menu.Items.Add(new Separator());
+            var ResetColumns = new MenuItem { Header = "Reset Columns to Default" };
+            ResetColumns.Click += ResetColumnsClick;
+            menu.Items.Add(ResetColumns);
+            if (Security.IsAllowed<CanSetDefaultColumns>())
+            {
+                menu.Items.Add(new Separator());
+                var UpdateDefaultColumns = new MenuItem { Header = "Mark Columns as Default" };
+                UpdateDefaultColumns.Click += UpdateDefaultColumnsClick;
+                menu.Items.Add(UpdateDefaultColumns);
+            }
+        }
+
+        private void ResetColumnsClick(object sender, RoutedEventArgs e)
+        {
+            VisibleColumns.Clear();
+            SaveColumns(VisibleColumns);
+            Refresh(true, true);
+        }
+
+        private void UpdateDefaultColumnsClick(object sender, RoutedEventArgs e)
+        {
+            var tag = GetTag();
+            new GlobalConfiguration<DynamicGridColumns>(tag).Save(VisibleColumns);
+            new UserConfiguration<DynamicGridColumns>(tag).Delete();
+            Refresh(true, true);
+        }
 
         protected override DynamicGridSettings LoadSettings()
         {

+ 1 - 1
inabox.wpf/DynamicGrid/Editors/MultiLookupEditor/MultiLookupEditorControl.cs

@@ -113,7 +113,7 @@ namespace InABox.DynamicGrid
 
         private bool IsEnumEditor()
         {
-            return EditorDefinition is EnumLookupEditor;
+            return false;
         }
 
         public List<Button> Buttons { get; private set; }

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

@@ -37,7 +37,7 @@ namespace InABox.DynamicGrid
         void Refresh(bool columns, bool data);
 
         void InitialiseEditorForm(IDynamicEditorForm editor, object[] items, Func<Type, CoreTable>? pageDataHandler = null, bool preloadPages = false);
-        bool EditItems(object[] items, Func<Type, CoreTable>? PageDataHandler = null, bool PreloadPages = false);
+        bool EditItems(object[] items, Func<Type, CoreTable?>? PageDataHandler = null, bool PreloadPages = false);
 
         //bool DirectEdit(CoreTable data);
 

+ 3 - 3
inabox.wpf/DynamicGrid/PDF/ImageEditorControl.xaml.cs

@@ -16,7 +16,7 @@ namespace InABox.DynamicGrid
     /// </summary>
     public partial class ImageEditorControl : UserControl, IDocumentEditor
     {
-        private IEntityDocument _document;
+        private IEntityDocument? _document;
 
         private byte[] documentdata;
 
@@ -27,7 +27,7 @@ namespace InABox.DynamicGrid
             Editor.ToolbarSettings.IsToolbarVisiblity = false;
         }
 
-        public IEntityDocument Document
+        public IEntityDocument? Document
         {
             get => _document;
             set
@@ -72,7 +72,7 @@ namespace InABox.DynamicGrid
 
         private void LoadImage()
         {
-            if (_document == null)
+            if (_document is null)
                 return;
 
             var cachefile = Path.Combine(CoreUtils.GetPath(), string.Format("{0}.ffd", _document.DocumentLink.ID.ToString()));

+ 1 - 1
inabox.wpf/DynamicGrid/PDF/PDFEditorControl.xaml.cs

@@ -66,7 +66,7 @@ namespace InABox.DynamicGrid
 
         public PDFDocumentLoadedEvent PDFDocumentLoaded { get; set; }
 
-        public IEntityDocument Document
+        public IEntityDocument? Document
         {
             get => _document;
             set

+ 3 - 4
inabox.wpf/DynamicGrid/PDF/RichTextEditorControl.xaml.cs

@@ -16,15 +16,13 @@ namespace InABox.DynamicGrid
     public partial class RTFEditorControl : UserControl, IDocumentEditor
     {
         
-        private IEntityDocument _document;
-
-        private byte[] documentdata;
+        private IEntityDocument? _document;
 
         public RTFEditorControl()
         {
             InitializeComponent();
         }
-        public IEntityDocument Document
+        public IEntityDocument? Document
         {
             get => _document;
             set
@@ -75,6 +73,7 @@ namespace InABox.DynamicGrid
 
             using (new WaitCursor())
             {
+                byte[] documentdata;
                 if (DownloadNeeded(_document.DocumentLink.ID))
                 {
                     var dbdoc = new Client<Document>().Load(new Filter<Document>(x => x.ID).IsEqualTo(_document.DocumentLink.ID)).FirstOrDefault();