Skip to content

Commit 41c8081

Browse files
author
David Khristepher Santos
committed
Date search fix
Prevent clicking on query input to edit from dismissing it
1 parent 4f857fd commit 41c8081

2 files changed

Lines changed: 23 additions & 4 deletions

File tree

Diffusion.Database/QueryBuilder.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public static partial class QueryBuilder
1717
private static readonly Regex FolderRegex = new Regex("\\bfolder:\\s*(?:\"(?<value>[^\"]+)\"|(?<value>\\S+))", RegexOptions.Compiled | RegexOptions.IgnoreCase);
1818
private static readonly Regex PathRegex = new Regex("\\bpath:\\s*(?:(?<criteria>starts with|contains|ends with)\\s+)?(?:\"(?<value>[^\"]+)\"|(?<value>\\S+))", RegexOptions.Compiled | RegexOptions.IgnoreCase);
1919

20-
private static readonly Regex DateRegex = new Regex("\\bdate:\\s*(?:(?<prep1>between|before|since|from)\\s+)?(?<date1>today|yesterday|\\d+ day(?:s)? ago|(?:a|1|2|3) week(?:s)? ago|(?:a|\\d{1,2}) month(?:s)? ago|\\d{1,2}[-/]\\d{1,2}[-/]\\d{4}|\\d{4}[-/]\\d{1,2}[-/]\\d{1,2})(?:\\s+(?<prep2>and|up to|to)\\s+(?<date2>today|yesterday|\\d+ day(?:s)? ago|(?:a|1|2|3) week(?:s)? ago|(?:a|\\d{1,2}) month(?:s)? ago|\\d{1,2}[-/]\\d{1,2}[-/]\\d{4}|\\d{4}[-/]\\d{1,2}[-/]\\d{1,2}))?\\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
20+
private static readonly Regex DateRegex = new Regex("\\bdate:\\s*(?:(?<prep1>between|before|since|from)\\s+)?(?<date1>today|yesterday|\\d+ day(?:s)? ago|(?:a|1|2|3) week(?:s)? ago|(?:a|\\d{1,2}) month(?:s)? ago|\\d{1,2}[-/]\\d{1,2}[-/]\\d{4}|\\d{4}[-/]\\d{1,2}[-/]\\d{1,2})(?:\\s+(?<prep2>and|up to|to|-)\\s+(?<date2>today|yesterday|\\d+ day(?:s)? ago|(?:a|1|2|3) week(?:s)? ago|(?:a|\\d{1,2}) month(?:s)? ago|\\d{1,2}[-/]\\d{1,2}[-/]\\d{4}|\\d{4}[-/]\\d{1,2}[-/]\\d{1,2}))?\\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
2121

2222
private static readonly Regex SeedRegex = new Regex("\\bseed:\\s*(?<start>[0-9?*]+)(?:\\s*-\\s*(?<end>\\S+))?", RegexOptions.Compiled | RegexOptions.IgnoreCase);
2323
private static readonly Regex StepsRegex = new Regex("\\bsteps:\\s*(\\d+)(?:\\|(\\d+))*\\b", RegexOptions.Compiled | RegexOptions.IgnoreCase);
@@ -818,8 +818,8 @@ private static void ParseDate(ref string prompt, List<KeyValuePair<string, objec
818818
var date1 = match.Groups["date1"].Value;
819819
var date2 = match.Groups["date2"].Value;
820820

821-
var prep1 = match.Groups["prep1"].Value;
822-
var prep2 = match.Groups["prep2"].Value;
821+
var prep1Match = match.Groups["prep1"];
822+
var prep2Match = match.Groups["prep2"];
823823

824824
var date = ParseDate(date1);
825825

@@ -828,8 +828,13 @@ private static void ParseDate(ref string prompt, List<KeyValuePair<string, objec
828828
var start = date.Date;
829829
var end = date.Date;
830830

831-
if (!string.IsNullOrEmpty(prep1))
831+
var prep2 = prep2Match.Value;
832+
833+
834+
if (prep1Match.Success)
832835
{
836+
var prep1 = prep1Match.Value;
837+
833838
switch (prep1.ToLower())
834839
{
835840
case "between":
@@ -879,6 +884,19 @@ private static void ParseDate(ref string prompt, List<KeyValuePair<string, objec
879884
break;
880885
}
881886
}
887+
else
888+
{
889+
if (!string.IsNullOrEmpty(prep2) && prep2.ToLower() == "-")
890+
{
891+
if (!string.IsNullOrEmpty(date2))
892+
{
893+
var endDate = ParseDate(date2);
894+
end = endDate.Date;
895+
}
896+
else
897+
throw new Exception("Expected: end date");
898+
}
899+
}
882900

883901
end = end.AddDays(1).Subtract(TimeSpan.FromSeconds(1));
884902

Diffusion.Toolkit/MainWindow.xaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,7 @@ public MainWindow()
161161

162162
PreviewMouseDown += (sender, args) =>
163163
{
164+
if (args.Source == QueryInput) return;
164165
QueryPopup.IsOpen = false;
165166
};
166167

0 commit comments

Comments
 (0)