sidebar
This commit is contained in:
@@ -1,7 +1,13 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import { page } from "$app/state";
|
||||||
import favicon from "$lib/assets/favicon.svg";
|
import favicon from "$lib/assets/favicon.svg";
|
||||||
import "../app.css";
|
import "../app.css";
|
||||||
|
|
||||||
|
const links = [
|
||||||
|
{ name: "Standards", path: "/standards" },
|
||||||
|
{ name: "Commerce", path: "/commerce" },
|
||||||
|
];
|
||||||
|
|
||||||
let { children } = $props();
|
let { children } = $props();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -9,4 +15,30 @@
|
|||||||
<link rel="icon" href={favicon} />
|
<link rel="icon" href={favicon} />
|
||||||
</svelte:head>
|
</svelte:head>
|
||||||
|
|
||||||
{@render children?.()}
|
<div class="drawer lg:drawer-open">
|
||||||
|
<input id="sidebar" type="checkbox" class="drawer-toggle" />
|
||||||
|
<div class="drawer-content p-10 flex flex-col items-center justify-center">
|
||||||
|
{@render children?.()}
|
||||||
|
<label for="sidebar" class="btn btn-primary drawer-button lg:hidden">
|
||||||
|
Open drawer
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div class="drawer-side">
|
||||||
|
<label for="sidebar" aria-label="close sidebar" class="drawer-overlay"
|
||||||
|
></label>
|
||||||
|
<ul
|
||||||
|
class="menu menu-lg bg-base-200 text-base-content min-h-full w-72 p-4"
|
||||||
|
>
|
||||||
|
{#each links as link}
|
||||||
|
<li>
|
||||||
|
<a
|
||||||
|
class={{
|
||||||
|
"menu-active": page.url.pathname === link.path,
|
||||||
|
}}
|
||||||
|
href={link.path}>{link.name}</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
{/each}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
import { redirect } from '@sveltejs/kit';
|
||||||
|
import type { PageServerLoad } from './$types';
|
||||||
|
|
||||||
|
export const load: PageServerLoad = ({ }) => {
|
||||||
|
redirect(308, '/standards');
|
||||||
|
};
|
||||||
@@ -76,89 +76,82 @@
|
|||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container m-auto">
|
<section class="w-full flex justify-between gap-2 pt-10 items-center">
|
||||||
<section
|
<fieldset class="fieldset bg-base-200 p-6 max-w-lg">
|
||||||
class="w-full flex flex-col md:flex-row justify-between gap-2 pt-10"
|
<legend class="fieldset-legend text-lg font-semibold"> Metrics </legend>
|
||||||
>
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
||||||
<fieldset class="fieldset bg-base-200 p-6 max-w-lg">
|
<label>
|
||||||
<legend class="fieldset-legend text-lg font-semibold">
|
<span class="label mb-1">Activity</span>
|
||||||
Metrics
|
<select
|
||||||
</legend>
|
class="select w-full"
|
||||||
|
name="activities"
|
||||||
|
bind:value={input.activity}
|
||||||
|
>
|
||||||
|
{#each Object.values(Activity) as activity}
|
||||||
|
<option value={activity}>
|
||||||
|
{allStandards.byActivity(activity).getMetadata()
|
||||||
|
.name}
|
||||||
|
</option>
|
||||||
|
{/each}
|
||||||
|
</select>
|
||||||
|
</label>
|
||||||
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
<label>
|
||||||
<label>
|
<span class="label mb-1">Gender</span>
|
||||||
<span class="label mb-1">Activity</span>
|
<select
|
||||||
<select
|
class="select w-full"
|
||||||
class="select w-full"
|
name="genders"
|
||||||
name="activities"
|
bind:value={input.metrics.gender}
|
||||||
bind:value={input.activity}
|
>
|
||||||
>
|
{#each Object.values(Gender) as gender}
|
||||||
{#each Object.values(Activity) as activity}
|
<option value={gender}>{gender}</option>
|
||||||
<option value={activity}>
|
{/each}
|
||||||
{allStandards.byActivity(activity).getMetadata()
|
</select>
|
||||||
.name}
|
</label>
|
||||||
</option>
|
|
||||||
{/each}
|
|
||||||
</select>
|
|
||||||
</label>
|
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
<span class="label mb-1">Gender</span>
|
<span class="label mb-1">Age</span>
|
||||||
<select
|
<input
|
||||||
class="select w-full"
|
class="input w-full"
|
||||||
name="genders"
|
type="number"
|
||||||
bind:value={input.metrics.gender}
|
min="0"
|
||||||
>
|
max="100"
|
||||||
{#each Object.values(Gender) as gender}
|
placeholder="18"
|
||||||
<option value={gender}>{gender}</option>
|
bind:value={input.metrics.age}
|
||||||
{/each}
|
/>
|
||||||
</select>
|
</label>
|
||||||
</label>
|
|
||||||
|
|
||||||
<label>
|
<label>
|
||||||
<span class="label mb-1">Age</span>
|
<span class="label mb-1">Weight (lb)</span>
|
||||||
<input
|
<input
|
||||||
class="input w-full"
|
class="input w-full"
|
||||||
type="number"
|
type="number"
|
||||||
min="0"
|
min="0"
|
||||||
max="100"
|
max="600"
|
||||||
placeholder="18"
|
placeholder={selected.metrics.age ? "170" : "Requires age"}
|
||||||
bind:value={input.metrics.age}
|
bind:value={input.metrics.weight}
|
||||||
/>
|
disabled={!selected.metrics.age}
|
||||||
</label>
|
/>
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
<label>
|
<fieldset class="fieldset bg-base-200 p-6 max-w-lg">
|
||||||
<span class="label mb-1">Weight (lb)</span>
|
<legend class="fieldset-legend text-lg font-semibold">
|
||||||
<input
|
Parameters
|
||||||
class="input w-full"
|
</legend>
|
||||||
type="number"
|
|
||||||
min="0"
|
|
||||||
max="600"
|
|
||||||
placeholder={selected.metrics.age
|
|
||||||
? "170"
|
|
||||||
: "Requires age"}
|
|
||||||
bind:value={input.metrics.weight}
|
|
||||||
disabled={!selected.metrics.age}
|
|
||||||
/>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<fieldset class="fieldset bg-base-200 p-6 max-w-lg">
|
<div class="flex gap-4">
|
||||||
<legend class="fieldset-legend text-lg font-semibold">
|
<fieldset class="fieldset bg-base-300 p-3 max-w-xl">
|
||||||
Parameters
|
|
||||||
</legend>
|
|
||||||
|
|
||||||
<fieldset class="fieldset bg-base-250 p-3 max-w-xl">
|
|
||||||
<legend class="fieldset-legend text-sm font-semibold">
|
<legend class="fieldset-legend text-sm font-semibold">
|
||||||
General
|
General
|
||||||
</legend>
|
</legend>
|
||||||
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
<div class="grid grid-cols-1 gap-4">
|
||||||
<label>
|
<label>
|
||||||
<span class="label mb-1">Max level</span>
|
<span class="label mb-1">Max level</span>
|
||||||
<input
|
<input
|
||||||
class="input"
|
class="input w-full"
|
||||||
type="number"
|
type="number"
|
||||||
min="1"
|
min="1"
|
||||||
max="100"
|
max="100"
|
||||||
@@ -169,7 +162,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
|
|
||||||
<fieldset class="fieldset bg-base-300 p-3 max-w-xl">
|
<fieldset class="fieldset bg-base-300 p-3 max-w-3xs">
|
||||||
<legend class="fieldset-legend text-sm font-semibold">
|
<legend class="fieldset-legend text-sm font-semibold">
|
||||||
Data Generation
|
Data Generation
|
||||||
</legend>
|
</legend>
|
||||||
@@ -178,7 +171,7 @@
|
|||||||
<label>
|
<label>
|
||||||
<span class="label mb-1">Weight modifier</span>
|
<span class="label mb-1">Weight modifier</span>
|
||||||
<input
|
<input
|
||||||
class="input"
|
class="input w-full"
|
||||||
type="number"
|
type="number"
|
||||||
min="0"
|
min="0"
|
||||||
max="1"
|
max="1"
|
||||||
@@ -190,7 +183,7 @@
|
|||||||
<label>
|
<label>
|
||||||
<span class="label mb-1">Weight skew</span>
|
<span class="label mb-1">Weight skew</span>
|
||||||
<input
|
<input
|
||||||
class="input"
|
class="input w-full"
|
||||||
type="number"
|
type="number"
|
||||||
min="0"
|
min="0"
|
||||||
max="1"
|
max="1"
|
||||||
@@ -202,7 +195,7 @@
|
|||||||
<label>
|
<label>
|
||||||
<span class="label mb-1">Age modifier</span>
|
<span class="label mb-1">Age modifier</span>
|
||||||
<input
|
<input
|
||||||
class="input"
|
class="input w-full"
|
||||||
type="number"
|
type="number"
|
||||||
min="0"
|
min="0"
|
||||||
max="1"
|
max="1"
|
||||||
@@ -213,46 +206,42 @@
|
|||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</fieldset>
|
|
||||||
</section>
|
|
||||||
|
|
||||||
<div class="divider"></div>
|
|
||||||
|
|
||||||
<section>
|
|
||||||
<div>
|
|
||||||
<h1 class="text-2xl font-bold mb-2.5">
|
|
||||||
{allStandards.byActivity(selected.activity).getMetadata().name}
|
|
||||||
</h1>
|
|
||||||
<div class="flex items-center">
|
|
||||||
<h2 class="text-xl">{selected.metrics.gender}</h2>
|
|
||||||
<p class="text-xs label ml-2.5">
|
|
||||||
{#if allStandards
|
|
||||||
.byActivity(selected.activity)
|
|
||||||
.getMetadata().generators.length}
|
|
||||||
(Generated data: {allStandards
|
|
||||||
.byActivity(selected.activity)
|
|
||||||
.getMetadata()
|
|
||||||
.generators.map((g) => g.metric)
|
|
||||||
.join(", ")})
|
|
||||||
{:else}
|
|
||||||
(Generated data: NONE)
|
|
||||||
{/if}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</fieldset>
|
||||||
|
</section>
|
||||||
|
|
||||||
{#if !selected.metrics.age}
|
<div class="divider"></div>
|
||||||
{#each allStandards.agesFor(selected.activity, selected.metrics.gender) as age}
|
|
||||||
{@render standardsTable(selected.activity, {
|
<section class="w-full">
|
||||||
...selected.metrics,
|
<div>
|
||||||
age,
|
<div class="flex items-center">
|
||||||
})}
|
<p class="text-xs label">
|
||||||
{/each}
|
{#if allStandards
|
||||||
{:else}
|
.byActivity(selected.activity)
|
||||||
{@render standardsTable(selected.activity, selected.metrics)}
|
.getMetadata().generators.length}
|
||||||
{/if}
|
(Generated data: {allStandards
|
||||||
</section>
|
.byActivity(selected.activity)
|
||||||
</div>
|
.getMetadata()
|
||||||
|
.generators.map((g) => g.metric)
|
||||||
|
.join(", ")})
|
||||||
|
{:else}
|
||||||
|
(Generated data: NONE)
|
||||||
|
{/if}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{#if !selected.metrics.age}
|
||||||
|
{#each allStandards.agesFor(selected.activity, selected.metrics.gender) as age}
|
||||||
|
{@render standardsTable(selected.activity, {
|
||||||
|
...selected.metrics,
|
||||||
|
age,
|
||||||
|
})}
|
||||||
|
{/each}
|
||||||
|
{:else}
|
||||||
|
{@render standardsTable(selected.activity, selected.metrics)}
|
||||||
|
{/if}
|
||||||
|
</section>
|
||||||
|
|
||||||
{#snippet standardsTable(activity: Activity, metrics: Metrics)}
|
{#snippet standardsTable(activity: Activity, metrics: Metrics)}
|
||||||
{#snippet standardsTableRow(standard: Standard)}
|
{#snippet standardsTableRow(standard: Standard)}
|
||||||
Reference in New Issue
Block a user