mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
Scene Marker duration filter and sort (#5472)
Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
@@ -637,7 +637,11 @@ export function createNumberCriterionOption(
|
||||
}
|
||||
|
||||
export class NullNumberCriterionOption extends CriterionOption {
|
||||
constructor(messageID: string, value: CriterionType) {
|
||||
constructor(
|
||||
messageID: string,
|
||||
value: CriterionType,
|
||||
makeCriterion?: () => Criterion<CriterionValue>
|
||||
) {
|
||||
super({
|
||||
messageID,
|
||||
type: value,
|
||||
@@ -653,7 +657,9 @@ export class NullNumberCriterionOption extends CriterionOption {
|
||||
],
|
||||
defaultModifier: CriterionModifier.Equals,
|
||||
inputType: "number",
|
||||
makeCriterion: () => new NumberCriterion(this),
|
||||
makeCriterion: makeCriterion
|
||||
? makeCriterion
|
||||
: () => new NumberCriterion(this),
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -780,6 +786,19 @@ export function createDurationCriterionOption(
|
||||
return new DurationCriterionOption(messageID ?? value, value);
|
||||
}
|
||||
|
||||
export class NullDurationCriterionOption extends NullNumberCriterionOption {
|
||||
constructor(messageID: string, value: CriterionType) {
|
||||
super(messageID, value, () => new DurationCriterion(this));
|
||||
}
|
||||
}
|
||||
|
||||
export function createNullDurationCriterionOption(
|
||||
value: CriterionType,
|
||||
messageID?: string
|
||||
) {
|
||||
return new NullDurationCriterionOption(messageID ?? value, value);
|
||||
}
|
||||
|
||||
export class DurationCriterion extends Criterion<INumberValue> {
|
||||
constructor(type: CriterionOption) {
|
||||
super(type, { value: undefined, value2: undefined });
|
||||
|
||||
@@ -6,10 +6,12 @@ import { DisplayMode } from "./types";
|
||||
import {
|
||||
createDateCriterionOption,
|
||||
createMandatoryTimestampCriterionOption,
|
||||
createNullDurationCriterionOption,
|
||||
} from "./criteria/criterion";
|
||||
|
||||
const defaultSortBy = "title";
|
||||
const sortByOptions = [
|
||||
"duration",
|
||||
"title",
|
||||
"seconds",
|
||||
"scene_id",
|
||||
@@ -22,6 +24,7 @@ const criterionOptions = [
|
||||
MarkersScenesCriterionOption,
|
||||
SceneTagsCriterionOption,
|
||||
PerformersCriterionOption,
|
||||
createNullDurationCriterionOption("duration"),
|
||||
createMandatoryTimestampCriterionOption("created_at"),
|
||||
createMandatoryTimestampCriterionOption("updated_at"),
|
||||
createDateCriterionOption("scene_date"),
|
||||
|
||||
Reference in New Issue
Block a user