forked from DebaucheryLibrarian/traxxx
Entity refactor. Facilitating channels without parent.
This commit is contained in:
@@ -11,17 +11,23 @@
|
||||
>
|
||||
|
||||
<img
|
||||
v-else
|
||||
v-else-if="entity.parent"
|
||||
class="logo"
|
||||
:src="`/img/logos/${entity.parent.slug}/thumbs/${entity.slug}.png`"
|
||||
>
|
||||
|
||||
<img
|
||||
v-else
|
||||
class="logo"
|
||||
:src="`/img/logos/${entity.slug}/thumbs/${entity.slug}.png`"
|
||||
>
|
||||
|
||||
<router-link
|
||||
v-if="entity.parent"
|
||||
:to="{ name: `${entity.parent.type}Base`, params: { entitySlug: entity.parent.slug } }"
|
||||
:to="`/${entity.parent.type}/${entity.parent.slug}`"
|
||||
>
|
||||
<img
|
||||
class="logo"
|
||||
class="logo logo-parent"
|
||||
:src="`/img/logos/${entity.parent.slug}/thumbs/network.png`"
|
||||
>
|
||||
</router-link>
|
||||
@@ -134,8 +140,14 @@ export default {
|
||||
|
||||
.logo {
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
max-width: 20rem;
|
||||
object-fit: contain;
|
||||
object-position: 0 50%;
|
||||
}
|
||||
|
||||
.logo-parent {
|
||||
object-position: 100% 50%;
|
||||
}
|
||||
|
||||
.children {
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
<template>
|
||||
<router-link
|
||||
:to="{ name: entity.type, params: { entitySlug: entity.slug } }"
|
||||
:to="`/${entity.type}/${entity.slug}`"
|
||||
:title="entity.name"
|
||||
class="tile"
|
||||
>
|
||||
<img
|
||||
v-if="entity.type === 'channel'"
|
||||
v-if="entity.type === 'network'"
|
||||
:src="`/img/logos/${entity.slug}/thumbs/network.png`"
|
||||
:alt="entity.name"
|
||||
class="logo"
|
||||
>
|
||||
|
||||
<img
|
||||
v-else-if="entity.parent"
|
||||
:src="`/img/logos/${entity.parent.slug}/thumbs/${entity.slug}.png`"
|
||||
:alt="entity.name"
|
||||
class="logo"
|
||||
@@ -13,7 +20,7 @@
|
||||
|
||||
<img
|
||||
v-else
|
||||
:src="`/img/logos/${entity.slug}/thumbs/network.png`"
|
||||
:src="`/img/logos/${entity.slug}/thumbs/${entity.slug}.png`"
|
||||
:alt="entity.name"
|
||||
class="logo"
|
||||
>
|
||||
|
||||
@@ -130,7 +130,6 @@ import FilterBar from '../header/filter-bar.vue';
|
||||
import Releases from '../releases/releases.vue';
|
||||
import Sites from '../sites/sites.vue';
|
||||
import Network from '../tile/network.vue';
|
||||
import Entity from '../tile/entity.vue';
|
||||
|
||||
async function fetchNetwork() {
|
||||
const { entity, totalCount } = await this.$store.dispatch('fetchEntityBySlugAndType', {
|
||||
@@ -163,7 +162,6 @@ export default {
|
||||
Releases,
|
||||
Sites,
|
||||
Network,
|
||||
Entity,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import Entity from '../tile/entity.vue';
|
||||
import Entity from '../entities/tile.vue';
|
||||
|
||||
async function searchEntities() {
|
||||
this.searchResults = await this.$store.dispatch('searchEntities', {
|
||||
@@ -54,7 +54,14 @@ async function searchEntities() {
|
||||
}
|
||||
|
||||
async function mounted() {
|
||||
this.networks = await this.$store.dispatch('fetchEntities', { type: 'network' });
|
||||
this.networks = await this.$store.dispatch('fetchEntities', {
|
||||
type: 'network',
|
||||
entitySlugs: [
|
||||
'bamvisions',
|
||||
'evilangel',
|
||||
'legalporno',
|
||||
],
|
||||
});
|
||||
this.pageTitle = 'Networks';
|
||||
}
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
<div class="column">
|
||||
<a
|
||||
v-if="release.date"
|
||||
v-tooltip.bottom="release.url && `View scene on ${release.site.name}`"
|
||||
:title="release.url && `View scene on ${release.site.name}`"
|
||||
v-tooltip.bottom="release.url && `View scene on ${release.entity.name}`"
|
||||
:title="release.url && `View scene on ${release.entity.name}`"
|
||||
:href="release.url"
|
||||
:class="{ link: release.url }"
|
||||
target="_blank"
|
||||
@@ -57,23 +57,12 @@
|
||||
</span>
|
||||
|
||||
<span class="tidbit site">
|
||||
<a
|
||||
v-if="release.site.independent"
|
||||
:href="`/network/${release.network.slug}`"
|
||||
>
|
||||
<img
|
||||
:src="`/img/logos/${release.network.slug}/thumbs/network.png`"
|
||||
:title="release.network.name"
|
||||
class="logo logo-site"
|
||||
>
|
||||
</a>
|
||||
|
||||
<template v-else>
|
||||
<a :href="`/network/${release.network.slug}`">
|
||||
<template v-if="release.entity.parent">
|
||||
<a :href="`/network/${release.entity.parent.slug}`">
|
||||
<img
|
||||
:src="`/img/logos/${release.network.slug}/thumbs/network.png`"
|
||||
:title="release.network.name"
|
||||
:alt="release.network.name"
|
||||
:src="`/img/logos/${release.entity.parent.slug}/thumbs/network.png`"
|
||||
:title="release.entity.parent.name"
|
||||
:alt="release.entity.parent.name"
|
||||
class="logo logo-network"
|
||||
>
|
||||
</a>
|
||||
@@ -81,16 +70,26 @@
|
||||
<span class="chain">presents</span>
|
||||
|
||||
<a
|
||||
:href="`/site/${release.site.slug}`"
|
||||
:href="`/${release.entity.type}/${release.entity.slug}`"
|
||||
>
|
||||
<img
|
||||
:src="`/img/logos/${release.network.slug}/thumbs/${release.site.slug}.png`"
|
||||
:title="release.site.name"
|
||||
:src="`/img/logos/${release.entity.parent.slug}/thumbs/${release.entity.slug}.png`"
|
||||
:title="release.entity.name"
|
||||
class="logo logo-site"
|
||||
>
|
||||
</a>
|
||||
</template>
|
||||
|
||||
<a
|
||||
v-else
|
||||
:href="`/channel/${release.entity.slug}`"
|
||||
>
|
||||
<img
|
||||
:src="`/img/logos/${release.entity.slug}/thumbs/network.png`"
|
||||
:title="release.entity.name"
|
||||
class="logo logo-site"
|
||||
>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ReleaseTile from '../tile/release.vue';
|
||||
import ReleaseTile from './tile.vue';
|
||||
|
||||
function range() {
|
||||
return this.$route.params.range;
|
||||
|
||||
@@ -6,43 +6,41 @@
|
||||
>
|
||||
<span class="poster">
|
||||
<span class="details">
|
||||
<router-link
|
||||
v-if="release.site && release.site.independent"
|
||||
:to="`/network/${release.network.slug}`"
|
||||
class="site site-link"
|
||||
><img
|
||||
:src="`/img/logos/${release.network.slug}/favicon.png`"
|
||||
class="favicon"
|
||||
>{{ release.network.name }}</router-link>
|
||||
|
||||
<span
|
||||
v-else-if="release.network"
|
||||
v-if="release.entity.parent"
|
||||
class="site"
|
||||
>
|
||||
<router-link
|
||||
v-tooltip.bottom="`Part of ${release.network.name}`"
|
||||
:title="`Part of ${release.network.name}`"
|
||||
:to="`/network/${release.network.slug}`"
|
||||
v-tooltip.bottom="`Part of ${release.entity.parent.name}`"
|
||||
:title="`Part of ${release.entity.parent.name}`"
|
||||
:to="`/${release.entity.parent.type}/${release.entity.parent.slug}`"
|
||||
class="site-link"
|
||||
><img
|
||||
:src="`/img/logos/${release.network.slug}/favicon.png`"
|
||||
:src="`/img/logos/${release.entity.parent.slug}/favicon.png`"
|
||||
class="favicon"
|
||||
></router-link>
|
||||
|
||||
<router-link
|
||||
v-tooltip.bottom="`More from ${release.site.name}`"
|
||||
:title="`More from ${release.site.name}`"
|
||||
:to="`/site/${release.site.slug}`"
|
||||
v-tooltip.bottom="`More from ${release.entity.name}`"
|
||||
:title="`More from ${release.entity.name}`"
|
||||
:to="`/${release.entity.type}/${release.entity.slug}`"
|
||||
class="site-link"
|
||||
>{{ release.site.name }}</router-link>
|
||||
>{{ release.entity.name }}</router-link>
|
||||
</span>
|
||||
|
||||
<span v-else />
|
||||
<router-link
|
||||
v-else
|
||||
:to="`/${release.entity.type}/${release.entity.slug}`"
|
||||
class="site site-link"
|
||||
><img
|
||||
:src="`/img/logos/${release.entity.slug}/favicon.png`"
|
||||
class="favicon"
|
||||
>{{ release.entity.name }}</router-link>
|
||||
|
||||
<a
|
||||
v-if="release.date"
|
||||
v-tooltip.bottom="release.url && `View scene on ${release.site.name}`"
|
||||
:title="release.url && `View scene on ${release.site.name}`"
|
||||
v-tooltip.bottom="release.url && `View scene on ${release.entity.name}`"
|
||||
:title="release.url && `View scene on ${release.entity.name}`"
|
||||
:href="release.url"
|
||||
:class="{ upcoming: isAfter(release.date, new Date()), new: release.isNew }"
|
||||
target="_blank"
|
||||
|
||||
@@ -68,7 +68,6 @@ function curateRelease(release) {
|
||||
tags: release.tags ? release.tags.map(({ tag }) => tag) : [],
|
||||
};
|
||||
|
||||
if (release.site) curatedRelease.network = release.site.network;
|
||||
if (release.scenes) curatedRelease.scenes = release.scenes.map(({ scene }) => curateRelease(scene));
|
||||
if (release.movies) curatedRelease.movies = release.movies.map(({ movie }) => curateRelease(movie));
|
||||
if (release.photos) curatedRelease.photos = release.photos.map(({ media }) => media);
|
||||
|
||||
@@ -57,6 +57,7 @@ function initEntitiesActions(store, _router) {
|
||||
filter: {
|
||||
entity: {
|
||||
or: [
|
||||
{ slug: { equalTo: $entitySlug } },
|
||||
{ parent: { slug: { equalTo: $entitySlug } } },
|
||||
{ parent: { parent: { slug: { equalTo: $entitySlug } } } }
|
||||
]
|
||||
@@ -114,17 +115,27 @@ function initEntitiesActions(store, _router) {
|
||||
};
|
||||
}
|
||||
|
||||
async function fetchEntities({ _commit }, { type }) {
|
||||
async function fetchEntities({ _commit }, { type, entitySlugs }) {
|
||||
const { entities } = await graphql(`
|
||||
query Entities(
|
||||
$type: String! = "network"
|
||||
$entitySlugs: [String!] = []
|
||||
) {
|
||||
entities(
|
||||
orderBy: NAME_ASC
|
||||
filter: {
|
||||
type: {
|
||||
equalTo: $type
|
||||
}
|
||||
or: [
|
||||
{
|
||||
type: {
|
||||
equalTo: $type
|
||||
}
|
||||
}
|
||||
{
|
||||
slug: {
|
||||
in: $entitySlugs
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
) {
|
||||
id
|
||||
@@ -134,7 +145,10 @@ function initEntitiesActions(store, _router) {
|
||||
url
|
||||
}
|
||||
}
|
||||
`, { type });
|
||||
`, {
|
||||
type,
|
||||
entitySlugs,
|
||||
});
|
||||
|
||||
return entities.map(entity => curateEntity(entity));
|
||||
}
|
||||
|
||||
@@ -1,29 +1,33 @@
|
||||
const siteFragment = `
|
||||
site: entity {
|
||||
entity {
|
||||
id
|
||||
name
|
||||
slug
|
||||
url
|
||||
network: parent {
|
||||
type
|
||||
parent {
|
||||
id
|
||||
name
|
||||
slug
|
||||
url
|
||||
type
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const sitesFragment = `
|
||||
sites {
|
||||
entities {
|
||||
id
|
||||
name
|
||||
slug
|
||||
url
|
||||
network {
|
||||
type
|
||||
parent {
|
||||
id
|
||||
name
|
||||
slug
|
||||
url
|
||||
type
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
@@ -74,7 +74,6 @@ const routes = [
|
||||
{
|
||||
path: '/channel/:entitySlug',
|
||||
component: Site,
|
||||
name: 'channelBase',
|
||||
redirect: from => ({
|
||||
name: 'channel',
|
||||
params: {
|
||||
@@ -92,7 +91,6 @@ const routes = [
|
||||
},
|
||||
{
|
||||
path: '/network/:entitySlug',
|
||||
name: 'networkBase',
|
||||
redirect: from => ({
|
||||
name: 'network',
|
||||
params: {
|
||||
|
||||
Reference in New Issue
Block a user