From d293634a3cb37e6e2de36be5fcbb9101d100af42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Dgabriellaberko=E2=80=9D?= <75434964+gabriellaberko@users.noreply.github.com> Date: Tue, 28 Oct 2025 16:42:19 +0100 Subject: [PATCH 01/71] add html skeleton for start page --- .gitignore | 3 +- README.md | 71 ++++++++++++++++++++++++++++++++++--- about.html | 10 ------ dist/script.d.ts | 1 + dist/script.d.ts.map | 1 + dist/script.js | 2 ++ dist/script.js.map | 1 + index.html | 66 ++++++++++++++++++++++++++++++++-- js/main.js => src/script.ts | 0 tsconfig.json | 27 ++++++++++++++ 10 files changed, 164 insertions(+), 18 deletions(-) delete mode 100644 about.html create mode 100644 dist/script.d.ts create mode 100644 dist/script.d.ts.map create mode 100644 dist/script.js create mode 100644 dist/script.js.map rename js/main.js => src/script.ts (100%) create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore index b512c09..94b6a98 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -node_modules \ No newline at end of file +node_modules +./dist \ No newline at end of file diff --git a/README.md b/README.md index 57e6d16..8d7ed37 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,72 @@ # Web Accessibility Project -A basic web server template focused on web accessibility practices. +# What? +- Show quiz from API based on user preferences (filter/etc) +- When in chosen quiz view, show questions and answers +- Show score after finished a quiz -### Installation +- Scorelist (stretch ev) -1. Fork this repository by clicking the "Fork" button at the top right of the GitHub repository page. +# Views +#### Landing page/start -2. Clone your forked repository +# Welcome message +- Show a navigation of filters +- Start game +- Enter player name +- See top list (?) + +# A quiz page +- Question +- Answers +- Show correct/incorrect answer when chosen submitting an answer +- Next question button +- Show total quiz time +- Remaining time on the question? +- Navigation back to welcome page +- Stop? + +# Results page +- Final score +- Restart game/back to homepage +- Leaderboard + +# Functionality +- Choose a category/other filter (?) +- Fetch data based on chosen filters +- List of questions +- Choose instant feedback during the quiz (correct/incorrect answer) +- Enter player name +- Player score +- Timer (?) +- Start / Stop game +- + +# Tech +- Tailwind +- Typescript +- API +- CSS + HTML + +# Requirement +- Accessible +- Keyboard, focus, ARIA, Color contrast etc (check scope) + +### TODO +1) +- Setup HTML +- Set up Tailwind +- Setup API +- Fetch based on user input +- Put to Github issues/Project + +2) +- JS to render quiz +- JS to render questions +- JS to respond on user choose correct or wrong +- JS to show timer +- JS to start stop +- Setup Postgres for user + topscore + + +? - Design as we go? \ No newline at end of file diff --git a/about.html b/about.html deleted file mode 100644 index 5adbad6..0000000 --- a/about.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - About - - - - diff --git a/dist/script.d.ts b/dist/script.d.ts new file mode 100644 index 0000000..9d543f9 --- /dev/null +++ b/dist/script.d.ts @@ -0,0 +1 @@ +//# sourceMappingURL=script.d.ts.map \ No newline at end of file diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map new file mode 100644 index 0000000..38bb624 --- /dev/null +++ b/dist/script.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js new file mode 100644 index 0000000..3aca3d7 --- /dev/null +++ b/dist/script.js @@ -0,0 +1,2 @@ +"use strict"; +//# sourceMappingURL=script.js.map \ No newline at end of file diff --git a/dist/script.js.map b/dist/script.js.map new file mode 100644 index 0000000..a9c60d9 --- /dev/null +++ b/dist/script.js.map @@ -0,0 +1 @@ +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":""} \ No newline at end of file diff --git a/index.html b/index.html index a9a33db..761d276 100644 --- a/index.html +++ b/index.html @@ -3,11 +3,71 @@ - Title + Quiz BONANZAAA -

This is the starting point.

- +
+ +
+ +
+
+

Welcome to QUIZ BONANZAAA!

+

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Voluptate aliquam sequi at minus mollitia iste est quae.

+ +
+ +
+
+
+ Choose your quiz + + +

Choose number of questions

+ + + +
+
+
+ +
+ + diff --git a/js/main.js b/src/script.ts similarity index 100% rename from js/main.js rename to src/script.ts diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1a925a5 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,27 @@ +{ + // Visit https://aka.ms/tsconfig to read more about this file + "compilerOptions": { + // File structure + "rootDir": "./src", + "outDir": "./dist", + + // Target modern browsers + "target": "ES6", + "module": "ES6", + + // Output controls + "sourceMap": true, + "declaration": true, + "declarationMap": true, + + // Type safety + "strict": true, + "noUncheckedIndexedAccess": true, + "exactOptionalPropertyTypes": true, + "noImplicitAny": true, + + // Misc + "esModuleInterop": true, + "skipLibCheck": true + } +} \ No newline at end of file From f84416f73771aa84348d37c85f65a18820b8a1ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Dgabriellaberko=E2=80=9D?= <75434964+gabriellaberko@users.noreply.github.com> Date: Wed, 29 Oct 2025 08:35:10 +0100 Subject: [PATCH 02/71] add html skeleton for quiz page + some minor styling to position elements --- css/styles.css | 46 ++++++++++++++++++++++++++++++++++++++++++++++ index.html | 7 +++++-- quiz.html | 31 +++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 quiz.html diff --git a/css/styles.css b/css/styles.css index e69de29..b637ed4 100644 --- a/css/styles.css +++ b/css/styles.css @@ -0,0 +1,46 @@ +body{ + margin: 0; + box-sizing: border-box; +} + +header { + display: flex; + justify-content: space-between; + margin: 0 40px; +} + +.nav-links li { + list-style: none; +} + +/*------ Start page ------*/ + +.intro-section{ + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 40px; +} + +.filter-section { + display: flex; + flex-direction: column; + align-items: center; + gap: 24px; +} + + + +/*------ Quiz page ------*/ + +.quiz-container { + display: flex; + flex-direction: column; + align-items: center; +} + +.answers { + display: flex; + flex-direction: column; + gap: 10px; +} \ No newline at end of file diff --git a/index.html b/index.html index 761d276..b21df8c 100644 --- a/index.html +++ b/index.html @@ -9,7 +9,10 @@
@@ -64,8 +67,8 @@

Welcome to QUIZ BONANZAAA!

+ - diff --git a/quiz.html b/quiz.html new file mode 100644 index 0000000..f39a28c --- /dev/null +++ b/quiz.html @@ -0,0 +1,31 @@ + + + + + + Document + + + +
+ +
+

10:32

+
+
+
+
+

Here wi will insert a question from the API with JS

+
+ + + +
+
+
+ + \ No newline at end of file From ab78557c146a15fe3b2f10ec59dede2b91f4a8e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Dgabriellaberko=E2=80=9D?= <75434964+gabriellaberko@users.noreply.github.com> Date: Wed, 29 Oct 2025 09:53:26 +0100 Subject: [PATCH 03/71] install Tailwind --- index.html | 9 ++ package-lock.json | 275 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 7 ++ pnpm-lock.yaml | 141 ++++++++++++++++++++++++ quiz.html | 14 ++- 5 files changed, 440 insertions(+), 6 deletions(-) create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 pnpm-lock.yaml diff --git a/index.html b/index.html index b21df8c..7e688f5 100644 --- a/index.html +++ b/index.html @@ -5,6 +5,7 @@ Quiz BONANZAAA +
@@ -18,6 +19,14 @@
+ + + + +

Welcome to QUIZ BONANZAAA!

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Voluptate aliquam sequi at minus mollitia iste est quae.

- Choose your quiz - - +

Choose your quiz

+ + + + + +

Choose number of questions

+ + - \ No newline at end of file + + + + + \ No newline at end of file diff --git a/src/script.ts b/src/script.ts index 84cd082..a851f48 100644 --- a/src/script.ts +++ b/src/script.ts @@ -1,8 +1,27 @@ /* ------ INTERFACES ------ */ +interface fetchedObjectFormat { + category: string, + correct_answer: string + difficulty: string, + incorrect_answers: string[], + question: string, + type: string +} +interface questionObjectFormat { + question: string, + category: string, + difficulty: string, + allAnswers: string[], + correctAnswer: string +} +/* ------ GLOBAL VARIABLES ------ */ + +const questionArray: questionObjectFormat[] = []; + /* ------ FETCH API DATA ------ */ @@ -18,9 +37,26 @@ const fetchQuizAPI = async () => { } const data = await response.json(); + const fetchedQuizQuestions: fetchedObjectFormat[] = data.results; + + fetchedQuizQuestions.map(object => { - console.log(data); + // create an array with all answers, despite correct/incorrect + const allAnswers: string[] = object.incorrect_answers; + const correctAnswer: string = object.correct_answer + allAnswers.push(correctAnswer); + + + const questionObject: questionObjectFormat = { + question: object.question, + category: object.category, + difficulty: object.difficulty, + allAnswers: allAnswers, + correctAnswer: object.correct_answer + } + questionArray.push(questionObject); + }); } catch(error) { @@ -29,7 +65,6 @@ const fetchQuizAPI = async () => { }; - /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", fetchQuizAPI); From 74a43175bd4e5a4c58f7b7458d5c2dab7a7ea87d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Dgabriellaberko=E2=80=9D?= <75434964+gabriellaberko@users.noreply.github.com> Date: Thu, 30 Oct 2025 09:38:33 +0100 Subject: [PATCH 06/71] add variables in API url + save questionArray to local storage for test purposes when API hits limit --- dist/script.d.ts | 4 ++++ dist/script.d.ts.map | 2 +- dist/script.js | 11 ++++++++++- dist/script.js.map | 2 +- src/script.ts | 15 +++++++++++++-- 5 files changed, 29 insertions(+), 5 deletions(-) diff --git a/dist/script.d.ts b/dist/script.d.ts index 9fd27c5..e065703 100644 --- a/dist/script.d.ts +++ b/dist/script.d.ts @@ -14,5 +14,9 @@ interface questionObjectFormat { correctAnswer: string; } declare const questionArray: questionObjectFormat[]; +declare let amount: Number; +declare let category: Number; +declare let difficulty: String; +declare let storedQuestionArray: questionObjectFormat[]; declare const fetchQuizAPI: () => Promise; //# sourceMappingURL=script.d.ts.map \ No newline at end of file diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map index a498398..a37ca23 100644 --- a/dist/script.d.ts.map +++ b/dist/script.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAKjD,QAAA,MAAM,YAAY,qBAsCjB,CAAC"} \ No newline at end of file +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAEjD,QAAA,IAAI,MAAM,EAAE,MAAW,CAAC;AACxB,QAAA,IAAI,QAAQ,EAAE,MAAU,CAAC;AACzB,QAAA,IAAI,UAAU,EAAE,MAAiB,CAAC;AAGlC,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAKrD,QAAA,MAAM,YAAY,qBA0CjB,CAAC"} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js index cff1d2a..7f1b632 100644 --- a/dist/script.js +++ b/dist/script.js @@ -11,9 +11,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; /* ------ GLOBAL VARIABLES ------ */ const questionArray = []; +let amount = 10; +let category = 9; +let difficulty = "medium"; +// questions from local storage to use when testing, if we hit API limit +let storedQuestionArray = []; /* ------ FETCH API DATA ------ */ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { - const APIUrl = `https://opentdb.com/api.php?amount=10&category=9&difficulty=medium&type=multiple`; + const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${category}&difficulty=${difficulty}&type=multiple`; try { const response = yield fetch(APIUrl); if (!response.ok) { @@ -38,7 +43,11 @@ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { } catch (error) { console.error("Fetch error:", error); + // add error message on start page } + // save question array to local storage to have when testing + localStorage.setItem("storedQuestionArray", JSON.stringify(questionArray)); + storedQuestionArray = JSON.parse(localStorage.getItem("storedQuestionArray")); }); /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", fetchQuizAPI); diff --git a/dist/script.js.map b/dist/script.js.map index dea4cb1..2853d9d 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;AAoB9B,oCAAoC;AAEpC,MAAM,aAAa,GAA2B,EAAE,CAAC;AAGjD,kCAAkC;AAElC,MAAM,YAAY,GAAG,GAAS,EAAE;IAC9B,MAAM,MAAM,GAAG,kFAAkF,CAAC;IAElG,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,oBAAoB,GAA0B,IAAI,CAAC,OAAO,CAAC;QAEjE,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAEhC,8DAA8D;YAC9D,MAAM,UAAU,GAAa,MAAM,CAAC,iBAAiB,CAAC;YACtD,MAAM,aAAa,GAAW,MAAM,CAAC,cAAc,CAAA;YACnD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAG/B,MAAM,cAAc,GAAyB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,MAAM,CAAC,cAAc;aACrC,CAAA;YAED,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAM,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;AAEH,CAAC,CAAA,CAAC;AAEF,kCAAkC;AAElC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;AAoB9B,oCAAoC;AAEpC,MAAM,aAAa,GAA2B,EAAE,CAAC;AAEjD,IAAI,MAAM,GAAW,EAAE,CAAC;AACxB,IAAI,QAAQ,GAAW,CAAC,CAAC;AACzB,IAAI,UAAU,GAAW,QAAQ,CAAC;AAElC,wEAAwE;AACxE,IAAI,mBAAmB,GAA2B,EAAE,CAAC;AAGrD,kCAAkC;AAElC,MAAM,YAAY,GAAG,GAAS,EAAE;IAC9B,MAAM,MAAM,GAAG,sCAAsC,MAAM,aAAa,QAAQ,eAAe,UAAU,gBAAgB,CAAC;IAE1H,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,oBAAoB,GAA0B,IAAI,CAAC,OAAO,CAAC;QAGjE,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAEhC,8DAA8D;YAC9D,MAAM,UAAU,GAAa,MAAM,CAAC,iBAAiB,CAAC;YACtD,MAAM,aAAa,GAAW,MAAM,CAAC,cAAc,CAAA;YACnD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAG/B,MAAM,cAAc,GAAyB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,MAAM,CAAC,cAAc;aACrC,CAAA;YAED,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAM,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,kCAAkC;IACpC,CAAC;IACD,4DAA4D;IAC5D,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAChF,CAAC,CAAA,CAAC;AAEF,kCAAkC;AAElC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC"} \ No newline at end of file diff --git a/src/script.ts b/src/script.ts index a851f48..c44f6b8 100644 --- a/src/script.ts +++ b/src/script.ts @@ -22,11 +22,18 @@ interface questionObjectFormat { const questionArray: questionObjectFormat[] = []; +let amount: Number = 10; +let category: Number = 9; +let difficulty: String = "medium"; + +// questions from local storage to use when testing, if we hit API limit +let storedQuestionArray: questionObjectFormat[] = []; + /* ------ FETCH API DATA ------ */ const fetchQuizAPI = async () => { - const APIUrl = `https://opentdb.com/api.php?amount=10&category=9&difficulty=medium&type=multiple`; + const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${category}&difficulty=${difficulty}&type=multiple`; try { @@ -38,6 +45,7 @@ const fetchQuizAPI = async () => { const data = await response.json(); const fetchedQuizQuestions: fetchedObjectFormat[] = data.results; + fetchedQuizQuestions.map(object => { @@ -61,8 +69,11 @@ const fetchQuizAPI = async () => { catch(error) { console.error("Fetch error:", error); + // add error message on start page } - + // save question array to local storage to have when testing + localStorage.setItem("storedQuestionArray", JSON.stringify(questionArray)); + storedQuestionArray = JSON.parse(localStorage.getItem("storedQuestionArray")); }; /* ------ EVENT LISTENER ------ */ From 15e7c09f2202805345e2064687bc3733b1d212ab Mon Sep 17 00:00:00 2001 From: daniellauding Date: Thu, 30 Oct 2025 10:04:47 +0100 Subject: [PATCH 07/71] added logic to collect user and set to storage --- css/styles.css | 4 +- dist/script.d.ts | 1 + dist/script.d.ts.map | 2 +- dist/script.js | 16 ++++ dist/script.js.map | 2 +- index.html | 180 +++++++++++++++++++++++++++---------------- src/script.ts | 24 +++++- 7 files changed, 156 insertions(+), 73 deletions(-) diff --git a/css/styles.css b/css/styles.css index 40111da..78b71a5 100644 --- a/css/styles.css +++ b/css/styles.css @@ -7,6 +7,8 @@ body{ margin: 0; padding: 0; outline: none; + box-sizing: border-box; + border: 0 solid; } header { @@ -35,8 +37,6 @@ header { gap: 24px; } - - /*------ Quiz page ------*/ .quiz-container { diff --git a/dist/script.d.ts b/dist/script.d.ts index 9fd27c5..8773d9e 100644 --- a/dist/script.d.ts +++ b/dist/script.d.ts @@ -15,4 +15,5 @@ interface questionObjectFormat { } declare const questionArray: questionObjectFormat[]; declare const fetchQuizAPI: () => Promise; +declare const stored: string | null; //# sourceMappingURL=script.d.ts.map \ No newline at end of file diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map index a498398..0ef2532 100644 --- a/dist/script.d.ts.map +++ b/dist/script.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAKjD,QAAA,MAAM,YAAY,qBAsCjB,CAAC"} \ No newline at end of file +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAKjD,QAAA,MAAM,YAAY,qBAsCjB,CAAC;AAyBF,QAAA,MAAM,MAAM,eAAuC,CAAC"} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js index cff1d2a..f72439e 100644 --- a/dist/script.js +++ b/dist/script.js @@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +var _a; /* ------ GLOBAL VARIABLES ------ */ const questionArray = []; /* ------ FETCH API DATA ------ */ @@ -42,4 +43,19 @@ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { }); /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", fetchQuizAPI); +/* ------ Logic to collect player pref and redirect to quiz.html ------ */ +(_a = document.getElementById("startBtn")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", () => { + const category = (document === null || document === void 0 ? void 0 : document.getElementById("category")).value; + const difficulty = (document === null || document === void 0 ? void 0 : document.getElementById("difficulty")).value; + const player = (document === null || document === void 0 ? void 0 : document.getElementById("player-name")).value; + localStorage.setItem("quizSettings", JSON.stringify({ + category, + difficulty, + player + })); + console.log("Saved quiz settings:", { category, difficulty, player }); + window.location.href = "quiz.html"; +}); +const stored = localStorage.getItem("quizSettings"); +console.log(stored); //# sourceMappingURL=script.js.map \ No newline at end of file diff --git a/dist/script.js.map b/dist/script.js.map index dea4cb1..6e5fc5f 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;AAoB9B,oCAAoC;AAEpC,MAAM,aAAa,GAA2B,EAAE,CAAC;AAGjD,kCAAkC;AAElC,MAAM,YAAY,GAAG,GAAS,EAAE;IAC9B,MAAM,MAAM,GAAG,kFAAkF,CAAC;IAElG,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,oBAAoB,GAA0B,IAAI,CAAC,OAAO,CAAC;QAEjE,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAEhC,8DAA8D;YAC9D,MAAM,UAAU,GAAa,MAAM,CAAC,iBAAiB,CAAC;YACtD,MAAM,aAAa,GAAW,MAAM,CAAC,cAAc,CAAA;YACnD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAG/B,MAAM,cAAc,GAAyB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,MAAM,CAAC,cAAc;aACrC,CAAA;YAED,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAM,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;AAEH,CAAC,CAAA,CAAC;AAEF,kCAAkC;AAElC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;;AAoB9B,oCAAoC;AAEpC,MAAM,aAAa,GAA2B,EAAE,CAAC;AAGjD,kCAAkC;AAElC,MAAM,YAAY,GAAG,GAAS,EAAE;IAC9B,MAAM,MAAM,GAAG,kFAAkF,CAAC;IAElG,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,oBAAoB,GAA0B,IAAI,CAAC,OAAO,CAAC;QAEjE,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAEhC,8DAA8D;YAC9D,MAAM,UAAU,GAAa,MAAM,CAAC,iBAAiB,CAAC;YACtD,MAAM,aAAa,GAAW,MAAM,CAAC,cAAc,CAAA;YACnD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAG/B,MAAM,cAAc,GAAyB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,MAAM,CAAC,cAAc;aACrC,CAAA;YAED,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAM,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;AAEH,CAAC,CAAA,CAAC;AAEF,kCAAkC;AAElC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AAE5D,0EAA0E;AAE1E,MAAA,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,0CAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;IAElE,MAAM,QAAQ,GAAG,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,UAAU,CAAwB,CAAA,CAAC,KAAK,CAAC;IACpF,MAAM,UAAU,GAAG,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,YAAY,CAAwB,CAAA,CAAC,KAAK,CAAC;IACxF,MAAM,MAAM,GAAG,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,aAAa,CAAwB,CAAA,CAAC,KAAK,CAAC;IAErF,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC;QAClD,QAAQ;QACR,UAAU;QACV,MAAM;KACP,CAAC,CAAC,CAAC;IAEJ,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;IAEtE,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;AACpD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC"} \ No newline at end of file diff --git a/index.html b/index.html index e6ef080..1158cd7 100644 --- a/index.html +++ b/index.html @@ -8,79 +8,123 @@ -
- -
- -
-
+
+
+ +
+ +
+
- + - - -

Welcome to QUIZ BONANZAAA!

-

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Voluptate aliquam sequi at minus mollitia iste est quae.

- - + + +

Welcome to QUIZ BONANZAAA!

+

Lorem, ipsum dolor sit amet consectetur adipisicing elit. Voluptate aliquam sequi at minus mollitia iste est quae.

+ +
-
- -
- -
-

Choose your quiz

- - - - - +
+

Choose your quiz

+ +
+ +
+ -

Choose number of questions

- - -
+ + + + +
+ + + + + + +
+ +

Choose number of questions

+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ - -
- - -
-
+ type="text" + id="player-name" + class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" + placeholder="Enter your player name..." + required + aria-required="true" + > + + + + + + + - + + + diff --git a/src/script.ts b/src/script.ts index a851f48..0cd210e 100644 --- a/src/script.ts +++ b/src/script.ts @@ -27,7 +27,7 @@ const questionArray: questionObjectFormat[] = []; const fetchQuizAPI = async () => { const APIUrl = `https://opentdb.com/api.php?amount=10&category=9&difficulty=medium&type=multiple`; - + try { const response = await fetch(APIUrl); @@ -68,3 +68,25 @@ const fetchQuizAPI = async () => { /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", fetchQuizAPI); + +/* ------ Logic to collect player pref and redirect to quiz.html ------ */ + +document.getElementById("startBtn")?.addEventListener("click", () => { + + const category = (document?.getElementById("category")! as HTMLSelectElement).value; + const difficulty = (document?.getElementById("difficulty")! as HTMLSelectElement).value; + const player = (document?.getElementById("player-name")! as HTMLSelectElement).value; + + localStorage.setItem("quizSettings", JSON.stringify({ + category, + difficulty, + player + })); + + console.log("Saved quiz settings:", { category, difficulty, player }); + + window.location.href = "quiz.html"; +}); + +const stored = localStorage.getItem("quizSettings"); +console.log(stored); \ No newline at end of file From 6e69c913d3dde1bf70a0be85b0814da528079143 Mon Sep 17 00:00:00 2001 From: daniellauding Date: Thu, 30 Oct 2025 10:15:50 +0100 Subject: [PATCH 08/71] added logic to collect user and set to storage --- quiz.html | 2 -- 1 file changed, 2 deletions(-) diff --git a/quiz.html b/quiz.html index 7b52b3a..9d7c779 100644 --- a/quiz.html +++ b/quiz.html @@ -27,13 +27,11 @@ -
  • -
    From 1ad9b37de420c24bc7c046d99944e97b5ea96b2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Dgabriellaberko=E2=80=9D?= <75434964+gabriellaberko@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:26:13 +0100 Subject: [PATCH 09/71] add to-do comments for logic + and add function for inserting question and answers --- dist/script.d.ts | 3 +++ dist/script.d.ts.map | 2 +- dist/script.js | 21 +++++++++++++++++++++ dist/script.js.map | 2 +- src/script.ts | 42 ++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 68 insertions(+), 2 deletions(-) diff --git a/dist/script.d.ts b/dist/script.d.ts index e065703..36b4acb 100644 --- a/dist/script.d.ts +++ b/dist/script.d.ts @@ -18,5 +18,8 @@ declare let amount: Number; declare let category: Number; declare let difficulty: String; declare let storedQuestionArray: questionObjectFormat[]; +declare const question: HTMLElement; +declare const answers: HTMLElement; declare const fetchQuizAPI: () => Promise; +declare const insertQuestionsAndAnswers: (array: questionObjectFormat, index: Number) => void; //# sourceMappingURL=script.d.ts.map \ No newline at end of file diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map index a37ca23..4dbb7ca 100644 --- a/dist/script.d.ts.map +++ b/dist/script.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAEjD,QAAA,IAAI,MAAM,EAAE,MAAW,CAAC;AACxB,QAAA,IAAI,QAAQ,EAAE,MAAU,CAAC;AACzB,QAAA,IAAI,UAAU,EAAE,MAAiB,CAAC;AAGlC,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAKrD,QAAA,MAAM,YAAY,qBA0CjB,CAAC"} \ No newline at end of file +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAEjD,QAAA,IAAI,MAAM,EAAE,MAAW,CAAC;AACxB,QAAA,IAAI,QAAQ,EAAE,MAAU,CAAC;AACzB,QAAA,IAAI,UAAU,EAAE,MAAiB,CAAC;AAGlC,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAMrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBA0CjB,CAAC;AAWF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAe5E,CAAC"} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js index 7f1b632..1b08856 100644 --- a/dist/script.js +++ b/dist/script.js @@ -16,6 +16,9 @@ let category = 9; let difficulty = "medium"; // questions from local storage to use when testing, if we hit API limit let storedQuestionArray = []; +/* ------ DOM ELEMENTS ------ */ +const question = document.getElementById("question"); +const answers = document.getElementById("answers"); /* ------ FETCH API DATA ------ */ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${category}&difficulty=${difficulty}&type=multiple`; @@ -49,6 +52,24 @@ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { localStorage.setItem("storedQuestionArray", JSON.stringify(questionArray)); storedQuestionArray = JSON.parse(localStorage.getItem("storedQuestionArray")); }); +/* ------ LOGIC ------ */ +// TO DO: create function that increments index for every question answered until reaching the length of the quiz questions (ex. 10) +// TO DO: create a function that inserts the questions and the answers. Anwsers need to be shuffled before inserted. The function needs to take an index as argument +const insertQuestionsAndAnswers = (array, index) => { + // empty elements before filling them + question.innerHTML = ""; + answers.innerHTML = ""; + // insert data for question and answers + question.innerHTML += ` + + `; + answers.innerHTML += ` + + `; +}; +// TO DO: create a function that checks if the users chosedn answer is the correct one or not +// TO DO: create a function for adding scores /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", fetchQuizAPI); +// TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray //# sourceMappingURL=script.js.map \ No newline at end of file diff --git a/dist/script.js.map b/dist/script.js.map index 2853d9d..051f51b 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;AAoB9B,oCAAoC;AAEpC,MAAM,aAAa,GAA2B,EAAE,CAAC;AAEjD,IAAI,MAAM,GAAW,EAAE,CAAC;AACxB,IAAI,QAAQ,GAAW,CAAC,CAAC;AACzB,IAAI,UAAU,GAAW,QAAQ,CAAC;AAElC,wEAAwE;AACxE,IAAI,mBAAmB,GAA2B,EAAE,CAAC;AAGrD,kCAAkC;AAElC,MAAM,YAAY,GAAG,GAAS,EAAE;IAC9B,MAAM,MAAM,GAAG,sCAAsC,MAAM,aAAa,QAAQ,eAAe,UAAU,gBAAgB,CAAC;IAE1H,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,oBAAoB,GAA0B,IAAI,CAAC,OAAO,CAAC;QAGjE,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAEhC,8DAA8D;YAC9D,MAAM,UAAU,GAAa,MAAM,CAAC,iBAAiB,CAAC;YACtD,MAAM,aAAa,GAAW,MAAM,CAAC,cAAc,CAAA;YACnD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAG/B,MAAM,cAAc,GAAyB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,MAAM,CAAC,cAAc;aACrC,CAAA;YAED,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAM,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,kCAAkC;IACpC,CAAC;IACD,4DAA4D;IAC5D,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAChF,CAAC,CAAA,CAAC;AAEF,kCAAkC;AAElC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;AAoB9B,oCAAoC;AAEpC,MAAM,aAAa,GAA2B,EAAE,CAAC;AAEjD,IAAI,MAAM,GAAW,EAAE,CAAC;AACxB,IAAI,QAAQ,GAAW,CAAC,CAAC;AACzB,IAAI,UAAU,GAAW,QAAQ,CAAC;AAElC,wEAAwE;AACxE,IAAI,mBAAmB,GAA2B,EAAE,CAAC;AAIrD,gCAAgC;AAEhC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAgB,CAAC;AACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAgB,CAAC;AAGlE,kCAAkC;AAElC,MAAM,YAAY,GAAG,GAAS,EAAE;IAC9B,MAAM,MAAM,GAAG,sCAAsC,MAAM,aAAa,QAAQ,eAAe,UAAU,gBAAgB,CAAC;IAE1H,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,oBAAoB,GAA0B,IAAI,CAAC,OAAO,CAAC;QAGjE,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAEhC,8DAA8D;YAC9D,MAAM,UAAU,GAAa,MAAM,CAAC,iBAAiB,CAAC;YACtD,MAAM,aAAa,GAAW,MAAM,CAAC,cAAc,CAAA;YACnD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAG/B,MAAM,cAAc,GAAyB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,MAAM,CAAC,cAAc;aACrC,CAAA;YAED,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAM,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,kCAAkC;IACpC,CAAC;IACD,4DAA4D;IAC5D,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAChF,CAAC,CAAA,CAAC;AAIF,yBAAyB;AAGzB,oIAAoI;AAEpI,oKAAoK;AAEpK,MAAM,yBAAyB,GAAG,CAAC,KAA2B,EAAE,KAAa,EAAE,EAAE;IAE/E,qCAAqC;IACrC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;IACxB,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;IAEvB,uCAAuC;IACvC,QAAQ,CAAC,SAAS,IAAI;;GAErB,CAAC;IAEF,OAAO,CAAC,SAAS,IAAI;;GAEpB,CAAC;AAEJ,CAAC,CAAC;AAEF,6FAA6F;AAE7F,6CAA6C;AAI7C,kCAAkC;AAElC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AAG5D,+JAA+J"} \ No newline at end of file diff --git a/src/script.ts b/src/script.ts index c44f6b8..49ebae4 100644 --- a/src/script.ts +++ b/src/script.ts @@ -30,6 +30,13 @@ let difficulty: String = "medium"; let storedQuestionArray: questionObjectFormat[] = []; + +/* ------ DOM ELEMENTS ------ */ + +const question = document.getElementById("question") as HTMLElement; +const answers = document.getElementById("answers") as HTMLElement; + + /* ------ FETCH API DATA ------ */ const fetchQuizAPI = async () => { @@ -76,6 +83,41 @@ const fetchQuizAPI = async () => { storedQuestionArray = JSON.parse(localStorage.getItem("storedQuestionArray")); }; + + +/* ------ LOGIC ------ */ + + +// TO DO: create function that increments index for every question answered until reaching the length of the quiz questions (ex. 10) + +// TO DO: create a function that inserts the questions and the answers. Anwsers need to be shuffled before inserted. The function needs to take an index as argument + +const insertQuestionsAndAnswers = (array: questionObjectFormat, index: Number) => { + + // empty elements before filling them + question.innerHTML = ""; + answers.innerHTML = ""; + + // insert data for question and answers + question.innerHTML += ` + + `; + + answers.innerHTML += ` + + `; + +}; + +// TO DO: create a function that checks if the users chosedn answer is the correct one or not + +// TO DO: create a function for adding scores + + + /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", fetchQuizAPI); + + +// TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray \ No newline at end of file From 72799883e83e81625940ca2b76f32edf2e76f7ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Dgabriellaberko=E2=80=9D?= <75434964+gabriellaberko@users.noreply.github.com> Date: Thu, 30 Oct 2025 11:35:14 +0100 Subject: [PATCH 10/71] get filter values from local storage --- dist/script.d.ts | 5 +++-- dist/script.d.ts.map | 2 +- dist/script.js | 22 +++++++++++++++++----- dist/script.js.map | 2 +- index.html | 6 +++--- src/script.ts | 28 ++++++++++++++++++++++------ 6 files changed, 47 insertions(+), 18 deletions(-) diff --git a/dist/script.d.ts b/dist/script.d.ts index 75251ce..c7418aa 100644 --- a/dist/script.d.ts +++ b/dist/script.d.ts @@ -14,10 +14,11 @@ interface questionObjectFormat { correctAnswer: string; } declare const questionArray: questionObjectFormat[]; -declare let amount: Number; +declare let storedQuestionArray: questionObjectFormat[]; +declare const quizSettings: any; declare let category: Number; declare let difficulty: String; -declare let storedQuestionArray: questionObjectFormat[]; +declare let amount: Number; declare const question: HTMLElement; declare const answers: HTMLElement; declare const fetchQuizAPI: () => Promise; diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map index 3c0bef2..ca77c5f 100644 --- a/dist/script.d.ts.map +++ b/dist/script.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAEjD,QAAA,IAAI,MAAM,EAAE,MAAW,CAAC;AACxB,QAAA,IAAI,QAAQ,EAAE,MAAU,CAAC;AACzB,QAAA,IAAI,UAAU,EAAE,MAAiB,CAAC;AAGlC,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAMrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBA0CjB,CAAC;AAWF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAe5E,CAAC;AAiCF,QAAA,MAAM,MAAM,eAAuC,CAAC"} \ No newline at end of file +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAOjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAErD,QAAA,MAAM,YAAY,KAAmD,CAAC;AACtE,QAAA,IAAI,QAAQ,EAAE,MAAwC,CAAC;AACvD,QAAA,IAAI,UAAU,EAAE,MAAgC,CAAC;AACjD,QAAA,IAAI,MAAM,EAAE,MAAsC,CAAC;AAMnD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBA0CjB,CAAC;AAWF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAe5E,CAAC;AA4CF,QAAA,MAAM,MAAM,eAAuC,CAAC"} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js index f68d8e1..c62c144 100644 --- a/dist/script.js +++ b/dist/script.js @@ -12,11 +12,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge var _a; /* ------ GLOBAL VARIABLES ------ */ const questionArray = []; -let amount = 10; -let category = 9; -let difficulty = "medium"; +// let amount: Number = 10; +// let category: Number = 9; +// let difficulty: String = "medium"; // questions from local storage to use when testing, if we hit API limit let storedQuestionArray = []; +const quizSettings = JSON.parse(localStorage.getItem("quizSettings")); +let category = parseInt(quizSettings.category); +let difficulty = quizSettings.difficulty; +let amount = parseInt(quizSettings.amount); /* ------ DOM ELEMENTS ------ */ const question = document.getElementById("question"); const answers = document.getElementById("answers"); @@ -71,16 +75,24 @@ const insertQuestionsAndAnswers = (array, index) => { // TO DO: create a function that checks if the users chosedn answer is the correct one or not // TO DO: create a function for adding scores /* ------ EVENT LISTENER ------ */ -document.addEventListener("DOMContentLoaded", fetchQuizAPI); +document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, void 0, function* () { + const category = parseInt(quizSettings.category); + const difficulty = quizSettings.difficulty; + const amount = parseInt(quizSettings.amount); + yield fetchQuizAPI(); +})); // TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray /* ------ Logic to collect player pref and redirect to quiz.html ------ */ (_a = document.getElementById("startBtn")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", () => { - const category = (document === null || document === void 0 ? void 0 : document.getElementById("category")).value; + const category = parseInt((document === null || document === void 0 ? void 0 : document.getElementById("category")).value); const difficulty = (document === null || document === void 0 ? void 0 : document.getElementById("difficulty")).value; const player = (document === null || document === void 0 ? void 0 : document.getElementById("player-name")).value; + //fix this one to pick up real value + const amount = parseInt("9"); localStorage.setItem("quizSettings", JSON.stringify({ category, difficulty, + amount, player })); console.log("Saved quiz settings:", { category, difficulty, player }); diff --git a/dist/script.js.map b/dist/script.js.map index 95209d2..8817180 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/index.html b/index.html index 1158cd7..1f3c10c 100644 --- a/index.html +++ b/index.html @@ -44,9 +44,9 @@

    Choose your quiz

    name="category" class="appearance-none bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 pr-10"> - - - + + + diff --git a/src/script.ts b/src/script.ts index 6074699..2e0d5bf 100644 --- a/src/script.ts +++ b/src/script.ts @@ -22,13 +22,18 @@ interface questionObjectFormat { const questionArray: questionObjectFormat[] = []; -let amount: Number = 10; -let category: Number = 9; -let difficulty: String = "medium"; +// let amount: Number = 10; +// let category: Number = 9; +// let difficulty: String = "medium"; // questions from local storage to use when testing, if we hit API limit let storedQuestionArray: questionObjectFormat[] = []; +const quizSettings = JSON.parse(localStorage.getItem("quizSettings")); +let category: Number = parseInt(quizSettings.category); +let difficulty: String = quizSettings.difficulty; +let amount: Number = parseInt(quizSettings.amount); + /* ------ DOM ELEMENTS ------ */ @@ -41,7 +46,7 @@ const answers = document.getElementById("answers") as HTMLElement; const fetchQuizAPI = async () => { const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${category}&difficulty=${difficulty}&type=multiple`; - + try { const response = await fetch(APIUrl); @@ -117,7 +122,14 @@ const insertQuestionsAndAnswers = (array: questionObjectFormat, index: Number) = /* ------ EVENT LISTENER ------ */ -document.addEventListener("DOMContentLoaded", fetchQuizAPI); +document.addEventListener("DOMContentLoaded", async () => { + + const category: Number = parseInt(quizSettings.category); + const difficulty: String = quizSettings.difficulty; + const amount: Number = parseInt(quizSettings.amount); + + await fetchQuizAPI(); +}); // TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray @@ -125,13 +137,16 @@ document.addEventListener("DOMContentLoaded", fetchQuizAPI); document.getElementById("startBtn")?.addEventListener("click", () => { - const category = (document?.getElementById("category")! as HTMLSelectElement).value; + const category = parseInt((document?.getElementById("category")! as HTMLSelectElement).value); const difficulty = (document?.getElementById("difficulty")! as HTMLSelectElement).value; const player = (document?.getElementById("player-name")! as HTMLSelectElement).value; + //fix this one to pick up real value + const amount = parseInt("9"); localStorage.setItem("quizSettings", JSON.stringify({ category, difficulty, + amount, player })); @@ -140,6 +155,7 @@ document.getElementById("startBtn")?.addEventListener("click", () => { window.location.href = "quiz.html"; }); + const stored = localStorage.getItem("quizSettings"); console.log(stored); From 88226ac4a039fe2fb62bfaf49d500b3811f9b0db Mon Sep 17 00:00:00 2001 From: daniellauding Date: Thu, 30 Oct 2025 11:50:14 +0100 Subject: [PATCH 11/71] mmm --- dist/script.d.ts | 4 ---- dist/script.d.ts.map | 2 +- dist/script.js | 21 +++++++++++++-------- dist/script.js.map | 2 +- src/script.ts | 27 ++++++++++++++++++--------- 5 files changed, 33 insertions(+), 23 deletions(-) diff --git a/dist/script.d.ts b/dist/script.d.ts index c7418aa..9944bf6 100644 --- a/dist/script.d.ts +++ b/dist/script.d.ts @@ -15,10 +15,6 @@ interface questionObjectFormat { } declare const questionArray: questionObjectFormat[]; declare let storedQuestionArray: questionObjectFormat[]; -declare const quizSettings: any; -declare let category: Number; -declare let difficulty: String; -declare let amount: Number; declare const question: HTMLElement; declare const answers: HTMLElement; declare const fetchQuizAPI: () => Promise; diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map index ca77c5f..907fd04 100644 --- a/dist/script.d.ts.map +++ b/dist/script.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAOjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAErD,QAAA,MAAM,YAAY,KAAmD,CAAC;AACtE,QAAA,IAAI,QAAQ,EAAE,MAAwC,CAAC;AACvD,QAAA,IAAI,UAAU,EAAE,MAAgC,CAAC;AACjD,QAAA,IAAI,MAAM,EAAE,MAAsC,CAAC;AAMnD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBA0CjB,CAAC;AAWF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAe5E,CAAC;AA4CF,QAAA,MAAM,MAAM,eAAuC,CAAC"} \ No newline at end of file +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAOjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAWrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBAmDjB,CAAC;AAWF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAe5E,CAAC;AA4CF,QAAA,MAAM,MAAM,eAAuC,CAAC"} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js index c62c144..98b5a24 100644 --- a/dist/script.js +++ b/dist/script.js @@ -17,16 +17,20 @@ const questionArray = []; // let difficulty: String = "medium"; // questions from local storage to use when testing, if we hit API limit let storedQuestionArray = []; -const quizSettings = JSON.parse(localStorage.getItem("quizSettings")); -let category = parseInt(quizSettings.category); -let difficulty = quizSettings.difficulty; -let amount = parseInt(quizSettings.amount); +// const quizSettings = JSON.parse(localStorage.getItem("quizSettings")); +// let category: Number = parseInt(quizSettings.category); +// let difficulty: String = quizSettings.difficulty; +// let amount: Number = parseInt(quizSettings.amount); /* ------ DOM ELEMENTS ------ */ const question = document.getElementById("question"); const answers = document.getElementById("answers"); /* ------ FETCH API DATA ------ */ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { - const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${category}&difficulty=${difficulty}&type=multiple`; + const stored = localStorage.getItem("quizSettings"); + const settings = JSON.parse(stored); + console.log("Loaded quiz settings:", settings); + const amount = 10; + const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${settings.category}&difficulty=${settings.difficulty.toLowerCase()}&type=multiple`; try { const response = yield fetch(APIUrl); if (!response.ok) { @@ -48,6 +52,7 @@ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { }; questionArray.push(questionObject); }); + console.log("Quiz questions fetched:", questionArray); } catch (error) { console.error("Fetch error:", error); @@ -76,9 +81,9 @@ const insertQuestionsAndAnswers = (array, index) => { // TO DO: create a function for adding scores /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, void 0, function* () { - const category = parseInt(quizSettings.category); - const difficulty = quizSettings.difficulty; - const amount = parseInt(quizSettings.amount); + // const category: Number = parseInt(quizSettings.category); + // const difficulty: String = quizSettings.difficulty; + // const amount: Number = parseInt(quizSettings.amount); yield fetchQuizAPI(); })); // TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray diff --git a/dist/script.js.map b/dist/script.js.map index 8817180..17ffde3 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/script.ts b/src/script.ts index 2e0d5bf..922f169 100644 --- a/src/script.ts +++ b/src/script.ts @@ -29,10 +29,10 @@ const questionArray: questionObjectFormat[] = []; // questions from local storage to use when testing, if we hit API limit let storedQuestionArray: questionObjectFormat[] = []; -const quizSettings = JSON.parse(localStorage.getItem("quizSettings")); -let category: Number = parseInt(quizSettings.category); -let difficulty: String = quizSettings.difficulty; -let amount: Number = parseInt(quizSettings.amount); +// const quizSettings = JSON.parse(localStorage.getItem("quizSettings")); +// let category: Number = parseInt(quizSettings.category); +// let difficulty: String = quizSettings.difficulty; +// let amount: Number = parseInt(quizSettings.amount); @@ -45,7 +45,15 @@ const answers = document.getElementById("answers") as HTMLElement; /* ------ FETCH API DATA ------ */ const fetchQuizAPI = async () => { - const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${category}&difficulty=${difficulty}&type=multiple`; + + const stored = localStorage.getItem("quizSettings"); + + const settings = JSON.parse(stored); + console.log("Loaded quiz settings:", settings); + + const amount = 10; + + const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${settings.category}&difficulty=${settings.difficulty.toLowerCase()}&type=multiple`; try { @@ -58,7 +66,6 @@ const fetchQuizAPI = async () => { const data = await response.json(); const fetchedQuizQuestions: fetchedObjectFormat[] = data.results; - fetchedQuizQuestions.map(object => { // create an array with all answers, despite correct/incorrect @@ -77,6 +84,8 @@ const fetchQuizAPI = async () => { questionArray.push(questionObject); }); + + console.log("Quiz questions fetched:", questionArray); } catch(error) { @@ -124,9 +133,9 @@ const insertQuestionsAndAnswers = (array: questionObjectFormat, index: Number) = document.addEventListener("DOMContentLoaded", async () => { - const category: Number = parseInt(quizSettings.category); - const difficulty: String = quizSettings.difficulty; - const amount: Number = parseInt(quizSettings.amount); + // const category: Number = parseInt(quizSettings.category); + // const difficulty: String = quizSettings.difficulty; + // const amount: Number = parseInt(quizSettings.amount); await fetchQuizAPI(); }); From 6eed6052ed9a4b1b6fc9d9380d62265a642e0437 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Dgabriellaberko=E2=80=9D?= <75434964+gabriellaberko@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:08:16 +0100 Subject: [PATCH 12/71] remove doublets of code and clean code --- dist/script.d.ts | 7 ++++++- dist/script.d.ts.map | 2 +- dist/script.js | 20 ++++++-------------- dist/script.js.map | 2 +- src/script.ts | 35 ++++++++++++++++------------------- 5 files changed, 30 insertions(+), 36 deletions(-) diff --git a/dist/script.d.ts b/dist/script.d.ts index 9944bf6..c2c6573 100644 --- a/dist/script.d.ts +++ b/dist/script.d.ts @@ -13,11 +13,16 @@ interface questionObjectFormat { allAnswers: string[]; correctAnswer: string; } +interface quizSettingsFormat { + amount: number; + category: number; + difficulty: string; + player: string; +} declare const questionArray: questionObjectFormat[]; declare let storedQuestionArray: questionObjectFormat[]; declare const question: HTMLElement; declare const answers: HTMLElement; declare const fetchQuizAPI: () => Promise; declare const insertQuestionsAndAnswers: (array: questionObjectFormat, index: Number) => void; -declare const stored: string | null; //# sourceMappingURL=script.d.ts.map \ No newline at end of file diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map index 907fd04..129059d 100644 --- a/dist/script.d.ts.map +++ b/dist/script.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAOjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAWrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBAmDjB,CAAC;AAWF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAe5E,CAAC;AA4CF,QAAA,MAAM,MAAM,eAAuC,CAAC"} \ No newline at end of file +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAGjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAWrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAMlE,QAAA,MAAM,YAAY,qBAkDjB,CAAC;AAWF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAe5E,CAAC"} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js index 98b5a24..c8ccbb8 100644 --- a/dist/script.js +++ b/dist/script.js @@ -12,9 +12,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge var _a; /* ------ GLOBAL VARIABLES ------ */ const questionArray = []; -// let amount: Number = 10; -// let category: Number = 9; -// let difficulty: String = "medium"; // questions from local storage to use when testing, if we hit API limit let storedQuestionArray = []; // const quizSettings = JSON.parse(localStorage.getItem("quizSettings")); @@ -26,11 +23,11 @@ const question = document.getElementById("question"); const answers = document.getElementById("answers"); /* ------ FETCH API DATA ------ */ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { - const stored = localStorage.getItem("quizSettings"); - const settings = JSON.parse(stored); + const store = localStorage.getItem("quizSettings"); + const settings = JSON.parse(store); + console.log(typeof store); console.log("Loaded quiz settings:", settings); - const amount = 10; - const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${settings.category}&difficulty=${settings.difficulty.toLowerCase()}&type=multiple`; + const APIUrl = `https://opentdb.com/api.php?amount=${settings.amount}&category=${settings.category}&difficulty=${settings.difficulty}&type=multiple`; try { const response = yield fetch(APIUrl); if (!response.ok) { @@ -81,19 +78,16 @@ const insertQuestionsAndAnswers = (array, index) => { // TO DO: create a function for adding scores /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, void 0, function* () { - // const category: Number = parseInt(quizSettings.category); - // const difficulty: String = quizSettings.difficulty; - // const amount: Number = parseInt(quizSettings.amount); yield fetchQuizAPI(); })); // TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray /* ------ Logic to collect player pref and redirect to quiz.html ------ */ (_a = document.getElementById("startBtn")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", () => { const category = parseInt((document === null || document === void 0 ? void 0 : document.getElementById("category")).value); - const difficulty = (document === null || document === void 0 ? void 0 : document.getElementById("difficulty")).value; + const difficulty = ((document === null || document === void 0 ? void 0 : document.getElementById("difficulty")).value).toLowerCase(); const player = (document === null || document === void 0 ? void 0 : document.getElementById("player-name")).value; //fix this one to pick up real value - const amount = parseInt("9"); + const amount = parseInt("20"); localStorage.setItem("quizSettings", JSON.stringify({ category, difficulty, @@ -103,7 +97,5 @@ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, vo console.log("Saved quiz settings:", { category, difficulty, player }); window.location.href = "quiz.html"; }); -const stored = localStorage.getItem("quizSettings"); -console.log(stored); // TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray //# sourceMappingURL=script.js.map \ No newline at end of file diff --git a/dist/script.js.map b/dist/script.js.map index 17ffde3..1305452 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/script.ts b/src/script.ts index 922f169..e82d6e0 100644 --- a/src/script.ts +++ b/src/script.ts @@ -17,15 +17,18 @@ interface questionObjectFormat { correctAnswer: string } +interface quizSettingsFormat { + amount: number, + category: number, + difficulty: string, + player: string +} + /* ------ GLOBAL VARIABLES ------ */ const questionArray: questionObjectFormat[] = []; -// let amount: Number = 10; -// let category: Number = 9; -// let difficulty: String = "medium"; - // questions from local storage to use when testing, if we hit API limit let storedQuestionArray: questionObjectFormat[] = []; @@ -42,18 +45,18 @@ const question = document.getElementById("question") as HTMLElement; const answers = document.getElementById("answers") as HTMLElement; + /* ------ FETCH API DATA ------ */ const fetchQuizAPI = async () => { - const stored = localStorage.getItem("quizSettings"); - - const settings = JSON.parse(stored); + const store = localStorage.getItem("quizSettings"); + const settings = JSON.parse(store); + + console.log(typeof store); console.log("Loaded quiz settings:", settings); - const amount = 10; - - const APIUrl = `https://opentdb.com/api.php?amount=${amount}&category=${settings.category}&difficulty=${settings.difficulty.toLowerCase()}&type=multiple`; + const APIUrl = `https://opentdb.com/api.php?amount=${settings.amount}&category=${settings.category}&difficulty=${settings.difficulty}&type=multiple`; try { @@ -132,11 +135,6 @@ const insertQuestionsAndAnswers = (array: questionObjectFormat, index: Number) = /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", async () => { - - // const category: Number = parseInt(quizSettings.category); - // const difficulty: String = quizSettings.difficulty; - // const amount: Number = parseInt(quizSettings.amount); - await fetchQuizAPI(); }); @@ -147,10 +145,10 @@ document.addEventListener("DOMContentLoaded", async () => { document.getElementById("startBtn")?.addEventListener("click", () => { const category = parseInt((document?.getElementById("category")! as HTMLSelectElement).value); - const difficulty = (document?.getElementById("difficulty")! as HTMLSelectElement).value; + const difficulty = ((document?.getElementById("difficulty")! as HTMLSelectElement).value).toLowerCase(); const player = (document?.getElementById("player-name")! as HTMLSelectElement).value; //fix this one to pick up real value - const amount = parseInt("9"); + const amount = parseInt("20"); localStorage.setItem("quizSettings", JSON.stringify({ category, @@ -165,8 +163,7 @@ document.getElementById("startBtn")?.addEventListener("click", () => { }); -const stored = localStorage.getItem("quizSettings"); -console.log(stored); + // TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray \ No newline at end of file From 1658bff90b9bfebbea889038964946265b2c735e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Dgabriellaberko=E2=80=9D?= <75434964+gabriellaberko@users.noreply.github.com> Date: Thu, 30 Oct 2025 14:09:27 +0100 Subject: [PATCH 13/71] clean code --- dist/script.js.map | 2 +- src/script.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/script.js.map b/dist/script.js.map index 1305452..426161b 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/script.ts b/src/script.ts index e82d6e0..464975b 100644 --- a/src/script.ts +++ b/src/script.ts @@ -50,7 +50,7 @@ const answers = document.getElementById("answers") as HTMLElement; const fetchQuizAPI = async () => { - const store = localStorage.getItem("quizSettings"); + const store = localStorage.getItem("quizSettings")!; const settings = JSON.parse(store); console.log(typeof store); From 1316c8fbf120b62410d090c5f80991c1f3480692 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Dgabriellaberko=E2=80=9D?= <75434964+gabriellaberko@users.noreply.github.com> Date: Thu, 30 Oct 2025 15:32:37 +0100 Subject: [PATCH 14/71] shuffle the answers so correct answer is not always last + insert questions and answers on page --- dist/script.d.ts | 2 ++ dist/script.d.ts.map | 2 +- dist/script.js | 36 ++++++++++++++++++++++++---------- dist/script.js.map | 2 +- quiz.html | 7 +------ src/script.ts | 46 ++++++++++++++++++++++++++++++++------------ 6 files changed, 65 insertions(+), 30 deletions(-) diff --git a/dist/script.d.ts b/dist/script.d.ts index c2c6573..7a3df8b 100644 --- a/dist/script.d.ts +++ b/dist/script.d.ts @@ -24,5 +24,7 @@ declare let storedQuestionArray: questionObjectFormat[]; declare const question: HTMLElement; declare const answers: HTMLElement; declare const fetchQuizAPI: () => Promise; +declare const incrementIndex: () => void; +declare const shuffleAnswers: (array: string[]) => void; declare const insertQuestionsAndAnswers: (array: questionObjectFormat, index: Number) => void; //# sourceMappingURL=script.d.ts.map \ No newline at end of file diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map index 129059d..db7267b 100644 --- a/dist/script.d.ts.map +++ b/dist/script.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAGjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAWrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAMlE,QAAA,MAAM,YAAY,qBAkDjB,CAAC;AAWF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAe5E,CAAC"} \ No newline at end of file +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAGjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAOrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBAmDjB,CAAC;AASF,QAAA,MAAM,cAAc,YAMnB,CAAC;AAGF,QAAA,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAMtC,CAAC;AAIF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAwB5E,CAAC"} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js index c8ccbb8..be7000b 100644 --- a/dist/script.js +++ b/dist/script.js @@ -14,10 +14,6 @@ var _a; const questionArray = []; // questions from local storage to use when testing, if we hit API limit let storedQuestionArray = []; -// const quizSettings = JSON.parse(localStorage.getItem("quizSettings")); -// let category: Number = parseInt(quizSettings.category); -// let difficulty: String = quizSettings.difficulty; -// let amount: Number = parseInt(quizSettings.amount); /* ------ DOM ELEMENTS ------ */ const question = document.getElementById("question"); const answers = document.getElementById("answers"); @@ -50,6 +46,7 @@ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { questionArray.push(questionObject); }); console.log("Quiz questions fetched:", questionArray); + incrementIndex(); } catch (error) { console.error("Fetch error:", error); @@ -61,18 +58,37 @@ const fetchQuizAPI = () => __awaiter(void 0, void 0, void 0, function* () { }); /* ------ LOGIC ------ */ // TO DO: create function that increments index for every question answered until reaching the length of the quiz questions (ex. 10) +const incrementIndex = () => { + let index = 0; + // What event listener should we have? When should we increment? + // index++; + insertQuestionsAndAnswers(questionArray, index); +}; +const shuffleAnswers = (array) => { + // swap each answer with a random answer, starting from the last answer in the list until i is equal to the first item + for (let i = array.length - 1; i > 0; i--) { + const randomAnswerInList = Math.floor(Math.random() * (i + 1)); + [array[i], array[randomAnswerInList]] = [array[randomAnswerInList], array[i]]; + } +}; // TO DO: create a function that inserts the questions and the answers. Anwsers need to be shuffled before inserted. The function needs to take an index as argument const insertQuestionsAndAnswers = (array, index) => { // empty elements before filling them question.innerHTML = ""; answers.innerHTML = ""; + const answerList = array[index].allAnswers; // insert data for question and answers question.innerHTML += ` - - `; - answers.innerHTML += ` - +

    ${array[index].question}

    `; + // sort array items in a random order, so that the correct answer is not always the last item + shuffleAnswers(answerList); + console.log(answerList); + answerList.forEach(answer => { + answers.innerHTML += ` + + `; + }); }; // TO DO: create a function that checks if the users chosedn answer is the correct one or not // TO DO: create a function for adding scores @@ -80,7 +96,6 @@ const insertQuestionsAndAnswers = (array, index) => { document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, void 0, function* () { yield fetchQuizAPI(); })); -// TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray /* ------ Logic to collect player pref and redirect to quiz.html ------ */ (_a = document.getElementById("startBtn")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", () => { const category = parseInt((document === null || document === void 0 ? void 0 : document.getElementById("category")).value); @@ -88,13 +103,14 @@ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, vo const player = (document === null || document === void 0 ? void 0 : document.getElementById("player-name")).value; //fix this one to pick up real value const amount = parseInt("20"); + // save the inputs from the user's filter options to local storage localStorage.setItem("quizSettings", JSON.stringify({ category, difficulty, amount, player })); - console.log("Saved quiz settings:", { category, difficulty, player }); + // navigate to quiz page window.location.href = "quiz.html"; }); // TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray diff --git a/dist/script.js.map b/dist/script.js.map index 426161b..294a76c 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/quiz.html b/quiz.html index 9d7c779..1115382 100644 --- a/quiz.html +++ b/quiz.html @@ -37,15 +37,10 @@
    -

    What year was Apple Inc. founded?

    +

    - - - - -
    diff --git a/src/script.ts b/src/script.ts index 464975b..7db9c68 100644 --- a/src/script.ts +++ b/src/script.ts @@ -32,10 +32,6 @@ const questionArray: questionObjectFormat[] = []; // questions from local storage to use when testing, if we hit API limit let storedQuestionArray: questionObjectFormat[] = []; -// const quizSettings = JSON.parse(localStorage.getItem("quizSettings")); -// let category: Number = parseInt(quizSettings.category); -// let difficulty: String = quizSettings.difficulty; -// let amount: Number = parseInt(quizSettings.amount); @@ -45,7 +41,6 @@ const question = document.getElementById("question") as HTMLElement; const answers = document.getElementById("answers") as HTMLElement; - /* ------ FETCH API DATA ------ */ const fetchQuizAPI = async () => { @@ -89,6 +84,7 @@ const fetchQuizAPI = async () => { }); console.log("Quiz questions fetched:", questionArray); + incrementIndex(); } catch(error) { @@ -107,6 +103,23 @@ const fetchQuizAPI = async () => { // TO DO: create function that increments index for every question answered until reaching the length of the quiz questions (ex. 10) +const incrementIndex = () => { + let index = 0; + // What event listener should we have? When should we increment? + + // index++; + insertQuestionsAndAnswers(questionArray, index) +}; + + +const shuffleAnswers = (array: string[]) => { + // swap each answer with a random answer, starting from the last answer in the list until i is equal to the first item + for (let i = array.length - 1; i > 0; i--) { + const randomAnswerInList = Math.floor(Math.random() * (i + 1)); + [array[i], array[randomAnswerInList]] = [array[randomAnswerInList], array[i]]; + } +}; + // TO DO: create a function that inserts the questions and the answers. Anwsers need to be shuffled before inserted. The function needs to take an index as argument const insertQuestionsAndAnswers = (array: questionObjectFormat, index: Number) => { @@ -115,15 +128,24 @@ const insertQuestionsAndAnswers = (array: questionObjectFormat, index: Number) = question.innerHTML = ""; answers.innerHTML = ""; + const answerList: string[] = array[index].allAnswers; + // insert data for question and answers question.innerHTML += ` - +

    ${array[index].question}

    `; + + // sort array items in a random order, so that the correct answer is not always the last item + shuffleAnswers(answerList); - answers.innerHTML += ` - - `; + console.log(answerList) + answerList.forEach(answer => { + + answers.innerHTML += ` + + ` + }); }; // TO DO: create a function that checks if the users chosedn answer is the correct one or not @@ -139,7 +161,7 @@ document.addEventListener("DOMContentLoaded", async () => { }); -// TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray + /* ------ Logic to collect player pref and redirect to quiz.html ------ */ document.getElementById("startBtn")?.addEventListener("click", () => { @@ -150,6 +172,7 @@ document.getElementById("startBtn")?.addEventListener("click", () => { //fix this one to pick up real value const amount = parseInt("20"); + // save the inputs from the user's filter options to local storage localStorage.setItem("quizSettings", JSON.stringify({ category, difficulty, @@ -157,8 +180,7 @@ document.getElementById("startBtn")?.addEventListener("click", () => { player })); - console.log("Saved quiz settings:", { category, difficulty, player }); - + // navigate to quiz page window.location.href = "quiz.html"; }); From d0c2d7335975e28117e3deed0e949fe828af3536 Mon Sep 17 00:00:00 2001 From: daniellauding Date: Thu, 30 Oct 2025 17:24:44 +0100 Subject: [PATCH 15/71] merged with main and setup scoreboard functionality --- dist/script.d.ts | 4 ++ dist/script.d.ts.map | 2 +- dist/script.js | 134 ++++++++++++++++++++++++++++++------ dist/script.js.map | 2 +- index.html | 11 ++- scoreboard.html | 131 +++++++++++++++++++++++++++++++++++ src/script.ts | 158 +++++++++++++++++++++++++++++++++++++------ 7 files changed, 399 insertions(+), 43 deletions(-) create mode 100644 scoreboard.html diff --git a/dist/script.d.ts b/dist/script.d.ts index 7a3df8b..78225cc 100644 --- a/dist/script.d.ts +++ b/dist/script.d.ts @@ -27,4 +27,8 @@ declare const fetchQuizAPI: () => Promise; declare const incrementIndex: () => void; declare const shuffleAnswers: (array: string[]) => void; declare const insertQuestionsAndAnswers: (array: questionObjectFormat, index: Number) => void; +declare const SCORE_API_URL = "https://postgres.daniellauding.se/quiz_scores"; +declare const fetchScores: () => Promise; +declare function postScore(username: string): Promise; +declare const quizForm: HTMLElement | null; //# sourceMappingURL=script.d.ts.map \ No newline at end of file diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map index db7267b..138ed2a 100644 --- a/dist/script.d.ts.map +++ b/dist/script.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAGjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAOrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBAmDjB,CAAC;AASF,QAAA,MAAM,cAAc,YAMnB,CAAC;AAGF,QAAA,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAMtC,CAAC;AAIF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SAwB5E,CAAC"} \ No newline at end of file +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAGjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAOrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBAmDjB,CAAC;AASF,QAAA,MAAM,cAAc,YAMnB,CAAC;AAGF,QAAA,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAMtC,CAAC;AAIF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SA0B5E,CAAC;AA2CF,QAAA,MAAM,aAAa,kDAAkD,CAAC;AAEtE,QAAA,MAAM,WAAW,qBA0ChB,CAAA;AAKD,iBAAe,SAAS,CAAC,QAAQ,EAAE,MAAM,gBAmBxC;AAED,QAAA,MAAM,QAAQ,oBAAuC,CAAC"} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js index be7000b..a3d0ee7 100644 --- a/dist/script.js +++ b/dist/script.js @@ -9,7 +9,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; -var _a; /* ------ GLOBAL VARIABLES ------ */ const questionArray = []; // questions from local storage to use when testing, if we hit API limit @@ -78,9 +77,10 @@ const insertQuestionsAndAnswers = (array, index) => { answers.innerHTML = ""; const answerList = array[index].allAnswers; // insert data for question and answers - question.innerHTML += ` -

    ${array[index].question}

    - `; + // question.innerHTML += ` + //

    ${array[index].question}

    + // `; + question.innerText = array[index].question; //instead of making 2 h1's as above // sort array items in a random order, so that the correct answer is not always the last item shuffleAnswers(answerList); console.log(answerList); @@ -95,23 +95,119 @@ const insertQuestionsAndAnswers = (array, index) => { /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, void 0, function* () { yield fetchQuizAPI(); + yield fetchScores(); })); /* ------ Logic to collect player pref and redirect to quiz.html ------ */ -(_a = document.getElementById("startBtn")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", () => { - const category = parseInt((document === null || document === void 0 ? void 0 : document.getElementById("category")).value); - const difficulty = ((document === null || document === void 0 ? void 0 : document.getElementById("difficulty")).value).toLowerCase(); - const player = (document === null || document === void 0 ? void 0 : document.getElementById("player-name")).value; - //fix this one to pick up real value - const amount = parseInt("20"); - // save the inputs from the user's filter options to local storage - localStorage.setItem("quizSettings", JSON.stringify({ - category, - difficulty, - amount, - player - })); - // navigate to quiz page - window.location.href = "quiz.html"; +// document.getElementById("startBtn")?.addEventListener("click", () => { +// const category = parseInt((document?.getElementById("category")! as HTMLSelectElement).value); +// const difficulty = ((document?.getElementById("difficulty")! as HTMLSelectElement).value).toLowerCase(); +// const player = (document?.getElementById("player-name")! as HTMLSelectElement).value; +// //fix this one to pick up real value +// const amount = parseInt("20"); +// // save the inputs from the user's filter options to local storage +// localStorage.setItem("quizSettings", JSON.stringify({ +// category, +// difficulty, +// amount, +// player +// })); +// // navigate to quiz page +// window.location.href = "quiz.html"; +// }); +/* ------ Fetch scores ------ */ +const SCORE_API_URL = `https://postgres.daniellauding.se/quiz_scores`; +const fetchScores = () => __awaiter(void 0, void 0, void 0, function* () { + try { + const response = yield fetch(SCORE_API_URL); + const result = yield response.json(); + // Sortera hรถgst fรถrst (valfritt) + result.sort((a, b) => b.score - a.score); + if (!response.ok) { + throw new Error(`Response status: ${response.status}`); + } + console.log(result); + // html.innerHTML = result; + console.log(result.length); + /* result.map((player, i) => { + console.log(player.username); + return html.innerHTML += player.username; + }); */ + const html = result.map((player, i) => ` +
  • + ${i + 1} + ${player.username} + ${player.score} + CATEGORY + Amount + Difficulty +
  • + `).join(""); + document.getElementById("score-list").innerHTML = html; + result.forEach((element) => console.log(element)); + } + catch (error) { + console.error('Error:', error); + } }); +/* ------ Post scores ------ */ +// async function postScore(username, score) { +function postScore(username) { + return __awaiter(this, void 0, void 0, function* () { + console.log("Posting new to scoreboard:", username); + const response = yield fetch(SCORE_API_URL, { + method: "POST", + headers: { "Content-Type": "application/json" }, + // body: JSON.stringify({ username, score }) + body: JSON.stringify({ username, score: 0 }) + }); + if (!response.ok) + throw new Error(`Server error: ${response.status}`); + try { + const result = yield response.json(); + console.log("โœ… Posted successfully:", result); + return result; + } + catch (_a) { + console.warn("โš ๏ธ Server returned no JSON body"); + return {}; + } + }); +} +const quizForm = document.getElementById("quiz-form"); +if (quizForm) { + quizForm.addEventListener("submit", (e) => __awaiter(void 0, void 0, void 0, function* () { + e.preventDefault(); + console.log("๐ŸŽฏ Form submitted"); + // const score = Number(document.getElementById("player-score").value); + const name = document.getElementById("player-name").value.trim(); + const category = parseInt(document.getElementById("category").value); + const difficulty = document.getElementById("difficulty").value.toLowerCase(); + const amount = 20; + // if (!name || isNaN(score)) { + if (!name) { + alert("Write a name!"); + return; + } + try { + const existing = yield fetch(SCORE_API_URL).then(r => r.json()); + const alreadyExists = existing.some(p => p.username.toLowerCase() === name.toLowerCase()); + if (alreadyExists) { + alert("That name already exists! Try another or add a number ๐Ÿ˜Š"); + return; + } + // await postScore(name, score); + localStorage.setItem("quizSettings", JSON.stringify({ category, difficulty, amount, player: name })); + yield postScore(name); + // alert("Score added!"); + // await fetchScores(); // uppdatera listan + console.log("โœ… Score posted, now redirecting..."); + window.location.href = "quiz.html"; // move only AFTER postScore + } + catch (error) { + console.error("Error:", error); + // alert("Something went wrong ๐Ÿ˜ข"); + } + })); +} // TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray //# sourceMappingURL=script.js.map \ No newline at end of file diff --git a/dist/script.js.map b/dist/script.js.map index 294a76c..e00f584 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;;AA2B9B,oCAAoC;AAEpC,MAAM,aAAa,GAA2B,EAAE,CAAC;AAEjD,wEAAwE;AACxE,IAAI,mBAAmB,GAA2B,EAAE,CAAC;AAKrD,gCAAgC;AAEhC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAgB,CAAC;AACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAgB,CAAC;AAGlE,kCAAkC;AAElC,MAAM,YAAY,GAAG,GAAS,EAAE;IAE9B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,CAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,sCAAsC,QAAQ,CAAC,MAAM,aAAa,QAAQ,CAAC,QAAQ,eAAe,QAAQ,CAAC,UAAU,gBAAgB,CAAC;IAErJ,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,oBAAoB,GAA0B,IAAI,CAAC,OAAO,CAAC;QAEjE,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAEhC,8DAA8D;YAC9D,MAAM,UAAU,GAAa,MAAM,CAAC,iBAAiB,CAAC;YACtD,MAAM,aAAa,GAAW,MAAM,CAAC,cAAc,CAAA;YACnD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAG/B,MAAM,cAAc,GAAyB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,MAAM,CAAC,cAAc;aACrC,CAAA;YAED,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;QACtD,cAAc,EAAE,CAAC;IACnB,CAAC;IAED,OAAM,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,kCAAkC;IACpC,CAAC;IACD,4DAA4D;IAC5D,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAChF,CAAC,CAAA,CAAC;AAIF,yBAAyB;AAGzB,oIAAoI;AAEpI,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,gEAAgE;IAEhE,WAAW;IACX,yBAAyB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;AACjD,CAAC,CAAC;AAGF,MAAM,cAAc,GAAG,CAAC,KAAe,EAAE,EAAE;IACzC,sHAAsH;IACtH,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;AACH,CAAC,CAAC;AAEF,oKAAoK;AAEpK,MAAM,yBAAyB,GAAG,CAAC,KAA2B,EAAE,KAAa,EAAE,EAAE;IAE/E,qCAAqC;IACrC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;IACxB,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;IAEvB,MAAM,UAAU,GAAa,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;IAErD,uCAAuC;IACvC,QAAQ,CAAC,SAAS,IAAI;UACd,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ;GAC5B,CAAC;IAEF,6FAA6F;IAC7F,cAAc,CAAC,UAAU,CAAC,CAAC;IAE3B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAEvB,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAEzB,OAAO,CAAC,SAAS,IAAI;0GACgF,MAAM;MAC1G,CAAA;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,6FAA6F;AAE7F,6CAA6C;AAI7C,kCAAkC;AAElC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAS,EAAE;IACvD,MAAM,YAAY,EAAE,CAAC;AACvB,CAAC,CAAA,CAAC,CAAC;AAIH,0EAA0E;AAE1E,MAAA,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAC,0CAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;IAElE,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,UAAU,CAAwB,CAAA,CAAC,KAAK,CAAC,CAAC;IAC9F,MAAM,UAAU,GAAG,CAAC,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,YAAY,CAAwB,CAAA,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACxG,MAAM,MAAM,GAAG,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,cAAc,CAAC,aAAa,CAAwB,CAAA,CAAC,KAAK,CAAC;IACrF,oCAAoC;IACpC,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE9B,kEAAkE;IAClE,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC;QAClD,QAAQ;QACR,UAAU;QACV,MAAM;QACN,MAAM;KACP,CAAC,CAAC,CAAC;IAEJ,wBAAwB;IACxB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC;AACrC,CAAC,CAAC,CAAC;AAMH,+JAA+J"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":";AAAA,8BAA8B;;;;;;;;;;AA2B9B,oCAAoC;AAEpC,MAAM,aAAa,GAA2B,EAAE,CAAC;AAEjD,wEAAwE;AACxE,IAAI,mBAAmB,GAA2B,EAAE,CAAC;AAKrD,gCAAgC;AAEhC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAgB,CAAC;AACpE,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAgB,CAAC;AAGlE,kCAAkC;AAElC,MAAM,YAAY,GAAG,GAAS,EAAE;IAE9B,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,CAAE,CAAC;IACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,sCAAsC,QAAQ,CAAC,MAAM,aAAa,QAAQ,CAAC,QAAQ,eAAe,QAAQ,CAAC,UAAU,gBAAgB,CAAC;IAErJ,IAAI,CAAC;QAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,uBAAuB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,oBAAoB,GAA0B,IAAI,CAAC,OAAO,CAAC;QAEjE,oBAAoB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;YAEhC,8DAA8D;YAC9D,MAAM,UAAU,GAAa,MAAM,CAAC,iBAAiB,CAAC;YACtD,MAAM,aAAa,GAAW,MAAM,CAAC,cAAc,CAAA;YACnD,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAG/B,MAAM,cAAc,GAAyB;gBAC3C,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,UAAU,EAAE,MAAM,CAAC,UAAU;gBAC7B,UAAU,EAAE,UAAU;gBACtB,aAAa,EAAE,MAAM,CAAC,cAAc;aACrC,CAAA;YAED,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,aAAa,CAAC,CAAC;QACtD,cAAc,EAAE,CAAC;IACnB,CAAC;IAED,OAAM,KAAK,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACrC,kCAAkC;IACpC,CAAC;IACD,4DAA4D;IAC5D,YAAY,CAAC,OAAO,CAAC,qBAAqB,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC;IAC3E,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC;AAChF,CAAC,CAAA,CAAC;AAIF,yBAAyB;AAGzB,oIAAoI;AAEpI,MAAM,cAAc,GAAG,GAAG,EAAE;IAC1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,gEAAgE;IAEhE,WAAW;IACX,yBAAyB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA;AACjD,CAAC,CAAC;AAGF,MAAM,cAAc,GAAG,CAAC,KAAe,EAAE,EAAE;IACzC,sHAAsH;IACtH,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/D,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,CAAC;AACH,CAAC,CAAC;AAEF,oKAAoK;AAEpK,MAAM,yBAAyB,GAAG,CAAC,KAA2B,EAAE,KAAa,EAAE,EAAE;IAE/E,qCAAqC;IACrC,QAAQ,CAAC,SAAS,GAAG,EAAE,CAAC;IACxB,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;IAEvB,MAAM,UAAU,GAAa,KAAK,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC;IAErD,uCAAuC;IACvC,0BAA0B;IAC1B,sCAAsC;IACtC,KAAK;IAEL,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,mCAAmC;IAE/E,6FAA6F;IAC7F,cAAc,CAAC,UAAU,CAAC,CAAC;IAE3B,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAEvB,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAEzB,OAAO,CAAC,SAAS,IAAI;0GACgF,MAAM;MAC1G,CAAA;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,6FAA6F;AAE7F,6CAA6C;AAI7C,kCAAkC;AAElC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAS,EAAE;IACvD,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,WAAW,EAAE,CAAC;AACtB,CAAC,CAAA,CAAC,CAAC;AAIH,0EAA0E;AAE1E,yEAAyE;AAEzE,mGAAmG;AACnG,6GAA6G;AAC7G,0FAA0F;AAC1F,yCAAyC;AACzC,mCAAmC;AAEnC,uEAAuE;AACvE,0DAA0D;AAC1D,gBAAgB;AAChB,kBAAkB;AAClB,cAAc;AACd,aAAa;AACb,SAAS;AAET,6BAA6B;AAC7B,wCAAwC;AACxC,MAAM;AAIN,gCAAgC;AAEhC,MAAM,aAAa,GAAG,+CAA+C,CAAC;AAEtE,MAAM,WAAW,GAAG,GAAQ,EAAE;IAE5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEvC,iCAAiC;QACjC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAEvC,IAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,2BAA2B;QAE3B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE3B;;;cAGM;QAEN,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;iJACsG,CAAC;gBAClI,CAAC,GAAG,CAAC;gBACL,MAAM,CAAC,QAAQ;gBACf,MAAM,CAAC,KAAK;;;;;KAKvB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;QAEvD,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpD,CAAC;IAAC,OAAM,KAAK,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC,CAAA,CAAA;AAED,+BAA+B;AAE/B,8CAA8C;AAC9C,SAAe,SAAS,CAAC,QAAgB;;QACvC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,EAAE;YAC1C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,4CAA4C;YAC5C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;SAC7C,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAEtE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;YAC9C,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,WAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;YAChD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CAAA;AAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAEtD,IAAI,QAAQ,EAAE,CAAC;IACZ,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAO,CAAC,EAAE,EAAE;QAC/C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAEjC,uEAAuE;QACvE,MAAM,IAAI,GAAI,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAsB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACvF,MAAM,QAAQ,GAAG,QAAQ,CAAE,QAAQ,CAAC,cAAc,CAAC,UAAU,CAAuB,CAAC,KAAK,CAAC,CAAC;QAC5F,MAAM,UAAU,GAAI,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAuB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACpG,MAAM,MAAM,GAAG,EAAE,CAAC;QAElB,iCAAiC;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,KAAK,CAAC,eAAe,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YAE1F,IAAI,aAAa,EAAE,CAAC;gBAClB,KAAK,CAAC,0DAA0D,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,gCAAgC;YAChC,YAAY,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;YACtB,yBAAyB;YACzB,2CAA2C;YAE3C,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAClD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,CAAC,4BAA4B;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC/B,oCAAoC;QACtC,CAAC;IACH,CAAC,CAAA,CAAC,CAAC;AACL,CAAC;AAID,+JAA+J"} \ No newline at end of file diff --git a/index.html b/index.html index 1f3c10c..cd2dcef 100644 --- a/index.html +++ b/index.html @@ -16,6 +16,13 @@ src="" alt="logo"> +
    @@ -35,7 +42,7 @@

    Welcome to QUIZ BONANZAAA!

    Choose your quiz

    -
    +
    @@ -118,8 +125,8 @@

    Choose your quiz

    +
    -
    diff --git a/scoreboard.html b/scoreboard.html new file mode 100644 index 0000000..de0cf74 --- /dev/null +++ b/scoreboard.html @@ -0,0 +1,131 @@ + + + + + + Quiz BONANZAAA โ€“ Scoreboard + + + + +
    +
    + + +
    + +
    +
    +

    Scoreboard

    + + +
    +
    + +
    + + + + +
    + + +
    + + + + +
    + +
    + + + + +
    + +
    +
    + + +
    +
      + +
    • + Rank + Player + Score + Category + Amount + Difficulty +
    • + + +
    • + #1 + Alice + 980 + General Knowledge + 20 + Medium +
    • +
    • + #2 + Bob + 875 + Film + 10 + Hard +
    • +
    • + #3 + Charlie + 820 + Music + 30 + Easy +
    • +
    +
    +
    +
    + +
    + + + + \ No newline at end of file diff --git a/src/script.ts b/src/script.ts index 7db9c68..7ca14a2 100644 --- a/src/script.ts +++ b/src/script.ts @@ -131,9 +131,11 @@ const insertQuestionsAndAnswers = (array: questionObjectFormat, index: Number) = const answerList: string[] = array[index].allAnswers; // insert data for question and answers - question.innerHTML += ` -

    ${array[index].question}

    - `; + // question.innerHTML += ` + //

    ${array[index].question}

    + // `; + + question.innerText = array[index].question; //instead of making 2 h1's as above // sort array items in a random order, so that the correct answer is not always the last item shuffleAnswers(answerList); @@ -158,33 +160,149 @@ const insertQuestionsAndAnswers = (array: questionObjectFormat, index: Number) = document.addEventListener("DOMContentLoaded", async () => { await fetchQuizAPI(); + await fetchScores(); }); /* ------ Logic to collect player pref and redirect to quiz.html ------ */ -document.getElementById("startBtn")?.addEventListener("click", () => { +// document.getElementById("startBtn")?.addEventListener("click", () => { - const category = parseInt((document?.getElementById("category")! as HTMLSelectElement).value); - const difficulty = ((document?.getElementById("difficulty")! as HTMLSelectElement).value).toLowerCase(); - const player = (document?.getElementById("player-name")! as HTMLSelectElement).value; - //fix this one to pick up real value - const amount = parseInt("20"); +// const category = parseInt((document?.getElementById("category")! as HTMLSelectElement).value); +// const difficulty = ((document?.getElementById("difficulty")! as HTMLSelectElement).value).toLowerCase(); +// const player = (document?.getElementById("player-name")! as HTMLSelectElement).value; +// //fix this one to pick up real value +// const amount = parseInt("20"); - // save the inputs from the user's filter options to local storage - localStorage.setItem("quizSettings", JSON.stringify({ - category, - difficulty, - amount, - player - })); - - // navigate to quiz page - window.location.href = "quiz.html"; -}); +// // save the inputs from the user's filter options to local storage +// localStorage.setItem("quizSettings", JSON.stringify({ +// category, +// difficulty, +// amount, +// player +// })); + +// // navigate to quiz page +// window.location.href = "quiz.html"; +// }); + + + +/* ------ Fetch scores ------ */ + +const SCORE_API_URL = `https://postgres.daniellauding.se/quiz_scores`; + +const fetchScores = async() => { + + try { + const response = await fetch(SCORE_API_URL); + const result = await response.json(); + + // Sortera hรถgst fรถrst (valfritt) + result.sort((a, b) => b.score - a.score); + + if(!response.ok) { + throw new Error(`Response status: ${response.status}`); + } + + console.log(result); + + // html.innerHTML = result; + + console.log(result.length); + + /* result.map((player, i) => { + console.log(player.username); + return html.innerHTML += player.username; + }); */ + + const html = result.map((player, i) => ` +
  • + ${i + 1} + ${player.username} + ${player.score} + CATEGORY + Amount + Difficulty +
  • + `).join(""); + + document.getElementById("score-list").innerHTML = html; + + result.forEach((element) => console.log(element)); + + } catch(error) { + console.error('Error:', error); + } +} + +/* ------ Post scores ------ */ + +// async function postScore(username, score) { +async function postScore(username: string) { + console.log("Posting new to scoreboard:", username); + const response = await fetch(SCORE_API_URL, { + method: "POST", + headers: { "Content-Type": "application/json" }, + // body: JSON.stringify({ username, score }) + body: JSON.stringify({ username, score: 0 }) + }); + + if (!response.ok) throw new Error(`Server error: ${response.status}`); + + try { + const result = await response.json(); + console.log("โœ… Posted successfully:", result); + return result; + } catch { + console.warn("โš ๏ธ Server returned no JSON body"); + return {}; + } +} +const quizForm = document.getElementById("quiz-form"); +if (quizForm) { + quizForm.addEventListener("submit", async (e) => { + e.preventDefault(); + console.log("๐ŸŽฏ Form submitted"); + + // const score = Number(document.getElementById("player-score").value); + const name = (document.getElementById("player-name") as HTMLInputElement).value.trim(); + const category = parseInt((document.getElementById("category") as HTMLSelectElement).value); + const difficulty = (document.getElementById("difficulty") as HTMLSelectElement).value.toLowerCase(); + const amount = 20; + + // if (!name || isNaN(score)) { + if (!name) { + alert("Write a name!"); + return; + } + + try { + const existing = await fetch(SCORE_API_URL).then(r => r.json()); + const alreadyExists = existing.some(p => p.username.toLowerCase() === name.toLowerCase()); + + if (alreadyExists) { + alert("That name already exists! Try another or add a number ๐Ÿ˜Š"); + return; + } + + // await postScore(name, score); + localStorage.setItem("quizSettings", JSON.stringify({ category, difficulty, amount, player: name })); + await postScore(name); + // alert("Score added!"); + // await fetchScores(); // uppdatera listan + + console.log("โœ… Score posted, now redirecting..."); + window.location.href = "quiz.html"; // move only AFTER postScore + } catch (error) { + console.error("Error:", error); + // alert("Something went wrong ๐Ÿ˜ข"); + } + }); +} From d1153abf08c40794a1ce783eaacb78d49201f3fb Mon Sep 17 00:00:00 2001 From: daniellauding Date: Thu, 30 Oct 2025 17:26:41 +0100 Subject: [PATCH 16/71] merged with main and setup scoreboard functionality --- src/script.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/script.ts b/src/script.ts index 7ca14a2..394e699 100644 --- a/src/script.ts +++ b/src/script.ts @@ -167,6 +167,8 @@ document.addEventListener("DOMContentLoaded", async () => { /* ------ Logic to collect player pref and redirect to quiz.html ------ */ +// We need to move this in to the "Submit" button instead to get it working with submitting results and usernames etc see line #268 + // document.getElementById("startBtn")?.addEventListener("click", () => { // const category = parseInt((document?.getElementById("category")! as HTMLSelectElement).value); @@ -240,7 +242,7 @@ const fetchScores = async() => { /* ------ Post scores ------ */ // async function postScore(username, score) { -async function postScore(username: string) { +const postScore = async(username: string) => { console.log("Posting new to scoreboard:", username); const response = await fetch(SCORE_API_URL, { method: "POST", From 098bdabf45207c5e132bc81e9aede819955dc4d3 Mon Sep 17 00:00:00 2001 From: daniellauding Date: Thu, 30 Oct 2025 20:06:59 +0100 Subject: [PATCH 17/71] fixed posting to scoreboard --- dist/script.d.ts | 3 +- dist/script.d.ts.map | 2 +- dist/script.js | 155 ++++++++++++++++++++++--------------------- dist/script.js.map | 2 +- index.html | 4 +- quiz.html | 3 + src/script.ts | 134 ++++++++++++++++++------------------- 7 files changed, 153 insertions(+), 150 deletions(-) diff --git a/dist/script.d.ts b/dist/script.d.ts index 78225cc..38b1e4e 100644 --- a/dist/script.d.ts +++ b/dist/script.d.ts @@ -29,6 +29,5 @@ declare const shuffleAnswers: (array: string[]) => void; declare const insertQuestionsAndAnswers: (array: questionObjectFormat, index: Number) => void; declare const SCORE_API_URL = "https://postgres.daniellauding.se/quiz_scores"; declare const fetchScores: () => Promise; -declare function postScore(username: string): Promise; -declare const quizForm: HTMLElement | null; +declare const postScore: (username: string, category: number, difficulty: string, amount: number) => Promise; //# sourceMappingURL=script.d.ts.map \ No newline at end of file diff --git a/dist/script.d.ts.map b/dist/script.d.ts.map index 138ed2a..a0da931 100644 --- a/dist/script.d.ts.map +++ b/dist/script.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAGjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAOrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBAmDjB,CAAC;AASF,QAAA,MAAM,cAAc,YAMnB,CAAC;AAGF,QAAA,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAMtC,CAAC;AAIF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SA0B5E,CAAC;AA2CF,QAAA,MAAM,aAAa,kDAAkD,CAAC;AAEtE,QAAA,MAAM,WAAW,qBA0ChB,CAAA;AAKD,iBAAe,SAAS,CAAC,QAAQ,EAAE,MAAM,gBAmBxC;AAED,QAAA,MAAM,QAAQ,oBAAuC,CAAC"} \ No newline at end of file +{"version":3,"file":"script.d.ts","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAA;CACf;AAKD,QAAA,MAAM,aAAa,EAAE,oBAAoB,EAAO,CAAC;AAGjD,QAAA,IAAI,mBAAmB,EAAE,oBAAoB,EAAO,CAAC;AAOrD,QAAA,MAAM,QAAQ,EAA0C,WAAW,CAAC;AACpE,QAAA,MAAM,OAAO,EAAyC,WAAW,CAAC;AAKlE,QAAA,MAAM,YAAY,qBAmDjB,CAAC;AASF,QAAA,MAAM,cAAc,YAMnB,CAAC;AAGF,QAAA,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,SAMtC,CAAC;AAIF,QAAA,MAAM,yBAAyB,GAAI,OAAO,oBAAoB,EAAE,OAAO,MAAM,SA0B5E,CAAC;AA2CF,QAAA,MAAM,aAAa,kDAAkD,CAAC;AAEtE,QAAA,MAAM,WAAW,qBA0ChB,CAAA;AAKD,QAAA,MAAM,SAAS,GACb,UAAU,MAAM,EAChB,UAAU,MAAM,EAChB,YAAY,MAAM,EAClB,QAAQ,MAAM,iBA0Bf,CAAA"} \ No newline at end of file diff --git a/dist/script.js b/dist/script.js index a3d0ee7..5a3778f 100644 --- a/dist/script.js +++ b/dist/script.js @@ -9,6 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; +var _a, _b, _c; /* ------ GLOBAL VARIABLES ------ */ const questionArray = []; // questions from local storage to use when testing, if we hit API limit @@ -95,25 +96,30 @@ const insertQuestionsAndAnswers = (array, index) => { /* ------ EVENT LISTENER ------ */ document.addEventListener("DOMContentLoaded", () => __awaiter(void 0, void 0, void 0, function* () { yield fetchQuizAPI(); - yield fetchScores(); + if (document.getElementById("score-list")) + fetchScores(); })); -/* ------ Logic to collect player pref and redirect to quiz.html ------ */ -// document.getElementById("startBtn")?.addEventListener("click", () => { -// const category = parseInt((document?.getElementById("category")! as HTMLSelectElement).value); -// const difficulty = ((document?.getElementById("difficulty")! as HTMLSelectElement).value).toLowerCase(); -// const player = (document?.getElementById("player-name")! as HTMLSelectElement).value; -// //fix this one to pick up real value -// const amount = parseInt("20"); -// // save the inputs from the user's filter options to local storage -// localStorage.setItem("quizSettings", JSON.stringify({ -// category, -// difficulty, -// amount, -// player -// })); -// // navigate to quiz page -// window.location.href = "quiz.html"; -// }); +(_a = document.getElementById("finishBtn")) === null || _a === void 0 ? void 0 : _a.addEventListener("click", () => __awaiter(void 0, void 0, void 0, function* () { + const player = JSON.parse(localStorage.getItem("quizSettings")).player; + yield postScore(player); + window.location.href = "scoreboard.html"; +})); +(_b = document.getElementById("startBtn")) === null || _b === void 0 ? void 0 : _b.addEventListener("click", () => { + const category = parseInt((document === null || document === void 0 ? void 0 : document.getElementById("category")).value); + const difficulty = ((document === null || document === void 0 ? void 0 : document.getElementById("difficulty")).value).toLowerCase(); + const player = (document === null || document === void 0 ? void 0 : document.getElementById("player-name")).value; + //fix this one to pick up real value + const amount = parseInt("20"); + // save the inputs from the user's filter options to local storage + localStorage.setItem("quizSettings", JSON.stringify({ + category, + difficulty, + amount, + player + })); + // navigate to quiz page + window.location.href = "quiz.html"; +}); /* ------ Fetch scores ------ */ const SCORE_API_URL = `https://postgres.daniellauding.se/quiz_scores`; const fetchScores = () => __awaiter(void 0, void 0, void 0, function* () { @@ -137,9 +143,9 @@ const fetchScores = () => __awaiter(void 0, void 0, void 0, function* () { ${i + 1} ${player.username} ${player.score} - CATEGORY + ${player.category} Amount - Difficulty + ${player.difficulty} `).join(""); document.getElementById("score-list").innerHTML = html; @@ -151,63 +157,58 @@ const fetchScores = () => __awaiter(void 0, void 0, void 0, function* () { }); /* ------ Post scores ------ */ // async function postScore(username, score) { -function postScore(username) { - return __awaiter(this, void 0, void 0, function* () { - console.log("Posting new to scoreboard:", username); - const response = yield fetch(SCORE_API_URL, { - method: "POST", - headers: { "Content-Type": "application/json" }, - // body: JSON.stringify({ username, score }) - body: JSON.stringify({ username, score: 0 }) - }); - if (!response.ok) - throw new Error(`Server error: ${response.status}`); - try { - const result = yield response.json(); - console.log("โœ… Posted successfully:", result); - return result; - } - catch (_a) { - console.warn("โš ๏ธ Server returned no JSON body"); - return {}; - } +const postScore = (username, category, difficulty, amount) => __awaiter(void 0, void 0, void 0, function* () { + console.log("Posting new to scoreboard:", username); + const response = yield fetch(SCORE_API_URL, { + method: "POST", + headers: { "Content-Type": "application/json" }, + // body: JSON.stringify({ username, score }) + body: JSON.stringify({ + username, + score: 0, + category: String(category), + difficulty: difficulty.toLowerCase(), + amount, + }) }); -} -const quizForm = document.getElementById("quiz-form"); -if (quizForm) { - quizForm.addEventListener("submit", (e) => __awaiter(void 0, void 0, void 0, function* () { - e.preventDefault(); - console.log("๐ŸŽฏ Form submitted"); - // const score = Number(document.getElementById("player-score").value); - const name = document.getElementById("player-name").value.trim(); - const category = parseInt(document.getElementById("category").value); - const difficulty = document.getElementById("difficulty").value.toLowerCase(); - const amount = 20; - // if (!name || isNaN(score)) { - if (!name) { - alert("Write a name!"); - return; - } - try { - const existing = yield fetch(SCORE_API_URL).then(r => r.json()); - const alreadyExists = existing.some(p => p.username.toLowerCase() === name.toLowerCase()); - if (alreadyExists) { - alert("That name already exists! Try another or add a number ๐Ÿ˜Š"); - return; - } - // await postScore(name, score); - localStorage.setItem("quizSettings", JSON.stringify({ category, difficulty, amount, player: name })); - yield postScore(name); - // alert("Score added!"); - // await fetchScores(); // uppdatera listan - console.log("โœ… Score posted, now redirecting..."); - window.location.href = "quiz.html"; // move only AFTER postScore - } - catch (error) { - console.error("Error:", error); - // alert("Something went wrong ๐Ÿ˜ข"); - } - })); -} + if (!response.ok) + throw new Error(`Server error: ${response.status}`); + try { + const result = yield response.json(); + console.log("โœ… Posted successfully:", result); + return result; + } + catch (_a) { + console.warn("โš ๏ธ Server returned no JSON body"); + return {}; + } +}); +(_c = document.getElementById("finishBtn")) === null || _c === void 0 ? void 0 : _c.addEventListener("click", () => __awaiter(void 0, void 0, void 0, function* () { + console.log("Finish button clicked"); + const stored = localStorage.getItem("quizSettings"); + if (!stored) { + alert("โš ๏ธ No player data found. Start a quiz first!"); + return; + } + const { player, category, difficulty, amount } = JSON.parse(stored); + if (!player) { + alert("โš ๏ธ No player name found in local storage."); + return; + } + try { + console.log("๐Ÿ“ค Posting score for:", player); + // Example: here you could calculate score from quiz results + const score = 0; + yield postScore(player, category, difficulty, amount); + console.log("โœ… Score posted successfully!"); + // Optional: clear data or redirect + // localStorage.removeItem("quizSettings"); + window.location.href = "scoreboard.html"; + } + catch (error) { + console.error("โŒ Error posting score:", error); + alert("Something went wrong while saving your score."); + } +})); // TO DO: add an event listener on "Start game" button that triggers the function that inserts questions and answers from the first object in the questionArray //# sourceMappingURL=script.js.map \ No newline at end of file diff --git a/dist/script.js.map b/dist/script.js.map index e00f584..d6b89fe 100644 --- a/dist/script.js.map +++ b/dist/script.js.map @@ -1 +1 @@ -{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"script.js","sourceRoot":"","sources":["../src/script.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/index.html b/index.html index cd2dcef..2b02bda 100644 --- a/index.html +++ b/index.html @@ -42,7 +42,7 @@

    Welcome to QUIZ BONANZAAA!

    Choose your quiz

    -
    +
    @@ -125,8 +125,8 @@

    Choose your quiz

    -
    +
    diff --git a/quiz.html b/quiz.html index 1115382..c40a713 100644 --- a/quiz.html +++ b/quiz.html @@ -45,6 +45,9 @@