diff --git a/ui/v2.5/src/components/Performers/EditPerformersDialog.tsx b/ui/v2.5/src/components/Performers/EditPerformersDialog.tsx index 99e7f6196..de2e0cd49 100644 --- a/ui/v2.5/src/components/Performers/EditPerformersDialog.tsx +++ b/ui/v2.5/src/components/Performers/EditPerformersDialog.tsx @@ -9,6 +9,7 @@ import { useToast } from "src/hooks"; import { FormUtils } from "src/utils"; import MultiSet from "../Shared/MultiSet"; import { RatingStars } from "../Scenes/SceneDetails/RatingStars"; +import { genderStrings, stringToGender } from "src/utils/gender"; interface IListOperationProps { selected: GQL.SlimPerformerDataFragment[]; @@ -27,6 +28,16 @@ export const EditPerformersDialog: React.FC = ( const [tagIds, setTagIds] = useState(); const [existingTagIds, setExistingTagIds] = useState(); const [favorite, setFavorite] = useState(); + const [ethnicity, setEthnicity] = useState(); + const [country, setCountry] = useState(); + const [eyeColor, setEyeColor] = useState(); + const [fakeTits, setFakeTits] = useState(); + const [careerLength, setCareerLength] = useState(); + const [tattoos, setTattoos] = useState(); + const [piercings, setPiercings] = useState(); + const [hairColor, setHairColor] = useState(); + const [gender, setGender] = useState(); + const genderOptions = [""].concat(genderStrings); const [updatePerformers] = useBulkPerformerUpdate(getPerformerInput()); @@ -84,9 +95,16 @@ export const EditPerformersDialog: React.FC = ( performerInput.tag_ids = makeBulkUpdateIds(tagIds || [], tagMode); } - if (favorite !== undefined) { - performerInput.favorite = favorite; - } + performerInput.favorite = favorite; + performerInput.ethnicity = ethnicity; + performerInput.country = country; + performerInput.eye_color = eyeColor; + performerInput.fake_tits = fakeTits; + performerInput.career_length = careerLength; + performerInput.tattoos = tattoos; + performerInput.piercings = piercings; + performerInput.hair_color = hairColor; + performerInput.gender = gender; return performerInput; } @@ -155,6 +173,7 @@ export const EditPerformersDialog: React.FC = ( let updateTagIds: string[] = []; let updateFavorite: boolean | undefined; let updateRating: number | undefined; + let updateGender: GQL.GenderEnum | undefined; let first = true; state.forEach((performer: GQL.SlimPerformerDataFragment) => { @@ -166,6 +185,7 @@ export const EditPerformersDialog: React.FC = ( first = false; updateFavorite = performer.favorite; updateRating = performerRating ?? undefined; + updateGender = performer.gender ?? undefined; } else { if (!_.isEqual(performerTagIDs, updateTagIds)) { updateTagIds = []; @@ -176,12 +196,26 @@ export const EditPerformersDialog: React.FC = ( if (performerRating !== updateRating) { updateRating = undefined; } + if (performer.gender !== updateGender) { + updateGender = undefined; + } } }); setExistingTagIds(updateTagIds); setFavorite(updateFavorite); setRating(updateRating); + setGender(updateGender); + + // these fields are not part of SlimPerformerDataFragment + setEthnicity(undefined); + setCountry(undefined); + setEyeColor(undefined); + setFakeTits(undefined); + setCareerLength(undefined); + setTattoos(undefined); + setPiercings(undefined); + setHairColor(undefined); }, [props.selected, tagMode]); useEffect(() => { @@ -200,6 +234,27 @@ export const EditPerformersDialog: React.FC = ( } } + function renderTextField( + name: string, + value: string | undefined, + setter: (newValue: string | undefined) => void + ) { + return ( + + + + + setter(event.currentTarget.value)} + placeholder={intl.formatMessage({ id: name })} + /> + + ); + } + function render() { return ( = (
+ + cycleFavorite()} + /> + + + + + + + + setGender(stringToGender(event.currentTarget.value)) + } + > + {genderOptions.map((opt) => ( + + ))} + + + + {renderTextField("country", country, setCountry)} + {renderTextField("ethnicity", ethnicity, setEthnicity)} + {renderTextField("hair_color", hairColor, setHairColor)} + {renderTextField("eye_color", eyeColor, setEyeColor)} + {renderTextField("fake_tits", fakeTits, setFakeTits)} + {renderTextField("tattoos", tattoos, setTattoos)} + {renderTextField("piercings", piercings, setPiercings)} + {renderTextField("career_length", careerLength, setCareerLength)} + @@ -244,16 +337,6 @@ export const EditPerformersDialog: React.FC = ( mode={tagMode} /> - - - cycleFavorite()} - /> -
);