diff --git a/web/app/(commonLayout)/datasets/Container.tsx b/web/app/(commonLayout)/datasets/Container.tsx
index 652cfa69bc..47acc9b51b 100644
--- a/web/app/(commonLayout)/datasets/Container.tsx
+++ b/web/app/(commonLayout)/datasets/Container.tsx
@@ -21,7 +21,7 @@ import Input from '@/app/components/base/input'
import { ApiConnectionMod } from '@/app/components/base/icons/src/vender/solid/development'
import CheckboxWithLabel from '@/app/components/datasets/create/website/base/checkbox-with-label'
// import DatasetMetadataDrawer from '@/app/components/datasets/metadata/dataset-metadata-drawer'
-import NoData from '@/app/components/datasets/metadata/metadata-document/no-data'
+import MetaDataDocument from '@/app/components/datasets/metadata/metadata-document'
// Services
import { fetchDatasetApiBaseUrl } from '@/service/datasets'
@@ -92,8 +92,8 @@ const Container = () => {
return (
-
-
{ }} />
+
+
{/*
select} onSave={(data) => { console.log(data) }} />
add} hasBack onSave={(data) => { console.log(data) }} />
+ )
+}
+
+export default React.memo(MetadataDocument)
diff --git a/web/app/components/datasets/metadata/metadata-document/info-group.tsx b/web/app/components/datasets/metadata/metadata-document/info-group.tsx
new file mode 100644
index 0000000000..311cb1a29c
--- /dev/null
+++ b/web/app/components/datasets/metadata/metadata-document/info-group.tsx
@@ -0,0 +1,66 @@
+'use client'
+import type { FC } from 'react'
+import React from 'react'
+import type { MetadataItemWithValue } from '../types'
+import Field from './field'
+import InputCombined from '../edit-metadata-batch/input-combined'
+import { RiDeleteBinLine } from '@remixicon/react'
+import Tooltip from '@/app/components/base/tooltip'
+
+type Props = {
+ title: string
+ titleTooltip?: string
+ headerRight?: React.ReactNode
+ list: MetadataItemWithValue[]
+ isEdit?: boolean
+ onChange?: (item: MetadataItemWithValue) => void
+ onDelete?: (item: MetadataItemWithValue) => void
+ onAdd?: (item: MetadataItemWithValue) => void
+}
+
+const InfoGroup: FC = ({
+ title,
+ titleTooltip,
+ headerRight,
+ list,
+ isEdit,
+ onChange,
+ onDelete,
+ onAdd,
+}) => {
+ return (
+
+
+
+
{title}
+ {titleTooltip && (
+
+ )}
+
+ {headerRight}
+ {/*
setIsEdit(true)}>
+
*/}
+
+
+ {list.map((item, i) => (
+
+ {isEdit ? (
+
+
onChange?.({ ...item, value })}
+ />
+
+
+
+
+ ) : ({item.value}
)}
+
+ ))}
+
+
+ )
+}
+export default React.memo(InfoGroup)
diff --git a/web/app/components/datasets/metadata/types.ts b/web/app/components/datasets/metadata/types.ts
index 1b4cb06704..dbbe8a95c2 100644
--- a/web/app/components/datasets/metadata/types.ts
+++ b/web/app/components/datasets/metadata/types.ts
@@ -10,6 +10,10 @@ export type MetadataItem = {
name: string
}
+export type MetadataItemWithValue = MetadataItem & {
+ value: string | number
+}
+
export type MetadataItemWithValueLength = MetadataItem & {
valueLength: number
}
@@ -17,8 +21,7 @@ export enum UpdateType {
changeValue = 'changeValue',
delete = 'delete',
}
-export type MetadataItemWithEdit = MetadataItem & {
- value: string | number
+export type MetadataItemWithEdit = MetadataItemWithValue & {
isMultipleValue?: boolean
isUpdated?: boolean
updateType?: UpdateType