123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Media.Imaging;
- using InABox.Core;
- using InABox.WPF;
- using Microsoft.Xaml.Behaviors;
- using Syncfusion.Data;
- using Syncfusion.UI.Xaml.Grid;
- using Syncfusion.UI.Xaml.Grid.Cells;
- namespace InABox.DynamicGrid;
- public class DynamicGridDurationColumn<TEntity> : DynamicGridMaskColumn<TEntity,DurationEditor>
- where TEntity : BaseObject
- {
- protected override Behavior CreateBehaviour() =>
- new TextBoxTimeSpanMaskBehavior(Definition?.Format);
- protected override IValueConverter CreateConverter() =>
- new TimeSpanToStringConverter(Definition?.Format);
-
- private readonly BitmapImage _less = Wpf.Resources.downarrow.AsBitmapImage(20,20);
- private readonly BitmapImage _more = Wpf.Resources.uparrow.AsBitmapImage(20,20);
-
- protected override DynamicGridMaskColumnButton[]? CreateButtons()
- {
- return new DynamicGridMaskColumnButton[]
- {
- new DynamicGridMaskColumnButton()
- {
- Image = _less,
- Clicked = (sender,args) =>
- {
- if (args.Value is TimeSpan time)
- {
- time = time.Subtract(TimeSpan.FromMinutes(15));
- if (time.Ticks < 0)
- time = TimeSpan.Zero;
- args.Value = time;
- }
- },
- Position = DynamicGridMaskColumnButtonPosition.Left
- },
- new DynamicGridMaskColumnButton()
- {
- Image = _more,
- Clicked = (sender,args) =>
- {
- if (args.Value is TimeSpan time)
- {
- time = time.Add(TimeSpan.FromMinutes(15));
- args.Value = time;
- }
- },
- Position = DynamicGridMaskColumnButtonPosition.Right
- }
- };
- }
-
- public override GridSummaryColumn? Summary()
- {
-
- if (Definition == null || Definition.Editor.Summary == Core.Summary.None)
- return null;
-
- var result = new GridSummaryColumn
- {
- Name = MappingName,
- Format = "{" + (Definition.Editor.Summary == Core.Summary.Sum
- ? "Sum" + (string.IsNullOrWhiteSpace(Definition.Format)
- ? ""
- : ":" + Definition.Format.Replace(":", "':'"))
- : Definition.Editor.Summary == Core.Summary.Count
- ? "Count"
- : "") + "}",
- MappingName = MappingName,
- SummaryType = Definition.Editor.Summary == Core.Summary.Sum
- ? SummaryType.Custom
- : SummaryType.CountAggregate,
- CustomAggregate = new DynamicGridDurationAggregate()
- };
- return result;
- }
- public DynamicGridDurationColumn(DynamicGridColumn definition) : base(definition)
- {
- }
- }
|