From 7c74a728b68cfa2c948de7da52a384350eca7b7d Mon Sep 17 00:00:00 2001 From: 21120447 Date: Wed, 26 Jun 2024 14:06:15 +0700 Subject: [PATCH 1/2] chore: branch do-exercise --- src/api/examsRepository.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/api/examsRepository.ts b/src/api/examsRepository.ts index 7375e9c..fd716fc 100644 --- a/src/api/examsRepository.ts +++ b/src/api/examsRepository.ts @@ -1,13 +1,14 @@ import AxiosClient from "./axios"; const resource = "/category"; +const resourceExam = "/exam"; export default { get(classId: string, currentPage: number) { - return AxiosClient.get(`${resource}/${classId}/exams?page=${currentPage}`); + return AxiosClient.get(`${resource}/${classId}${resourceExam}?page=${currentPage}`); }, getOne(exerciseId: string) { - return AxiosClient.get(`/exam/${exerciseId}`); + return AxiosClient.get(`${resourceExam}/${exerciseId}`); }, search(searchText: string, page: number) { return AxiosClient.post('/search', { @@ -15,5 +16,8 @@ export default { page: page || 1, }); }, + submit(formData: any) { + return AxiosClient.post(`${resourceExam}/submit`, formData); + } } From 17f4e5388db6fe7312b573f4720a5b255927cb03 Mon Sep 17 00:00:00 2001 From: 21120447 Date: Wed, 26 Jun 2024 17:05:39 +0700 Subject: [PATCH 2/2] feat: submit exam and show results (no details result) --- package.json | 2 + src/api/examsRepository.ts | 2 +- src/components/Button/ButtonUtils.vue | 22 ++++++++ src/components/DoExercise/Question.vue | 30 +++++++++-- src/components/DoExercise/Quote.vue | 20 +++++++ src/components/DoExercise/Results.vue | 73 +++++++++++++++++++++++++ src/utils/cn.ts | 6 +++ src/views/DoExercisePage.vue | 75 ++++++++++++++++++++++---- yarn.lock | 24 +++++++++ 9 files changed, 237 insertions(+), 17 deletions(-) create mode 100644 src/components/Button/ButtonUtils.vue create mode 100644 src/components/DoExercise/Quote.vue create mode 100644 src/components/DoExercise/Results.vue create mode 100644 src/utils/cn.ts diff --git a/package.json b/package.json index bae3e8c..5e359f0 100644 --- a/package.json +++ b/package.json @@ -14,8 +14,10 @@ "@commitlint/cli": "^19.3.0", "@commitlint/config-conventional": "^19.2.2", "axios": "^1.7.2", + "clsx": "^2.1.1", "pinia": "^2.1.7", "primeicons": "^7.0.0", + "tailwind-merge": "^2.3.0", "vue": "^3.4.21", "vue-awesome-paginate": "^1.1.46", "vue-router": "4", diff --git a/src/api/examsRepository.ts b/src/api/examsRepository.ts index fd716fc..7d0d646 100644 --- a/src/api/examsRepository.ts +++ b/src/api/examsRepository.ts @@ -5,7 +5,7 @@ const resourceExam = "/exam"; export default { get(classId: string, currentPage: number) { - return AxiosClient.get(`${resource}/${classId}${resourceExam}?page=${currentPage}`); + return AxiosClient.get(`${resource}/${classId}/exams?page=${currentPage}`); }, getOne(exerciseId: string) { return AxiosClient.get(`${resourceExam}/${exerciseId}`); diff --git a/src/components/Button/ButtonUtils.vue b/src/components/Button/ButtonUtils.vue new file mode 100644 index 0000000..d720fa4 --- /dev/null +++ b/src/components/Button/ButtonUtils.vue @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/src/components/DoExercise/Question.vue b/src/components/DoExercise/Question.vue index cbf0d7c..f3fba6f 100644 --- a/src/components/DoExercise/Question.vue +++ b/src/components/DoExercise/Question.vue @@ -1,11 +1,15 @@ \ No newline at end of file diff --git a/src/components/DoExercise/Quote.vue b/src/components/DoExercise/Quote.vue new file mode 100644 index 0000000..f703d8f --- /dev/null +++ b/src/components/DoExercise/Quote.vue @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/src/components/DoExercise/Results.vue b/src/components/DoExercise/Results.vue new file mode 100644 index 0000000..504a6ce --- /dev/null +++ b/src/components/DoExercise/Results.vue @@ -0,0 +1,73 @@ + + + \ No newline at end of file diff --git a/src/utils/cn.ts b/src/utils/cn.ts new file mode 100644 index 0000000..f408c26 --- /dev/null +++ b/src/utils/cn.ts @@ -0,0 +1,6 @@ +import { ClassValue, clsx } from "clsx"; +import { twMerge } from "tailwind-merge"; + +export function cn(...inputs: ClassValue[]) { + return twMerge(clsx(inputs)); +} \ No newline at end of file diff --git a/src/views/DoExercisePage.vue b/src/views/DoExercisePage.vue index 47eb38b..22f677c 100644 --- a/src/views/DoExercisePage.vue +++ b/src/views/DoExercisePage.vue @@ -1,19 +1,27 @@