diff --git a/src/lib/charts/base.svelte b/src/lib/charts/base.svelte
index 54d8e2907..91a5064a0 100644
--- a/src/lib/charts/base.svelte
+++ b/src/lib/charts/base.svelte
@@ -86,5 +86,6 @@
.echart {
width: 100%;
min-height: 12rem;
+ height: 100%;
}
diff --git a/src/lib/layout/usage.svelte b/src/lib/layout/usage.svelte
index 8b07ff126..a2c5860c4 100644
--- a/src/lib/layout/usage.svelte
+++ b/src/lib/layout/usage.svelte
@@ -75,14 +75,16 @@
{total(created)}
{createdMetadata.title}
- [e.date, e.value])],
- color: Colors.Secondary
- }
- ]} />
+
+ [e.date, e.value])],
+ color: Colors.Secondary
+ }
+ ]} />
+
{/if}
@@ -90,14 +92,16 @@
{total(read)}
{readMetadata.title}
- [e.date, e.value])],
- color: Colors.Tertiary
- }
- ]} />
+
+ [e.date, e.value])],
+ color: Colors.Tertiary
+ }
+ ]} />
+
{/if}
@@ -105,14 +109,16 @@
{total(updated)}
{updatedMetadata.title}
- [e.date, e.value])],
- color: Colors.Quaternary
- }
- ]} />
+
+ [e.date, e.value])],
+ color: Colors.Quaternary
+ }
+ ]} />
+
{/if}
@@ -120,14 +126,16 @@
{total(deleted)}
{deletedMetadata.title}
- [e.date, e.value])],
- color: Colors.Quinary
- }
- ]} />
+
+ [e.date, e.value])],
+ color: Colors.Quinary
+ }
+ ]} />
+
{/if}
diff --git a/src/routes/console/project-[project]/+layout.svelte b/src/routes/console/project-[project]/+layout.svelte
index 6b69070e6..004daed0f 100644
--- a/src/routes/console/project-[project]/+layout.svelte
+++ b/src/routes/console/project-[project]/+layout.svelte
@@ -1,5 +1,26 @@
diff --git a/src/routes/console/project-[project]/overview/+layout.svelte b/src/routes/console/project-[project]/overview/+layout.svelte
index 87145363e..c76947b11 100644
--- a/src/routes/console/project-[project]/overview/+layout.svelte
+++ b/src/routes/console/project-[project]/overview/+layout.svelte
@@ -2,9 +2,7 @@
import type { Models } from '@aw-labs/appwrite-console';
import { Container, type UsagePeriods } from '$lib/layout';
import { page } from '$app/stores';
- import { browser } from '$app/environment';
- import { sdkForConsole } from '$lib/stores/sdk';
- import { project } from '../store';
+ import { project, stats } from '../store';
import { usage } from './store';
import { onMount } from 'svelte';
import { afterNavigate } from '$app/navigation';
@@ -14,7 +12,7 @@
$: projectId = $page.params.project;
$: path = `/console/project-${projectId}/overview`;
-
+ $: console.log($stats.get(projectId));
let period: UsagePeriods = '30d';
let showPeriodBandwidth = false;
let showPeriodRequests = false;
@@ -55,15 +53,6 @@
showPeriodRequests = false;
}
- if (browser) {
- sdkForConsole.client.subscribe('console', (message) => {
- if (message.events.includes('stats.connections')) {
- // TODO: take care of realtime connections
- return;
- }
- });
- }
-
//TODO: workaround for broken types
$: network = $usage?.network as unknown as Array<{
date: number;
@@ -119,13 +108,15 @@
{#if network.length}
- [e.date, e.value])]
- }
- ]} />
+
+ [e.date, e.value])]
+ }
+ ]} />
+
{/if}
@@ -160,13 +151,15 @@
{#if network.length}
- [e.date, e.value])]
- }
- ]} />
+
+ [e.date, e.value])]
+ }
+ ]} />
+
{/if}
@@ -262,8 +255,21 @@
-
XX
-
Realtime Connections
+ {#if $stats.get(projectId)}
+
+ {format($stats.get(projectId)[11][1])}
+
+
Realtime Connections
+
+ {:else}
+
waiting for realtime connections
+ {/if}
diff --git a/src/routes/console/project-[project]/store.ts b/src/routes/console/project-[project]/store.ts
index c1ca42ac1..97c2372ec 100644
--- a/src/routes/console/project-[project]/store.ts
+++ b/src/routes/console/project-[project]/store.ts
@@ -1,5 +1,39 @@
-import { derived } from 'svelte/store';
+import { derived, writable } from 'svelte/store';
import { page } from '$app/stores';
import type { Models } from '@aw-labs/appwrite-console';
+import type { BarSeriesOption } from 'echarts/charts';
export const project = derived(page, ($page) => $page.data.project as Models.Project);
+
+function createStats() {
+ const { subscribe, set, update } = writable