From f0ad3c3e53363bbfd66dec231a6c0caa01c259e6 Mon Sep 17 00:00:00 2001 From: Dalton <daltojohnso@users.noreply.github.com> Date: Fri, 24 Dec 2021 07:10:59 -0800 Subject: [PATCH] fix lack of metadata in QB when coming from dashcard (#19471) --- .../src/metabase/query_builder/actions.js | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/frontend/src/metabase/query_builder/actions.js b/frontend/src/metabase/query_builder/actions.js index 95ef78a881a..5169cbf56f0 100644 --- a/frontend/src/metabase/query_builder/actions.js +++ b/frontend/src/metabase/query_builder/actions.js @@ -412,17 +412,31 @@ export const initializeQB = (location, params, queryParams) => { card.dashboardId = dashboardId; } } else if (card.original_card_id) { + const deserializedCard = card; // deserialized card contains the card id, so just populate originalCard originalCard = await loadCard(card.original_card_id); - if ( - cardIsEquivalent(card, originalCard, { checkParameters: false }) && - !cardIsEquivalent(card, originalCard, { checkParameters: true }) - ) { - // if the cards are equal except for parameters, copy over the id to undirty the card - card.id = originalCard.id; - } else if (cardIsEquivalent(card, originalCard)) { - // if the cards are equal then show the original + + if (cardIsEquivalent(deserializedCard, originalCard)) { card = Utils.copy(originalCard); + + if ( + !cardIsEquivalent(deserializedCard, originalCard, { + checkParameters: true, + }) + ) { + const metadata = getMetadata(getState()); + const { dashboardId, parameters } = deserializedCard; + verifyMatchingDashcardAndParameters({ + dispatch, + dashboardId, + cardId: card.id, + parameters, + metadata, + }); + + card.parameters = parameters; + card.dashboardId = dashboardId; + } } } // if this card has any snippet tags we might need to fetch snippets pending permissions -- GitLab