mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-02-12 11:04:38 +01:00
Improve Search (#1305)
Co-authored-by: goat <16760685+goaaats@users.noreply.github.com>
This commit is contained in:
parent
c37d8a15fd
commit
ead207fc67
2 changed files with 283 additions and 9 deletions
|
|
@ -536,7 +536,8 @@ internal class PluginInstallerWindow : Window, IDisposable
|
|||
"###XlPluginInstaller_Search",
|
||||
Locs.Header_SearchPlaceholder,
|
||||
ref this.searchText,
|
||||
100);
|
||||
100,
|
||||
ImGuiInputTextFlags.AutoSelectAll);
|
||||
|
||||
ImGui.SameLine();
|
||||
ImGui.SetCursorPosY(downShift);
|
||||
|
|
@ -981,7 +982,7 @@ internal class PluginInstallerWindow : Window, IDisposable
|
|||
changelogs = this.dalamudChangelogManager.Changelogs.OfType<PluginChangelogEntry>();
|
||||
}
|
||||
|
||||
var sortedChangelogs = changelogs?.Where(x => this.searchText.IsNullOrWhitespace() || x.Title.ToLowerInvariant().Contains(this.searchText.ToLowerInvariant()))
|
||||
var sortedChangelogs = changelogs?.Where(x => this.searchText.IsNullOrWhitespace() || new FuzzyMatcher(this.searchText.ToLowerInvariant(), MatchMode.FuzzyParts).Matches(x.Title.ToLowerInvariant()) > 0)
|
||||
.OrderByDescending(x => x.Date).ToList();
|
||||
|
||||
if (sortedChangelogs == null || !sortedChangelogs.Any())
|
||||
|
|
@ -2889,8 +2890,8 @@ internal class PluginInstallerWindow : Window, IDisposable
|
|||
|
||||
private bool IsManifestFiltered(IPluginManifest manifest)
|
||||
{
|
||||
var searchString = this.searchText.ToLowerInvariant();
|
||||
var hasSearchString = !string.IsNullOrWhiteSpace(searchString);
|
||||
var matcher = new FuzzyMatcher(this.searchText.ToLowerInvariant(), MatchMode.FuzzyParts);
|
||||
var hasSearchString = !string.IsNullOrWhiteSpace(this.searchText);
|
||||
var oldApi = manifest.DalamudApiLevel < PluginManager.DalamudApiLevel;
|
||||
var installed = this.IsManifestInstalled(manifest).IsInstalled;
|
||||
|
||||
|
|
@ -2898,11 +2899,11 @@ internal class PluginInstallerWindow : Window, IDisposable
|
|||
return true;
|
||||
|
||||
return hasSearchString && !(
|
||||
(!manifest.Name.IsNullOrEmpty() && manifest.Name.ToLowerInvariant().Contains(searchString)) ||
|
||||
(!manifest.InternalName.IsNullOrEmpty() && manifest.InternalName.ToLowerInvariant().Contains(searchString)) ||
|
||||
(!manifest.Author.IsNullOrEmpty() && manifest.Author.Equals(this.searchText, StringComparison.InvariantCultureIgnoreCase)) ||
|
||||
(!manifest.Punchline.IsNullOrEmpty() && manifest.Punchline.ToLowerInvariant().Contains(searchString)) ||
|
||||
(manifest.Tags != null && manifest.Tags.Any(tag => tag.ToLowerInvariant().Contains(searchString))));
|
||||
(!manifest.Name.IsNullOrEmpty() && matcher.Matches(manifest.Name.ToLowerInvariant()) > 0) ||
|
||||
(!manifest.InternalName.IsNullOrEmpty() && matcher.Matches(manifest.InternalName.ToLowerInvariant()) > 0) ||
|
||||
(!manifest.Author.IsNullOrEmpty() && matcher.Matches(manifest.Author.ToLowerInvariant()) > 0) ||
|
||||
// (!manifest.Punchline.IsNullOrEmpty() && matcher.Matches(manifest.Punchline.ToLowerInvariant()) > 0) || // Removed because fuzzy match gets a little too excited with lots of random words
|
||||
(manifest.Tags != null && matcher.MatchesAny(manifest.Tags.Select(term => term.ToLowerInvariant()).ToArray()) > 0));
|
||||
}
|
||||
|
||||
private (bool IsInstalled, LocalPlugin Plugin) IsManifestInstalled(IPluginManifest? manifest)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue