Skip to content
Snippets Groups Projects
Commit 589ed5af authored by permcu's avatar permcu
Browse files

Integrate fetchMore

The first working endless scroll.
But update of visible is broken now.
parent c62f6a76
No related branches found
No related tags found
2 merge requests!355Implement infinite scrolling and by date navigation for coursebook,!350Resolve "Add simple course book list"
...@@ -205,35 +205,20 @@ export default { ...@@ -205,35 +205,20 @@ export default {
// sorting is necessary since backend can send docs unordered // sorting is necessary since backend can send docs unordered
}, },
// docsByDay: {dt: [dt doc ...] ...} // docsByDay: {dt: [dt doc ...] ...}
assureDate(date) { fetchMore(from, to) {
if (!this.knownDates[date]) { console.log('fetching', from, to);
console.log(this.lastQuery); this.lastQuery.fetchMore({
console.log('unknown date', date.toISODate()); variables: {
console.log(this.knownDates); dateStart: from,
// find missing & fetch missing range dateEnd: to,
const missing = this.dateRange(date) },
.filter((ts) => !this.knownDates[ts]); // Transform the previous result with new data
// ask for first to last updateQuery: (previousResult, { fetchMoreResult }) => {
this.lastQuery.fetchMore({ console.log('previousResult', previousResult);
variables: { console.log('fetchMoreResult', fetchMoreResult);
dateStart: missing[0].toISODate(), return { items: previousResult.items.concat(fetchMoreResult.items) };
dateEnd: missing[missing.length - 1].toISODate(), }
}, });
// Transform the previous result with new data
updateQuery: (previousResult, { fetchMoreResult }) => {
console.log('previousResult', previousResult);
console.log('fetchMoreResult', fetchMoreResult);
return {
items: [...previousResult.items,
...fetchMoreResult.items.filter((doc) => {
return previousResult.items.find((prev) => prev.id === doc.id)
}),
],
};
}
})
// integrate into docsByDay
}
}, },
setDate(date) { setDate(date) {
this.$router.replace({ hash: date }) this.$router.replace({ hash: date })
...@@ -257,8 +242,16 @@ export default { ...@@ -257,8 +242,16 @@ export default {
// load more // load more
if (entry.target.dataset.first) { if (entry.target.dataset.first) {
console.log('load up'); console.log('load up');
entry.target.dataset.first = false;
const date = DateTime.fromISO(entry.target.dataset.date);
this.fetchMore(date.minus({ days: 4 }).toISODate(),
date.minus({ days: 1 }).toISODate());
} else if (entry.target.dataset.last) { } else if (entry.target.dataset.last) {
console.log('load down'); console.log('load down');
entry.target.dataset.last = false;
const date = DateTime.fromISO(entry.target.dataset.date);
this.fetchMore(date.plus({ days: 1 }).toISODate(),
date.plus({ days: 5 }).toISODate());
} }
} else if (this.visible[0] === entry.target.dataset.date) { } else if (this.visible[0] === entry.target.dataset.date) {
// first (top) visible date is going // first (top) visible date is going
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment