Added scene tags filter.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user