Skip to content
Snippets Groups Projects
Unverified Commit 03ba557c authored by Alexander Polyankin's avatar Alexander Polyankin Committed by GitHub
Browse files

Fix updating filters in the filter header for multi-stage queries (#25228)

parent 152d9211
Branches
Tags
No related merge requests found
......@@ -84,7 +84,7 @@ export default function FilterPopover({
// if the underlying query changes (e.x. additional metadata is loaded) update the filter's query
useEffect(() => {
if (filter && previousQuery && query !== previousQuery) {
if (filter && filter.query() === previousQuery && query !== previousQuery) {
setFilter(filter.setQuery(query));
}
}, [query, previousQuery, filter]);
......@@ -146,8 +146,7 @@ export default function FilterPopover({
};
const handleFilterChange = (mbql: any[] = []) => {
const newFilter = new Filter(mbql, filter?.index(), query);
const newFilter = filter ? filter.set(mbql) : new Filter(mbql, null, query);
setFilter(newFilter);
};
......
import { restore } from "__support__/e2e/helpers";
import { SAMPLE_DATABASE } from "__support__/e2e/cypress_sample_database";
const { PRODUCTS, PRODUCTS_ID } = SAMPLE_DATABASE;
const questionDetails = {
query: {
"source-query": {
"source-table": PRODUCTS_ID,
filter: [
"and",
["=", ["field", PRODUCTS.CATEGORY, null], "Gadget", "Gizmo"],
[
"time-interval",
["field", PRODUCTS.CREATED_AT, null],
-30,
"year",
{
include_current: false,
},
],
],
aggregation: [["count"]],
breakout: [["field", PRODUCTS.CATEGORY, null]],
},
filter: [
">",
[
"field",
"count",
{
"base-type": "type/Integer",
},
],
0,
],
},
};
describe("issue 24994", () => {
beforeEach(() => {
restore();
cy.signInAsAdmin();
});
it("should allow updating filters (metabase#24994)", () => {
cy.createQuestion(questionDetails, { visitQuestion: true });
// Three filters
cy.findByTestId("filters-visibility-control").contains("3").click();
cy.findByText("Category is 2 selections").click();
assertFilterValueIsSelected("Gadget");
assertFilterValueIsSelected("Gizmo");
cy.findByText("Doohickey").click();
assertFilterValueIsSelected("Doohickey");
cy.button("Update filter").should("not.be.disabled").click();
cy.findByText("Category is 3 selections");
});
});
function assertFilterValueIsSelected(value) {
cy.findByTestId(`${value}-filter-value`).within(() =>
cy.get("input").should("be.checked"),
);
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment