mirror of
https://github.com/stashapp/stash.git
synced 2025-12-17 20:34:37 +03:00
Correct tag link for gallery and images tags (#1221)
This commit is contained in:
@@ -47,7 +47,7 @@ export const GalleryCard: React.FC<IProps> = (props) => {
|
|||||||
if (props.gallery.tags.length <= 0) return;
|
if (props.gallery.tags.length <= 0) return;
|
||||||
|
|
||||||
const popoverContent = props.gallery.tags.map((tag) => (
|
const popoverContent = props.gallery.tags.map((tag) => (
|
||||||
<TagLink key={tag.id} tag={tag} />
|
<TagLink key={tag.id} tag={tag} tagType="gallery" />
|
||||||
));
|
));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ export const GalleryDetailPanel: React.FC<IGalleryDetailProps> = (props) => {
|
|||||||
function renderTags() {
|
function renderTags() {
|
||||||
if (!props.gallery.tags || props.gallery.tags.length === 0) return;
|
if (!props.gallery.tags || props.gallery.tags.length === 0) return;
|
||||||
const tags = props.gallery.tags.map((tag) => (
|
const tags = props.gallery.tags.map((tag) => (
|
||||||
<TagLink key={tag.id} tag={tag} />
|
<TagLink key={tag.id} tag={tag} tagType="gallery" />
|
||||||
));
|
));
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ export const ImageCard: React.FC<IImageCardProps> = (
|
|||||||
if (props.image.tags.length <= 0) return;
|
if (props.image.tags.length <= 0) return;
|
||||||
|
|
||||||
const popoverContent = props.image.tags.map((tag) => (
|
const popoverContent = props.image.tags.map((tag) => (
|
||||||
<TagLink key={tag.id} tag={tag} />
|
<TagLink key={tag.id} tag={tag} tagType="image" />
|
||||||
));
|
));
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ export const ImageDetailPanel: React.FC<IImageDetailProps> = (props) => {
|
|||||||
function renderTags() {
|
function renderTags() {
|
||||||
if (props.image.tags.length === 0) return;
|
if (props.image.tags.length === 0) return;
|
||||||
const tags = props.image.tags.map((tag) => (
|
const tags = props.image.tags.map((tag) => (
|
||||||
<TagLink key={tag.id} tag={tag} />
|
<TagLink key={tag.id} tag={tag} tagType="image" />
|
||||||
));
|
));
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import { NavUtils, TextUtils } from "src/utils";
|
|||||||
|
|
||||||
interface IProps {
|
interface IProps {
|
||||||
tag?: Partial<TagDataFragment>;
|
tag?: Partial<TagDataFragment>;
|
||||||
tagType?: "performer" | "scene";
|
tagType?: "performer" | "scene" | "gallery" | "image";
|
||||||
performer?: Partial<PerformerDataFragment>;
|
performer?: Partial<PerformerDataFragment>;
|
||||||
marker?: Partial<SceneMarkerDataFragment>;
|
marker?: Partial<SceneMarkerDataFragment>;
|
||||||
movie?: Partial<MovieDataFragment>;
|
movie?: Partial<MovieDataFragment>;
|
||||||
@@ -27,10 +27,20 @@ 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) {
|
||||||
if (!props.tagType || props.tagType === "scene") {
|
switch (props.tagType) {
|
||||||
link = NavUtils.makeTagScenesUrl(props.tag);
|
case "scene":
|
||||||
} else {
|
case undefined:
|
||||||
link = NavUtils.makeTagPerformersUrl(props.tag);
|
link = NavUtils.makeTagScenesUrl(props.tag);
|
||||||
|
break;
|
||||||
|
case "performer":
|
||||||
|
link = NavUtils.makeTagPerformersUrl(props.tag);
|
||||||
|
break;
|
||||||
|
case "gallery":
|
||||||
|
link = NavUtils.makeTagGalleriesUrl(props.tag);
|
||||||
|
break;
|
||||||
|
case "image":
|
||||||
|
link = NavUtils.makeTagImagesUrl(props.tag);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
title = props.tag.name || "";
|
title = props.tag.name || "";
|
||||||
} else if (props.performer) {
|
} else if (props.performer) {
|
||||||
|
|||||||
@@ -94,6 +94,24 @@ const makeTagSceneMarkersUrl = (tag: Partial<GQL.TagDataFragment>) => {
|
|||||||
return `/scenes/markers?${filter.makeQueryParameters()}`;
|
return `/scenes/markers?${filter.makeQueryParameters()}`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const makeTagGalleriesUrl = (tag: Partial<GQL.TagDataFragment>) => {
|
||||||
|
if (!tag.id) return "#";
|
||||||
|
const filter = new ListFilterModel(FilterMode.Galleries);
|
||||||
|
const criterion = new TagsCriterion("tags");
|
||||||
|
criterion.value = [{ id: tag.id, label: tag.name || `Tag ${tag.id}` }];
|
||||||
|
filter.criteria.push(criterion);
|
||||||
|
return `/galleries?${filter.makeQueryParameters()}`;
|
||||||
|
};
|
||||||
|
|
||||||
|
const makeTagImagesUrl = (tag: Partial<GQL.TagDataFragment>) => {
|
||||||
|
if (!tag.id) return "#";
|
||||||
|
const filter = new ListFilterModel(FilterMode.Images);
|
||||||
|
const criterion = new TagsCriterion("tags");
|
||||||
|
criterion.value = [{ id: tag.id, label: tag.name || `Tag ${tag.id}` }];
|
||||||
|
filter.criteria.push(criterion);
|
||||||
|
return `/images?${filter.makeQueryParameters()}`;
|
||||||
|
};
|
||||||
|
|
||||||
const makeSceneMarkerUrl = (
|
const makeSceneMarkerUrl = (
|
||||||
sceneMarker: Partial<GQL.SceneMarkerDataFragment>
|
sceneMarker: Partial<GQL.SceneMarkerDataFragment>
|
||||||
) => {
|
) => {
|
||||||
@@ -108,6 +126,8 @@ export default {
|
|||||||
makeTagSceneMarkersUrl,
|
makeTagSceneMarkersUrl,
|
||||||
makeTagScenesUrl,
|
makeTagScenesUrl,
|
||||||
makeTagPerformersUrl,
|
makeTagPerformersUrl,
|
||||||
|
makeTagGalleriesUrl,
|
||||||
|
makeTagImagesUrl,
|
||||||
makeSceneMarkerUrl,
|
makeSceneMarkerUrl,
|
||||||
makeMovieScenesUrl,
|
makeMovieScenesUrl,
|
||||||
makeChildStudiosUrl,
|
makeChildStudiosUrl,
|
||||||
|
|||||||
Reference in New Issue
Block a user