diff --git a/web/src/pages/dataset/components/metedata/hooks/use-manage-values-modal.ts b/web/src/pages/dataset/components/metedata/hooks/use-manage-values-modal.ts index 90e1f97cd..4f532195f 100644 --- a/web/src/pages/dataset/components/metedata/hooks/use-manage-values-modal.ts +++ b/web/src/pages/dataset/components/metedata/hooks/use-manage-values-modal.ts @@ -120,7 +120,7 @@ export const useManageValues = (props: IManageValuesProps) => { if (isAddValueMode) { // tempValues, not metaData.values: the latter only syncs on input blur, // so a Confirm click that races the blur would queue the pre-blur ['']. - addUpdateValue(metaData.field, undefined, tempValues, metaData.valueType); + addUpdateValue(metaData.field, '', tempValues, metaData.valueType); } setShouldSave(true); }, [metaData, tempValues, type, valueError, isAddValueMode, addUpdateValue]); diff --git a/web/src/pages/dataset/components/metedata/interface.ts b/web/src/pages/dataset/components/metedata/interface.ts index 551eeb841..62eddf57e 100644 --- a/web/src/pages/dataset/components/metedata/interface.ts +++ b/web/src/pages/dataset/components/metedata/interface.ts @@ -98,7 +98,7 @@ export interface IManageValuesProps { onSave: (data: IMetaDataTableData) => void; addUpdateValue: ( key: string, - originalValue: string | undefined, + originalValue: string, newValue: string | string[], type?: MetadataValueType, ) => void; diff --git a/web/src/pages/dataset/components/metedata/manage-modal-column.tsx b/web/src/pages/dataset/components/metedata/manage-modal-column.tsx index 8aaedd575..5fc0d65e9 100644 --- a/web/src/pages/dataset/components/metedata/manage-modal-column.tsx +++ b/web/src/pages/dataset/components/metedata/manage-modal-column.tsx @@ -13,7 +13,7 @@ import { MetadataType, metadataValueTypeEnum, } from './constant'; -import { IMetaDataTableData } from './interface'; +import { IMetaDataTableData, MetadataValueType } from './interface'; interface IUseMetadataColumns { isDeleteSingleValue: boolean; @@ -25,6 +25,12 @@ interface IUseMetadataColumns { isShowDescription: boolean; setTableData: React.Dispatch>; setShouldSave: React.Dispatch>; + addUpdateValue: ( + key: string, + originalValue: string, + newValue: string | string[], + type?: MetadataValueType, + ) => void; } export const useMetadataColumns = ({ @@ -36,6 +42,7 @@ export const useMetadataColumns = ({ isShowDescription, setTableData, setShouldSave, + addUpdateValue, }: IUseMetadataColumns) => { const { t } = useTranslation(); const [deleteDialogContent, setDeleteDialogContent] = useState({ @@ -51,17 +58,29 @@ export const useMetadataColumns = ({ field: string; value: string; newValue: string; + valueType: MetadataValueType; } | null>(null); const [rowExpandedStates, setRowExpandedStates] = useState< Record >({}); - const handleEditValue = (field: string, value: string) => { - setEditingValue({ field, value, newValue: value }); + const handleEditValue = ( + field: string, + value: string, + valueType: MetadataValueType, + ) => { + setEditingValue({ field, value, newValue: value, valueType }); }; const saveEditedValue = useCallback( - (newValue?: { field: string; value: string; newValue: string }) => { + ( + newValue?: { + field: string; + value: string; + newValue: string; + valueType: MetadataValueType; + }, + ) => { const realValue = newValue || editingValue; if (realValue) { setTableData((prev) => { @@ -75,11 +94,19 @@ export const useMetadataColumns = ({ return row; }); }); + if (realValue.value !== realValue.newValue) { + addUpdateValue( + realValue.field, + realValue.value, + realValue.newValue, + realValue.valueType, + ); + } setEditingValue(null); setShouldSave(true); } }, - [editingValue, setTableData, setShouldSave], + [editingValue, setTableData, setShouldSave, addUpdateValue], ); const cancelEditValue = () => { @@ -278,7 +305,11 @@ export const useMetadataColumns = ({ variant={'ghost'} className="border border-border-button" onClick={() => - handleEditValue(row.getValue('field'), value) + handleEditValue( + row.getValue('field'), + value, + row.original.valueType || metadataValueTypeEnum.string, + ) } aria-label="Edit" > diff --git a/web/src/pages/dataset/components/metedata/manage-modal.tsx b/web/src/pages/dataset/components/metedata/manage-modal.tsx index 36a99dd7b..9cc649f65 100644 --- a/web/src/pages/dataset/components/metedata/manage-modal.tsx +++ b/web/src/pages/dataset/components/metedata/manage-modal.tsx @@ -210,6 +210,7 @@ export const ManageMetadataModal = (props: IManageModalProps) => { isShowDescription, showTypeColumn, setShouldSave, + addUpdateValue, }); const table = useReactTable({