forked from DebaucheryLibrarian/traxxx
Added chapters and shoot location. Added In The Crack.
This commit is contained in:
@@ -105,18 +105,20 @@ function sfw() {
|
||||
}
|
||||
|
||||
function photos() {
|
||||
const photosWithChapterPosters = (this.release.photos || []).concat(this.release.chapters ? this.release.chapters.map(chapter => chapter.poster) : []);
|
||||
|
||||
if (this.release.trailer || this.release.teaser) {
|
||||
// poster will be on trailer video
|
||||
return this.release.photos;
|
||||
return photosWithChapterPosters;
|
||||
}
|
||||
|
||||
if (this.release.poster) {
|
||||
// no trailer, add poster to photos
|
||||
return [this.release.poster].concat(this.release.photos);
|
||||
return [this.release.poster].concat(this.release.photos).concat(photosWithChapterPosters);
|
||||
}
|
||||
|
||||
// no poster available
|
||||
return this.release.photos;
|
||||
return photosWithChapterPosters;
|
||||
}
|
||||
|
||||
export default {
|
||||
|
||||
@@ -53,6 +53,7 @@ export default {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(25rem, 1fr));
|
||||
grid-gap: 1rem;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
@media(max-width: $breakpoint) {
|
||||
|
||||
@@ -99,6 +99,51 @@
|
||||
<p class="description">{{ release.description }}</p>
|
||||
</div>
|
||||
|
||||
<ul
|
||||
v-if="release.chapters && release.chapters.length > 0"
|
||||
class="chapters row nolist"
|
||||
>
|
||||
<span class="row-label">Chapters</span>
|
||||
<li
|
||||
v-for="chapter in release.chapters"
|
||||
:key="`chapter-${chapter.id}`"
|
||||
class="chapter"
|
||||
>
|
||||
<a
|
||||
v-if="chapter.poster"
|
||||
:href="`/media/${chapter.poster.path}`"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
class="chapter-poster-link"
|
||||
>
|
||||
<img
|
||||
:src="`/media/${chapter.poster.thumbnail}`"
|
||||
class="chapter-poster"
|
||||
>
|
||||
</a>
|
||||
|
||||
<div class="chapter-info">
|
||||
<div class="chapter-header">
|
||||
<h3 class="chapter-title">{{ chapter.title }}</h3>
|
||||
<span
|
||||
v-if="chapter.duration"
|
||||
class="chapter-duration"
|
||||
>{{ chapter.duration }}</span>
|
||||
</div>
|
||||
|
||||
<p
|
||||
v-if="chapter.description"
|
||||
class="chapter-description"
|
||||
>{{ chapter.description }}</p>
|
||||
|
||||
<ul class="nolist"><li
|
||||
v-for="tag in chapter.tags"
|
||||
:key="`chapter-tag-${tag.id}`"
|
||||
>{{ tag.name }}</li></ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="row row-tidbits">
|
||||
<div
|
||||
v-if="release.duration"
|
||||
@@ -143,6 +188,32 @@
|
||||
<span class="row-label">Shoot date</span>
|
||||
{{ formatDate(release.productionDate, 'MMMM D, YYYY') }}
|
||||
</div>
|
||||
|
||||
<div
|
||||
v-if="release.productionLocation"
|
||||
class="row-tidbit"
|
||||
>
|
||||
<span class="row-label">Location</span>
|
||||
<span class="location">
|
||||
<span
|
||||
v-if="release.productionLocation.city"
|
||||
class="location-segment"
|
||||
>{{ release.productionLocation.city }}, </span>
|
||||
<span
|
||||
v-if="release.productionLocation.state"
|
||||
class="location-segment"
|
||||
>{{ release.productionLocation.state }}, </span>
|
||||
<span
|
||||
v-if="release.productionLocation.country"
|
||||
class="location-segment"
|
||||
>{{ release.productionLocation.country.alias || release.productionLocation.country.name }}
|
||||
<img
|
||||
class="flag"
|
||||
:src="`/img/flags/${release.productionLocation.country.alpha2.toLowerCase()}.svg`"
|
||||
>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div
|
||||
@@ -324,6 +395,41 @@ export default {
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.chapter {
|
||||
display: flex;
|
||||
background: var(--background);
|
||||
box-shadow: 0 0 3px var(--shadow-weak);
|
||||
margin: 0 0 .5rem 0;
|
||||
}
|
||||
|
||||
.chapter-poster {
|
||||
width: 12rem;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
}
|
||||
|
||||
.chapter-info {
|
||||
flex-grow: 1;
|
||||
padding: 1rem 1rem .5rem 1rem;
|
||||
}
|
||||
|
||||
.chapter-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.chapter-title {
|
||||
display: inline-block;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.flag {
|
||||
height: 1rem;
|
||||
margin: 0 0 -.15rem .1rem;
|
||||
}
|
||||
|
||||
.link {
|
||||
display: inline-flex;
|
||||
color: var(--link);
|
||||
|
||||
@@ -69,6 +69,7 @@ function curateRelease(release) {
|
||||
|
||||
if (release.scenes) curatedRelease.scenes = release.scenes.map(({ scene }) => curateRelease(scene));
|
||||
if (release.movies) curatedRelease.movies = release.movies.map(({ movie }) => curateRelease(movie));
|
||||
if (release.chapters) curatedRelease.chapters = release.chapters.map(chapter => curateRelease(chapter));
|
||||
if (release.photos) curatedRelease.photos = release.photos.map(({ media }) => media);
|
||||
if (release.covers) curatedRelease.covers = release.covers.map(({ media }) => media);
|
||||
if (release.trailer) curatedRelease.trailer = release.trailer.media;
|
||||
@@ -77,6 +78,15 @@ function curateRelease(release) {
|
||||
if (release.movieTags && release.movieTags.length > 0) curatedRelease.tags = release.movieTags.map(({ tag }) => tag);
|
||||
if (release.movieActors && release.movieActors.length > 0) curatedRelease.actors = release.movieActors.map(({ actor }) => curateActor(actor, curatedRelease));
|
||||
|
||||
if (release.productionLocation) {
|
||||
curatedRelease.productionLocation = {
|
||||
raw: release.productionLocation,
|
||||
city: release.productionCity,
|
||||
state: release.productionState,
|
||||
country: release.productionCountry,
|
||||
};
|
||||
}
|
||||
|
||||
return curatedRelease;
|
||||
}
|
||||
|
||||
|
||||
@@ -237,6 +237,14 @@ const releaseFragment = `
|
||||
createdAt
|
||||
shootId
|
||||
productionDate
|
||||
productionLocation
|
||||
productionCity
|
||||
productionState
|
||||
productionCountry: countryByProductionCountryAlpha2 {
|
||||
alpha2
|
||||
name
|
||||
alias
|
||||
}
|
||||
comment
|
||||
url
|
||||
${releaseActorsFragment}
|
||||
@@ -247,6 +255,35 @@ const releaseFragment = `
|
||||
${releaseTrailerFragment}
|
||||
${releaseTeaserFragment}
|
||||
${siteFragment}
|
||||
chapters {
|
||||
id
|
||||
title
|
||||
description
|
||||
duration
|
||||
tags: chaptersTags {
|
||||
tag {
|
||||
id
|
||||
name
|
||||
slug
|
||||
}
|
||||
}
|
||||
poster: chaptersPosterByChapterId {
|
||||
media {
|
||||
index
|
||||
path
|
||||
thumbnail
|
||||
lazy
|
||||
comment
|
||||
sfw: sfwMedia {
|
||||
id
|
||||
thumbnail
|
||||
lazy
|
||||
path
|
||||
comment
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
studio {
|
||||
id
|
||||
name
|
||||
@@ -258,7 +295,7 @@ const releaseFragment = `
|
||||
id
|
||||
title
|
||||
slug
|
||||
covers: moviesCoversByReleaseId {
|
||||
covers: moviesCovers {
|
||||
media {
|
||||
index
|
||||
path
|
||||
|
||||
@@ -7,8 +7,6 @@ function initReleasesActions(store, _router) {
|
||||
async function fetchReleases({ _commit }, { limit = 10, pageNumber = 1, range = 'latest' }) {
|
||||
const { before, after, orderBy } = getDateRange(range);
|
||||
|
||||
console.log(after, before, orderBy);
|
||||
|
||||
const { connection: { releases, totalCount } } = await graphql(`
|
||||
query Releases(
|
||||
$limit:Int = 1000,
|
||||
@@ -89,7 +87,7 @@ function initReleasesActions(store, _router) {
|
||||
type
|
||||
}
|
||||
}
|
||||
covers: moviesCoversByReleaseId {
|
||||
covers: moviesCovers {
|
||||
media {
|
||||
id
|
||||
path
|
||||
@@ -139,14 +137,14 @@ function initReleasesActions(store, _router) {
|
||||
lazy
|
||||
}
|
||||
}
|
||||
covers: moviesCoversByReleaseId {
|
||||
covers: moviesCovers {
|
||||
media {
|
||||
id
|
||||
path
|
||||
thumbnail
|
||||
}
|
||||
}
|
||||
trailer: moviesTrailerByReleaseId {
|
||||
trailer: moviesTrailerByMovieId {
|
||||
media {
|
||||
id
|
||||
path
|
||||
|
||||
Reference in New Issue
Block a user