summaryrefslogtreecommitdiff
path: root/ie.html
blob: 89f69ded01d29823e4f63e3b29e13a1c03e86eae (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<form name=import-export onsubmit="return false">
<p>
<input type=submit name=import value="Import data">
<input type=submit name=export value="Export data">
</form>

<script>
$loaded_p.then(() => {
  let f = document.forms["import-export"]
  f.onsubmit = async e => {
    e.preventDefault()
    switch (e.submitter.name) {
    case "import":
      let file = await new Promise(r =>
        ė("input", {type: "file", onchange(e) { r(this.files[0]) }})
          .ǀ(e => f.append(e)).ǀ(ff`click`).remove())
      let reader = new FileReader()
      reader.onload =
        e => ṡ.set_all(JSON.parse(reader.result))
              .then(() => location.reload())
      reader.onerror = e => alert(reader.error)
      reader.readAsText(file)
      break
    case "export":
      let data = await ṡ.get_all(["deck", "settings"]),
      blob = new Blob([JSON.stringify (data)], {type: "application/json"}),
      href = URL.createObjectURL(blob)
      ė("a", {href, download: "onpoint-export.json"})
        .ǀ(e => f.append(e)).ǀ(ff`click`).remove()
      URL.revokeObjectURL(href)
      break
    }
  }
})
</script>