diff --git a/app/src/App.svelte b/app/src/App.svelte index a99fcf2..154479b 100644 --- a/app/src/App.svelte +++ b/app/src/App.svelte @@ -1,10 +1,19 @@
-

🎥Weee! This is the start project for the spot micro controller

+ +
diff --git a/app/src/components/Controls.svelte b/app/src/components/Controls.svelte new file mode 100644 index 0000000..1360261 --- /dev/null +++ b/app/src/components/Controls.svelte @@ -0,0 +1,28 @@ + + +
+
+
+
+ +
diff --git a/app/src/components/Topbar.svelte b/app/src/components/Topbar.svelte index 6bfed13..fed73bd 100644 --- a/app/src/components/Topbar.svelte +++ b/app/src/components/Topbar.svelte @@ -1,11 +1,15 @@
-
+
@@ -20,14 +24,10 @@ .disconnected .dot { animation: _fade 0.5s 3s infinite alternate forwards; } - /*.connected .dot:first-child { - background-color: #00bbe3; - transform: scale(1.1); - }*/ - /*.dots .activedot { - background-color: #00bbe3; - transform: scale(1.1); - }*/ + .connected .dot:first-child { + background-color: #00bbe3; + transform: scale(1.1); + } .dots .dot:first-child { animation-delay: 0.25s; } diff --git a/app/src/components/Views/Stream.svelte b/app/src/components/Views/Stream.svelte new file mode 100644 index 0000000..6e9ca60 --- /dev/null +++ b/app/src/components/Views/Stream.svelte @@ -0,0 +1,11 @@ + + +Live stream is down diff --git a/app/src/lib/UseOrientation.ts b/app/src/lib/UseOrientation.ts new file mode 100644 index 0000000..1297a04 --- /dev/null +++ b/app/src/lib/UseOrientation.ts @@ -0,0 +1,23 @@ +import { onMount } from "svelte"; +import { writable, type Writable } from "svelte/store"; + +onMount(() => { + window.addEventListener("", () => { + screen.orientation.addEventListener("change", _handleOrientationChange); + }) +}) + +export type OrientationType = 'portrait-primary' | 'portrait-secondary' | 'landscape-primary' | 'landscape-secondary' + +export const orientation:Writable = writable('portrait-primary'); + +export const isPortrait = writable(true); + +const _isPortrait = (orientation:OrientationType | undefined):boolean => { + return orientation === "portrait-primary" || orientation === "portrait-secondary"; +} + +const _handleOrientationChange = () => { + orientation.set(screen.orientation.type) + isPortrait.set(_isPortrait(screen.orientation.type)) +} \ No newline at end of file diff --git a/app/src/lib/socket.ts b/app/src/lib/socket.ts new file mode 100644 index 0000000..ffa9d5b --- /dev/null +++ b/app/src/lib/socket.ts @@ -0,0 +1,28 @@ +import { writable, type Writable } from 'svelte/store'; + +export type WebSocketStatus = 'OPEN' | 'CONNECTING' | 'CLOSED' + +export const isConnected = writable(false) + +export const status:Writable = writable('CLOSED') + +export const socket = writable(null) + +export const connect = (url:string) => { + status.set('CONNECTING') + let _socket = new WebSocket(url); + _socket.onopen = _connected; + _socket.onclose = _disconnected; + socket.set(_socket) +} + +const _connected = () => { + status.set('OPEN') + isConnected.set(true) +} + +const _disconnected = () => { + status.set('CLOSED') + isConnected.set(false) +} + diff --git a/app/src/lib/store.ts b/app/src/lib/store.ts new file mode 100644 index 0000000..6ffbb10 --- /dev/null +++ b/app/src/lib/store.ts @@ -0,0 +1 @@ +import { writable } from 'svelte/store';