Added unidentified actors and actor count filters.

This commit is contained in:
2026-11-11 22:23:50 +01:00
parent 10ac366e87
commit 76ccd3729f
24 changed files with 575 additions and 70 deletions
+10 -2
View File
@@ -46,9 +46,12 @@ watch(() => props.scene, () => {
v-for="actor in [...item.value, ...newActors]"
:key="`actor-${actor.id}`"
class="actor"
:class="{ deleted: edits.actors && !edits.actors.some((actorId) => actorId === actor.id) }"
:class="{
deleted: edits.actors && !edits.actors.some((actorId) => actorId === actor.id),
unknown: actor.isUnknown,
}"
>
<span class="actor-name">{{ actor.name }}</span>
<span class="actor-name">{{ actor.name || ['Unknown', actor.gender].filter(Boolean).join(' ') }}</span>
<Icon
v-if="edits.actors && !edits.actors.some((actorId) => actorId === actor.id)"
@@ -68,6 +71,7 @@ watch(() => props.scene, () => {
<li class="new">
<ActorSearch
:disabled="!editing.has(item.key)"
:show-unknown="true"
@actor="addActor"
>
<Icon
@@ -131,6 +135,10 @@ watch(() => props.scene, () => {
color: var(--glass);
text-decoration: line-through;
}
&.unknown {
color: var(--glass-strong-10);
}
}
.actor,
+13 -2
View File
@@ -41,6 +41,17 @@ const total = ref(pageContext.pageProps.revisionTotal);
const page = Number(pageContext.routeParams.page) || 1;
const limit = Number(pageContext.urlParsed.search.limit) || 100;
function getUnknownName(itemId) {
// unidentified actors are stored as gender_id
if (typeof itemId !== 'string') {
return null;
}
const gender = itemId.match(/^(male|female|transsexual)_/)?.[1];
return ['Unknown', gender].filter(Boolean).join(' ');
}
const mappedKeys = {
actors: actorsById,
// tags: tagsById,
@@ -64,7 +75,7 @@ const curatedRevisions = computed(() => revisions.value.map((revision) => {
if (Array.isArray(value) && mappedKeys[key]) {
return [key, value.map((itemId) => ({
id: itemId,
name: mappedKeys[key].value[itemId]?.name || mappedKeys[key].value[itemId]?.title,
name: mappedKeys[key].value[itemId]?.name || mappedKeys[key].value[itemId]?.title || getUnknownName(itemId),
modified: revision.deltas.some((delta) => delta.key === key && !delta.value.some((deltaItemId) => deltaItemId === itemId)),
}))];
}
@@ -104,7 +115,7 @@ const curatedRevisions = computed(() => revisions.value.map((revision) => {
...delta,
value: delta.value.map((itemId) => ({
id: itemId,
name: mappedKeys[delta.key].value[itemId]?.name || mappedKeys[delta.key].value[itemId]?.title,
name: mappedKeys[delta.key].value[itemId]?.name || mappedKeys[delta.key].value[itemId]?.title || getUnknownName(itemId),
modified: !revision.base[delta.key].includes(itemId),
})),
};
+1 -1
View File
@@ -166,7 +166,7 @@ watch(() => props.scene, () => {
.tags-sections {
display: flex;
flex-direction: column;
gap: .75rem;
gap: 1.5rem;
margin: .5rem 0;
}