This commit is contained in:
Dominic Ferrando
2025-09-20 11:42:06 -04:00
parent 12ab05cfee
commit 0555793bf3
3 changed files with 141 additions and 114 deletions
+33 -1
View File
@@ -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>
+6
View File
@@ -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)}