From b4a8f51c496c95760e493420fef633bae07f9280 Mon Sep 17 00:00:00 2001 From: Ashish Gupta Date: Fri, 27 Sep 2024 00:38:14 +0530 Subject: [PATCH] added entity type from root to support other bulk import entity as well --- .../BulkImport/BulkEntityImport.component.tsx | 18 +++++++++++++----- .../Glossary/ImportGlossary/ImportGlossary.tsx | 2 +- ...ModalWithCustomPropertyEditor.component.tsx | 2 +- .../resources/ui/src/utils/CSV/CSV.utils.tsx | 18 +++++++++++++----- .../ui/src/utils/CSV/CSVUtilsClassBase.tsx | 5 +++-- 5 files changed, 31 insertions(+), 14 deletions(-) diff --git a/openmetadata-ui/src/main/resources/ui/src/components/BulkImport/BulkEntityImport.component.tsx b/openmetadata-ui/src/main/resources/ui/src/components/BulkImport/BulkEntityImport.component.tsx index 0687450ea261..4a7989d3b42f 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/BulkImport/BulkEntityImport.component.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/BulkImport/BulkEntityImport.component.tsx @@ -22,6 +22,7 @@ import React, { MutableRefObject, useCallback, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { usePapaParse } from 'react-papaparse'; +import { capitalize } from 'lodash'; import { ENTITY_IMPORT_STEPS, VALIDATION_STEP, @@ -73,7 +74,8 @@ const BulkEntityImport = ({ (results: { data: string[][] }) => { // results.data is returning data with unknown type const { columns, dataSource } = getEntityColumnsAndDataSourceFromCSV( - results.data as string[][] + results.data as string[][], + entityType ); setDataSource(dataSource); setColumns(columns); @@ -81,7 +83,7 @@ const BulkEntityImport = ({ setActiveStep(VALIDATION_STEP.EDIT_VALIDATE); setTimeout(focusToGrid, 500); }, - [setDataSource, setColumns, setActiveStep, focusToGrid] + [entityType, setDataSource, setColumns, setActiveStep, focusToGrid] ); const validateCsvString = useCallback( @@ -157,7 +159,10 @@ const BulkEntityImport = ({ complete: (results) => { // results.data is returning data with unknown type setValidateCSVData( - getEntityColumnsAndDataSourceFromCSV(results.data as string[][]) + getEntityColumnsAndDataSourceFromCSV( + results.data as string[][], + entityType + ) ); }, }); @@ -165,7 +170,7 @@ const BulkEntityImport = ({ } else { showSuccessToast( t('message.entity-details-updated', { - entityType, + entityType: capitalize(entityType), fqn, }) ); @@ -180,7 +185,10 @@ const BulkEntityImport = ({ complete: (results) => { // results.data is returning data with unknown type setValidateCSVData( - getEntityColumnsAndDataSourceFromCSV(results.data as string[][]) + getEntityColumnsAndDataSourceFromCSV( + results.data as string[][], + entityType + ) ); }, }); diff --git a/openmetadata-ui/src/main/resources/ui/src/components/Glossary/ImportGlossary/ImportGlossary.tsx b/openmetadata-ui/src/main/resources/ui/src/components/Glossary/ImportGlossary/ImportGlossary.tsx index ab6cd178d70f..2ae67b4ee5af 100644 --- a/openmetadata-ui/src/main/resources/ui/src/components/Glossary/ImportGlossary/ImportGlossary.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/components/Glossary/ImportGlossary/ImportGlossary.tsx @@ -81,7 +81,7 @@ const ImportGlossary: FC = ({ glossaryName }) => { { +export const getColumnConfig = ( + column: string, + entityType: EntityType +): TypeColumn => { const colType = column.split('.').pop() ?? ''; return { @@ -75,16 +79,20 @@ export const getColumnConfig = (column: string): TypeColumn => { name: column, defaultFlex: 1, sortable: false, - renderEditor: csvUtilsClassBase.getEditor(colType), + renderEditor: csvUtilsClassBase.getEditor(colType, entityType), minWidth: COLUMNS_WIDTH[colType] ?? 180, render: column === 'status' ? statusRenderer : undefined, } as TypeColumn; }; -export const getEntityColumnsAndDataSourceFromCSV = (csv: string[][]) => { +export const getEntityColumnsAndDataSourceFromCSV = ( + csv: string[][], + entityType: EntityType +) => { const [cols, ...rows] = csv; - const columns = cols?.map(getColumnConfig) ?? []; + const columns = + cols?.map((column) => getColumnConfig(column, entityType)) ?? []; const dataSource = rows.map((row, idx) => { @@ -145,7 +153,7 @@ const convertCustomPropertyStringToValueExtensionBasedOnType = ( value: string, customProperty: CustomProperty ) => { - switch (customProperty.propertyType.name) { + switch (customProperty?.propertyType.name) { case 'entityReference': { const entity = value.split(':'); diff --git a/openmetadata-ui/src/main/resources/ui/src/utils/CSV/CSVUtilsClassBase.tsx b/openmetadata-ui/src/main/resources/ui/src/utils/CSV/CSVUtilsClassBase.tsx index 163fe52fd7d5..448e076c66c5 100644 --- a/openmetadata-ui/src/main/resources/ui/src/utils/CSV/CSVUtilsClassBase.tsx +++ b/openmetadata-ui/src/main/resources/ui/src/utils/CSV/CSVUtilsClassBase.tsx @@ -32,7 +32,8 @@ import { EditorProps } from './CSV.utils'; class CSVUtilsClassBase { public getEditor( - column: string + column: string, + entityType: EntityType ): ((props: EditorProps) => ReactNode) | undefined { switch (column) { case 'owner': @@ -238,7 +239,7 @@ class CSVUtilsClassBase { return (