diff --git a/web/frontend/src/Status.root.svelte b/web/frontend/src/Status.root.svelte
index 26842c8..573914d 100644
--- a/web/frontend/src/Status.root.svelte
+++ b/web/frontend/src/Status.root.svelte
@@ -2,7 +2,7 @@
import Refresher from './joblist/Refresher.svelte'
import Roofline, { transformPerNodeData } from './plots/Roofline.svelte'
import Histogram from './plots/Histogram.svelte'
- import { Row, Col, Spinner, Card, Table, Progress } from 'sveltestrap'
+ import { Row, Col, Spinner, Card, CardHeader, CardTitle, CardBody, Table, Progress, Icon } from 'sveltestrap'
import { init } from './utils.js'
import { operationStore, query } from '@urql/svelte'
@@ -60,7 +60,12 @@
query(mainQuery)
+
+
+
+ Current usage of cluster "{cluster}"
+
{#if $initq.fetching || $mainQuery.fetching}
@@ -89,54 +94,71 @@
{/if}
+
+
+
+
+
{#if $initq.data && $mainQuery.data}
{#each $initq.data.clusters.find(c => c.name == cluster).subClusters as subCluster, i}
-
-
-
-
- SubCluster |
- {subCluster.name} |
-
-
- Allocated Nodes |
- |
- ({allocatedNodes[subCluster.name]} / {subCluster.numberOfNodes}) |
-
-
- Flop Rate |
- |
- ({flopRate[subCluster.name]} / {subCluster.flopRateSimd * subCluster.numberOfNodes}) |
-
-
- MemBw Rate |
- |
- ({memBwRate[subCluster.name]} / {subCluster.memoryBandwidth * subCluster.numberOfNodes}) |
-
-
+
+
+
+
+ SubCluster "{subCluster.name}"
+
+
+
+
+ Allocated Nodes |
+ |
+ ({allocatedNodes[subCluster.name]} / {subCluster.numberOfNodes}) |
+
+
+ Flop Rate (Any) |
+ |
+ ({flopRate[subCluster.name]} / {subCluster.flopRateSimd * subCluster.numberOfNodes}) |
+
+
+ MemBw Rate |
+ |
+ ({memBwRate[subCluster.name]} / {subCluster.memoryBandwidth * subCluster.numberOfNodes}) |
+
+
+
+
+
+
+
+ {#key $mainQuery.data.nodeMetrics}
+ data.subCluster == subCluster.name))} />
+ {/key}
+
-
- {#key $mainQuery.data.nodeMetrics}
- data.subCluster == subCluster.name))} />
- {/key}
-
{/each}
-
-
-
Top Users
- {#key $mainQuery.data}
- b.count - a.count).map(({ count }, idx) => ({ count, value: idx }))}
- label={(x) => x < $mainQuery.data.topUsers.length ? $mainQuery.data.topUsers[Math.floor(x)].name : '0'} />
- {/key}
-
-
+
+
+
+
+
+
+
+
+
Top Users
+ {#key $mainQuery.data}
+ b.count - a.count).map(({ count }, idx) => ({ count, value: idx }))}
+ label={(x) => x < $mainQuery.data.topUsers.length ? $mainQuery.data.topUsers[Math.floor(x)].name : '0'} />
+ {/key}
+
+
+
- Name | Number of Nodes |
+ User Name | Number of Nodes |
{#each $mainQuery.data.topUsers.sort((a, b) => b.count - a.count) as { name, count }}
{name} |
@@ -144,41 +166,43 @@
{/each}
-
-
-
Top Projects
+
+
+ Top Projects
{#key $mainQuery.data}
b.count - a.count).map(({ count }, idx) => ({ count, value: idx }))}
label={(x) => x < $mainQuery.data.topProjects.length ? $mainQuery.data.topProjects[Math.floor(x)].name : '0'} />
{/key}
-
-
+
+
- Name | Number of Nodes |
+ Project Code | Number of Nodes |
{#each $mainQuery.data.topProjects.sort((a, b) => b.count - a.count) as { name, count }}
{name} | {count} |
{/each}
-
+
-
-
-
Duration Distribution
- {#key $mainQuery.data.stats}
-
- {/key}
-
-
-
Number of Nodes Distribution
+
+
+
+
Duration Distribution
+ {#key $mainQuery.data.stats}
+
+ {/key}
+
+
+
+ Number of Nodes Distribution
{#key $mainQuery.data.stats}
{/key}
-
+
{/if}