Browse Source

feat: Use Spin to wrap the chunk list on the search page #2247 (#2409)

### What problem does this PR solve?

feat: Use Spin to wrap the chunk list on the search page #2247
### Type of change

- [ ] Bug Fix (non-breaking change which fixes an issue)
- [x] New Feature (non-breaking change which adds functionality)
- [ ] Documentation Update
- [ ] Refactoring
- [ ] Performance Improvement
- [ ] Other (please describe):
tags/v0.11.0
balibabu 1 year ago
parent
commit
8f2c0176b4
No account linked to committer's email address
3 changed files with 56 additions and 38 deletions
  1. 18
    3
      web/src/pages/search/hooks.ts
  2. 1
    0
      web/src/pages/search/index.less
  3. 37
    35
      web/src/pages/search/index.tsx

+ 18
- 3
web/src/pages/search/hooks.ts View File

const [isFirstRender, setIsFirstRender] = useState(true); const [isFirstRender, setIsFirstRender] = useState(true);
const [selectedDocumentIds, setSelectedDocumentIds] = useState<string[]>([]); const [selectedDocumentIds, setSelectedDocumentIds] = useState<string[]>([]);


const { pagination } = useGetPaginationWithRouter();
const { pagination, setPagination } = useGetPaginationWithRouter();


const sendQuestion = useCallback( const sendQuestion = useCallback(
(question: string) => { (question: string) => {
const q = trim(question); const q = trim(question);
if (isEmpty(q)) return; if (isEmpty(q)) return;
setPagination({ page: 1 });
setIsFirstRender(false); setIsFirstRender(false);
setCurrentAnswer({} as IAnswer); setCurrentAnswer({} as IAnswer);
setSendingLoading(true); setSendingLoading(true);
send({ kb_ids: kbIds, question: q }); send({ kb_ids: kbIds, question: q });
testChunk({ kb_id: kbIds, highlight: true, question: q });
testChunk({
kb_id: kbIds,
highlight: true,
question: q,
page: 1,
size: pagination.pageSize,
});
fetchMindMap({ fetchMindMap({
question: q, question: q,
kb_ids: kbIds, kb_ids: kbIds,
}); });
fetchRelatedQuestions(q); fetchRelatedQuestions(q);
}, },
[send, testChunk, kbIds, fetchRelatedQuestions, fetchMindMap],
[
send,
testChunk,
kbIds,
fetchRelatedQuestions,
fetchMindMap,
setPagination,
pagination.pageSize,
],
); );


const handleSearchStrChange: ChangeEventHandler<HTMLInputElement> = const handleSearchStrChange: ChangeEventHandler<HTMLInputElement> =

+ 1
- 0
web/src/pages/search/index.less View File

background-size: cover; background-size: cover;
.card { .card {
width: 100%; width: 100%;
cursor: pointer;
:global(.ant-card-body) { :global(.ant-card-body) {
padding: 14px; padding: 14px;
} }

+ 37
- 35
web/src/pages/search/index.tsx View File

Popover, Popover,
Skeleton, Skeleton,
Space, Space,
Spin,
Tag, Tag,
} from 'antd'; } from 'antd';
import { useMemo, useState } from 'react'; import { useMemo, useState } from 'react';
onTesting={handleTestChunk} onTesting={handleTestChunk}
></RetrievalDocuments> ></RetrievalDocuments>
<Divider></Divider> <Divider></Divider>
{chunks.length > 0 && (
<List
dataSource={chunks}
loading={loading}
className={styles.chunks}
renderItem={(item) => (
<List.Item>
<Card
className={styles.card}
onClick={() =>
clickDocumentButton(item.doc_id, item as any)
}
>
<Space>
<ImageWithPopover
id={item.img_id}
></ImageWithPopover>
<Popover
content={
<div className={styles.popupMarkdown}>
<Spin spinning={loading}>
{chunks.length > 0 && (
<List
dataSource={chunks}
className={styles.chunks}
renderItem={(item) => (
<List.Item>
<Card
className={styles.card}
onClick={() =>
clickDocumentButton(item.doc_id, item as any)
}
>
<Space>
<ImageWithPopover
id={item.img_id}
></ImageWithPopover>
<Popover
content={
<div className={styles.popupMarkdown}>
<HightLightMarkdown>
{item.content_with_weight}
</HightLightMarkdown>
</div>
}
>
<div>
<HightLightMarkdown> <HightLightMarkdown>
{item.content_with_weight}
{item.highlight}
</HightLightMarkdown> </HightLightMarkdown>
</div> </div>
}
>
<div>
<HightLightMarkdown>
{item.highlight}
</HightLightMarkdown>
</div>
</Popover>
</Space>
</Card>
</List.Item>
)}
/>
)}
</Popover>
</Space>
</Card>
</List.Item>
)}
/>
)}
</Spin>
{relatedQuestions?.length > 0 && ( {relatedQuestions?.length > 0 && (
<Card title={t('chat.relatedQuestion')}> <Card title={t('chat.relatedQuestion')}>
<Flex wrap="wrap" gap={'10px 0'}> <Flex wrap="wrap" gap={'10px 0'}>

Loading…
Cancel
Save