DynamicGridFilterGrid.cs 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using InABox.Core;
  2. using InABox.Wpf;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Diagnostics.CodeAnalysis;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. namespace InABox.DynamicGrid
  11. {
  12. public class DynamicGridFilterGrid : DynamicItemsListGrid<CoreFilterDefinition>
  13. {
  14. private CoreFilterDefinitions _filters;
  15. public CoreFilterDefinitions Filters
  16. {
  17. get => _filters;
  18. [MemberNotNull(nameof(_filters))]
  19. set
  20. {
  21. _filters = value;
  22. Items = value;
  23. var globalCount = _filters.Count(x => !x.Private);
  24. var privateI = 0;
  25. var globalI = 0;
  26. foreach(var filter in _filters)
  27. {
  28. if (filter.Private)
  29. {
  30. filter.Sequence = globalCount + privateI++;
  31. }
  32. else
  33. {
  34. filter.Sequence = globalI++;
  35. }
  36. }
  37. }
  38. }
  39. private Type FilterType;
  40. public DynamicGridFilterGrid(Type filterType)
  41. {
  42. Filters = new CoreFilterDefinitions();
  43. FilterType = filterType;
  44. OnCustomiseEditor += DynamicGridFilterGrid_OnCustomiseEditor;
  45. }
  46. protected override void DoReconfigure(DynamicGridOptions options)
  47. {
  48. base.DoReconfigure(options);
  49. options.RecordCount = true;
  50. options.AddRows = true;
  51. options.EditRows = true;
  52. options.DeleteRows = true;
  53. options.MultiSelect = true;
  54. }
  55. public override void SaveItem(CoreFilterDefinition item)
  56. {
  57. base.SaveItem(item);
  58. }
  59. private void DynamicGridFilterGrid_OnCustomiseEditor(IDynamicEditorForm sender, CoreFilterDefinition[]? items, DynamicGridColumn column, BaseEditor editor)
  60. {
  61. if(column.ColumnName == nameof(CoreFilterDefinition.Filter) && editor is FilterEditor filterEditor)
  62. {
  63. filterEditor.Type = FilterType;
  64. }
  65. }
  66. }
  67. }