diff --git a/packages/web/src/elements/ObjectListControl.svelte b/packages/web/src/elements/ObjectListControl.svelte index e889124ee..fe8022dce 100644 --- a/packages/web/src/elements/ObjectListControl.svelte +++ b/packages/web/src/elements/ObjectListControl.svelte @@ -42,32 +42,32 @@ {clickable} on:clickrow > - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + - - + + diff --git a/packages/web/src/elements/TableControl.svelte b/packages/web/src/elements/TableControl.svelte index 1542b72cd..c06d4c8b4 100644 --- a/packages/web/src/elements/TableControl.svelte +++ b/packages/web/src/elements/TableControl.svelte @@ -86,17 +86,17 @@ {:else if col.formatter} {col.formatter(row)} {:else if col.slot != null} - {#if col.slot == -1} - {:else if col.slot == 0} - {:else if col.slot == 1} - {:else if col.slot == 2} - {:else if col.slot == 3} - {:else if col.slot == 4} - {:else if col.slot == 5} - {:else if col.slot == 6} - {:else if col.slot == 7} - {:else if col.slot == 8} - {:else if col.slot == 9} + {#if col.slot == -1} + {:else if col.slot == 0} + {:else if col.slot == 1} + {:else if col.slot == 2} + {:else if col.slot == 3} + {:else if col.slot == 4} + {:else if col.slot == 5} + {:else if col.slot == 6} + {:else if col.slot == 7} + {:else if col.slot == 8} + {:else if col.slot == 9} {/if} {:else} {row[col.fieldName] || ''} diff --git a/packages/web/src/tabs/ServerSummaryTab.svelte b/packages/web/src/tabs/ServerSummaryTab.svelte index 2752c743f..90fe7a121 100644 --- a/packages/web/src/tabs/ServerSummaryTab.svelte +++ b/packages/web/src/tabs/ServerSummaryTab.svelte @@ -4,6 +4,7 @@ import ObjectListControl from '../elements/ObjectListControl.svelte'; import { apiCall } from '../utility/api'; + import formatFileSize from '../utility/formatFileSize'; export let conid; @@ -13,11 +14,30 @@ {#await apiCall('server-connections/server-summary', { conid, refreshToken })} {:then summary} - +
+ ({ + ...col, + slot: col.dataType == 'bytes' ? 1 : null, + }))} + > + {formatFileSize(row?.[col.fieldName])} + +
{/await} + + diff --git a/plugins/dbgate-plugin-mongo/src/backend/driver.js b/plugins/dbgate-plugin-mongo/src/backend/driver.js index c44ac93d6..24c960708 100644 --- a/plugins/dbgate-plugin-mongo/src/backend/driver.js +++ b/plugins/dbgate-plugin-mongo/src/backend/driver.js @@ -354,6 +354,21 @@ const driver = { async serverSummary(pool) { const res = await pool.__getDatabase().admin().listDatabases(); + const profiling = await Promise.all(res.databases.map((x) => pool.db(x.name).command({ profile: -1 }))); + + function formatProfiling(info) { + switch (info.was) { + case 0: + return 'No profiling'; + case 1: + return `Filtered (>${info.slowms} ms)`; + case 2: + 'Profile all'; + default: + return '???'; + } + } + return { columns: [ { @@ -366,8 +381,16 @@ const driver = { dataType: 'bytes', header: 'Size', }, + { + fieldName: 'profiling', + dataType: 'string', + header: 'Profiling', + }, ], - databases: res.databases, + databases: res.databases.map((db, i) => ({ + ...db, + profiling: formatProfiling(profiling[i]), + })), }; }, };