ora/src/dashboard/views/YourData.svelte

54 lines
1.3 KiB
Svelte
Raw Normal View History

2021-11-22 20:07:06 +01:00
<script>
import { saveAs } from 'file-saver'
import dj from 'dayjs'
import FileUpload from '../components/FileUpload.svelte'
2021-11-23 01:45:19 +01:00
import { clear, DB } from '../../shared/db'
2021-11-22 20:07:06 +01:00
import { longPress } from '../../shared/lib'
2021-11-23 01:45:19 +01:00
import { notify } from '../toasts'
2021-11-22 20:07:06 +01:00
2021-11-23 01:45:19 +01:00
let file
let loading = false
2021-11-22 20:07:06 +01:00
async function exportDB() {
2021-11-23 01:45:19 +01:00
try {
loading = true
const blob = await DB.export()
const filename = `Ora [${dj().format('YYYY-MM-DD HH-mm-ss')}].json`
saveAs(blob, filename)
notify('Exported')
} finally {
loading = false
}
2021-11-22 20:07:06 +01:00
}
async function clearDB() {
await clear()
window.location.reload()
}
async function importDB() {
try {
2021-11-23 01:45:19 +01:00
loading = true
await clear()
await DB.import(file)
notify('Imported')
} catch (e) {
notify('Error importing', 'error')
} finally {
loading = false
2021-11-22 20:07:06 +01:00
}
}
</script>
<h2 class="mt-8 text-2xl">Your Data</h2>
<div class="mt-2">
2021-11-23 01:45:19 +01:00
<FileUpload bind:file />
<button class="btn btn-primary" class:loading on:click={importDB} disabled={!file}>Import</button>
<button class="btn btn-primary" class:loading on:click={exportDB}>Export</button>
<button class="btn btn-error tooltip" class:loading data-tooltip="Hold to delete" use:longPress={clearDB}>
Delete all data
2021-11-22 20:07:06 +01:00
</button>
</div>