mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 12:24:38 +03:00
Saved filters (#1474)
* Refactor list filter * Filter/criterion refactor * Rename option value to type * Remove None from options * Add saved filter button * Integrate default filters
This commit is contained in:
@@ -189,22 +189,34 @@ const (
|
||||
)
|
||||
|
||||
const (
|
||||
pathField = "Path"
|
||||
checksumField = "Checksum"
|
||||
titleField = "Title"
|
||||
urlField = "URL"
|
||||
zipPath = "zipPath.zip"
|
||||
savedFilterIdxDefaultScene = iota
|
||||
savedFilterIdxDefaultImage
|
||||
savedFilterIdxScene
|
||||
savedFilterIdxImage
|
||||
|
||||
// new indexes above
|
||||
totalSavedFilters
|
||||
)
|
||||
|
||||
const (
|
||||
pathField = "Path"
|
||||
checksumField = "Checksum"
|
||||
titleField = "Title"
|
||||
urlField = "URL"
|
||||
zipPath = "zipPath.zip"
|
||||
firstSavedFilterName = "firstSavedFilterName"
|
||||
)
|
||||
|
||||
var (
|
||||
sceneIDs []int
|
||||
imageIDs []int
|
||||
performerIDs []int
|
||||
movieIDs []int
|
||||
galleryIDs []int
|
||||
tagIDs []int
|
||||
studioIDs []int
|
||||
markerIDs []int
|
||||
sceneIDs []int
|
||||
imageIDs []int
|
||||
performerIDs []int
|
||||
movieIDs []int
|
||||
galleryIDs []int
|
||||
tagIDs []int
|
||||
studioIDs []int
|
||||
markerIDs []int
|
||||
savedFilterIDs []int
|
||||
|
||||
tagNames []string
|
||||
studioNames []string
|
||||
@@ -423,6 +435,10 @@ func populateDB() error {
|
||||
return fmt.Errorf("error creating studios: %s", err.Error())
|
||||
}
|
||||
|
||||
if err := createSavedFilters(r.SavedFilter(), totalSavedFilters); err != nil {
|
||||
return fmt.Errorf("error creating saved filters: %s", err.Error())
|
||||
}
|
||||
|
||||
if err := linkPerformerTags(r.Performer()); err != nil {
|
||||
return fmt.Errorf("error linking performer tags: %s", err.Error())
|
||||
}
|
||||
@@ -979,6 +995,51 @@ func createMarker(mqb models.SceneMarkerReaderWriter, sceneIdx, primaryTagIdx in
|
||||
return nil
|
||||
}
|
||||
|
||||
func getSavedFilterMode(index int) models.FilterMode {
|
||||
switch index {
|
||||
case savedFilterIdxScene, savedFilterIdxDefaultScene:
|
||||
return models.FilterModeScenes
|
||||
case savedFilterIdxImage, savedFilterIdxDefaultImage:
|
||||
return models.FilterModeImages
|
||||
default:
|
||||
return models.FilterModeScenes
|
||||
}
|
||||
}
|
||||
|
||||
func getSavedFilterName(index int) string {
|
||||
if index <= savedFilterIdxDefaultImage {
|
||||
// empty string for default filters
|
||||
return ""
|
||||
}
|
||||
|
||||
if index <= savedFilterIdxImage {
|
||||
// use the same name for the first two - should be possible
|
||||
return firstSavedFilterName
|
||||
}
|
||||
|
||||
return getPrefixedStringValue("savedFilter", index, "Name")
|
||||
}
|
||||
|
||||
func createSavedFilters(qb models.SavedFilterReaderWriter, n int) error {
|
||||
for i := 0; i < n; i++ {
|
||||
savedFilter := models.SavedFilter{
|
||||
Mode: getSavedFilterMode(i),
|
||||
Name: getSavedFilterName(i),
|
||||
Filter: getPrefixedStringValue("savedFilter", i, "Filter"),
|
||||
}
|
||||
|
||||
created, err := qb.Create(savedFilter)
|
||||
|
||||
if err != nil {
|
||||
return fmt.Errorf("Error creating saved filter %v+: %s", savedFilter, err.Error())
|
||||
}
|
||||
|
||||
savedFilterIDs = append(savedFilterIDs, created.ID)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func doLinks(links [][2]int, fn func(idx1, idx2 int) error) error {
|
||||
for _, l := range links {
|
||||
if err := fn(l[0], l[1]); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user