feat(vocab): refine vocabulary label logic in VocabLessonView
All checks were successful
Deploy to production / deploy (push) Successful in 2m48s
All checks were successful
Deploy to production / deploy (push) Successful in 2m48s
- Introduced computed properties for current vocabulary preparation labels, enhancing clarity and localization. - Updated label handling to dynamically adjust based on the context of target and gloss items, improving user experience. - Enhanced the logic for determining when to swap labels, ensuring accurate representation of vocabulary items for better learning outcomes.
This commit is contained in:
@@ -126,11 +126,11 @@
|
|||||||
</p>
|
</p>
|
||||||
<div class="vocab-prep-card">
|
<div class="vocab-prep-card">
|
||||||
<div class="vocab-prep-card__row">
|
<div class="vocab-prep-card__row">
|
||||||
<span class="vocab-prep-card__label">{{ prepTargetLabel }}</span>
|
<span class="vocab-prep-card__label">{{ currentPrepTopLabel }}</span>
|
||||||
<div class="vocab-prep-card__target">{{ currentPrepItem.target }}</div>
|
<div class="vocab-prep-card__target">{{ currentPrepItem.target }}</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="vocab-prep-card__row">
|
<div class="vocab-prep-card__row">
|
||||||
<span class="vocab-prep-card__label">{{ prepGlossLabel }}</span>
|
<span class="vocab-prep-card__label">{{ currentPrepBottomLabel }}</span>
|
||||||
<div class="vocab-prep-card__gloss">{{ currentPrepItem.gloss || '—' }}</div>
|
<div class="vocab-prep-card__gloss">{{ currentPrepItem.gloss || '—' }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -1309,6 +1309,12 @@ export default {
|
|||||||
|| this.$t('socialnetwork.vocab.courses.vocabPrepGlossLabel')
|
|| this.$t('socialnetwork.vocab.courses.vocabPrepGlossLabel')
|
||||||
).toUpperCase();
|
).toUpperCase();
|
||||||
},
|
},
|
||||||
|
currentPrepTopLabel() {
|
||||||
|
return this._prepRowLabelFor('target');
|
||||||
|
},
|
||||||
|
currentPrepBottomLabel() {
|
||||||
|
return this._prepRowLabelFor('gloss');
|
||||||
|
},
|
||||||
prepItems() {
|
prepItems() {
|
||||||
// Vorbereitung nur mit echten Paaren (Zielsprache + Übersetzung),
|
// Vorbereitung nur mit echten Paaren (Zielsprache + Übersetzung),
|
||||||
// damit weder leere Gloss-Zeilen noch übergroße Listen entstehen.
|
// damit weder leere Gloss-Zeilen noch übergroße Listen entstehen.
|
||||||
@@ -1812,6 +1818,33 @@ export default {
|
|||||||
}
|
}
|
||||||
return { target: s, gloss: '' };
|
return { target: s, gloss: '' };
|
||||||
},
|
},
|
||||||
|
_prepRowLabelFor(side = 'target') {
|
||||||
|
const item = this.currentPrepItem;
|
||||||
|
if (!item) {
|
||||||
|
return side === 'target' ? this.prepTargetLabel : this.prepGlossLabel;
|
||||||
|
}
|
||||||
|
const nativeHints = new Set(
|
||||||
|
(this.importantVocab || [])
|
||||||
|
.map((x) => this.normalizeLessonVocabTerm(x?.learning))
|
||||||
|
.filter(Boolean)
|
||||||
|
);
|
||||||
|
const targetHints = new Set(
|
||||||
|
(this.importantVocab || [])
|
||||||
|
.map((x) => this.normalizeLessonVocabTerm(x?.reference))
|
||||||
|
.filter(Boolean)
|
||||||
|
);
|
||||||
|
const targetNorm = this.normalizeLessonVocabTerm(item.target);
|
||||||
|
const glossNorm = this.normalizeLessonVocabTerm(item.gloss);
|
||||||
|
const targetLooksNative = nativeHints.has(targetNorm) && !targetHints.has(targetNorm);
|
||||||
|
const glossLooksTarget = targetHints.has(glossNorm) && !nativeHints.has(glossNorm);
|
||||||
|
const targetLooksTarget = targetHints.has(targetNorm) && !nativeHints.has(targetNorm);
|
||||||
|
const glossLooksNative = nativeHints.has(glossNorm) && !targetHints.has(glossNorm);
|
||||||
|
const shouldSwapLabels = targetLooksNative && glossLooksTarget && !(targetLooksTarget && glossLooksNative);
|
||||||
|
if (shouldSwapLabels) {
|
||||||
|
return side === 'target' ? this.prepGlossLabel : this.prepTargetLabel;
|
||||||
|
}
|
||||||
|
return side === 'target' ? this.prepTargetLabel : this.prepGlossLabel;
|
||||||
|
},
|
||||||
corePatternToDisplayString(p) {
|
corePatternToDisplayString(p) {
|
||||||
const n = this.normalizeCorePatternEntry(p);
|
const n = this.normalizeCorePatternEntry(p);
|
||||||
if (!n) return '';
|
if (!n) return '';
|
||||||
|
|||||||
Reference in New Issue
Block a user