From 4124a1fc0268cf0903b11bcba0899c0b1a0042cf Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Sat, 10 Jul 2021 19:16:10 +0000 Subject: [PATCH] Restructure course routes + list of exercises --- package-lock.json | 16 ++ package.json | 1 + src/client.js | 7 +- .../Course/components/HomeTask.svelte | 8 - .../components/Lecture/Classwork.svelte | 1 - .../{Homework => Exercises}/EditMode.svelte | 0 .../Exercise.svelte} | 4 +- .../components/Lecture/Exercises/List.svelte | 66 +++++++ .../{Homework => Exercises}/ViewMode.svelte | 30 ++-- .../components/Lecture/Exercises/constants.js | 4 + .../components/Lecture/Exercises/index.svelte | 13 ++ .../Lecture/Exercises/store/answers.js | 21 +++ .../{Homework => Exercises}/store/index.js | 0 .../components/Lecture/Home/index.svelte | 149 ---------------- .../Lecture/Homework/store/answers.js | 9 - .../Course/components/Lecture/index.svelte | 62 +++---- .../index.svelte} | 32 ++-- .../Course/components/People.svelte | 76 -------- .../Course/components/Scoreboard.svelte | 8 - .../Course/components/TimeTable.svelte | 8 - src/components/CourseContainer/index.svelte | 28 +++ .../Question/CheckboxQuestion/index.svelte | 4 +- .../Question/RadioQuestion/index.svelte | 4 +- .../Question/TextareaQuestion/index.svelte | 9 +- src/routes/_layout.svelte | 3 +- src/routes/courses/[...id]/exercises.svelte | 18 ++ src/routes/courses/[...id]/index.svelte | 61 +------ .../[...id]/lecture/[...id]/index.svelte | 27 +++ .../courses/[...id]/lecture/index.svelte | 166 ++++++++++++++++++ src/routes/courses/[...id]/people.svelte | 88 ++++++++++ src/routes/courses/[...id]/scoreboard.svelte | 18 ++ src/routes/courses/[...id]/timetable.svelte | 18 ++ 32 files changed, 569 insertions(+), 390 deletions(-) delete mode 100644 src/components/Course/components/HomeTask.svelte delete mode 100644 src/components/Course/components/Lecture/Classwork.svelte rename src/components/Course/components/Lecture/{Homework => Exercises}/EditMode.svelte (100%) rename src/components/Course/components/Lecture/{Homework/index.svelte => Exercises/Exercise.svelte} (98%) create mode 100644 src/components/Course/components/Lecture/Exercises/List.svelte rename src/components/Course/components/Lecture/{Homework => Exercises}/ViewMode.svelte (90%) create mode 100644 src/components/Course/components/Lecture/Exercises/constants.js create mode 100644 src/components/Course/components/Lecture/Exercises/index.svelte create mode 100644 src/components/Course/components/Lecture/Exercises/store/answers.js rename src/components/Course/components/Lecture/{Homework => Exercises}/store/index.js (100%) delete mode 100644 src/components/Course/components/Lecture/Home/index.svelte delete mode 100644 src/components/Course/components/Lecture/Homework/store/answers.js rename src/components/Course/components/{CourseNav.svelte => Navigation/index.svelte} (90%) delete mode 100644 src/components/Course/components/People.svelte delete mode 100644 src/components/Course/components/Scoreboard.svelte delete mode 100644 src/components/Course/components/TimeTable.svelte create mode 100644 src/components/CourseContainer/index.svelte create mode 100644 src/routes/courses/[...id]/exercises.svelte create mode 100644 src/routes/courses/[...id]/lecture/[...id]/index.svelte create mode 100644 src/routes/courses/[...id]/lecture/index.svelte create mode 100644 src/routes/courses/[...id]/people.svelte create mode 100644 src/routes/courses/[...id]/scoreboard.svelte create mode 100644 src/routes/courses/[...id]/timetable.svelte diff --git a/package-lock.json b/package-lock.json index 0b47c2de..a1c8a4bc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1702,6 +1702,16 @@ "integrity": "sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A==", "dev": true }, + "carbon-components-svelte": { + "version": "0.39.0", + "resolved": "https://registry.npmjs.org/carbon-components-svelte/-/carbon-components-svelte-0.39.0.tgz", + "integrity": "sha512-pz6P8JwU959YyrjJ9TUxM4O9uVjj51htGFWHAXyH2ou2TcY2t2u8DgRQMAXImAqVpwOKgwTNJ5HhnEzNyFhiSw==", + "dev": true, + "requires": { + "carbon-icons-svelte": "^10.27.0", + "flatpickr": "4.6.9" + } + }, "carbon-icons-svelte": { "version": "10.28.0", "resolved": "https://registry.npmjs.org/carbon-icons-svelte/-/carbon-icons-svelte-10.28.0.tgz", @@ -2214,6 +2224,12 @@ "pinkie-promise": "^2.0.0" } }, + "flatpickr": { + "version": "4.6.9", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.9.tgz", + "integrity": "sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==", + "dev": true + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", diff --git a/package.json b/package.json index d5cf1fc8..7d92f2af 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,7 @@ "@rollup/plugin-node-resolve": "^8.0.0", "@rollup/plugin-replace": "^2.2.0", "@tailwindcss/typography": "^0.3.1", + "carbon-components-svelte": "^0.39.0", "carbon-icons-svelte": "^10.21.0", "postcss": "^8.0.9", "postcss-load-config": "^2.1.0", diff --git a/src/client.js b/src/client.js index cec91725..aef11056 100644 --- a/src/client.js +++ b/src/client.js @@ -1,5 +1,6 @@ -import * as sapper from '@sapper/app'; +import "carbon-components-svelte/css/all.css"; +import * as sapper from "@sapper/app"; sapper.start({ - target: document.querySelector('#sapper') -}); \ No newline at end of file + target: document.querySelector("#sapper"), +}); diff --git a/src/components/Course/components/HomeTask.svelte b/src/components/Course/components/HomeTask.svelte deleted file mode 100644 index b887b438..00000000 --- a/src/components/Course/components/HomeTask.svelte +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/src/components/Course/components/Lecture/Classwork.svelte b/src/components/Course/components/Lecture/Classwork.svelte deleted file mode 100644 index 6405a849..00000000 --- a/src/components/Course/components/Lecture/Classwork.svelte +++ /dev/null @@ -1 +0,0 @@ -
class work
diff --git a/src/components/Course/components/Lecture/Homework/EditMode.svelte b/src/components/Course/components/Lecture/Exercises/EditMode.svelte similarity index 100% rename from src/components/Course/components/Lecture/Homework/EditMode.svelte rename to src/components/Course/components/Lecture/Exercises/EditMode.svelte diff --git a/src/components/Course/components/Lecture/Homework/index.svelte b/src/components/Course/components/Lecture/Exercises/Exercise.svelte similarity index 98% rename from src/components/Course/components/Lecture/Homework/index.svelte rename to src/components/Course/components/Lecture/Exercises/Exercise.svelte index 0f09afb0..3bfddbbb 100644 --- a/src/components/Course/components/Lecture/Homework/index.svelte +++ b/src/components/Course/components/Lecture/Exercises/Exercise.svelte @@ -2,11 +2,13 @@ import { handleAddQuestion } from "./store/index"; import PrimaryButton from "../../../../PrimaryButton/index.svelte"; import PageBody from "../../../../PageBody/index.svelte"; - import EditMode from "./EditMode.svelte"; import ViewMode from "./ViewMode.svelte"; + import EditMode from "./EditMode.svelte"; import MODES from "../../../../../utils/constants/mode.js"; import { VARIANTS } from "../../../../PrimaryButton/constants"; + export let exerciseId; + let mode = MODES.view; let preview = false; diff --git a/src/components/Course/components/Lecture/Exercises/List.svelte b/src/components/Course/components/Lecture/Exercises/List.svelte new file mode 100644 index 00000000..d50c3695 --- /dev/null +++ b/src/components/Course/components/Lecture/Exercises/List.svelte @@ -0,0 +1,66 @@ + + + +

Create a new Cloudant database in the US South region.

+
+ + + + + + + + diff --git a/src/components/Course/components/Lecture/Homework/ViewMode.svelte b/src/components/Course/components/Lecture/Exercises/ViewMode.svelte similarity index 90% rename from src/components/Course/components/Lecture/Homework/ViewMode.svelte rename to src/components/Course/components/Lecture/Exercises/ViewMode.svelte index a599bfb1..6b6c3559 100644 --- a/src/components/Course/components/Lecture/Homework/ViewMode.svelte +++ b/src/components/Course/components/Lecture/Exercises/ViewMode.svelte @@ -8,6 +8,7 @@ import Progress from "../../../../Progress/index.svelte"; import { removeDuplicate } from "../../../../../utils/functions/removeDuplicate"; import { QUESTION_TYPE } from "../../../../Question/constants"; + import { STATUS } from "./constants"; export let preview; @@ -113,10 +114,10 @@ }; } - function getTotalScores(scoresObject) { + function getTotalScores() { let total = 0; - for (const score in scoresObject) { - total += score; + for (const score in $userQuestionniareAnswers.scores) { + total += parseInt($userQuestionniareAnswers.scores[score]); } return total; @@ -206,19 +207,28 @@

{title}

- - Pending Review - + {#if STATUS.IN_PROGRESS === $userQuestionniareAnswers.status} + + Pending + + {:else if STATUS.REVIEWED === $userQuestionniareAnswers.status && getTotalScores() > 0} + + Reviewed + + {/if}
- {getTotalScores($userQuestionniareAnswers.scores)}/100 + {getTotalScores()}/100
{#each questions as currentQuestion, currentQuestionIndex} diff --git a/src/components/Course/components/Lecture/Exercises/constants.js b/src/components/Course/components/Lecture/Exercises/constants.js new file mode 100644 index 00000000..dc8db2c8 --- /dev/null +++ b/src/components/Course/components/Lecture/Exercises/constants.js @@ -0,0 +1,4 @@ +export const STATUS = { + IN_PROGRESS: 0, + REVIEWED: 1, +}; \ No newline at end of file diff --git a/src/components/Course/components/Lecture/Exercises/index.svelte b/src/components/Course/components/Lecture/Exercises/index.svelte new file mode 100644 index 00000000..bd3e56e3 --- /dev/null +++ b/src/components/Course/components/Lecture/Exercises/index.svelte @@ -0,0 +1,13 @@ + + +{#if exerciseId} + +{:else} + +{/if} diff --git a/src/components/Course/components/Lecture/Exercises/store/answers.js b/src/components/Course/components/Lecture/Exercises/store/answers.js new file mode 100644 index 00000000..2fbdf6e6 --- /dev/null +++ b/src/components/Course/components/Lecture/Exercises/store/answers.js @@ -0,0 +1,21 @@ +import { writable } from "svelte/store"; + +import { STATUS } from "../constants"; + +// export const userQuestionniareAnswers = writable({ +// answers: {}, +// scores: { gates: 60 }, +// currentQuestionIndex: 5, +// isFinished: true, +// progressValue: 100, +// status: STATUS.REVIEWED, +// }); + +export const userQuestionniareAnswers = writable({ + answers: {}, + scores: {}, + currentQuestionIndex: 0, + isFinished: false, + progressValue: 100, + status: STATUS.IN_PROGRESS, +}); diff --git a/src/components/Course/components/Lecture/Homework/store/index.js b/src/components/Course/components/Lecture/Exercises/store/index.js similarity index 100% rename from src/components/Course/components/Lecture/Homework/store/index.js rename to src/components/Course/components/Lecture/Exercises/store/index.js diff --git a/src/components/Course/components/Lecture/Home/index.svelte b/src/components/Course/components/Lecture/Home/index.svelte deleted file mode 100644 index 100ba3da..00000000 --- a/src/components/Course/components/Lecture/Home/index.svelte +++ /dev/null @@ -1,149 +0,0 @@ - - - -
- -
-
- - -
- {#each $lessons as lecture, index} -
- -
- (lecture.isComplete = !lecture.isComplete)} - > - {#if lecture.isComplete} - - {:else} - 🔒 - {/if} - -
- - -
- {#if lectureEditing === index} - (lectureEditing = null)}> - - - {:else} - (lectureEditing = index)}> - - - {/if} -
- -
-

{index + 1}

-
-
- {#if lectureEditing === index} - - {:else} -

- - {lecture.title} - -

- {/if} -
-
- {lecture.resources.map((r) => `${r.value} ${r.label}`).join(", ")} -
-
- -
- {#if lectureEditing === index} - (lecture.date = e.target.value)} - /> - {:else} - -

- {new Date(lecture.date).toDateString()} -

- {/if} -
-
-
-
- {/each} - -
- - diff --git a/src/components/Course/components/Lecture/Homework/store/answers.js b/src/components/Course/components/Lecture/Homework/store/answers.js deleted file mode 100644 index d954a7db..00000000 --- a/src/components/Course/components/Lecture/Homework/store/answers.js +++ /dev/null @@ -1,9 +0,0 @@ -import { writable } from "svelte/store"; - -export const userQuestionniareAnswers = writable({ - answers: {}, - scores: {}, - currentQuestionIndex: 5, - isFinished: true, - progressValue: 100, -}); diff --git a/src/components/Course/components/Lecture/index.svelte b/src/components/Course/components/Lecture/index.svelte index 737cf5ee..7fdb15b9 100644 --- a/src/components/Course/components/Lecture/index.svelte +++ b/src/components/Course/components/Lecture/index.svelte @@ -1,51 +1,37 @@ -{#if showLectureHome} - -{:else} -
- +
+ -
- {#if tab === "lectures"} - - {:else if tab === "classwork"} - - {:else if tab === "hometasks"} - - {/if} -
+
+ {#if tab === "lectures"} + + {:else if tab === "exercises"} + + {/if}
-{/if} +
- - diff --git a/src/components/Course/components/TimeTable.svelte b/src/components/Course/components/TimeTable.svelte deleted file mode 100644 index 5f17b105..00000000 --- a/src/components/Course/components/TimeTable.svelte +++ /dev/null @@ -1,8 +0,0 @@ - - - - - diff --git a/src/components/CourseContainer/index.svelte b/src/components/CourseContainer/index.svelte new file mode 100644 index 00000000..5da66182 --- /dev/null +++ b/src/components/CourseContainer/index.svelte @@ -0,0 +1,28 @@ + + + + {courseTitle} + + +
+ +
+ +
+
+ + diff --git a/src/components/Question/CheckboxQuestion/index.svelte b/src/components/Question/CheckboxQuestion/index.svelte index 5fe80129..72ccae4b 100644 --- a/src/components/Question/CheckboxQuestion/index.svelte +++ b/src/components/Question/CheckboxQuestion/index.svelte @@ -1,7 +1,7 @@ @@ -15,7 +16,7 @@
- +
diff --git a/src/routes/courses/[...id]/exercises.svelte b/src/routes/courses/[...id]/exercises.svelte new file mode 100644 index 00000000..1b5a0bdf --- /dev/null +++ b/src/routes/courses/[...id]/exercises.svelte @@ -0,0 +1,18 @@ + + + + + + + diff --git a/src/routes/courses/[...id]/index.svelte b/src/routes/courses/[...id]/index.svelte index ee95f833..2e920a48 100644 --- a/src/routes/courses/[...id]/index.svelte +++ b/src/routes/courses/[...id]/index.svelte @@ -7,65 +7,12 @@ - - ReactJS - - -
- -
- {#if !courseNavItem} - - {:else if courseNavItem === "score"} - - {:else if courseNavItem === "timetable"} - - {:else if courseNavItem === "hometasks"} - - {:else if courseNavItem === "lecture"} - - {:else if courseNavItem === "people"} - - {/if} -
- - -
- - + + + diff --git a/src/routes/courses/[...id]/lecture/[...id]/index.svelte b/src/routes/courses/[...id]/lecture/[...id]/index.svelte new file mode 100644 index 00000000..53df7318 --- /dev/null +++ b/src/routes/courses/[...id]/lecture/[...id]/index.svelte @@ -0,0 +1,27 @@ + + + + + + + diff --git a/src/routes/courses/[...id]/lecture/index.svelte b/src/routes/courses/[...id]/lecture/index.svelte new file mode 100644 index 00000000..f1513c31 --- /dev/null +++ b/src/routes/courses/[...id]/lecture/index.svelte @@ -0,0 +1,166 @@ + + + + + + +
+ +
+
+ + +
+ {#each $lessons as lecture, index} +
+ +
+ (lecture.isComplete = !lecture.isComplete)} + > + {#if lecture.isComplete} + + {:else} + 🔒 + {/if} + +
+ + +
+ {#if lectureEditing === index} + (lectureEditing = null)}> + + + {:else} + (lectureEditing = index)}> + + + {/if} +
+ +
+

{index + 1}.

+
+
+ {#if lectureEditing === index} + + {:else} +

+ + {lecture.title} + +

+ {/if} +
+
+ {lecture.resources + .map((r) => `${r.value} ${r.label}`) + .join(", ")} +
+
+ +
+ {#if lectureEditing === index} + (lecture.date = e.target.value)} + /> + {:else} + +

+ {new Date(lecture.date).toDateString()} +

+ {/if} +
+
+
+
+ {/each} +
+ + + + diff --git a/src/routes/courses/[...id]/people.svelte b/src/routes/courses/[...id]/people.svelte new file mode 100644 index 00000000..d1d7c60a --- /dev/null +++ b/src/routes/courses/[...id]/people.svelte @@ -0,0 +1,88 @@ + + + + + + +
+

+ Teachers +

+
+ {#each teachers as teacher} + + {/each} +
+
+ +
+

+ Students +

+
+ {#each students as student} + + {/each} +
+
+
diff --git a/src/routes/courses/[...id]/scoreboard.svelte b/src/routes/courses/[...id]/scoreboard.svelte new file mode 100644 index 00000000..0a164959 --- /dev/null +++ b/src/routes/courses/[...id]/scoreboard.svelte @@ -0,0 +1,18 @@ + + + + + + + diff --git a/src/routes/courses/[...id]/timetable.svelte b/src/routes/courses/[...id]/timetable.svelte new file mode 100644 index 00000000..ecf10855 --- /dev/null +++ b/src/routes/courses/[...id]/timetable.svelte @@ -0,0 +1,18 @@ + + + + + + +