import React from "react"; import { Col, Form, Row } from "react-bootstrap"; import * as GQL from "src/core/generated-graphql"; import { FormattedMessage, useIntl } from "react-intl"; import { IScraperSource } from "./constants"; import { FieldOptionsList } from "./FieldOptions"; import { ThreeStateBoolean } from "./ThreeStateBoolean"; import { TagSelect } from "src/components/Shared/Select"; interface IOptionsEditor { options: GQL.IdentifyMetadataOptionsInput; setOptions: (s: GQL.IdentifyMetadataOptionsInput) => void; source?: IScraperSource; defaultOptions?: GQL.IdentifyMetadataOptionsInput; setEditingField: (v: boolean) => void; } export const OptionsEditor: React.FC = ({ options, setOptions: setOptionsState, source, setEditingField, defaultOptions, }) => { const intl = useIntl(); function setOptions(v: Partial) { setOptionsState({ ...options, ...v }); } const headingID = !source ? "config.tasks.identify.default_options" : "config.tasks.identify.source_options"; const checkboxProps = { allowUndefined: !!source, indeterminateClassname: "text-muted", }; function maybeRenderMultipleMatchesTag() { if (!options.skipMultipleMatches) { return; } return ( setOptions({ skipMultipleMatchTag: tags[0]?.id, }) } ids={ options.skipMultipleMatchTag ? [options.skipMultipleMatchTag] : [] } noSelectionString="Select/create tag..." /> ); } function maybeRenderPerformersTag() { if (!options.skipSingleNamePerformers) { return; } return ( setOptions({ skipSingleNamePerformerTag: tags[0]?.id, }) } ids={ options.skipSingleNamePerformerTag ? [options.skipSingleNamePerformerTag] : [] } noSelectionString="Select/create tag..." /> ); } return (
{!source && ( {intl.formatMessage({ id: "config.tasks.identify.explicit_set_description", })} )}
setOptions({ includeMalePerformers: v, }) } label={intl.formatMessage({ id: "config.tasks.identify.include_male_performers", })} defaultValue={defaultOptions?.includeMalePerformers ?? undefined} {...checkboxProps} /> setOptions({ setCoverImage: v, }) } label={intl.formatMessage({ id: "config.tasks.identify.set_cover_images", })} defaultValue={defaultOptions?.setCoverImage ?? undefined} {...checkboxProps} /> setOptions({ setOrganized: v, }) } label={intl.formatMessage({ id: "config.tasks.identify.set_organized", })} defaultValue={defaultOptions?.setOrganized ?? undefined} {...checkboxProps} /> setOptions({ skipMultipleMatches: v, }) } label={intl.formatMessage({ id: "config.tasks.identify.skip_multiple_matches", })} defaultValue={defaultOptions?.skipMultipleMatches ?? undefined} tooltip={intl.formatMessage({ id: "config.tasks.identify.skip_multiple_matches_tooltip", })} {...checkboxProps} /> {maybeRenderMultipleMatchesTag()} setOptions({ skipSingleNamePerformers: v, }) } label={intl.formatMessage({ id: "config.tasks.identify.skip_single_name_performers", })} defaultValue={defaultOptions?.skipSingleNamePerformers ?? undefined} tooltip={intl.formatMessage({ id: "config.tasks.identify.skip_single_name_performers_tooltip", })} {...checkboxProps} /> {maybeRenderPerformersTag()} setOptions({ fieldOptions: o })} setEditingField={setEditingField} allowSetDefault={!!source} defaultOptions={defaultOptions} />
); };