From 67d9e420a2c31b6abd3082a20a05eab53e1a1010 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 b4d21f441..0f8c722e4 100644
--- a/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
+++ b/aleksis/apps/alsijil/frontend/components/coursebook/Coursebook.vue
@@ -108,7 +108,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 {
   coursesOfPerson,
   documentationsForCoursebook,
@@ -322,11 +322,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