diff --git a/packages/api/src/controllers/connections.js b/packages/api/src/controllers/connections.js index 86e8a9828..5447a6f4d 100644 --- a/packages/api/src/controllers/connections.js +++ b/packages/api/src/controllers/connections.js @@ -62,7 +62,7 @@ function getPortalCollections() { displayName: process.env[`LABEL_${id}`], isReadOnly: process.env[`READONLY_${id}`], databases: process.env[`DBCONFIG_${id}`] ? safeJsonParse(process.env[`DBCONFIG_${id}`]) : null, - parentId: process.env[`PARENT_${id}`] || undefined, + parent: process.env[`PARENT_${id}`] || undefined, // SSH tunnel useSshTunnel: process.env[`USE_SSH_${id}`], diff --git a/packages/web/src/appobj/AppObjectGroup.svelte b/packages/web/src/appobj/AppObjectGroup.svelte index 09d4ca740..97d04a834 100644 --- a/packages/web/src/appobj/AppObjectGroup.svelte +++ b/packages/web/src/appobj/AppObjectGroup.svelte @@ -10,6 +10,7 @@ export let group; export let groupFunc; export let items; + export let groupIconFunc = plusExpandIcon; export let module; export let checkedObjectsStore = null; export let disableContextMenu = false; @@ -37,7 +38,7 @@
(isExpanded = !isExpanded)}> - + {group} diff --git a/packages/web/src/appobj/AppObjectList.svelte b/packages/web/src/appobj/AppObjectList.svelte index 7644d5469..c301a168f 100644 --- a/packages/web/src/appobj/AppObjectList.svelte +++ b/packages/web/src/appobj/AppObjectList.svelte @@ -2,6 +2,7 @@ import _ from 'lodash'; import { asyncFilter } from '../utility/common'; import AppObjectGroup from './AppObjectGroup.svelte'; + import { plusExpandIcon } from '../icons/expandIcons'; import AppObjectListItem from './AppObjectListItem.svelte'; @@ -18,6 +19,7 @@ export let getIsExpanded = null; export let setIsExpanded = null; + export let groupIconFunc = plusExpandIcon; export let groupFunc = undefined; $: filtered = !groupFunc @@ -71,6 +73,7 @@ {module} items={groups[group]} {expandIconFunc} + {groupIconFunc} {isExpandable} {subItemsComponent} {checkedObjectsStore} diff --git a/packages/web/src/settings/ConnectionDriverFields.svelte b/packages/web/src/settings/ConnectionDriverFields.svelte index ebe5e5186..53061a680 100644 --- a/packages/web/src/settings/ConnectionDriverFields.svelte +++ b/packages/web/src/settings/ConnectionDriverFields.svelte @@ -217,6 +217,19 @@ disabled={isConnected} />
+ + {/if} + +{#if driver} +
+
+ + +
{/if} diff --git a/packages/web/src/widgets/ConnectionList.svelte b/packages/web/src/widgets/ConnectionList.svelte index cf7633878..9e9a7d3cf 100644 --- a/packages/web/src/widgets/ConnectionList.svelte +++ b/packages/web/src/widgets/ConnectionList.svelte @@ -25,6 +25,7 @@ import { apiCall } from '../utility/api'; import LargeButton from '../buttons/LargeButton.svelte'; import { matchingProps } from '../tabs/TableDataTab.svelte'; + import { plusExpandIcon, chevronExpandIcon } from '../icons/expandIcons'; const connections = useConnectionList(); const serverStatus = useServerStatus(); @@ -40,6 +41,9 @@ x => !x.unsaved || $openedConnections.includes(x._id) || $openedSingleDatabaseConnections.includes(x._id) ); + $: connectionsWithParent = connectionsWithStatusFiltered ? connectionsWithStatusFiltered?.filter((x) => x.parent !== undefined && x.parent !== null && x.parent.length !== 0) : []; + $: connectionsWithoutParent = connectionsWithStatusFiltered ? connectionsWithStatusFiltered?.filter((x) => x.parent === undefined || x.parent === null || x.parent.length === 0) : []; + const handleRefreshConnections = () => { for (const conid of $openedConnections) { apiCall('server-connections/refresh', { conid }); @@ -63,7 +67,26 @@ (getConnectionLabel(connection) || '').toUpperCase())} + list={_.sortBy(connectionsWithParent, connection => (getConnectionLabel(connection) || '').toUpperCase())} + module={connectionAppObject} + subItemsComponent={SubDatabaseList} + expandOnClick + isExpandable={data => $openedConnections.includes(data._id) && !data.singleDatabase} + {filter} + passProps={{ connectionColorFactory: $connectionColorFactory, showPinnedInsteadOfUnpin: true }} + getIsExpanded={data => $expandedConnections.includes(data._id) && !data.singleDatabase} + setIsExpanded={(data, value) => { + expandedConnections.update(old => (value ? [...old, data._id] : old.filter(x => x != data._id))); + }} + groupIconFunc={chevronExpandIcon} + groupFunc={data => data.parent} + expandIconFunc={plusExpandIcon} + /> + {#if connectionsWithParent?.length > 0 && connectionsWithoutParent?.length > 0} +
+ {/if} + (getConnectionLabel(connection) || '').toUpperCase())} module={connectionAppObject} subItemsComponent={SubDatabaseList} expandOnClick @@ -84,3 +107,13 @@ --> {/if} + + + +