From a10be206954a6129249f94d47dbcf9d818b3a540 Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Tue, 5 May 2026 12:16:39 +0530 Subject: [PATCH 1/3] fix: correct function usage period totals --- .../usage/[[period]]/+page.svelte | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte index 705478db75..624d6bfe68 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte @@ -1,20 +1,29 @@ @@ -26,11 +35,12 @@ legend: 'Executions', title: 'Total executions' }} + isCumulative {total} {count} /> {/if} - {#if mbSecondsCount} + {#if executionsTime.length} {/if} From 9193921bd51548e2df1a3c4c3bbe98b9a0fd90f0 Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Tue, 5 May 2026 12:23:59 +0530 Subject: [PATCH 2/3] fix: guard empty function usage chart --- .../functions/function-[function]/usage/[[period]]/+page.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte index 624d6bfe68..4a1316b98e 100644 --- a/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/functions/function-[function]/usage/[[period]]/+page.svelte @@ -28,7 +28,7 @@ - {#if count} + {#if count.length} Date: Tue, 5 May 2026 12:24:15 +0530 Subject: [PATCH 3/3] refactor: improve periodic usage charts --- src/lib/layout/usageMultiple.svelte | 57 +++++++++++++------ .../usage/[[period]]/+page.svelte | 29 ++++++++-- .../databases/usage/[[period]]/+page.svelte | 53 +++++++++++++++-- 3 files changed, 109 insertions(+), 30 deletions(-) diff --git a/src/lib/layout/usageMultiple.svelte b/src/lib/layout/usageMultiple.svelte index 85f5091ca4..ff1789c49a 100644 --- a/src/lib/layout/usageMultiple.svelte +++ b/src/lib/layout/usageMultiple.svelte @@ -1,19 +1,47 @@
@@ -41,19 +69,12 @@ {#if count} - {@const totalCount = clampMin(total.reduce((a, b) => a + b, 0))} - {formatNumberWithCommas(totalCount)} Total {title.toLocaleLowerCase()}
- ({ - name: legendData[index].name, - data: accumulateFromEndingTotal(c, total[index]) - }))} /> + {#if legendData} + import { base } from '$app/paths'; + import { page } from '$app/state'; + import { clampMin } from '$lib/helpers/numbers'; + import { formatNum } from '$lib/helpers/string'; import { Container, UsageMultiple } from '$lib/layout'; + import type { PageProps } from './$types'; - export let data; + let { data }: PageProps = $props(); - $: reads = data.databaseReads; - $: readsTotal = data.databaseReadsTotal; + const reads = $derived(data.databaseReads ?? []); + const readsTotal = $derived(clampMin(reads.reduce((sum, item) => sum + item.value, 0))); - $: writes = data.databaseWrites; - $: writesTotal = data.databaseWritesTotal; + const writes = $derived(data.databaseWrites ?? []); + const writesTotal = $derived(clampMin(writes.reduce((sum, item) => sum + item.value, 0))); + + const usagePath = $derived( + `${base}/project-${page.params.region}-${page.params.project}/databases/database-${page.params.database}/usage` + ); + import { goto } from '$app/navigation'; + import { base } from '$app/paths'; + import { page } from '$app/state'; import { Container, UsageMultiple } from '$lib/layout'; + import { InputSelect } from '$lib/elements/forms'; + import { clampMin } from '$lib/helpers/numbers'; + import { formatNum } from '$lib/helpers/string'; import { Layout } from '@appwrite.io/pink-svelte'; - import type { PageData } from './$types'; + import type { PageProps } from './$types'; - export let data: PageData; + let { data }: PageProps = $props(); - $: reads = data.databasesReads; - $: readsTotal = data.databasesReadsTotal; + const reads = $derived(data.databasesReads ?? []); + const readsTotal = $derived(clampMin(reads.reduce((sum, item) => sum + item.value, 0))); - $: writes = data.databasesWrites; - $: writesTotal = data.databasesWritesTotal; + const writes = $derived(data.databasesWrites ?? []); + const writesTotal = $derived(clampMin(writes.reduce((sum, item) => sum + item.value, 0))); + + const usagePath = $derived( + `${base}/project-${page.params.region}-${page.params.project}/databases/usage` + ); +
+ goto(`${usagePath}/${e.detail}`)} + id="period" + options={[ + { + label: '24 hours', + value: '24h' + }, + { + label: '30 days', + value: '30d' + }, + { + label: '90 days', + value: '90d' + } + ]} + value={page.params.period ?? '30d'} /> +
+