JobDesignGrid.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Windows;
  3. using System.Windows.Media.Imaging;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. using InABox.DynamicGrid;
  7. using InABox.WPF;
  8. using InABox.Wpf;
  9. using PRSDesktop.Panels.Jobs;
  10. namespace PRSDesktop
  11. {
  12. internal class JobDesignGrid : DynamicDataGrid<Setout>, IMasterDetailControl<Job,Setout>
  13. {
  14. public Job? Master { get; set; }
  15. public Filter<Setout> MasterDetailFilter => (Master?.ID ?? Guid.Empty) != Guid.Empty
  16. ? new Filter<Setout>(x => x.JobLink.ID).IsEqualTo(Master.ID)
  17. : new Filter<Setout>().None();
  18. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  19. {
  20. base.DoReconfigure(options);
  21. options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns, DynamicGridOption.FilterRows, DynamicGridOption.ImportData);
  22. }
  23. protected override void DoImport()
  24. {
  25. var window = new JobDesignImportWindow();
  26. if (window.ShowDialog() == true)
  27. Refresh(false,true);
  28. }
  29. protected override void Reload(Filters<Setout> criteria, Columns<Setout> columns, ref SortOrder<Setout>? sort, Action<CoreTable?, Exception?> action)
  30. {
  31. criteria.Add(MasterDetailFilter);
  32. sort = new SortOrder<Setout>(x => x.Number, SortDirection.Descending);
  33. base.Reload(criteria, columns, ref sort, action);
  34. }
  35. protected override bool CanCreateItems()
  36. {
  37. return base.CanCreateItems() && ((Master?.ID ?? Guid.Empty) != Guid.Empty);
  38. }
  39. public override Setout CreateItem()
  40. {
  41. var setout = base.CreateItem();
  42. setout.JobLink.ID = Master?.ID ?? Guid.Empty;
  43. setout.JobLink.Synchronise(Master);
  44. return setout;
  45. }
  46. }
  47. }