From f8257f06e51de00116c78f9929d579d46300355f Mon Sep 17 00:00:00 2001 From: minie4 Date: Wed, 28 Sep 2022 21:14:46 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20Skip=20weekend=20in=20navigation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/day-carousel.vue | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/components/day-carousel.vue b/src/components/day-carousel.vue index 1d763a7..4f410b0 100644 --- a/src/components/day-carousel.vue +++ b/src/components/day-carousel.vue @@ -30,14 +30,17 @@ function slideChange(swiper) { const activeSlide = swiper.activeIndex; if (activeSlide == loadedDates.value.length - 1) { const lastDate = loadedDates.value[loadedDates.value.length - 1]; - loadedDates.value.push(calculateDate(lastDate, 1)); + loadedDates.value.push(getDateSkippingWeekend(calculateDate(lastDate, 1))); } } function slideChangeEnd(swiper) { const activeSlide = swiper.activeIndex; if (activeSlide == 0) { const lastDate = loadedDates.value[0]; - loadedDates.value = [calculateDate(lastDate, -1), ...loadedDates.value]; + loadedDates.value = [ + getDateSkippingWeekend(calculateDate(lastDate, -1)), + ...loadedDates.value, + ]; swiper.slideTo(activeSlide + 1, 0); } } @@ -62,12 +65,23 @@ function slideToDate(date) { // Watch for slide change instructions watch(changeDay, (change) => { if (change == 0) return; - slideToDate(calculateDate(selectedDate.value, change)); + const calculatedDate = calculateDate(selectedDate.value, change); + slideToDate(getDateSkippingWeekend(calculatedDate)); changeDay.value = 0; }); watch(changeDate, (date) => { slideToDate(new Date(date.setUTCHours(0, 0, 0, 0))); }); + +function getDateSkippingWeekend(date) { + var calculatedDate = date; + // Skip weekend + if (calculatedDate.getDay() == 6) + calculatedDate = new Date(calculatedDate.getTime() + 86400000 * 2); + if (calculatedDate.getDay() == 0) + calculatedDate = new Date(calculatedDate.getTime() - 86400000 * 2); + return calculatedDate; +}