feat: replace opposing filter

This commit is contained in:
Mårten Svantesson
2022-10-27 09:27:56 +02:00
committed by Łukasz Mierzwa
parent 9a6a5c1a50
commit ef3a8a5a5c
6 changed files with 32 additions and 14 deletions

View File

@@ -22,9 +22,10 @@ const FilterInputLabel: FC<{
// if filter is empty string then remove it
if (val === "") {
alertStore.filters.removeFilter(filter.raw);
} else {
// if not empty replace it
alertStore.filters.replaceFilter(filter.raw, val);
}
// if not empty replace it
alertStore.filters.replaceFilter(filter.raw, val);
};
const cs = GetClassAndStyle(

View File

@@ -38,15 +38,20 @@ const FilteringCounterBadge: FC<{
(event: MouseEvent) => {
// left click => apply foo=bar filter
// left click + alt => apply foo!=bar filter
const operator =
event.altKey === true ? QueryOperators.NotEqual : QueryOperators.Equal;
let operators = [QueryOperators.Equal, QueryOperators.NotEqual];
if (event.altKey) {
operators = operators.reverse();
}
event.preventDefault();
if (isAppend) {
alertStore.filters.addFilter(FormatQuery(name, operator, value));
alertStore.filters.replaceFilter(
FormatQuery(name, operators[1], value),
FormatQuery(name, operators[0], value)
);
} else {
alertStore.filters.setFilters([FormatQuery(name, operator, value)]);
alertStore.filters.setFilters([FormatQuery(name, operators[0], value)]);
}
},
[alertStore.filters, name, value, isAppend]

View File

@@ -27,10 +27,15 @@ const FilteringLabel: FC<{
return;
}
const operator =
event.altKey === true ? QueryOperators.NotEqual : QueryOperators.Equal;
let operators = [QueryOperators.Equal, QueryOperators.NotEqual];
if (event.altKey) {
operators = operators.reverse();
}
alertStore.filters.addFilter(FormatQuery(name, operator, value));
alertStore.filters.replaceFilter(
FormatQuery(name, operators[1], value),
FormatQuery(name, operators[0], value)
);
},
[alertStore.filters, name, value]
);

View File

@@ -22,12 +22,17 @@ const LabelWithPercent: FC<{
(event: MouseEvent) => {
// left click => apply foo=bar filter
// left click + alt => apply foo!=bar filter
const operator =
event.altKey === true ? QueryOperators.NotEqual : QueryOperators.Equal;
let operators = [QueryOperators.Equal, QueryOperators.NotEqual];
if (event.altKey) {
operators = operators.reverse();
}
event.preventDefault();
alertStore.filters.addFilter(FormatQuery(name, operator, value));
alertStore.filters.replaceFilter(
FormatQuery(name, operators[1], value),
FormatQuery(name, operators[0], value)
);
},
[alertStore.filters, name, value]
);

View File

@@ -225,10 +225,10 @@ describe("AlertStore.filters", () => {
expect(store.filters.values[0]).toMatchObject(NewUnappliedFilter("bar"));
});
it("replaceFilter('foo', 'bar') should not replace anything if filter list is empty", () => {
it("replaceFilter('foo', 'bar') should add 'bar' in empty list", () => {
const store = new AlertStore([]);
store.filters.replaceFilter("foo", "bar");
expect(store.filters.values).toHaveLength(0);
expect(store.filters.values).toHaveLength(1);
});
it("replaceFilter('foo', 'new') should replace correct filter", () => {

View File

@@ -249,6 +249,8 @@ class AlertStore {
this.values[index] = NewUnappliedFilter(newRaw);
UpdateLocationSearch({ q: this.values.map((f) => f.raw) });
}
} else {
this.addFilter(newRaw);
}
},
setFilters(raws: string[]) {