No longer using meta table for avatar so edits are reflected immediately.
This commit is contained in:
parent
9e64dd788c
commit
23838889a3
2
common
2
common
|
@ -1 +1 @@
|
||||||
Subproject commit e55818ab448d463c4765c3394a6049280799ec33
|
Subproject commit 3bf8ce6e23a1c6c4c909b1a56b201903bad5b26e
|
|
@ -103,6 +103,7 @@
|
||||||
<li
|
<li
|
||||||
v-if="actor.residence"
|
v-if="actor.residence"
|
||||||
class="bio-item residence hideable"
|
class="bio-item residence hideable"
|
||||||
|
:class="{ hideable: !!actor.origin }"
|
||||||
>
|
>
|
||||||
<dfn class="bio-label"><Icon icon="location" />Lives in</dfn>
|
<dfn class="bio-label"><Icon icon="location" />Lives in</dfn>
|
||||||
|
|
||||||
|
@ -146,14 +147,19 @@
|
||||||
|
|
||||||
<li
|
<li
|
||||||
v-if="actor.naturalBoobs === false || actor.naturalButt === false"
|
v-if="actor.naturalBoobs === false || actor.naturalButt === false"
|
||||||
class="bio-item augmentations"
|
class="bio-item augmentations hideable"
|
||||||
>
|
>
|
||||||
<dfn class="bio-label"><Icon icon="magic-wand2" />Enhanced</dfn>
|
<dfn class="bio-label"><Icon icon="magic-wand2" />Enhanced</dfn>
|
||||||
|
|
||||||
<span class="bio-value">
|
<span class="bio-value">
|
||||||
<div
|
<div
|
||||||
v-if="actor.naturalBoobs === false"
|
v-if="actor.naturalBoobs === false"
|
||||||
:title="[actor.boobsVolume, augmentationMap[actor.boobsPlacement] || actor.boobsPlacement, augmentationMap[actor.boobsImplant] || actor.boobsImplant].filter(Boolean).join(' ')"
|
:title="[
|
||||||
|
actor.boobsVolume && `${actor.boobsVolume}cc`,
|
||||||
|
augmentationMap[actor.boobsPlacement] || actor.boobsPlacement,
|
||||||
|
augmentationMap[actor.boobsIncision] || actor.boobsIncision,
|
||||||
|
augmentationMap[actor.boobsImplant] || actor.boobsImplant
|
||||||
|
].filter(Boolean).join(' ')"
|
||||||
class="augmentations-section"
|
class="augmentations-section"
|
||||||
>Boobs<template v-if="actor.boobsVolume || actor.boobsImplant">: </template>
|
>Boobs<template v-if="actor.boobsVolume || actor.boobsImplant">: </template>
|
||||||
<template v-if="actor.boobsVolume">{{ actor.boobsVolume }}cc</template>
|
<template v-if="actor.boobsVolume">{{ actor.boobsVolume }}cc</template>
|
||||||
|
@ -167,6 +173,19 @@
|
||||||
<template v-if="actor.buttVolume">{{ actor.buttVolume }}cc</template>
|
<template v-if="actor.buttVolume">{{ actor.buttVolume }}cc</template>
|
||||||
<template v-if="actor.buttImplant"> {{ augmentationMap[actor.buttImplant] || actor.buttImplant }}</template>
|
<template v-if="actor.buttImplant"> {{ augmentationMap[actor.buttImplant] || actor.buttImplant }}</template>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-if="actor.naturalLips === false"
|
||||||
|
class="augmentations-section"
|
||||||
|
>Lip filler<template v-if="actor.lipsVolume || actor.lipsImplant">: </template>
|
||||||
|
<template v-if="actor.lipsVolume">{{ actor.lipsVolume }}cc</template>
|
||||||
|
<template v-if="actor.lipsImplant"> {{ augmentationMap[actor.lipsImplant] || actor.lipsImplant }}</template>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-if="actor.naturalLabia === false"
|
||||||
|
class="augmentations-section"
|
||||||
|
>Labiaplasty</div>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
@ -394,6 +413,12 @@ const augmentationMap = {
|
||||||
mms: 'MMS',
|
mms: 'MMS',
|
||||||
over: 'over-muscle',
|
over: 'over-muscle',
|
||||||
under: 'under-muscle',
|
under: 'under-muscle',
|
||||||
|
mammary: 'under breast',
|
||||||
|
areolar: 'areolar',
|
||||||
|
crescent: 'crescent areolar',
|
||||||
|
lollipop: 'lollipop',
|
||||||
|
axillary: 'armpit',
|
||||||
|
umbilical: 'navel',
|
||||||
};
|
};
|
||||||
|
|
||||||
const descriptions = Object.values(Object.fromEntries(props.actor.profiles
|
const descriptions = Object.values(Object.fromEntries(props.actor.profiles
|
||||||
|
@ -695,7 +720,7 @@ const descriptions = Object.values(Object.fromEntries(props.actor.profiles
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: 1;
|
z-index: 1;
|
||||||
bottom: -.75rem;
|
bottom: -.25rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.expand {
|
.expand {
|
||||||
|
@ -776,6 +801,11 @@ const descriptions = Object.values(Object.fromEntries(props.actor.profiles
|
||||||
|
|
||||||
&:not(.expanded) .hideable {
|
&:not(.expanded) .hideable {
|
||||||
display: none;
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* only hide update/actions line if other bio lines and thus the expand button are present */
|
||||||
|
&:not(.expanded) .bio-item + .updated {
|
||||||
|
display: none;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -360,6 +360,28 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-if="edits[item.key].naturalBoobs === false"
|
||||||
|
class="value-section"
|
||||||
|
>
|
||||||
|
<span class="value-label">Incision</span>
|
||||||
|
|
||||||
|
<select
|
||||||
|
v-model="edits[item.key].boobsIncision"
|
||||||
|
class="input"
|
||||||
|
:disabled="!editing.has(item.key)"
|
||||||
|
>
|
||||||
|
<option :value="null" />
|
||||||
|
<option value="mammary">Under breast</option>
|
||||||
|
<option value="areolar">Areola</option>
|
||||||
|
<option value="crescent">Crescent</option>
|
||||||
|
<option value="lollipop">Lollipop</option>
|
||||||
|
<option value="anchor">Anchor</option>
|
||||||
|
<option value="axillary">Armpit</option>
|
||||||
|
<option value="umbilical">Navel</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
v-if="edits[item.key].naturalBoobs === false"
|
v-if="edits[item.key].naturalBoobs === false"
|
||||||
class="value-section value-divide"
|
class="value-section value-divide"
|
||||||
|
@ -429,6 +451,51 @@
|
||||||
<option value="lipo">Lipo without BBL</option>
|
<option value="lipo">Lipo without BBL</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="value-section">
|
||||||
|
<span class="value-label">Natural lips</span>
|
||||||
|
|
||||||
|
<select
|
||||||
|
v-model="edits[item.key].naturalLips"
|
||||||
|
class="input"
|
||||||
|
:disabled="!editing.has(item.key)"
|
||||||
|
>
|
||||||
|
<option :value="null" />
|
||||||
|
<option :value="true">Yes</option>
|
||||||
|
<option :value="false">No</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div
|
||||||
|
v-if="edits[item.key].naturalLips === false"
|
||||||
|
class="value-section"
|
||||||
|
>
|
||||||
|
<span class="value-label">Filler CC</span>
|
||||||
|
|
||||||
|
<input
|
||||||
|
v-model="edits[item.key].lipsVolume"
|
||||||
|
type="number"
|
||||||
|
class="volume input"
|
||||||
|
placeholder="CC"
|
||||||
|
min="50"
|
||||||
|
max="10000"
|
||||||
|
:disabled="!editing.has(item.key)"
|
||||||
|
>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="value-section">
|
||||||
|
<span class="value-label">Natural labia</span>
|
||||||
|
|
||||||
|
<select
|
||||||
|
v-model="edits[item.key].naturalLabia"
|
||||||
|
class="input"
|
||||||
|
:disabled="!editing.has(item.key)"
|
||||||
|
>
|
||||||
|
<option :value="null" />
|
||||||
|
<option :value="true">Yes</option>
|
||||||
|
<option :value="false">No</option>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
|
@ -581,6 +648,8 @@ const user = pageContext.user;
|
||||||
const countries = pageContext.pageProps.countries;
|
const countries = pageContext.pageProps.countries;
|
||||||
const actor = ref(pageContext.pageProps.actor);
|
const actor = ref(pageContext.pageProps.actor);
|
||||||
|
|
||||||
|
console.log(actor.value);
|
||||||
|
|
||||||
const topCountries = [
|
const topCountries = [
|
||||||
'AU',
|
'AU',
|
||||||
'BR',
|
'BR',
|
||||||
|
@ -717,10 +786,14 @@ const fields = computed(() => [
|
||||||
boobsVolume: actor.value.boobsVolume,
|
boobsVolume: actor.value.boobsVolume,
|
||||||
boobsImplant: actor.value.boobsImplant,
|
boobsImplant: actor.value.boobsImplant,
|
||||||
boobsPlacement: actor.value.boobsPlacement,
|
boobsPlacement: actor.value.boobsPlacement,
|
||||||
|
boobsIncision: actor.value.boobsIncision,
|
||||||
boobsSurgeon: actor.value.boobsSurgeon,
|
boobsSurgeon: actor.value.boobsSurgeon,
|
||||||
naturalButt: actor.value.naturalButt,
|
naturalButt: actor.value.naturalButt,
|
||||||
buttVolume: actor.value.buttVolume,
|
buttVolume: actor.value.buttVolume,
|
||||||
buttImplant: actor.value.buttImplant,
|
buttImplant: actor.value.buttImplant,
|
||||||
|
naturalLips: actor.value.naturalLips,
|
||||||
|
lipsVolume: actor.value.lipsVolume,
|
||||||
|
naturalLabia: actor.value.naturalLabia,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
|
@ -22,6 +22,35 @@ import { interpolateProfiles } from '../common/actors.mjs'; // eslint-disable-li
|
||||||
const logger = initLogger();
|
const logger = initLogger();
|
||||||
const mj = new MerkleJson();
|
const mj = new MerkleJson();
|
||||||
|
|
||||||
|
const keyMap = {
|
||||||
|
avatar: 'avatar_media_id',
|
||||||
|
dateOfBirth: 'date_of_birth',
|
||||||
|
dateOfDeath: 'date_of_death',
|
||||||
|
originCountry: 'birth_country_alpha2',
|
||||||
|
originState: 'birth_state',
|
||||||
|
originCity: 'birth_city',
|
||||||
|
residenceCountry: 'residence_country_alpha2',
|
||||||
|
residenceState: 'residence_state',
|
||||||
|
residenceCity: 'residence_city',
|
||||||
|
hairColor: 'hair_color',
|
||||||
|
naturalBoobs: 'natural_boobs',
|
||||||
|
boobsVolume: 'boobs_volume',
|
||||||
|
boobsImplant: 'boobs_implant',
|
||||||
|
boobsPlacement: 'boobs_placement',
|
||||||
|
boobsIncision: 'boobs_incision',
|
||||||
|
boobsSurgeon: 'boobs_surgeon',
|
||||||
|
naturalButt: 'natural_butt',
|
||||||
|
buttVolume: 'butt_volume',
|
||||||
|
buttImplant: 'butt_implant',
|
||||||
|
naturalLips: 'natural_lips',
|
||||||
|
lipsVolume: 'lips_volume',
|
||||||
|
naturalLabia: 'natural_labia',
|
||||||
|
penisLength: 'penis_length',
|
||||||
|
penisGirth: 'penis_girth',
|
||||||
|
hasTattoos: 'has_tattoos',
|
||||||
|
hasPiercings: 'has_piercings',
|
||||||
|
};
|
||||||
|
|
||||||
export function curateActor(actor, context = {}) {
|
export function curateActor(actor, context = {}) {
|
||||||
return {
|
return {
|
||||||
id: actor.id,
|
id: actor.id,
|
||||||
|
@ -29,25 +58,14 @@ export function curateActor(actor, context = {}) {
|
||||||
name: actor.name,
|
name: actor.name,
|
||||||
gender: actor.gender,
|
gender: actor.gender,
|
||||||
age: actor.age,
|
age: actor.age,
|
||||||
dateOfBirth: actor.date_of_birth,
|
...Object.fromEntries(Object.entries(keyMap).map(([key, entryKey]) => [key, actor[entryKey]])),
|
||||||
ageFromBirth: actor.date_of_birth && differenceInYears(Date.now(), actor.date_of_birth),
|
ageFromBirth: actor.date_of_birth && differenceInYears(Date.now(), actor.date_of_birth),
|
||||||
ageThen: context.sceneDate && actor.date_of_birth && differenceInYears(context.sceneDate, actor.date_of_birth),
|
ageThen: context.sceneDate && actor.date_of_birth && differenceInYears(context.sceneDate, actor.date_of_birth),
|
||||||
dateOfDeath: actor.date_of_death,
|
|
||||||
bust: actor.bust,
|
bust: actor.bust,
|
||||||
cup: actor.cup,
|
cup: actor.cup,
|
||||||
waist: actor.waist,
|
waist: actor.waist,
|
||||||
hip: actor.hip,
|
hip: actor.hip,
|
||||||
naturalBoobs: actor.natural_boobs,
|
circumcised: actor.circumcised,
|
||||||
boobsVolume: actor.boobs_volume,
|
|
||||||
boobsImplant: actor.boobs_implant,
|
|
||||||
boobsPlacement: actor.boobs_placement,
|
|
||||||
boobsSurgeon: actor.boobs_surgeon,
|
|
||||||
naturalButt: actor.natural_butt,
|
|
||||||
buttVolume: actor.butt_volume,
|
|
||||||
buttImplant: actor.butt_implant,
|
|
||||||
penisLength: actor.penis_length,
|
|
||||||
penisGirth: actor.penis_girth,
|
|
||||||
isCircumcised: actor.is_circumcised,
|
|
||||||
height: actor.height && {
|
height: actor.height && {
|
||||||
metric: actor.height,
|
metric: actor.height,
|
||||||
imperial: unit(actor.height, 'cm').splitUnit(['ft', 'in']).map((value) => Math.round(value.toNumber())),
|
imperial: unit(actor.height, 'cm').splitUnit(['ft', 'in']).map((value) => Math.round(value.toNumber())),
|
||||||
|
@ -57,10 +75,7 @@ export function curateActor(actor, context = {}) {
|
||||||
imperial: Math.round(unit(actor.weight, 'kg').toNumeric('lbs')),
|
imperial: Math.round(unit(actor.weight, 'kg').toNumeric('lbs')),
|
||||||
},
|
},
|
||||||
eyes: actor.eyes,
|
eyes: actor.eyes,
|
||||||
hairColor: actor.hair_color,
|
|
||||||
hasTattoos: actor.has_tattoos,
|
|
||||||
tattoos: actor.tattoos,
|
tattoos: actor.tattoos,
|
||||||
hasPiercings: actor.has_piercings,
|
|
||||||
piercings: actor.piercings,
|
piercings: actor.piercings,
|
||||||
origin: actor.birth_country_alpha2 && {
|
origin: actor.birth_country_alpha2 && {
|
||||||
country: actor.birth_country_alpha2 && {
|
country: actor.birth_country_alpha2 && {
|
||||||
|
@ -130,7 +145,8 @@ export async function fetchActorsById(actorIds, options = {}, reqUser) {
|
||||||
knex('actors')
|
knex('actors')
|
||||||
.select(
|
.select(
|
||||||
'actors.*',
|
'actors.*',
|
||||||
'actors_meta.*',
|
'actors_meta.stashed',
|
||||||
|
knex.raw('row_to_json(avatars) as avatar'),
|
||||||
'birth_countries.alpha2 as birth_country_alpha2',
|
'birth_countries.alpha2 as birth_country_alpha2',
|
||||||
knex.raw('COALESCE(birth_countries.alias, birth_countries.name) as birth_country_name'),
|
knex.raw('COALESCE(birth_countries.alias, birth_countries.name) as birth_country_name'),
|
||||||
'residence_countries.alpha2 as residence_country_alpha2',
|
'residence_countries.alpha2 as residence_country_alpha2',
|
||||||
|
@ -139,6 +155,7 @@ export async function fetchActorsById(actorIds, options = {}, reqUser) {
|
||||||
.leftJoin('actors_meta', 'actors_meta.actor_id', 'actors.id')
|
.leftJoin('actors_meta', 'actors_meta.actor_id', 'actors.id')
|
||||||
.leftJoin('countries as birth_countries', 'birth_countries.alpha2', 'actors.birth_country_alpha2')
|
.leftJoin('countries as birth_countries', 'birth_countries.alpha2', 'actors.birth_country_alpha2')
|
||||||
.leftJoin('countries as residence_countries', 'residence_countries.alpha2', 'actors.residence_country_alpha2')
|
.leftJoin('countries as residence_countries', 'residence_countries.alpha2', 'actors.residence_country_alpha2')
|
||||||
|
.leftJoin('media as avatars', 'avatars.id', 'actors.avatar_media_id')
|
||||||
.whereIn('actors.id', actorIds)
|
.whereIn('actors.id', actorIds)
|
||||||
.modify((builder) => {
|
.modify((builder) => {
|
||||||
if (options.order) {
|
if (options.order) {
|
||||||
|
@ -459,32 +476,6 @@ export async function fetchActorRevisions(revisionId, filters = {}, reqUser) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const keyMap = {
|
|
||||||
avatar: 'avatar_media_id',
|
|
||||||
dateOfBirth: 'date_of_birth',
|
|
||||||
dateOfDeath: 'date_of_death',
|
|
||||||
originCountry: 'birth_country_alpha2',
|
|
||||||
originState: 'birth_state',
|
|
||||||
originCity: 'birth_city',
|
|
||||||
residenceCountry: 'residence_country_alpha2',
|
|
||||||
residenceState: 'residence_state',
|
|
||||||
residenceCity: 'residence_city',
|
|
||||||
hairColor: 'hair_color',
|
|
||||||
naturalBoobs: 'natural_boobs',
|
|
||||||
boobsVolume: 'boobs_volume',
|
|
||||||
boobsImplant: 'boobs_implant',
|
|
||||||
boobsPlacement: 'boobs_placement',
|
|
||||||
boobsSurgeon: 'boobs_surgeon',
|
|
||||||
naturalButt: 'natural_butt',
|
|
||||||
buttVolume: 'butt_volume',
|
|
||||||
buttImplant: 'butt_implant',
|
|
||||||
penisLength: 'penis_length',
|
|
||||||
penisGirth: 'penis_girth',
|
|
||||||
isCircumcised: 'circumcised',
|
|
||||||
hasTattoos: 'has_tattoos',
|
|
||||||
hasPiercings: 'has_piercings',
|
|
||||||
};
|
|
||||||
|
|
||||||
async function applyActorValueDelta(profileId, delta, trx) {
|
async function applyActorValueDelta(profileId, delta, trx) {
|
||||||
return knex('actors_profiles')
|
return knex('actors_profiles')
|
||||||
.where('id', profileId)
|
.where('id', profileId)
|
||||||
|
@ -587,10 +578,14 @@ async function applyActorRevision(revisionIds, reqUser) {
|
||||||
'boobsVolume',
|
'boobsVolume',
|
||||||
'boobsImplant',
|
'boobsImplant',
|
||||||
'boobsPlacement',
|
'boobsPlacement',
|
||||||
|
'boobsIncision',
|
||||||
'boobsSurgeon',
|
'boobsSurgeon',
|
||||||
'naturalButt',
|
'naturalButt',
|
||||||
'buttVolume',
|
'buttVolume',
|
||||||
'buttImplant',
|
'buttImplant',
|
||||||
|
'naturalLips',
|
||||||
|
'lipsVolume',
|
||||||
|
'naturalLabia',
|
||||||
'penisLength',
|
'penisLength',
|
||||||
'penisGirth',
|
'penisGirth',
|
||||||
'isCircumcised',
|
'isCircumcised',
|
||||||
|
@ -631,7 +626,7 @@ async function applyActorRevision(revisionIds, reqUser) {
|
||||||
moment,
|
moment,
|
||||||
slugify,
|
slugify,
|
||||||
omit,
|
omit,
|
||||||
});
|
}, { refreshView: false });
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function reviewActorRevision(revisionId, isApproved, { feedback }, reqUser) {
|
export async function reviewActorRevision(revisionId, isApproved, { feedback }, reqUser) {
|
||||||
|
|
Loading…
Reference in New Issue