add new connection button

This commit is contained in:
Jan Prochazka
2021-01-21 09:53:26 +01:00
parent add6f351a5
commit afebddd2a3
2 changed files with 24 additions and 11 deletions

View File

@@ -16,18 +16,15 @@ import {
useDatabaseInfo, useDatabaseInfo,
useConfig, useConfig,
} from '../utility/metadataLoaders'; } from '../utility/metadataLoaders';
import { import { SearchBoxWrapper, WidgetsInnerContainer } from './WidgetStyles';
SearchBoxWrapper,
WidgetsInnerContainer,
WidgetsMainContainer,
WidgetsOuterContainer,
WidgetTitle,
} from './WidgetStyles';
import axios from '../utility/axios'; import axios from '../utility/axios';
import LoadingInfo from './LoadingInfo'; import LoadingInfo from './LoadingInfo';
import SearchInput from './SearchInput'; import SearchInput from './SearchInput';
import ErrorInfo from './ErrorInfo'; import ErrorInfo from './ErrorInfo';
import WidgetColumnBar, { WidgetColumnBarItem } from './WidgetColumnBar'; import WidgetColumnBar, { WidgetColumnBarItem } from './WidgetColumnBar';
import ToolbarButton from './ToolbarButton';
import useShowModal from '../modals/showModal';
import ConnectionModal from '../modals/ConnectionModal';
function SubDatabaseList({ data }) { function SubDatabaseList({ data }) {
const setDb = useSetCurrentDatabase(); const setDb = useSetCurrentDatabase();
@@ -57,6 +54,7 @@ function ConnectionList() {
connections && serverStatus connections && serverStatus
? connections.map((conn) => ({ ...conn, status: serverStatus[conn._id] })) ? connections.map((conn) => ({ ...conn, status: serverStatus[conn._id] }))
: connections; : connections;
const showModal = useShowModal();
const handleRefreshConnections = () => { const handleRefreshConnections = () => {
for (const conid of openedConnections) { for (const conid of openedConnections) {
@@ -64,6 +62,10 @@ function ConnectionList() {
} }
}; };
const showNewConnection = () => {
showModal((modalState) => <ConnectionModal modalState={modalState} />);
};
const [filter, setFilter] = React.useState(''); const [filter, setFilter] = React.useState('');
return ( return (
<> <>
@@ -83,6 +85,11 @@ function ConnectionList() {
filter={filter} filter={filter}
isExpandable={(data) => openedConnections.includes(data._id)} isExpandable={(data) => openedConnections.includes(data._id)}
/> />
{connections && connections.length == 0 && (
<ToolbarButton icon="icon new-connection" onClick={showNewConnection}>
Add new connection
</ToolbarButton>
)}
</WidgetsInnerContainer> </WidgetsInnerContainer>
</> </>
); );

View File

@@ -32,7 +32,6 @@ const ToolbarContainer = styled.div`
`; `;
export default function ToolBar({ toolbarPortalRef }) { export default function ToolBar({ toolbarPortalRef }) {
const modalState = useModalState();
const newQuery = useNewQuery(); const newQuery = useNewQuery();
const newQueryDesign = useNewQueryDesign(); const newQueryDesign = useNewQueryDesign();
const newFreeTable = useNewFreeTable(); const newFreeTable = useNewFreeTable();
@@ -53,7 +52,9 @@ export default function ToolBar({ toolbarPortalRef }) {
const currentTab = openedTabs.find((x) => x.selected); const currentTab = openedTabs.find((x) => x.selected);
React.useEffect(() => { React.useEffect(() => {
window['dbgate_createNewConnection'] = modalState.open; if (config.runAsPortal == false) {
window['dbgate_createNewConnection'] = showNewConnection;
}
window['dbgate_newQuery'] = newQuery; window['dbgate_newQuery'] = newQuery;
window['dbgate_closeAll'] = () => setOpenedTabs([]); window['dbgate_closeAll'] = () => setOpenedTabs([]);
window['dbgate_showAbout'] = showAbout; window['dbgate_showAbout'] = showAbout;
@@ -79,6 +80,10 @@ export default function ToolBar({ toolbarPortalRef }) {
)); ));
}; };
const showNewConnection = () => {
showModal((modalState) => <ConnectionModal modalState={modalState} />);
};
const switchTheme = () => { const switchTheme = () => {
if (currentTheme == 'light') setCurrentTheme('dark'); if (currentTheme == 'light') setCurrentTheme('dark');
else setCurrentTheme('light'); else setCurrentTheme('light');
@@ -131,7 +136,6 @@ export default function ToolBar({ toolbarPortalRef }) {
return ( return (
<ToolbarContainer> <ToolbarContainer>
{!!modalState.isOpen && <ConnectionModal modalState={modalState} />}
{!electron && ( {!electron && (
<ToolbarButtonExternalImage <ToolbarButtonExternalImage
// eslint-disable-next-line // eslint-disable-next-line
@@ -147,7 +151,9 @@ export default function ToolBar({ toolbarPortalRef }) {
</ToolbarButton> </ToolbarButton>
))} ))}
<ToolbarDropDownButton icon="icon add" text="New"> <ToolbarDropDownButton icon="icon add" text="New">
{config.runAsPortal == false && <DropDownMenuItem onClick={modalState.open}>Connection</DropDownMenuItem>} {config.runAsPortal == false && (
<DropDownMenuItem onClick={showNewConnection}>Connection</DropDownMenuItem>
)}
<DropDownMenuItem onClick={() => newQuery()}>SQL query</DropDownMenuItem> <DropDownMenuItem onClick={() => newQuery()}>SQL query</DropDownMenuItem>
{!!currentDatabase && <DropDownMenuItem onClick={() => newQueryDesign()}>Query designer</DropDownMenuItem>} {!!currentDatabase && <DropDownMenuItem onClick={() => newQueryDesign()}>Query designer</DropDownMenuItem>}
<DropDownMenuItem onClick={() => newFreeTable()}>Free table editor</DropDownMenuItem> <DropDownMenuItem onClick={() => newFreeTable()}>Free table editor</DropDownMenuItem>