Compare commits
30 Commits
B2026-069
...
Development
| Author | SHA1 | Date | |
|---|---|---|---|
| 3bb8fff3a1 | |||
| 694bc0ead4 | |||
| cfc324d31e | |||
| 43b63e2843 | |||
| f2ec510a70 | |||
| bc9407f52f | |||
| 954cc5918f | |||
| 4ef16e7856 | |||
| 1eb3c3e725 | |||
| a89c2d3d22 | |||
| 914837a5a2 | |||
| aa7e0528f8 | |||
| 57bd8d569e | |||
| b49d8871a2 | |||
| b90d419bc5 | |||
| be744b40a3 | |||
| 780ce657ca | |||
| 464be0f803 | |||
| 58a6cb9a24 | |||
| 9bf7b2ffde | |||
| 99fe567e78 | |||
| 2261c8f0f5 | |||
| f93b16fc52 | |||
| 7c3a43749c | |||
| ecec7b9f1a | |||
| 1aca7335f7 | |||
| ba5aee6640 | |||
| 7a3a07b0da | |||
| 05ab48cdc5 | |||
| fd51c209a3 |
@@ -2016,35 +2016,16 @@ namespace Volian.Controls.Library
|
||||
{
|
||||
ReportTitle = string.Format("Search for '{0}'", TextSearchString);
|
||||
|
||||
// C2020-009: Search - Allow search 'By Word'.
|
||||
string byWordPrefix = string.Empty;
|
||||
string byWordSuffix = string.Empty;
|
||||
if (cbxByWord.Checked)
|
||||
{
|
||||
// Generate a prefix & suffix to be used in the sql query around the search string.
|
||||
// If the search string starts (prefix)/ends(suffix) with a number, then use an expression that
|
||||
// does not allow the preceding/following text to have a number, '.', letter or other rtf
|
||||
// commands. If the search string starts/ends with a letter, then use an expression that does not
|
||||
// find the preceding/following text that is text, i.e. a letter.
|
||||
if (Regex.IsMatch(TextSearchString, @"^[\d\.]")) // starts with a number or '.' decimal pt
|
||||
{
|
||||
byWordPrefix = @"[^0-9a-zA-Z.vbpi:\\-]";
|
||||
}
|
||||
else if (Regex.IsMatch(TextSearchString, @"^[a-zA-Z]")) // starts with a letter
|
||||
{
|
||||
byWordPrefix = @"[^a-zA-Z]";
|
||||
}
|
||||
if (Regex.IsMatch(TextSearchString, @"[\d\.]$")) // ends with a number or decimal
|
||||
{
|
||||
byWordSuffix = @"[^0-9a-zA-Z.vbpi:\\-]";
|
||||
}
|
||||
else if (Regex.IsMatch(TextSearchString, @"[a-zA-Z]$")) // ends with a letter
|
||||
{
|
||||
byWordSuffix = @"[^a-zA-Z]";
|
||||
}
|
||||
byWordPrefix = GetByWordSettings(TextSearchString, true);
|
||||
byWordSuffix = GetByWordSettings(TextSearchString, false);
|
||||
}
|
||||
|
||||
SearchString = TextSearchString;
|
||||
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
|
||||
|
||||
SearchResults = ItemInfoList.GetListFromTextSearch(DVISearchList, TypeSearchList, TextSearchString /*.Replace(@"\",@"\u9586?")*/, cbxBooleanTxtSrch.Checked ? 2 : cbxCaseSensitive.Checked ? 1 : 0, cbxProcSectSrch.Checked ? 1 : 0, cbxIncROTextSrch.Checked ? ItemSearchIncludeLinks.Value : ItemSearchIncludeLinks.Nothing, includeRTFformat, includeSpecialChars, unitPrefix, byWordPrefix, byWordSuffix);
|
||||
|
||||
cmbResultsStyleIndex = 3; // display step text in results
|
||||
@@ -2078,8 +2059,8 @@ namespace Volian.Controls.Library
|
||||
|
||||
if (cbxFndUnLnkROVals.Enabled && cbxFndUnLnkROVals.Checked)
|
||||
{
|
||||
// B2022-031 - added a cbxProcSectSrch to filter out procedure and section titles from global search results.
|
||||
SearchResults = ItemInfoList.GetListFromTextSearch(DVISearchList, TypeSearchList, ROSearchList, cbxBooleanTxtSrch.Checked ? 2 : cbxCaseSensitive.Checked ? 1 : 0, cbxProcSectSrch.Checked ? 1 : 0, ItemSearchIncludeLinks.Nothing, includeRTFformat, includeSpecialChars, unitPrefix, string.Empty, string.Empty);
|
||||
|
||||
SearchResults = ItemInfoList.GetListFromTextSearch(DVISearchList, TypeSearchList, ROSearchList, cbxBooleanTxtSrch.Checked ? 2 : cbxCaseSensitive.Checked ? 1 : 0, cbxProcSectSrch.Checked ? 1 : 0, ItemSearchIncludeLinks.Nothing, includeRTFformat, includeSpecialChars, unitPrefix, GetByWordSettings(ROSearchList, true), GetByWordSettings(ROSearchList, false));
|
||||
cmbResultsStyleIndex = 3; // display step text in results
|
||||
}
|
||||
else
|
||||
@@ -2189,7 +2170,52 @@ namespace Volian.Controls.Library
|
||||
}
|
||||
OnSearchComplete(new DisplaySearchEventArgs(TimeSpan.FromTicks(DateTime.Now.Ticks - start.Ticks)));
|
||||
}
|
||||
private string GetByWordSettings(string ss, bool checkstart)
|
||||
{
|
||||
|
||||
// C2020-009: Search - Allow search 'By Word'.
|
||||
|
||||
// // Generate a prefix & suffix to be used in the sql query around the search string.
|
||||
// // If the search string starts (prefix)/ends(suffix) with a number, then use an expression that
|
||||
// // does not allow the preceding/following text to have a number, '.', letter or other rtf
|
||||
// // commands. If the search string starts/ends with a letter, then use an expression that does not
|
||||
// // find the preceding/following text that is text, i.e. a letter.
|
||||
|
||||
if (ss.Length > 0)
|
||||
{
|
||||
//checking start
|
||||
if (checkstart)
|
||||
{
|
||||
// starts with a number or '.' decimal pt
|
||||
if (char.IsNumber(ss, 0) || ss[0] == '.')
|
||||
{
|
||||
return @"[^0-9a-zA-Z.vbpi:\\-]";
|
||||
}
|
||||
// starts with a letter
|
||||
else if (char.IsLetter(ss, 0))
|
||||
{
|
||||
return @"[^a-zA-Z]";
|
||||
}
|
||||
}
|
||||
//checking end
|
||||
else
|
||||
{
|
||||
// ends with a number or '.' decimal pt
|
||||
if (char.IsNumber(ss, ss.Length - 1) || ss[ss.Length - 1] == '.')
|
||||
{
|
||||
return @"[^0-9a-zA-Z.vbpi:\\-]";
|
||||
}
|
||||
// ends with a letter
|
||||
else if (char.IsLetter(ss, ss.Length - 1))
|
||||
{
|
||||
return @"[^a-zA-Z]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//default
|
||||
return string.Empty;
|
||||
}
|
||||
private void ClearResults() // B2021-103 if no results when RNO only, clear results list. (moved from btnSearch_Click)
|
||||
{
|
||||
if (tabSearchTypes.SelectedTab != tabSearchTypes.Tabs[4])
|
||||
|
||||
Reference in New Issue
Block a user