From adc812556d0a5e21a26701615c72ff251ba7e2c3 Mon Sep 17 00:00:00 2001
From: "B. Sc Pius Gyamenah" <pgyamenah001@st.ug.edu.gh>
Date: Thu, 25 Aug 2022 07:39:39 +0000
Subject: [PATCH] Biest #1002

Closes #1002 and #1058

Merge request studip/studip!883
---
 .../courseware/CoursewareCollapsibleBox.vue   | 14 +++++++++++++-
 .../courseware/CoursewareEmbedBlock.vue       | 19 +++++++++++++++++--
 .../components/courseware/CoursewareTab.vue   |  6 ++++++
 3 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/resources/vue/components/courseware/CoursewareCollapsibleBox.vue b/resources/vue/components/courseware/CoursewareCollapsibleBox.vue
index e4a7497c87a..c4f9233140c 100644
--- a/resources/vue/components/courseware/CoursewareCollapsibleBox.vue
+++ b/resources/vue/components/courseware/CoursewareCollapsibleBox.vue
@@ -35,7 +35,19 @@ export default {
             isOpen: this.open,
         };
     },
-    methods: {},
+    mounted(){
+        this.updateCollapsible();
+    },
+    updated() {
+        this.updateCollapsible();
+    },
+    methods: {
+        updateCollapsible() {
+            if (this.isOpen) {
+                STUDIP.eventBus.emit('courseware:update-collapsible', { 'uid': this._uid });
+            }
+        }
+    },
     watch: {
         open(state) {
             this.isOpen = state;
diff --git a/resources/vue/components/courseware/CoursewareEmbedBlock.vue b/resources/vue/components/courseware/CoursewareEmbedBlock.vue
index 2808ffa2478..ec8a4259985 100644
--- a/resources/vue/components/courseware/CoursewareEmbedBlock.vue
+++ b/resources/vue/components/courseware/CoursewareEmbedBlock.vue
@@ -154,9 +154,17 @@ export default {
     },
     mounted() {
         this.initCurrentData();
-
         window.addEventListener('resize', this.calcContentHeight);
     },
+
+    created () {
+        STUDIP.eventBus.on('courseware:update-tab', (data) => {
+            this.recalculateContentHeight(data);
+        });
+        STUDIP.eventBus.on('courseware:update-collapsible', (data) => {
+            this.recalculateContentHeight(data);
+        });
+    },
     destroyed() {
         window.removeEventListener('resize', this.calcContentHeight);
     },
@@ -172,8 +180,15 @@ export default {
             this.currentEndTime = this.endTime;
             this.oembedData = this.oembed;
             if (this.oembedData !== null) {
-                this.calcContentHeight();
                 this.updateTime();
+                this.calcContentHeight();
+            }
+        },
+        recalculateContentHeight(data){
+            if (this.$parent._uid === data.uid) {
+                if (this.oembedData !== null) {
+                    this.calcContentHeight();
+                }
             }
         },
         addTimeData(data) {
diff --git a/resources/vue/components/courseware/CoursewareTab.vue b/resources/vue/components/courseware/CoursewareTab.vue
index 5c5217283f8..6be50af897e 100644
--- a/resources/vue/components/courseware/CoursewareTab.vue
+++ b/resources/vue/components/courseware/CoursewareTab.vue
@@ -36,6 +36,12 @@ export default {
     mounted() {
         this.isActive = this.selected;
     },
+    updated () {
+        if (this.isActive) {
+            STUDIP.eventBus.emit('courseware:update-tab',{ 'uid': this._uid });
+        }
+
+    },
     watch: {
         selected(newValue) {
             this.isActive = newValue;
-- 
GitLab