From 490925b1b55ab85f919044ba0bff640fd8694417 Mon Sep 17 00:00:00 2001 From: Dalton <daltojohnso@users.noreply.github.com> Date: Tue, 11 Oct 2022 10:00:25 -0400 Subject: [PATCH] Move some parameter utils to `metabase-lib` (#25863) * Move parameter target utils to metabase-lib * Move parameter-type utils to metabase-lib * Move parameter constants to metabase-lib * Use Parameter interface, not UiParameter type, in operator utils * Move operator utils to metabase-lib * Move filter utils to metabase-lib --- .../lib}/parameters/constants.ts | 0 .../lib}/parameters/utils/filters.js | 7 +++- .../parameters/utils/filters.unit.spec.js | 0 .../lib}/parameters/utils/operators.ts | 15 +++++--- .../parameters/utils/operators.unit.spec.ts | 0 .../lib/parameters/utils/parameter-type.ts | 36 ++++++++++++++++++ .../utils/parameter-type.unit.spec.js | 0 .../lib}/parameters/utils/targets.ts | 0 .../parameters/utils/targets.unit.spec.ts | 0 .../metabase-lib/lib/queries/utils/card.js | 2 +- .../DateRelativeWidget/DateRelativeWidget.tsx | 2 +- .../DashCardCardParameterMapper.jsx | 4 +- frontend/src/metabase/dashboard/utils.js | 2 +- frontend/src/metabase/lib/click-behavior.js | 4 +- .../FormattedParameterValue.tsx | 2 +- .../components/ParameterValueWidget.jsx | 16 ++++---- .../ParameterFieldWidget.jsx | 2 +- .../src/metabase/parameters/utils/cards.ts | 8 ++-- .../parameters/utils/dashboard-options.js | 4 +- .../metabase/parameters/utils/dashboards.ts | 8 ++-- .../parameters/utils/date-formatting.ts | 2 +- .../metabase/parameters/utils/formatting.ts | 3 +- .../parameters/utils/linked-filters.js | 4 +- .../parameters/utils/mapping-options.js | 3 +- .../src/metabase/parameters/utils/mbql.js | 9 +++-- .../parameters/utils/parameter-type.ts | 38 +------------------ .../parameters/utils/parameter-values.js | 2 +- .../parameters/utils/template-tag-options.js | 9 +++-- .../utils/template-tag-options.unit.spec.js | 2 +- frontend/src/metabase/parameters/utils/ui.ts | 4 +- 30 files changed, 101 insertions(+), 87 deletions(-) rename frontend/src/{metabase => metabase-lib/lib}/parameters/constants.ts (100%) rename frontend/src/{metabase => metabase-lib/lib}/parameters/utils/filters.js (91%) rename frontend/src/{metabase => metabase-lib/lib}/parameters/utils/filters.unit.spec.js (100%) rename frontend/src/{metabase => metabase-lib/lib}/parameters/utils/operators.ts (82%) rename frontend/src/{metabase => metabase-lib/lib}/parameters/utils/operators.unit.spec.ts (100%) create mode 100644 frontend/src/metabase-lib/lib/parameters/utils/parameter-type.ts rename frontend/src/{metabase => metabase-lib/lib}/parameters/utils/parameter-type.unit.spec.js (100%) rename frontend/src/{metabase => metabase-lib/lib}/parameters/utils/targets.ts (100%) rename frontend/src/{metabase => metabase-lib/lib}/parameters/utils/targets.unit.spec.ts (100%) diff --git a/frontend/src/metabase/parameters/constants.ts b/frontend/src/metabase-lib/lib/parameters/constants.ts similarity index 100% rename from frontend/src/metabase/parameters/constants.ts rename to frontend/src/metabase-lib/lib/parameters/constants.ts diff --git a/frontend/src/metabase/parameters/utils/filters.js b/frontend/src/metabase-lib/lib/parameters/utils/filters.js similarity index 91% rename from frontend/src/metabase/parameters/utils/filters.js rename to frontend/src/metabase-lib/lib/parameters/utils/filters.js index f4fdd857748..a49903fd6d2 100644 --- a/frontend/src/metabase/parameters/utils/filters.js +++ b/frontend/src/metabase-lib/lib/parameters/utils/filters.js @@ -1,6 +1,9 @@ import TemplateTagVariable from "metabase-lib/lib/variables/TemplateTagVariable"; -import { getParameterType, getParameterSubType } from "./parameter-type"; -import { getParameterOperatorName } from "./operators"; +import { + getParameterType, + getParameterSubType, +} from "metabase-lib/lib/parameters/utils/parameter-type"; +import { getParameterOperatorName } from "metabase-lib/lib/parameters/utils/operators"; export function fieldFilterForParameter(parameter) { const type = getParameterType(parameter); diff --git a/frontend/src/metabase/parameters/utils/filters.unit.spec.js b/frontend/src/metabase-lib/lib/parameters/utils/filters.unit.spec.js similarity index 100% rename from frontend/src/metabase/parameters/utils/filters.unit.spec.js rename to frontend/src/metabase-lib/lib/parameters/utils/filters.unit.spec.js diff --git a/frontend/src/metabase/parameters/utils/operators.ts b/frontend/src/metabase-lib/lib/parameters/utils/operators.ts similarity index 82% rename from frontend/src/metabase/parameters/utils/operators.ts rename to frontend/src/metabase-lib/lib/parameters/utils/operators.ts index 5ecf1a147a0..082fb883ed9 100644 --- a/frontend/src/metabase/parameters/utils/operators.ts +++ b/frontend/src/metabase-lib/lib/parameters/utils/operators.ts @@ -1,12 +1,15 @@ -import { UiParameter } from "metabase/parameters/types"; +import { Parameter } from "metabase-types/types/Parameter"; import { doesOperatorExist, getOperatorByTypeAndName, } from "metabase-lib/lib/operators/utils"; import { NUMBER, STRING, PRIMARY_KEY } from "metabase-lib/lib/types/constants"; -import { PARAMETER_OPERATOR_TYPES } from "../constants"; -import { getParameterType, getParameterSubType } from "./parameter-type"; +import { + getParameterType, + getParameterSubType, +} from "metabase-lib/lib/parameters/utils/parameter-type"; +import { PARAMETER_OPERATOR_TYPES } from "metabase-lib/lib/parameters/constants"; type OperatorType = "date" | "number" | "string"; @@ -28,7 +31,7 @@ export function getParameterOperatorName(maybeOperatorName?: string) { return doesOperatorExist(maybeOperatorName) ? maybeOperatorName : "="; } -export function deriveFieldOperatorFromParameter(parameter: UiParameter) { +export function deriveFieldOperatorFromParameter(parameter: Parameter) { const type = getParameterType(parameter); const subtype = getParameterSubType(parameter); const operatorType = getParameterOperatorType(type); @@ -71,7 +74,7 @@ export function buildTypedOperatorOptions( }); } -export function getNumberParameterArity(parameter: UiParameter) { +export function getNumberParameterArity(parameter: Parameter) { switch (parameter.type) { case "number/=": case "number/!=": @@ -83,7 +86,7 @@ export function getNumberParameterArity(parameter: UiParameter) { } } -export function getStringParameterArity(parameter: UiParameter) { +export function getStringParameterArity(parameter: Parameter) { switch (parameter.type) { case "string/=": case "string/!=": diff --git a/frontend/src/metabase/parameters/utils/operators.unit.spec.ts b/frontend/src/metabase-lib/lib/parameters/utils/operators.unit.spec.ts similarity index 100% rename from frontend/src/metabase/parameters/utils/operators.unit.spec.ts rename to frontend/src/metabase-lib/lib/parameters/utils/operators.unit.spec.ts diff --git a/frontend/src/metabase-lib/lib/parameters/utils/parameter-type.ts b/frontend/src/metabase-lib/lib/parameters/utils/parameter-type.ts new file mode 100644 index 00000000000..66e5f462dc6 --- /dev/null +++ b/frontend/src/metabase-lib/lib/parameters/utils/parameter-type.ts @@ -0,0 +1,36 @@ +import _ from "underscore"; +import { Parameter } from "metabase-types/types/Parameter"; + +export function getParameterType(parameter: Parameter | string) { + return typeof parameter === "string" + ? splitType(parameter)[0] + : parameter.sectionId || splitType(parameter)[0]; +} + +export function getParameterSubType(parameter: Parameter) { + const [, subtype] = splitType(parameter); + return subtype; +} + +function splitType(parameterOrType: Parameter | string) { + const parameterType = _.isString(parameterOrType) + ? parameterOrType + : parameterOrType?.type || ""; + + return parameterType.split("/"); +} + +export function isDateParameter(parameter: Parameter | string) { + const type = getParameterType(parameter); + return type === "date"; +} + +export function isNumberParameter(parameter: Parameter) { + const type = getParameterType(parameter); + return type === "number"; +} + +export function isStringParameter(parameter: Parameter) { + const type = getParameterType(parameter); + return type === "string"; +} diff --git a/frontend/src/metabase/parameters/utils/parameter-type.unit.spec.js b/frontend/src/metabase-lib/lib/parameters/utils/parameter-type.unit.spec.js similarity index 100% rename from frontend/src/metabase/parameters/utils/parameter-type.unit.spec.js rename to frontend/src/metabase-lib/lib/parameters/utils/parameter-type.unit.spec.js diff --git a/frontend/src/metabase/parameters/utils/targets.ts b/frontend/src/metabase-lib/lib/parameters/utils/targets.ts similarity index 100% rename from frontend/src/metabase/parameters/utils/targets.ts rename to frontend/src/metabase-lib/lib/parameters/utils/targets.ts diff --git a/frontend/src/metabase/parameters/utils/targets.unit.spec.ts b/frontend/src/metabase-lib/lib/parameters/utils/targets.unit.spec.ts similarity index 100% rename from frontend/src/metabase/parameters/utils/targets.unit.spec.ts rename to frontend/src/metabase-lib/lib/parameters/utils/targets.unit.spec.ts diff --git a/frontend/src/metabase-lib/lib/queries/utils/card.js b/frontend/src/metabase-lib/lib/queries/utils/card.js index fce09619917..8328ccc2321 100644 --- a/frontend/src/metabase-lib/lib/queries/utils/card.js +++ b/frontend/src/metabase-lib/lib/queries/utils/card.js @@ -2,9 +2,9 @@ import _ from "underscore"; import { updateIn } from "icepick"; import { normalizeParameterValue } from "metabase/parameters/utils/parameter-values"; -import { deriveFieldOperatorFromParameter } from "metabase/parameters/utils/operators"; import Utils from "metabase/lib/utils"; +import { deriveFieldOperatorFromParameter } from "metabase-lib/lib/parameters/utils/operators"; import * as Q_DEPRECATED from "metabase-lib/lib/queries/utils"; // legacy export const STRUCTURED_QUERY_TEMPLATE = { diff --git a/frontend/src/metabase/components/DateRelativeWidget/DateRelativeWidget.tsx b/frontend/src/metabase/components/DateRelativeWidget/DateRelativeWidget.tsx index 034ca00bb52..219f375f04d 100644 --- a/frontend/src/metabase/components/DateRelativeWidget/DateRelativeWidget.tsx +++ b/frontend/src/metabase/components/DateRelativeWidget/DateRelativeWidget.tsx @@ -3,7 +3,7 @@ import { t } from "ttag"; import cx from "classnames"; import _ from "underscore"; -import { DATE_MBQL_FILTER_MAPPING } from "metabase/parameters/constants"; +import { DATE_MBQL_FILTER_MAPPING } from "metabase-lib/lib/parameters/constants"; type Shortcut = { name: string; diff --git a/frontend/src/metabase/dashboard/components/DashCardCardParameterMapper.jsx b/frontend/src/metabase/dashboard/components/DashCardCardParameterMapper.jsx index 95b81bc6ebf..97694da2be1 100644 --- a/frontend/src/metabase/dashboard/components/DashCardCardParameterMapper.jsx +++ b/frontend/src/metabase/dashboard/components/DashCardCardParameterMapper.jsx @@ -9,8 +9,6 @@ import Icon from "metabase/components/Icon"; import Tooltip from "metabase/components/Tooltip"; import TippyPopover from "metabase/components/Popover/TippyPopover"; import ParameterTargetList from "metabase/parameters/components/ParameterTargetList"; -import { isVariableTarget } from "metabase/parameters/utils/targets"; -import { isDateParameter } from "metabase/parameters/utils/parameter-type"; import { getMetadata } from "metabase/selectors/metadata"; import { getNativeDashCardEmptyMappingText, @@ -18,6 +16,8 @@ import { isVirtualDashCard, showVirtualDashCardInfoText, } from "metabase/dashboard/utils"; +import { isDateParameter } from "metabase-lib/lib/parameters/utils/parameter-type"; +import { isVariableTarget } from "metabase-lib/lib/parameters/utils/targets"; import Question from "metabase-lib/lib/Question"; import { diff --git a/frontend/src/metabase/dashboard/utils.js b/frontend/src/metabase/dashboard/utils.js index 017841da17a..b2f6e4c5b8d 100644 --- a/frontend/src/metabase/dashboard/utils.js +++ b/frontend/src/metabase/dashboard/utils.js @@ -5,7 +5,7 @@ import { isDateParameter, isNumberParameter, isStringParameter, -} from "metabase/parameters/utils/parameter-type"; +} from "metabase-lib/lib/parameters/utils/parameter-type"; import { isNative } from "metabase-lib/lib/queries/utils"; export function syncParametersAndEmbeddingParams(before, after) { diff --git a/frontend/src/metabase/lib/click-behavior.js b/frontend/src/metabase/lib/click-behavior.js index f76ac2c5d4e..ec5dabb0ddc 100644 --- a/frontend/src/metabase/lib/click-behavior.js +++ b/frontend/src/metabase/lib/click-behavior.js @@ -4,11 +4,11 @@ import { t, ngettext, msgid } from "ttag"; import { parseTimestamp } from "metabase/lib/time"; import { formatDateTimeForParameter } from "metabase/lib/formatting/date"; +import { isValidImplicitActionClickBehavior } from "metabase/writeback/utils"; import { dimensionFilterForParameter, variableFilterForParameter, -} from "metabase/parameters/utils/filters"; -import { isValidImplicitActionClickBehavior } from "metabase/writeback/utils"; +} from "metabase-lib/lib/parameters/utils/filters"; import { isa, isDate } from "metabase-lib/lib/types/utils/isa"; import { TYPE } from "metabase-lib/lib/types/constants"; import Question from "metabase-lib/lib/Question"; diff --git a/frontend/src/metabase/parameters/components/FormattedParameterValue/FormattedParameterValue.tsx b/frontend/src/metabase/parameters/components/FormattedParameterValue/FormattedParameterValue.tsx index 87332d3637d..5b666ddc14d 100644 --- a/frontend/src/metabase/parameters/components/FormattedParameterValue/FormattedParameterValue.tsx +++ b/frontend/src/metabase/parameters/components/FormattedParameterValue/FormattedParameterValue.tsx @@ -1,9 +1,9 @@ import React from "react"; import { formatParameterValue } from "metabase/parameters/utils/formatting"; -import { isDateParameter } from "metabase/parameters/utils/parameter-type"; import { UiParameter, FieldFilterUiParameter } from "metabase/parameters/types"; import ParameterFieldWidgetValue from "metabase/parameters/components/widgets/ParameterFieldWidget/ParameterFieldWidgetValue/ParameterFieldWidgetValue"; +import { isDateParameter } from "metabase-lib/lib/parameters/utils/parameter-type"; type FormattedParameterValueProps = { parameter: UiParameter; diff --git a/frontend/src/metabase/parameters/components/ParameterValueWidget.jsx b/frontend/src/metabase/parameters/components/ParameterValueWidget.jsx index 57a355ce7e0..d7716aa0388 100644 --- a/frontend/src/metabase/parameters/components/ParameterValueWidget.jsx +++ b/frontend/src/metabase/parameters/components/ParameterValueWidget.jsx @@ -8,14 +8,6 @@ import { getParameterIconName, getParameterWidgetTitle, } from "metabase/parameters/utils/ui"; -import { - isDateParameter, - isNumberParameter, -} from "metabase/parameters/utils/parameter-type"; -import { - getNumberParameterArity, - getStringParameterArity, -} from "metabase/parameters/utils/operators"; import PopoverWithTrigger from "metabase/components/PopoverWithTrigger"; import Icon from "metabase/components/Icon"; @@ -30,6 +22,14 @@ import WidgetStatusIcon from "metabase/parameters/components/WidgetStatusIcon"; import FormattedParameterValue from "metabase/parameters/components/FormattedParameterValue"; import NumberInputWidget from "metabase/parameters/components/widgets/NumberInputWidget"; import StringInputWidget from "metabase/parameters/components/widgets/StringInputWidget"; +import { + getNumberParameterArity, + getStringParameterArity, +} from "metabase-lib/lib/parameters/utils/operators"; +import { + isDateParameter, + isNumberParameter, +} from "metabase-lib/lib/parameters/utils/parameter-type"; import ParameterFieldWidget from "./widgets/ParameterFieldWidget/ParameterFieldWidget"; import S from "./ParameterWidget.css"; diff --git a/frontend/src/metabase/parameters/components/widgets/ParameterFieldWidget/ParameterFieldWidget.jsx b/frontend/src/metabase/parameters/components/widgets/ParameterFieldWidget/ParameterFieldWidget.jsx index 28d7dc4f931..9f17e85a7af 100644 --- a/frontend/src/metabase/parameters/components/widgets/ParameterFieldWidget/ParameterFieldWidget.jsx +++ b/frontend/src/metabase/parameters/components/widgets/ParameterFieldWidget/ParameterFieldWidget.jsx @@ -5,12 +5,12 @@ import { t } from "ttag"; import _ from "underscore"; import FieldValuesWidget from "metabase/components/FieldValuesWidget"; -import { deriveFieldOperatorFromParameter } from "metabase/parameters/utils/operators"; import { WidgetRoot, Footer, UpdateButton, } from "metabase/parameters/components/widgets/Widget.styled"; +import { deriveFieldOperatorFromParameter } from "metabase-lib/lib/parameters/utils/operators"; import { getFilterArgumentFormatOptions, isEqualsOperator, diff --git a/frontend/src/metabase/parameters/utils/cards.ts b/frontend/src/metabase/parameters/utils/cards.ts index 0461c73dae3..fdd470051fb 100644 --- a/frontend/src/metabase/parameters/utils/cards.ts +++ b/frontend/src/metabase/parameters/utils/cards.ts @@ -1,9 +1,5 @@ import _ from "underscore"; -import { - getParameterTargetField, - getTemplateTagFromTarget, -} from "metabase/parameters/utils/targets"; import { getValuePopulatedParameters, hasParameterValue, @@ -12,6 +8,10 @@ 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"; +import { + getParameterTargetField, + getTemplateTagFromTarget, +} from "metabase-lib/lib/parameters/utils/targets"; import Question from "metabase-lib/lib/Question"; import Metadata from "metabase-lib/lib/metadata/Metadata"; diff --git a/frontend/src/metabase/parameters/utils/dashboard-options.js b/frontend/src/metabase/parameters/utils/dashboard-options.js index 77d1d75ebe2..504dd37c0c3 100644 --- a/frontend/src/metabase/parameters/utils/dashboard-options.js +++ b/frontend/src/metabase/parameters/utils/dashboard-options.js @@ -1,6 +1,6 @@ import { t } from "ttag"; -import { ID_OPTION } from "../constants"; -import { buildTypedOperatorOptions } from "./operators"; +import { ID_OPTION } from "metabase-lib/lib/parameters/constants"; +import { buildTypedOperatorOptions } from "metabase-lib/lib/parameters/utils/operators"; export function getDashboardParameterSections() { return [ diff --git a/frontend/src/metabase/parameters/utils/dashboards.ts b/frontend/src/metabase/parameters/utils/dashboards.ts index 2da098659ef..391e4412f84 100644 --- a/frontend/src/metabase/parameters/utils/dashboards.ts +++ b/frontend/src/metabase/parameters/utils/dashboards.ts @@ -1,10 +1,6 @@ import _ from "underscore"; import { generateParameterId } from "metabase/parameters/utils/parameter-id"; -import { - getParameterTargetField, - isVariableTarget, -} from "metabase/parameters/utils/targets"; import { isFieldFilterParameter } from "metabase/parameters/utils/parameter-type"; import { slugify } from "metabase/lib/formatting"; import { @@ -24,6 +20,10 @@ import { DashboardOrderedCard, } from "metabase-types/api"; import { SavedCard } from "metabase-types/types/Card"; +import { + getParameterTargetField, + isVariableTarget, +} from "metabase-lib/lib/parameters/utils/targets"; import Question from "metabase-lib/lib/Question"; import Metadata from "metabase-lib/lib/metadata/Metadata"; import Field from "metabase-lib/lib/metadata/Field"; diff --git a/frontend/src/metabase/parameters/utils/date-formatting.ts b/frontend/src/metabase/parameters/utils/date-formatting.ts index a714ffab56e..2c96e2fde4c 100644 --- a/frontend/src/metabase/parameters/utils/date-formatting.ts +++ b/frontend/src/metabase/parameters/utils/date-formatting.ts @@ -2,10 +2,10 @@ import { t } from "ttag"; import _ from "underscore"; import moment from "moment-timezone"; -import { DATE_MBQL_FILTER_MAPPING } from "metabase/parameters/constants"; import { dateParameterValueToMBQL } from "metabase/parameters/utils/mbql"; import { DATE_OPERATORS } from "metabase/query_builder/components/filters/pickers/DatePicker/DatePicker"; import { EXCLUDE_OPERATORS } from "metabase/query_builder/components/filters/pickers/DatePicker/ExcludeDatePicker"; +import { DATE_MBQL_FILTER_MAPPING } from "metabase-lib/lib/parameters/constants"; import { generateTimeFilterValuesDescriptions, getRelativeDatetimeInterval, diff --git a/frontend/src/metabase/parameters/utils/formatting.ts b/frontend/src/metabase/parameters/utils/formatting.ts index d09ba988e6e..a16ff249751 100644 --- a/frontend/src/metabase/parameters/utils/formatting.ts +++ b/frontend/src/metabase/parameters/utils/formatting.ts @@ -1,9 +1,10 @@ import { ngettext, msgid } from "ttag"; import { formatValue } from "metabase/lib/formatting"; +import { getParameterType } from "metabase-lib/lib/parameters/utils/parameter-type"; import { UiParameter } from "../types"; -import { getParameterType, isFieldFilterParameter } from "./parameter-type"; +import { isFieldFilterParameter } from "./parameter-type"; import { formatDateValue } from "./date-formatting"; function inferValueType(parameter: UiParameter) { diff --git a/frontend/src/metabase/parameters/utils/linked-filters.js b/frontend/src/metabase/parameters/utils/linked-filters.js index e3482340045..fcf817b5d19 100644 --- a/frontend/src/metabase/parameters/utils/linked-filters.js +++ b/frontend/src/metabase/parameters/utils/linked-filters.js @@ -1,8 +1,8 @@ import { TYPE_SUPPORTS_LINKED_FILTERS, FIELD_FILTER_PARAMETER_TYPES, -} from "metabase/parameters/constants"; -import { getParameterType } from "metabase/parameters/utils/parameter-type"; +} from "metabase-lib/lib/parameters/constants"; +import { getParameterType } from "metabase-lib/lib/parameters/utils/parameter-type"; export function canUseLinkedFilters(parameter) { const type = getParameterType(parameter); diff --git a/frontend/src/metabase/parameters/utils/mapping-options.js b/frontend/src/metabase/parameters/utils/mapping-options.js index 96417c70734..cb756ff3365 100644 --- a/frontend/src/metabase/parameters/utils/mapping-options.js +++ b/frontend/src/metabase/parameters/utils/mapping-options.js @@ -2,12 +2,11 @@ import { tag_names } from "cljs/metabase.shared.parameters.parameters"; import { isActionCard } from "metabase/writeback/utils"; import Question from "metabase-lib/lib/Question"; import { ExpressionDimension } from "metabase-lib/lib/Dimension"; - import { dimensionFilterForParameter, getTagOperatorFilterForParameter, variableFilterForParameter, -} from "./filters"; +} from "metabase-lib/lib/parameters/utils/filters"; function buildStructuredQuerySectionOptions(section) { return section.items.map(({ dimension }) => ({ diff --git a/frontend/src/metabase/parameters/utils/mbql.js b/frontend/src/metabase/parameters/utils/mbql.js index 2155af0f805..a6a124f18e7 100644 --- a/frontend/src/metabase/parameters/utils/mbql.js +++ b/frontend/src/metabase/parameters/utils/mbql.js @@ -10,9 +10,12 @@ import Dimension, { FieldDimension, TemplateTagDimension, } from "metabase-lib/lib/Dimension"; -import { getParameterSubType, isDateParameter } from "./parameter-type"; -import { getParameterOperatorName } from "./operators"; -import { isDimensionTarget } from "./targets"; +import { isDimensionTarget } from "metabase-lib/lib/parameters/utils/targets"; +import { + getParameterSubType, + isDateParameter, +} from "metabase-lib/lib/parameters/utils/parameter-type"; +import { getParameterOperatorName } from "metabase-lib/lib/parameters/utils/operators"; import { hasParameterValue } from "./parameter-values"; const withTemporalUnit = (fieldRef, unit) => { diff --git a/frontend/src/metabase/parameters/utils/parameter-type.ts b/frontend/src/metabase/parameters/utils/parameter-type.ts index 372f754505b..599e485f1f2 100644 --- a/frontend/src/metabase/parameters/utils/parameter-type.ts +++ b/frontend/src/metabase/parameters/utils/parameter-type.ts @@ -1,42 +1,8 @@ import _ from "underscore"; -import { FIELD_FILTER_PARAMETER_TYPES } from "metabase/parameters/constants"; - import { FieldFilterUiParameter } from "metabase/parameters/types"; import { Parameter } from "metabase-types/types/Parameter"; - -export function getParameterType(parameter: Parameter | string) { - return typeof parameter === "string" - ? splitType(parameter)[0] - : parameter.sectionId || splitType(parameter)[0]; -} - -export function getParameterSubType(parameter: Parameter) { - const [, subtype] = splitType(parameter); - return subtype; -} - -function splitType(parameterOrType: Parameter | string) { - const parameterType = _.isString(parameterOrType) - ? parameterOrType - : parameterOrType?.type || ""; - - return parameterType.split("/"); -} - -export function isDateParameter(parameter: Parameter | string) { - const type = getParameterType(parameter); - return type === "date"; -} - -export function isNumberParameter(parameter: Parameter) { - const type = getParameterType(parameter); - return type === "number"; -} - -export function isStringParameter(parameter: Parameter) { - const type = getParameterType(parameter); - return type === "string"; -} +import { FIELD_FILTER_PARAMETER_TYPES } from "metabase-lib/lib/parameters/constants"; +import { getParameterType } from "metabase-lib/lib/parameters/utils/parameter-type"; export function isFieldFilterParameter( parameter: Parameter, diff --git a/frontend/src/metabase/parameters/utils/parameter-values.js b/frontend/src/metabase/parameters/utils/parameter-values.js index 5fc888df945..f42cd4f8556 100644 --- a/frontend/src/metabase/parameters/utils/parameter-values.js +++ b/frontend/src/metabase/parameters/utils/parameter-values.js @@ -1,4 +1,4 @@ -import { getParameterType } from "./parameter-type"; +import { getParameterType } from "metabase-lib/lib/parameters/utils/parameter-type"; export function getValuePopulatedParameters(parameters, parameterValues) { return parameterValues diff --git a/frontend/src/metabase/parameters/utils/template-tag-options.js b/frontend/src/metabase/parameters/utils/template-tag-options.js index 86a43c46408..dc2f90e5af5 100644 --- a/frontend/src/metabase/parameters/utils/template-tag-options.js +++ b/frontend/src/metabase/parameters/utils/template-tag-options.js @@ -4,9 +4,12 @@ import { OPTIONS_WITH_OPERATOR_SUBTYPES, PARAMETER_OPERATOR_TYPES, ID_OPTION, -} from "../constants"; -import { getOperatorDisplayName, buildTypedOperatorOptions } from "./operators"; -import { fieldFilterForParameter } from "./filters"; +} from "metabase-lib/lib/parameters/constants"; +import { + getOperatorDisplayName, + buildTypedOperatorOptions, +} from "metabase-lib/lib/parameters/utils/operators"; +import { fieldFilterForParameter } from "metabase-lib/lib/parameters/utils/filters"; export function getParameterOptions() { return [ diff --git a/frontend/src/metabase/parameters/utils/template-tag-options.unit.spec.js b/frontend/src/metabase/parameters/utils/template-tag-options.unit.spec.js index 1f42b365cbb..b415c6131f1 100644 --- a/frontend/src/metabase/parameters/utils/template-tag-options.unit.spec.js +++ b/frontend/src/metabase/parameters/utils/template-tag-options.unit.spec.js @@ -1,5 +1,5 @@ import _ from "underscore"; -import { PARAMETER_OPERATOR_TYPES } from "../constants"; +import { PARAMETER_OPERATOR_TYPES } from "metabase-lib/lib/parameters/constants"; import { getParameterOptions, getParameterOptionsForField, diff --git a/frontend/src/metabase/parameters/utils/ui.ts b/frontend/src/metabase/parameters/utils/ui.ts index 671963df4d5..32154c7f8e2 100644 --- a/frontend/src/metabase/parameters/utils/ui.ts +++ b/frontend/src/metabase/parameters/utils/ui.ts @@ -2,8 +2,8 @@ import _ from "underscore"; import { UiParameter } from "metabase/parameters/types"; import { isEqualsOperator } from "metabase-lib/lib/operators/utils"; -import { getParameterType } from "./parameter-type"; -import { deriveFieldOperatorFromParameter } from "./operators"; +import { getParameterType } from "metabase-lib/lib/parameters/utils/parameter-type"; +import { deriveFieldOperatorFromParameter } from "metabase-lib/lib/parameters/utils/operators"; export function getParameterIconName(parameter: UiParameter) { const type = getParameterType(parameter); -- GitLab