From 8322ed65e997c3db550ceb76944361d4061b854f Mon Sep 17 00:00:00 2001 From: Moritz Strohm <strohm@data-quest.de> Date: Tue, 14 Dec 2021 17:08:35 +0000 Subject: [PATCH] fixed display of semester week, hide semester outside lecture period, re #453 --- .../resources/room_planning/booking_plan.php | 4 +- app/views/room_management/planning/index.php | 18 +++---- .../assets/javascripts/lib/fullcalendar.js | 15 +++--- resources/assets/javascripts/lib/resources.js | 52 +++++++++++-------- 4 files changed, 49 insertions(+), 40 deletions(-) diff --git a/app/views/resources/room_planning/booking_plan.php b/app/views/resources/room_planning/booking_plan.php index 5792a2a2abc..0c2944ada7d 100644 --- a/app/views/resources/room_planning/booking_plan.php +++ b/app/views/resources/room_planning/booking_plan.php @@ -8,8 +8,7 @@ } ?> <section id="booking_plan_header" - class="studip-fullcalendar-header booking-plan-header" - data-semester-begin="" data-semester-end=""> + class="studip-fullcalendar-header booking-plan-header"> <span id="booking-plan-header-resource-name-line"> <? if ($resource instanceof Room) : ?> <?= htmlReady($resource->name) ?> @@ -23,6 +22,7 @@ <strong> <span id="booking-plan-header-semname"></span> <span id="booking-plan-header-semweek-part"> + <?= _('Vorlesungswoche') ?> <span id="booking-plan-header-semweek"></span> </span> </strong> diff --git a/app/views/room_management/planning/index.php b/app/views/room_management/planning/index.php index 321d3a6af7d..f42f8a00775 100644 --- a/app/views/room_management/planning/index.php +++ b/app/views/room_management/planning/index.php @@ -14,22 +14,22 @@ $min_time = Config::get()->RESOURCES_BOOKING_PLAN_START_HOUR . ':00'; $max_time = Config::get()->RESOURCES_BOOKING_PLAN_END_HOUR . ':00'; } ?> - <section class="studip-fullcalendar-header booking-plan-header" - data-semester-begin="" data-semester-end=""> + <section class="studip-fullcalendar-header booking-plan-header"> <div> <?= _('Raumgruppe') ?> <span id="booking-plan-header-roomgroup"><?= htmlReady($clipboard->name) ?></span> - <span id="booking-plan-header-semrow"> - <strong> - <?= _('KW') ?> - <span id="booking-plan-header-calweek"></span> - (<span id="booking-plan-header-calbegin"></span>) + <strong> + <?= _('KW') ?> + <span id="booking-plan-header-calweek"></span> + (<span id="booking-plan-header-calbegin"></span>) + <span id="booking-plan-header-semrow"> <span id="booking-plan-header-semname"></span> <span id="booking-plan-header-semweek-part"> + <?= _('Vorlesungswoche') ?> <span id="booking-plan-header-semweek"></span> </span> - </strong> - </span> + </span> + </strong> </div> </section> diff --git a/resources/assets/javascripts/lib/fullcalendar.js b/resources/assets/javascripts/lib/fullcalendar.js index c6b1b5d734a..0d9d0f1b8c4 100644 --- a/resources/assets/javascripts/lib/fullcalendar.js +++ b/resources/assets/javascripts/lib/fullcalendar.js @@ -547,16 +547,19 @@ class Fullcalendar if ($('.booking-plan-header').length) { end.setDate(end.getDate()); - var sem_start = $('.booking-plan-header').data('semester-begin'); - var sem_end = $('.booking-plan-header').data('semester-end'); + let semester = $('.booking-plan-header').data('semester'); + let sem_start = null; + let sem_end = null; + if (semester) { + sem_start = semester.seminars_begin; + sem_end = semester.seminars_end; + } if (sem_start && (start.getTime() / 1000 < sem_start || start.getTime() / 1000 > sem_end)) { sem_start = null; sem_end = null; - } else if(sem_start) { - var sem_week = Math.floor((end.getTime() / 1000 - 10800 - sem_start) / (7 * 24 * 60 * 60)) + 1; - $("#booking-plan-header-semweek-part").text("Vorlesungswoche".toLocaleString()); - $('#booking-plan-header-semweek').text(sem_week); + } else if (sem_start) { + STUDIP.Resources.updateBookingPlanDateInfos(activeRange.start, activeRange.end, semester); } $('#booking-plan-header-calweek').text(start.getWeekNumber()); $('#booking-plan-header-calbegin').text(start.toLocaleDateString('de-DE', {weekday: 'short'}) + ' ' + start.toLocaleDateString('de-DE')); diff --git a/resources/assets/javascripts/lib/resources.js b/resources/assets/javascripts/lib/resources.js index 126a55ebc2e..417eb172324 100644 --- a/resources/assets/javascripts/lib/resources.js +++ b/resources/assets/javascripts/lib/resources.js @@ -709,49 +709,55 @@ class Resources static updateBookingPlanSemesterByView(activeRange, api_url = 'api.php/semesters') { - var semester = null; + let semester = null; jQuery.ajax( STUDIP.URLHelper.getURL(api_url), { method: 'get', dataType: 'json', - success: function(data) { + success: function (data) { if (data) { - var start = activeRange.start; - var end = activeRange.end; Object.values(data.collection).forEach(item => { - if (start.getTime()/1000 >= item.seminars_begin && start.getTime()/1000 < item.seminars_end) { + if (activeRange.start.getTime() / 1000 >= item.begin && activeRange.start.getTime() / 1000 < item.end) { semester = item; } }); - if (semester) { - $(".booking-plan-header") - .data('semester-begin', semester.seminars_begin) - .data('semester-end', semester.seminars_end); - $("#booking-plan-header-semrow").show(); - $("#booking-plan-header-semname").text(semester.title); - var sem_week = Math.floor((end.getTime()/1000 - 10800 - semester.seminars_begin) / 604800)+1; - $("#booking-plan-header-semweek-part").text("Vorlesungswoche".toLocaleString()); - $("#booking-plan-header-semweek").text(sem_week); - } else { + if (!semester) { if (data.pagination && data.pagination.links && data.pagination.links.next != api_url) { semester = STUDIP.Resources.updateBookingPlanSemesterByView(activeRange, data.pagination.links.next); - } else { - $(".booking-plan-header") - .data('semester-begin', '') - .data('semester-end', ''); } } - - $('#booking-plan-header-calweek').text(start.getWeekNumber()); - $('#booking-plan-header-calbegin').text(start.toLocaleDateString('de-DE', {weekday: 'short'}) + ' ' + start.toLocaleDateString('de-DE')); - $('#booking-plan-header-calend').text(end.toLocaleDateString('de-DE', {weekday: 'short'}) + ' ' + end.toLocaleDateString('de-DE')); } + STUDIP.Resources.updateBookingPlanDateInfos(activeRange.start, activeRange.end, semester); } } ); } + static updateBookingPlanDateInfos(plan_begin, plan_end, semester = null) + { + if (semester) { + let show_lecture_week = plan_begin.getTime()/1000 >= semester.seminars_begin && plan_begin.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; + $("#booking-plan-header-semweek").text(sem_week); + $("#booking-plan-header-semweek-part").show(); + } else { + $("#booking-plan-header-semweek-part").hide(); + } + $("#booking-plan-header-semrow").show(); + } else { + $(".booking-plan-header").data('semester', null); + $('#booking-plan-header-semrow').hide(); + } + + $('#booking-plan-header-calweek').text(plan_begin.getWeekNumber()); + $('#booking-plan-header-calbegin').text(plan_begin.toLocaleDateString('de-DE', {weekday: 'short'}) + ' ' + plan_begin.toLocaleDateString('de-DE')); + $('#booking-plan-header-calend').text(plan_end.toLocaleDateString('de-DE', {weekday: 'short'}) + ' ' + plan_end.toLocaleDateString('de-DE')); + } + static toggleRequestMarked(source_node) { -- GitLab