diff --git a/frontend/src/metabase-lib/lib/Question.ts b/frontend/src/metabase-lib/lib/Question.ts index c3ea76190056e18b95ae72d41a7f72288ce1fbd9..a32d4ff42d08a34a9560f393d4d858daa02d2389 100644 --- a/frontend/src/metabase-lib/lib/Question.ts +++ b/frontend/src/metabase-lib/lib/Question.ts @@ -33,7 +33,7 @@ import { } from "metabase/lib/dataset"; import { isTransientId } from "metabase/meta/Card"; import { - getValueAndFieldIdPopulatedParametersFromCard, + getCardUiParameters, remapParameterValuesToTemplateTags, } from "metabase/parameters/utils/cards"; import { fieldFilterParameterToMBQLFilter } from "metabase/parameters/utils/mbql"; @@ -1161,7 +1161,7 @@ class QuestionInner { // TODO: Fix incorrect Flow signature parameters(): ParameterObject[] { - return getValueAndFieldIdPopulatedParametersFromCard( + return getCardUiParameters( this.card(), this.metadata(), this._parameterValues, diff --git a/frontend/src/metabase/parameters/utils/cards.ts b/frontend/src/metabase/parameters/utils/cards.ts index feeadb84f68ecf21da9517be8d64bcba0a31492d..c9982bf55d0df28e4fc1958eaf8f0b264ce5ffd9 100644 --- a/frontend/src/metabase/parameters/utils/cards.ts +++ b/frontend/src/metabase/parameters/utils/cards.ts @@ -10,7 +10,7 @@ import { getValuePopulatedParameters, hasParameterValue, } from "metabase/parameters/utils/parameter-values"; -import { ParameterWithTarget } from "metabase/parameters/types"; +import { ParameterWithTarget, UiParameter } from "metabase/parameters/types"; import { Parameter, ParameterTarget } from "metabase-types/types/Parameter"; import { Card } from "metabase-types/types/Card"; import { TemplateTag } from "metabase-types/types/Query"; @@ -89,12 +89,12 @@ export function getParametersFromCard( return getTemplateTagParameters(tags); } -export function getValueAndFieldIdPopulatedParametersFromCard( +export function getCardUiParameters( card: Card, metadata: Metadata, parameterValues: { [key: string]: any } = {}, parameters = getParametersFromCard(card), -) { +): UiParameter[] { if (!card) { return []; } @@ -109,12 +109,15 @@ export function getValueAndFieldIdPopulatedParametersFromCard( | ParameterTarget | undefined = (parameter as ParameterWithTarget).target; const field = getParameterTargetField(target, metadata, question); - return { - ...parameter, - fields: field == null ? [] : [field], - field_id: field?.id, - hasOnlyFieldTargets: field != null, - }; + if (field) { + return { + ...parameter, + fields: [field], + hasOnlyFieldTargets: true, + }; + } + + return { ...parameter }; }); } diff --git a/frontend/src/metabase/public/containers/PublicQuestion.jsx b/frontend/src/metabase/public/containers/PublicQuestion.jsx index 129bdaac12ee3cf5fb5741b74400501dbafc559c..4df96df9d53c36de065776b9fe939874ba9672f7 100644 --- a/frontend/src/metabase/public/containers/PublicQuestion.jsx +++ b/frontend/src/metabase/public/containers/PublicQuestion.jsx @@ -16,8 +16,8 @@ import { } from "metabase/parameters/utils/parameter-values"; import { applyParameters } from "metabase/meta/Card"; import { - getValueAndFieldIdPopulatedParametersFromCard, getParametersFromCard, + getCardUiParameters, } from "metabase/parameters/utils/cards"; import { @@ -88,7 +88,7 @@ class PublicQuestion extends Component { this.props.addFields(card.param_fields); } - const parameters = getValueAndFieldIdPopulatedParametersFromCard( + const parameters = getCardUiParameters( card, metadata, {}, @@ -190,12 +190,7 @@ class PublicQuestion extends Component { const parameters = card && - getValueAndFieldIdPopulatedParametersFromCard( - card, - metadata, - {}, - card.parameters || undefined, - ); + getCardUiParameters(card, metadata, {}, card.parameters || undefined); return ( <EmbedFrame diff --git a/frontend/src/metabase/query_builder/actions/core/parameterUtils.ts b/frontend/src/metabase/query_builder/actions/core/parameterUtils.ts index 42ca4ee48b41d4298c314a8ff1d28fb1bbdfce3c..f284fe30d8cd589adb91c9cb428a7b37c520ddb4 100644 --- a/frontend/src/metabase/query_builder/actions/core/parameterUtils.ts +++ b/frontend/src/metabase/query_builder/actions/core/parameterUtils.ts @@ -7,7 +7,7 @@ import { DashboardApi } from "metabase/services"; import { setErrorPage } from "metabase/redux/app"; import { getMetadata } from "metabase/selectors/metadata"; -import { getValueAndFieldIdPopulatedParametersFromCard } from "metabase/parameters/utils/cards"; +import { getCardUiParameters } from "metabase/parameters/utils/cards"; import { hasMatchingParameters } from "metabase/parameters/utils/dashboards"; import { getParameterValuesByIdFromQueryParams } from "metabase/parameters/utils/parameter-values"; @@ -100,10 +100,7 @@ export function getParameterValuesForQuestion({ queryParams?: QueryParams; metadata: Metadata; }) { - const parameters = getValueAndFieldIdPopulatedParametersFromCard( - card, - metadata, - ); + const parameters = getCardUiParameters(card, metadata); return getParameterValuesByIdFromQueryParams( parameters, queryParams, diff --git a/frontend/src/metabase/query_builder/containers/QuestionEmbedWidget.jsx b/frontend/src/metabase/query_builder/containers/QuestionEmbedWidget.jsx index ebfe6eb45465ed1905459cf5d7bef3b83d698956..4bffa93bd15c6ea5e1110f0ac68ad5cc4cf6f0bc 100644 --- a/frontend/src/metabase/query_builder/containers/QuestionEmbedWidget.jsx +++ b/frontend/src/metabase/query_builder/containers/QuestionEmbedWidget.jsx @@ -11,7 +11,7 @@ import EmbedModalContent from "metabase/public/components/widgets/EmbedModalCont import * as Urls from "metabase/lib/urls"; import MetabaseSettings from "metabase/lib/settings"; import * as MetabaseAnalytics from "metabase/lib/analytics"; -import { getValueAndFieldIdPopulatedParametersFromCard } from "metabase/parameters/utils/cards"; +import { getCardUiParameters } from "metabase/parameters/utils/cards"; import { getMetadata } from "metabase/selectors/metadata"; import { @@ -64,10 +64,7 @@ class QuestionEmbedWidget extends Component { className={className} resource={card} resourceType="question" - resourceParameters={getValueAndFieldIdPopulatedParametersFromCard( - card, - metadata, - )} + resourceParameters={getCardUiParameters(card, metadata)} onCreatePublicLink={() => createPublicLink(card)} onDisablePublicLink={() => deletePublicLink(card)} onUpdateEnableEmbedding={enableEmbedding => diff --git a/frontend/src/metabase/query_builder/selectors.js b/frontend/src/metabase/query_builder/selectors.js index 7c7b6b7b8bea3eac0bce8a84a69823273345c4e7..d9de10bd0fe9e2b70d97baa4bf45eae333813154 100644 --- a/frontend/src/metabase/query_builder/selectors.js +++ b/frontend/src/metabase/query_builder/selectors.js @@ -12,7 +12,7 @@ import { getVisualizationTransformed, } from "metabase/visualizations"; import { getComputedSettingsForSeries } from "metabase/visualizations/lib/settings/visualization"; -import { getValueAndFieldIdPopulatedParametersFromCard } from "metabase/parameters/utils/cards"; +import { getCardUiParameters } from "metabase/parameters/utils/cards"; import { normalizeParameterValue } from "metabase/parameters/utils/parameter-values"; import { isPK } from "metabase/lib/schema_metadata"; import Utils from "metabase/lib/utils"; @@ -237,11 +237,7 @@ export const getDatabaseFields = createSelector( export const getParameters = createSelector( [getCard, getMetadata, getParameterValues], (card, metadata, parameterValues) => - getValueAndFieldIdPopulatedParametersFromCard( - card, - metadata, - parameterValues, - ), + getCardUiParameters(card, metadata, parameterValues), ); const getLastRunDatasetQuery = createSelector( diff --git a/frontend/test/metabase-lib/lib/Question.unit.spec.js b/frontend/test/metabase-lib/lib/Question.unit.spec.js index a6b88009cef0dafcb92eeb74cf248144a0aae5c8..3530aa4d13a8cf9aa8344c0eee8a260165288d77 100644 --- a/frontend/test/metabase-lib/lib/Question.unit.spec.js +++ b/frontend/test/metabase-lib/lib/Question.unit.spec.js @@ -1067,7 +1067,6 @@ describe("Question", () => { expect(question.parameters()).toEqual([ { default: undefined, - field_id: 1, fields: [ { id: 1, @@ -1082,9 +1081,6 @@ describe("Question", () => { }, { default: undefined, - field_id: undefined, - fields: [], - hasOnlyFieldTargets: false, id: "aaa", name: "Bar", slug: "bar", @@ -1122,16 +1118,12 @@ describe("Question", () => { target: ["dimension", ["field", 1, null]], value: "abc", fields: [{ id: 1 }], - field_id: 1, hasOnlyFieldTargets: true, }, { type: "category", name: "bar", id: "bar_id", - fields: [], - field_id: undefined, - hasOnlyFieldTargets: false, }, ]); });