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; } }