1
1
import styles from './sidebar.module.scss'
2
- import React from 'react'
3
- import { Link , useLocation , useParams , useSearchParams } from 'react-router-dom'
4
- import Constants from '../../constants'
5
- import { DBConnection , DBDataModel , DBQuery , User } from '../../data/models'
6
- import { useAppDispatch , useAppSelector } from '../../redux/hooks'
7
- import { selectDBConnection , selectDBDataModels , selectDBDQueries } from '../../redux/dbConnectionSlice'
8
- import { DBConnType , TabType } from '../../data/defaults'
2
+ import { useLocation } from 'react-router-dom'
3
+ import { DBConnection } from '../../data/models'
4
+ import { useAppSelector } from '../../redux/hooks'
5
+ import { selectDBConnection } from '../../redux/dbConnectionSlice'
9
6
import HomeSidebar from './sidebars/homesidebar'
10
- import { createTab } from '../../redux/tabsSlice '
11
- import { selectCurrentUser } from '../../redux/currentUserSlice '
7
+ import DatabaseSidebar from './sidebars/dbsidebar '
8
+ import SettingSidebar from './sidebars/settingsidebar '
12
9
13
10
enum SidebarViewType {
14
11
HOME = "HOME" , // home sidebar
15
- DATABASE = "DATABASE" , // Used to show elements of single database
12
+ DATABASE = "DATABASE" , // Used to show elements of database screen
16
13
SETTINGS = "SETTINGS" // Used to show elements of settings screen
17
14
}
18
15
@@ -25,28 +22,6 @@ const Sidebar = () => {
25
22
SidebarViewType . DATABASE : ( location . pathname . startsWith ( "/settings" ) ) ? SidebarViewType . SETTINGS : SidebarViewType . HOME
26
23
27
24
const dbConnection : DBConnection | undefined = useAppSelector ( selectDBConnection )
28
- const currentUser : User = useAppSelector ( selectCurrentUser )
29
- const dbDataModels : DBDataModel [ ] = useAppSelector ( selectDBDataModels )
30
- const dbQueries : DBQuery [ ] = useAppSelector ( selectDBDQueries )
31
-
32
- const dispatch = useAppDispatch ( )
33
-
34
-
35
- const openDataTab = ( schema : string , name : string ) => {
36
- dispatch ( createTab ( { dbConnId : dbConnection ! . id , tabType : TabType . DATA , metadata : { schema, name } } ) )
37
- }
38
-
39
- const openQueryTab = ( queryId : string ) => {
40
- dispatch ( createTab ( { dbConnId : dbConnection ! . id , tabType : TabType . QUERY , metadata : { queryId } } ) )
41
- }
42
-
43
- const openConsoleTab = ( ) => {
44
- dispatch ( createTab ( { dbConnId : dbConnection ! . id , tabType : TabType . CONSOLE , metadata : { } } ) )
45
- }
46
-
47
- const openGenerateSQLTab = ( ) => {
48
- dispatch ( createTab ( { dbConnId : dbConnection ! . id , tabType : TabType . GENSQL , metadata : { } } ) )
49
- }
50
25
51
26
return (
52
27
< aside className = { "menu " + styles . sidebar } >
@@ -55,140 +30,10 @@ const Sidebar = () => {
55
30
< HomeSidebar />
56
31
}
57
32
{ sidebarView === SidebarViewType . DATABASE && dbConnection &&
58
- < React . Fragment >
59
- < p className = "menu-label" >
60
- Data Models
61
- </ p >
62
- < ul className = { "menu-list " + styles . menuList } >
63
- { dbDataModels . map ( ( dataModel : DBDataModel ) => {
64
- const label = dbConnection . type === DBConnType . POSTGRES ? `${ dataModel . schemaName } .${ dataModel . name } ` : `${ dataModel . name } `
65
- return (
66
- < li key = { dataModel . schemaName + dataModel . name } >
67
- < a onClick = { ( ) => openDataTab ( dataModel . schemaName ?? "" , dataModel . name ) } >
68
- { label }
69
- </ a >
70
- </ li >
71
- )
72
- } ) }
73
- </ ul >
74
- < p className = "menu-label" >
75
- Queries
76
- </ p >
77
- < ul className = { "menu-list " + styles . menuList } >
78
- { dbQueries . map ( ( dbQuery : DBQuery ) => {
79
- return (
80
- < li key = { dbQuery . id } >
81
- < a onClick = { ( ) => openQueryTab ( dbQuery . id ) } >
82
- { dbQuery . name }
83
- </ a >
84
- </ li >
85
- )
86
- } ) }
87
- < li >
88
- < a onClick = { ( ) => openQueryTab ( "new" ) } >
89
- < span className = "icon" >
90
- < i className = "fas fa-plus-circle" > </ i >
91
- </ span >
92
- New Query
93
- </ a >
94
- </ li >
95
- </ ul >
96
- < p className = "menu-label" >
97
- Toolbox
98
- </ p >
99
- < ul className = { "menu-list " + styles . menuList } >
100
- < li >
101
- < a onClick = { ( ) => openConsoleTab ( ) } >
102
- < span className = "icon" >
103
- < i className = "fas fa-terminal" > </ i >
104
- </ span >
105
- Console
106
- </ a >
107
- </ li >
108
- < li >
109
- < a onClick = { ( ) => openGenerateSQLTab ( ) } >
110
- < span className = "icon" >
111
- < i className = "fas fa-magic" > </ i >
112
- </ span >
113
- Generate SQL
114
- </ a >
115
- </ li >
116
- </ ul >
117
- </ React . Fragment >
33
+ < DatabaseSidebar />
118
34
}
119
35
{ sidebarView === SidebarViewType . SETTINGS &&
120
- < React . Fragment >
121
- < p className = "menu-label" >
122
- Settings
123
- </ p >
124
- < ul className = { "menu-list " + styles . menuList } >
125
- { Constants . Build === 'server' &&
126
- < li >
127
- < Link
128
- to = { Constants . APP_PATHS . SETTINGS_ACCOUNT . path }
129
- className = { location . pathname . startsWith ( Constants . APP_PATHS . SETTINGS_ACCOUNT . path ) ? 'is-active' : '' } >
130
- Account
131
- </ Link >
132
- </ li >
133
- }
134
- < li >
135
- < Link
136
- to = { Constants . APP_PATHS . SETTINGS_GENERAL . path }
137
- className = { location . pathname . startsWith ( Constants . APP_PATHS . SETTINGS_GENERAL . path ) ? 'is-active' : '' } >
138
- General
139
- </ Link >
140
- </ li >
141
- < li >
142
- < Link
143
- to = { Constants . APP_PATHS . SETTINGS_ADVANCED . path }
144
- className = { location . pathname . startsWith ( Constants . APP_PATHS . SETTINGS_ADVANCED . path ) ? 'is-active' : '' } >
145
- Advanced
146
- </ Link >
147
- </ li >
148
- </ ul >
149
- { Constants . Build === 'server' && currentUser && currentUser . isRoot &&
150
- < React . Fragment >
151
- < p className = "menu-label" >
152
- Manage Team
153
- </ p >
154
- < ul className = { "menu-list " + styles . menuList } >
155
- < li >
156
- < Link
157
- to = { Constants . APP_PATHS . SETTINGS_USERS . path }
158
- className = { location . pathname . startsWith ( Constants . APP_PATHS . SETTINGS_USERS . path ) ? 'is-active' : '' } >
159
- Manage Users
160
- </ Link >
161
- </ li >
162
- < li >
163
- < Link
164
- to = { Constants . APP_PATHS . SETTINGS_ROLES . path }
165
- className = { location . pathname === Constants . APP_PATHS . SETTINGS_ROLES . path ? 'is-active' : '' } >
166
- Manage Roles
167
- </ Link >
168
- </ li >
169
- </ ul >
170
- </ React . Fragment >
171
- }
172
- < p className = "menu-label" >
173
- Info
174
- </ p >
175
- < ul className = { "menu-list " + styles . menuList } >
176
- < li >
177
- < Link
178
- to = { Constants . APP_PATHS . SETTINGS_ABOUT . path }
179
- className = { location . pathname === Constants . APP_PATHS . SETTINGS_ABOUT . path ? 'is-active' : '' } >
180
- About
181
- </ Link >
182
- </ li >
183
- < li >
184
- < Link
185
- to = { Constants . APP_PATHS . SETTINGS_SUPPORT . path }
186
- className = { location . pathname === Constants . APP_PATHS . SETTINGS_SUPPORT . path ? 'is-active' : '' } >
187
- Support
188
- </ Link >
189
- </ li >
190
- </ ul >
191
- </ React . Fragment >
36
+ < SettingSidebar />
192
37
}
193
38
</ div >
194
39
</ aside >
0 commit comments