'use client' import type { FC } from 'react' import React, { useCallback, useState } from 'react' import Modal from '../../../base/modal' import { DataType, type MetadataItemWithEdit } from '../types' import EditMetadataBatchItem from './edit-row' import AddedMetadataItem from './add-row' import Button from '../../../base/button' import { useTranslation } from 'react-i18next' import Checkbox from '../../../base/checkbox' import Tooltip from '../../../base/tooltip' import SelectMetadataModal from '../select-metadata-modal' import { RiQuestionLine } from '@remixicon/react' import Divider from '@/app/components/base/divider' import AddMetadataButton from '../add-metadata-button' const i18nPrefix = 'dataset.metadata.batchEditMetadata' type Props = { documentNum: number list: MetadataItemWithEdit[] onChange: (list: MetadataItemWithEdit[], addedList: MetadataItemWithEdit[], isApplyToAllSelectDocument: boolean) => void onHide: () => void } const EditMetadataBatchModal: FC = ({ documentNum, list, onChange, onHide, }) => { const { t } = useTranslation() const [templeList, setTempleList] = useState(list) const handleTemplesChange = useCallback((payload: MetadataItemWithEdit) => { const newTempleList = templeList.map(i => i.id === payload.id ? payload : i) setTempleList(newTempleList) }, [templeList]) const handleTempleItemRemove = useCallback((id: string) => { const newTempleList = templeList.filter(i => i.id !== id) setTempleList(newTempleList) }, [templeList]) const testAddedList: MetadataItemWithEdit[] = [ { id: '1', name: 'name1', type: DataType.string, value: 'aaa', }, { id: '2.1', name: 'num v', type: DataType.number, value: 10, }, ] const [addedList, setAddedList] = useState(testAddedList) const handleAddedListChange = useCallback((payload: MetadataItemWithEdit) => { const newAddedList = addedList.map(i => i.id === payload.id ? payload : i) setAddedList(newAddedList) }, [addedList]) const handleAddedItemRemove = useCallback((removeIndex: number) => { return () => { const newAddedList = addedList.filter((i, index) => index !== removeIndex) setAddedList(newAddedList) } }, [addedList]) const [isApplyToAllSelectDocument, setIsApplyToAllSelectDocument] = useState(false) const handleSave = useCallback(() => { onChange(templeList, addedList, isApplyToAllSelectDocument) }, [templeList, addedList, isApplyToAllSelectDocument, onChange]) return (
{t(`${i18nPrefix}.editDocumentsNum`, { num: documentNum })}
{/* TODO handle list scroll. There is two list. */}
{templeList.map(item => ( ))}
{t('dataset.metadata.createMetadata.title')}
{addedList.map((item, i) => ( ))}
} onSave={data => setAddedList([...addedList, data])} />
setIsApplyToAllSelectDocument(!isApplyToAllSelectDocument)} />
{t(`${i18nPrefix}.applyToAllSelectDocument`)}
{t(`${i18nPrefix}.applyToAllSelectDocumentTip`)}
} >
) } export default React.memo(EditMetadataBatchModal)