+11
-9
src/App.svelte
+11
-9
src/App.svelte
···
130
</script>
131
132
<main class="w-full mt-10">
133
-
<div class="max-w-4xl mx-auto px-3">
134
135
<header class="flex items-center gap-10 flex-wrap">
136
<div class="grow">
···
196
<thead>
197
<tr>
198
<th>endpoint</th>
199
-
<th>status</th>
200
-
<th>last bundle</th>
201
-
<th>mempool</th>
202
<th>head</th>
203
<th>root</th>
204
<th>version</th>
···
207
<th>latency</th>
208
</tr>
209
</thead>
210
-
<tbody>
211
{#each orderBy(instances, ...instanceOrderBy) as instance}
212
<tr>
213
<td><a href={instance.url} target="_blank" class="font-semibold">{instance.url.replace("https://", "")}</a></td>
214
<td>{#if instance._head}{#if isConflict}⚠️{:else}✅{/if}{:else if instance.status}🔄{:else}⌛{/if}</td>
215
<td>{#if instance.status?.bundles?.last_bundle}{instance.status?.bundles?.last_bundle}{/if}</td>
216
-
<td>{#if instance.status?.mempool && instance.status?.bundles?.last_bundle === lastKnownBundle.number}{formatNumber(instance.status?.mempool.count)}{:else if instance.status}<span class="opacity-25">syncing</span>{/if}</td>
217
<td><span class="font-mono text-xs {instance._head ? (isConflict ? 'text-error-600' : 'text-success-600') : 'opacity-50'}">{#if instance.status?.bundles?.head_hash}{instance.status?.bundles?.head_hash.slice(0, 7)}{/if}</span></td>
218
<td><span class="font-mono text-xs {instance.status ? (instance.status?.bundles?.root_hash === ROOT ? 'text-success-600' : 'text-error-600') : ''}">{#if instance.status?.bundles?.root_hash}{instance.status?.bundles?.root_hash.slice(0, 7)}{/if}</span></td>
219
-
<td>{#if instance.status?.server?.version}{instance.status?.server?.version}{/if}</td>
220
-
<td>{#if instance.status?.server?.websocket_enabled}✔︎{:else if instance.status}<span class="opacity-25">-</span>{/if}</td>
221
<td class="text-xs">{#if instance.status?.server?.uptime_seconds}{formatUptime(instance.status?.server?.uptime_seconds)}{/if}</td>
222
-
<td class="opacity-50">{#if instance.status?.latency}{Math.round(instance.status?.latency)}ms{/if}</td>
223
</tr>
224
{/each}
225
</tbody>
···
130
</script>
131
132
<main class="w-full mt-10">
133
+
<div class="max-w-5xl mx-auto px-3">
134
135
<header class="flex items-center gap-10 flex-wrap">
136
<div class="grow">
···
196
<thead>
197
<tr>
198
<th>endpoint</th>
199
+
<th>ok?</th>
200
+
<th>last</th>
201
+
<th>mempool</th>
202
+
<th>age</th>
203
<th>head</th>
204
<th>root</th>
205
<th>version</th>
···
208
<th>latency</th>
209
</tr>
210
</thead>
211
+
<tbody class="[&>tr]:hover:bg-primary-500/10">
212
{#each orderBy(instances, ...instanceOrderBy) as instance}
213
<tr>
214
<td><a href={instance.url} target="_blank" class="font-semibold">{instance.url.replace("https://", "")}</a></td>
215
<td>{#if instance._head}{#if isConflict}⚠️{:else}✅{/if}{:else if instance.status}🔄{:else}⌛{/if}</td>
216
<td>{#if instance.status?.bundles?.last_bundle}{instance.status?.bundles?.last_bundle}{/if}</td>
217
+
<td>{#if instance.status?.mempool && instance._head}{formatNumber(instance.status?.mempool.count)}{:else if instance.status}<span class="opacity-25">syncing</span>{/if}</td>
218
+
<td class="text-xs opacity-50">{#if instance.status?.mempool && instance._head}{instance.status?.mempool.last_op_age_seconds || 0}s{/if}</td>
219
<td><span class="font-mono text-xs {instance._head ? (isConflict ? 'text-error-600' : 'text-success-600') : 'opacity-50'}">{#if instance.status?.bundles?.head_hash}{instance.status?.bundles?.head_hash.slice(0, 7)}{/if}</span></td>
220
<td><span class="font-mono text-xs {instance.status ? (instance.status?.bundles?.root_hash === ROOT ? 'text-success-600' : 'text-error-600') : ''}">{#if instance.status?.bundles?.root_hash}{instance.status?.bundles?.root_hash.slice(0, 7)}{/if}</span></td>
221
+
<td class="text-xs">{#if instance.status?.server?.version}<a href="{instance.url}/status">{instance.status?.server?.version}</a>{/if}</td>
222
+
<td class="text-xs">{#if instance.status?.server?.websocket_enabled}✔︎{:else if instance.status}<span class="opacity-25">-</span>{/if}</td>
223
<td class="text-xs">{#if instance.status?.server?.uptime_seconds}{formatUptime(instance.status?.server?.uptime_seconds)}{/if}</td>
224
+
<td class="text-xs opacity-50">{#if instance.status?.latency}{Math.round(instance.status?.latency)}ms{/if}</td>
225
</tr>
226
{/each}
227
</tbody>