From fd4477bc50c106087adcdb2a811760d225f4751a Mon Sep 17 00:00:00 2001 From: DebaucheryLibrarian Date: Wed, 19 Aug 2020 21:48:55 +0200 Subject: [PATCH] Improved 'new' sorting. --- assets/components/entities/entity.vue | 9 +++++++++ assets/js/get-date-range.js | 18 +++++++++--------- assets/js/releases/actions.js | 8 +++++--- src/updates.js | 10 +++++++--- 4 files changed, 30 insertions(+), 15 deletions(-) diff --git a/assets/components/entities/entity.vue b/assets/components/entities/entity.vue index 17a4fe20..3aef60be 100644 --- a/assets/components/entities/entity.vue +++ b/assets/components/entities/entity.vue @@ -228,6 +228,15 @@ export default { height: 1rem; } +.content-inner { + display: flex; + flex-direction: column; +} + +.releases { + flex-grow: 1; +} + .name { color: var(--text-light); display: flex; diff --git a/assets/js/get-date-range.js b/assets/js/get-date-range.js index caf43c66..b30e3aae 100644 --- a/assets/js/get-date-range.js +++ b/assets/js/get-date-range.js @@ -2,23 +2,23 @@ import dayjs from 'dayjs'; const dateRanges = { latest: () => ({ - after: '1900-01-01', - before: dayjs(new Date()).add(1, 'day').format('YYYY-MM-DD'), + after: '1900-01-01 00:00:00', + before: dayjs().format('YYYY-MM-DD HH:mm:ss'), orderBy: 'DATE_DESC', }), upcoming: () => ({ - after: dayjs(new Date()).format('YYYY-MM-DD'), - before: '2100-01-01', + after: dayjs().format('YYYY-MM-DD HH:mm:ss'), + before: '2100-01-01 00:00:00', orderBy: 'DATE_ASC', }), new: () => ({ - after: '1900-01-01', - before: '2100-01-01', - orderBy: 'CREATED_AT_DESC', + after: '1900-01-01 00:00:00', + before: '2100-01-01 00:00:00', + orderBy: ['CREATED_AT_DESC', 'DATE_ASC'], }), all: () => ({ - after: '1900-01-01', - before: '2100-01-01', + after: '1900-01-01 00:00:00', + before: '2100-01-01 00:00:00', orderBy: 'DATE_DESC', }), }; diff --git a/assets/js/releases/actions.js b/assets/js/releases/actions.js index 59319cf3..6a9d63e6 100644 --- a/assets/js/releases/actions.js +++ b/assets/js/releases/actions.js @@ -7,13 +7,15 @@ 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, $offset:Int = 0, - $after:Datetime = "1900-01-01", - $before:Datetime = "2100-01-01", - $orderBy:[ReleasesOrderBy!], + $after:Datetime = "1900-01-01 00:00:00", + $before:Datetime = "2100-01-01 00:00:00", + $orderBy: [ReleasesOrderBy!], $exclude: [String!] ) { ${releasesFragment} diff --git a/src/updates.js b/src/updates.js index c8c4ab7d..d4536309 100644 --- a/src/updates.js +++ b/src/updates.js @@ -37,7 +37,7 @@ async function filterUniqueReleases(latestReleases, accReleases) { return uniqueReleases; } -function needNextPage(uniqueReleases, pageAccReleases) { +function needNextPage(uniqueReleases, pageAccReleases, hasDates) { if (uniqueReleases.length === 0) { return false; } @@ -47,7 +47,7 @@ function needNextPage(uniqueReleases, pageAccReleases) { return true; } - if (uniqueReleases.every(release => !!release.date)) { + if (hasDates) { const oldestReleaseOnPage = uniqueReleases .sort((releaseA, releaseB) => releaseB.date - releaseA.date) .slice(-1)[0]; @@ -79,6 +79,10 @@ async function scrapeReleases(scraper, entity, preData, upcoming = false) { entity: release.entity || entity, // allow override })); // attach entity the release is assigned to when stored + const hasDates = latestReleasesWithEntity.every(release => !!release.date); + + console.log(hasDates); + const uniqueReleases = argv.redownload ? latestReleasesWithEntity : await filterUniqueReleases(latestReleasesWithEntity, accReleases); @@ -87,7 +91,7 @@ async function scrapeReleases(scraper, entity, preData, upcoming = false) { logger.verbose(`Scraped '${entity.name}' (${entity.parent?.name}) ${upcoming ? 'upcoming' : 'latest'} page ${page}, found ${uniqueReleases.length} unique updates`); - if (needNextPage(uniqueReleases, pageAccReleases)) { + if (needNextPage(uniqueReleases, pageAccReleases, hasDates)) { return scrapePage(page + 1, pageAccReleases); }