feat: add refresh button

resolves #82
This commit is contained in:
2024-01-05 00:12:42 +01:00
parent 5fa4b1fd09
commit 06b83f79ef
5 changed files with 32 additions and 12 deletions

View File

@@ -92,6 +92,7 @@ const config = {
"stat_2", "stat_2",
"description", "description",
"add_circle", "add_circle",
"refresh",
], ],
codePoints: { codePoints: {
speed: "e9e4", speed: "e9e4",

View File

@@ -14,6 +14,7 @@ const de = {
sync: { sync: {
TITLE_READ: "Neueste Änderungen werden abgerufen", TITLE_READ: "Neueste Änderungen werden abgerufen",
TITLE_WRITE: "Änderungen werden gespeichert", TITLE_WRITE: "Änderungen werden gespeichert",
RELOAD: "Neu laden",
}, },
backup: { backup: {
TITLE: "Verlauf speichern", TITLE: "Verlauf speichern",

View File

@@ -21,6 +21,7 @@ const en = {
sync: { sync: {
TITLE_READ: "Reading latest changes", TITLE_READ: "Reading latest changes",
TITLE_WRITE: "Saving changes to device", TITLE_WRITE: "Saving changes to device",
RELOAD: "Reload",
}, },
modal: { modal: {
CLOSE: "Close", CLOSE: "Close",

View File

@@ -55,6 +55,12 @@ export async function initSerial(manual = false) {
const device = get(serialPort) ?? new CharaDevice() const device = get(serialPort) ?? new CharaDevice()
await device.init(manual) await device.init(manual)
serialPort.set(device) serialPort.set(device)
sync()
}
export async function sync() {
const device = get(serialPort)
if (!device) return
const chordCount = await device.getChordCount() const chordCount = await device.getChordCount()
syncStatus.set("downloading") syncStatus.set("downloading")

View File

@@ -1,21 +1,32 @@
<script lang="ts"> <script lang="ts">
import {syncProgress, syncStatus} from "$lib/serial/connection" import {serialPort, syncProgress, syncStatus, sync} from "$lib/serial/connection"
import LL from "../i18n/i18n-svelte" import LL from "../i18n/i18n-svelte"
import {fly} from "svelte/transition" import {slide} from "svelte/transition"
</script> </script>
{#if $syncStatus !== "done"} <div class="container">
<div transition:fly={{y: 40}}> {#if $syncStatus !== "done"}
<progress max={$syncProgress?.max ?? 1} value={$syncProgress?.current ?? 1}></progress> <div transition:slide>
{#if $syncStatus === "downloading"} <progress max={$syncProgress?.max ?? 1} value={$syncProgress?.current ?? 1}></progress>
<div>{$LL.sync.TITLE_READ()}</div> {#if $syncStatus === "downloading"}
{:else} <div>{$LL.sync.TITLE_READ()}</div>
<div>{$LL.sync.TITLE_WRITE()}</div> {:else}
{/if} <div>{$LL.sync.TITLE_WRITE()}</div>
</div> {/if}
{/if} </div>
{:else if $serialPort}
<button transition:slide on:click={sync}><span class="icon">refresh</span>{$LL.sync.RELOAD()}</button>
{/if}
</div>
<style lang="scss"> <style lang="scss">
.container {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
div { div {
font-size: 12px; font-size: 12px;
} }