2019-06-03 03:31:38 +00:00
|
|
|
<template>
|
2019-11-10 03:20:22 +00:00
|
|
|
<div
|
|
|
|
v-if="actor"
|
|
|
|
class="content actor"
|
|
|
|
>
|
2019-11-15 04:10:59 +00:00
|
|
|
<FilterBar :fetch-releases="fetchReleases" />
|
|
|
|
|
2019-11-10 03:20:22 +00:00
|
|
|
<div class="header">
|
2019-11-27 03:58:38 +00:00
|
|
|
<img
|
|
|
|
v-if="actor.avatars && actor.avatars.length > 0"
|
|
|
|
:src="`/media/${actor.avatars[0].path}`"
|
|
|
|
class="avatar"
|
|
|
|
>
|
|
|
|
|
|
|
|
<ul class="bio sidebar nolist">
|
|
|
|
<h2 class="title">{{ actor.name }}</h2>
|
|
|
|
|
2019-11-10 03:20:22 +00:00
|
|
|
|
|
|
|
<li v-if="actor.aliases.length">
|
|
|
|
<dfn class="bio-heading">Also known as</dfn>
|
|
|
|
<span>{{ actor.aliases.join(', ') }}</span>
|
|
|
|
</li>
|
|
|
|
|
2019-11-19 03:36:15 +00:00
|
|
|
<li v-if="actor.gender">
|
|
|
|
<dfn class="bio-heading">Gender</dfn>
|
|
|
|
<span>{{ actor.gender }}</span>
|
|
|
|
</li>
|
|
|
|
|
2019-11-17 02:56:45 +00:00
|
|
|
<li v-if="actor.birthdate">
|
|
|
|
<dfn class="bio-heading">Date of birth</dfn>
|
|
|
|
<span>{{ formatDate(actor.birthdate, 'MMMM D, YYYY') }} ({{ age }})</span>
|
|
|
|
</li>
|
|
|
|
|
|
|
|
<li v-if="actor.birthCountry || actor.birthPlace">
|
2019-11-10 03:20:22 +00:00
|
|
|
<dfn class="bio-heading">Born in</dfn>
|
2019-11-17 02:56:45 +00:00
|
|
|
|
|
|
|
<span v-if="actor.birthCountry">
|
|
|
|
<img
|
|
|
|
class="flag"
|
|
|
|
:src="`/img/flags/${actor.birthCountry.alpha2.toLowerCase()}.svg`"
|
|
|
|
>{{ actor.birthCountry.name }}
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span v-if="actor.birthPlace">{{ actor.birthPlace }}</span>
|
2019-11-10 03:20:22 +00:00
|
|
|
</li>
|
|
|
|
|
2019-11-17 02:56:45 +00:00
|
|
|
<li v-if="actor.residenceCountry || actor.residencePlace">
|
|
|
|
<dfn class="bio-heading">Lives in</dfn>
|
|
|
|
|
|
|
|
<span v-if="actor.residenceCountry">
|
|
|
|
<img
|
|
|
|
class="flag"
|
|
|
|
:src="`/img/flags/${actor.residenceCountry.alpha2.toLowerCase()}.svg`"
|
|
|
|
>{{ actor.residenceCountry.name }}
|
|
|
|
</span>
|
|
|
|
|
|
|
|
<span v-if="actor.residencePlace">{{ actor.residencePlace }}</span>
|
2019-11-10 03:20:22 +00:00
|
|
|
</li>
|
|
|
|
|
2019-11-19 03:36:15 +00:00
|
|
|
<li v-if="actor.ethnicity">
|
2019-11-10 03:20:22 +00:00
|
|
|
<dfn class="bio-heading">Ethnicity</dfn>
|
2019-11-17 02:56:45 +00:00
|
|
|
<span>{{ actor.ethnicity }}</span>
|
2019-11-10 03:20:22 +00:00
|
|
|
</li>
|
|
|
|
|
2019-11-17 02:56:45 +00:00
|
|
|
<li v-if="actor.height">
|
2019-11-10 03:20:22 +00:00
|
|
|
<dfn class="bio-heading">Height</dfn>
|
2019-11-20 03:53:36 +00:00
|
|
|
<span>{{ actor.height }} cm</span>
|
2019-11-10 03:20:22 +00:00
|
|
|
</li>
|
|
|
|
|
2019-11-21 03:05:32 +00:00
|
|
|
<li v-if="actor.bust || actor.waist || actor.hip">
|
|
|
|
<dfn class="bio-heading">Measurements</dfn>
|
2019-11-21 10:43:07 +00:00
|
|
|
<span>{{ actor.bust || '??' }}-{{ actor.waist || '??' }}-{{ actor.hip || '??' }} <span v-if="actor.naturalBoobs !== undefined">({{ actor.naturalBoobs ? 'Natural' : 'Enhanced' }})</span></span>
|
2019-11-10 03:20:22 +00:00
|
|
|
</li>
|
2019-11-21 03:24:55 +00:00
|
|
|
|
|
|
|
<li v-if="actor.social && actor.social.length > 0">
|
|
|
|
<dfn class="bio-heading">Social</dfn>
|
2019-11-27 03:58:38 +00:00
|
|
|
<a
|
|
|
|
v-for="social in actor.social"
|
|
|
|
:key="`social-${social.id}`"
|
|
|
|
:href="social.url"
|
|
|
|
target="_blank"
|
|
|
|
rel="noopener noreferrer"
|
|
|
|
class="social"
|
|
|
|
>{{ social.platform || social.url }}</a>
|
2019-11-21 03:24:55 +00:00
|
|
|
</li>
|
2019-11-27 03:58:38 +00:00
|
|
|
|
|
|
|
<li class="description">{{ actor.description }}</li>
|
|
|
|
|
|
|
|
<div class="photos">
|
|
|
|
<img
|
|
|
|
v-for="avatar in actor.avatars.slice(1)"
|
|
|
|
:key="`avatar-${avatar.id}`"
|
|
|
|
:src="`/media/${avatar.path}`"
|
|
|
|
class="photo"
|
|
|
|
>
|
|
|
|
</div>
|
2019-11-10 03:20:22 +00:00
|
|
|
</ul>
|
|
|
|
|
2019-11-27 03:58:38 +00:00
|
|
|
</div>
|
2019-11-20 03:53:36 +00:00
|
|
|
|
2019-11-27 03:58:38 +00:00
|
|
|
<div class="content-inner">
|
2019-11-16 02:33:36 +00:00
|
|
|
<Releases
|
|
|
|
:releases="releases"
|
|
|
|
:context="actor.name"
|
|
|
|
/>
|
2019-11-10 03:20:22 +00:00
|
|
|
</div>
|
2019-06-03 03:31:38 +00:00
|
|
|
</div>
|
|
|
|
</template>
|
2019-11-10 03:20:22 +00:00
|
|
|
|
|
|
|
<script>
|
2019-11-17 02:56:45 +00:00
|
|
|
import dayjs from 'dayjs';
|
|
|
|
|
2019-11-15 04:10:59 +00:00
|
|
|
import FilterBar from '../header/filter-bar.vue';
|
2019-11-16 02:33:36 +00:00
|
|
|
import Releases from '../releases/releases.vue';
|
2019-11-10 03:20:22 +00:00
|
|
|
|
2019-11-17 02:56:45 +00:00
|
|
|
function age() {
|
|
|
|
return dayjs(new Date()).diff(this.actor.birthdate, 'years');
|
|
|
|
}
|
|
|
|
|
2019-11-15 04:10:59 +00:00
|
|
|
async function fetchReleases() {
|
2019-11-10 03:20:22 +00:00
|
|
|
this.releases = await this.$store.dispatch('fetchActorReleases', this.$route.params.actorSlug);
|
2019-11-15 04:10:59 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
async function mounted() {
|
|
|
|
[[this.actor]] = await Promise.all([
|
|
|
|
this.$store.dispatch('fetchActors', this.$route.params.actorSlug),
|
|
|
|
this.fetchReleases(),
|
|
|
|
]);
|
2019-11-10 03:20:22 +00:00
|
|
|
|
|
|
|
this.pageTitle = this.actor.name;
|
|
|
|
}
|
|
|
|
|
|
|
|
export default {
|
|
|
|
components: {
|
2019-11-15 04:10:59 +00:00
|
|
|
FilterBar,
|
2019-11-16 02:33:36 +00:00
|
|
|
Releases,
|
2019-11-10 03:20:22 +00:00
|
|
|
},
|
|
|
|
data() {
|
|
|
|
return {
|
|
|
|
actor: null,
|
|
|
|
releases: null,
|
|
|
|
pageTitle: null,
|
|
|
|
};
|
|
|
|
},
|
2019-11-17 02:56:45 +00:00
|
|
|
computed: {
|
|
|
|
age,
|
|
|
|
},
|
2019-11-10 03:20:22 +00:00
|
|
|
mounted,
|
2019-11-15 04:10:59 +00:00
|
|
|
methods: {
|
|
|
|
fetchReleases,
|
|
|
|
},
|
2019-11-10 03:20:22 +00:00
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<style lang="scss" scoped>
|
|
|
|
@import 'theme';
|
|
|
|
|
|
|
|
.header {
|
|
|
|
display: flex;
|
|
|
|
justify-content: space-between;
|
|
|
|
padding: 1rem;
|
|
|
|
}
|
|
|
|
|
|
|
|
.title {
|
|
|
|
display: inline-block;
|
|
|
|
margin: 0 .5rem 0 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.heading {
|
|
|
|
padding: 0;
|
|
|
|
margin: 0 0 1rem 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
.bio-heading {
|
|
|
|
display: inline-block;
|
|
|
|
font-weight: bold;
|
|
|
|
margin: .5rem 0 0 0;
|
|
|
|
|
|
|
|
&::after {
|
|
|
|
content: ':';
|
|
|
|
}
|
|
|
|
}
|
2019-11-17 02:56:45 +00:00
|
|
|
|
2019-11-20 03:53:36 +00:00
|
|
|
.description {
|
|
|
|
padding: 1rem;
|
|
|
|
}
|
|
|
|
|
|
|
|
.avatar {
|
|
|
|
height: 20rem;
|
|
|
|
margin: 0 1rem 0 0;
|
2019-11-27 03:58:38 +00:00
|
|
|
display: block;
|
|
|
|
}
|
|
|
|
|
|
|
|
.photo {
|
|
|
|
height: 10rem;
|
|
|
|
}
|
|
|
|
|
|
|
|
.social {
|
|
|
|
display: block;
|
2019-11-20 03:53:36 +00:00
|
|
|
}
|
|
|
|
|
2019-11-17 02:56:45 +00:00
|
|
|
.flag {
|
|
|
|
height: 1rem;
|
|
|
|
border: solid 1px $shadow-weak;
|
|
|
|
margin: 0 .25rem 0 0;
|
|
|
|
}
|
2019-11-27 03:58:38 +00:00
|
|
|
|
|
|
|
.releases {
|
|
|
|
flex-grow: 1;
|
|
|
|
}
|
2019-11-10 03:20:22 +00:00
|
|
|
</style>
|