Add from-to-search to DeliveryAdminWindow

This commit is contained in:
2023-08-20 10:38:26 +02:00
parent ded7dbec06
commit 00078a1f4e
2 changed files with 28 additions and 1 deletions

View File

@ -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,

View File

@ -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)))