From bd25c4876eb00a478923fe82023b2825883ba208 Mon Sep 17 00:00:00 2001
From: Moritz Strohm <strohm@data-quest.de>
Date: Fri, 17 Dec 2021 14:32:38 +0100
Subject: [PATCH] fixed the calculation and the display of lecture weeks when
 the lecture period starts inside a week, re #453

---
 resources/assets/javascripts/lib/resources.js | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/resources/assets/javascripts/lib/resources.js b/resources/assets/javascripts/lib/resources.js
index a2060294054..1aa861a6ebb 100644
--- a/resources/assets/javascripts/lib/resources.js
+++ b/resources/assets/javascripts/lib/resources.js
@@ -737,11 +737,25 @@ class Resources
     static updateBookingPlanDateInfos(plan_begin, plan_end, semester = null)
     {
         if (semester) {
-            let show_lecture_week = plan_end.getTime()/1000 >= semester.seminars_begin && plan_end.getTime()/1000 < semester.seminars_end;
+            let show_lecture_week = false;
+            let fake_plan_end = new Date(plan_end.getTime() - 1000);
+            if (plan_begin.getUTCDay() == fake_plan_end.getUTCDay()) {
+                show_lecture_week = (plan_begin.getTime() / 1000 + 43200) >= semester.seminars_begin && (plan_begin.getTime() / 1000) < semester.seminars_end;
+            } else {
+                show_lecture_week = (plan_end.getTime() / 1000 + 43200) >= semester.seminars_begin && (plan_end.getTime() / 1000) < semester.seminars_end;
+            }
             $(".booking-plan-header").data('semester', semester);
             $("#booking-plan-header-semname").text(semester.title);
             if (show_lecture_week) {
-                let sem_week = Math.floor((plan_end.getTime() / 1000 - 10800 - semester.seminars_begin) / 604800) + 1;
+                let lecture_week_start = new Date((semester.seminars_begin  + 43200) * 1000);
+                let lecture_week_start_day = lecture_week_start.getDay();
+                if (lecture_week_start_day == 0) {
+                    //Sunday is 7, not 0!
+                    lecture_week_start_day = 7;
+                }
+                lecture_week_start_day--;
+                let normal_sem_week_begin = semester.seminars_begin - (lecture_week_start_day * 86400);
+                let sem_week = Math.floor((plan_end.getTime() / 1000 - 10800 - normal_sem_week_begin) / 604800) + 1;
                 if (sem_week > 0) {
                     $("#booking-plan-header-semweek").text(sem_week);
                     $("#booking-plan-header-semweek-part").show();
-- 
GitLab