Added scene tags filter.

This commit is contained in:
2024-01-08 02:21:57 +01:00
parent 5db4f18123
commit 7d5efd12ef
17 changed files with 1136 additions and 136 deletions

View File

@@ -1,9 +1,15 @@
<template>
<div class="page">
<Filters v-if="showFilters">
<TagsFilter
:filters="filters"
:tags="aggTags"
@update="updateFilter"
/>
<ActorsFilter
:filters="filters"
:actors="actors"
:actors="aggActors"
@update="updateFilter"
/>
</Filters>
@@ -60,6 +66,7 @@ import events from '#/src/events.js';
import Filters from '#/components/filters/filters.vue';
import ActorsFilter from '#/components/filters/actors.vue';
import TagsFilter from '#/components/filters/tags.vue';
import Scene from './tile.vue';
import Pagination from '../pagination/pagination.vue';
@@ -82,13 +89,15 @@ const {
} = pageProps;
const scenes = ref(pageProps.scenes);
const actors = ref(pageProps.actors);
const aggActors = ref(pageProps.aggActors);
const aggTags = ref(pageProps.aggTags);
const currentPage = ref(Number(routeParams.page));
const total = ref(Number(pageProps.total));
const filters = ref({
actors: urlParsed.search.actors?.split(',').filter(Boolean).map((actorId) => Number(actorId)) || [],
tags: urlParsed.search.tags?.split(',').filter(Boolean) || [],
});
function getPath(targetScope, preserveQuery) {
@@ -118,17 +127,22 @@ async function search(resetPage = true) {
currentPage.value = 1;
}
const query = {};
const query = {
tags: filters.value.tags.join(','),
};
console.log('actor id', actor?.id);
const res = await get('/scenes', {
...query,
actors: [actor?.id, filters.value.actors].filter(Boolean).join(','), // if we're on an actor page, actor ID needs to be included
actors: [actor?.id, filters.value.actors].filter(Boolean).join(','), // if we're on an actor page, that actor ID needs to be included
scope,
page: currentPage.value, // client uses param rather than query pagination
});
scenes.value = res.scenes;
actors.value = res.actors;
aggActors.value = res.aggActors;
aggTags.value = res.aggTags;
total.value = res.total;
console.log(scenes.value);
@@ -144,6 +158,8 @@ async function search(resetPage = true) {
function updateFilter(prop, value, reload = true) {
filters.value[prop] = value;
console.log(prop, value);
if (reload) {
search();
}