Added scene tags filter.
This commit is contained in:
@@ -60,6 +60,10 @@
|
||||
<option value="name.asc">Name</option>
|
||||
<option value="likes.desc">Likes</option>
|
||||
<option value="scenes.desc">Scenes</option>
|
||||
<option
|
||||
value="relevance.desc"
|
||||
:disabled="!q"
|
||||
>Relevance</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@@ -140,6 +144,14 @@ async function search(resetPage = true) {
|
||||
currentPage.value = 1;
|
||||
}
|
||||
|
||||
if (q.value) {
|
||||
order.value = 'relevance.desc';
|
||||
}
|
||||
|
||||
if (!q.value && order.value.includes('relevance')) {
|
||||
order.value = 'likes.desc';
|
||||
}
|
||||
|
||||
const query = {
|
||||
q: q.value || undefined,
|
||||
order: order.value,
|
||||
@@ -245,16 +257,4 @@ function updateFilter(prop, value, reload = true) {
|
||||
grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr));
|
||||
gap: .25rem;
|
||||
}
|
||||
|
||||
.filter {
|
||||
padding: .5rem;
|
||||
|
||||
.input {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
&:not(:last-child) {
|
||||
border-bottom: solid 1px var(--shadow-weak-30);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -3,30 +3,35 @@ import { fetchScenes } from '#/src/scenes.js';
|
||||
import { curateScenesQuery } from '#/src/web/scenes.js';
|
||||
|
||||
export async function onBeforeRender(pageContext) {
|
||||
const [actor] = await fetchActorsById([Number(pageContext.routeParams.actorId)]);
|
||||
const [[actor], actorScenes] = await Promise.all([
|
||||
fetchActorsById([Number(pageContext.routeParams.actorId)]),
|
||||
fetchScenes(await curateScenesQuery({
|
||||
...pageContext.urlQuery,
|
||||
scope: pageContext.routeParams.scope || 'latest',
|
||||
actorId: Number(pageContext.routeParams.actorId),
|
||||
}), {
|
||||
page: Number(pageContext.routeParams.page) || 1,
|
||||
limit: Number(pageContext.urlParsed.search.limit) || 30,
|
||||
aggregate: true,
|
||||
}),
|
||||
]);
|
||||
|
||||
const {
|
||||
scenes,
|
||||
actors,
|
||||
aggActors,
|
||||
aggTags,
|
||||
total,
|
||||
limit,
|
||||
} = await fetchScenes(curateScenesQuery({
|
||||
...pageContext.urlQuery,
|
||||
scope: pageContext.routeParams.scope || 'latest',
|
||||
actorId: Number(pageContext.routeParams.actorId),
|
||||
}), {
|
||||
page: Number(pageContext.routeParams.page) || 1,
|
||||
limit: Number(pageContext.urlParsed.search.limit) || 30,
|
||||
aggregate: true,
|
||||
});
|
||||
} = actorScenes;
|
||||
|
||||
return {
|
||||
pageContext: {
|
||||
title: actor.name,
|
||||
pageProps: {
|
||||
actor,
|
||||
actors,
|
||||
scenes,
|
||||
aggActors,
|
||||
aggTags,
|
||||
total,
|
||||
limit,
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user