Compare commits

...

2 Commits

Author SHA1 Message Date
8a734b9fa9 0.46.24 2026-03-04 02:52:57 +01:00
34ca806e84 Displaying actor-specific scene tags. 2026-03-04 02:52:55 +01:00
5 changed files with 42 additions and 18 deletions

4
package-lock.json generated
View File

@@ -1,11 +1,11 @@
{
"name": "traxxx-web",
"version": "0.46.23",
"version": "0.46.24",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"version": "0.46.23",
"version": "0.46.24",
"dependencies": {
"@brillout/json-serializer": "^0.5.8",
"@dicebear/collection": "^7.0.5",

View File

@@ -92,7 +92,7 @@
"overrides": {
"vite": "$vite"
},
"version": "0.46.23",
"version": "0.46.24",
"imports": {
"#/*": "./*.js"
}

View File

@@ -140,20 +140,27 @@
</li>
</ul>
<ul
v-if="scene.tags.length > 0"
class="tags nolist"
<div
v-for="actorTags in tags"
:key="`tags-${actorTags.actor?.name || 'scene'}`"
>
<li
v-for="tag in scene.tags"
:key="`tag-${tag.id}`"
>
<Link
:href="`/tag/${tag.slug}`"
class="tag nolink"
>{{ tag.name }}</Link>
</li>
</ul>
<ul class="tags nolist">
<li
v-if="actorTags.actor"
class="tags-actor"
>{{ actorTags.actor.name }}:</li>
<li
v-for="tag in actorTags.tags"
:key="`tag-${tag.id}`"
>
<Link
:href="`/tag/${tag.slug}`"
class="tag nolink"
>{{ tag.name }}</Link>
</li>
</ul>
</div>
<div
v-if="scene.movies.length > 0 || scene.series.length > 0"
@@ -440,6 +447,17 @@ const {
const { scene } = pageProps;
const tags = [
...scene.actors.map((actor) => ({
actor,
tags: scene.tags.filter((tag) => tag.actorId === actor.id),
})),
{
tags: scene.tags.filter((tag) => tag.actorId === null),
actor: null,
},
].filter((actorTags) => actorTags.tags.length > 0);
const showSummaryDialog = ref(false);
const qualities = {
@@ -640,6 +658,11 @@ function copySummary() {
margin-bottom: 1rem;
}
.tags-actor {
margin-right: .5rem;
font-weight: bold;
}
.actors {
display: flex;
flex-grow: 1;

View File

@@ -82,6 +82,7 @@ function curateScene(rawScene, assets, reqUser, context) {
slug: tag.slug,
name: censor(tag.name, context.restriction),
priority: tag.priority,
actorId: tag.actor_id,
})),
chapters: assets.chapters.map((chapter) => ({
id: chapter.id,
@@ -218,7 +219,7 @@ export async function fetchScenesById(sceneIds, { reqUser, ...context } = {}) {
.whereIn('release_id', sceneIds)
.leftJoin('actors as directors', 'directors.id', 'releases_directors.director_id'),
tags: knex('releases_tags')
.select('tags.id', 'slug', 'name', 'priority', 'release_id')
.select('tags.id', 'slug', 'name', 'priority', 'release_id', 'actor_id')
.leftJoin('tags', 'tags.id', 'releases_tags.tag_id')
.whereNotNull('tags.id')
.whereIn('release_id', sceneIds)

2
static

Submodule static updated: 305454e97a...a91edb84a1