feat: add loading state to child segment list component

pull/12097/head
twwu 1 year ago
parent cfde86252c
commit fb4d980096

@ -9,6 +9,7 @@ import Input from '@/app/components/base/input'
import classNames from '@/utils/classnames' import classNames from '@/utils/classnames'
import Divider from '@/app/components/base/divider' import Divider from '@/app/components/base/divider'
import { formatNumber } from '@/utils/format' import { formatNumber } from '@/utils/format'
import Loading from '@/app/components/base/loading'
type IChildSegmentCardProps = { type IChildSegmentCardProps = {
childChunks: ChildChunkDetail[] childChunks: ChildChunkDetail[]
@ -21,6 +22,7 @@ type IChildSegmentCardProps = {
total?: number total?: number
inputValue?: string inputValue?: string
onClearFilter?: () => void onClearFilter?: () => void
isLoading?: boolean
} }
const ChildSegmentList: FC<IChildSegmentCardProps> = ({ const ChildSegmentList: FC<IChildSegmentCardProps> = ({
@ -34,6 +36,7 @@ const ChildSegmentList: FC<IChildSegmentCardProps> = ({
total, total,
inputValue, inputValue,
onClearFilter, onClearFilter,
isLoading,
}) => { }) => {
const { t } = useTranslation() const { t } = useTranslation()
const parentMode = useDocumentContext(s => s.parentMode) const parentMode = useDocumentContext(s => s.parentMode)
@ -57,7 +60,7 @@ const ChildSegmentList: FC<IChildSegmentCardProps> = ({
}, [enabled]) }, [enabled])
const totalText = useMemo(() => { const totalText = useMemo(() => {
const isSearch = inputValue !== '' const isSearch = inputValue !== '' && isFullDocMode
if (!isSearch) { if (!isSearch) {
const text = isFullDocMode const text = isFullDocMode
? !total ? !total
@ -123,6 +126,7 @@ const ChildSegmentList: FC<IChildSegmentCardProps> = ({
{(isFullDocMode || !collapsed) {(isFullDocMode || !collapsed)
? <div className={classNames('flex gap-x-0.5', isFullDocMode ? 'grow' : '')}> ? <div className={classNames('flex gap-x-0.5', isFullDocMode ? 'grow' : '')}>
{isParagraphMode && <Divider type='vertical' className='h-auto w-[2px] mx-[7px] bg-text-accent-secondary' />} {isParagraphMode && <Divider type='vertical' className='h-auto w-[2px] mx-[7px] bg-text-accent-secondary' />}
{isLoading ? <Loading type='app' /> : null}
{childChunks.length > 0 {childChunks.length > 0
? <div className={classNames('w-full !leading-5 flex flex-col', isParagraphMode ? 'gap-y-2' : 'gap-y-3')}> ? <div className={classNames('w-full !leading-5 flex flex-col', isParagraphMode ? 'gap-y-2' : 'gap-y-3')}>
{childChunks.map((childChunk) => { {childChunks.map((childChunk) => {
@ -140,9 +144,11 @@ const ChildSegmentList: FC<IChildSegmentCardProps> = ({
/> />
})} })}
</div> </div>
: <div className='h-full w-full'> : inputValue !== ''
? <div className='h-full w-full'>
<Empty onClearFilter={onClearFilter!} /> <Empty onClearFilter={onClearFilter!} />
</div> </div>
: null
} }
</div> </div>
: null} : null}

@ -154,7 +154,7 @@ const Completed: FC<ICompletedProps> = ({
} }
}, [segments]) }, [segments])
const { data: childChunkListData } = useChildSegmentList( const { isFetching: isLoadingChildSegmentList, data: childChunkListData } = useChildSegmentList(
{ {
datasetId, datasetId,
documentId, documentId,
@ -550,6 +550,7 @@ const Completed: FC<ICompletedProps> = ({
total={childChunkListData?.total || 0} total={childChunkListData?.total || 0}
inputValue={inputValue} inputValue={inputValue}
onClearFilter={onClearFilter} onClearFilter={onClearFilter}
isLoading={isLoadingChildSegmentList}
/> />
</div> </div>
: <SegmentList : <SegmentList

Loading…
Cancel
Save