diff --git a/frontend/src/metabase/dashboard/selectors.js b/frontend/src/metabase/dashboard/selectors.js index 79d8462662e2ddbe412e245e571aece640477bdd..4c206c0385960581ca349949e589afa2cdf25420 100644 --- a/frontend/src/metabase/dashboard/selectors.js +++ b/frontend/src/metabase/dashboard/selectors.js @@ -133,7 +133,7 @@ export const getParameterTarget = createSelector( } const mapping = _.findWhere(dashcard.parameter_mappings, { parameter_id: parameter.id, - ...(card & card.id && { card_id: card.id }), + ...(card && card.id && { card_id: card.id }), }); return mapping && mapping.target; }, diff --git a/frontend/test/metabase/scenarios/dashboard-filters/reproductions/25355-multi-series-parameter-mapping.cy.spec.js b/frontend/test/metabase/scenarios/dashboard-filters/reproductions/25355-multi-series-parameter-mapping.cy.spec.js new file mode 100644 index 0000000000000000000000000000000000000000..5039c60b04ef98a2a6dc0690edacabf4181a0dc7 --- /dev/null +++ b/frontend/test/metabase/scenarios/dashboard-filters/reproductions/25355-multi-series-parameter-mapping.cy.spec.js @@ -0,0 +1,83 @@ +import { + editDashboard, + popover, + restore, + visitDashboard, +} from "__support__/e2e/helpers"; +import { SAMPLE_DATABASE } from "__support__/e2e/cypress_sample_database"; + +const { ORDERS, ORDERS_ID } = SAMPLE_DATABASE; + +const question1Details = { + name: "Q1", + display: "line", + query: { + "source-table": ORDERS_ID, + aggregation: [["count"]], + breakout: [["field", ORDERS.CREATED_AT, { "temporal-unit": "month" }]], + }, + visualization_settings: { + "graph.metrics": ["count"], + "graph.dimensions": ["CREATED_AT"], + }, +}; + +const question2Details = { + name: "Q2", + display: "line", + query: { + "source-table": ORDERS_ID, + aggregation: [["count"], ["avg", ["field", ORDERS.TOTAL, null]]], + breakout: [["field", ORDERS.CREATED_AT, { "temporal-unit": "month" }]], + }, + visualization_settings: { + "graph.metrics": ["avg"], + "graph.dimensions": ["CREATED_AT"], + }, +}; + +const parameterDetails = { + name: "Date Filter", + slug: "date_filter", + id: "888188ad", + type: "date/all-options", + sectionId: "date", +}; + +const dashboardDetails = { + name: "25248", + parameters: [parameterDetails], +}; + +describe("issue 25248", () => { + beforeEach(() => { + restore(); + cy.signInAsAdmin(); + }); + + it("should allow mapping parameters to combined cards individually (metabase#25248)", () => { + createDashboard(); + editDashboard(); + + cy.findByText(parameterDetails.name).click(); + cy.findAllByText("Select…").first().click(); + popover().findAllByText("Created At").first().click(); + + cy.findByText("Order.Created At").should("be.visible"); + cy.findByText("Select…").should("be.visible"); + }); +}); + +const createDashboard = () => { + cy.createQuestionAndDashboard({ + questionDetails: question1Details, + dashboardDetails, + }).then(({ body: { id, card_id, dashboard_id } }) => { + cy.createQuestion(question2Details).then(({ body: { id: card_2_id } }) => { + cy.request("PUT", `/api/dashboard/${dashboard_id}/cards`, { + cards: [{ id, card_id, series: [{ id: card_2_id }] }], + }); + }); + visitDashboard(dashboard_id); + }); +};