ServiceGrid.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. using Comal.Classes;
  2. using InABox.Clients;
  3. using InABox.Configuration;
  4. using InABox.Core;
  5. using InABox.DynamicGrid;
  6. using System;
  7. using System.Linq;
  8. using System.Threading;
  9. namespace PRSDesktop;
  10. public class ServiceGridSettings : IUserConfigurationSettings
  11. {
  12. public DynamicGridSelectedFilterSettings Filters { get; set; } = new();
  13. }
  14. public class ServiceGrid : DynamicDataGrid<Job>
  15. {
  16. private ServiceGridSettings _settings;
  17. public ServiceGrid()
  18. {
  19. _settings = new UserConfiguration<ServiceGridSettings>().Load();
  20. FilterComponent.SetSettings(_settings.Filters, false);
  21. FilterComponent.OnFiltersSelected += FilterComponent_OnFilterSelected;
  22. HiddenColumns.Add(x => x.ID);
  23. HiddenColumns.Add(x => x.JobNumber);
  24. HiddenColumns.Add(x => x.Name);
  25. HiddenColumns.Add(x => x.Customer.ID);
  26. HiddenColumns.Add(x => x.Customer.Code);
  27. HiddenColumns.Add(x => x.Customer.Name);
  28. HiddenColumns.Add(x => x.SiteAddress.Street);
  29. HiddenColumns.Add(x => x.SiteAddress.City);
  30. HiddenColumns.Add(x => x.SiteAddress.State);
  31. HiddenColumns.Add(x => x.SiteAddress.PostCode);
  32. HiddenColumns.Add(x => x.Account.ID);
  33. HiddenColumns.Add(x => x.Account.Code);
  34. HiddenColumns.Add(x => x.Account.Name);
  35. HiddenColumns.Add(x => x.Notes);
  36. HiddenColumns.Add(x => x.JobStatus.ID);
  37. HiddenColumns.Add(x => x.JobStatus.Active);
  38. ActionColumns.Add(new DynamicMapColumn<Job>(this, x => x.SiteAddress.Location));
  39. }
  40. protected override void DoReconfigure(DynamicGridOptions options)
  41. {
  42. base.DoReconfigure(options);
  43. options.RecordCount = true;
  44. options.SelectColumns = true;
  45. options.FilterRows = true;
  46. }
  47. protected override void CustomiseEditor(IDynamicEditorForm form, Job[] items, DynamicGridColumn column, BaseEditor editor)
  48. {
  49. base.CustomiseEditor(form, items, column, editor);
  50. var visible = editor.Page.IsNullOrWhiteSpace() || editor.Page.Equals("General") || editor.Page.Equals(Job.NotesPage);
  51. editor.Editable = editor.Editable.Combine(visible ? Editable.Enabled : Editable.Hidden);
  52. }
  53. public override DynamicEditorPages LoadEditorPages(Job item)
  54. {
  55. var pages = new DynamicEditorPages(Array.Empty<IDynamicEditorPage>());
  56. return pages;
  57. }
  58. public override Job CreateItem()
  59. {
  60. var result = base.CreateItem();
  61. result.JobType = JobType.Service;
  62. return result;
  63. }
  64. private void FilterComponent_OnFilterSelected(DynamicGridSelectedFilterSettings settings)
  65. {
  66. _settings.Filters = settings;
  67. _settings.SaveUser();
  68. }
  69. protected override void Reload(
  70. Filters<Job> criteria, Columns<Job> columns, ref SortOrder<Job>? sort,
  71. CancellationToken token, Action<CoreTable?, Exception?> action)
  72. {
  73. criteria.Add(new Filter<Job>(x => x.JobType).IsEqualTo(JobType.Service));
  74. base.Reload(criteria, columns, ref sort, token, action);
  75. }
  76. }