1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-24 07:19:36 +02:00

data export

This commit is contained in:
Sean Morley 2024-07-16 21:24:18 -04:00
parent a5c248932a
commit 824f5a6e2a

View file

@ -3,7 +3,7 @@
import { goto, invalidateAll } from '$app/navigation';
import { page } from '$app/stores';
import { addToast } from '$lib/toasts';
import type { User } from '$lib/types.js';
import type { Adventure, Collection, User } from '$lib/types.js';
import { onMount } from 'svelte';
import { browser } from '$app/environment';
@ -33,6 +33,33 @@
addToast('error', 'Error updating settings');
}
}
async function exportAdventures() {
let res = await fetch('/api/adventures/all');
let adventures = (await res.json()) as Adventure[];
res = await fetch('/api/collections/all');
let collections = (await res.json()) as Collection[];
res = await fetch('/api/visitedregion');
let visitedRegions = await res.json();
const data = {
adventures,
collections,
visitedRegions
};
const blob = new Blob([JSON.stringify(data)], { type: 'application/json' });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'adventure-log-export.json';
a.click();
URL.revokeObjectURL(url);
}
</script>
<h1 class="text-center font-extrabold text-4xl mb-6">Settings Page</h1>
@ -141,6 +168,11 @@
<button class="py-2 px-4 btn btn-primary mt-2">Change Email</button>
</form>
</div>
<div class="flex flex-col items-center">
<h1 class="text-center font-extrabold text-xl mt-4 mb-2">Data Export</h1>
<button class="btn btn-neutral mb-4" on:click={exportAdventures}> Export to JSON </button>
<p>This may take a few seconds...</p>
</div>
<small class="text-center"
><b>For Debug Use:</b> Server PK={user.pk} | Date Joined: {user.date_joined