From cbf2f4d6be02d71498308e629f95617c41c2c2e9 Mon Sep 17 00:00:00 2001 From: dogwithakeyboard Date: Fri, 2 Aug 2024 12:12:30 +0100 Subject: [PATCH 1/8] add agefromdate to performer select --- .../components/Performers/PerformerSelect.tsx | 25 +++++++++++++------ ui/v2.5/src/locales/en-GB.json | 3 ++- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/ui/v2.5/src/components/Performers/PerformerSelect.tsx b/ui/v2.5/src/components/Performers/PerformerSelect.tsx index 1b24b737a13..3121b70b0a0 100644 --- a/ui/v2.5/src/components/Performers/PerformerSelect.tsx +++ b/ui/v2.5/src/components/Performers/PerformerSelect.tsx @@ -71,7 +71,7 @@ const performerSelectSort = PatchFunction( ); const _PerformerSelect: React.FC< - IFilterProps & IFilterValueProps + IFilterProps & IFilterValueProps & { ageFromDate?: string | null } > = (props) => { const [createPerformer] = usePerformerCreate(); @@ -117,6 +117,22 @@ const _PerformerSelect: React.FC< ); } + const age = TextUtils.age( + object.birthdate, + props.ageFromDate ?? object.death_date + ); + const ageL10nId = props.ageFromDate + ? "media_info.performer_card.age_context_short" + : "media_info.performer_card.age"; + const ageL10String = intl.formatMessage({ + id: "years_old", + defaultMessage: "years old", + }); + const ageString = intl.formatMessage( + { id: ageL10nId }, + { age, years_old: ageL10String } + ); + thisOptionProps = { ...optionProps, children: ( @@ -154,12 +170,7 @@ const _PerformerSelect: React.FC< )} {object.birthdate && ( - {`${ - object.birthdate - } (${TextUtils.age( - object.birthdate, - object.death_date - )})`} + {`${object.birthdate} (${ageString})`} )} diff --git a/ui/v2.5/src/locales/en-GB.json b/ui/v2.5/src/locales/en-GB.json index 5145ea829cd..70c737006ac 100644 --- a/ui/v2.5/src/locales/en-GB.json +++ b/ui/v2.5/src/locales/en-GB.json @@ -1111,7 +1111,8 @@ "o_count": "O Count", "performer_card": { "age": "{age} {years_old}", - "age_context": "{age} {years_old} in this scene" + "age_context": "{age} {years_old} in this scene", + "age_context_short": "{age} in this scene" }, "phash": "PHash", "play_count": "Play Count", From ff05788b160e266003b8ee20ad70c7b289d3cbd3 Mon Sep 17 00:00:00 2001 From: dogwithakeyboard Date: Fri, 2 Aug 2024 12:15:23 +0100 Subject: [PATCH 2/8] pass date from edit panels --- .../Galleries/GalleryDetails/GalleryEditPanel.tsx | 15 ++++++++++++++- .../Images/ImageDetails/ImageEditPanel.tsx | 15 ++++++++++++++- .../Scenes/SceneDetails/SceneEditPanel.tsx | 15 ++++++++++++++- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryEditPanel.tsx b/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryEditPanel.tsx index 6acefcf7dc3..b9eea8f5d4b 100644 --- a/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryEditPanel.tsx +++ b/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryEditPanel.tsx @@ -364,9 +364,22 @@ export const GalleryEditPanel: React.FC = ({ } function renderPerformersField() { + const date = (() => { + try { + return schema.validateSyncAt("date", formik.values); + } catch (e) { + return undefined; + } + })(); + const title = intl.formatMessage({ id: "performers" }); const control = ( - + ); return renderField("performer_ids", title, control, fullWidthProps); diff --git a/ui/v2.5/src/components/Images/ImageDetails/ImageEditPanel.tsx b/ui/v2.5/src/components/Images/ImageDetails/ImageEditPanel.tsx index 1c9c7d35ca0..46f440bd6bd 100644 --- a/ui/v2.5/src/components/Images/ImageDetails/ImageEditPanel.tsx +++ b/ui/v2.5/src/components/Images/ImageDetails/ImageEditPanel.tsx @@ -214,9 +214,22 @@ export const ImageEditPanel: React.FC = ({ } function renderPerformersField() { + const date = (() => { + try { + return schema.validateSyncAt("date", formik.values); + } catch (e) { + return undefined; + } + })(); + const title = intl.formatMessage({ id: "performers" }); const control = ( - + ); return renderField("performer_ids", title, control, fullWidthProps); diff --git a/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx b/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx index 2eef3de1fb4..35899f60dab 100644 --- a/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx +++ b/ui/v2.5/src/components/Scenes/SceneDetails/SceneEditPanel.tsx @@ -623,9 +623,22 @@ export const SceneEditPanel: React.FC = ({ } function renderPerformersField() { + const date = (() => { + try { + return schema.validateSyncAt("date", formik.values); + } catch (e) { + return undefined; + } + })(); + const title = intl.formatMessage({ id: "performers" }); const control = ( - + ); return renderField("performer_ids", title, control, fullWidthProps); From e42b5a7220b83d1140f49a07b9ba6a3fb864eb93 Mon Sep 17 00:00:00 2001 From: dogwithakeyboard Date: Fri, 2 Aug 2024 12:25:43 +0100 Subject: [PATCH 3/8] pass date from scrape dialog --- .../Galleries/GalleryDetails/GalleryScrapeDialog.tsx | 1 + .../src/components/Scenes/SceneDetails/SceneScrapeDialog.tsx | 1 + ui/v2.5/src/components/Scenes/SceneMergeDialog.tsx | 1 + .../src/components/Shared/ScrapeDialog/ScrapedObjectsRow.tsx | 5 +++-- 4 files changed, 6 insertions(+), 2 deletions(-) diff --git a/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryScrapeDialog.tsx b/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryScrapeDialog.tsx index dd3357fec83..5fe20b7b0f9 100644 --- a/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryScrapeDialog.tsx +++ b/ui/v2.5/src/components/Galleries/GalleryDetails/GalleryScrapeDialog.tsx @@ -199,6 +199,7 @@ export const GalleryScrapeDialog: React.FC = ({ onChange={(value) => setPerformers(value)} newObjects={newPerformers} onCreateNew={createNewPerformer} + ageFromDate={date.useNewValue ? date.newValue : date.originalValue} /> {scrapedTagsRow} = ({ onChange={(value) => setPerformers(value)} newObjects={newPerformers} onCreateNew={createNewPerformer} + ageFromDate={date.useNewValue ? date.newValue : date.originalValue} /> = ({ title={intl.formatMessage({ id: "performers" })} result={performers} onChange={(value) => setPerformers(value)} + ageFromDate={date.useNewValue ? date.newValue : date.originalValue} /> = Omit< >; export const ScrapedPerformersRow: React.FC< - IScrapedObjectRowImpl -> = ({ title, result, onChange, newObjects, onCreateNew }) => { + IScrapedObjectRowImpl & { ageFromDate?: string | null } +> = ({ title, result, onChange, newObjects, onCreateNew, ageFromDate }) => { const performersCopy = useMemo(() => { return ( newObjects?.map((p) => { @@ -179,6 +179,7 @@ export const ScrapedPerformersRow: React.FC< } }} values={selectValue} + ageFromDate={ageFromDate} /> ); } From 5426436ac0b0a65a49961a0b6096b689977397dc Mon Sep 17 00:00:00 2001 From: dogwithakeyboard Date: Fri, 2 Aug 2024 12:45:37 +0100 Subject: [PATCH 4/8] pass date from tagger --- ui/v2.5/src/components/Tagger/scenes/PerformerResult.tsx | 3 +++ ui/v2.5/src/components/Tagger/scenes/StashSearchResult.tsx | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/ui/v2.5/src/components/Tagger/scenes/PerformerResult.tsx b/ui/v2.5/src/components/Tagger/scenes/PerformerResult.tsx index 25f0ca88f73..f606f4669b6 100755 --- a/ui/v2.5/src/components/Tagger/scenes/PerformerResult.tsx +++ b/ui/v2.5/src/components/Tagger/scenes/PerformerResult.tsx @@ -51,6 +51,7 @@ interface IPerformerResultProps { onCreate: () => void; onLink?: () => Promise; endpoint?: string; + ageFromDate?: string | null; } const PerformerResult: React.FC = ({ @@ -60,6 +61,7 @@ const PerformerResult: React.FC = ({ onCreate, onLink, endpoint, + ageFromDate, }) => { const { data: performerData, loading: stashLoading } = GQL.useFindPerformerQuery({ @@ -191,6 +193,7 @@ const PerformerResult: React.FC = ({ onSelect={handleSelect} active={selectedSource === "existing"} isClearable={false} + ageFromDate={ageFromDate} /> {maybeRenderLinkButton()} diff --git a/ui/v2.5/src/components/Tagger/scenes/StashSearchResult.tsx b/ui/v2.5/src/components/Tagger/scenes/StashSearchResult.tsx index cc8f6a132e6..c375df0684d 100755 --- a/ui/v2.5/src/components/Tagger/scenes/StashSearchResult.tsx +++ b/ui/v2.5/src/components/Tagger/scenes/StashSearchResult.tsx @@ -699,6 +699,11 @@ const StashSearchResult: React.FC = ({ currentSource?.sourceInput.stash_box_endpoint ?? undefined } key={`${performer.name ?? performer.remote_site_id ?? ""}`} + ageFromDate={ + !scene.date || excludedFields.date + ? stashScene.date + : scene.date + } /> ))} From 9861dcb7546161a2ebeca7a135bb89fdc99399b9 Mon Sep 17 00:00:00 2001 From: dogwithakeyboard Date: Fri, 2 Aug 2024 12:46:06 +0100 Subject: [PATCH 5/8] increase size of select in tagger --- ui/v2.5/src/components/Tagger/styles.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/v2.5/src/components/Tagger/styles.scss b/ui/v2.5/src/components/Tagger/styles.scss index 5fcff5baf02..bdaed5a0f04 100644 --- a/ui/v2.5/src/components/Tagger/styles.scss +++ b/ui/v2.5/src/components/Tagger/styles.scss @@ -70,7 +70,7 @@ .performer-select, .studio-select { - width: 14rem; + width: 18rem; // stylelint-disable-next-line selector-class-pattern &-active .react-select__control { From 90e31d2be3b3f8e792bb289f00930bf01b77ddd4 Mon Sep 17 00:00:00 2001 From: dogwithakeyboard Date: Sun, 4 Aug 2024 15:19:11 +0100 Subject: [PATCH 6/8] change phrasing --- ui/v2.5/src/components/Performers/PerformerSelect.tsx | 2 +- ui/v2.5/src/locales/en-GB.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ui/v2.5/src/components/Performers/PerformerSelect.tsx b/ui/v2.5/src/components/Performers/PerformerSelect.tsx index 3121b70b0a0..da7f8bf0609 100644 --- a/ui/v2.5/src/components/Performers/PerformerSelect.tsx +++ b/ui/v2.5/src/components/Performers/PerformerSelect.tsx @@ -122,7 +122,7 @@ const _PerformerSelect: React.FC< props.ageFromDate ?? object.death_date ); const ageL10nId = props.ageFromDate - ? "media_info.performer_card.age_context_short" + ? "age_on_date" : "media_info.performer_card.age"; const ageL10String = intl.formatMessage({ id: "years_old", diff --git a/ui/v2.5/src/locales/en-GB.json b/ui/v2.5/src/locales/en-GB.json index 70c737006ac..f0e807ef6a9 100644 --- a/ui/v2.5/src/locales/en-GB.json +++ b/ui/v2.5/src/locales/en-GB.json @@ -139,6 +139,7 @@ }, "actions_name": "Actions", "age": "Age", + "age_on_date": "{age} on this date", "aliases": "Aliases", "all": "all", "also_known_as": "Also known as", @@ -1111,8 +1112,7 @@ "o_count": "O Count", "performer_card": { "age": "{age} {years_old}", - "age_context": "{age} {years_old} in this scene", - "age_context_short": "{age} in this scene" + "age_context": "{age} {years_old} in this scene" }, "phash": "PHash", "play_count": "Play Count", From a82a014ee16431c1e789606b98cfb249d786890e Mon Sep 17 00:00:00 2001 From: dogwithakeyboard Date: Sun, 4 Aug 2024 16:13:03 +0100 Subject: [PATCH 7/8] remove invalid age context --- .../components/Performers/PerformerSelect.tsx | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/ui/v2.5/src/components/Performers/PerformerSelect.tsx b/ui/v2.5/src/components/Performers/PerformerSelect.tsx index da7f8bf0609..2f5ed13fe7a 100644 --- a/ui/v2.5/src/components/Performers/PerformerSelect.tsx +++ b/ui/v2.5/src/components/Performers/PerformerSelect.tsx @@ -117,13 +117,18 @@ const _PerformerSelect: React.FC< ); } - const age = TextUtils.age( - object.birthdate, - props.ageFromDate ?? object.death_date - ); - const ageL10nId = props.ageFromDate - ? "age_on_date" - : "media_info.performer_card.age"; + const sceneAge = TextUtils.age(object.birthdate, props.ageFromDate); + + const age = + sceneAge < 18 + ? TextUtils.age(object.birthdate, object.death_date) + : sceneAge; + + const ageL10nId = + !props.ageFromDate || sceneAge < 18 + ? "media_info.performer_card.age" + : "age_on_date"; + const ageL10String = intl.formatMessage({ id: "years_old", defaultMessage: "years old", From 5f349a45711451d03cc3d650d809f48a57307071 Mon Sep 17 00:00:00 2001 From: dogwithakeyboard Date: Sun, 4 Aug 2024 16:20:34 +0100 Subject: [PATCH 8/8] add age class --- ui/v2.5/src/components/Performers/PerformerSelect.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/v2.5/src/components/Performers/PerformerSelect.tsx b/ui/v2.5/src/components/Performers/PerformerSelect.tsx index 2f5ed13fe7a..9b4f033caa0 100644 --- a/ui/v2.5/src/components/Performers/PerformerSelect.tsx +++ b/ui/v2.5/src/components/Performers/PerformerSelect.tsx @@ -175,7 +175,10 @@ const _PerformerSelect: React.FC< )} {object.birthdate && ( - {`${object.birthdate} (${ageString})`} + + {object.birthdate} + {` (${ageString})`} + )}