Compare commits

...

4 Commits

6 changed files with 33 additions and 7 deletions

View File

@ -1,6 +1,5 @@
<template>
<div
v-if="filteredCountries.length > 0"
class="countries-container"
>
<input
@ -11,7 +10,10 @@
class="input input-inline countries-search"
>
<div class="countries-list">
<div
v-if="filteredCountries.length > 0"
class="countries-list"
>
<Countries
v-if="!countryQuery && !filters.country && topCountries.length < filteredCountries.length"
:countries="topCountries"
@ -25,6 +27,10 @@
@country="(alpha2) => emit('update', 'country', alpha2, true)"
/>
</div>
<div class="empty">
No matching countries
</div>
</div>
</template>
@ -75,6 +81,12 @@ const filteredCountries = computed(() => allCountries.value.filter((country) =>
overflow-y: auto;
}
.empty {
padding: .5rem;
color: var(--glass);
font-style: italic;
}
:deep(.country.selected) .country-name {
padding: .5rem;
}

View File

@ -37,6 +37,14 @@
:actors="aggActors"
@update="updateFilter"
/>
<div class="filter">
<Checkbox
:checked="filters.requireCover"
label="Require box cover"
@change="(checked) => updateFilter('requireCover', checked, true)"
/>
</div>
</Filters>
<div class="movies-container">
@ -100,6 +108,7 @@ import YearsFilter from '#/components/filters/years.vue';
import ActorsFilter from '#/components/filters/actors.vue';
import TagsFilter from '#/components/filters/tags.vue';
import ChannelsFilter from '#/components/filters/channels.vue';
import Checkbox from '#/components/form/checkbox.vue';
import Pagination from '#/components/pagination/pagination.vue';
const pageContext = inject('pageContext');
@ -139,6 +148,7 @@ const filters = ref({
tags: urlParsed.search.tags?.split(',').filter(Boolean) || [],
entity: queryEntity,
actors: queryActors,
requireCover: !!urlParsed.search.cover,
});
function getPath(targetScope, preserveQuery) {
@ -178,6 +188,7 @@ async function search(options = {}) {
const query = {
q: filters.value.search || undefined,
cover: filters.value.requireCover || undefined,
};
const entity = filters.value.entity || pageEntity;

4
package-lock.json generated
View File

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

View File

@ -87,7 +87,7 @@
"overrides": {
"vite": "$vite"
},
"version": "0.40.8",
"version": "0.40.10",
"imports": {
"#/*": "./*.js"
}

View File

@ -75,14 +75,12 @@ const networksBySlug = Object.fromEntries(networks.map((network) => [network.slu
const popularNetworks = [
'21sextury',
'adulttime',
'amateurallure',
'analvids',
'bamvisions',
'bang',
'bangbros',
'blowpass',
'brazzers',
'burningangel',
'digitalplayground',
'dogfartnetwork',
'dorcel',
@ -102,6 +100,7 @@ const popularNetworks = [
'pornworld',
'private',
'realitykings',
'rickysroom',
'teamskeet',
'vixen',
'xempire',

View File

@ -287,6 +287,10 @@ async function queryManticoreSql(filters, options) {
builder.whereRaw('any(entity_ids) = ?', filters.entityId);
}
if (filters.requireCover) {
builder.where('has_cover', true);
}
if (typeof filters.isShowcased === 'boolean') {
builder.where('is_showcased', filters.isShowcased);
}