commit a037109cc70472d0b58fb01d4a3b793a9a9a80b6
parent bcbb1256b224a10118602dbffec562d30377b949
Author: AsherMorgan <59518073+AsherMorgan@users.noreply.github.com>
Date: Sun, 31 May 2020 12:58:47 -0700
Merge pull request #9 from AsherMorgan/feature-resume-session
Store progress between sessions.
Diffstat:
4 files changed, 44 insertions(+), 2 deletions(-)
diff --git a/Scripts/Quizzer.js b/Scripts/Quizzer.js
@@ -31,6 +31,9 @@ function Start() {
return;
}
+ // Save terms to local storage
+ localStorage.setItem("terms", JSON.stringify(Terms));
+
// Configure prompt audio
if (document.getElementById("settingsPromptType").value != "Text") {
document.getElementById("quizzerPrompt").classList.add("audio");
@@ -55,6 +58,42 @@ function Start() {
+// Resume the previous session
+function Resume() {
+ // Load terms and progress
+ Terms = JSON.parse(localStorage.getItem("terms"));
+ Term = parseInt(localStorage.getItem("term")) - 1;
+
+ // Validate Terms
+ if (!Terms || Terms.length == 0 || !Term || Term < 0 || Term > Terms.length) {
+ document.getElementById("settingsError").textContent = "An error occured while resuming the previous session.";
+ document.getElementById("settingsError").scrollIntoView(false);
+ return;
+ }
+
+ // Configure prompt audio
+ if (document.getElementById("settingsPromptType").value != "Text") {
+ document.getElementById("quizzerPrompt").classList.add("audio");
+
+ // Give iOS devices ringer warning
+ if (!!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform)) {
+ alert("Please make sure your ringer is on in order to hear audio prompts.");
+ }
+ }
+ else {
+ document.getElementById("quizzerPrompt").classList.remove("audio");
+ }
+
+ // Show and hide elements
+ document.getElementById("settings").hidden = true;
+ document.getElementById("quizzer").hidden = false;
+
+ // Give the user a prompt
+ Reset();
+}
+
+
+
// Filters a vocabulary set given the filter name
function ApplyFilter(vocabSet, name) {
// Declare variables
@@ -244,6 +283,9 @@ function Reset() {
document.getElementById("quizzerFeedback").hidden = false;
}
+ // Save progress to local storage
+ localStorage.setItem("term", Term);
+
// Update progress
document.getElementById("quizzerProgress").textContent = `${Term} / ${Terms.length}`;
diff --git a/Scripts/Settings.js b/Scripts/Settings.js
@@ -272,7 +272,6 @@ function settingsSetChanged(setName) {
// Update local storage
function UpdateLocalStorage() {
- localStorage.clear();
localStorage.setItem("darkMode", document.getElementById("settingsDarkMode").checked);
localStorage.setItem("PromptType", document.getElementById("settingsPromptType").value);
localStorage.setItem("repeatPrompt", document.getElementById("settingsRepeatPrompts").value);
diff --git a/Styles/Settings.css b/Styles/Settings.css
@@ -35,7 +35,7 @@ h3 {
cursor: pointer;
}
-#settingsStart {
+#settingsStart, #settingsResume {
margin-top: 15px;
margin-bottom: 5px;
width: 75px;
diff --git a/index.html b/index.html
@@ -98,6 +98,7 @@
<div class="centered">
<button id="settingsStart" onclick="Start()">Start</button>
+ <button id="settingsResume" onclick="Resume()">Resume</button>
</div>
<div id="settingsError" class="centered bad"></div>