@@ -2,15 +2,13 @@ import styles from './styles.module.scss';
22import TreeView , { TreeViewItemData } from '../TreeView' ;
33import { useState , useMemo , useCallback } from 'react' ;
44import { useWindowTab } from 'renderer/contexts/WindowTabProvider' ;
5- import QueryWindow from 'renderer/screens/DatabaseScreen/QueryWindow' ;
65import { useSchema } from 'renderer/contexts/SchemaProvider' ;
7- import { QueryBuilder } from 'libs/QueryBuilder' ;
86import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' ;
97import {
108 faCalendar ,
11- faCode ,
129 faEye ,
1310 faGear ,
11+ faTableCells ,
1412 faTableList ,
1513} from '@fortawesome/free-solid-svg-icons' ;
1614import { useContextMenu } from 'renderer/contexts/ContextMenuProvider' ;
@@ -20,6 +18,7 @@ import DatabaseSelection from './DatabaseSelection';
2018import ListViewEmptyState from '../ListView/ListViewEmptyState' ;
2119import TextField from '../TextField' ;
2220import { useDebounce } from 'hooks/useDebounce' ;
21+ import TableDataViewer from 'renderer/screens/DatabaseScreen/TableDataViewer' ;
2322
2423type SelectedTreeViewItem = TreeViewItemData < {
2524 database : string ;
@@ -39,27 +38,28 @@ export default function DatabaseTableList() {
3938 'triggers' ,
4039 ] ) ;
4140
42- const select200RowCallback = useCallback ( ( item : SelectedTreeViewItem ) => {
43- const tableName = item . data ?. name ;
44- const type = item . data ?. type ;
45- if ( ( type === 'table' || type === 'view' ) && tableName ) {
46- newWindow (
47- `SELECT ${ tableName } ` ,
48- ( key , name ) => (
49- < QueryWindow
50- initialSql = { new QueryBuilder ( 'mysql' )
51- . table ( tableName )
52- . limit ( 200 )
53- . toRawSQL ( ) }
54- initialRun
55- tabKey = { key }
56- name = { name }
57- />
58- ) ,
59- { icon : < FontAwesomeIcon icon = { faCode } /> }
60- ) ;
61- }
62- } , [ ] ) ;
41+ const viewTableData = useCallback (
42+ ( item : SelectedTreeViewItem ) => {
43+ const tableName = item . data ?. name ;
44+ const databaseName = item . data ?. database ;
45+ const type = item . data ?. type ;
46+ if ( ( type === 'table' || type === 'view' ) && tableName && databaseName ) {
47+ newWindow (
48+ tableName ,
49+ ( key , name ) => (
50+ < TableDataViewer
51+ tableName = { tableName }
52+ databaseName = { databaseName }
53+ tabKey = { key }
54+ name = { name }
55+ />
56+ ) ,
57+ { icon : < FontAwesomeIcon icon = { faTableCells } color = "#9b59b6" /> }
58+ ) ;
59+ }
60+ } ,
61+ [ currentDatabase ]
62+ ) ;
6363
6464 const { handleContextMenu } = useContextMenu ( ( ) => {
6565 const tableName = selected ?. data ?. name ;
@@ -74,8 +74,8 @@ export default function DatabaseTableList() {
7474 ) {
7575 return [
7676 {
77- text : 'Select 200 Rows ' ,
78- onClick : ( ) => select200RowCallback ( selected ) ,
77+ text : 'View Data ' ,
78+ onClick : ( ) => viewTableData ( selected ) ,
7979 } ,
8080 {
8181 text : 'Open Structure' ,
@@ -212,7 +212,7 @@ export default function DatabaseTableList() {
212212 collapsedKeys = { collapsed }
213213 onCollapsedChange = { setCollapsed }
214214 onContextMenu = { handleContextMenu }
215- onDoubleClick = { select200RowCallback }
215+ onDoubleClick = { viewTableData }
216216 items = { schemaListItem }
217217 />
218218 ) : (
0 commit comments