Skip to content

Commit

Permalink
added entity type from root to support other bulk import entity as well
Browse files Browse the repository at this point in the history
  • Loading branch information
Ashish8689 committed Sep 26, 2024
1 parent 6ec8eb9 commit b4a8f51
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -73,15 +74,16 @@ 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);

setActiveStep(VALIDATION_STEP.EDIT_VALIDATE);
setTimeout(focusToGrid, 500);
},
[setDataSource, setColumns, setActiveStep, focusToGrid]
[entityType, setDataSource, setColumns, setActiveStep, focusToGrid]
);

const validateCsvString = useCallback(
Expand Down Expand Up @@ -157,15 +159,18 @@ const BulkEntityImport = ({
complete: (results) => {
// results.data is returning data with unknown type
setValidateCSVData(
getEntityColumnsAndDataSourceFromCSV(results.data as string[][])
getEntityColumnsAndDataSourceFromCSV(
results.data as string[][],
entityType
)
);
},
});
setActiveStep(VALIDATION_STEP.UPDATE);
} else {
showSuccessToast(
t('message.entity-details-updated', {
entityType,
entityType: capitalize(entityType),
fqn,
})
);
Expand All @@ -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
)
);
},
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ const ImportGlossary: FC<Props> = ({ glossaryName }) => {
</Col>
<Col span={24}>
<BulkEntityImport
entityType={EntityType.GLOSSARY}
entityType={EntityType.GLOSSARY_TERM}
fqn={glossaryName}
onSuccess={handleGlossaryRedirection}
onValidateCsvString={handleImportCsv}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export const ModalWithCustomPropertyEditor = ({
destroyOnClose
className="description-markdown-editor"
closable={false}
data-testid="markdown-editor"
data-testid="custom-property-editor"
footer={[
<Button
data-testid="cancel"
Expand Down
18 changes: 13 additions & 5 deletions openmetadata-ui/src/main/resources/ui/src/utils/CSV/CSV.utils.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import {
ExtensionDataTypes,
} from '../../components/Modals/ModalWithCustomProperty/ModalWithMarkdownEditor.interface';
import { SEMICOLON_SPLITTER } from '../../constants/regex.constants';
import { EntityType } from '../../enums/entity.enum';
import {
CustomProperty,
EntityReference,
Expand Down Expand Up @@ -67,24 +68,31 @@ const statusRenderer = ({
);
};

export const getColumnConfig = (column: string): TypeColumn => {
export const getColumnConfig = (
column: string,
entityType: EntityType
): TypeColumn => {
const colType = column.split('.').pop() ?? '';

return {
header: startCase(column),
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) => {
Expand Down Expand Up @@ -145,7 +153,7 @@ const convertCustomPropertyStringToValueExtensionBasedOnType = (
value: string,
customProperty: CustomProperty
) => {
switch (customProperty.propertyType.name) {
switch (customProperty?.propertyType.name) {
case 'entityReference': {
const entity = value.split(':');

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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':
Expand Down Expand Up @@ -238,7 +239,7 @@ class CSVUtilsClassBase {
return (
<ModalWithCustomPropertyEditor
visible
entityType={EntityType.GLOSSARY_TERM}
entityType={entityType}
header="Edit CustomProperty"
value={value}
onCancel={props.onCancel}
Expand Down

0 comments on commit b4a8f51

Please sign in to comment.