diff --git a/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetEditor.jsx b/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetEditor.jsx index 21b03c76363f96cfc116b99b4a8e98f67efa2cb7..6cc2c8f15a17d9d5c8f0827c797f34a1f2a0af2c 100644 --- a/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetEditor.jsx +++ b/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetEditor.jsx @@ -186,6 +186,10 @@ function DatasetEditor(props) { ); const fields = useMemo(() => { + const virtualCardTable = dataset.table(); + const virtualCardColumns = (virtualCardTable?.fields ?? []).map(field => + field.column(), + ); // Columns in results_metadata contain all the necessary metadata // orderedColumns contain properly sorted columns, but they only contain field names and refs. // Normally, columns in results_metadata are ordered too, @@ -199,9 +203,13 @@ function DatasetEditor(props) { return columns; } return orderedColumns - .map(col => columns.find(c => isSameField(c.field_ref, col.fieldRef))) + .map( + col => + columns.find(c => isSameField(c.field_ref, col.fieldRef)) || + virtualCardColumns.find(c => isSameField(c.field_ref, col.fieldRef)), + ) .filter(Boolean); - }, [orderedColumns, result]); + }, [dataset, orderedColumns, result?.data?.results_metadata?.columns]); const isEditingQuery = datasetEditorTab === "query"; const isEditingMetadata = datasetEditorTab === "metadata"; diff --git a/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetFieldMetadataSidebar/DatasetFieldMetadataSidebar.jsx b/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetFieldMetadataSidebar/DatasetFieldMetadataSidebar.jsx index e591edbe851bedcb7f31b2da10163fe9e9207349..ba939ee59833b594697e79de1aecbfbb705bf532 100644 --- a/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetFieldMetadataSidebar/DatasetFieldMetadataSidebar.jsx +++ b/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetFieldMetadataSidebar/DatasetFieldMetadataSidebar.jsx @@ -153,7 +153,9 @@ function DatasetFieldMetadataSidebar({ setShouldAnimateFieldChange(true); // setTimeout is required as form fields are rerendered pretty frequently setTimeout(() => { - displayNameInputRef.current?.select?.(); + if (_.isFunction(displayNameInputRef.current?.select)) { + displayNameInputRef.current.select(); + } }); } }, [field, previousField]);