Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Label search fixes #4187

Merged
merged 1 commit into from
Sep 19, 2024
Merged

Conversation

HebaruSan
Copy link
Member

@HebaruSan HebaruSan commented Sep 19, 2024

Problems

  • In the GUI search details editing dropdown, there's a Labels field, but you can't type into it. It is only used to display labels that are already in your search via the Filters menu or clicking a link.
  • Label searches can't be negated with a - prefix like all other searches

It has worked this way since #3323 (and #3460 even partially explained why), but no one seemed to care.
Recently we finally got a report from Discord user Epsilon:

image

Cause

ModSearch stores strings for tags but ModuleLabels for labels. This was done because it's trivial to check whether a tag name matches a module by looking for it in the CkanModule.Tags property, but the label object stores which mods it contains rather than the other way around. To check label membership, you need the ModuleLabel object, so ModSearch stored them, which meant that when we translate it back into a search string, partially typed label searches could not be represented since there was no such label in the list of labels.

Changes

  • Now ModSearch.Labels is replaced with a string list ModSearch.LabelNames which can contain partial names while the user is typing
  • Now ModSearch.MatchesLabels is rewritten to handle looking up the labels from ModuleLabelList.ModuleLabels and scan them for matching names
  • Now the Labels field in the search dropdown is editable normally.
    label:Favorites matches all mods in the Favories label if it exists.
    -label:Favorites excludes all mods in the Favories label if it exists.
    label: by itself matches all mods with no labels.
    -label: by itself excludes all mods with no labels.
    label:partial matches nothing if there is no "partial" label.
    -label:partial matches all mods if there is no "partial" label.

@HebaruSan HebaruSan added Bug Something is not working as intended Enhancement New features or functionality GUI Issues affecting the interactive GUI labels Sep 19, 2024
@HebaruSan HebaruSan merged commit f88747a into KSP-CKAN:master Sep 19, 2024
3 checks passed
@HebaruSan HebaruSan deleted the fix/partial-label-search branch September 19, 2024 21:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Something is not working as intended Enhancement New features or functionality GUI Issues affecting the interactive GUI
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant