diff --git a/packages/api/env/singledb/.env b/packages/api/env/singledb/.env
index a119453b4..a48964741 100644
--- a/packages/api/env/singledb/.env
+++ b/packages/api/env/singledb/.env
@@ -12,6 +12,6 @@ DBCONFIG_mysql=[{"name":"Chinook","connectionColor":"cyan"}]
SINGLE_CONNECTION=mysql
-SINGLE_DATABASE=Chinook
+# SINGLE_DATABASE=Chinook
PERMISSIONS=files/charts/read
diff --git a/packages/web/src/widgets/SingleConnectionDatabaseList.svelte b/packages/web/src/widgets/SingleConnectionDatabaseList.svelte
index 106e661f2..2123719ad 100644
--- a/packages/web/src/widgets/SingleConnectionDatabaseList.svelte
+++ b/packages/web/src/widgets/SingleConnectionDatabaseList.svelte
@@ -5,28 +5,90 @@
import WidgetsInnerContainer from './WidgetsInnerContainer.svelte';
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
import SubDatabaseList from '../appobj/SubDatabaseList.svelte';
- import { openedConnections } from '../stores';
- import { useConnectionColorFactory } from '../utility/useConnectionColor';
import FontIcon from '../icons/FontIcon.svelte';
import CloseSearchButton from '../buttons/CloseSearchButton.svelte';
import { apiCall } from '../utility/api';
+ import AppObjectListHandler from './AppObjectListHandler.svelte';
+ import { useDatabaseList } from '../utility/metadataLoaders';
+ import { filterName } from 'dbgate-tools';
+ import { currentDatabase, focusedConnectionOrDatabase, getFocusedConnectionOrDatabase } from '../stores';
+ import { switchCurrentDatabase } from '../utility/common';
export let connection;
let filter = '';
+ let domListHandler;
+ let domContainer = null;
+ let domFilter = null;
+
+ $: databases = useDatabaseList({ conid: connection?._id });
+
const handleRefreshDatabases = () => {
apiCall('server-connections/refresh', { conid: connection._id });
};
+
+ function getFocusFlatList() {
+ const res = [];
+ for (const db of $databases) {
+ if (!filterName(filter, db.name)) {
+ continue;
+ }
+
+ res.push({
+ connection,
+ conid: connection._id,
+ database: db.name,
+ });
+ }
+
+ return res;
+ }
-
+ {
+ domListHandler?.focusFirst();
+ }}
+ />
-
+ o1?.conid == o2?.conid && o1?.database == o2?.database}
+ getDefaultFocusedItem={() =>
+ $currentDatabase
+ ? {
+ conid: $currentDatabase?.connection?._id,
+ database: $currentDatabase?.name,
+ connection: $currentDatabase?.connection,
+ }
+ : null}
+ onScrollTop={() => {
+ domContainer?.scrollTop();
+ }}
+ onFocusFilterBox={text => {
+ domFilter?.focus(text);
+ }}
+ handleObjectClick={(data, options) => {
+ if (data.database) {
+ if (options.focusTab) {
+ switchCurrentDatabase({ connection: data.connection, name: data.database });
+ }
+ }
+ }}
+ >
+
+