This is an automated email from the ASF dual-hosted git repository.

kgabryje pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new af1bddffad fix(explore): Adhoc columns don't display correctly (#20802)
af1bddffad is described below

commit af1bddffad930efc0583b638716980db6747bfbc
Author: Kamil Gabryjelski <[email protected]>
AuthorDate: Thu Jul 21 21:11:49 2022 +0200

    fix(explore): Adhoc columns don't display correctly (#20802)
    
    * fix(explore): Adhoc columns have empty labels
    
    * Add unit test
    
    * Address comments
---
 .../src/components/labelUtils.tsx                    |  6 ++++--
 .../superset-ui-core/src/query/types/Column.ts       |  2 +-
 .../DndColumnSelectControl/ColumnSelectPopover.tsx   |  2 +-
 .../DndColumnSelectControl/DndColumnSelect.test.tsx  | 20 +++++++++++++++++++-
 4 files changed, 25 insertions(+), 5 deletions(-)

diff --git 
a/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx
 
b/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx
index c132b0918d..ca7ddff4ce 100644
--- 
a/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx
+++ 
b/superset-frontend/packages/superset-ui-chart-controls/src/components/labelUtils.tsx
@@ -68,7 +68,7 @@ export const getColumnTooltipNode = (
   labelRef?: React.RefObject<any>,
 ): ReactNode => {
   if (
-    !column.verbose_name &&
+    (!column.column_name || !column.verbose_name) &&
     !column.description &&
     !isLabelTruncated(labelRef)
   ) {
@@ -77,7 +77,9 @@ export const getColumnTooltipNode = (
 
   return (
     <>
-      <TooltipSection label={t('Column name')} text={column.column_name} />
+      {column.column_name && (
+        <TooltipSection label={t('Column name')} text={column.column_name} />
+      )}
       {column.verbose_name && (
         <TooltipSection label={t('Label')} text={column.verbose_name} />
       )}
diff --git 
a/superset-frontend/packages/superset-ui-core/src/query/types/Column.ts 
b/superset-frontend/packages/superset-ui-core/src/query/types/Column.ts
index c2b35f46c4..7afe031bcf 100644
--- a/superset-frontend/packages/superset-ui-core/src/query/types/Column.ts
+++ b/superset-frontend/packages/superset-ui-core/src/query/types/Column.ts
@@ -61,7 +61,7 @@ export function isAdhocColumn(column?: any): column is 
AdhocColumn {
     typeof column !== 'string' &&
     column?.sqlExpression !== undefined &&
     column?.label !== undefined &&
-    column?.expressionType === 'SQL'
+    (column?.expressionType === undefined || column?.expressionType === 'SQL')
   );
 }
 
diff --git 
a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx
 
b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx
index 2e8a8ede6b..f979f231e2 100644
--- 
a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx
+++ 
b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/ColumnSelectPopover.tsx
@@ -121,7 +121,7 @@ const ColumnSelectPopover = ({
 
   const onSqlExpressionChange = useCallback(
     sqlExpression => {
-      setAdhocColumn({ label, sqlExpression } as AdhocColumn);
+      setAdhocColumn({ label, sqlExpression, expressionType: 'SQL' });
       setSelectedSimpleColumn(undefined);
       setSelectedCalculatedColumn(undefined);
     },
diff --git 
a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx
 
b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx
index 37240d57ca..b02905191f 100644
--- 
a/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx
+++ 
b/superset-frontend/src/explore/components/controls/DndColumnSelectControl/DndColumnSelect.test.tsx
@@ -27,7 +27,9 @@ const defaultProps: DndColumnSelectProps = {
   type: 'DndColumnSelect',
   name: 'Filter',
   onChange: jest.fn(),
-  options: { string: { column_name: 'Column A' } },
+  options: {
+    string: { column_name: 'Column A' },
+  },
   actions: { setControlValue: jest.fn() },
 };
 
@@ -42,3 +44,19 @@ test('renders with value', () => {
   });
   expect(screen.getByText('Column A')).toBeInTheDocument();
 });
+
+test('renders adhoc column', () => {
+  render(
+    <DndColumnSelect
+      {...defaultProps}
+      value={{
+        sqlExpression: 'Count *',
+        label: 'adhoc column',
+        expressionType: 'SQL',
+      }}
+    />,
+    { useDnd: true },
+  );
+  expect(screen.getByText('adhoc column')).toBeVisible();
+  expect(screen.getByLabelText('calculator')).toBeVisible();
+});

Reply via email to