ServiceGrid.cs 3.2 KB

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