Pārlūkot izejas kodu

Renamed LookupEditor.Width to LookupEditor.LookupWidth (because it hid the property of BaseEditor)
Improved performance of DF Dashboard.

Kenric Nugteren 2 gadi atpakaļ
vecāks
revīzija
69e12b6da3

+ 1 - 1
prs.classes/Entities/GPSTracker/GPSTracker.cs

@@ -19,7 +19,7 @@ namespace Comal.Classes
         public GPSTrackerTypeLink Type { get; set; }
 
         [EditorSequence(4)]
-        [EnumLookupEditor(typeof(GPSTrackerDeviceType), Width = 150)]
+        [EnumLookupEditor(typeof(GPSTrackerDeviceType), LookupWidth = 150)]
         public GPSTrackerDeviceType DeviceType { get; set; }
 
         [EditorSequence(5)]

+ 1 - 1
prs.desktop/Configuration/DataBaseConfiguration.xaml

@@ -117,7 +117,7 @@
                     
                     <Button x:Name="CreateLink" DockPanel.Dock="Right" Content="Create Link" Padding="10,0"
                             Click="CreateLink_Click" Margin="5,0,0,0" />
-                    <CheckBox x:Name="IsActive" DockPanel.Dock="Right" Content="Active?" VerticalAlignment="Center"
+                    <CheckBox x:Name="IsActiveCheck" DockPanel.Dock="Right" Content="Active?" VerticalAlignment="Center"
                               Margin="5,0,5,0" Checked="IsActive_Checked" Unchecked="IsActive_Checked" />
 
                     <Label DockPanel.Dock="Left" Content="Name" VerticalContentAlignment="Center" Width="50" />

+ 3 - 3
prs.desktop/Configuration/DataBaseConfiguration.xaml.cs

@@ -188,7 +188,7 @@ namespace PRSDesktop
             else
                 CreateLink.Content = "Create Link";
 
-            IsActive.IsChecked = settings.IsActive;
+            IsActiveCheck.IsChecked = settings.IsActive;
             SplashSelect.Tag = settings.Logo;
             
             try
@@ -318,7 +318,7 @@ namespace PRSDesktop
             if (!_settings.ContainsKey(_current))
                 return;
             var settings = _settings[_current];
-            settings.IsActive = IsActive.IsChecked == true;
+            settings.IsActive = IsActiveCheck.IsChecked == true;
             settings.Logo = (byte[])SplashSelect.Tag;
             settings.ColorScheme = ColorScheme.SelectedColor.ToString();
             settings.DatabaseType = StandaloneOption.IsChecked == true ? DatabaseType.Standalone :
@@ -509,7 +509,7 @@ namespace PRSDesktop
                 var autodiscover = Serialization.Deserialize<AutoDiscoverySettings>(ServerResponse);
 
                 ProfileName.Text = autodiscover.Name;
-                IsActive.IsChecked = true;
+                IsActiveCheck.IsChecked = true;
                 SplashSelect.Tag = autodiscover.Logo;
 
                 StandaloneOption.IsChecked = false;

+ 1 - 1
prs.desktop/Dashboards/DashboardContainer.xaml

@@ -37,7 +37,7 @@
                                 Orientation="Horizontal"/>
                 </DockPanel>
             </Border>
-            <ContentControl Grid.Row="1" x:Name="Content"/>
+            <ContentControl Grid.Row="1" x:Name="ContentControl"/>
         </Grid>
     </Border>
 </UserControl>

+ 1 - 1
prs.desktop/Dashboards/DashboardContainer.xaml.cs

@@ -91,7 +91,7 @@ namespace PRSDesktop
 
             var container = new DashboardContainer(result, name);
 
-            container.Content.Content = result;
+            container.ContentControl.Content = result;
             container._panel = result;
 
             return container;

+ 53 - 42
prs.desktop/Dashboards/DigitalFormsDashboard.xaml.cs

@@ -850,40 +850,15 @@ namespace PRSDesktop
             if (IsEntityForm)
                 columns.Add("Processed");
             if (!string.IsNullOrWhiteSpace(jobLink))
-                columns.Add(jobLink + ".JobNumber");
+                columns.Add(jobLink + ".ID");
 
             return new KeyedQueryDef<T>(filter, columns, sort);
         }
 
         #endregion
 
-        private void RefreshData<TForm>()
-            where TForm : Entity, IRemotable, IPersistent, IDigitalFormInstance, new()
+        private void LoadDataIntoGrid(List<DigitalFormVariable> variables, List<QAQuestion> questions, CoreTable formData, List<string> additionalColumns, CoreTable? jobITPs)
         {
-            var formQuery = GetFormQuery<TForm>();
-
-            var queries = new List<IKeyedQueryDef>()
-                {
-                    new KeyedQueryDef<QAQuestion>(new Filter<QAQuestion>(x => x.Form.ID).IsEqualTo(Form!.ID)),
-                    new KeyedQueryDef<DigitalFormVariable>(
-                        new Filter<DigitalFormVariable>(x => x.Form.ID).IsEqualTo(Form.ID),
-                        null,
-                        new SortOrder<DigitalFormVariable>(x => x.Sequence)),
-                    formQuery
-                };
-            if (ParentType == typeof(JobITPForm))
-            {
-                queries.Add(new KeyedQueryDef<JobITP>(
-                    new Filter<JobITP>(x => x.ID).InQuery((formQuery.Filter as Filter<JobITPForm>)!, x => x.Parent.ID),
-                    new Columns<JobITP>(x => x.ID, x => x.Job.JobNumber)));
-            }
-
-            var results = Client.QueryMultiple(queries);
-
-            var questions = results.Get<QAQuestion>();
-            var variables = results.Get<DigitalFormVariable>().ToList<DigitalFormVariable>();
-            var formData = results.Get(formQuery.Key).Rows;
-
             var data = new DataTable();
             data.Columns.Add("ID", typeof(Guid));
             data.Columns.Add("Form_ID", typeof(Guid));
@@ -920,12 +895,12 @@ namespace PRSDesktop
                     data.Columns.Add(code, typeof(string));
                 }
             }
-            else if (questions.Rows.Any())
+            else if (questions.Any())
             {
-                Questions = questions.ToList<QAQuestion>();
+                Questions = questions;
                 Progress.SetMessage("Loading Checks");
                 QAGrid.Clear();
-                QAGrid.LoadChecks(Form.Description, Questions, new Dictionary<Guid, object>());
+                QAGrid.LoadChecks(Form!.Description, Questions, new Dictionary<Guid, object>());
                 QAGrid.CollapseMargins();
 
                 var i = 1;
@@ -942,7 +917,7 @@ namespace PRSDesktop
                 }
             }
 
-            foreach (var row in formData)
+            foreach (var row in formData.Rows)
             {
                 var form = (row.ToObject(FormType!) as IDigitalFormInstance)!;
                 if (!string.IsNullOrWhiteSpace(form.FormData))
@@ -958,14 +933,11 @@ namespace PRSDesktop
                     dataRow["FormData"] = form.FormData;
 
                     var desc = new List<string>();
-                    foreach (var col in formQuery.Columns!.ColumnNames().Where(x => x != "ID"))
+                    foreach (var col in additionalColumns)
                     {
-                        if (col.StartsWith("Parent."))
-                        {
-                            var val = row[col];
-                            if (val != null && val is not Guid)
-                                desc.Add(val.ToString() ?? "");
-                        }
+                        var val = row[col];
+                        if (val != null && val is not Guid)
+                            desc.Add(val.ToString() ?? "");
                     }
 
                     dataRow["Description"] = string.Join(" : ", desc);
@@ -978,8 +950,12 @@ namespace PRSDesktop
 
                     if (ParentType == typeof(JobITP))
                     {
-                        var jobITP = results.Get<JobITP>().Rows.FirstOrDefault(x => x.Get<JobITP, Guid>(x => x.ID) == form.ParentID());
-                        dataRow["Job No"] = jobITP?.Get<JobITP, string>(x => x.Job.JobNumber);
+                        var jobITP = jobITPs!.Rows.FirstOrDefault(x => x.Get<JobITP, Guid>(x => x.ID) == form.ParentID());
+                        if(jobITP is not null)
+                        {
+                            var jobID = jobITP.Get<JobITP, Guid>(x => x.Job.ID);
+                            dataRow["Job No"] = Jobs.Where(x => x.ID == jobID).FirstOrDefault()?.JobNumber;
+                        }
                     }
 
                     if (pColumns != null)
@@ -999,10 +975,11 @@ namespace PRSDesktop
                         foreach (var key in dict.Keys)
                         {
                             var variable = variables.FirstOrDefault(x => string.Equals(key, x.Code));
+                            var type = variable?.FieldType();
                             if (variable != null)
                             {
                                 var value = variable.ParseValue(dict[key]);
-                                object format = variable.FormatValue(value);
+                                var format = variable.FormatValue(value);
                                 var sKey = key.Replace("/", " ");
                                 if (data.Columns.Contains(sKey))
                                 {
@@ -1030,11 +1007,45 @@ namespace PRSDesktop
             }
             DataGrid.ItemsSource = data;
 
-            IsQAForm = !variables.Any() && questions.Rows.Any();
+            IsQAForm = !variables.Any() && questions.Any();
             QAGrid.Visibility = IsQAForm ? Visibility.Visible : Visibility.Collapsed;
             DataGrid.Visibility = Visibility.Visible;
         }
 
+        private void RefreshData<TForm>()
+            where TForm : Entity, IRemotable, IPersistent, IDigitalFormInstance, new()
+        {
+            var formQuery = GetFormQuery<TForm>();
+
+            var queries = new List<IKeyedQueryDef>()
+                {
+                    new KeyedQueryDef<QAQuestion>(new Filter<QAQuestion>(x => x.Form.ID).IsEqualTo(Form!.ID)),
+                    new KeyedQueryDef<DigitalFormVariable>(
+                        new Filter<DigitalFormVariable>(x => x.Form.ID).IsEqualTo(Form.ID),
+                        null,
+                        new SortOrder<DigitalFormVariable>(x => x.Sequence)),
+                    formQuery
+                };
+            if (ParentType == typeof(JobITPForm))
+            {
+                queries.Add(new KeyedQueryDef<JobITP>(
+                    new Filter<JobITP>(x => x.ID).InQuery((formQuery.Filter as Filter<JobITPForm>)!, x => x.Parent.ID),
+                    new Columns<JobITP>(x => x.ID, x => x.Job.JobNumber)));
+            }
+
+            var results = Client.QueryMultiple(queries);
+
+            var questions = results.Get<QAQuestion>().ToList<QAQuestion>();
+            var variables = results.Get<DigitalFormVariable>().ToList<DigitalFormVariable>();
+            var formData = results.Get(formQuery.Key);
+
+            LoadDataIntoGrid(
+                variables, questions,
+                formData,
+                formQuery.Columns!.ColumnNames().Where(x => x != "ID" && x.StartsWith("Parent.")).ToList(),
+                ParentType == typeof(JobITP) ? results.Get<JobITP>() : null);
+        }
+
         public void Refresh()
         {
             Progress.Show("Refreshing");

+ 1 - 2
prs.desktop/Grids/AssignmentGrid.cs

@@ -21,8 +21,7 @@ namespace PRSDesktop
 
             if (name.Equals("EmployeeLink.ID"))
             {
-                var activity = editor.FindEditor("ActivityLink.ID") as ILookupEditorControl;
-                if (activity != null)
+                if (editor.FindEditor("ActivityLink.ID") is ILookupEditorControl activity)
                     DefineLookups(activity, items);
             }
             else if (name.Equals("JobLink.ID"))