diff --git a/packages/web/src/tabs/ServerSummaryTab.svelte b/packages/web/src/tabs/ServerSummaryTab.svelte
index b16058fd1..e716d5123 100644
--- a/packages/web/src/tabs/ServerSummaryTab.svelte
+++ b/packages/web/src/tabs/ServerSummaryTab.svelte
@@ -82,33 +82,42 @@
wrapper
/>
{:then summary}
-
- serverSummarySelectedTab.set(index)}
- tabs={[
- {
- label: _t('serverSummaryTab.variables', { defaultMessage: 'Variables' }),
- component: SummaryVariables,
- props: { variables: summary.variables || [] },
- },
- {
- label: _t('serverSummaryTab.processes', { defaultMessage: 'Processes' }),
- component: SummaryProcesses,
- props: { processes: summary.processes || [], conid },
- },
- {
- label: _t('serverSummaryTab.databases', { defaultMessage: 'Databases' }),
- component: SummaryDatabases,
- props: { rows: summary.databases?.rows ?? [], columns: summary.databases?.columns ?? [] },
- },
- ]}
- />
-
+ {#if 'errorMessage' in summary}
+
+
+
{_t('serverSummaryTab.errorTitle', { defaultMessage: 'Error loading server summary' })}
+
{summary.errorMessage}
+
+
+ {:else}
+
+ serverSummarySelectedTab.set(index)}
+ tabs={[
+ {
+ label: _t('serverSummaryTab.variables', { defaultMessage: 'Variables' }),
+ component: SummaryVariables,
+ props: { variables: summary.variables || [] },
+ },
+ {
+ label: _t('serverSummaryTab.processes', { defaultMessage: 'Processes' }),
+ component: SummaryProcesses,
+ props: { processes: summary.processes || [], conid },
+ },
+ {
+ label: _t('serverSummaryTab.databases', { defaultMessage: 'Databases' }),
+ component: SummaryDatabases,
+ props: { rows: summary.databases?.rows ?? [], columns: summary.databases?.columns ?? [] },
+ },
+ ]}
+ />
+
+ {/if}
{/await}
@@ -130,4 +139,24 @@
.action-separator {
margin: 0 5px;
}
+
+ .error-wrapper {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ }
+
+ .error-message {
+ background: var(--theme-bg-1);
+ border: 1px solid var(--theme-border);
+ border-radius: 4px;
+ padding: 20px;
+ max-width: 500px;
+ text-align: center;
+ }
+
+ .error-message h3 {
+ color: var(--theme-font-error);
+ margin-top: 0;
+ }