@@ -368,9 +369,10 @@
progressValue={bytesToSize(current, 'GB')}
progressMax={max}
progressBarData={progressBarStorageDate} />
- {#if project?.length > 0}
-
- {/if}
+ {#if projects?.length > 0}
{/if}
{:else}
@@ -478,9 +480,9 @@
- {#if project?.length > 0}
+ {#if projects?.length > 0}
diff --git a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte
index 7bd50227c..ca31412f4 100644
--- a/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte
+++ b/src/routes/(console)/organization-[organization]/usage/[[invoice]]/ProjectBreakdown.svelte
@@ -111,90 +111,92 @@
});
-
-
- Project breakdown
-
-
- Project
- {#if databaseOperationMetric}
- Reads
- Writes
- {:else}
- {getMetricTitle(metric)}
- {/if}
-
- {#if estimate}
- Estimated cost
- {/if}
- {#if $canSeeProjects}
-
- {/if}
-
-
- {#each groupByProject(metric, estimate, databaseOperationMetric).sort((a, b) => {
- const aValue = a.usage ?? a.databasesReads ?? 0;
- const bValue = b.usage ?? b.databasesReads ?? 0;
- return bValue - aValue;
- }) as project}
- {#if !$canSeeProjects}
-
-
- {data.projectNames[project.projectId]?.name ?? 'Unknown'}
-
- {#if databaseOperationMetric}
-
- {format(project.databasesReads ?? 0)}
-
-
- {format(project.databasesWrites ?? 0)}
-
- {:else}
-
- {format(project.usage)}
-
- {/if}
-
- {#if project.estimate}
-
- {formatCurrency(project.estimate)}
-
- {/if}
-
+{#if projects.some((project) => project[metric]) || projects.some( (project) => databaseOperationMetric?.some((metric) => project[metric]) )}
+
+
+ Project breakdown
+
+
+ Project
+ {#if databaseOperationMetric}
+ Reads
+ Writes
{:else}
-
-
- {data.projectNames[project.projectId]?.name ?? 'Unknown'}
-
- {#if databaseOperationMetric}
-
- {format(project.databasesReads ?? 0)}
-
-
- {format(project.databasesWrites ?? 0)}
-
- {:else}
-
- {format(project.usage)}
-
- {/if}
-
- {#if project.estimate}
-
- {formatCurrency(project.estimate)}
-
- {/if}
-
-
-
-
+ {getMetricTitle(metric)}
{/if}
- {/each}
-
-
-
-
+
+ {#if estimate}
+ Estimated cost
+ {/if}
+ {#if $canSeeProjects}
+
+ {/if}
+
+
+ {#each groupByProject(metric, estimate, databaseOperationMetric).sort( (a, b) => {
+ const aValue = a.usage ?? a.databasesReads ?? 0;
+ const bValue = b.usage ?? b.databasesReads ?? 0;
+ return bValue - aValue;
+ } ) as project}
+ {#if !$canSeeProjects}
+
+
+ {data.projectNames[project.projectId]?.name ?? 'Unknown'}
+
+ {#if databaseOperationMetric}
+
+ {format(project.databasesReads ?? 0)}
+
+
+ {format(project.databasesWrites ?? 0)}
+
+ {:else}
+
+ {format(project.usage)}
+
+ {/if}
+
+ {#if project.estimate}
+
+ {formatCurrency(project.estimate)}
+
+ {/if}
+
+ {:else}
+
+
+ {data.projectNames[project.projectId]?.name ?? 'Unknown'}
+
+ {#if databaseOperationMetric}
+
+ {format(project.databasesReads ?? 0)}
+
+
+ {format(project.databasesWrites ?? 0)}
+
+ {:else}
+
+ {format(project.usage)}
+
+ {/if}
+
+ {#if project.estimate}
+
+ {formatCurrency(project.estimate)}
+
+ {/if}
+
+
+
+
+ {/if}
+ {/each}
+
+
+
+
+{/if}