Skip to content

Commit

Permalink
support numerical search Add Search everywhere checkbox #1812
Browse files Browse the repository at this point in the history
  • Loading branch information
LiorBanai committed Aug 18, 2023
1 parent 4ac32bf commit c6e99f5
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
22 changes: 16 additions & 6 deletions Analogy.Common/DataTypes/FilterCriteriaObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class FilterCriteriaObject
public string[] Modules;
public string[] ExcludedModules;
public bool SearchEveryWhere { get; set; }
public List<string> Columns { get; set; }
public List<(string Field, bool Numerical)> Columns { get; set; }
public string TextInclude { get; set; }
public string TextExclude { get; set; }
public DateTime StartTime { get; set; }
Expand Down Expand Up @@ -229,27 +229,37 @@ public string GetSqlExpression(bool orLogLevel)

private string GetIncludeTextFilter(List<string> includeTexts, bool orOperationInInclude)
{
IEnumerable<string> GenerateSingleCombinationPerColumn(string field)
IEnumerable<string> GenerateSingleCombinationPerColumn(string field, bool numerical)
{
foreach (string text in includeTexts)
{
yield return $" {field} like '%{text}%'";
if (numerical)
{
if (!string.IsNullOrEmpty(text) && int.TryParse(text, out var number))
{
yield return $" {field} = {number}";
}
}
else
{
yield return $" {field} like '%{text}%'";
}
}
}

if (SearchEveryWhere)
{
var entries = Columns.Select(c =>
string.Join(orOperationInInclude ? " Or " : " and ",
GenerateSingleCombinationPerColumn(c)));
GenerateSingleCombinationPerColumn(c.Field, c.Numerical)));
var combined = string.Join(" Or ", entries);
return combined;
}
else
{
var includeTextFinal = orOperationInInclude
? string.Join(" Or ", GenerateSingleCombinationPerColumn("Text"))
: string.Join(" and ", GenerateSingleCombinationPerColumn("Text"));
? string.Join(" Or ", GenerateSingleCombinationPerColumn("Text", false))
: string.Join(" and ", GenerateSingleCombinationPerColumn("Text", false));
return includeTextFinal;
}
}
Expand Down
8 changes: 3 additions & 5 deletions Analogy.CommonControls/UserControls/LogMessagesUC.cs
Original file line number Diff line number Diff line change
Expand Up @@ -985,20 +985,18 @@ private void LogGrid_ColumnPositionChanged(object? sender, EventArgs e)
UpdateSearchColumn();
}

public void UpdateSearchColumn()
private void UpdateSearchColumn()
{
bool GetNumericalValue(GridColumn column) => column == gridColumnLineNumber || column == gridColumnProcessID || column == gridColumnThread;
_filterCriteria.Columns = logGrid.Columns.Where(c => c.Visible)
.Except(new List<GridColumn>()
{
gridColumnDate,
gridColumnTimeDiff,
gridColumnObject,
gridColumnLineNumber,
gridColumnProcessID,
gridColumnThread,
gridColumnRawText,
})
.Select(c => c.FieldName).ToList();
.Select(c => (c.FieldName, GetNumericalValue(c))).ToList();
}
private void GridView_ShownEditor(object sender, System.EventArgs e)
{
Expand Down

0 comments on commit c6e99f5

Please sign in to comment.