From 7036aa8fa2ff17ce389e950d470c97fed7582892 Mon Sep 17 00:00:00 2001 From: Dalton <daltojohnso@users.noreply.github.com> Date: Tue, 11 Oct 2022 10:00:01 -0400 Subject: [PATCH] Fix scripting error in model metadata sidebar (#25758) * Fix scripting error in model metadata sidebar * Default to card's result_metadata col if we can't find it in the query metadata * Look at virtual card table for column metadataa --- .../components/DatasetEditor/DatasetEditor.jsx | 12 ++++++++++-- .../DatasetFieldMetadataSidebar.jsx | 4 +++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetEditor.jsx b/frontend/src/metabase/query_builder/components/DatasetEditor/DatasetEditor.jsx index 21b03c76363..6cc2c8f15a1 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 e591edbe851..ba939ee5983 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]); -- GitLab