spanish-quizzer

An app to quiz you on Spanish vocabulary and verb conjugations
git clone https://git.ashermorgan.net/spanish-quizzer/
Log | Files | Refs | README

commit 6b88fddff294c45c429075f053b7c9ed1a70764b
parent ba70e836baaef572929508b42f32fba34c367c9f
Author: AsherMorgan <59518073+AsherMorgan@users.noreply.github.com>
Date:   Thu, 26 Nov 2020 20:35:53 -0800

Implement "All Sets" vocab filter.

Diffstat:
Mjs/settings.js | 35++++++++++++++++++++++++++++++-----
Mtests/test.settings.js | 19++++++++-----------
2 files changed, 38 insertions(+), 16 deletions(-)

diff --git a/js/settings.js b/js/settings.js @@ -31,7 +31,7 @@ let settings = Vue.component("settings", { this.verbFilters.push({tense:"All Tenses", type:"All Types", subject:"All Subjects", direction:"Eng. → Conj."}); } else if (this.category === "vocab") { - this.vocabFilters.push({set:"Verbs", type:"All Types", direction:"Eng. ↔ Esp."}); + this.vocabFilters.push({set:"All Sets", type:"All Types", direction:"Eng. ↔ Esp."}); } }, @@ -377,6 +377,7 @@ let settings = Vue.component("settings", { <div v-for="(filter, index) in vocabFilters" class="filter"> <select class="vocabSetName" v-model="filter.set"> + <option>All Sets</option> <optgroup label="Common Words"> <option>Verbs</option> <option>Adjectives</option> @@ -488,18 +489,42 @@ let settings = Vue.component("settings", { * @returns {Array} The io-filters. */ function GetVocabFilters(rawFilters) { - // Expand "All directions" filters + // Expand "All Sets" filters let filters = []; // Format: [{set:"vocab set name", tense:"specific tense", subject:"specific subject", type:"regex"}] for (let filter of rawFilters) { - if (filter.direction === "Eng. ↔ Esp.") { - filters.push({set:filter.set, type: filter.type, direction:"Eng. → Esp."}); - filters.push({set:filter.set, type: filter.type, direction:"Esp. → Eng."}); + if (filter.set === "All Sets") { + filters.push({set:"Verbs", type: filter.type, direction:filter.direction}); + filters.push({set:"Adjectives", type: filter.type, direction:filter.direction}); + filters.push({set:"Adverbs", type: filter.type, direction:filter.direction}); + filters.push({set:"Prepositions", type: filter.type, direction:filter.direction}); + filters.push({set:"Transitions", type: filter.type, direction:filter.direction}); + filters.push({set:"Colors", type: filter.type, direction:filter.direction}); + filters.push({set:"Days", type: filter.type, direction:filter.direction}); + filters.push({set:"Months", type: filter.type, direction:filter.direction}); + filters.push({set:"Questions", type: filter.type, direction:filter.direction}); + filters.push({set:"Weather", type: filter.type, direction:filter.direction}); + filters.push({set:"Family", type: filter.type, direction:filter.direction}); + filters.push({set:"Clothes", type: filter.type, direction:filter.direction}); + filters.push({set:"Nature", type: filter.type, direction:filter.direction}); + filters.push({set:"House", type: filter.type, direction:filter.direction}); + filters.push({set:"Vacation", type: filter.type, direction:filter.direction}); + filters.push({set:"Childhood", type: filter.type, direction:filter.direction}); + filters.push({set:"Professions", type: filter.type, direction:filter.direction}); + filters.push({set:"Health", type: filter.type, direction:filter.direction}); } else { filters.push({set:filter.set, type: filter.type, direction:filter.direction}); } } + // Expand "All directions" filters + for (let filter of filters) { + if (filter.direction === "Eng. ↔ Esp.") { + filter.direction = "Eng. → Esp."; + filters.push({set:filter.set, type: filter.type, direction:"Esp. → Eng."}); + } + } + // Get type regex filter for (let filter of filters) { switch (filter.type.toLowerCase()) { diff --git a/tests/test.settings.js b/tests/test.settings.js @@ -95,12 +95,10 @@ describe("Settings", function() { Settings.AddFilter(); // Assert filter added - expect(Settings.verbFilters.length).to.equal(1); - expect(Settings.verbFilters[0]["tense"]).to.equal("All Tenses"); - expect(Settings.verbFilters[0]["type"]).to.equal("All Types"); - expect(Settings.verbFilters[0]["subject"]).to.equal("All Subjects"); - expect(Settings.verbFilters[0]["direction"]).to.equal("Eng. → Conj."); - expect(Settings.vocabFilters.length).to.equal(0); + expect(Settings.verbFilters).to.have.deep.members([ + {tense:"All Tenses", type:"All Types", subject:"All Subjects", direction:"Eng. → Conj."}, + ]); + expect(Settings.vocabFilters).to.have.deep.members([]); }); it("Should add a vocab filter if category is 'vocab'", function() { @@ -113,11 +111,10 @@ describe("Settings", function() { Settings.AddFilter(); // Assert filter added - expect(Settings.vocabFilters.length).to.equal(1); - expect(Settings.vocabFilters[0]["set"]).to.equal("Verbs"); - expect(Settings.vocabFilters[0]["type"]).to.equal("All Types"); - expect(Settings.vocabFilters[0]["direction"]).to.equal("Eng. ↔ Esp."); - expect(Settings.verbFilters.length).to.equal(0); + expect(Settings.vocabFilters).to.have.deep.members([ + {set:"All Sets", type:"All Types", direction:"Eng. ↔ Esp."}, + ]); + expect(Settings.verbFilters).to.have.deep.members([]); }); });