mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
Fix parent/child links on tag pages (#3978)
This commit is contained in:
@@ -34,7 +34,7 @@ type SceneMarkerFragment = Pick<GQL.SceneMarker, "id" | "title" | "seconds"> & {
|
|||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
tag?: Partial<TagDataFragment>;
|
tag?: Partial<TagDataFragment>;
|
||||||
tagType?: "performer" | "scene" | "gallery" | "image";
|
tagType?: "performer" | "scene" | "gallery" | "image" | "details";
|
||||||
performer?: Partial<PerformerDataFragment>;
|
performer?: Partial<PerformerDataFragment>;
|
||||||
marker?: SceneMarkerFragment;
|
marker?: SceneMarkerFragment;
|
||||||
movie?: Partial<MovieDataFragment>;
|
movie?: Partial<MovieDataFragment>;
|
||||||
@@ -49,6 +49,7 @@ export const TagLink: React.FC<IProps> = (props: IProps) => {
|
|||||||
let link: string = "#";
|
let link: string = "#";
|
||||||
let title: string = "";
|
let title: string = "";
|
||||||
if (props.tag) {
|
if (props.tag) {
|
||||||
|
id = props.tag.id || "";
|
||||||
switch (props.tagType) {
|
switch (props.tagType) {
|
||||||
case "scene":
|
case "scene":
|
||||||
case undefined:
|
case undefined:
|
||||||
@@ -63,8 +64,10 @@ export const TagLink: React.FC<IProps> = (props: IProps) => {
|
|||||||
case "image":
|
case "image":
|
||||||
link = NavUtils.makeTagImagesUrl(props.tag);
|
link = NavUtils.makeTagImagesUrl(props.tag);
|
||||||
break;
|
break;
|
||||||
|
case "details":
|
||||||
|
link = NavUtils.makeTagUrl(id);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
id = props.tag.id || "";
|
|
||||||
title = props.tag.name || "";
|
title = props.tag.name || "";
|
||||||
} else if (props.performer) {
|
} else if (props.performer) {
|
||||||
link = NavUtils.makePerformerScenesUrl(props.performer);
|
link = NavUtils.makePerformerScenesUrl(props.performer);
|
||||||
|
|||||||
@@ -17,7 +17,12 @@ export const TagDetailsPanel: React.FC<ITagDetails> = ({ tag, fullWidth }) => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{tag.parents.map((p) => (
|
{tag.parents.map((p) => (
|
||||||
<TagLink key={p.id} tag={p} hoverPlacement="bottom" />
|
<TagLink
|
||||||
|
key={p.id}
|
||||||
|
tag={p}
|
||||||
|
hoverPlacement="bottom"
|
||||||
|
tagType="details"
|
||||||
|
/>
|
||||||
))}
|
))}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
@@ -31,7 +36,12 @@ export const TagDetailsPanel: React.FC<ITagDetails> = ({ tag, fullWidth }) => {
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{tag.children.map((c) => (
|
{tag.children.map((c) => (
|
||||||
<TagLink key={c.id} tag={c} hoverPlacement="bottom" />
|
<TagLink
|
||||||
|
key={c.id}
|
||||||
|
tag={c}
|
||||||
|
hoverPlacement="bottom"
|
||||||
|
tagType="details"
|
||||||
|
/>
|
||||||
))}
|
))}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -213,6 +213,10 @@ const makeMovieScenesUrl = (movie: Partial<GQL.MovieDataFragment>) => {
|
|||||||
return `/scenes?${filter.makeQueryParameters()}`;
|
return `/scenes?${filter.makeQueryParameters()}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const makeTagUrl = (id: string) => {
|
||||||
|
return `/tags/${id}`;
|
||||||
|
};
|
||||||
|
|
||||||
const makeParentTagsUrl = (tag: Partial<GQL.TagDataFragment>) => {
|
const makeParentTagsUrl = (tag: Partial<GQL.TagDataFragment>) => {
|
||||||
if (!tag.id) return "#";
|
if (!tag.id) return "#";
|
||||||
const filter = new ListFilterModel(GQL.FilterMode.Tags, undefined);
|
const filter = new ListFilterModel(GQL.FilterMode.Tags, undefined);
|
||||||
@@ -373,6 +377,7 @@ const NavUtils = {
|
|||||||
makeStudioGalleriesUrl,
|
makeStudioGalleriesUrl,
|
||||||
makeStudioMoviesUrl,
|
makeStudioMoviesUrl,
|
||||||
makeStudioPerformersUrl,
|
makeStudioPerformersUrl,
|
||||||
|
makeTagUrl,
|
||||||
makeParentTagsUrl,
|
makeParentTagsUrl,
|
||||||
makeChildTagsUrl,
|
makeChildTagsUrl,
|
||||||
makeTagSceneMarkersUrl,
|
makeTagSceneMarkersUrl,
|
||||||
|
|||||||
Reference in New Issue
Block a user