Compare commits

..

4 Commits

6 changed files with 33 additions and 7 deletions

View File

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

View File

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

4
package-lock.json generated
View File

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

View File

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

View File

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

View File

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