Modified network releases query to accomodate date sorting. Showing upcoming releases first to last.

This commit is contained in:
ThePendulum 2020-01-09 00:23:37 +01:00
parent 58f01a2f75
commit 9da63baf65
8 changed files with 102 additions and 67 deletions

View File

@ -89,7 +89,7 @@ async function fetchNetwork() {
// .concat(this.studios) // .concat(this.studios)
.sort(({ name: nameA }, { name: nameB }) => nameA.localeCompare(nameB)); .sort(({ name: nameA }, { name: nameB }) => nameA.localeCompare(nameB));
this.releases = this.network.sites.map(site => site.releases).flat(); this.releases = this.network.releases;
} }
async function mounted() { async function mounted() {

View File

@ -52,6 +52,7 @@ function initActorActions(store, _router) {
$limit:Int = 1000, $limit:Int = 1000,
$after:Date = "1900-01-01", $after:Date = "1900-01-01",
$before:Date = "2100-01-01", $before:Date = "2100-01-01",
$orderBy:[ReleasesActorsOrderBy!]
) { ) {
actor: actorBySlug(slug: $actorSlug) { actor: actorBySlug(slug: $actorSlug) {
id id
@ -120,7 +121,7 @@ function initActorActions(store, _router) {
} }
}, },
first: $limit, first: $limit,
orderBy: RELEASE_BY_RELEASE_ID__DATE_DESC, orderBy: $orderBy
) { ) {
release { release {
id id
@ -151,6 +152,7 @@ function initActorActions(store, _router) {
limit, limit,
after: store.getters.after, after: store.getters.after,
before: store.getters.before, before: store.getters.before,
orderBy: store.state.ui.range === 'upcoming' ? 'RELEASE_BY_RELEASE_ID__DATE_ASC' : 'RELEASE_BY_RELEASE_ID__DATE_DESC',
}); });
return curateActor(actor); return curateActor(actor);

View File

@ -48,7 +48,7 @@ function curateSite(site, network) {
return curatedSite; return curatedSite;
} }
function curateNetwork(network) { function curateNetwork(network, releases) {
const curatedNetwork = { const curatedNetwork = {
id: network.id, id: network.id,
name: network.name, name: network.name,
@ -56,13 +56,9 @@ function curateNetwork(network) {
url: network.url, url: network.url,
}; };
if (network.sites) { if (network.sites) curatedNetwork.sites = network.sites.map(site => curateSite(site, curatedNetwork));
curatedNetwork.sites = network.sites.map(site => curateSite(site, curatedNetwork)); if (network.studios) curatedNetwork.studios = network.studios;
} if (releases) curatedNetwork.releases = releases.map(release => curateRelease(release));
if (network.studios) {
curatedNetwork.studios = network.studios;
}
return curatedNetwork; return curatedNetwork;
} }

View File

@ -95,6 +95,24 @@ const releaseTrailerFragment = `
} }
`; `;
const releaseFields = `
id
title
date
createdAt
url
${releaseActorsFragment}
${releaseTagsFragment}
${releasePosterFragment}
${siteFragment}
studio {
id
name
slug
url
}
`;
const releasesFragment = ` const releasesFragment = `
releases( releases(
filter: { filter: {
@ -104,23 +122,9 @@ const releasesFragment = `
} }
}, },
first: $limit, first: $limit,
orderBy: DATE_DESC, orderBy: $orderBy,
) { ) {
id ${releaseFields}
title
date
createdAt
url
${releaseActorsFragment}
${releaseTagsFragment}
${releasePosterFragment}
${siteFragment}
studio {
id
name
slug
url
}
} }
`; `;
@ -151,6 +155,7 @@ const releaseFragment = `
export { export {
releaseActorsFragment, releaseActorsFragment,
releaseFields,
releaseTagsFragment, releaseTagsFragment,
releasePosterFragment, releasePosterFragment,
releasePhotosFragment, releasePhotosFragment,

View File

@ -1,15 +1,16 @@
import { graphql } from '../api'; import { graphql } from '../api';
import { sitesFragment, releasesFragment } from '../fragments'; import { sitesFragment, releaseFields } from '../fragments';
import { curateNetwork } from '../curate'; import { curateNetwork } from '../curate';
function initNetworksActions(store, _router) { function initNetworksActions(store, _router) {
async function fetchNetworkBySlug(networkSlug, limit = 100) { async function fetchNetworkBySlug(networkSlug, limit = 100) {
const { network } = await graphql(` const { network, releases } = await graphql(`
query Network( query Network(
$networkSlug: String! $networkSlug: String!
$limit:Int = 1000, $limit:Int = 1000,
$after:Date = "1900-01-01", $after:Date = "1900-01-01",
$before:Date = "2100-01-01", $before:Date = "2100-01-01",
$orderBy: [ReleasesOrderBy!]
) { ) {
network: networkBySlug(slug: $networkSlug) { network: networkBySlug(slug: $networkSlug) {
id id
@ -17,18 +18,17 @@ function initNetworksActions(store, _router) {
slug slug
url url
sites { sites {
id
name
slug
url
independent
${releasesFragment}
network {
id id
name name
slug slug
url url
} independent
network {
id
name
slug
url
}
} }
studios { studios {
id id
@ -37,15 +37,29 @@ function initNetworksActions(store, _router) {
url url
} }
} }
releases(
first: $limit,
orderBy: $orderBy,
filter: {
site: { network: { slug: { equalTo: $networkSlug } } }
date: {
lessThan: $before,
greaterThan: $after,
}
}
) {
${releaseFields}
}
} }
`, { `, {
networkSlug, networkSlug,
limit, limit,
after: store.getters.after, after: store.getters.after,
before: store.getters.before, before: store.getters.before,
orderBy: store.state.ui.range === 'upcoming' ? 'DATE_ASC' : 'DATE_DESC',
}); });
return curateNetwork(network); return curateNetwork(network, releases);
} }
async function fetchNetworks({ _commit }, networkSlug) { async function fetchNetworks({ _commit }, networkSlug) {

View File

@ -11,6 +11,7 @@ function initReleasesActions(store, _router) {
$limit:Int = 1000, $limit:Int = 1000,
$after:Date = "1900-01-01", $after:Date = "1900-01-01",
$before:Date = "2100-01-01", $before:Date = "2100-01-01",
$orderBy:[ReleasesOrderBy!]
) { ) {
${releasesFragment} ${releasesFragment}
} }
@ -18,6 +19,7 @@ function initReleasesActions(store, _router) {
limit, limit,
after: store.getters.after, after: store.getters.after,
before: store.getters.before, before: store.getters.before,
orderBy: store.state.ui.range === 'upcoming' ? 'DATE_ASC' : 'DATE_DESC',
}); });
return releases.map(release => curateRelease(release)); return releases.map(release => curateRelease(release));

View File

@ -10,6 +10,7 @@ function initSitesActions(store, _router) {
$limit:Int = 100, $limit:Int = 100,
$after:Date = "1900-01-01", $after:Date = "1900-01-01",
$before:Date = "2100-01-01", $before:Date = "2100-01-01",
$orderBy:[ReleasesOrderBy!]
) { ) {
site: siteBySlug(slug: $siteSlug) { site: siteBySlug(slug: $siteSlug) {
name name
@ -29,10 +30,9 @@ function initSitesActions(store, _router) {
limit, limit,
after: store.getters.after, after: store.getters.after,
before: store.getters.before, before: store.getters.before,
orderBy: store.state.ui.range === 'upcoming' ? 'DATE_ASC' : 'DATE_DESC',
}); });
console.log(site);
return curateSite(site); return curateSite(site);
} }

View File

@ -1,16 +1,19 @@
import { graphql, get } from '../api'; import { graphql, get } from '../api';
import { import {
releasePosterFragment, releaseFields,
releaseActorsFragment,
releaseTagsFragment,
siteFragment,
} from '../fragments'; } from '../fragments';
import { curateTag } from '../curate'; import { curateTag } from '../curate';
function initTagsActions(store, _router) { function initTagsActions(store, _router) {
async function fetchTagBySlug(tagSlug) { async function fetchTagBySlug(tagSlug, limit = 100) {
const { tagBySlug } = await graphql(` const { tagBySlug } = await graphql(`
query Tag($tagSlug:String!) { query Tag(
$tagSlug:String!
$limit:Int = 1000,
$after:Date = "1900-01-01",
$before:Date = "2100-01-01",
$orderBy: [ReleasesTagsOrderBy!]
) {
tagBySlug(slug:$tagSlug) { tagBySlug(slug:$tagSlug) {
id id
name name
@ -36,23 +39,30 @@ function initTagsActions(store, _router) {
comment comment
} }
} }
releases: releasesTags { releases: releasesTags(
filter: {
release: {
date: {
lessThan: $before,
greaterThan: $after,
}
}
},
first: $limit,
orderBy: $orderBy,
) {
release { release {
id ${releaseFields}
title
date
createdAt
url
${releaseActorsFragment}
${releaseTagsFragment}
${releasePosterFragment}
${siteFragment}
} }
} }
} }
} }
`, { `, {
tagSlug, tagSlug,
limit,
after: store.getters.after,
before: store.getters.before,
orderBy: store.state.ui.range === 'upcoming' ? 'RELEASE_BY_RELEASE_ID__DATE_ASC' : 'RELEASE_BY_RELEASE_ID__DATE_DESC',
}); });
return curateTag(tagBySlug); return curateTag(tagBySlug);
@ -70,21 +80,27 @@ function initTagsActions(store, _router) {
} }
const { tags } = await graphql(` const { tags } = await graphql(`
query Tags($slugs: [String!] = [], $limit: Int = 100) { query Tags(
tags(filter: {slug: {in: $slugs}}, first: $limit) { $slugs: [String!] = [],
id $limit: Int = 100
name ) {
slug tags(
poster: tagsPosterByTagId { filter: { slug: { in: $slugs } },
media { first: $limit
thumbnail ) {
} id
}
group {
name name
slug slug
poster: tagsPosterByTagId {
media {
thumbnail
}
}
group {
name
slug
}
} }
}
} }
`, { `, {
slugs, slugs,