From 2073e5b82885bc8af84182dff94f72a7c03b2d78 Mon Sep 17 00:00:00 2001 From: Matthew Grove Date: Sun, 30 Jan 2022 20:18:57 +0000 Subject: [PATCH] Enable answer count and [FIX] option copying Add option to display number of answers to current prompt and ensure test options get copied to new tests that are created at the end of an existing test (with the restart test/restart test with incorrect buttons) --- functions/index.js | 18 +++++++++++++++++- src/ClassicTestStart.js | 8 ++++++++ src/LivesTestStart.js | 8 ++++++++ src/LoggedInHome.js | 12 ++++++++++++ src/Progress.js | 35 +++++++++++++++++++++++++++++++++++ src/SetPage.js | 12 ++++++++++++ 6 files changed, 92 insertions(+), 1 deletion(-) diff --git a/functions/index.js b/functions/index.js index 8dfff8c..07f2854 100644 --- a/functions/index.js +++ b/functions/index.js @@ -167,6 +167,14 @@ exports.createProgress = functions.https.onCall((data, context) => { throw new functions.https.HttpsError("invalid-argument", "switch_language must be a boolean"); } + if (typeof data.ignoreCaps !== "boolean") { + throw new functions.https.HttpsError("invalid-argument", "ignoreCaps must be a boolean"); + } + + if (typeof data.showNumberOfAnswers !== "boolean") { + throw new functions.https.HttpsError("invalid-argument", "showNumberOfAnswers must be a boolean"); + } + if (data.mode !== "questions" && data.mode !== "lives") { throw new functions.https.HttpsError("invalid-argument", "mode must be \"questions\" or \"lives\""); } @@ -239,6 +247,7 @@ exports.createProgress = functions.https.onCall((data, context) => { set_titles: setIds.map((setId) => setTitlesDict[setId]), typo: false, ignoreCaps: data.ignoreCaps, + showNumberOfAnswers: data.showNumberOfAnswers, } return { @@ -263,10 +272,12 @@ exports.createProgress = functions.https.onCall((data, context) => { const terms = { "item": doc.data().term, "sound": doc.data().sound, + "numberOfAnswers": doc.data().definition.split("/").length, }; const definitions = { "item": doc.data().definition, "sound": doc.data().sound, + "numberOfAnswers": doc.data().term.split("/").length, }; data.dataToSet.questions.push(vocabId); @@ -345,6 +356,8 @@ exports.createProgressWithIncorrect = functions.https.onCall((data, context) => typo: false, setIds: progressData.setIds, set_titles: progressData.set_titles, + ignoreCaps: progressData.ignoreCaps, + showNumberOfAnswers: progressData.showNumberOfAnswers, }; if (progressData.mode === "lives") { dataToSet.lives = progressData.start_lives; @@ -607,6 +620,7 @@ exports.processAnswer = functions.https.onCall((data, context) => { totalCorrect: docData.correct.length, totalIncorrect: docData.incorrect.length, typo: false, + numberOfAnswers: progressDoc.data().showNumberOfAnswers === true ? 0 : null, } docData.typo = false; @@ -747,6 +761,7 @@ exports.processAnswer = functions.https.onCall((data, context) => { sound: sound, set_owner: nextSetOwner, } + returnData.numberOfAnswers = promptDoc.data().numberOfAnswers; transaction.set(progressDocId, docData); return returnData; }); @@ -771,7 +786,8 @@ exports.processAnswer = functions.https.onCall((data, context) => { item: promptDoc.data().item, sound: sound, set_owner: nextSetOwner, - } + }; + returnData.numberOfAnswers = promptDoc.data().numberOfAnswers; transaction.set(progressDocId, docData); return returnData; }); diff --git a/src/ClassicTestStart.js b/src/ClassicTestStart.js index f67b3df..4b4221d 100644 --- a/src/ClassicTestStart.js +++ b/src/ClassicTestStart.js @@ -70,6 +70,14 @@ export default function ClassicTestStart(props) { /> Ignore capitals +