diff --git a/src/App.vue b/src/App.vue index 8899077..79f50fd 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,11 +1,13 @@ diff --git a/src/api/index.js b/src/api/index.js index 09f21c1..277a85a 100644 --- a/src/api/index.js +++ b/src/api/index.js @@ -21,7 +21,13 @@ export const grammarApi = { } export const quizApi = { - generate: (count = 5) => api.get('/quiz/generate', { params: { count } }), + generate: (count = 10, difficulty, studiedIds) => api.get('/quiz/generate', { + params: { + count, + difficulty: difficulty || undefined, + studied: studiedIds && studiedIds.length ? studiedIds.join(',') : undefined, + }, + }), saveResult: (data) => api.post('/quiz/result', data), } @@ -30,3 +36,11 @@ export const questApi = { complete: (data) => api.post('/quest/complete', data), getStreak: (session) => api.get('/quest/streak', { params: { session } }), } + +export const progressApi = { + getStats: (session) => api.get('/progress/stats', { params: { session } }), + recordWord: (session_id, word_id) => api.post('/progress/word', { session_id, word_id }), + recordQuizAnswer: (data) => api.post('/progress/quiz-answer', data), + recordQuizComplete: (data) => api.post('/progress/quiz-complete', data), + getStudiedWords: (session, date) => api.get('/progress/studied-words', { params: { session, date } }), +} diff --git a/src/router/index.js b/src/router/index.js index efd9027..48ce62e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -5,9 +5,12 @@ export default createRouter({ history: createWebHistory(), routes: [ { path: '/', component: HomeView }, + { path: '/learn', component: () => import('../views/LearnView.vue') }, { path: '/words', component: () => import('../views/WordsView.vue') }, + { path: '/flashcard', component: () => import('../views/FlashcardView.vue') }, { path: '/phrases', component: () => import('../views/PhrasesView.vue') }, { path: '/quiz', component: () => import('../views/QuizView.vue') }, { path: '/grammar', component: () => import('../views/GrammarView.vue') }, + { path: '/stats', component: () => import('../views/StatsView.vue') }, ], }) diff --git a/src/views/FlashcardView.vue b/src/views/FlashcardView.vue new file mode 100644 index 0000000..dcb357e --- /dev/null +++ b/src/views/FlashcardView.vue @@ -0,0 +1,150 @@ + + + + + diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index b47d89b..269d8fc 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -1,19 +1,39 @@ + + diff --git a/src/views/LearnView.vue b/src/views/LearnView.vue new file mode 100644 index 0000000..d2f3afb --- /dev/null +++ b/src/views/LearnView.vue @@ -0,0 +1,189 @@ + + + + + diff --git a/src/views/QuizView.vue b/src/views/QuizView.vue index 55c6372..577961d 100644 --- a/src/views/QuizView.vue +++ b/src/views/QuizView.vue @@ -1,88 +1,198 @@ + + diff --git a/src/views/StatsView.vue b/src/views/StatsView.vue new file mode 100644 index 0000000..8ee2260 --- /dev/null +++ b/src/views/StatsView.vue @@ -0,0 +1,103 @@ + + + + +