2024-02-21 13:49:39 -08:00
|
|
|
<script lang="ts">
|
2024-02-21 15:13:18 -08:00
|
|
|
import '@fontsource/roboto/latin.css'
|
2024-02-21 20:10:42 -08:00
|
|
|
import 'material-icons/iconfont/material-icons.css'
|
|
|
|
import Dashboard from './lib/Dashboard/Dashboard.svelte'
|
|
|
|
import 'material-symbols'
|
|
|
|
import AppBar from './lib/Apps/AppBar.svelte'
|
|
|
|
import { appList } from './lib/Apps/appList'
|
2024-02-23 14:56:35 -08:00
|
|
|
import { initializeTelemetry } from './lib/utils/initializeTelemetry'
|
|
|
|
import { onMount } from 'svelte'
|
2024-02-21 20:10:42 -08:00
|
|
|
|
|
|
|
let activeApp: App = 'media-player'
|
2024-02-23 14:56:35 -08:00
|
|
|
let topics: TelemetryTopics = {
|
|
|
|
doubles: [
|
|
|
|
'orientation',
|
|
|
|
'chassis-x-speed',
|
|
|
|
'chassis-y-speed',
|
|
|
|
'accx',
|
|
|
|
'accy',
|
|
|
|
'accz',
|
|
|
|
'jerk-x',
|
|
|
|
'jerk-y',
|
|
|
|
'voltage',
|
|
|
|
],
|
|
|
|
strings: ['acc-profile', 'gear'],
|
|
|
|
booleans: ['ebrake', 'reorient', 'gpws'],
|
|
|
|
}
|
|
|
|
|
|
|
|
onMount(() => {
|
|
|
|
initializeTelemetry(topics, 5)
|
|
|
|
})
|
2024-02-21 13:49:39 -08:00
|
|
|
</script>
|
|
|
|
|
2024-02-21 20:10:42 -08:00
|
|
|
<main class="select-none">
|
|
|
|
<!-- driver dashboard -->
|
|
|
|
<div class="h-screen w-[35vw] fixed shadow-lg shadow-slate-800 z-10">
|
|
|
|
<Dashboard />
|
|
|
|
</div>
|
|
|
|
<!-- the infotainment system -->
|
2024-02-21 23:36:24 -08:00
|
|
|
<div class="min-h-screen w-[65vw] right-0 absolute infotainment-container">
|
2024-02-21 20:10:42 -08:00
|
|
|
<!-- dynamic app system (edit appList.ts to add new apps) -->
|
|
|
|
<div class="mx-10 mt-10">
|
|
|
|
<svelte:component this={appList[activeApp].component} />
|
|
|
|
</div>
|
|
|
|
<div class="fixed w-[65vw] flex justify-center right-0 bottom-0 mb-4">
|
|
|
|
<AppBar bind:activeApp {appList} />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</main>
|
2024-02-21 13:49:39 -08:00
|
|
|
|
2024-02-21 14:19:36 -08:00
|
|
|
<style lang="postcss">
|
|
|
|
main {
|
2024-02-21 15:13:18 -08:00
|
|
|
font-family: 'Roboto', sans-serif;
|
2024-02-21 14:19:36 -08:00
|
|
|
}
|
2024-02-21 20:10:42 -08:00
|
|
|
|
|
|
|
.infotainment-container {
|
|
|
|
background: #2c3e50; /* fallback for old browsers */
|
|
|
|
background: -webkit-linear-gradient(
|
|
|
|
to right,
|
|
|
|
#2c3e50,
|
|
|
|
#fd746c
|
|
|
|
); /* Chrome 10-25, Safari 5.1-6 */
|
|
|
|
background: linear-gradient(
|
|
|
|
to right,
|
|
|
|
#2c3e50,
|
|
|
|
#fd746c
|
|
|
|
); /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
|
|
|
|
}
|
2024-02-21 13:49:39 -08:00
|
|
|
</style>
|