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:
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([]);
});
});