commit d434c24e04d56ebbcd5fc62d433310cf4eb19449
parent 16717447a40ffc6ba0701f224f0d233b0b3e8b39
Author: AsherMorgan <59518073+AsherMorgan@users.noreply.github.com>
Date: Wed, 18 Nov 2020 08:42:03 -0800
Implement type subject filter.
Diffstat:
2 files changed, 47 insertions(+), 14 deletions(-)
diff --git a/js/settings.js b/js/settings.js
@@ -95,7 +95,7 @@ let settings = Vue.component("settings", {
*/
getTenseSubjects: function(index) {
// Set default filters
- let filters = {"All Subjects":true, "Yo":true, "Tú":true, "Él":true, "Nosotros":true, "Ellos":true}
+ let filters = {"All Subjects":true, "Type":true, "Yo":true, "Tú":true, "Él":true, "Nosotros":true, "Ellos":true}
if (this.verbFilters[index].tense === "Present Participles") {
// Override filters
@@ -104,8 +104,10 @@ let settings = Vue.component("settings", {
filters["Él"] = false;
filters["Nosotros"] = false;
filters["Ellos"] = false;
+ }
- // Reset subject
+ // Reset subject
+ if (this.verbFilters[index].tense === "Present Participles" && this.verbFilters[index].subject !== "Type") {
this.verbFilters[index].subject = "All Subjects";
}
@@ -618,11 +620,21 @@ function GetVerbFilters(rawFilters) {
switch (filter.tense) {
case "present participles":
filterIndex = 2;
- inputIndex = 3;
+ switch (filter.subject) {
+ case "type":
+ inputIndex = filterIndex;
+ break;
+ default:
+ inputIndex = 3;
+ break;
+ }
break;
case "present tense":
filterIndex = 4;
switch (filter.subject) {
+ case "type":
+ inputIndex = filterIndex;
+ break;
case "yo":
inputIndex = 5;
break;
@@ -645,6 +657,9 @@ function GetVerbFilters(rawFilters) {
case "preterite tense":
filterIndex = 10;
switch (filter.subject) {
+ case "type":
+ inputIndex = filterIndex;
+ break;
case "yo":
inputIndex = 11;
break;
@@ -667,6 +682,9 @@ function GetVerbFilters(rawFilters) {
case "imperfect tense":
filterIndex = 16;
switch (filter.subject) {
+ case "type":
+ inputIndex = filterIndex;
+ break;
case "yo":
inputIndex = 17;
break;
@@ -689,6 +707,9 @@ function GetVerbFilters(rawFilters) {
case "simple future tense":
filterIndex = 22;
switch (filter.subject) {
+ case "type":
+ inputIndex = filterIndex;
+ break;
case "yo":
inputIndex = 23;
break;
diff --git a/tests/test.settings.js b/tests/test.settings.js
@@ -316,22 +316,17 @@ describe("Settings", function() {
it("Should not change selection if available", function() {
// Initialize filters
Settings.verbFilters = [
- {"tense":"Preterite Tense", "subject":"Yo", "type":"All Types"}
+ {"tense":"Present Participles", "subject":"Type", "type":"All Types"},
+ {"tense":"Preterite Tense", "subject":"Yo", "type":"All Types"},
]
// Get filters
- let filters = Settings.getTenseSubjects(0);
-
- // Assert filters are correct
- expect(filters["All Subjects"]).to.equal(true);
- expect(filters["Yo"]).to.equal(true);
- expect(filters["Tú"]).to.equal(true);
- expect(filters["Él"]).to.equal(true);
- expect(filters["Nosotros"]).to.equal(true);
- expect(filters["Ellos"]).to.equal(true);
+ Settings.getTenseSubjects(0);
+ Settings.getTenseSubjects(1);
// Assert selection not changed
- expect(Settings.verbFilters[0]["subject"]).to.equal("Yo");
+ expect(Settings.verbFilters[0].subject).to.equal("Type");
+ expect(Settings.verbFilters[1].subject).to.equal("Yo");
});
});
@@ -905,6 +900,23 @@ describe("Settings", function() {
});
describe("Subject filters", function() {
+ it("Should correctly filter type subjects", function() {
+ // Initialize expected
+ let expected = [
+ {set:"Verbs", outputIndex:0, inputIndex:02, filterIndex:02, filterValue:".*"},
+ {set:"Verbs", outputIndex:0, inputIndex:04, filterIndex:04, filterValue:".*"},
+ {set:"Verbs", outputIndex:0, inputIndex:10, filterIndex:10, filterValue:".*"},
+ {set:"Verbs", outputIndex:0, inputIndex:16, filterIndex:16, filterValue:".*"},
+ {set:"Verbs", outputIndex:0, inputIndex:22, filterIndex:22, filterValue:".*"},
+ ];
+
+ // Filter verbs
+ let actual = GetVerbFilters([{tense:"all tenses", subject:"type", type:"all types", direction:"Eng. => Conj."}]);
+
+ // Assert filtered verbs are correct
+ expect(actual).to.have.deep.members(expected);
+ });
+
it("Should correctly filter yo subjects", function() {
// Initialize expected
let expected = [