From 04ab072dc59d2f87cca25b4208fe551ec2fa9bff Mon Sep 17 00:00:00 2001 From: "Torsten Schulz (local)" Date: Tue, 26 May 2026 12:56:50 +0200 Subject: [PATCH] =?UTF-8?q?feat:=20aktualisiere=20=C3=9Cbungsanzeige,=20um?= =?UTF-8?q?=20synthetische=20Kapitel-MCs=20auszuschlie=C3=9Fen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/social/VocabLessonView.vue | 29 ++++++++++++++----- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/frontend/src/views/social/VocabLessonView.vue b/frontend/src/views/social/VocabLessonView.vue index c27ad4c..3215fd7 100644 --- a/frontend/src/views/social/VocabLessonView.vue +++ b/frontend/src/views/social/VocabLessonView.vue @@ -31,7 +31,7 @@ class="tab-button" > {{ $t('socialnetwork.vocab.courses.exercises') }} - ({{ effectiveExercises?.length || 0 }}) + ({{ displayExercises?.length || 0 }}) @@ -59,7 +59,7 @@
{{ $t('socialnetwork.vocab.courses.exerciseLoad') }} - {{ effectiveExercises?.length || 0 }} {{ $t('socialnetwork.vocab.courses.exercisesShort') }} + {{ displayExercises?.length || 0 }} {{ $t('socialnetwork.vocab.courses.exercisesShort') }}
{{ $t('socialnetwork.vocab.courses.exerciseProgressLabel') }} - {{ exerciseCorrectCount }}/{{ effectiveExercises.length }} + {{ exerciseCorrectCount }}/{{ displayExercises.length }}
{{ $t('socialnetwork.vocab.courses.successRate') }} @@ -1367,15 +1367,30 @@ export default { } return []; }, + // Visible exercises for UI counts: exclude synthetic chapter MCs (ids starting with 'syn-') + displayExercises() { + try { + const raw = this.effectiveExercises || []; + return raw.filter((e) => { + try { + return !(typeof e.id === 'string' && e.id.startsWith('syn-')); + } catch (err) { + return true; + } + }); + } catch (e) { + return this.effectiveExercises || []; + } + }, exerciseCorrectCount() { - return this.effectiveExercises.filter((exercise) => Boolean(this.exerciseResults[exercise.id]?.correct)).length; + return this.displayExercises.filter((exercise) => Boolean(this.exerciseResults[exercise.id]?.correct)).length; }, exerciseAnsweredCount() { - return this.effectiveExercises.filter((exercise) => Boolean(this.exerciseResults[exercise.id])).length; + return this.displayExercises.filter((exercise) => Boolean(this.exerciseResults[exercise.id])).length; }, exerciseProgressPercent() { - if (!this.effectiveExercises.length) return 0; - return Math.round((this.exerciseCorrectCount / this.effectiveExercises.length) * 100); + if (!this.displayExercises.length) return 0; + return Math.round((this.exerciseCorrectCount / this.displayExercises.length) * 100); }, exerciseTargetScore() { return Number(this.lesson?.targetScorePercent) || 80;