From 9ba5fa0f00f450921755776cdccca52de23f1929 Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms <tleilax+studip@gmail.com> Date: Wed, 14 Aug 2024 13:32:40 +0000 Subject: [PATCH] admin courses: provide width hint in col group for contents column, fixes #3078 Closes #3078 Merge request studip/studip!3248 --- resources/vue/components/AdminCourses.vue | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/resources/vue/components/AdminCourses.vue b/resources/vue/components/AdminCourses.vue index d24a9004281..ac4d3179239 100644 --- a/resources/vue/components/AdminCourses.vue +++ b/resources/vue/components/AdminCourses.vue @@ -9,6 +9,14 @@ {{ coursesCount + ' ' + $gettext('Veranstaltungen') }} </span> </caption> + <colgroup> + <col v-if="showComplete"> + <col v-for="activeField in sortedActivatedFields" + :key="`col-${activeField}`" + :style="{width: activeField === 'contents' && contentWidth !== null ? `${contentWidth}px` : null}" + > + <col> + </colgroup> <thead> <tr class="sortable"> <th v-if="showComplete" :class="sort.by === 'completion' ? 'sort' + sort.direction.toLowerCase() : ''"> @@ -126,11 +134,26 @@ export default { }, currentLine: null, open_children: [], + contentWidth: null, }; }, created() { this.loadCourses(); }, + updated() { + const iconNavigations = this.$el.querySelectorAll('tbody .my-courses-navigation'); + + if (iconNavigations.length === 0) { + this.contentWidth = null; + return; + } + + const iconCounts = Array.from(iconNavigations).map(node => { + return node.querySelectorAll('.my-courses-navigation-item').length; + }); + + this.contentWidth = Math.max(...iconCounts) * 26; + }, computed: { ...mapState('admincourses', [ 'activatedFields', -- GitLab