diff --git a/frontend/src/metabase/lib/expressions/suggest.js b/frontend/src/metabase/lib/expressions/suggest.js index 8c90b18b027e391450399d7143d0f5dbff314c5d..a61f1bac92e7ce29d40422931c5eacf0b1c7dc4a 100644 --- a/frontend/src/metabase/lib/expressions/suggest.js +++ b/frontend/src/metabase/lib/expressions/suggest.js @@ -19,6 +19,12 @@ import { EDITOR_FK_SYMBOLS, } from "./config"; +const suggestionText = func => { + const { displayName, args } = func; + const suffix = args.length > 0 ? "(" : " "; + return displayName + suffix; +}; + export function suggest({ source, query, @@ -59,7 +65,7 @@ export function suggest({ .map(func => ({ type: "functions", name: func.displayName, - text: func.displayName + "(", + text: suggestionText(func), index: targetOffset, icon: "function", order: 1, @@ -73,7 +79,7 @@ export function suggest({ .map(func => ({ type: "aggregations", name: func.displayName, - text: func.displayName + "(", + text: suggestionText(func), index: targetOffset, icon: "function", order: 1, diff --git a/frontend/src/metabase/query_builder/components/expressions/ExpressionEditorTextfield.jsx b/frontend/src/metabase/query_builder/components/expressions/ExpressionEditorTextfield.jsx index b05fbf3f5defc17afa47f6b63de186f85f9a01b4..df8a25703557e2ea5bad492706cad0797995e500 100644 --- a/frontend/src/metabase/query_builder/components/expressions/ExpressionEditorTextfield.jsx +++ b/frontend/src/metabase/query_builder/components/expressions/ExpressionEditorTextfield.jsx @@ -138,7 +138,7 @@ export default class ExpressionEditorTextfield extends React.Component { const extraTrim = openParen && alreadyOpenParen ? 1 : 0; const replacement = suggested.slice(0, suggested.length - extraTrim); - const updatedExpression = prefix + replacement.trim() + postfix; + const updatedExpression = prefix + replacement + postfix; this.handleExpressionChange(updatedExpression); const caretPos = updatedExpression.length - postfix.length; diff --git a/frontend/test/metabase/lib/expressions/suggest.unit.spec.js b/frontend/test/metabase/lib/expressions/suggest.unit.spec.js index e1e1e11ed0b3bc9e9f8cbbacf626750b50dc4ed0..5489aefd1e6aca75f4254b56c0bf8ebb3482cf0a 100644 --- a/frontend/test/metabase/lib/expressions/suggest.unit.spec.js +++ b/frontend/test/metabase/lib/expressions/suggest.unit.spec.js @@ -207,9 +207,9 @@ describe("metabase/lib/expression/suggest", () => { it("should suggest partial matches after an aggregation", () => { expect(suggest({ source: "average(c", ...aggregationOpts })).toEqual([ // FIXME: the next four should not appear - { type: "aggregations", text: "Count(" }, + { type: "aggregations", text: "Count " }, { type: "aggregations", text: "CountIf(" }, - { type: "aggregations", text: "CumulativeCount(" }, + { type: "aggregations", text: "CumulativeCount " }, { type: "aggregations", text: "CumulativeSum(" }, { type: "fields", text: "[C] " }, { type: "fields", text: "[count] " }, @@ -223,9 +223,9 @@ describe("metabase/lib/expression/suggest", () => { it("should suggest partial matches in aggregation", () => { expect(suggest({ source: "1 + C", ...aggregationOpts })).toEqual([ - { type: "aggregations", text: "Count(" }, + { type: "aggregations", text: "Count " }, { type: "aggregations", text: "CountIf(" }, - { type: "aggregations", text: "CumulativeCount(" }, + { type: "aggregations", text: "CumulativeCount " }, { type: "aggregations", text: "CumulativeSum(" }, { type: "fields", text: "[C] " }, { type: "fields", text: "[count] " }, @@ -258,7 +258,7 @@ describe("metabase/lib/expression/suggest", () => { startRule: "aggregation", }), ).toEqual([ - { type: "aggregations", text: "Count(" }, + { type: "aggregations", text: "Count " }, { type: "aggregations", text: "CountIf(" }, ]); });