2023-06-07 21:30:22 +02:00
|
|
|
<script>
|
|
|
|
import Icon from '$components/icon.svelte';
|
|
|
|
import ObjectGrid from '$components/objectgrid.svelte';
|
|
|
|
|
|
|
|
export let database;
|
|
|
|
|
|
|
|
let copySucceeded = false;
|
|
|
|
|
|
|
|
async function copy() {
|
2023-06-11 09:34:00 +02:00
|
|
|
const json = JSON.stringify(database.stats, undefined, '\t');
|
2023-06-07 21:30:22 +02:00
|
|
|
await navigator.clipboard.writeText(json);
|
|
|
|
copySucceeded = true;
|
|
|
|
setTimeout(() => copySucceeded = false, 1500);
|
|
|
|
}
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<div class="stats">
|
|
|
|
<!-- <CodeExample code="db.stats()" /> -->
|
|
|
|
|
|
|
|
<div class="grid">
|
2023-06-23 17:22:47 +02:00
|
|
|
<ObjectGrid
|
|
|
|
data={database.stats}
|
|
|
|
errorTitle={database.statsError ? 'Error fetching database stats' : ''}
|
|
|
|
errorDescription={database.statsError}
|
|
|
|
busy={!database.stats && !database.statsError && `Fetching stats for ${database.key}…`}
|
|
|
|
/>
|
2023-06-07 21:30:22 +02:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div class="buttons">
|
2023-06-27 17:21:54 +02:00
|
|
|
<button class="button secondary" on:click={copy} disabled={!database.stats}>
|
2023-06-07 21:30:22 +02:00
|
|
|
<Icon name={copySucceeded ? 'check' : 'clipboard'} />
|
|
|
|
Copy JSON
|
|
|
|
</button>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<style>
|
|
|
|
.stats {
|
|
|
|
display: grid;
|
|
|
|
gap: 0.5rem;
|
|
|
|
grid-template: 1fr auto / 1fr;
|
|
|
|
}
|
|
|
|
|
|
|
|
.stats .grid {
|
|
|
|
overflow: auto;
|
|
|
|
min-height: 0;
|
|
|
|
min-width: 0;
|
|
|
|
border: 1px solid #ccc;
|
|
|
|
}
|
|
|
|
</style>
|