+
+
+
+
+ {valueGetter ? valueGetter(value) : value}
+
+
+
-
-
-
- {valueGetter ? valueGetter(value) : value}
-
-
\ No newline at end of file
+
diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts
index badfa1ce7..34188e2cc 100644
--- a/packages/web/src/stores.ts
+++ b/packages/web/src/stores.ts
@@ -215,6 +215,8 @@ export const connectionAppObjectSearchSettings = writableWithStorage(
'connectionAppObjectSearchSettings2'
);
+export const serverSummarySelectedTab = writableWithStorage(0, 'serverSummary.selectedTab');
+
let currentThemeValue = null;
currentTheme.subscribe(value => {
currentThemeValue = value;
diff --git a/packages/web/src/tabs/ServerSummaryTab.svelte b/packages/web/src/tabs/ServerSummaryTab.svelte
index 0686a5edc..3043ac358 100644
--- a/packages/web/src/tabs/ServerSummaryTab.svelte
+++ b/packages/web/src/tabs/ServerSummaryTab.svelte
@@ -18,15 +18,17 @@
import ToolStripCommandButton from '../buttons/ToolStripCommandButton.svelte';
import ToolStripContainer from '../buttons/ToolStripContainer.svelte';
import registerCommand from '../commands/registerCommand';
- import Link from '../elements/Link.svelte';
import LoadingInfo from '../elements/LoadingInfo.svelte';
+ import TabControl from '../elements/TabControl.svelte';
- import ObjectListControl from '../elements/ObjectListControl.svelte';
import { _t } from '../translations';
import { apiCall } from '../utility/api';
import createActivator, { getActiveComponent } from '../utility/createActivator';
- import formatFileSize from '../utility/formatFileSize';
import openNewTab from '../utility/openNewTab';
+ import SummaryVariables from '../widgets/SummaryVariables.svelte';
+ import SummaryProcesses from '../widgets/SummaryProcesses.svelte';
+ import SummaryDatabases from '../widgets/SummaryDatabases.svelte';
+ import { serverSummarySelectedTab } from '../stores';
export let conid;
@@ -78,26 +80,31 @@
{:then summary}
- ({
- ...col,
- slot: col.columnType == 'bytes' ? 1 : col.columnType == 'actions' ? 2 : null,
- }))}
- >
- {formatFileSize(row?.[col.fieldName])}
-
- {#each col.actions as action, index}
- {#if index > 0}
- |
- {/if}
- runAction(action, row)}>{action.header}
- {/each}
-
-
+ serverSummarySelectedTab.set(index)}
+ tabs={[
+ {
+ label: 'Variables',
+ component: SummaryVariables,
+ props: { variables: summary.variables || [] },
+ },
+ {
+ label: 'Processes',
+ component: SummaryProcesses,
+ props: { processes: summary.processes || [], conid },
+ },
+ {
+ label: 'Databases',
+ component: SummaryDatabases,
+ props: { databases: summary.databases || [] },
+ },
+ ]}
+ />
{/await}
diff --git a/packages/web/src/tabs/TableStructureTab.svelte b/packages/web/src/tabs/TableStructureTab.svelte
index 1e8ab9efb..f5dfca571 100644
--- a/packages/web/src/tabs/TableStructureTab.svelte
+++ b/packages/web/src/tabs/TableStructureTab.svelte
@@ -197,7 +197,7 @@
defaultActionId: 'openTable',
},
});
- }}>DataDataX
+ import TableControl from '../elements/TableControl.svelte';
+ import CtaButton from '../buttons/CtaButton.svelte';
+ import { _t } from '../translations';
+ import formatFileSize from '../utility/formatFileSize';
+
+ export let databases: any[] = [];
+
+ async function profileOff(database: any) {
+ // TODO: Implement profile off functionality
+ console.log('Profile off:', database.name);
+ }
+
+ async function profileFiltered(database: any) {
+ // TODO: Implement profile filtered functionality
+ console.log('Profile filtered:', database.name);
+ }
+
+ async function profileAll(database: any) {
+ // TODO: Implement profile all functionality
+ console.log('Profile all:', database.name);
+ }
+
+
+
+
+
+ profileOff(row)}>Profile Off
+ |
+ profileFiltered(row)}>Profile Filtered
+ |
+ profileAll(row)}>Profile All
+
+
+
+ {row.name}
+
+
+
+ {formatFileSize(row.sizeOnDisk)}
+
+
+
+ {formatFileSize(row.dataSize)}
+
+
+
+ {formatFileSize(row.indexSize)}
+
+
+
+
+
diff --git a/packages/web/src/widgets/SummaryProcesses.svelte b/packages/web/src/widgets/SummaryProcesses.svelte
new file mode 100644
index 000000000..c9e765bd3
--- /dev/null
+++ b/packages/web/src/widgets/SummaryProcesses.svelte
@@ -0,0 +1,77 @@
+
+
+
+
+
+ killProcess(row.processId)}>
+ {_t('common.kill', { defaultMessage: 'Kill' })}
+
+
+
+
+ {row.processId}
+
+
+
+ {formatRunningTime(row.runningTime)}
+
+
+
+ {row.waitingFor ? 'Yes' : 'No'}
+
+
+
+
+
diff --git a/packages/web/src/widgets/SummaryVariables.svelte b/packages/web/src/widgets/SummaryVariables.svelte
new file mode 100644
index 000000000..7a37b6a34
--- /dev/null
+++ b/packages/web/src/widgets/SummaryVariables.svelte
@@ -0,0 +1,29 @@
+
+
+
+
+