From 9025fd82b41b4e3552c4bbe4d5a189dc0457c126 Mon Sep 17 00:00:00 2001
From: Michael Bauer <michael-bauer@posteo.de>
Date: Thu, 21 Mar 2024 17:31:56 +0100
Subject: [PATCH] Begin assuring current date range - create date range

---
 .../components/coursebook/Coursebook.vue       | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
index be2d1530f..bd12b7628 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
     },
   },
-- 
GitLab