Skip to content
Snippets Groups Projects
Commit 7a0d7d29 authored by permcu's avatar permcu
Browse files

Integrate fetchMore

The first working endless scroll.
But update of visible is broken now.
parent bc52df60
No related branches found
No related tags found
No related merge requests found
......@@ -254,35 +254,20 @@ export default {
// sorting is necessary since backend can send docs unordered
},
// docsByDay: {dt: [dt doc ...] ...}
assureDate(date) {
if (!this.knownDates[date]) {
console.log(this.lastQuery);
console.log('unknown date', date.toISODate());
console.log(this.knownDates);
// find missing & fetch missing range
const missing = this.dateRange(date)
.filter((ts) => !this.knownDates[ts]);
// ask for first to last
this.lastQuery.fetchMore({
variables: {
dateStart: missing[0].toISODate(),
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
}
fetchMore(from, to) {
console.log('fetching', from, to);
this.lastQuery.fetchMore({
variables: {
dateStart: from,
dateEnd: to,
},
// Transform the previous result with new data
updateQuery: (previousResult, { fetchMoreResult }) => {
console.log('previousResult', previousResult);
console.log('fetchMoreResult', fetchMoreResult);
return { items: previousResult.items.concat(fetchMoreResult.items) };
}
});
},
setDate(date) {
this.$router.replace({ hash: date })
......@@ -306,8 +291,16 @@ export default {
// load more
if (entry.target.dataset.first) {
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) {
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) {
// 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