diff --git a/Elwig/Helpers/Utils.cs b/Elwig/Helpers/Utils.cs index f6b91e1..6eff9f3 100644 --- a/Elwig/Helpers/Utils.cs +++ b/Elwig/Helpers/Utils.cs @@ -23,6 +23,7 @@ namespace Elwig.Helpers { public static readonly Regex SerialRegex = GeneratedSerialRegex(); public static readonly Regex TcpRegex = GeneratedTcpRegex(); public static readonly Regex PartialDateRegex = GeneratedPartialDateRegex(); + public static readonly Regex FromToRegex = GeneratedFromToRegex(); [GeneratedRegex("^serial://([A-Za-z0-9]+):([0-9]+)(,([5-9]),([NOEMSnoems]),(0|1|1\\.5|2|))?$", RegexOptions.Compiled)] private static partial Regex GeneratedSerialRegex(); @@ -33,6 +34,9 @@ namespace Elwig.Helpers { [GeneratedRegex(@"^(0?[1-9]|[12][0-9]|3[01])\.(0?[1-9]|1[0-2])\.$", RegexOptions.Compiled)] private static partial Regex GeneratedPartialDateRegex(); + [GeneratedRegex(@"^([0-9]+([\.,][0-9]+)?)?-([0-9]+([\.,][0-9]+)?)?$", RegexOptions.Compiled)] + private static partial Regex GeneratedFromToRegex(); + private static readonly ushort[] Crc16ModbusTable = { 0x0000, 0xC0C1, 0xC181, 0x0140, 0xC301, 0x03C0, 0x0280, 0xC241, 0xC601, 0x06C0, 0x0780, 0xC741, 0x0500, 0xC5C1, 0xC481, 0x0440, diff --git a/Elwig/Windows/DeliveryAdminWindow.xaml.cs b/Elwig/Windows/DeliveryAdminWindow.xaml.cs index 9e7e920..ac38ba2 100644 --- a/Elwig/Windows/DeliveryAdminWindow.xaml.cs +++ b/Elwig/Windows/DeliveryAdminWindow.xaml.cs @@ -207,6 +207,29 @@ namespace Elwig.Windows { filter.RemoveAt(i--); } if (e.Length == 1) filter.RemoveAt(i--); + } else if (e.Length > 1 && Utils.FromToRegex.IsMatch(e)) { + var parts = e.Split("-"); + double? from = (parts[0].Length > 0) ? double.Parse(parts[0].Replace(".", ",")) : null; + double? to = (parts[1].Length > 0) ? double.Parse(parts[1].Replace(".", ",")) : null; + switch ((from, to)) { + case (<= 30, <= 30): + case (<= 30, null): + case (null, <= 30): + filterKmwGt = from ?? 0; + filterKmwLt = to ?? 0; + break; + case (>= 1900, >= 1900): + case (>= 1900, null): + case (null, >= 1900): + filterYearGt = (int)(from ?? 0); + filterYearLt = (int)(to ?? -1) + 1; + break; + case (_, _): + filterOeGt = from ?? 0; + filterOeLt = to ?? 0; + break; + } + filter.RemoveAt(i--); } else if (DateOnly.TryParse(e, out var date)) { filterDate.Add($"{date:yyyy-MM-dd}"); filter.RemoveAt(i--); @@ -279,7 +302,7 @@ namespace Elwig.Windows { } - if (n > 0 && n <= 200) { + if (n > 0 && (n <= 200 || TodayOnlyInput.IsChecked == true)) { var parts = (await deliveryParts.ToListAsync()); var groups = parts .GroupBy(p => string.Join("/", p.Attributes.Select(a => a.Name)))