diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue index be2d1530f328750e68e46aa6c9f2f8d6b03ae34a..bd12b7628d20fc0da74c8d72f275c3eb9c900bbc 100644 --- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue +++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue @@ -67,7 +67,7 @@ import CRUDIterator from "aleksis.core/components/generic/CRUDIterator.vue"; import DateSelectFooter from "aleksis.core/components/generic/DateSelectFooter.vue"; import DocumentationModal from "./documentation/DocumentationModal.vue"; -import { DateTime } from "luxon"; +import { DateTime, Interval } from "luxon"; import { documentationsForCoursebook } from "./coursebook.graphql"; import CoursebookFilters from "./CoursebookFilters.vue"; import CoursebookLoader from "./CoursebookLoader.vue"; @@ -270,11 +270,27 @@ export default { return "documentation_" + nearestId.toISODate(); }, + // TODO: Improve Add empty but already queried days to docsByDay -> do not query them again + // docsByDay: {dt: [dt doc ...] ...} + assureDate(date) { + // find missing & fetch missing range + // date +- 5 days ? + const dateRange = Interval + .fromDateTimes(date.minus({ days: 3 }), date.plus({ days: 4 })) + .splitBy({ days: 1 }) + .map((ts) => ts.start); + console.log('assureDate', dateRange.map((ts) => ts.toISODate())); + // look up in docsByDay + // sort missing and ask for first to last + // integrate into docsByDay + + }, gotoDate(date, scroll) { // show this.$router.replace({ hash: date }) console.log('hash', this.$route.hash); // assure + this.assureDate(DateTime.fromISO(date)); // scroll }, },