WIP
This commit is contained in:
@@ -3,38 +3,28 @@
|
|||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import PackageList from "./PackageList.svelte"
|
import PackageLists from "./routes/PackageLists.svelte";
|
||||||
export let name: string;
|
|
||||||
|
|
||||||
async function getUsers() {
|
$: {
|
||||||
let response = await fetch("http://localhost:9000/v1/lists", {
|
const path = window.location.pathname;
|
||||||
method: "GET",
|
console.log(`Routing ${path}`);
|
||||||
headers: {
|
|
||||||
"Accept": "application/json"
|
let component;
|
||||||
},
|
|
||||||
cache: "no-store",
|
if (path == "/") {
|
||||||
});
|
window.location.replace("/lists/");
|
||||||
let users = await response.json();
|
} else if (path == "/lists/") {
|
||||||
return users;
|
console.log("Routing to package lists");
|
||||||
|
component = PackageLists;
|
||||||
|
} else if (path.startswith("/lists/")) {
|
||||||
|
console.log("hm");
|
||||||
|
} else {
|
||||||
|
console.log("No matching route found");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const promise = getUsers()
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<main>
|
<main>
|
||||||
<div>
|
<svelte:component this={component} />
|
||||||
{#await promise}
|
|
||||||
<p>Loading</p>
|
|
||||||
{:then lists}
|
|
||||||
<div class="m-2 grid grid-cols-3 gap-5 items-start grid-flow-row">
|
|
||||||
{#each lists as list}
|
|
||||||
<div class="p-3 border rounded-lg border-gray-300 shadow hover:shadow-xl bg-gradient-to-br bg-blue-300 bg-opacity-50 hover:bg-opacity-100">
|
|
||||||
<PackageList data={list} />
|
|
||||||
</div>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
{:catch error}
|
|
||||||
<p>Something went wrong</p>
|
|
||||||
{/await}
|
|
||||||
</div>
|
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
@@ -2,7 +2,9 @@
|
|||||||
import PackageItem from "./PackageItem.svelte"
|
import PackageItem from "./PackageItem.svelte"
|
||||||
import { fade, fly, draw } from 'svelte/transition';
|
import { fade, fly, draw } from 'svelte/transition';
|
||||||
|
|
||||||
export let data;
|
export let name;
|
||||||
|
export let items;
|
||||||
|
export let id;
|
||||||
|
|
||||||
let active = false;
|
let active = false;
|
||||||
let shown_items = [];
|
let shown_items = [];
|
||||||
@@ -15,17 +17,21 @@
|
|||||||
active = false
|
active = false
|
||||||
}
|
}
|
||||||
|
|
||||||
$: if (data.items.length <= 4) {
|
$: if (items.length <= 4) {
|
||||||
shown_items = data.items
|
shown_items = items
|
||||||
ellipsed = false
|
ellipsed = false
|
||||||
} else {
|
} else {
|
||||||
shown_items = data.items.slice(0, !active && 3 || data.items.length)
|
shown_items = items.slice(0, !active && 3 || items.length)
|
||||||
ellipsed = true
|
ellipsed = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function onClick(e) {
|
||||||
|
window.location = `/lists/${e}`;
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<main on:mouseenter={enter} on:mouseleave={leave}>
|
<main on:mouseenter={enter} on:mouseleave={leave} on:click={onClick(id)}>
|
||||||
<h2 class="text-lg font-semibold text-center mb-5 mt-3">{data.name}</h2>
|
<h2 class="text-lg font-semibold text-center mb-5 mt-3">{name}</h2>
|
||||||
<ul class="list-disc ml-5">
|
<ul class="list-disc ml-5">
|
||||||
{#each shown_items as item}
|
{#each shown_items as item}
|
||||||
<li in:fade|local={{duration: 200}} out:fade|local={{duration: 100, delay: 100}}><PackageItem data={item} /></li>
|
<li in:fade|local={{duration: 200}} out:fade|local={{duration: 100, delay: 100}}><PackageItem data={item} /></li>
|
||||||
@@ -3,7 +3,6 @@ import App from './App.svelte';
|
|||||||
const app = new App({
|
const app = new App({
|
||||||
target: document.body,
|
target: document.body,
|
||||||
props: {
|
props: {
|
||||||
name: 'world'
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
33
ui/src/routes/PackageLists.svelte
Normal file
33
ui/src/routes/PackageLists.svelte
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<script lang="ts">
|
||||||
|
import PackageList from "../components/PackageList.svelte"
|
||||||
|
|
||||||
|
async function getUsers() {
|
||||||
|
let response = await fetch("http://localhost:9000/v1/lists", {
|
||||||
|
method: "GET",
|
||||||
|
headers: {
|
||||||
|
"Accept": "application/json"
|
||||||
|
},
|
||||||
|
cache: "no-store",
|
||||||
|
});
|
||||||
|
let users = await response.json();
|
||||||
|
return users;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<div>
|
||||||
|
{#await getUsers()}
|
||||||
|
<p>Loading</p>
|
||||||
|
{:then lists}
|
||||||
|
<div class="m-2 grid grid-cols-3 gap-5 items-start grid-flow-row">
|
||||||
|
{#each lists as list}
|
||||||
|
<div class="p-3 border rounded-lg border-gray-300 shadow hover:shadow-xl bg-gray-100 bg-opacity-30 hover:bg-opacity-100">
|
||||||
|
<PackageList id={list.id} name={list.name} items={list.items}/>
|
||||||
|
</div>
|
||||||
|
{/each}
|
||||||
|
</div>
|
||||||
|
{:catch error}
|
||||||
|
<p>Something went wrong</p>
|
||||||
|
{/await}
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
Reference in New Issue
Block a user