diff --git a/web/src/App.svelte b/web/src/App.svelte index acd207b..b12e231 100644 --- a/web/src/App.svelte +++ b/web/src/App.svelte @@ -3,15 +3,21 @@ import IDTable from "./lib/IDTable.svelte"; import LastId from "./lib/LastID.svelte"; import AddIDModal from "./lib/AddIDModal.svelte"; + import ExportModal from "./lib/ExportModal.svelte"; + import { generateCSVFile } from "./lib/exporting"; + import { fetchMapping, type IDMap } from "./lib/IDMapping"; + import { downloadBlob } from "./lib/downloadBlob"; let lastID: string = $state(""); + let mapping: IDMap | null = $state(null); let addModal: AddIDModal; - let idTable: IDTable; + let exportModal: ExportModal; + + onMount(async () => { + mapping = await fetchMapping(); - onMount(() => { let sse = new EventSource("/api/idevent"); - sse.onmessage = (e) => { lastID = e.data; }; @@ -25,13 +31,14 @@

Anwesenheit

- { + exportModal.open(); + }} > - Download CSV - + Export CSV +
- { - addModal.open(id,firstName,lastName); - }}/> + {#if mapping} + { + addModal.open(id, firstName, lastName); + }} + /> + {/if}
{ - idTable.reloadData(); + onSubmitted={async () => { + mapping = await fetchMapping(); + }} + /> + + { + if (!mapping) { + return; + } + let csvFile = await generateCSVFile(from, to, mapping); + + downloadBlob("export.csv",csvFile,"text/csv"); }} /> diff --git a/web/src/lib/IDTable.svelte b/web/src/lib/IDTable.svelte index 1b282a9..2d80ecb 100644 --- a/web/src/lib/IDTable.svelte +++ b/web/src/lib/IDTable.svelte @@ -1,16 +1,13 @@ -{#if data == null} - Loading... -{:else} -
- - - - - -
{ - handleSortClick("id"); - }} - > - ID - {indicator("id")} - { - handleSortClick("last"); - }} - > - Nachname - {indicator("last")} - { - handleSortClick("first"); - }} - >Vorname +
+ + + + + + - + {indicator("first")} + + + + + + {#each rowsSorted as row} + + + + + - - - {#each rowsSorted as row} - - - - - - - {/each} - -
{ + handleSortClick("id"); + }} + > + ID + {indicator("id")} + { + handleSortClick("last"); + }} + > + Nachname + {indicator("last")} + { + handleSortClick("first"); + }} + >Vorname - {indicator("first")} -
{row.id}{row.last}{row.first}
{row.id}{row.last}{row.first}
-
-{/if} + {/each} + +
+