Skip to content

Commit

Permalink
Merge pull request #13973 from guerler/add_any_001
Browse files Browse the repository at this point in the history
Allow any as value for boolean default parameters in filter text
  • Loading branch information
dannon authored Jan 17, 2023
2 parents 2c65d8e + 5832d85 commit a01d0a4
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 },
],
Expand All @@ -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;
Expand Down
9 changes: 9 additions & 0 deletions client/src/utils/filtering.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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], "name", "name of item")).toBe(true);
expect(HistoryFilters.checkFilter(filterTexts[0], "tag", "first")).toBe(true);
Expand Down
11 changes: 7 additions & 4 deletions client/src/utils/filtering.ts
Original file line number Diff line number Diff line change
Expand Up @@ -266,12 +266,15 @@ export default class Filtering<T> {
}
// 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 };
Expand Down

0 comments on commit a01d0a4

Please sign in to comment.