Browse Source

New BlobData field for Digital Forms. Removed auto update settings from Database configuration screen.

Kenric Nugteren 2 years ago
parent
commit
24e3e3cafc

+ 3 - 0
prs.classes/Entities/Manufacturing/ManufacturingPacket/ManufacturingPacketStage.cs

@@ -120,6 +120,9 @@ namespace Comal.Classes
         [NullEditor]
         public string FormData { get; set; }
 
+        [NullEditor]
+        public string? BlobData { get; set; }
+
         [NullEditor]
         [Obsolete("Being Replaced by FormCompleted")]
         public DateTime QACompleted { get; set; }

+ 8 - 0
prs.desktop/Configuration/DataBaseConfiguration.xaml.cs

@@ -766,6 +766,7 @@ namespace PRSDesktop
                 var values = (editor.EditorDefinition as ILookupEditor).Values(editor.ColumnName);
                 editor.LoadLookups(values);
             };
+            propertyEditor.OnDefineEditor += PropertyEditor_OnDefineEditor;
             propertyEditor.Items = new BaseObject[] { editable };
 
             if (propertyEditor.ShowDialog() == true)
@@ -775,6 +776,13 @@ namespace PRSDesktop
             }
         }
 
+        private BaseEditor? PropertyEditor_OnDefineEditor(object item, DynamicGridColumn column)
+        {
+            if (!string.Equals(column.ColumnName, "Elevated"))
+                return new NullEditor();
+            return null;
+        }
+
         private void ShowHelp(string slug)
         {
             Process.Start(new ProcessStartInfo("https://prs-software.com.au/wiki/index.php/" + slug) { UseShellExecute = true });

+ 1 - 9
prs.desktop/Dashboards/DigitalFormsDashboard.xaml.cs

@@ -1173,15 +1173,7 @@ namespace PRSDesktop
 
         private Entity? GetEntityForm<T>(Guid id) where T : Entity, IDigitalFormInstance, IRemotable, IPersistent, new()
         {
-            var columns = new Columns<T>(x => x.ID)
-                .Add(x => x.FormCompleted)
-                .Add(x => x.FormData)
-                .Add(x => x.Form.ID)
-                .Add(x => x.Form.Description);
-            if (typeof(T).HasInterface(typeof(IDigitalFormInstance<>)))
-            {
-                columns.Add("Parent.ID");
-            }
+            var columns = DynamicFormEditWindow.FormColumns<T>();
 
             return new Client<T>().Query(
                 new Filter<T>(x => x.ID).IsEqualTo(id),

+ 1 - 9
prs.desktop/Dashboards/QADashboard.xaml.cs

@@ -157,15 +157,7 @@ namespace PRSDesktop
 
         private Entity? GetEntityForm<T>(Guid id) where T : Entity, IDigitalFormInstance, IRemotable, IPersistent, new()
         {
-            var columns = new Columns<T>(x => x.ID)
-                .Add(x => x.FormCompleted)
-                .Add(x => x.FormData)
-                .Add(x => x.Form.ID)
-                .Add(x => x.Form.Description);
-            if (typeof(T).HasInterface(typeof(IDigitalFormInstance<>)))
-            {
-                columns.Add("Parent.ID");
-            }
+            var columns = DynamicFormEditWindow.FormColumns<T>();
 
             return new Client<T>().Query(
                 new Filter<T>(x => x.ID).IsEqualTo(id),

+ 1 - 12
prs.desktop/DockPanels/DigitalFormsDock.xaml.cs

@@ -255,22 +255,11 @@ namespace PRSDesktop
             var instanceID = row.Get<DigitalFormDockModel, Guid>(x => x.ID);
             var formID = row.Get<DigitalFormDockModel, Guid>(x => x.FormID);
             var formType = row.Get<DigitalFormDockModel, Type>(x => x.FormType);
-
-            var columns = Columns.Create<IDigitalFormInstance>(formType)
-                .Add<IDigitalFormInstance>(x => x.ID)
-                .Add<IDigitalFormInstance>(x => x.FormCompleted)
-                .Add<IDigitalFormInstance>(x => x.FormData)
-                .Add<IDigitalFormInstance>(x => x.Form.ID)
-                .Add<IDigitalFormInstance>(x => x.Form.Description);
-            if (formType.HasInterface(typeof(IDigitalFormInstance<>)))
-            {
-                columns.Add("Parent.ID");
-            }
             
             var formInstance = Client.Create(formType)
                 .Query(
                     Filter.Create<IDigitalFormInstance>(formType, x => x.ID).IsEqualTo(instanceID),
-                    columns)
+                    DynamicFormEditWindow.FormColumns(formType))
                 .Rows.FirstOrDefault()
                 ?.ToObject(formType) as IDigitalFormInstance;
 

+ 25 - 0
prs.desktop/MainWindow.xaml.cs

@@ -66,6 +66,7 @@ using PixelFormat = System.Drawing.Imaging.PixelFormat;
 using Role = Comal.Classes.Role;
 using SortDirection = InABox.Core.SortDirection;
 using ValidationResult = InABox.Clients.ValidationResult;
+using System.Diagnostics.CodeAnalysis;
 
 namespace PRSDesktop
 {
@@ -3500,11 +3501,35 @@ namespace PRSDesktop
                         SizeForm = SizeForm.Large,
                         MinWidth = 60
                     };
+
+                    if (Security.IsAllowed<CanDesignReports>())
+                    {
+                        var menu = new ContextMenu();
+                        menu.AddItem("Design Report", PRSDesktop.Resources.pencil, report.Item2, ReportButtonMenu_DesignReport_Click);
+                        button.ContextMenu = menu;
+                    }
+
                     button.Click += ReportMenu_Checked;
                     ReportsBar.Items.Add(button);
                 }
             }
         }
+        
+        private void ReportButtonMenu_DesignReport_Click(Guid templateID)
+        {
+            if (CurrentPanel is null)
+                return;
+
+            var template = new Client<ReportTemplate>().Load(new Filter<ReportTemplate>(x => x.ID).IsEqualTo(templateID)).FirstOrDefault();
+            if (template is null)
+            {
+                Logger.Send(LogType.Error, "", $"No Report Template with ID '{templateID}'");
+                MessageBox.Show("Report does not exist!");
+                return;
+            }
+
+            ReportUtils.DesignReport(template, CurrentPanel.DataModel(Selection.None));
+        }
 
         private void ReportMenu_Checked(object sender, RoutedEventArgs e)
         {

+ 3 - 3
prs.desktop/Panels/Employees/EmployeeGrid.cs

@@ -28,10 +28,10 @@ namespace PRSDesktop
             HiddenColumns.Add(x => x.Thumbnail.ID);
             HiddenColumns.Add(x => x.Thumbnail.FileName);
             ActionColumns.Add(new DynamicImageColumn<Employee>(this, x => x.Thumbnail, true) { Position = DynamicActionColumnPosition.Start });
-            ActionColumns.Add(new DynamicMenuColumn(MenuBuild) { Position = DynamicActionColumnPosition.Start });
+            ActionColumns.Add(new DynamicMenuColumn(MenuBuild) { Position = DynamicActionColumnPosition.End });
 
             AddButton("Activities", PRSDesktop.Resources.quality.AsBitmapImage(), ShowActivities);
-            AddButton("Role Forms", PRSDesktop.Resources.kanban.AsBitmapImage(), ShowRoleForms);
+            AddButton("Available Forms", PRSDesktop.Resources.kanban.AsBitmapImage(), ShowRoleForms);
 
             //ActionColumns.Add(new DynamicEmployeeStatusColumn<Employee>(x => x.InOut));
             //HiddenColumns.Add(x => x.InOut);
@@ -48,7 +48,7 @@ namespace PRSDesktop
             column.AddSeparator();
 
             column.AddItem("Activities", PRSDesktop.Resources.quality, ShowActivitiesWindow);
-            column.AddItem("Role Forms", PRSDesktop.Resources.kanban, ShowRoleFormsWindow);
+            column.AddItem("Available Forms", PRSDesktop.Resources.kanban, ShowRoleFormsWindow);
         }
 
         private void ShowActivitiesWindow(CoreRow row)

+ 3 - 6
prs.desktop/Panels/Jobs/JobFormGrid.cs

@@ -24,10 +24,6 @@ namespace PRSDesktop
         public JobFormGrid()
         {
             ActionColumns.Add(new DynamicActionColumn(PRSDesktop.Resources.pencil.AsBitmapImage(), EditAction));
-
-            HiddenColumns.Add(x => x.FormData);
-            HiddenColumns.Add(x => x.Form.ID);
-            HiddenColumns.Add(x => x.Parent.ID);
         }
 
         public Guid JobID { get; set; }
@@ -35,7 +31,8 @@ namespace PRSDesktop
         private bool EditAction(CoreRow? row)
         {
             if (row == null) return false;
-            if(DynamicFormEditWindow.EditDigitalForm(row.ToObject<JobForm>(), out var dataModel))
+
+            if(DynamicFormEditWindow.EditDigitalForm<JobForm>(row.Get<JobForm, Guid>(x => x.ID), out var dataModel))
             {
                 dataModel.Update(null);
                 return true;
@@ -43,7 +40,7 @@ namespace PRSDesktop
             return false;
         }
 
-        protected override void Reload(Filters<JobForm> criteria, Columns<JobForm> columns, ref SortOrder<JobForm> sort,
+        protected override void Reload(Filters<JobForm> criteria, Columns<JobForm> columns, ref SortOrder<JobForm>? sort,
             Action<CoreTable?, Exception?> action)
         {
             criteria.Add(new Filter<JobForm>(x => x.Parent.ID).IsEqualTo(JobID));