Refactor native language filtering in VocabService and update frontend handling
- Simplified the logic for filtering courses by native language in VocabService, allowing for better handling of undefined and null values. - Enhanced the VocabCourseListView to clarify the behavior of nativeLanguageId based on user selection, ensuring accurate course retrieval based on language preferences. - Improved comments in both files for better understanding of the filtering logic and its implications on course visibility.
This commit is contained in:
@@ -586,14 +586,13 @@ export default class VocabService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Filter nach Muttersprache (die Sprache des Lerners)
|
// Filter nach Muttersprache (die Sprache des Lerners)
|
||||||
if (nativeLanguageId !== undefined) {
|
// Wenn nativeLanguageId nicht gesetzt ist (undefined), zeige alle Kurse (kein Filter)
|
||||||
if (nativeLanguageId === null) {
|
// Wenn nativeLanguageId === null oder 'null' (aus Frontend), zeige alle Kurse (kein Filter)
|
||||||
// NULL bedeutet "für alle Sprachen" - zeige Kurse ohne native_language_id
|
// Wenn nativeLanguageId eine Zahl ist, zeige nur Kurse für diese Muttersprache
|
||||||
where.nativeLanguageId = null;
|
if (nativeLanguageId !== undefined && nativeLanguageId !== null && nativeLanguageId !== 'null') {
|
||||||
} else {
|
where.nativeLanguageId = Number(nativeLanguageId);
|
||||||
where.nativeLanguageId = Number(nativeLanguageId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
// Wenn nativeLanguageId null/undefined/'null' ist, wird kein Filter angewendet = alle Kurse
|
||||||
|
|
||||||
// Suche nach Titel oder Beschreibung
|
// Suche nach Titel oder Beschreibung
|
||||||
if (search && search.trim()) {
|
if (search && search.trim()) {
|
||||||
|
|||||||
@@ -172,9 +172,21 @@ export default {
|
|||||||
if (this.selectedLanguageId) {
|
if (this.selectedLanguageId) {
|
||||||
params.languageId = this.selectedLanguageId;
|
params.languageId = this.selectedLanguageId;
|
||||||
}
|
}
|
||||||
|
// Nur nativeLanguageId senden, wenn explizit eine Sprache ausgewählt wurde
|
||||||
|
// Leer bedeutet: zeige alle Kurse
|
||||||
|
// "null" bedeutet: zeige nur Kurse ohne Muttersprache
|
||||||
|
// Eine ID bedeutet: zeige nur Kurse für diese Muttersprache
|
||||||
if (this.selectedNativeLanguageId !== '') {
|
if (this.selectedNativeLanguageId !== '') {
|
||||||
params.nativeLanguageId = this.selectedNativeLanguageId === 'null' ? null : this.selectedNativeLanguageId;
|
if (this.selectedNativeLanguageId === 'null') {
|
||||||
|
// Explizit Kurse ohne Muttersprache anfordern
|
||||||
|
params.nativeLanguageId = null;
|
||||||
|
} else {
|
||||||
|
// Spezifische Muttersprache
|
||||||
|
params.nativeLanguageId = this.selectedNativeLanguageId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
// Wenn selectedNativeLanguageId leer ist, wird nativeLanguageId nicht gesetzt
|
||||||
|
// und das Backend zeigt alle Kurse an
|
||||||
if (this.searchTerm.trim()) {
|
if (this.searchTerm.trim()) {
|
||||||
params.search = this.searchTerm.trim();
|
params.search = this.searchTerm.trim();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user