Enhance recipe search functionality with improved state management and search options

- Introduced new search options for recipes, allowing users to filter by title, tags, LoRA filename, and LoRA model name.
- Updated the RecipeRoutes and RecipeScanner to accommodate the new search options, enhancing the filtering capabilities.
- Refactored RecipeManager and RecipeSearchManager to utilize the hierarchical state structure for managing search parameters and pagination state.
- Improved the user interface by dynamically displaying relevant search options based on the current page context.
This commit is contained in:
Will Miao
2025-03-20 08:27:38 +08:00
parent 90f74018ae
commit caf5b1528c
7 changed files with 145 additions and 61 deletions

View File

@@ -66,18 +66,23 @@
<div class="options-section">
<h4>Search In:</h4>
<div class="search-option-tags">
<div class="search-option-tag active" data-option="filename">Filename</div>
{% if request.path == '/loras' or request.path == '/loras/recipes' %}
<div class="search-option-tag active" data-option="tags">Tags</div>
{% endif %}
<div class="search-option-tag active" data-option="modelname">
{% if request.path == '/loras/recipes' %}Recipe Name{% elif request.path == '/checkpoints' %}Checkpoint Name{% else %}Model Name{% endif %}
</div>
{% if request.path == '/loras/recipes' %}
<div class="search-option-tag active" data-option="loras">Included LoRAs</div>
<div class="search-option-tag active" data-option="title">Recipe Title</div>
<div class="search-option-tag active" data-option="tags">Tags</div>
<div class="search-option-tag active" data-option="loraName">LoRA Filename</div>
<div class="search-option-tag active" data-option="loraModel">LoRA Model Name</div>
{% elif request.path == '/checkpoints' %}
<div class="search-option-tag active" data-option="filename">Filename</div>
<div class="search-option-tag active" data-option="modelname">Checkpoint Name</div>
{% else %}
<!-- Default options for LoRAs page -->
<div class="search-option-tag active" data-option="filename">Filename</div>
<div class="search-option-tag active" data-option="modelname">Model Name</div>
<div class="search-option-tag active" data-option="tags">Tags</div>
{% endif %}
</div>
</div>
{% if request.path != '/loras/recipes' %}
<div class="options-section">
<div class="search-option-switch">
<span>Include Subfolders</span>
@@ -87,6 +92,7 @@
</label>
</div>
</div>
{% endif %}
</div>
<!-- Add filter panel -->