Added height and weight filters to actors overview.
This commit is contained in:
parent
cdb47066cc
commit
74e33303ed
|
@ -66,7 +66,7 @@
|
|||
|
||||
<template v-slot:tooltip>
|
||||
<div class="filter-section boobsize">
|
||||
<label class="filter-label off">Size</label>
|
||||
<label class="filter-label off">Size ({{ boobSize[0] }} - {{ boobSize[1] }})</label>
|
||||
|
||||
<span class="filter-split">
|
||||
<Checkbox
|
||||
|
@ -81,7 +81,8 @@
|
|||
:value="boobSize"
|
||||
:values="boobSizes"
|
||||
:disabled="!boobSizeRequired"
|
||||
@change="(sizeRange) => updateValue('boobSize', sizeRange)"
|
||||
@input="(sizeRange) => updateValue('boobSize', sizeRange, false)"
|
||||
@change="(sizeRange) => updateValue('boobSize', sizeRange, true)"
|
||||
>
|
||||
<template v-slot:start>
|
||||
<span class="range-label"><Icon icon="boobs-small" /></span>
|
||||
|
@ -124,6 +125,62 @@
|
|||
</template>
|
||||
</Tooltip>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
<Tooltip class="filter boobs">
|
||||
<span class="filter-trigger"><Icon icon="rulers" />Physique</span>
|
||||
|
||||
<template v-slot:tooltip>
|
||||
<div class="filter-section">
|
||||
<label class="filter-label off">Height ({{ height[0] }} - {{ height[1] }} cm)</label>
|
||||
|
||||
<span class="filter-split">
|
||||
<Checkbox
|
||||
:checked="heightRequired"
|
||||
class="checkbox"
|
||||
@change="(checked) => updateValue('heightRequired', checked)"
|
||||
/>
|
||||
|
||||
<Range
|
||||
:min="50"
|
||||
:max="250"
|
||||
:value="height"
|
||||
:disabled="!heightRequired"
|
||||
@input="(heightRange) => updateValue('height', heightRange, false)"
|
||||
@change="(heightRange) => updateValue('height', heightRange, true)"
|
||||
>
|
||||
<template v-slot:start><Icon icon="shorts" /></template>
|
||||
<template v-slot:end><Icon icon="pants" /></template>
|
||||
</Range>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="filter-section">
|
||||
<label class="filter-label off">Weight ({{ weight[0] }} - {{ weight[1] }} kg)</label>
|
||||
|
||||
<span class="filter-split">
|
||||
<Checkbox
|
||||
:checked="weightRequired"
|
||||
class="checkbox"
|
||||
@change="(checked) => updateValue('weightRequired', checked)"
|
||||
/>
|
||||
|
||||
<Range
|
||||
:min="30"
|
||||
:max="200"
|
||||
:value="weight"
|
||||
:disabled="!weightRequired"
|
||||
@input="(weightRange) => updateValue('weight', weightRange, false)"
|
||||
@change="(weightRange) => updateValue('weight', weightRange, true)"
|
||||
>
|
||||
<template v-slot:start><Icon icon="user6" /></template>
|
||||
<template v-slot:end><Icon icon="user3" /></template>
|
||||
</Range>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
</Tooltip>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
|
@ -163,13 +220,18 @@ function updateFilters() {
|
|||
query: {
|
||||
naturalBoobs: toggleValues[this.naturalBoobs],
|
||||
bs: this.boobSizeRequired ? this.boobSize.join(',') : undefined,
|
||||
h: this.heightRequired ? this.height.join(',') : undefined,
|
||||
w: this.weightRequired ? this.weight.join(',') : undefined,
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function updateValue(prop, value) {
|
||||
function updateValue(prop, value, load = true) {
|
||||
this[prop] = value;
|
||||
this.updateFilters();
|
||||
|
||||
if (load) {
|
||||
this.updateFilters();
|
||||
}
|
||||
}
|
||||
|
||||
async function fetchActors(scroll) {
|
||||
|
@ -182,6 +244,8 @@ async function fetchActors(scroll) {
|
|||
gender: curatedGender === 'other' ? null : curatedGender,
|
||||
boobSize: this.boobSizeRequired && this.boobSize,
|
||||
naturalBoobs: toggleValues[this.naturalBoobs] ?? null,
|
||||
height: this.heightRequired && this.height,
|
||||
weight: this.weightRequired && this.weight,
|
||||
});
|
||||
|
||||
this.actors = actors;
|
||||
|
@ -235,6 +299,10 @@ export default {
|
|||
boobSize: this.$route.query.bs?.split(',') || ['A', 'Z'],
|
||||
boobSizeRequired: !!this.$route.query.bs,
|
||||
naturalBoobs: naturalBoobs > -1 ? naturalBoobs : 1,
|
||||
height: this.$route.query.h?.split(',').map(Number) || [50, 250],
|
||||
heightRequired: !!this.$route.query.h,
|
||||
weight: this.$route.query.w?.split(',').map(Number) || [30, 200],
|
||||
weightRequired: !!this.$route.query.w,
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
|
@ -388,6 +456,11 @@ export default {
|
|||
}
|
||||
}
|
||||
|
||||
.filter-section {
|
||||
width: 15rem;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.filter-label {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
|
@ -408,7 +481,7 @@ export default {
|
|||
|
||||
.checkbox {
|
||||
display: inline-block;
|
||||
padding: 0 0 0 .5rem;
|
||||
padding: 0 .5rem;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
:disabled="disabled"
|
||||
type="range"
|
||||
class="slider"
|
||||
@change="emit"
|
||||
@input="emit('input')"
|
||||
@change="emit('change')"
|
||||
@click.stop
|
||||
>
|
||||
|
||||
|
@ -34,7 +35,8 @@
|
|||
:disabled="disabled"
|
||||
type="range"
|
||||
class="slider"
|
||||
@change="emit"
|
||||
@input="emit('input')"
|
||||
@change="emit('change')"
|
||||
@click.stop
|
||||
>
|
||||
</div>
|
||||
|
@ -59,20 +61,20 @@ function maxValue() {
|
|||
}
|
||||
|
||||
function minPercentage() {
|
||||
return (this.minValue / this.max) * 100;
|
||||
return ((this.minValue - this.min) / (this.max - this.min)) * 100;
|
||||
}
|
||||
|
||||
function maxPercentage() {
|
||||
return (this.maxValue / this.max) * 100;
|
||||
return ((this.maxValue - this.min) / (this.max - this.min)) * 100;
|
||||
}
|
||||
|
||||
function emit() {
|
||||
function emit(type = 'change') {
|
||||
if (this.values) {
|
||||
this.$emit('change', [this.values[this.minValue], this.values[this.maxValue]]);
|
||||
this.$emit(type, [this.values[this.minValue], this.values[this.maxValue]]);
|
||||
return;
|
||||
}
|
||||
|
||||
this.$emit('change', [this.minValue, this.maxValue]);
|
||||
this.$emit(type, [this.minValue, this.maxValue]);
|
||||
}
|
||||
|
||||
function setNearest(event) {
|
||||
|
@ -115,7 +117,7 @@ export default {
|
|||
default: false,
|
||||
},
|
||||
},
|
||||
emits: ['change'],
|
||||
emits: ['change', 'input'],
|
||||
data() {
|
||||
if (this.values) {
|
||||
return {
|
||||
|
|
|
@ -1,8 +1,33 @@
|
|||
<!-- Generated by IcoMoon.io -->
|
||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16">
|
||||
<title>user6</title>
|
||||
<path d="M11.5 5.5c0 2.485-1.567 4.5-3.5 4.5s-3.5-2.015-3.5-4.5c0-2.485 1.567-4.5 3.5-4.5s3.5 2.015 3.5 4.5z"></path>
|
||||
<path d="M7 8.922h2v2.078h-2v-2.078z"></path>
|
||||
<path d="M1 12c0-1.105 3.134-2 7-2s7 0.895 7 2z"></path>
|
||||
<path d="M1 12h14v2h-14v-2z"></path>
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.1"
|
||||
width="16"
|
||||
height="16"
|
||||
viewBox="0 0 16 16"
|
||||
id="svg12">
|
||||
<metadata
|
||||
id="metadata18">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>user6</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs16" />
|
||||
<title
|
||||
id="title2">user6</title>
|
||||
<path
|
||||
id="path4"
|
||||
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-variant-east-asian:normal;font-feature-settings:normal;font-variation-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;shape-margin:0;inline-size:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill-opacity:1;fill-rule:nonzero;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate;stop-color:#000000;stop-opacity:1;stroke:none;opacity:1"
|
||||
d="M 8 1 C 6.067 1 4.5 3.015 4.5 5.5 C 4.5 7.535206 5.5576181 9.2350589 7 9.7910156 L 7 10.029297 C 3.6121657 10.168998 1 10.992951 1 12 L 1 14 L 15 14 L 15 12 C 15 10.992951 12.387834 10.168998 9 10.029297 L 9 9.7910156 C 10.442382 9.2350589 11.5 7.535206 11.5 5.5 C 11.5 3.015 9.933 1 8 1 z " />
|
||||
</svg>
|
||||
|
|
Before Width: | Height: | Size: 417 B After Width: | Height: | Size: 2.4 KiB |
|
@ -268,12 +268,16 @@ function initActorActions(store, router) {
|
|||
gender,
|
||||
naturalBoobs,
|
||||
boobSize,
|
||||
height,
|
||||
weight,
|
||||
}) {
|
||||
const genderFilter = (gender === null && 'gender: { isNull: true }')
|
||||
|| (gender === 'all' && ' ')
|
||||
|| `gender: { equalTo: "${gender}" }`;
|
||||
|
||||
const cupFilter = boobSize ? `cup: { greaterThanOrEqualTo: "${boobSize[0]}", lessThanOrEqualTo: "${boobSize[1]}" }` : '';
|
||||
const heightFilter = height ? `height: { greaterThanOrEqualTo: ${height[0]}, lessThanOrEqualTo: ${height[1]} }` : '';
|
||||
const weightFilter = weight ? `weight: { greaterThanOrEqualTo: ${weight[0]}, lessThanOrEqualTo: ${weight[1]} }` : '';
|
||||
|
||||
const { connection: { actors, totalCount } } = await graphql(`
|
||||
query Actors(
|
||||
|
@ -298,6 +302,8 @@ function initActorActions(store, router) {
|
|||
equalTo: $naturalBoobs
|
||||
}
|
||||
${cupFilter}
|
||||
${heightFilter}
|
||||
${weightFilter}
|
||||
}
|
||||
) {
|
||||
totalCount
|
||||
|
|
Loading…
Reference in New Issue