Browse Source

Meeting improvements

Kenric Nugteren 2 years ago
parent
commit
2d686da106

+ 4 - 3
prs.desktop/Grids/AssignmentGrid.cs

@@ -50,9 +50,10 @@ namespace PRSDesktop
         protected override void AfterLoad(IDynamicEditorForm editor, Assignment[] items)
         {
             base.AfterLoad(editor, items);
-            if (items.FirstOrDefault().ID == Guid.Empty)
-                ReloadForms<Assignment, AssignmentForm, ActivityForm>(editor, items.FirstOrDefault(), x => x.Activity.ID,
-                    items.FirstOrDefault().ActivityLink.ID);
+
+            var first = items.FirstOrDefault();
+            if (first?.ID == Guid.Empty)
+                ReloadForms<Assignment, AssignmentForm, ActivityForm>(editor, first, x => x.Activity.ID, first.ActivityLink.ID);
         }
     }
 }

+ 12 - 14
prs.desktop/Panels/DataEntry/DataEntryPanel.xaml.cs

@@ -120,13 +120,19 @@ namespace PRSDesktop
 
         public void LoadColumns(string column, Dictionary<string, string> columns)
         {
+            var selectedType = TypeBox.SelectedValue as Type;
+            if (selectedType is null) return;
+
             columns.Clear();
-            var comps = column.Split('.').ToList();
-            comps.RemoveAt(comps.Count - 1);
-            var prefix = string.Format("{0}.", string.Join(".", comps));
-            var cols = Columns.Where(x => !x.ColumnName.Equals(column) && x.ColumnName.StartsWith(prefix));
-            foreach (var col in cols)
-                columns[col.ColumnName.Replace(prefix, "")] = col.ColumnName;
+
+            foreach (var c in LookupFactory.DefineColumns(selectedType).ColumnNames().Where(x => x != "ID"))
+            {
+               columns.Add(c, c);
+            }
+            if (Popup?.EditorDefinition is CodePopupEditorControl codePopup && !columns.ContainsKey(codePopup.CodeColumn))
+            {
+                columns.Add(codePopup.CodeColumn, codePopup.CodeColumn);
+            }
         }
 
         public IFilter? DefineFilter(Type type) => LookupFactory.DefineFilter(type);
@@ -235,14 +241,6 @@ namespace PRSDesktop
 
                     Columns = new DynamicGridColumns();
                     Columns.ExtractColumns(selectedType);
-                    foreach (var column in LookupFactory.DefineColumns(selectedType).ColumnNames().Where(x => x != "ID"))
-                    {
-                        popupEditor.OtherColumns.Add(column, column);
-                    }
-                    if (popupEditor is CodePopupEditorControl codePopup && !popupEditor.OtherColumns.ContainsKey(codePopup.CodeColumn))
-                    {
-                        popupEditor.OtherColumns.Add(codePopup.CodeColumn, codePopup.CodeColumn);
-                    }
                 }
                 var el = (Popup as UIElement)!;
 

+ 1 - 1
prs.desktop/Panels/Jobs/DocumentSets/JobDocumentSetMileStoneConverter.cs

@@ -56,7 +56,7 @@ namespace PRSDesktop
 
                     case "Color":
                         if (ValidJson(value))
-                            return ImageUtils.ColorToString(Statuscolors[GetBlock(value).Status]);
+                            return ImageUtils.ColorToString(StatusColors[GetBlock(value).Status]);
                         else
                             return ImageUtils.ColorToString(Color.White);
 

+ 1 - 0
prs.desktop/Panels/Meeting/MeetingAssignments.cs

@@ -90,6 +90,7 @@ namespace PRSDesktop
 
                 if (updates.Any())
                     new Client<Assignment>().Save(updates, "Added by Meeting Editor");
+                Refresh(false, true);
             }
         }
 

+ 2 - 1
prs.desktop/Panels/Meeting/MeetingPanel.xaml

@@ -44,7 +44,8 @@
                 <dynamicGrid:DynamicTabItem Header="Details">
                     <DockPanel>
                         <local:MeetingAssignments x:Name="MeetingAssignments" DockPanel.Dock="Right" Width="250"  Margin="2,2,0,0"/>
-                        <dynamicGrid:EmbeddedDynamicEditorForm x:Name="MeetingDetailsForm" ButtonsVisible="False" TabsVisible="False" DockPanel.Dock="Left" Margin="-5,-3,-5,0"/>
+                        <dynamicGrid:EmbeddedDynamicEditorForm x:Name="MeetingDetailsForm" ButtonsVisible="False" TabsVisible="False"
+                                                               DockPanel.Dock="Left" Margin="-5,-3,-5,0"/>
                     </DockPanel>
                 </dynamicGrid:DynamicTabItem>
                 <dynamicGrid:DynamicTabItem Header="Agenda">

+ 18 - 3
prs.desktop/Panels/Meeting/MeetingPanel.xaml.cs

@@ -2,9 +2,12 @@ using System;
 using System.Collections.Generic;
 using System.Linq;
 using System.Windows.Controls;
+using com.sun.security.ntlm;
 using Comal.Classes;
+using InABox.Clients;
 using InABox.Core;
 using InABox.DynamicGrid;
+using static com.sun.xml.@internal.ws.api.config.management.policy.ManagementAssertion;
 
 namespace PRSDesktop
 {
@@ -24,9 +27,6 @@ namespace PRSDesktop
             foreach (var column in MeetingModel.Columns.Items)
                 Meetings.AddHiddenColumn(column.Property);
             Meetings.Refresh(true, false);
-            
-
-            
         }
 
         public void Shutdown()
@@ -73,8 +73,11 @@ namespace PRSDesktop
             CoreRow? row = e.Rows?.FirstOrDefault();
             
             var meeting = row?.ToObject<Meeting>() ?? new Meeting();
+
             Meetings.InitialiseEditorForm(MeetingDetailsForm, new Meeting[] { meeting });
 
+            MeetingDetailsForm.OnAfterEditorValueChanged += MeetingDetailsForm_OnAfterEditorValueChanged;
+
             var model = new MeetingModel(row);
             
             MeetingDetails.Model = model;
@@ -83,5 +86,17 @@ namespace PRSDesktop
             MeetingAssignments.Model = model;
             MeetingAssignments.Refresh(false,true);
         }
+
+        private Dictionary<string, object?>? MeetingDetailsForm_OnAfterEditorValueChanged(DynamicEditorGrid sender, string columnname)
+        {
+            var item = MeetingDetailsForm.Items.FirstOrDefault();
+            if(item is Meeting meeting)
+            {
+                new Client<Meeting>().Save(meeting, "");
+                // Commented out because if you do too many refreshes, the selection on the grid is lost and bad stuff happens.
+                // Meetings.Refresh(false, true);
+            }
+            return null;
+        }
     }
 }