DynamicGridSummary.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. using InABox.Core;
  2. using Org.BouncyCastle.Asn1.X509.Qualified;
  3. using Syncfusion.UI.Xaml.Grid;
  4. using System;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using System.ComponentModel;
  8. using System.Data;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using System.Windows;
  13. namespace InABox.DynamicGrid;
  14. public interface IDynamicGridSummary
  15. {
  16. }
  17. public class DynamicGridCountSummary : IDynamicGridSummary
  18. {
  19. }
  20. public abstract class DynamicGridSumSummary(string format) : IDynamicGridSummary
  21. {
  22. public string Format { get; set; } = format;
  23. public abstract Type AggregateType { get; }
  24. }
  25. public class DynamicGridSumSummary<TAggregate>(string format) : DynamicGridSumSummary(format)
  26. {
  27. public string Format { get; set; } = format;
  28. public override Type AggregateType => typeof(TAggregate);
  29. }
  30. public class DynamicGridCustomSummary(DynamicGridCustomSummary.AggregateFunc aggregate, string format) : IDynamicGridSummary
  31. {
  32. public delegate object AggregateFunc(IEnumerable<CoreRow> rows);
  33. public AggregateFunc Aggregate { get; set; } = aggregate;
  34. public string Format { get; set; } = format;
  35. }
  36. public class DynamicGridTemplateSummary(Func<FrameworkElement?> template) : IDynamicGridSummary
  37. {
  38. public Func<FrameworkElement?> Template { get; set; } = template;
  39. }