From e37c73e33a4aaf7fb8d25b5af03627f20bcda19f Mon Sep 17 00:00:00 2001
From: Doog <157747121+doogongithub@users.noreply.github.com>
Date: Sat, 24 Feb 2024 20:08:35 -0500
Subject: add gitignore
---
fe/src/App.svelte | 147 +++-----------------------------------------
fe/src/app.css | 2 +-
fe/src/lib/DataView.svelte | 67 ++++++++++++++++++++
fe/src/lib/Layout.svelte | 57 +++++++++++++++++
fe/src/lib/LoginForm.svelte | 64 +++++++++++++++++++
fe/src/lib/Table.svelte | 61 +++++++++++++++---
fe/src/stores/auth.ts | 48 +++++++++++++++
7 files changed, 300 insertions(+), 146 deletions(-)
create mode 100644 fe/src/lib/DataView.svelte
create mode 100644 fe/src/lib/Layout.svelte
create mode 100644 fe/src/lib/LoginForm.svelte
create mode 100644 fe/src/stores/auth.ts
(limited to 'fe/src')
diff --git a/fe/src/App.svelte b/fe/src/App.svelte
index cc4e594..8811c52 100644
--- a/fe/src/App.svelte
+++ b/fe/src/App.svelte
@@ -1,146 +1,19 @@
- {#if !authenticated}
-
-
-
+
+ {#if !$authenticated}
+
{:else}
-
-
-
-
-
-
-
- {#await data}
- ...fetching
- {:then data}
- {#if data}
- Status
- {data.status}
-
-
-
- {:else}
- No data yet
- {/if}
- {:catch errror}
- {error.message}
- {/await}
+
{/if}
+
diff --git a/fe/src/lib/LoginForm.svelte b/fe/src/lib/LoginForm.svelte
new file mode 100644
index 0000000..22c0faf
--- /dev/null
+++ b/fe/src/lib/LoginForm.svelte
@@ -0,0 +1,64 @@
+
+
+
+
+
diff --git a/fe/src/lib/Table.svelte b/fe/src/lib/Table.svelte
index 2df9f8c..5572280 100644
--- a/fe/src/lib/Table.svelte
+++ b/fe/src/lib/Table.svelte
@@ -1,8 +1,38 @@
{#if title}
@@ -11,16 +41,27 @@
{#if !noheader}
-
- Data Header
- |
+ {#each getDataKeys(data) as header}
+ {header} |
+ {/each}
{/if}
+ {#if data}
+ {#each data as row}
- Data |
+ {#each getRow(row) as datum}
+
+ {formatDatum(datum)} |
+ {/each}
+ {/each}
+ {:else}
+
+ There is not data.
+
+ {/if}
{#if !nofooter}
@@ -38,4 +79,8 @@ table {
margin: 8px;
border: solid 1px black;
}
+
+th {
+ text-transform: capitalize;
+}
diff --git a/fe/src/stores/auth.ts b/fe/src/stores/auth.ts
new file mode 100644
index 0000000..7e70cda
--- /dev/null
+++ b/fe/src/stores/auth.ts
@@ -0,0 +1,48 @@
+import type { Invalidator, Subscriber, Unsubscriber } from 'svelte/store';
+import { writable, derived } from 'svelte/store';
+
+type Nullable = T | null;
+
+interface User {
+ uuid: string;
+ username: string;
+}
+
+interface TokenStore {
+ subscribe: (run: Subscriber>, invalidate: Invalidator>) => Unsubscriber,
+ authenticate: (newToken: string) => void,
+ unauthenticate: () => void
+}
+
+function createTokenStore(): TokenStore {
+ const storedToken = localStorage.getItem("token");
+ const { subscribe, set } = writable(storedToken);
+
+ function authenticate(newToken: string): void {
+ try {
+ localStorage.setItem("token", newToken);
+ set(newToken);
+ } catch (e) {
+ console.error('error', e);
+ }
+ }
+
+ function unauthenticate(): void {
+ localStorage.removeItem("token");
+ set(null);
+ }
+
+ return {
+ subscribe,
+ authenticate,
+ unauthenticate
+ };
+}
+
+function onTokenChange ($token: Nullable): boolean {
+ return $token ? true : false;
+}
+
+export const token = createTokenStore();
+export const authenticated = derived(token, onTokenChange);
+export const user = writable(null);
--
cgit v1.1