From 129b8b2e491a6eb014e54c20a9c5cfcac4909187 Mon Sep 17 00:00:00 2001 From: SimonGschnell Date: Thu, 10 Jul 2025 11:47:22 +0200 Subject: [PATCH] refactor(LvPlan Widget renderer component): adds the renderer component to the lvplan widget --- public/css/Cis4/CoreCalendarEvents.css | 43 +++++++++- .../Cis/Renderer/Feiertage/calendarEvent.js | 2 +- .../js/components/DashboardWidget/LvPlan.js | 82 ++++++++++++++----- 3 files changed, 106 insertions(+), 21 deletions(-) diff --git a/public/css/Cis4/CoreCalendarEvents.css b/public/css/Cis4/CoreCalendarEvents.css index 9111d21cd..f248f4a61 100644 --- a/public/css/Cis4/CoreCalendarEvents.css +++ b/public/css/Cis4/CoreCalendarEvents.css @@ -122,4 +122,45 @@ margin: 0.5rem; } -.dayPageContainer .feiertagEventContent #ferienEventTitle {} \ No newline at end of file +.dayPageContainer .feiertagEventContent #ferienEventTitle {} + +/* Minimized Container Styles */ + +/* Ferientage Events for Minimized */ + +.minimizedContainer .feiertagEventContent{ + display: flex; + justify-content: center; + align-items: center; + color: var(--fhc-light); +} + +.minimizedContainer .feiertagEventContent #ferienEventIcon{ + margin: 0.5rem; +} + +.minimizedContainer .feiertagEventContent #ferienEventTitle{ + flex-grow: 1; +} + +/* Lehreinheits Events in Minimized */ +.dayPageContainer .lehreinheitEventContent { + display: flex; + padding-left: 4rem; + justify-content: space-evenly; + align-items: center; + +} + +.dayPageContainer .lehreinheitEventContent #lehreinheitEventHeader { + display: grid; + align-content: center; +} + +.dayPageContainer .lehreinheitEventContent #lehreinheitEventText { + display: contents; +} + +.dayPageContainer .lehreinheitEventContent #lehreinheitEventText * { + font-weight: 500; +} \ No newline at end of file diff --git a/public/js/components/Cis/Renderer/Feiertage/calendarEvent.js b/public/js/components/Cis/Renderer/Feiertage/calendarEvent.js index b3367b64e..ffc164117 100644 --- a/public/js/components/Cis/Renderer/Feiertage/calendarEvent.js +++ b/public/js/components/Cis/Renderer/Feiertage/calendarEvent.js @@ -9,6 +9,6 @@ export default { template: `
- {{event.titel}} + {{event.titel}}
`, }; \ No newline at end of file diff --git a/public/js/components/DashboardWidget/LvPlan.js b/public/js/components/DashboardWidget/LvPlan.js index f180c47e6..1e2588161 100644 --- a/public/js/components/DashboardWidget/LvPlan.js +++ b/public/js/components/DashboardWidget/LvPlan.js @@ -30,9 +30,29 @@ export default { roomInfoContentID: null, ort_kurzbz: null, selectedEvent: null, + isModalContentResolved: false, + isModalTitleResolved: false, + isShowModal: false, } }, + inject: ["renderers"], + watch:{ + modalLoaded: { + handler: function (newValue) { + if (this.isShowModal && newValue.isModalContentResolved && newValue.isModalTitleResolved) { + this.$nextTick(() => { + if (this.$refs.lvmodal) this.$refs.lvmodal.show(); + this.isShowModal = false; + }); + } + }, + immediate: true + }, + }, computed: { + modalLoaded: function () { + return { isModalContentResolved: this.isModalContentResolved, isModalTitleResolved: this.isModalTitleResolved }; + }, allEventsGrouped() { // groups all events of the next 7 days together const currentCalendarDate = new CalendarDate(this.currentDay) @@ -46,7 +66,7 @@ export default { arr[1].push(cur) return acc - }, mapArr)) + }, mapArr)); }, currentEvents() { return (this.events || []).filter(evt => evt.end < this.dayAfterCurrentDay && evt.start >= this.currentDay); @@ -64,6 +84,34 @@ export default { }, }, methods: { + showModal: function (event) { + this.currentlySelectedEvent = event; + Vue.nextTick(() => { + if (this.isModalContentResolved && this.isModalTitleResolved) { + if (this.$refs.lvmodal) this.$refs.lvmodal.show(); + } + else { + this.isShowModal = true; + } + }) + }, + modalTitleResolved: function () { + this.isModalTitleResolved = true; + + }, + modalContentResolved: function () { + this.isModalContentResolved = true; + + }, + modalTitleComponent(type) { + return this.renderers[type]?.modalTitle; + }, + modalContentComponent(type) { + return this.renderers[type]?.modalContent; + }, + calendarEventComponent(type) { + return this.renderers[type]?.calendarEvent; + }, getEventStyle: function(evt) { const styles = {'background-color': evt.color}; if(evt.start.getTime() < Date.now()) styles.opacity = 0.5; @@ -169,7 +217,18 @@ export default { }, template: /*html*/`
- + + + +