From a430284aa21e3ae1f0d5654e55b2ad2852519cc2 Mon Sep 17 00:00:00 2001 From: wwf <yearningwang@iqtogether.com> Date: 星期三, 04 六月 2025 15:17:49 +0800 Subject: [PATCH] 初始化 --- app/components/datasets/documents/detail/completed/index.tsx | 73 ++++++++++++++++++------------------ 1 files changed, 37 insertions(+), 36 deletions(-) diff --git a/app/components/datasets/documents/detail/completed/index.tsx b/app/components/datasets/documents/detail/completed/index.tsx index 4fe0df2..d4a4f03 100644 --- a/app/components/datasets/documents/detail/completed/index.tsx +++ b/app/components/datasets/documents/detail/completed/index.tsx @@ -46,7 +46,6 @@ useUpdateSegment, } from '@/service/knowledge/use-segment' import { useInvalid } from '@/service/use-base' -import { noop } from 'lodash-es' const DEFAULT_LIMIT = 10 @@ -72,7 +71,7 @@ const SegmentListContext = createContext<SegmentListContextValue>({ isCollapsed: true, fullScreen: false, - toggleFullScreen: noop, + toggleFullScreen: () => {}, currSegment: { showModal: false }, currChildChunk: { showModal: false }, }) @@ -220,11 +219,13 @@ const resetList = useCallback(() => { setSelectedSegmentIds([]) invalidSegmentList() - }, [invalidSegmentList]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) const resetChildList = useCallback(() => { invalidChildSegmentList() - }, [invalidChildSegmentList]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []) const onClickCard = (detail: SegmentDetailModel, isEditMode = false) => { setCurrSegment({ segInfo: detail, showModal: true, isEditMode }) @@ -251,7 +252,7 @@ const invalidChunkListEnabled = useInvalid(useChunkListEnabledKey) const invalidChunkListDisabled = useInvalid(useChunkListDisabledKey) - const refreshChunkListWithStatusChanged = useCallback(() => { + const refreshChunkListWithStatusChanged = () => { switch (selectedStatus) { case 'all': invalidChunkListDisabled() @@ -260,7 +261,7 @@ default: invalidSegmentList() } - }, [selectedStatus, invalidChunkListDisabled, invalidChunkListEnabled, invalidSegmentList]) + } const onChangeSwitch = useCallback(async (enable: boolean, segId?: string) => { const operationApi = enable ? enableSegment : disableSegment @@ -278,7 +279,8 @@ notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) }, }) - }, [datasetId, documentId, selectedSegmentIds, segments, disableSegment, enableSegment, t, notify, refreshChunkListWithStatusChanged]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [datasetId, documentId, selectedSegmentIds, segments]) const { mutateAsync: deleteSegment } = useDeleteSegment() @@ -293,11 +295,12 @@ notify({ type: 'error', message: t('common.actionMsg.modifiedUnsuccessfully') }) }, }) - }, [datasetId, documentId, selectedSegmentIds, deleteSegment, resetList, t, notify]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [datasetId, documentId, selectedSegmentIds]) const { mutateAsync: updateSegment } = useUpdateSegment() - const refreshChunkListDataWithDetailChanged = useCallback(() => { + const refreshChunkListDataWithDetailChanged = () => { switch (selectedStatus) { case 'all': invalidChunkListDisabled() @@ -312,7 +315,7 @@ invalidChunkListEnabled() break } - }, [selectedStatus, invalidChunkListDisabled, invalidChunkListEnabled, invalidChunkListAll]) + } const handleUpdateSegment = useCallback(async ( segmentId: string, @@ -354,7 +357,6 @@ if (seg.id === segmentId) { seg.answer = res.data.answer seg.content = res.data.content - seg.sign_content = res.data.sign_content seg.keywords = res.data.keywords seg.word_count = res.data.word_count seg.hit_count = res.data.hit_count @@ -371,18 +373,17 @@ eventEmitter?.emit('update-segment-done') }, }) - }, [segments, datasetId, documentId, updateSegment, docForm, notify, eventEmitter, onCloseSegmentDetail, refreshChunkListDataWithDetailChanged, t]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [segments, datasetId, documentId]) useEffect(() => { resetList() - // eslint-disable-next-line react-hooks/exhaustive-deps }, [pathname]) useEffect(() => { if (importStatus === ProcessStatus.COMPLETED) resetList() - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [importStatus]) + }, [importStatus, resetList]) const onCancelBatchOperation = useCallback(() => { setSelectedSegmentIds([]) @@ -408,9 +409,9 @@ setSelectedSegmentIds((prev) => { const currentAllSegIds = segments.map(seg => seg.id) const prevSelectedIds = prev.filter(item => !currentAllSegIds.includes(item)) - return [...prevSelectedIds, ...(isAllSelected ? [] : currentAllSegIds)] + return [...prevSelectedIds, ...((isAllSelected || selectedSegmentIds.length > 0) ? [] : currentAllSegIds)] }) - }, [segments, isAllSelected]) + }, [segments, isAllSelected, selectedSegmentIds]) const totalText = useMemo(() => { const isSearch = searchValue !== '' || selectedStatus !== 'all' @@ -427,7 +428,8 @@ const count = segmentListData?.total || 0 return `${total} ${t('datasetDocuments.segment.searchResults', { count })}` } - }, [segmentListData, mode, parentMode, searchValue, selectedStatus, t]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [segmentListData?.total, mode, parentMode, searchValue, selectedStatus]) const toggleFullScreen = useCallback(() => { setFullScreen(!fullScreen) @@ -445,7 +447,8 @@ resetList() currentPage !== totalPages && setCurrentPage(totalPages) } - }, [segmentListData, limit, currentPage, resetList]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [segmentListData, limit, currentPage]) const { mutateAsync: deleteChildSegment } = useDeleteChildSegment() @@ -465,7 +468,8 @@ }, }, ) - }, [datasetId, documentId, parentMode, deleteChildSegment, resetList, resetChildList, t, notify]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [datasetId, documentId, parentMode]) const handleAddNewChildChunk = useCallback((parentChunkId: string) => { setShowNewChildSegmentModal(true) @@ -484,7 +488,8 @@ else { resetChildList() } - }, [parentMode, currChunkId, segments, refreshChunkListDataWithDetailChanged, resetChildList]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [parentMode, currChunkId, segments]) const viewNewlyAddedChildChunk = useCallback(() => { const totalPages = childChunkListData?.total_pages || 0 @@ -498,7 +503,8 @@ resetChildList() currentPage !== totalPages && setCurrentPage(totalPages) } - }, [childChunkListData, limit, currentPage, resetChildList]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [childChunkListData, limit, currentPage]) const onClickSlice = useCallback((detail: ChildChunkDetail) => { setCurrChildChunk({ childChunkInfo: detail, showModal: true }) @@ -552,7 +558,8 @@ eventEmitter?.emit('update-child-segment-done') }, }) - }, [segments, datasetId, documentId, parentMode, updateChildSegment, notify, eventEmitter, onCloseChildSegmentDetail, refreshChunkListDataWithDetailChanged, resetChildList, t]) + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [segments, childSegments, datasetId, documentId, parentMode]) const onClearFilter = useCallback(() => { setInputValue('') @@ -560,12 +567,6 @@ setSelectedStatus('all') setCurrentPage(1) }, []) - - const selectDefaultValue = useMemo(() => { - if (selectedStatus === 'all') - return 'all' - return selectedStatus ? 1 : 0 - }, [selectedStatus]) return ( <SegmentListContext.Provider value={{ @@ -580,15 +581,15 @@ <Checkbox className='shrink-0' checked={isAllSelected} - indeterminate={!isAllSelected && isSomeSelected} + mixed={!isAllSelected && isSomeSelected} onCheck={onSelectedAll} disabled={isLoadingSegmentList} /> - <div className={'system-sm-semibold-uppercase flex-1 pl-5 text-text-secondary'}>{totalText}</div> + <div className={'system-sm-semibold-uppercase pl-5 text-text-secondary flex-1'}>{totalText}</div> <SimpleSelect onSelect={onChangeStatus} items={statusList.current} - defaultValue={selectDefaultValue} + defaultValue={selectedStatus === 'all' ? 'all' : selectedStatus ? 1 : 0} className={s.select} wrapperClassName='h-fit mr-2' optionWrapClassName='w-[160px]' @@ -604,14 +605,14 @@ onChange={e => handleInputChange(e.target.value)} onClear={() => handleInputChange('')} /> - <Divider type='vertical' className='mx-3 h-3.5' /> + <Divider type='vertical' className='h-3.5 mx-3' /> <DisplayToggle isCollapsed={isCollapsed} toggleCollapsed={() => setIsCollapsed(!isCollapsed)} /> </div>} {/* Segment list */} { isFullDocMode ? <div className={cn( - 'flex grow flex-col overflow-x-hidden', + 'flex flex-col grow overflow-x-hidden', (isLoadingSegmentList || isLoadingChildSegmentList) ? 'overflow-y-hidden' : 'overflow-y-auto', )}> <SegmentCard @@ -655,7 +656,7 @@ /> } {/* Pagination */} - <Divider type='horizontal' className='mx-6 my-0 h-[1px] w-auto bg-divider-subtle' /> + <Divider type='horizontal' className='w-auto h-[1px] my-0 mx-6 bg-divider-subtle' /> <Pagination current={currentPage - 1} onChange={cur => setCurrentPage(cur + 1)} @@ -721,7 +722,7 @@ {/* Batch Action Buttons */} {selectedSegmentIds.length > 0 && <BatchAction - className='absolute bottom-16 left-0 z-20' + className='absolute left-0 bottom-16 z-20' selectedIds={selectedSegmentIds} onBatchEnable={onChangeSwitch.bind(null, true, '')} onBatchDisable={onChangeSwitch.bind(null, false, '')} -- Gitblit v1.8.0