From 28a91efd33d84829259e62e76ad85ee2e0de00ce Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Sun, 24 Mar 2024 18:16:10 +0100 Subject: [PATCH] Fixed various actor filters. Improved tag bar scroll behavior. --- components/actors/actors.vue | 21 +++++++++++---------- components/header/header.vue | 2 +- pages/scene/+Page.vue | 2 +- pages/tags/+Page.vue | 11 ++++++++--- pages/tags/+onBeforeRender.js | 1 + src/actors.js | 20 +++++++++++++++++--- 6 files changed, 39 insertions(+), 18 deletions(-) diff --git a/components/actors/actors.vue b/components/actors/actors.vue index 167fd39..28dfb89 100644 --- a/components/actors/actors.vue +++ b/components/actors/actors.vue @@ -70,7 +70,7 @@ >Relevance - + @@ -261,10 +261,19 @@ function updateFilter(prop, value, reload = true) { align-items: stretch; } +.actors-container { + display: flex; + flex-grow: 1; + flex-direction: column; + box-sizing: border-box; + padding: 0 1rem 1rem 1rem; +} + .actors-header { display: flex; align-items: center; - padding: .5rem 0 .25rem 2rem; + padding: .5rem 0 .25rem 2.25rem; + margin-bottom: .25rem; } .meta { @@ -274,14 +283,6 @@ function updateFilter(prop, value, reload = true) { align-items: center; } -.actors-container { - display: flex; - flex-grow: 1; - flex-direction: column; - box-sizing: border-box; - padding: 0 1rem 1rem 1rem; -} - .actors { display: grid; flex-grow: 1; diff --git a/components/header/header.vue b/components/header/header.vue index 9ba34e1..5625e1d 100644 --- a/components/header/header.vue +++ b/components/header/header.vue @@ -104,7 +104,7 @@ class="menu-button nolink" > - View profile + My profile diff --git a/pages/scene/+Page.vue b/pages/scene/+Page.vue index cfe3676..eacac76 100644 --- a/pages/scene/+Page.vue +++ b/pages/scene/+Page.vue @@ -461,7 +461,7 @@ async function unstash() { } .title { - margin: 0 .5rem 0 0; + margin: 0 .5rem 1rem 0; line-height: 1.25; display: -webkit-box; -webkit-box-orient: vertical; diff --git a/pages/tags/+Page.vue b/pages/tags/+Page.vue index 8a3d074..5f28e1b 100644 --- a/pages/tags/+Page.vue +++ b/pages/tags/+Page.vue @@ -94,20 +94,25 @@ const categoryTitles = { const activeCategory = ref(null); function calculateActiveCategory() { - activeCategory.value = Array.from(document.querySelectorAll('.tags')).reduce((closest, element) => { + const newCategory = Array.from(document.querySelectorAll('.tags')).reduce((closest, element) => { const { top } = element.getBoundingClientRect(); - if (!closest || Math.abs(top) < Math.abs(closest.top)) { + if (!closest || Math.abs(top - 200) < Math.abs(closest.top)) { // slight offset to include bottom category return { category: element.dataset.category, top }; } return closest; }, null).category; + if (newCategory === activeCategory.value) { + return; + } + + activeCategory.value = newCategory; + const activeLink = document.querySelector(`a[href="#${activeCategory.value}"]`); activeLink.scrollIntoView({ - behavior: 'smooth', inline: 'center', }); diff --git a/pages/tags/+onBeforeRender.js b/pages/tags/+onBeforeRender.js index b65ba0b..7eadcb8 100644 --- a/pages/tags/+onBeforeRender.js +++ b/pages/tags/+onBeforeRender.js @@ -32,6 +32,7 @@ const tagSlugs = { 'piercings', ], lgbt: [ + 'lesbian', 'gay', 'bisexual', 'transsexual', diff --git a/src/actors.js b/src/actors.js index 5171530..3b7e7cd 100644 --- a/src/actors.js +++ b/src/actors.js @@ -367,12 +367,24 @@ async function queryManticoreSql(filters, options, _reqUser) { builder.whereRaw('match(\'@name :query:\', actors)', { query: filters.query }); } - ['gender', 'country'].forEach((attribute) => { + // attribute filters + ['country'].forEach((attribute) => { if (filters[attribute]) { builder.where(attribute, filters[attribute]); } }); + if (filters.gender === 'other') { + builder.whereNull('gender'); + } else if (filters.gender) { + builder.where('gender', filters.gender); + } + + if (filters.age) { + builder.select('if(date_of_birth, floor((now() - date_of_birth) / 31556952), 0) as age'); + } + + // range filters ['age', 'height'].forEach((attribute) => { if (filters[attribute]) { builder @@ -396,9 +408,11 @@ async function queryManticoreSql(filters, options, _reqUser) { const month = filters.dateOfBirth.getMonth() + 1; const day = filters.dateOfBirth.getDate(); + builder.select('month(date_of_birth) as month_of_birth, day(date_of_birth) as day_of_birth'); + builder - .where('month(date_of_birth)', month) - .where('day(date_of_birth)', day); + .where('month_of_birth', month) + .where('day_of_birth', day); } if (filters.cup) {