|
25 | 25 | }); |
26 | 26 |
|
27 | 27 | function extractDbItems(db, dbConnectionInfo, connectionList, $extensions, currentThemeType) { |
| 28 | + const allObjects = _.flatten( |
| 29 | + ['tables', 'collections', 'views', 'matviews', 'procedures', 'functions'].map(objectTypeField => |
| 30 | + ((db || {})[objectTypeField] || []).map(obj => ({ objectTypeField, obj })) |
| 31 | + ) |
| 32 | + ); |
| 33 | + const pureNameCounts = _.countBy(allObjects, ({ obj }) => obj.pureName); |
28 | 34 | const objectList = _.flatten( |
29 | 35 | ['tables', 'collections', 'views', 'matviews', 'procedures', 'functions'].map(objectTypeField => |
30 | 36 | _.sortBy( |
31 | 37 | ((db || {})[objectTypeField] || []).map(obj => ({ |
32 | | - text: obj.pureName, |
| 38 | + text: pureNameCounts[obj.pureName] > 1 ? fullNameToLabel(obj) : obj.pureName, |
33 | 39 | onClick: () => handleDatabaseObjectClick({ objectTypeField, ...dbConnectionInfo, ...obj }), |
34 | 40 | icon: databaseObjectIcons[objectTypeField], |
35 | 41 | })), |
|
43 | 49 | if (connection.singleDatabase) continue; |
44 | 50 | if (getCurrentConfig()?.singleDbConnection) continue; |
45 | 51 | const databases = getLocalStorage(`database_list_${conid}`) || []; |
46 | | - |
| 52 | +
|
47 | 53 | const driver = findEngineDriver(connection, $extensions); |
48 | 54 | const driverIcon = getDriverIcon(driver, currentThemeType); |
49 | 55 | const connectionIcon = driverIcon || 'img database'; |
50 | | - |
| 56 | +
|
51 | 57 | for (const db of databases) { |
52 | 58 | databaseList.push({ |
53 | 59 | text: `${db.name} on ${getConnectionLabel(connection)}`, |
|
66 | 72 | </script> |
67 | 73 |
|
68 | 74 | <script> |
69 | | - import { filterName, getConnectionLabel, findEngineDriver } from 'dbgate-tools'; |
| 75 | + import { filterName, getConnectionLabel, findEngineDriver, fullNameToLabel } from 'dbgate-tools'; |
70 | 76 |
|
71 | 77 | import _ from 'lodash'; |
72 | 78 | import { onMount } from 'svelte'; |
|
190 | 196 | domInput.focus(); |
191 | 197 | }} |
192 | 198 | > |
193 | | - <FontIcon icon="icon menu" /> {_t('commandPalette.commands', { defaultMessage: 'Commands' })} |
| 199 | + <FontIcon icon="icon menu" /> |
| 200 | + {_t('commandPalette.commands', { defaultMessage: 'Commands' })} |
194 | 201 | </div> |
195 | 202 | <div |
196 | 203 | class="page" |
|
200 | 207 | domInput.focus(); |
201 | 208 | }} |
202 | 209 | > |
203 | | - <FontIcon icon="icon database" /> {_t('common.database', { defaultMessage: 'Database' })} |
| 210 | + <FontIcon icon="icon database" /> |
| 211 | + {_t('common.database', { defaultMessage: 'Database' })} |
204 | 212 | </div> |
205 | 213 | </div> |
206 | 214 | <div class="mainInner"> |
|
211 | 219 | bind:value={filter} |
212 | 220 | on:keydown={handleKeyDown} |
213 | 221 | placeholder={_tval(parentCommand?.text) || |
214 | | - ($visibleCommandPalette == 'database' ? _t('commandPalette.searchInDatabase', { defaultMessage: 'Search in database' }) : _t('commandPalette.searchInCommands', { defaultMessage: 'Search in commands' }))} |
| 222 | + ($visibleCommandPalette == 'database' |
| 223 | + ? _t('commandPalette.searchInDatabase', { defaultMessage: 'Search in database' }) |
| 224 | + : _t('commandPalette.searchInCommands', { defaultMessage: 'Search in commands' }))} |
215 | 225 | /> |
216 | 226 | </div> |
217 | 227 | <div class="content"> |
|
360 | 370 | display: flex; |
361 | 371 | align-items: center; |
362 | 372 | gap: 6px; |
363 | | - transition: color 150ms ease-in-out, border-color 150ms ease-in-out; |
| 373 | + transition: |
| 374 | + color 150ms ease-in-out, |
| 375 | + border-color 150ms ease-in-out; |
364 | 376 | } |
365 | 377 |
|
366 | 378 | .page:hover { |
|
0 commit comments