From e864b1f3fb30d916ee5f3d7ef43e76e5de316a62 Mon Sep 17 00:00:00 2001 From: Alexander Polyankin <alexander.polyankin@metabase.com> Date: Fri, 6 May 2022 17:32:32 +0300 Subject: [PATCH] Make it possible to convert relative filters to expressions (#22456) --- .../src/metabase/lib/expressions/config.js | 10 ++++++ .../lib/expressions/helper_text_strings.js | 32 +++++++++++++++++++ .../lib/expressions/suggest.unit.spec.js | 1 + 3 files changed, 43 insertions(+) diff --git a/frontend/src/metabase/lib/expressions/config.js b/frontend/src/metabase/lib/expressions/config.js index 6b06c47f8b2..dd635594152 100644 --- a/frontend/src/metabase/lib/expressions/config.js +++ b/frontend/src/metabase/lib/expressions/config.js @@ -226,12 +226,22 @@ export const MBQL_CLAUSES = { type: "boolean", args: ["expression", "expression", "expression"], }, + interval: { + displayName: "timeSpan", + type: "number", + args: ["number", "string"], + }, "time-interval": { displayName: `interval`, type: "boolean", args: ["expression", "number", "string"], hasOptions: true, }, + "relative-datetime": { + displayName: "relativeDateTime", + type: "expression", + args: ["number", "string"], + }, "is-null": { displayName: `isnull`, type: "boolean", diff --git a/frontend/src/metabase/lib/expressions/helper_text_strings.js b/frontend/src/metabase/lib/expressions/helper_text_strings.js index 22fece8a64e..92b1c11cfd4 100644 --- a/frontend/src/metabase/lib/expressions/helper_text_strings.js +++ b/frontend/src/metabase/lib/expressions/helper_text_strings.js @@ -440,6 +440,22 @@ const helperTextStrings = [ { name: t`end`, description: t`The end of the range.` }, ], }, + { + name: "interval", + structure: "timeSpan(" + t`number` + ", " + t`text` + ")", + description: t`Gets a time interval of specified length`, + example: 'timeSpan(7, "day")', + args: [ + { + name: t`number`, + description: t`Period of interval, where negative values are back in time.`, + }, + { + name: t`text`, + description: t`Type of interval like "day", "month", "year".`, + }, + ], + }, { name: "time-interval", structure: @@ -461,6 +477,22 @@ const helperTextStrings = [ }, ], }, + { + name: "relative-datetime", + structure: "relativeDateTime(" + t`number` + ", " + t`text` + ")", + description: t`Gets a timestamp relative to the current time`, + example: 'relativeDateTime(-30, "day")', + args: [ + { + name: t`number`, + description: t`Period of interval, where negative values are back in time.`, + }, + { + name: t`text`, + description: t`Type of interval like "day", "month", "year".`, + }, + ], + }, { name: "is-null", structure: "isnull(" + t`column` + ")", diff --git a/frontend/test/metabase/lib/expressions/suggest.unit.spec.js b/frontend/test/metabase/lib/expressions/suggest.unit.spec.js index 9c651efa9f3..2eed1aa01f4 100644 --- a/frontend/test/metabase/lib/expressions/suggest.unit.spec.js +++ b/frontend/test/metabase/lib/expressions/suggest.unit.spec.js @@ -147,6 +147,7 @@ describe("metabase/lib/expression/suggest", () => { [ { text: "True", type: "literal" }, { text: "[Total] ", type: "fields" }, + { text: "timeSpan(", type: "functions" }, { text: "trim(", type: "functions" }, ].sort(suggestionSort), ); -- GitLab