Scene Marker duration filter and sort (#5472)

Co-authored-by: WithoutPants <53250216+WithoutPants@users.noreply.github.com>
This commit is contained in:
dogwithakeyboard
2024-11-29 05:28:10 +00:00
committed by GitHub
parent e097f2b3f4
commit 6ad0951878
8 changed files with 155 additions and 2 deletions

View File

@@ -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 });

View File

@@ -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"),