diff --git a/packages/web/src/appobj/ColumnAppObject.svelte b/packages/web/src/appobj/ColumnAppObject.svelte index 5f2aae81c..e53d78657 100644 --- a/packages/web/src/appobj/ColumnAppObject.svelte +++ b/packages/web/src/appobj/ColumnAppObject.svelte @@ -2,7 +2,7 @@ export const extractKey = ({ columnName }) => columnName; export const createMatcher = - (filter, cfg = DEFAULT_SEARCH_SETTINGS) => + (filter, cfg = DEFAULT_OBJECT_SEARCH_SETTINGS) => data => { const filterArgs = []; if (cfg.columnName) filterArgs.push(data.columnName); @@ -21,7 +21,7 @@ import { renameDatabaseObjectDialog, alterDatabaseDialog } from '../utility/alterDatabaseTools'; import AppObjectCore from './AppObjectCore.svelte'; - import { DEFAULT_SEARCH_SETTINGS } from '../stores'; + import { DEFAULT_OBJECT_SEARCH_SETTINGS } from '../stores'; import { filterName } from 'dbgate-tools'; export let data; diff --git a/packages/web/src/appobj/ConnectionAppObject.svelte b/packages/web/src/appobj/ConnectionAppObject.svelte index f19616fd3..b0f2ded4a 100644 --- a/packages/web/src/appobj/ConnectionAppObject.svelte +++ b/packages/web/src/appobj/ConnectionAppObject.svelte @@ -1,14 +1,24 @@ diff --git a/packages/web/src/buttons/DropDownButton.svelte b/packages/web/src/buttons/DropDownButton.svelte index f60b0d53a..07b339022 100644 --- a/packages/web/src/buttons/DropDownButton.svelte +++ b/packages/web/src/buttons/DropDownButton.svelte @@ -8,12 +8,13 @@ export let icon = 'icon chevron-down'; export let menu; export let narrow = false; + export let square = true; export let disabled = false; let domButton; function handleClick() { if (disabled) return; - + const rect = domButton.getBoundingClientRect(); const left = rect.left; const top = rect.bottom; @@ -21,6 +22,6 @@ } - + diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts index dd60b6b53..ac1410a36 100644 --- a/packages/web/src/stores.ts +++ b/packages/web/src/stores.ts @@ -161,7 +161,7 @@ export const lastUsedDefaultActions = writableWithStorage({}, 'lastUsedDefaultAc export const selectedDatabaseObjectAppObject = writable(null); export const focusedConnectionOrDatabase = writable<{ conid: string; database?: string; connection: any }>(null); -export const DEFAULT_SEARCH_SETTINGS = { +export const DEFAULT_OBJECT_SEARCH_SETTINGS = { collectionName: true, schemaName: false, tableName: true, @@ -175,11 +175,24 @@ export const DEFAULT_SEARCH_SETTINGS = { tableEngine: false, }; +export const DEFAULT_CONNECTION_SEARCH_SETTINGS = { + displayName: true, + server: true, + user: false, + engine: false, + database: true, +}; + export const databaseObjectAppObjectSearchSettings = writableWithStorage( - DEFAULT_SEARCH_SETTINGS, + DEFAULT_OBJECT_SEARCH_SETTINGS, 'databaseObjectAppObjectSearchSettings' ); +export const connectionAppObjectSearchSettings = writableWithStorage( + DEFAULT_CONNECTION_SEARCH_SETTINGS, + 'connectionAppObjectSearchSettings' +); + export const currentThemeDefinition = derived([currentTheme, extensions], ([$currentTheme, $extensions]) => $extensions.themes.find(x => x.themeClassName == $currentTheme) ); @@ -379,10 +392,18 @@ lastUsedDefaultActions.subscribe(value => { }); export const getLastUsedDefaultActions = () => lastUsedDefaultActionsValue; -let databaseObjectAppObjectSearchSettingsValue: typeof DEFAULT_SEARCH_SETTINGS = { - ...DEFAULT_SEARCH_SETTINGS, +let databaseObjectAppObjectSearchSettingsValue: typeof DEFAULT_OBJECT_SEARCH_SETTINGS = { + ...DEFAULT_OBJECT_SEARCH_SETTINGS, }; databaseObjectAppObjectSearchSettings.subscribe(value => { databaseObjectAppObjectSearchSettingsValue = value; }); export const getDatabaseObjectAppObjectSearchSettings = () => databaseObjectAppObjectSearchSettingsValue; + +let connectionAppObjectSearchSettingsValue: typeof DEFAULT_CONNECTION_SEARCH_SETTINGS = { + ...DEFAULT_CONNECTION_SEARCH_SETTINGS, +}; +connectionAppObjectSearchSettings.subscribe(value => { + connectionAppObjectSearchSettingsValue = value; +}); +export const getConnectionAppObjectSearchSettings = () => connectionAppObjectSearchSettingsValue; diff --git a/packages/web/src/widgets/ConnectionList.svelte b/packages/web/src/widgets/ConnectionList.svelte index 1a6de188c..62ca5887d 100644 --- a/packages/web/src/widgets/ConnectionList.svelte +++ b/packages/web/src/widgets/ConnectionList.svelte @@ -20,6 +20,8 @@ getFocusedConnectionOrDatabase, currentDatabase, getCurrentConfig, + connectionAppObjectSearchSettings, + getConnectionAppObjectSearchSettings, } from '../stores'; import runCommand from '../commands/runCommand'; import { filterName, getConnectionLabel } from 'dbgate-tools'; @@ -39,6 +41,7 @@ import openNewTab from '../utility/openNewTab'; import { openConnection } from '../appobj/ConnectionAppObject.svelte'; import { getConnectionClickActionSetting } from '../settings/settingsTools'; + import DropDownButton from '../buttons/DropDownButton.svelte'; const connections = useConnectionList(); const serverStatus = useServerStatus(); @@ -182,6 +185,20 @@ { text: 'Delete', onClick: handleDelete }, ]; } + + function createSearchMenu() { + const res = []; + res.push({ label: 'Display name', switchValue: 'displayName' }); + res.push({ label: 'Server', switchValue: 'server' }); + res.push({ label: 'User', switchValue: 'user' }); + res.push({ label: 'Database engine', switchValue: 'engine' }); + res.push({ label: 'Database name', switchValue: 'database' }); + return res.map(item => ({ + ...item, + switchStore: connectionAppObjectSearchSettings, + switchStoreGetter: getConnectionAppObjectSearchSettings, + })); + } @@ -194,6 +211,7 @@ }} /> + {#if $commandsCustomized['new.connection']?.enabled} runCommand('new.connection')} @@ -289,6 +307,7 @@ ...passProps, connectionColorFactory: $connectionColorFactory, showPinnedInsteadOfUnpin: true, + searchSettings: $connectionAppObjectSearchSettings, }} getIsExpanded={data => $expandedConnections.includes(data._id) && !data.singleDatabase} setIsExpanded={(data, value) => { @@ -316,6 +335,7 @@ passProps={{ connectionColorFactory: $connectionColorFactory, showPinnedInsteadOfUnpin: true, + searchSettings: $connectionAppObjectSearchSettings, }} getIsExpanded={data => $expandedConnections.includes(data._id) && !data.singleDatabase} setIsExpanded={(data, value) => { diff --git a/packages/web/src/widgets/SqlObjectList.svelte b/packages/web/src/widgets/SqlObjectList.svelte index 7403ffe56..92e2b1622 100644 --- a/packages/web/src/widgets/SqlObjectList.svelte +++ b/packages/web/src/widgets/SqlObjectList.svelte @@ -130,7 +130,7 @@ function createSearchMenu() { const res = []; if (driver?.databaseEngineTypes?.includes('document')) { - res.push({ label: 'Collection names' }); + res.push({ label: 'Collection names', switchValue: 'collectionName' }); } if (driver?.databaseEngineTypes?.includes('sql')) { res.push({ label: 'Schema name', switchValue: 'schemaName' }); @@ -216,7 +216,7 @@ }} /> - + {#if !filter} {/if}