1
1
import { Tabs , TabPane } from "@douyinfe/semi-ui" ;
2
2
import { Tab } from "../../data/constants" ;
3
- import { useLayout , useSelect , useDiagram } from "../../hooks" ;
3
+ import {
4
+ useLayout ,
5
+ useSelect ,
6
+ useDiagram ,
7
+ useAreas ,
8
+ useNotes ,
9
+ useEnums ,
10
+ useTypes ,
11
+ } from "../../hooks" ;
4
12
import RelationshipsTab from "./RelationshipsTab/RelationshipsTab" ;
5
13
import TypesTab from "./TypesTab/TypesTab" ;
6
14
import Issues from "./Issues" ;
@@ -17,39 +25,64 @@ import i18n from "../../i18n/i18n";
17
25
export default function SidePanel ( { width, resize, setResize } ) {
18
26
const { layout } = useLayout ( ) ;
19
27
const { selectedElement, setSelectedElement } = useSelect ( ) ;
20
- const { database } = useDiagram ( ) ;
28
+ const { database, tablesCount, relationshipsCount } = useDiagram ( ) ;
29
+ const { areasCount } = useAreas ( ) ;
30
+ const { notesCount } = useNotes ( ) ;
31
+ const { typesCount } = useTypes ( ) ;
32
+ const { enumsCount } = useEnums ( ) ;
21
33
const { t } = useTranslation ( ) ;
22
34
23
35
const tabList = useMemo ( ( ) => {
24
36
const tabs = [
25
- { tab : t ( "tables" ) , itemKey : Tab . TABLES , component : < TablesTab /> } ,
26
37
{
27
- tab : t ( "relationships" ) ,
38
+ tab : `${ t ( "tables" ) } (${ tablesCount } )` ,
39
+ itemKey : Tab . TABLES ,
40
+ component : < TablesTab /> ,
41
+ } ,
42
+ {
43
+ tab : `${ t ( "relationships" ) } (${ relationshipsCount } )` ,
28
44
itemKey : Tab . RELATIONSHIPS ,
29
45
component : < RelationshipsTab /> ,
30
46
} ,
31
- { tab : t ( "subject_areas" ) , itemKey : Tab . AREAS , component : < AreasTab /> } ,
32
- { tab : t ( "notes" ) , itemKey : Tab . NOTES , component : < NotesTab /> } ,
47
+ {
48
+ tab : `${ t ( "subject_areas" ) } (${ areasCount } )` ,
49
+ itemKey : Tab . AREAS ,
50
+ component : < AreasTab /> ,
51
+ } ,
52
+ {
53
+ tab : `${ t ( "notes" ) } (${ notesCount } )` ,
54
+ itemKey : Tab . NOTES ,
55
+ component : < NotesTab /> ,
56
+ } ,
33
57
] ;
34
58
35
59
if ( databases [ database ] . hasTypes ) {
36
60
tabs . push ( {
37
- tab : t ( "types" ) ,
61
+ tab : ` ${ t ( "types" ) } ( ${ typesCount } )` ,
38
62
itemKey : Tab . TYPES ,
39
63
component : < TypesTab /> ,
40
64
} ) ;
41
65
}
42
66
43
67
if ( databases [ database ] . hasEnums ) {
44
68
tabs . push ( {
45
- tab : t ( "enums" ) ,
69
+ tab : ` ${ t ( "enums" ) } ( ${ enumsCount } )` ,
46
70
itemKey : Tab . ENUMS ,
47
71
component : < EnumsTab /> ,
48
72
} ) ;
49
73
}
50
74
51
75
return isRtl ( i18n . language ) ? tabs . reverse ( ) : tabs ;
52
- } , [ t , database ] ) ;
76
+ } , [
77
+ t ,
78
+ database ,
79
+ tablesCount ,
80
+ relationshipsCount ,
81
+ areasCount ,
82
+ typesCount ,
83
+ enumsCount ,
84
+ notesCount ,
85
+ ] ) ;
53
86
54
87
return (
55
88
< div className = "flex h-full" >
0 commit comments