mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 12:24:38 +03:00
[Feature] Better resolution search (#1568)
* Fix width in database test setup * Added more filters on resolution field * added test to verify resolution range is defined for every resolution * Refactor UI code Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
@@ -1,65 +1,33 @@
|
||||
package models
|
||||
|
||||
var resolutionMax = []int{
|
||||
240,
|
||||
360,
|
||||
480,
|
||||
540,
|
||||
720,
|
||||
1080,
|
||||
1440,
|
||||
1920,
|
||||
2160,
|
||||
2880,
|
||||
3384,
|
||||
4320,
|
||||
0,
|
||||
type ResolutionRange struct {
|
||||
min, max int
|
||||
}
|
||||
|
||||
var resolutionRanges = map[ResolutionEnum]ResolutionRange{
|
||||
ResolutionEnum("VERY_LOW"): {144, 239},
|
||||
ResolutionEnum("LOW"): {240, 359},
|
||||
ResolutionEnum("R360P"): {360, 479},
|
||||
ResolutionEnum("STANDARD"): {480, 539},
|
||||
ResolutionEnum("WEB_HD"): {540, 719},
|
||||
ResolutionEnum("STANDARD_HD"): {720, 1079},
|
||||
ResolutionEnum("FULL_HD"): {1080, 1439},
|
||||
ResolutionEnum("QUAD_HD"): {1440, 1919},
|
||||
ResolutionEnum("VR_HD"): {1920, 2159},
|
||||
ResolutionEnum("FOUR_K"): {2160, 2879},
|
||||
ResolutionEnum("FIVE_K"): {2880, 3383},
|
||||
ResolutionEnum("SIX_K"): {3384, 4319},
|
||||
ResolutionEnum("EIGHT_K"): {4320, 8639},
|
||||
}
|
||||
|
||||
// GetMaxResolution returns the maximum width or height that media must be
|
||||
// to qualify as this resolution. A return value of 0 means that there is no
|
||||
// maximum.
|
||||
// to qualify as this resolution.
|
||||
func (r *ResolutionEnum) GetMaxResolution() int {
|
||||
if !r.IsValid() {
|
||||
return 0
|
||||
}
|
||||
|
||||
// sanity check - length of arrays must be the same
|
||||
if len(resolutionMax) != len(AllResolutionEnum) {
|
||||
panic("resolutionMax array length != AllResolutionEnum array length")
|
||||
}
|
||||
|
||||
for i, rr := range AllResolutionEnum {
|
||||
if rr == *r {
|
||||
return resolutionMax[i]
|
||||
}
|
||||
}
|
||||
|
||||
return 0
|
||||
return resolutionRanges[*r].max
|
||||
}
|
||||
|
||||
// GetMinResolution returns the minimum width or height that media must be
|
||||
// to qualify as this resolution.
|
||||
func (r *ResolutionEnum) GetMinResolution() int {
|
||||
if !r.IsValid() {
|
||||
return 0
|
||||
}
|
||||
|
||||
// sanity check - length of arrays must be the same
|
||||
if len(resolutionMax) != len(AllResolutionEnum) {
|
||||
panic("resolutionMax array length != AllResolutionEnum array length")
|
||||
}
|
||||
|
||||
// use the previous resolution max as this resolution min
|
||||
for i, rr := range AllResolutionEnum {
|
||||
if rr == *r {
|
||||
if i > 0 {
|
||||
return resolutionMax[i-1]
|
||||
}
|
||||
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
return 0
|
||||
return resolutionRanges[*r].min
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user