From b38ca17a60ce7418240f954a517fe4cc035ff1dc Mon Sep 17 00:00:00 2001 From: Kevin Midboe Date: Sat, 29 Jul 2023 13:38:18 +0200 Subject: [PATCH] Hive & gateway elements that update live from message queues --- src/lib/components/GatewaySummary.svelte | 50 +++++++++++++++++++++ src/lib/components/HiveSummary.svelte | 56 ++++++++++++++++++++++++ src/lib/store.ts | 17 +++++++ 3 files changed, 123 insertions(+) create mode 100644 src/lib/components/GatewaySummary.svelte create mode 100644 src/lib/components/HiveSummary.svelte create mode 100644 src/lib/store.ts diff --git a/src/lib/components/GatewaySummary.svelte b/src/lib/components/GatewaySummary.svelte new file mode 100644 index 0000000..759002d --- /dev/null +++ b/src/lib/components/GatewaySummary.svelte @@ -0,0 +1,50 @@ + + +{#each gateways as gateway} + + + + + {formatTemperature(gateway?.temperature)}°C + + + {sinceUpdate} s + + + {formatBattery(gateway?.battery_level)} V + +{/each} diff --git a/src/lib/components/HiveSummary.svelte b/src/lib/components/HiveSummary.svelte new file mode 100644 index 0000000..13aced7 --- /dev/null +++ b/src/lib/components/HiveSummary.svelte @@ -0,0 +1,56 @@ + + +{#each hives as hive} + + + + + {formatWeight(hive?.weight)}kg + + + {formatTemperature(hive?.temperature)}°C + + + {formatHumidity(hive?.humidity)}% + +{/each} + +

{sinceUpdate} s since last update

diff --git a/src/lib/store.ts b/src/lib/store.ts new file mode 100644 index 0000000..c664e84 --- /dev/null +++ b/src/lib/store.ts @@ -0,0 +1,17 @@ +import { derived, writable } from 'svelte/store'; +import type { Writable } from 'svelte/store'; +import type IModal from '$lib/interfaces/IModal'; +import type { IGatewayTelemetry, IHiveTelemetry } from './interfaces/ITelemetry'; + +// message queues +export const hiveMessageQueue: Writable = writable(); +export const gatewayMessageQueue: Writable = writable(); + +// setters +export const addHiveMessage = (msg: IHiveTelemetry) => hiveMessageQueue.set(msg); +export const addGatewayMessageQueue = (msg: IGatewayTelemetry) => gatewayMessageQueue.set(msg); + +// modal state +export const modal: Writable = writable(null); +export const modalOpen = derived(modal, ($modal) => $modal != null); +export const resetModal = () => modal.set(null);