diff --git a/ui/src/app.css b/ui/src/app.css index ef3b177..3ebeb30 100644 --- a/ui/src/app.css +++ b/ui/src/app.css @@ -47,6 +47,12 @@ html.dark { } } +.grid-rows-fieldmonitor { + grid-template-rows: max-content 1fr 1fr 1fr 1fr 1fr 1fr; +} + +@source inline("col-span-{2..10}"); + .fieldmonitor-square-height { height: calc((100vh - 8rem) / 6); } diff --git a/ui/src/routes/defaults.ts b/ui/src/lib/defaults.ts similarity index 100% rename from ui/src/routes/defaults.ts rename to ui/src/lib/defaults.ts diff --git a/ui/src/lib/field-monitor/BaseMonitorItem.svelte b/ui/src/lib/field-monitor/BaseMonitorItem.svelte new file mode 100644 index 0000000..740fba5 --- /dev/null +++ b/ui/src/lib/field-monitor/BaseMonitorItem.svelte @@ -0,0 +1,16 @@ + + +
+

+ {@render children()} +

+
diff --git a/ui/src/lib/field-monitor/MonitorHeader.svelte b/ui/src/lib/field-monitor/MonitorHeader.svelte new file mode 100644 index 0000000..6711b0c --- /dev/null +++ b/ui/src/lib/field-monitor/MonitorHeader.svelte @@ -0,0 +1,9 @@ + + +
+
M: {matchNumber}
+
Match Status
+
On Time
+
diff --git a/ui/src/lib/field-monitor/MonitorRow.svelte b/ui/src/lib/field-monitor/MonitorRow.svelte new file mode 100644 index 0000000..987aaab --- /dev/null +++ b/ui/src/lib/field-monitor/MonitorRow.svelte @@ -0,0 +1,30 @@ + + +{data.teamNumber} +{#if data.isBypassed} + Bypassed +{:else} + {#each settings.widgets as widget, index (index)} + {#if widget.id == WidgetID.Battery} + + {:else if widget.id == WidgetID.Rio} + + {/if} + {/each} +{/if} diff --git a/ui/src/lib/field-monitor/RowBlock.svelte b/ui/src/lib/field-monitor/RowBlock.svelte new file mode 100644 index 0000000..e7ac4d9 --- /dev/null +++ b/ui/src/lib/field-monitor/RowBlock.svelte @@ -0,0 +1,19 @@ + + +
+

+ {@render children()} +

+
diff --git a/ui/src/lib/field-monitor/battery/BatteryWidget.svelte b/ui/src/lib/field-monitor/battery/BatteryWidget.svelte new file mode 100644 index 0000000..ffac32c --- /dev/null +++ b/ui/src/lib/field-monitor/battery/BatteryWidget.svelte @@ -0,0 +1,9 @@ + + +{data.battery} diff --git a/ui/src/lib/field-monitor/battery/settings.ts b/ui/src/lib/field-monitor/battery/settings.ts new file mode 100644 index 0000000..1e8229a --- /dev/null +++ b/ui/src/lib/field-monitor/battery/settings.ts @@ -0,0 +1 @@ +export type BatteryWidgetSettings = { showGraph: boolean }; diff --git a/ui/src/lib/field-monitor/rio/RioWidget.svelte b/ui/src/lib/field-monitor/rio/RioWidget.svelte new file mode 100644 index 0000000..b0c5aea --- /dev/null +++ b/ui/src/lib/field-monitor/rio/RioWidget.svelte @@ -0,0 +1,9 @@ + + +{data.rioLink} diff --git a/ui/src/lib/field-monitor/rio/settings.ts b/ui/src/lib/field-monitor/rio/settings.ts new file mode 100644 index 0000000..d120b35 --- /dev/null +++ b/ui/src/lib/field-monitor/rio/settings.ts @@ -0,0 +1 @@ +export type RioWidgetSettings = {}; diff --git a/ui/src/lib/field-monitor/widget.ts b/ui/src/lib/field-monitor/widget.ts new file mode 100644 index 0000000..a4ebbec --- /dev/null +++ b/ui/src/lib/field-monitor/widget.ts @@ -0,0 +1,22 @@ +import type { BatteryWidgetSettings } from './battery/settings'; +import type { RioWidgetSettings } from './rio/settings'; + +export enum WidgetID { + Battery = 'Battery', + Rio = 'Rio' +} + +export type WidgetDescription = + | { id: WidgetID.Battery; settings: BatteryWidgetSettings } + | { id: WidgetID.Rio; settings: RioWidgetSettings }; + +export interface FieldMonitorConfig { + widgets: WidgetDescription[]; +} + +export const field_monitor_config: FieldMonitorConfig = { + widgets: [ + { id: WidgetID.Battery, settings: { showGraph: false } }, + { id: WidgetID.Rio, settings: {} } + ] +}; diff --git a/ui/src/routes/+layout.svelte b/ui/src/routes/+layout.svelte index ec9cbe2..6223d9e 100644 --- a/ui/src/routes/+layout.svelte +++ b/ui/src/routes/+layout.svelte @@ -57,7 +57,7 @@ -
+
-
-
+
+
{@render children()}
diff --git a/ui/src/routes/fieldMonitor/+page.svelte b/ui/src/routes/fieldMonitor/+page.svelte index 5abecae..f991d7e 100644 --- a/ui/src/routes/fieldMonitor/+page.svelte +++ b/ui/src/routes/fieldMonitor/+page.svelte @@ -9,7 +9,7 @@ Red1Default, Red2Default, Red3Default - } from '../defaults'; + } from '$lib/defaults'; import { settingsStore } from '$lib/settings-store'; let blue1: FieldMonitorData = Blue1Default; diff --git a/ui/src/routes/fieldMonitorTest/+page.svelte b/ui/src/routes/fieldMonitorTest/+page.svelte new file mode 100644 index 0000000..c19aae2 --- /dev/null +++ b/ui/src/routes/fieldMonitorTest/+page.svelte @@ -0,0 +1,18 @@ + + + +
+
Team Number
+ {#each field_monitor_config.widgets as widget, index (index)} +
{widget.id}
+ {/each} + + {#each { length: 6 }} + + {/each} +