diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue index de8afbe8db82ce236daf5c67aa2125b0b4b9b33e..45e8b9e179b42eae3e1ba32f52c0697a0dc0420b 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue @@ -19,9 +19,9 @@ <template #default="{ items }"> <coursebook-loader /> <coursebook-day - v-for="{ date, docs, idx, lastIdx } in groupDocsByDay(items)" + v-for="{ date, docs, first, last } in groupDocsByDay(items)" v-intersect="{ - handler: intersectHandler(date, idx, lastIdx), + handler: intersectHandler(date, first, last), options: { rootMargin: '-165px 0px 0px 0px', threshold: [0, 1], @@ -200,8 +200,9 @@ export default { .sort() .map((key, idx, {length}) => { const day = docsByDay[key]; - day.idx = idx; - day.lastIdx = length - 1; + day.first = idx === 0; + const lastIdx = length - 1; + day.last = idx === lastIdx; return day; }); }, @@ -241,7 +242,7 @@ export default { } }); }, - intersectHandler(date, idx, lastIdx) { + intersectHandler(date, first, last) { let once = true; return (entries) => { const entry = entries[0]; @@ -253,7 +254,7 @@ export default { this.setDate(date.toISODate()); } - if (once && this.ready && idx === 0) { + if (once && this.ready && first) { console.log('load up', date.toISODate()); this.ready = false; this.fetchMore(date.minus({ days: 5 }).toISODate(), @@ -263,7 +264,7 @@ export default { document.documentElement.scrollTop); }); once = false; - } else if (once && this.ready && idx === lastIdx) { + } else if (once && this.ready && last) { console.log('load down', date.toISODate()); this.ready = false; this.fetchMore(date.plus({ days: 1 }).toISODate(),