diff --git a/packages/web/src/TabsPanel.js b/packages/web/src/TabsPanel.js index cb62dcfcb..9a5a1514b 100644 --- a/packages/web/src/TabsPanel.js +++ b/packages/web/src/TabsPanel.js @@ -104,9 +104,26 @@ function TabContextMenu({ close, closeAll, closeOthers, closeWithSameDb, closeWi ); } +function getTabDbName(tab) { + if (tab.props && tab.props.conid && tab.props.database) return tab.props.database; + if (tab.props && tab.props.archiveFolder) return tab.props.archiveFolder; + return '(no DB)'; +} + +function getTabDbKey(tab) { + if (tab.props && tab.props.conid && tab.props.database) return `database://${tab.props.database}-${tab.props.conid}`; + if (tab.props && tab.props.archiveFolder) return `archive://${tab.props.archiveFolder}`; + return '_no'; +} + +function getDbIcon(key) { + if (key.startsWith('database://')) return 'fas fa-database'; + if (key.startsWith('archive://')) return 'fas fa-archive'; + return 'fas fa-file'; +} + export default function TabsPanel() { - const noDbKey = '_no'; - const formatDbKey = (conid, database) => `${database}-${conid}`; + // const formatDbKey = (conid, database) => `${database}-${conid}`; const tabs = useOpenedTabs(); const setOpenedTabs = useSetOpenedTabs(); @@ -114,7 +131,7 @@ export default function TabsPanel() { const setCurrentDb = useSetCurrentDatabase(); const { name, connection } = currentDb || {}; - const currentDbKey = name && connection ? formatDbKey(connection._id, name) : noDbKey; + const currentDbKey = name && connection ? `database://${name}-${connection._id}` : '_no'; const handleTabClick = (e, tabid) => { if (e.target.closest('.tabCloseButton')) { @@ -202,9 +219,8 @@ export default function TabsPanel() { .filter((x) => !x.closedTime) .map((tab) => ({ ...tab, - tabDbName: tab.props && tab.props.conid && tab.props.database ? tab.props.database : '(no DB)', - tabDbKey: - tab.props && tab.props.conid && tab.props.database ? formatDbKey(tab.props.conid, tab.props.database) : noDbKey, + tabDbName: getTabDbName(tab), + tabDbKey: getTabDbKey(tab), })); const tabsByDb = _.groupBy(tabsWithDb, 'tabDbKey'); const dbKeys = _.keys(tabsByDb).sort(); @@ -230,7 +246,7 @@ export default function TabsPanel() { selected={tabsByDb[dbKey][0].tabDbKey == currentDbKey} onClick={() => handleSetDb(tabsByDb[dbKey][0].props)} > - {tabsByDb[dbKey][0].tabDbName} + {tabsByDb[dbKey][0].tabDbName} {_.sortBy(tabsByDb[dbKey], 'title').map((tab) => ( diff --git a/packages/web/src/appobj/archiveFileAppObject.js b/packages/web/src/appobj/archiveFileAppObject.js index eebdbf3b4..82a6886b6 100644 --- a/packages/web/src/appobj/archiveFileAppObject.js +++ b/packages/web/src/appobj/archiveFileAppObject.js @@ -30,8 +30,8 @@ const archiveFileAppObject = () => ({ fileName, folderName }, { setOpenedTabs }) tooltip: `${folderName}\n${fileName}`, tabComponent: 'ArchiveFileTab', props: { - fileName, - folderName, + archiveFile: fileName, + archiveFolder: folderName, }, }); }; diff --git a/packages/web/src/tabs/ArchiveFileTab.js b/packages/web/src/tabs/ArchiveFileTab.js index fbdda6f71..0328d1063 100644 --- a/packages/web/src/tabs/ArchiveFileTab.js +++ b/packages/web/src/tabs/ArchiveFileTab.js @@ -1,6 +1,6 @@ import React from 'react'; import JslDataGrid from '../sqleditor/JslDataGrid'; -export default function ArchiveFileTab({ folderName, fileName, tabVisible, toolbarPortalRef, tabid }) { - return ; +export default function ArchiveFileTab({ archiveFolder, archiveFile, tabVisible, toolbarPortalRef, tabid }) { + return ; }