feat(vocab): implement user vocab lesson progress reset functionality
All checks were successful
Deploy to production / deploy (push) Successful in 2m59s
All checks were successful
Deploy to production / deploy (push) Successful in 2m59s
- Added `resetUserVocabLessonProgress` method in `AdminController` to allow admins to reset a user's progress for a specific vocab lesson. - Introduced corresponding route in `adminRouter` for the new reset functionality. - Enhanced `VocabService` with methods to purge lesson progress for users, ensuring that only the specified lesson's progress is affected. - Updated UI components in `UsersView` to facilitate the selection of courses and lessons for resetting progress, including confirmation dialogs and loading states. - Added localization support for the new reset functionality across multiple languages. - Implemented reset functionality in `VocabLessonView` for users to reset their own lesson progress.
This commit is contained in:
@@ -69,17 +69,19 @@ const LESSON_DIDACTICS = {
|
||||
{ target: 'Si Tatay.', gloss: 'Das ist Papa.' },
|
||||
{ target: 'Si Kuya nako.', gloss: 'Das ist mein älterer Bruder.' },
|
||||
{ target: 'Si Ate nako.', gloss: 'Das ist meine ältere Schwester.' },
|
||||
{ target: 'Si Dodong nako.', gloss: 'Das ist mein jüngerer Bruder.' },
|
||||
{ target: 'Si Inday nako.', gloss: 'Das ist meine jüngere Schwester.' },
|
||||
{ target: 'Si Lola nako.', gloss: 'Das ist meine Großmutter.' },
|
||||
{ target: 'Si Lolo nako.', gloss: 'Das ist mein Großvater.' }
|
||||
],
|
||||
grammarFocus: [
|
||||
{ title: 'Respekt in Familienanreden', text: 'Kuya und Ate werden nicht nur in der Familie, sondern auch respektvoll für ältere Personen benutzt.', example: 'Kuya, palihug.' },
|
||||
{ title: 'Respekt in Familienanreden', text: 'Kuya und Ate richtest du an ältere Geschwister (oder respektvoll an andere). Dodong und Inday nutzt du für jüngere Brüder bzw. Schwestern; „Ading“ ist eine weiche Anrede an jüngere Geschwister.', example: 'Kuya, palihug. / Si Dodong nako.' },
|
||||
{ title: 'si als Personenmarker', text: 'Mit "si" markierst du im einfachen Satz eine konkrete Person.', example: 'Si Nanay. Si Tatay.' }
|
||||
],
|
||||
speakingPrompts: [
|
||||
{ title: 'Meine Familie', prompt: 'Stelle vier Familienmitglieder mit kurzen Sätzen vor.', cue: 'Si Nanay. Si Tatay. Si Lola nako. Si Kuya nako.' }
|
||||
{ title: 'Meine Familie', prompt: 'Stelle vier Familienmitglieder mit kurzen Sätzen vor.', cue: 'Si Nanay. Si Tatay. Si Kuya nako. Si Dodong nako.' }
|
||||
],
|
||||
practicalTasks: [{ title: 'Familienpraxis', text: 'Nenne laut sechs Familienwörter und bilde danach drei Mini-Sätze über deine Familie.' }]
|
||||
practicalTasks: [{ title: 'Familienpraxis', text: 'Nenne laut die acht Kern-Familienwörter und bilde danach drei Mini-Sätze über deine Familie.' }]
|
||||
},
|
||||
'Überlebenssätze - Teil 1': {
|
||||
learningGoals: [
|
||||
@@ -116,6 +118,8 @@ const LESSON_DIDACTICS = {
|
||||
{ target: 'Asa si Tatay?', gloss: 'Wo ist Papa?' },
|
||||
{ target: 'Naa siya sa balay.', gloss: 'Er ist zu Hause.' },
|
||||
{ target: 'Kumusta na ang Kuya?', gloss: 'Wie geht es dem älteren Bruder?' },
|
||||
{ target: 'Kumusta na ang Dodong?', gloss: 'Wie geht es dem jüngeren Bruder?' },
|
||||
{ target: 'Kumusta na ang Inday?', gloss: 'Wie geht es der jüngeren Schwester?' },
|
||||
{ target: 'Gutom na ko, Nanay.', gloss: 'Ich habe Hunger, Mama.' },
|
||||
{ target: 'Hapit na ang pagkaon.', gloss: 'Das Essen ist fast fertig.' }
|
||||
],
|
||||
|
||||
@@ -770,6 +770,36 @@ const BISAYA_EXERCISES = {
|
||||
},
|
||||
explanation: '"Ate" bedeutet "ältere Schwester" auf Bisaya. Wird auch für respektvolle Anrede von älteren Frauen verwendet.'
|
||||
},
|
||||
{
|
||||
exerciseTypeId: 2, // multiple_choice
|
||||
title: 'Wie sagt man "jüngerer Bruder" auf Bisaya?',
|
||||
instruction: 'Wähle die richtige Übersetzung.',
|
||||
questionData: {
|
||||
type: 'multiple_choice',
|
||||
question: 'Wie sagt man "jüngerer Bruder" auf Bisaya?',
|
||||
options: ['Dodong', 'Inday', 'Kuya', 'Ate']
|
||||
},
|
||||
answerData: {
|
||||
type: 'multiple_choice',
|
||||
correctAnswer: 0
|
||||
},
|
||||
explanation: '"Dodong" ist die gängige Bisaya-Bezeichnung für einen jüngeren Bruder (von älteren Geschwistern aus gesehen).'
|
||||
},
|
||||
{
|
||||
exerciseTypeId: 2, // multiple_choice
|
||||
title: 'Wie sagt man "jüngere Schwester" auf Bisaya?',
|
||||
instruction: 'Wähle die richtige Übersetzung.',
|
||||
questionData: {
|
||||
type: 'multiple_choice',
|
||||
question: 'Wie sagt man "jüngere Schwester" auf Bisaya?',
|
||||
options: ['Inday', 'Dodong', 'Ate', 'Kuya']
|
||||
},
|
||||
answerData: {
|
||||
type: 'multiple_choice',
|
||||
correctAnswer: 0
|
||||
},
|
||||
explanation: '"Inday" ist die gängige Bisaya-Bezeichnung für eine jüngere Schwester (von älteren Geschwistern aus gesehen).'
|
||||
},
|
||||
{
|
||||
exerciseTypeId: 2, // multiple_choice
|
||||
title: 'Wie sagt man "Großmutter" auf Bisaya?',
|
||||
@@ -806,14 +836,14 @@ const BISAYA_EXERCISES = {
|
||||
instruction: 'Fülle die Lücken mit den richtigen Bisaya-Familienwörtern.',
|
||||
questionData: {
|
||||
type: 'gap_fill',
|
||||
text: '{gap} (Mutter) | {gap} (Vater) | {gap} (älterer Bruder) | {gap} (ältere Schwester) | {gap} (Großmutter) | {gap} (Großvater)',
|
||||
gaps: 6
|
||||
text: '{gap} (Mutter) | {gap} (Vater) | {gap} (älterer Bruder) | {gap} (ältere Schwester) | {gap} (jüngerer Bruder) | {gap} (jüngere Schwester) | {gap} (Großmutter) | {gap} (Großvater)',
|
||||
gaps: 8
|
||||
},
|
||||
answerData: {
|
||||
type: 'gap_fill',
|
||||
answers: ['Nanay', 'Tatay', 'Kuya', 'Ate', 'Lola', 'Lolo']
|
||||
answers: ['Nanay', 'Tatay', 'Kuya', 'Ate', 'Dodong', 'Inday', 'Lola', 'Lolo']
|
||||
},
|
||||
explanation: 'Nanay = Mutter, Tatay = Vater, Kuya = älterer Bruder, Ate = ältere Schwester, Lola = Großmutter, Lolo = Großvater.'
|
||||
explanation: 'Nanay = Mutter, Tatay = Vater, Kuya = älterer Bruder, Ate = ältere Schwester, Dodong = jüngerer Bruder, Inday = jüngere Schwester, Lola = Großmutter, Lolo = Großvater.'
|
||||
},
|
||||
{
|
||||
exerciseTypeId: 4, // transformation
|
||||
|
||||
@@ -117,14 +117,16 @@ const LESSON_DIDACTICS = {
|
||||
{ target: 'Si Tatay.', gloss: 'Das ist Papa.' },
|
||||
{ target: 'Si Kuya nako.', gloss: 'Das ist mein älterer Bruder.' },
|
||||
{ target: 'Si Ate nako.', gloss: 'Das ist meine ältere Schwester.' },
|
||||
{ target: 'Si Dodong nako.', gloss: 'Das ist mein jüngerer Bruder.' },
|
||||
{ target: 'Si Inday nako.', gloss: 'Das ist meine jüngere Schwester.' },
|
||||
{ target: 'Si Lola nako.', gloss: 'Das ist meine Großmutter.' },
|
||||
{ target: 'Si Lolo nako.', gloss: 'Das ist mein Großvater.' }
|
||||
],
|
||||
grammarFocus: [
|
||||
{
|
||||
title: 'Respekt in Familienanreden',
|
||||
text: 'Kuya und Ate werden nicht nur in der Familie, sondern auch respektvoll für ältere Personen benutzt.',
|
||||
example: 'Kuya, palihug.'
|
||||
text: 'Kuya und Ate richtest du an ältere Geschwister (oder respektvoll an andere). Dodong und Inday nutzt du für jüngere Brüder bzw. Schwestern; „Ading“ ist eine weiche Anrede an jüngere Geschwister.',
|
||||
example: 'Kuya, palihug. / Si Dodong nako.'
|
||||
},
|
||||
{
|
||||
title: 'si als Personenmarker',
|
||||
@@ -136,13 +138,13 @@ const LESSON_DIDACTICS = {
|
||||
{
|
||||
title: 'Meine Familie',
|
||||
prompt: 'Stelle vier Familienmitglieder mit kurzen Sätzen vor.',
|
||||
cue: 'Si Nanay. Si Tatay. Si Lola nako. Si Kuya nako.'
|
||||
cue: 'Si Nanay. Si Tatay. Si Kuya nako. Si Dodong nako.'
|
||||
}
|
||||
],
|
||||
practicalTasks: [
|
||||
{
|
||||
title: 'Familienpraxis',
|
||||
text: 'Nenne laut sechs Familienwörter und bilde danach drei Mini-Sätze über deine Familie.'
|
||||
text: 'Nenne laut die acht Kern-Familienwörter und bilde danach drei Mini-Sätze über deine Familie.'
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -202,6 +204,8 @@ const LESSON_DIDACTICS = {
|
||||
{ target: 'Asa si Tatay?', gloss: 'Wo ist Papa?' },
|
||||
{ target: 'Naa siya sa balay.', gloss: 'Er ist zu Hause.' },
|
||||
{ target: 'Kumusta na ang Kuya?', gloss: 'Wie geht es dem älteren Bruder?' },
|
||||
{ target: 'Kumusta na ang Dodong?', gloss: 'Wie geht es dem jüngeren Bruder?' },
|
||||
{ target: 'Kumusta na ang Inday?', gloss: 'Wie geht es der jüngeren Schwester?' },
|
||||
{ target: 'Gutom na ko, Nanay.', gloss: 'Ich habe Hunger, Mama.' },
|
||||
{ target: 'Hapit na ang pagkaon.', gloss: 'Das Essen ist fast fertig.' }
|
||||
],
|
||||
@@ -463,9 +467,9 @@ const LESSONS = [
|
||||
cultural: 'Diese Sätze helfen dir sofort im Alltag weiter.' },
|
||||
|
||||
{ week: 1, day: 2, num: 3, type: 'vocab', title: 'Familienwörter',
|
||||
desc: 'Mama, Papa, Kuya, Ate, Lola, Lolo und mehr',
|
||||
desc: 'Mama, Papa, Kuya, Ate, Dodong, Inday, Lola, Lolo',
|
||||
targetMin: 20, targetScore: 85, review: true,
|
||||
cultural: 'Kuya und Ate werden auch für Nicht-Verwandte verwendet – sehr respektvoll!' },
|
||||
cultural: 'Kuya und Ate für Ältere; Dodong und Inday für jüngere Geschwister. Kuya/Ate werden auch respektvoll außerhalb der Familie genutzt.' },
|
||||
|
||||
{ week: 1, day: 2, num: 4, type: 'conversation', title: 'Familien-Gespräche',
|
||||
desc: 'Einfache Gespräche mit Familienmitgliedern',
|
||||
|
||||
@@ -67,18 +67,20 @@ const LESSON_DIDACTICS = {
|
||||
{ target: 'Si Tatay.', gloss: 'Das ist Papa.' },
|
||||
{ target: 'Si Kuya nako.', gloss: 'Das ist mein älterer Bruder.' },
|
||||
{ target: 'Si Ate nako.', gloss: 'Das ist meine ältere Schwester.' },
|
||||
{ target: 'Si Dodong nako.', gloss: 'Das ist mein jüngerer Bruder.' },
|
||||
{ target: 'Si Inday nako.', gloss: 'Das ist meine jüngere Schwester.' },
|
||||
{ target: 'Si Lola nako.', gloss: 'Das ist meine Großmutter.' },
|
||||
{ target: 'Si Lolo nako.', gloss: 'Das ist mein Großvater.' }
|
||||
],
|
||||
grammarFocus: [
|
||||
{ title: 'Respekt in Familienanreden', text: 'Kuya und Ate werden nicht nur in der Familie, sondern auch respektvoll für ältere Personen benutzt.', example: 'Kuya, palihug.' },
|
||||
{ title: 'Respekt in Familienanreden', text: 'Kuya und Ate richtest du an ältere Geschwister (oder respektvoll an andere). Dodong und Inday nutzt du für jüngere Brüder bzw. Schwestern; „Ading“ ist eine weiche Anrede an jüngere Geschwister.', example: 'Kuya, palihug. / Si Dodong nako.' },
|
||||
{ title: 'si als Personenmarker', text: 'Mit "si" markierst du im einfachen Satz eine konkrete Person.', example: 'Si Nanay. Si Tatay.' }
|
||||
],
|
||||
speakingPrompts: [
|
||||
{ title: 'Meine Familie', prompt: 'Stelle vier Familienmitglieder mit kurzen Sätzen vor.', cue: 'Si Nanay. Si Tatay. Si Lola nako. Si Kuya nako.' }
|
||||
{ title: 'Meine Familie', prompt: 'Stelle vier Familienmitglieder mit kurzen Sätzen vor.', cue: 'Si Nanay. Si Tatay. Si Kuya nako. Si Dodong nako.' }
|
||||
],
|
||||
practicalTasks: [
|
||||
{ title: 'Familienpraxis', text: 'Nenne laut sechs Familienwörter und bilde danach drei Mini-Sätze über deine Familie.' }
|
||||
{ title: 'Familienpraxis', text: 'Nenne laut die acht Kern-Familienwörter und bilde danach drei Mini-Sätze über deine Familie.' }
|
||||
]
|
||||
},
|
||||
'Überlebenssätze - Teil 1': {
|
||||
@@ -118,6 +120,8 @@ const LESSON_DIDACTICS = {
|
||||
{ target: 'Asa si Tatay?', gloss: 'Wo ist Papa?' },
|
||||
{ target: 'Naa siya sa balay.', gloss: 'Er ist zu Hause.' },
|
||||
{ target: 'Kumusta na ang Kuya?', gloss: 'Wie geht es dem älteren Bruder?' },
|
||||
{ target: 'Kumusta na ang Dodong?', gloss: 'Wie geht es dem jüngeren Bruder?' },
|
||||
{ target: 'Kumusta na ang Inday?', gloss: 'Wie geht es der jüngeren Schwester?' },
|
||||
{ target: 'Gutom na ko, Nanay.', gloss: 'Ich habe Hunger, Mama.' },
|
||||
{ target: 'Hapit na ang pagkaon.', gloss: 'Das Essen ist fast fertig.' }
|
||||
],
|
||||
|
||||
@@ -48,6 +48,22 @@ const FAMILY_WORDS = {
|
||||
it: 'sorella maggiore',
|
||||
pt: 'irmã mais velha'
|
||||
},
|
||||
'jüngerer Bruder': {
|
||||
de: 'jüngerer Bruder',
|
||||
en: 'younger brother',
|
||||
es: 'hermano menor',
|
||||
fr: 'frère cadet',
|
||||
it: 'fratello minore',
|
||||
pt: 'irmão mais novo'
|
||||
},
|
||||
'jüngere Schwester': {
|
||||
de: 'jüngere Schwester',
|
||||
en: 'younger sister',
|
||||
es: 'hermana menor',
|
||||
fr: 'sœur cadette',
|
||||
it: 'sorella minore',
|
||||
pt: 'irmã mais nova'
|
||||
},
|
||||
Großmutter: {
|
||||
de: 'Großmutter',
|
||||
en: 'Grandmother',
|
||||
@@ -72,6 +88,8 @@ const BISAYA_TRANSLATIONS = {
|
||||
'Vater': 'Tatay',
|
||||
'älterer Bruder': 'Kuya',
|
||||
'ältere Schwester': 'Ate',
|
||||
'jüngerer Bruder': 'Dodong',
|
||||
'jüngere Schwester': 'Inday',
|
||||
'Großmutter': 'Lola',
|
||||
'Großvater': 'Lolo'
|
||||
};
|
||||
@@ -98,7 +116,7 @@ function createFamilyWordsExercises(nativeLanguageName) {
|
||||
|
||||
// Multiple Choice Übungen für jedes Familienwort
|
||||
const familyWords = Object.keys(FAMILY_WORDS);
|
||||
const bisayaWords = ['Nanay', 'Tatay', 'Kuya', 'Ate', 'Lola', 'Lolo'];
|
||||
const bisayaWords = ['Nanay', 'Tatay', 'Kuya', 'Ate', 'Dodong', 'Inday', 'Lola', 'Lolo'];
|
||||
|
||||
familyWords.forEach((key, index) => {
|
||||
const nativeWord = FAMILY_WORDS[key][langCode];
|
||||
|
||||
Reference in New Issue
Block a user