From 3c554cc47abdb54f43448f30f5fdbcd0483c350e Mon Sep 17 00:00:00 2001 From: guerler Date: Sun, 15 Jan 2023 17:52:37 -0500 Subject: [PATCH 1/2] Allow any for default parameters --- .../HistoryFilters/HistoryFiltersDefault.vue | 4 ++-- client/src/utils/filtering.ts | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/client/src/components/History/CurrentHistory/HistoryFilters/HistoryFiltersDefault.vue b/client/src/components/History/CurrentHistory/HistoryFilters/HistoryFiltersDefault.vue index 4a2adf8e6f00..4eed0b96ab6a 100644 --- a/client/src/components/History/CurrentHistory/HistoryFilters/HistoryFiltersDefault.vue +++ b/client/src/components/History/CurrentHistory/HistoryFilters/HistoryFiltersDefault.vue @@ -19,7 +19,7 @@ export default { data() { return { options: [ - { text: "Any", value: null }, + { text: "Any", value: "any" }, { text: "Yes", value: true }, { text: "No", value: false }, ], @@ -46,7 +46,7 @@ export default { methods: { getValue(name) { const value = this.settings[`${name}:`]; - return value !== undefined ? value : null; + return value !== undefined ? value : "any"; }, onChange(name, value) { value = value !== null ? value : undefined; diff --git a/client/src/utils/filtering.ts b/client/src/utils/filtering.ts index 616bd3a38581..aa0bec25527e 100644 --- a/client/src/utils/filtering.ts +++ b/client/src/utils/filtering.ts @@ -250,12 +250,15 @@ export default class Filtering { } // check if any default filter keys have been used let hasDefaults = false; - for (const defaultKey in this.defaultFilters) { - if (result[defaultKey]) { + Object.keys(this.defaultFilters).forEach((defaultKey) => { + const value = result[defaultKey]; + if (value !== undefined) { + if (value == "any") { + delete result[defaultKey]; + } hasDefaults = true; - break; } - } + }); // use default filters if none of the default filters has been explicitly specified if (!hasDefaults && this.useDefaultFilters) { result = { ...result, ...this.defaultFilters }; From 5832d85652ab1163bc659648b242266e4d520151 Mon Sep 17 00:00:00 2001 From: guerler Date: Sun, 15 Jan 2023 18:11:32 -0500 Subject: [PATCH 2/2] Add test to verify that any is only stripped for default parameters --- client/src/utils/filtering.test.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/client/src/utils/filtering.test.js b/client/src/utils/filtering.test.js index b7f877a9ab02..ef18109a935d 100644 --- a/client/src/utils/filtering.test.js +++ b/client/src/utils/filtering.test.js @@ -28,6 +28,15 @@ describe("filtering", () => { const queryDict = HistoryFilters.getQueryDict("name of item"); expect(queryDict["name-contains"]).toBe("name of item"); }); + test("parse any for default parameters", () => { + const filters = HistoryFilters.getFilters("deleted:any"); + expect(filters.length).toBe(0); + const queryDict = HistoryFilters.getQueryDict("deleted:any"); + expect(Object.keys(queryDict).length).toBe(0); + const filtersAny = HistoryFilters.getFilters("name:any"); + expect(filtersAny[0][0]).toBe("name"); + expect(filtersAny[0][1]).toBe("any"); + }); test("parse check filter", () => { expect(HistoryFilters.checkFilter(filterTexts[0], "tag", "first")).toBe(true); expect(HistoryFilters.checkFilter(filterTexts[0], "tag", "second")).toBe(false);