From d396ec785f0a5cd2b91af8d972d523b5ff0f7593 Mon Sep 17 00:00:00 2001 From: Chris Kaczor Date: Mon, 4 Mar 2024 01:49:28 +0000 Subject: [PATCH] Add weather summary --- WebDisplay/components.d.ts | 1 + WebDisplay/src/components/WeatherSummary.vue | 161 ++++++++++++++++++ .../src/models/weather/weather-aggregates.ts | 15 ++ WebDisplay/src/pages/index.vue | 5 + WebDisplay/src/stores/weatherStore.ts | 15 ++ 5 files changed, 197 insertions(+) create mode 100644 WebDisplay/src/components/WeatherSummary.vue create mode 100644 WebDisplay/src/models/weather/weather-aggregates.ts diff --git a/WebDisplay/components.d.ts b/WebDisplay/components.d.ts index 43d8cf1..2911cff 100644 --- a/WebDisplay/components.d.ts +++ b/WebDisplay/components.d.ts @@ -15,5 +15,6 @@ declare module 'vue' { HelloWorld: typeof import('./src/components/HelloWorld.vue')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] + WeatherSummary: typeof import('./src/components/WeatherSummary.vue')['default'] } } diff --git a/WebDisplay/src/components/WeatherSummary.vue b/WebDisplay/src/components/WeatherSummary.vue new file mode 100644 index 0000000..70aae1e --- /dev/null +++ b/WebDisplay/src/components/WeatherSummary.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/WebDisplay/src/models/weather/weather-aggregates.ts b/WebDisplay/src/models/weather/weather-aggregates.ts new file mode 100644 index 0000000..6135d83 --- /dev/null +++ b/WebDisplay/src/models/weather/weather-aggregates.ts @@ -0,0 +1,15 @@ +export interface WeatherAggregates { + humidity: WeatherAggregate; + temperature: WeatherAggregate; + pressure: WeatherAggregate; + light: WeatherAggregate; + windSpeed: WeatherAggregate; + windDirectionAverage: number; + rainTotal: number; +} + +export interface WeatherAggregate { + min: number; + max: number; + average: number; +} diff --git a/WebDisplay/src/pages/index.vue b/WebDisplay/src/pages/index.vue index 13e12bc..33561b4 100644 --- a/WebDisplay/src/pages/index.vue +++ b/WebDisplay/src/pages/index.vue @@ -19,6 +19,11 @@ + + + + + diff --git a/WebDisplay/src/stores/weatherStore.ts b/WebDisplay/src/stores/weatherStore.ts index 0327c68..589ed10 100644 --- a/WebDisplay/src/stores/weatherStore.ts +++ b/WebDisplay/src/stores/weatherStore.ts @@ -6,6 +6,7 @@ import WeatherUpdate from '@/models/weather/weather-update'; import WeatherRecent from '@/models/weather/weather-recent'; import WeatherValueType from '@/models/weather/weather-value-type'; import WeatherValueGrouped from '@/models/weather/weather-value-grouped'; +import { WeatherAggregates } from '@/models/weather/weather-aggregates'; export const useWeatherStore = defineStore('weather', { state: () => { @@ -62,6 +63,20 @@ export const useWeatherStore = defineStore('weather', { `/api/weather/readings/value-history-grouped?weatherValueType=${valueType}&start=${startString}&end=${endString}&bucketMinutes=${bucketMinutes}` ); + return response.data; + }, + async getReadingAggregate( + start: Date, + end: Date + ): Promise { + const startString = start.toISOString(); + const endString = end.toISOString(); + + const response = await axios.get( + Environment.getUrlPrefix() + + `/api/weather/readings/aggregate?start=${startString}&end=${endString}` + ); + return response.data; } }