12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- using System;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- 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);
-
- protected override Button[] CreateButtons(TextBox textbox)
- {
- var less = new Button();
- less.Content = "-";
- less.Width = 25;
- less.Click += (sender, args) =>
- {
- var converter = new TimeSpanToStringConverter(Definition?.Format);
- var time = converter.Deconvert(textbox.Text)
- .Subtract(TimeSpan.FromMinutes(15));
- if (time.Ticks < 0)
- time = TimeSpan.Zero;
- textbox.Text = converter.Convert(time);
- };
-
- var more = new Button();
- more.Content = "+";
- more.Width = 25;
- more.Click += (sender, args) =>
- {
- var converter = new TimeSpanToStringConverter(Definition?.Format);
- var time = converter.Deconvert(textbox.Text)
- .Subtract(TimeSpan.FromMinutes(15));
- if (time.Ticks < 0)
- time = TimeSpan.Zero;
- textbox.Text = converter.Convert(time);
- };
-
- return new Button[] { less, more };
- }
-
- 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)
- {
- }
- }
|