diff --git a/packages/api/.env b/packages/api/.env
index 0f4a7a58e..8d6ae5376 100644
--- a/packages/api/.env
+++ b/packages/api/.env
@@ -10,5 +10,6 @@ TOOLBAR=home
ICON_home=fas fa-home
TITLE_home=Home
PAGE_home=home.html
+STARTUP_PAGES=home
PAGES_DIRECTORY=/home/jena/jenasoft/dbgate-web/pages
diff --git a/packages/api/src/controllers/config.js b/packages/api/src/controllers/config.js
index a4dcb23c2..c4ddb3a19 100644
--- a/packages/api/src/controllers/config.js
+++ b/packages/api/src/controllers/config.js
@@ -10,9 +10,11 @@ module.exports = {
page: process.env[`PAGE_${name}`],
}))
: null;
+ const startupPages = process.env.STARTUP_PAGES ? process.env.STARTUP_PAGES.split(',') : [];
return {
runAsPortal: !!process.env.CONNECTIONS,
toolbar,
+ startupPages,
};
},
};
diff --git a/packages/web/src/tabs/InfoPageTab.js b/packages/web/src/tabs/InfoPageTab.js
index 740d04c19..daa581a49 100644
--- a/packages/web/src/tabs/InfoPageTab.js
+++ b/packages/web/src/tabs/InfoPageTab.js
@@ -1,6 +1,12 @@
import React from 'react';
+import styled from 'styled-components';
import resolveApi from '../utility/resolveApi';
+const Frame = styled.iframe`
+ flex: 1;
+ border: 0px solid gray;
+`;
+
export default function InfoPageTab({ page }) {
- return ;
+ return ;
}
diff --git a/packages/web/src/widgets/DatabaseWidget.js b/packages/web/src/widgets/DatabaseWidget.js
index 8215b95f4..7a4b3d9c6 100644
--- a/packages/web/src/widgets/DatabaseWidget.js
+++ b/packages/web/src/widgets/DatabaseWidget.js
@@ -25,6 +25,7 @@ import {
import axios from '../utility/axios';
import LoadingInfo from './LoadingInfo';
import SearchInput from './SearchInput';
+import ErrorInfo from './ErrorInfo';
function SubDatabaseList({ data }) {
const setDb = useSetCurrentDatabase();
@@ -126,7 +127,14 @@ function SqlObjectList({ conid, database }) {
function SqlObjectListWrapper() {
const db = useCurrentDatabase();
- if (!db) return
(Choose database)
;
+ if (!db) {
+ return (
+ <>
+ Tables, views, functions
+
+ >
+ );
+ }
const { name, connection } = db;
return ;
diff --git a/packages/web/src/widgets/Toolbar.js b/packages/web/src/widgets/Toolbar.js
index a51eef5ec..23979c808 100644
--- a/packages/web/src/widgets/Toolbar.js
+++ b/packages/web/src/widgets/Toolbar.js
@@ -5,7 +5,7 @@ import styled from 'styled-components';
import ToolbarButton from './ToolbarButton';
import useNewQuery from '../query/useNewQuery';
import { useConfig } from '../utility/metadataLoaders';
-import { useSetOpenedTabs } from '../utility/globalState';
+import { useSetOpenedTabs, useOpenedTabs } from '../utility/globalState';
import { openNewTab } from '../utility/common';
const ToolbarContainer = styled.div`
@@ -19,25 +19,44 @@ export default function ToolBar({ toolbarPortalRef }) {
const config = useConfig();
const toolbar = config.toolbar || [];
const setOpenedTabs = useSetOpenedTabs();
+ const openedTabs = useOpenedTabs();
+
+ function openTabFromButton(button) {
+ if (openedTabs.find((x) => x.tabComponent == 'InfoPageTab' && x.props && x.props.page == button.page)) {
+ setOpenedTabs((tabs) =>
+ tabs.map((tab) => ({
+ ...tab,
+ selected: tab.tabComponent == 'InfoPageTab' && tab.props && tab.props.page == button.page,
+ }))
+ );
+ } else {
+ openNewTab(setOpenedTabs, {
+ title: button.title,
+ tabComponent: 'InfoPageTab',
+ icon: button.icon,
+ props: {
+ page: button.page,
+ },
+ });
+ }
+ }
+
+ React.useEffect(() => {
+ if (config.startupPages) {
+ for (const page of config.startupPages) {
+ const button = toolbar.find((x) => x.name == page);
+ if (button) {
+ openTabFromButton(button);
+ }
+ }
+ }
+ }, config && config.startupPages);
return (
{toolbar.map((button) => (
- {
- openNewTab(setOpenedTabs, {
- title: button.title,
- tabComponent: 'InfoPageTab',
- icon: button.icon,
- props: {
- page: button.page,
- },
- });
- }}
- icon={button.icon}
- >
+ openTabFromButton(button)} icon={button.icon}>
{button.title}
))}