balibabu
commited on
Commit
·
712affb
1
Parent(s):
52a51dc
feat: When the mindmap data is empty, it will not be displayed on the search page #2247 (#2414)
Browse files### What problem does this PR solve?
feat: When the mindmap data is empty, it will not be displayed 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)
web/src/interfaces/database/knowledge.ts
CHANGED
|
@@ -101,6 +101,7 @@ export interface ITestingChunk {
|
|
| 101 |
vector_similarity: number;
|
| 102 |
highlight: string;
|
| 103 |
positions: number[][];
|
|
|
|
| 104 |
}
|
| 105 |
|
| 106 |
export interface ITestingDocument {
|
|
|
|
| 101 |
vector_similarity: number;
|
| 102 |
highlight: string;
|
| 103 |
positions: number[][];
|
| 104 |
+
docnm_kwd: string;
|
| 105 |
}
|
| 106 |
|
| 107 |
export interface ITestingDocument {
|
web/src/pages/search/index.less
CHANGED
|
@@ -3,7 +3,6 @@
|
|
| 3 |
background-size: cover;
|
| 4 |
.card {
|
| 5 |
width: 100%;
|
| 6 |
-
cursor: pointer;
|
| 7 |
:global(.ant-card-body) {
|
| 8 |
padding: 14px;
|
| 9 |
}
|
|
@@ -101,6 +100,9 @@
|
|
| 101 |
font-style: normal;
|
| 102 |
}
|
| 103 |
}
|
|
|
|
|
|
|
|
|
|
| 104 |
}
|
| 105 |
.answerWrapper {
|
| 106 |
margin-top: 16px;
|
|
|
|
| 3 |
background-size: cover;
|
| 4 |
.card {
|
| 5 |
width: 100%;
|
|
|
|
| 6 |
:global(.ant-card-body) {
|
| 7 |
padding: 14px;
|
| 8 |
}
|
|
|
|
| 100 |
font-style: normal;
|
| 101 |
}
|
| 102 |
}
|
| 103 |
+
.documentReference {
|
| 104 |
+
cursor: pointer;
|
| 105 |
+
}
|
| 106 |
}
|
| 107 |
.answerWrapper {
|
| 108 |
margin-top: 16px;
|
web/src/pages/search/index.tsx
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
|
|
| 1 |
import HightLightMarkdown from '@/components/highlight-markdown';
|
| 2 |
import { ImageWithPopover } from '@/components/image';
|
| 3 |
import IndentedTree from '@/components/indented-tree/indented-tree';
|
|
@@ -56,7 +57,6 @@ const SearchPage = () => {
|
|
| 56 |
sendingLoading,
|
| 57 |
relatedQuestions,
|
| 58 |
mindMap,
|
| 59 |
-
mindMapLoading,
|
| 60 |
searchStr,
|
| 61 |
loading,
|
| 62 |
isFirstRender,
|
|
@@ -74,11 +74,10 @@ const SearchPage = () => {
|
|
| 74 |
|
| 75 |
const isMindMapEmpty = useMemo(() => {
|
| 76 |
return (
|
| 77 |
-
|
| 78 |
-
|
| 79 |
-
!Array.isArray(mindMap?.children))
|
| 80 |
);
|
| 81 |
-
}, [mindMap
|
| 82 |
|
| 83 |
const InputSearch = (
|
| 84 |
<Search
|
|
@@ -160,34 +159,46 @@ const SearchPage = () => {
|
|
| 160 |
className={styles.chunks}
|
| 161 |
renderItem={(item) => (
|
| 162 |
<List.Item>
|
| 163 |
-
<Card
|
| 164 |
-
className={styles.card}
|
| 165 |
-
onClick={() =>
|
| 166 |
-
clickDocumentButton(item.doc_id, item as any)
|
| 167 |
-
}
|
| 168 |
-
>
|
| 169 |
<Space>
|
| 170 |
<ImageWithPopover
|
| 171 |
id={item.img_id}
|
| 172 |
></ImageWithPopover>
|
| 173 |
-
<
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
<
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
|
| 180 |
-
|
| 181 |
-
|
| 182 |
-
|
| 183 |
-
|
| 184 |
-
|
| 185 |
-
|
| 186 |
-
|
| 187 |
-
|
| 188 |
-
|
| 189 |
-
|
| 190 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 191 |
</Space>
|
| 192 |
</Card>
|
| 193 |
</List.Item>
|
|
@@ -220,15 +231,11 @@ const SearchPage = () => {
|
|
| 220 |
<section
|
| 221 |
className={isMindMapEmpty ? styles.hide : styles.graph}
|
| 222 |
>
|
| 223 |
-
|
| 224 |
-
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
show
|
| 229 |
-
style={{ width: '100%', height: '100%' }}
|
| 230 |
-
></IndentedTree>
|
| 231 |
-
)}
|
| 232 |
</section>
|
| 233 |
</Flex>
|
| 234 |
)}
|
|
|
|
| 1 |
+
import FileIcon from '@/components/file-icon';
|
| 2 |
import HightLightMarkdown from '@/components/highlight-markdown';
|
| 3 |
import { ImageWithPopover } from '@/components/image';
|
| 4 |
import IndentedTree from '@/components/indented-tree/indented-tree';
|
|
|
|
| 57 |
sendingLoading,
|
| 58 |
relatedQuestions,
|
| 59 |
mindMap,
|
|
|
|
| 60 |
searchStr,
|
| 61 |
loading,
|
| 62 |
isFirstRender,
|
|
|
|
| 74 |
|
| 75 |
const isMindMapEmpty = useMemo(() => {
|
| 76 |
return (
|
| 77 |
+
(Array.isArray(mindMap?.children) && mindMap.children.length === 0) ||
|
| 78 |
+
!Array.isArray(mindMap?.children)
|
|
|
|
| 79 |
);
|
| 80 |
+
}, [mindMap]);
|
| 81 |
|
| 82 |
const InputSearch = (
|
| 83 |
<Search
|
|
|
|
| 159 |
className={styles.chunks}
|
| 160 |
renderItem={(item) => (
|
| 161 |
<List.Item>
|
| 162 |
+
<Card className={styles.card}>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 163 |
<Space>
|
| 164 |
<ImageWithPopover
|
| 165 |
id={item.img_id}
|
| 166 |
></ImageWithPopover>
|
| 167 |
+
<Flex vertical gap={10}>
|
| 168 |
+
<Popover
|
| 169 |
+
content={
|
| 170 |
+
<div className={styles.popupMarkdown}>
|
| 171 |
+
<HightLightMarkdown>
|
| 172 |
+
{item.content_with_weight}
|
| 173 |
+
</HightLightMarkdown>
|
| 174 |
+
</div>
|
| 175 |
+
}
|
| 176 |
+
>
|
| 177 |
+
<div
|
| 178 |
+
dangerouslySetInnerHTML={{
|
| 179 |
+
__html: DOMPurify.sanitize(
|
| 180 |
+
`${item.highlight}...`,
|
| 181 |
+
),
|
| 182 |
+
}}
|
| 183 |
+
className={styles.highlightContent}
|
| 184 |
+
></div>
|
| 185 |
+
</Popover>
|
| 186 |
+
<Space
|
| 187 |
+
className={styles.documentReference}
|
| 188 |
+
onClick={() =>
|
| 189 |
+
clickDocumentButton(
|
| 190 |
+
item.doc_id,
|
| 191 |
+
item as any,
|
| 192 |
+
)
|
| 193 |
+
}
|
| 194 |
+
>
|
| 195 |
+
<FileIcon
|
| 196 |
+
id={item.img_id}
|
| 197 |
+
name={item.docnm_kwd}
|
| 198 |
+
></FileIcon>
|
| 199 |
+
{item.docnm_kwd}
|
| 200 |
+
</Space>
|
| 201 |
+
</Flex>
|
| 202 |
</Space>
|
| 203 |
</Card>
|
| 204 |
</List.Item>
|
|
|
|
| 231 |
<section
|
| 232 |
className={isMindMapEmpty ? styles.hide : styles.graph}
|
| 233 |
>
|
| 234 |
+
<IndentedTree
|
| 235 |
+
data={mindMap}
|
| 236 |
+
show
|
| 237 |
+
style={{ width: '100%', height: '100%' }}
|
| 238 |
+
></IndentedTree>
|
|
|
|
|
|
|
|
|
|
|
|
|
| 239 |
</section>
|
| 240 |
</Flex>
|
| 241 |
)}
|