From dde95c8e01037120dda06493ab32a630a709b166 Mon Sep 17 00:00:00 2001 From: adisposkofh Date: Mon, 31 Aug 2026 14:03:12 +0200 Subject: [PATCH] lv plan range view styling --- public/css/components/calendar/frame.css | 7 +++ public/js/components/Calendar/Base/Grid.js | 8 +++- .../js/components/Calendar/Base/Grid/Line.js | 1 + public/js/components/Calendar/LvPlan.js | 45 +++++++++++++++---- public/js/components/Calendar/Mode/Range.js | 4 +- public/js/components/Cis/LvPlan/MyLvPlan.js | 6 ++- 6 files changed, 58 insertions(+), 13 deletions(-) diff --git a/public/css/components/calendar/frame.css b/public/css/components/calendar/frame.css index dcaeef302..bbd91249e 100644 --- a/public/css/components/calendar/frame.css +++ b/public/css/components/calendar/frame.css @@ -104,6 +104,13 @@ .fhc-calendar-base-grid-line { grid-gap: var(--fhc-calendar-gap-events, var(--fhc-calendar-gap, 1px)); } +.fhc-calendar-mode-range .main-header-sunday, +.fhc-calendar-mode-range .all-day-events-sunday, +.fhc-calendar-mode-range .fhc-calendar-base-grid-line-sunday { + border: solid; + border-width: 0 0 8px 0; + border-color: var(--fhc-calendar-gap); +} .fhc-calendar-base-label-time { display: flex; flex-direction: column; diff --git a/public/js/components/Calendar/Base/Grid.js b/public/js/components/Calendar/Base/Grid.js index 3418a9151..c824171a6 100644 --- a/public/js/components/Calendar/Base/Grid.js +++ b/public/js/components/Calendar/Base/Grid.js @@ -328,7 +328,10 @@ export default { v-for="(date, index) in axisMain" :key="index" class="main-header" - :class="{'collapsed-header': axisMainCollapsible && hasValidEvents && !events[index].length}" + :class="{ + 'collapsed-header': axisMainCollapsible && hasValidEvents && !events[index].length, + 'main-header-sunday': date.weekday === 7 + }" :style="'grid-' + axisCol + ':' + (2+index)" > @@ -344,6 +347,7 @@ export default { v-for="(events, index) in eventsAllDay" :key="index" class="all-day-events" + :class="{'all-day-events-sunday': axisMain[index].weekday === 7}" :style="'grid-' + axisCol + ':' + (2+index)" > diff --git a/public/js/components/Calendar/Base/Grid/Line.js b/public/js/components/Calendar/Base/Grid/Line.js index 1f266d0a1..d3d5110de 100644 --- a/public/js/components/Calendar/Base/Grid/Line.js +++ b/public/js/components/Calendar/Base/Grid/Line.js @@ -123,6 +123,7 @@ export default { template: /* html */ `
diff --git a/public/js/components/Calendar/LvPlan.js b/public/js/components/Calendar/LvPlan.js index 387d2312e..60e8771c7 100644 --- a/public/js/components/Calendar/LvPlan.js +++ b/public/js/components/Calendar/LvPlan.js @@ -16,7 +16,14 @@ export default { components: { FhcCalendar }, - inject: ["isMobile"], + inject: { + isMobile: { + default: false, + }, + rangeLength: { + default: 30, + } + }, props: { date: { type: [Date, String, Number, luxon.DateTime], @@ -69,21 +76,43 @@ export default { backgrounds() { let now = luxon.DateTime.now().setZone(this.timezone); - if (this.mode == 'Month') + if (this.mode == 'Month') { return [ { class: 'background-past', end: now.startOf('day') } ]; + } else if (this.mode == 'Range') { + return []; + const start = luxon.DateTime.fromISO(this.$props.date); + const end = start.plus({days: this.rangeLength}); + let backgrounds = []; - return [ - { - class: 'background-past', - end: now, - label: now.startOf('minute').toISOTime({ suppressSeconds: true, includeOffset: false }) + let saturdayOffset = 6 - start.weekday; + let saturday = start.plus({days: saturdayOffset}); + while (saturday.ts < end.ts) { + backgrounds.push( + { + class: "background-weekend", + start: saturday.startOf("day"), + end: saturday.plus({days: 1}).endOf("day"), + } + ); + + saturday = saturday.plus({days: 7}); } - ]; + + return backgrounds; + } else { + return [ + { + class: 'background-past', + end: now, + label: now.startOf('minute').toISOTime({ suppressSeconds: true, includeOffset: false }) + } + ]; + } }, modes() { let modes = { diff --git a/public/js/components/Calendar/Mode/Range.js b/public/js/components/Calendar/Mode/Range.js index fafd1d9d7..30aae66be 100644 --- a/public/js/components/Calendar/Mode/Range.js +++ b/public/js/components/Calendar/Mode/Range.js @@ -87,7 +87,7 @@ export default { }, template: /*html*/ `
- + diff --git a/public/js/components/Cis/LvPlan/MyLvPlan.js b/public/js/components/Cis/LvPlan/MyLvPlan.js index ee1528dfa..7d1593230 100644 --- a/public/js/components/Cis/LvPlan/MyLvPlan.js +++ b/public/js/components/Cis/LvPlan/MyLvPlan.js @@ -33,7 +33,11 @@ export default { inject: ["isMobile"], provide() { return { - rangeLength: Vue.computed(() => this.$route.params.range_length || 30), + rangeLength: Vue.computed(() => { + if (!this.$route.params.range_length) return 30; + else if (this.$route.params.range_length > 365) return 365; + else return this.$route.params.range_length; + }), rangeViewPresets: Vue.computed(() => this.semesterRangePresets) }; },