mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 21:04:37 +03:00
Fix rating and country filters (#4105)
* Fix country criterion * Fixing rating criterion
This commit is contained in:
@@ -1,13 +1,24 @@
|
|||||||
import { IntlShape } from "react-intl";
|
import { IntlShape } from "react-intl";
|
||||||
import { CriterionModifier } from "src/core/generated-graphql";
|
import { CriterionModifier } from "src/core/generated-graphql";
|
||||||
import { getCountryByISO } from "src/utils/country";
|
import { getCountryByISO } from "src/utils/country";
|
||||||
import { StringCriterion, StringCriterionOption } from "./criterion";
|
import {
|
||||||
|
CriterionOption,
|
||||||
|
StringCriterion,
|
||||||
|
StringCriterionOption,
|
||||||
|
} from "./criterion";
|
||||||
|
|
||||||
const countryCriterionOption = new StringCriterionOption("country", "country");
|
export const CountryCriterionOption = new CriterionOption({
|
||||||
|
messageID: "country",
|
||||||
|
type: "country",
|
||||||
|
modifierOptions: StringCriterionOption.modifierOptions,
|
||||||
|
defaultModifier: StringCriterionOption.defaultModifier,
|
||||||
|
makeCriterion: () => new CountryCriterion(),
|
||||||
|
inputType: StringCriterionOption.inputType,
|
||||||
|
});
|
||||||
|
|
||||||
export class CountryCriterion extends StringCriterion {
|
export class CountryCriterion extends StringCriterion {
|
||||||
constructor() {
|
constructor() {
|
||||||
super(countryCriterionOption);
|
super(CountryCriterionOption);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected getLabelValue(intl: IntlShape) {
|
protected getLabelValue(intl: IntlShape) {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import {
|
|||||||
PHashDuplicationCriterionInput,
|
PHashDuplicationCriterionInput,
|
||||||
DateCriterionInput,
|
DateCriterionInput,
|
||||||
TimestampCriterionInput,
|
TimestampCriterionInput,
|
||||||
|
ConfigDataFragment,
|
||||||
} from "src/core/generated-graphql";
|
} from "src/core/generated-graphql";
|
||||||
import DurationUtils from "src/utils/duration";
|
import DurationUtils from "src/utils/duration";
|
||||||
import {
|
import {
|
||||||
@@ -193,7 +194,10 @@ interface ICriterionOptionsParams {
|
|||||||
modifierOptions?: CriterionModifier[];
|
modifierOptions?: CriterionModifier[];
|
||||||
defaultModifier?: CriterionModifier;
|
defaultModifier?: CriterionModifier;
|
||||||
options?: Option[];
|
options?: Option[];
|
||||||
makeCriterion: () => Criterion<CriterionValue>;
|
makeCriterion: (
|
||||||
|
o: CriterionOption,
|
||||||
|
config?: ConfigDataFragment
|
||||||
|
) => Criterion<CriterionValue>;
|
||||||
}
|
}
|
||||||
export class CriterionOption {
|
export class CriterionOption {
|
||||||
public readonly messageID: string;
|
public readonly messageID: string;
|
||||||
@@ -203,7 +207,8 @@ export class CriterionOption {
|
|||||||
public readonly options: Option[] | undefined;
|
public readonly options: Option[] | undefined;
|
||||||
public readonly inputType: InputType;
|
public readonly inputType: InputType;
|
||||||
public readonly makeCriterionFn: (
|
public readonly makeCriterionFn: (
|
||||||
o: CriterionOption
|
o: CriterionOption,
|
||||||
|
config?: ConfigDataFragment
|
||||||
) => Criterion<CriterionValue>;
|
) => Criterion<CriterionValue>;
|
||||||
|
|
||||||
constructor(options: ICriterionOptionsParams) {
|
constructor(options: ICriterionOptionsParams) {
|
||||||
@@ -216,17 +221,13 @@ export class CriterionOption {
|
|||||||
this.makeCriterionFn = options.makeCriterion;
|
this.makeCriterionFn = options.makeCriterion;
|
||||||
}
|
}
|
||||||
|
|
||||||
public makeCriterion() {
|
public makeCriterion(config?: ConfigDataFragment) {
|
||||||
return this.makeCriterionFn(this);
|
return this.makeCriterionFn(this, config);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class StringCriterionOption extends CriterionOption {
|
export class StringCriterionOption extends CriterionOption {
|
||||||
constructor(messageID: string, type: CriterionType, options?: Option[]) {
|
public static readonly modifierOptions = [
|
||||||
super({
|
|
||||||
messageID,
|
|
||||||
type,
|
|
||||||
modifierOptions: [
|
|
||||||
CriterionModifier.Equals,
|
CriterionModifier.Equals,
|
||||||
CriterionModifier.NotEquals,
|
CriterionModifier.NotEquals,
|
||||||
CriterionModifier.Includes,
|
CriterionModifier.Includes,
|
||||||
@@ -235,10 +236,19 @@ export class StringCriterionOption extends CriterionOption {
|
|||||||
CriterionModifier.NotNull,
|
CriterionModifier.NotNull,
|
||||||
CriterionModifier.MatchesRegex,
|
CriterionModifier.MatchesRegex,
|
||||||
CriterionModifier.NotMatchesRegex,
|
CriterionModifier.NotMatchesRegex,
|
||||||
],
|
];
|
||||||
defaultModifier: CriterionModifier.Equals,
|
|
||||||
|
public static readonly defaultModifier = CriterionModifier.Equals;
|
||||||
|
public static readonly inputType = "text";
|
||||||
|
|
||||||
|
constructor(messageID: string, type: CriterionType, options?: Option[]) {
|
||||||
|
super({
|
||||||
|
messageID,
|
||||||
|
type,
|
||||||
|
modifierOptions: StringCriterionOption.modifierOptions,
|
||||||
|
defaultModifier: StringCriterionOption.defaultModifier,
|
||||||
options,
|
options,
|
||||||
inputType: "text",
|
inputType: StringCriterionOption.inputType,
|
||||||
makeCriterion: () => new StringCriterion(this),
|
makeCriterion: () => new StringCriterion(this),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ const filterModeOptions = {
|
|||||||
|
|
||||||
export function makeCriteria(
|
export function makeCriteria(
|
||||||
mode: GQL.FilterMode,
|
mode: GQL.FilterMode,
|
||||||
type: CriterionType = "none"
|
type: CriterionType,
|
||||||
|
config?: GQL.ConfigDataFragment
|
||||||
) {
|
) {
|
||||||
const criterionOptions = filterModeOptions[mode];
|
const criterionOptions = filterModeOptions[mode];
|
||||||
|
|
||||||
@@ -32,5 +33,5 @@ export function makeCriteria(
|
|||||||
throw new Error(`Unknown criterion parameter name: ${type}`);
|
throw new Error(`Unknown criterion parameter name: ${type}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return option?.makeCriterion();
|
return option?.makeCriterion(config);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,44 @@
|
|||||||
import {
|
import {
|
||||||
convertFromRatingFormat,
|
convertFromRatingFormat,
|
||||||
convertToRatingFormat,
|
convertToRatingFormat,
|
||||||
|
defaultRatingSystemOptions,
|
||||||
RatingSystemOptions,
|
RatingSystemOptions,
|
||||||
} from "src/utils/rating";
|
} from "src/utils/rating";
|
||||||
import {
|
import {
|
||||||
|
ConfigDataFragment,
|
||||||
CriterionModifier,
|
CriterionModifier,
|
||||||
IntCriterionInput,
|
IntCriterionInput,
|
||||||
} from "../../../core/generated-graphql";
|
} from "../../../core/generated-graphql";
|
||||||
import { INumberValue } from "../types";
|
import { INumberValue } from "../types";
|
||||||
import { Criterion, CriterionOption } from "./criterion";
|
import { Criterion, CriterionOption } from "./criterion";
|
||||||
|
import { IUIConfig } from "src/core/config";
|
||||||
|
|
||||||
|
const modifierOptions = [
|
||||||
|
CriterionModifier.Equals,
|
||||||
|
CriterionModifier.NotEquals,
|
||||||
|
CriterionModifier.GreaterThan,
|
||||||
|
CriterionModifier.LessThan,
|
||||||
|
CriterionModifier.Between,
|
||||||
|
CriterionModifier.NotBetween,
|
||||||
|
CriterionModifier.IsNull,
|
||||||
|
CriterionModifier.NotNull,
|
||||||
|
];
|
||||||
|
|
||||||
|
function getRatingSystemOptions(config?: ConfigDataFragment) {
|
||||||
|
return (
|
||||||
|
(config?.ui as IUIConfig)?.ratingSystemOptions ?? defaultRatingSystemOptions
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
export const RatingCriterionOption = new CriterionOption({
|
||||||
|
messageID: "rating",
|
||||||
|
type: "rating100",
|
||||||
|
modifierOptions,
|
||||||
|
defaultModifier: CriterionModifier.Equals,
|
||||||
|
makeCriterion: (o, config) =>
|
||||||
|
new RatingCriterion(getRatingSystemOptions(config)),
|
||||||
|
inputType: "number",
|
||||||
|
});
|
||||||
|
|
||||||
export class RatingCriterion extends Criterion<INumberValue> {
|
export class RatingCriterion extends Criterion<INumberValue> {
|
||||||
ratingSystem: RatingSystemOptions;
|
ratingSystem: RatingSystemOptions;
|
||||||
@@ -50,8 +80,8 @@ export class RatingCriterion extends Criterion<INumberValue> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(type: CriterionOption, ratingSystem: RatingSystemOptions) {
|
constructor(ratingSystem: RatingSystemOptions) {
|
||||||
super(type, { value: 0, value2: undefined });
|
super(RatingCriterionOption, { value: 0, value2: undefined });
|
||||||
this.ratingSystem = ratingSystem;
|
this.ratingSystem = ratingSystem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -128,7 +128,11 @@ export class ListFilterModel {
|
|||||||
for (const jsonString of params.c) {
|
for (const jsonString of params.c) {
|
||||||
try {
|
try {
|
||||||
const encodedCriterion = JSON.parse(jsonString);
|
const encodedCriterion = JSON.parse(jsonString);
|
||||||
const criterion = makeCriteria(this.mode, encodedCriterion.type);
|
const criterion = makeCriteria(
|
||||||
|
this.mode,
|
||||||
|
encodedCriterion.type,
|
||||||
|
this.config
|
||||||
|
);
|
||||||
// it's possible that we have unsupported criteria. Just skip if so.
|
// it's possible that we have unsupported criteria. Just skip if so.
|
||||||
if (criterion) {
|
if (criterion) {
|
||||||
criterion.setFromEncodedCriterion(encodedCriterion);
|
criterion.setFromEncodedCriterion(encodedCriterion);
|
||||||
@@ -276,7 +280,11 @@ export class ListFilterModel {
|
|||||||
this.criteria = [];
|
this.criteria = [];
|
||||||
if (objectFilter) {
|
if (objectFilter) {
|
||||||
Object.keys(objectFilter).forEach((key) => {
|
Object.keys(objectFilter).forEach((key) => {
|
||||||
const criterion = makeCriteria(this.mode, key as CriterionType);
|
const criterion = makeCriteria(
|
||||||
|
this.mode,
|
||||||
|
key as CriterionType,
|
||||||
|
this.config
|
||||||
|
);
|
||||||
// it's possible that we have unsupported criteria. Just skip if so.
|
// it's possible that we have unsupported criteria. Just skip if so.
|
||||||
if (criterion) {
|
if (criterion) {
|
||||||
criterion.setFromEncodedCriterion(objectFilter[key]);
|
criterion.setFromEncodedCriterion(objectFilter[key]);
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
createMandatoryNumberCriterionOption,
|
createMandatoryNumberCriterionOption,
|
||||||
createStringCriterionOption,
|
createStringCriterionOption,
|
||||||
NullNumberCriterionOption,
|
|
||||||
createDateCriterionOption,
|
createDateCriterionOption,
|
||||||
createMandatoryTimestampCriterionOption,
|
createMandatoryTimestampCriterionOption,
|
||||||
createPathCriterionOption,
|
createPathCriterionOption,
|
||||||
@@ -19,6 +18,7 @@ import {
|
|||||||
} from "./criteria/tags";
|
} from "./criteria/tags";
|
||||||
import { ListFilterOptions, MediaSortByOptions } from "./filter-options";
|
import { ListFilterOptions, MediaSortByOptions } from "./filter-options";
|
||||||
import { DisplayMode } from "./types";
|
import { DisplayMode } from "./types";
|
||||||
|
import { RatingCriterionOption } from "./criteria/rating";
|
||||||
|
|
||||||
const defaultSortBy = "path";
|
const defaultSortBy = "path";
|
||||||
|
|
||||||
@@ -46,7 +46,7 @@ const criterionOptions = [
|
|||||||
createStringCriterionOption("details"),
|
createStringCriterionOption("details"),
|
||||||
createPathCriterionOption("path"),
|
createPathCriterionOption("path"),
|
||||||
createStringCriterionOption("checksum", "media_info.checksum"),
|
createStringCriterionOption("checksum", "media_info.checksum"),
|
||||||
new NullNumberCriterionOption("rating", "rating100"),
|
RatingCriterionOption,
|
||||||
OrganizedCriterionOption,
|
OrganizedCriterionOption,
|
||||||
AverageResolutionCriterionOption,
|
AverageResolutionCriterionOption,
|
||||||
GalleryIsMissingCriterionOption,
|
GalleryIsMissingCriterionOption,
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import {
|
|||||||
createMandatoryNumberCriterionOption,
|
createMandatoryNumberCriterionOption,
|
||||||
createMandatoryStringCriterionOption,
|
createMandatoryStringCriterionOption,
|
||||||
createStringCriterionOption,
|
createStringCriterionOption,
|
||||||
NullNumberCriterionOption,
|
|
||||||
createMandatoryTimestampCriterionOption,
|
createMandatoryTimestampCriterionOption,
|
||||||
createDateCriterionOption,
|
createDateCriterionOption,
|
||||||
createPathCriterionOption,
|
createPathCriterionOption,
|
||||||
@@ -11,6 +10,7 @@ import { PerformerFavoriteCriterionOption } from "./criteria/favorite";
|
|||||||
import { ImageIsMissingCriterionOption } from "./criteria/is-missing";
|
import { ImageIsMissingCriterionOption } from "./criteria/is-missing";
|
||||||
import { OrganizedCriterionOption } from "./criteria/organized";
|
import { OrganizedCriterionOption } from "./criteria/organized";
|
||||||
import { PerformersCriterionOption } from "./criteria/performers";
|
import { PerformersCriterionOption } from "./criteria/performers";
|
||||||
|
import { RatingCriterionOption } from "./criteria/rating";
|
||||||
import { ResolutionCriterionOption } from "./criteria/resolution";
|
import { ResolutionCriterionOption } from "./criteria/resolution";
|
||||||
import { StudiosCriterionOption } from "./criteria/studios";
|
import { StudiosCriterionOption } from "./criteria/studios";
|
||||||
import {
|
import {
|
||||||
@@ -40,7 +40,7 @@ const criterionOptions = [
|
|||||||
ResolutionCriterionOption,
|
ResolutionCriterionOption,
|
||||||
ImageIsMissingCriterionOption,
|
ImageIsMissingCriterionOption,
|
||||||
TagsCriterionOption,
|
TagsCriterionOption,
|
||||||
new NullNumberCriterionOption("rating", "rating100"),
|
RatingCriterionOption,
|
||||||
createMandatoryNumberCriterionOption("tag_count"),
|
createMandatoryNumberCriterionOption("tag_count"),
|
||||||
PerformerTagsCriterionOption,
|
PerformerTagsCriterionOption,
|
||||||
PerformersCriterionOption,
|
PerformersCriterionOption,
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import {
|
import {
|
||||||
createMandatoryNumberCriterionOption,
|
createMandatoryNumberCriterionOption,
|
||||||
createStringCriterionOption,
|
createStringCriterionOption,
|
||||||
NullNumberCriterionOption,
|
|
||||||
createDateCriterionOption,
|
createDateCriterionOption,
|
||||||
createMandatoryTimestampCriterionOption,
|
createMandatoryTimestampCriterionOption,
|
||||||
} from "./criteria/criterion";
|
} from "./criteria/criterion";
|
||||||
@@ -10,6 +9,7 @@ import { StudiosCriterionOption } from "./criteria/studios";
|
|||||||
import { PerformersCriterionOption } from "./criteria/performers";
|
import { PerformersCriterionOption } from "./criteria/performers";
|
||||||
import { ListFilterOptions } from "./filter-options";
|
import { ListFilterOptions } from "./filter-options";
|
||||||
import { DisplayMode } from "./types";
|
import { DisplayMode } from "./types";
|
||||||
|
import { RatingCriterionOption } from "./criteria/rating";
|
||||||
|
|
||||||
const defaultSortBy = "name";
|
const defaultSortBy = "name";
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ const criterionOptions = [
|
|||||||
createStringCriterionOption("director"),
|
createStringCriterionOption("director"),
|
||||||
createStringCriterionOption("synopsis"),
|
createStringCriterionOption("synopsis"),
|
||||||
createMandatoryNumberCriterionOption("duration"),
|
createMandatoryNumberCriterionOption("duration"),
|
||||||
new NullNumberCriterionOption("rating", "rating100"),
|
RatingCriterionOption,
|
||||||
PerformersCriterionOption,
|
PerformersCriterionOption,
|
||||||
createDateCriterionOption("date"),
|
createDateCriterionOption("date"),
|
||||||
createMandatoryTimestampCriterionOption("created_at"),
|
createMandatoryTimestampCriterionOption("created_at"),
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import {
|
|||||||
createDateCriterionOption,
|
createDateCriterionOption,
|
||||||
createMandatoryTimestampCriterionOption,
|
createMandatoryTimestampCriterionOption,
|
||||||
NumberCriterionOption,
|
NumberCriterionOption,
|
||||||
NullNumberCriterionOption,
|
|
||||||
} from "./criteria/criterion";
|
} from "./criteria/criterion";
|
||||||
import { FavoriteCriterionOption } from "./criteria/favorite";
|
import { FavoriteCriterionOption } from "./criteria/favorite";
|
||||||
import { GenderCriterionOption } from "./criteria/gender";
|
import { GenderCriterionOption } from "./criteria/gender";
|
||||||
@@ -17,6 +16,8 @@ import { StudiosCriterionOption } from "./criteria/studios";
|
|||||||
import { TagsCriterionOption } from "./criteria/tags";
|
import { TagsCriterionOption } from "./criteria/tags";
|
||||||
import { ListFilterOptions } from "./filter-options";
|
import { ListFilterOptions } from "./filter-options";
|
||||||
import { CriterionType, DisplayMode } from "./types";
|
import { CriterionType, DisplayMode } from "./types";
|
||||||
|
import { CountryCriterionOption } from "./criteria/country";
|
||||||
|
import { RatingCriterionOption } from "./criteria/rating";
|
||||||
|
|
||||||
const defaultSortBy = "name";
|
const defaultSortBy = "name";
|
||||||
const sortByOptions = [
|
const sortByOptions = [
|
||||||
@@ -67,7 +68,6 @@ const stringCriteria: CriterionType[] = [
|
|||||||
"disambiguation",
|
"disambiguation",
|
||||||
"details",
|
"details",
|
||||||
"ethnicity",
|
"ethnicity",
|
||||||
"country",
|
|
||||||
"hair_color",
|
"hair_color",
|
||||||
"eye_color",
|
"eye_color",
|
||||||
"measurements",
|
"measurements",
|
||||||
@@ -87,7 +87,7 @@ const criterionOptions = [
|
|||||||
StudiosCriterionOption,
|
StudiosCriterionOption,
|
||||||
StashIDCriterionOption,
|
StashIDCriterionOption,
|
||||||
createStringCriterionOption("url"),
|
createStringCriterionOption("url"),
|
||||||
new NullNumberCriterionOption("rating", "rating100"),
|
RatingCriterionOption,
|
||||||
createMandatoryNumberCriterionOption("tag_count"),
|
createMandatoryNumberCriterionOption("tag_count"),
|
||||||
createMandatoryNumberCriterionOption("scene_count"),
|
createMandatoryNumberCriterionOption("scene_count"),
|
||||||
createMandatoryNumberCriterionOption("image_count"),
|
createMandatoryNumberCriterionOption("image_count"),
|
||||||
@@ -96,6 +96,7 @@ const criterionOptions = [
|
|||||||
createBooleanCriterionOption("ignore_auto_tag"),
|
createBooleanCriterionOption("ignore_auto_tag"),
|
||||||
new NumberCriterionOption("height", "height_cm"),
|
new NumberCriterionOption("height", "height_cm"),
|
||||||
...numberCriteria.map((c) => createNumberCriterionOption(c)),
|
...numberCriteria.map((c) => createNumberCriterionOption(c)),
|
||||||
|
CountryCriterionOption,
|
||||||
...stringCriteria.map((c) => createStringCriterionOption(c)),
|
...stringCriteria.map((c) => createStringCriterionOption(c)),
|
||||||
createDateCriterionOption("birthdate"),
|
createDateCriterionOption("birthdate"),
|
||||||
createDateCriterionOption("death_date"),
|
createDateCriterionOption("death_date"),
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import {
|
|||||||
createMandatoryNumberCriterionOption,
|
createMandatoryNumberCriterionOption,
|
||||||
createMandatoryStringCriterionOption,
|
createMandatoryStringCriterionOption,
|
||||||
createStringCriterionOption,
|
createStringCriterionOption,
|
||||||
NullNumberCriterionOption,
|
|
||||||
createDateCriterionOption,
|
createDateCriterionOption,
|
||||||
createMandatoryTimestampCriterionOption,
|
createMandatoryTimestampCriterionOption,
|
||||||
createPathCriterionOption,
|
createPathCriterionOption,
|
||||||
@@ -28,6 +27,7 @@ import {
|
|||||||
import { PerformerFavoriteCriterionOption } from "./criteria/favorite";
|
import { PerformerFavoriteCriterionOption } from "./criteria/favorite";
|
||||||
import { CaptionsCriterionOption } from "./criteria/captions";
|
import { CaptionsCriterionOption } from "./criteria/captions";
|
||||||
import { StashIDCriterionOption } from "./criteria/stash-ids";
|
import { StashIDCriterionOption } from "./criteria/stash-ids";
|
||||||
|
import { RatingCriterionOption } from "./criteria/rating";
|
||||||
|
|
||||||
const defaultSortBy = "date";
|
const defaultSortBy = "date";
|
||||||
const sortByOptions = [
|
const sortByOptions = [
|
||||||
@@ -68,7 +68,7 @@ const criterionOptions = [
|
|||||||
PhashCriterionOption,
|
PhashCriterionOption,
|
||||||
DuplicatedCriterionOption,
|
DuplicatedCriterionOption,
|
||||||
OrganizedCriterionOption,
|
OrganizedCriterionOption,
|
||||||
new NullNumberCriterionOption("rating", "rating100"),
|
RatingCriterionOption,
|
||||||
createMandatoryNumberCriterionOption("o_counter"),
|
createMandatoryNumberCriterionOption("o_counter"),
|
||||||
ResolutionCriterionOption,
|
ResolutionCriterionOption,
|
||||||
createStringCriterionOption("video_codec"),
|
createStringCriterionOption("video_codec"),
|
||||||
|
|||||||
@@ -3,10 +3,10 @@ import {
|
|||||||
createMandatoryNumberCriterionOption,
|
createMandatoryNumberCriterionOption,
|
||||||
createMandatoryStringCriterionOption,
|
createMandatoryStringCriterionOption,
|
||||||
createStringCriterionOption,
|
createStringCriterionOption,
|
||||||
NullNumberCriterionOption,
|
|
||||||
createMandatoryTimestampCriterionOption,
|
createMandatoryTimestampCriterionOption,
|
||||||
} from "./criteria/criterion";
|
} from "./criteria/criterion";
|
||||||
import { StudioIsMissingCriterionOption } from "./criteria/is-missing";
|
import { StudioIsMissingCriterionOption } from "./criteria/is-missing";
|
||||||
|
import { RatingCriterionOption } from "./criteria/rating";
|
||||||
import { StashIDCriterionOption } from "./criteria/stash-ids";
|
import { StashIDCriterionOption } from "./criteria/stash-ids";
|
||||||
import { ParentStudiosCriterionOption } from "./criteria/studios";
|
import { ParentStudiosCriterionOption } from "./criteria/studios";
|
||||||
import { ListFilterOptions } from "./filter-options";
|
import { ListFilterOptions } from "./filter-options";
|
||||||
@@ -36,7 +36,7 @@ const criterionOptions = [
|
|||||||
createStringCriterionOption("details"),
|
createStringCriterionOption("details"),
|
||||||
ParentStudiosCriterionOption,
|
ParentStudiosCriterionOption,
|
||||||
StudioIsMissingCriterionOption,
|
StudioIsMissingCriterionOption,
|
||||||
new NullNumberCriterionOption("rating", "rating100"),
|
RatingCriterionOption,
|
||||||
createBooleanCriterionOption("ignore_auto_tag"),
|
createBooleanCriterionOption("ignore_auto_tag"),
|
||||||
createMandatoryNumberCriterionOption("scene_count"),
|
createMandatoryNumberCriterionOption("scene_count"),
|
||||||
createMandatoryNumberCriterionOption("image_count"),
|
createMandatoryNumberCriterionOption("image_count"),
|
||||||
|
|||||||
Reference in New Issue
Block a user