Improved 'new' sorting.

This commit is contained in:
DebaucheryLibrarian 2020-08-19 21:48:55 +02:00
parent e896d52968
commit fd4477bc50
4 changed files with 30 additions and 15 deletions

View File

@ -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;

View File

@ -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',
}),
};

View File

@ -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}

View File

@ -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);
}