mirror of
https://github.com/ckaczor/HomeMonitor.git
synced 2026-01-14 01:25:38 -05:00
Add wind and pressure to kiosk
This commit is contained in:
1
WebDisplay/components.d.ts
vendored
1
WebDisplay/components.d.ts
vendored
@@ -17,6 +17,7 @@ declare module 'vue' {
|
||||
IndoorSummary: typeof import('./src/components/IndoorSummary.vue')['default']
|
||||
LongPressButton: typeof import('./src/components/LongPressButton.vue')['default']
|
||||
NationalDays: typeof import('./src/components/NationalDays.vue')['default']
|
||||
PressureTrendArrow: typeof import('./src/components/PressureTrendArrow.vue')['default']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
TimeRange: typeof import('./src/components/TimeRange.vue')['default']
|
||||
|
||||
@@ -1,28 +1,10 @@
|
||||
<script setup lang="ts">
|
||||
import { useWeatherStore } from '@/stores/weatherStore';
|
||||
import { ConvertPascalToInchesOfMercury } from '@/pressureConverter';
|
||||
import { ShortenWindDirection } from '@/windFormatter';
|
||||
import PressureTrendArrow from './PressureTrendArrow.vue';
|
||||
|
||||
const weatherStore = useWeatherStore();
|
||||
weatherStore.start();
|
||||
|
||||
const rotationClass = (pressureDifference: number | undefined) => {
|
||||
if (!pressureDifference) {
|
||||
return '';
|
||||
} else if (Math.abs(pressureDifference) <= 1.0) {
|
||||
return '';
|
||||
} else if (pressureDifference > 1.0 && pressureDifference <= 2.0) {
|
||||
return 'up-low';
|
||||
} else if (pressureDifference > 2.0) {
|
||||
return 'up-high';
|
||||
} else if (pressureDifference < -1.0 && pressureDifference >= -2.0) {
|
||||
return 'down-low';
|
||||
} else if (pressureDifference < -2.0) {
|
||||
return 'down-high';
|
||||
}
|
||||
|
||||
return '';
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -65,13 +47,10 @@
|
||||
<tr>
|
||||
<td className="weather-current-header">Pressure</td>
|
||||
<td colspan="3">
|
||||
{{ weatherStore.current?.Pressure && ConvertPascalToInchesOfMercury(weatherStore.current?.Pressure)?.toFixed(2) }}"
|
||||
<span
|
||||
{{ weatherStore.current?.Pressure && (weatherStore.current?.Pressure / 100).toFixed(2) }} mbar
|
||||
<PressureTrendArrow
|
||||
class="pressure-trend-arrow"
|
||||
:class="rotationClass(weatherStore.current?.PressureDifferenceThreeHour)"
|
||||
:title="'3 Hour Change: ' + weatherStore.current?.PressureDifferenceThreeHour?.toFixed(1)">
|
||||
➜
|
||||
</span>
|
||||
:pressureDifference="weatherStore.current?.PressureDifferenceThreeHour" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -115,25 +94,6 @@
|
||||
}
|
||||
|
||||
.pressure-trend-arrow {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
left: 6px;
|
||||
transform: scale(1.25);
|
||||
}
|
||||
|
||||
.down-high {
|
||||
transform: rotate(60deg) scale(1.25);
|
||||
}
|
||||
|
||||
.down-low {
|
||||
transform: rotate(25deg) scale(1.25);
|
||||
}
|
||||
|
||||
.up-high {
|
||||
transform: rotate(-60deg) scale(1.25);
|
||||
}
|
||||
|
||||
.up-low {
|
||||
transform: rotate(-25deg) scale(1.25);
|
||||
scale: 1.25;
|
||||
}
|
||||
</style>
|
||||
|
||||
52
WebDisplay/src/components/PressureTrendArrow.vue
Normal file
52
WebDisplay/src/components/PressureTrendArrow.vue
Normal file
@@ -0,0 +1,52 @@
|
||||
<script lang="ts" setup>
|
||||
const props = defineProps(['pressureDifference']);
|
||||
|
||||
function rotationClass(pressureDifference: number | undefined) {
|
||||
if (!pressureDifference) {
|
||||
return '';
|
||||
} else if (Math.abs(pressureDifference) <= 1.0) {
|
||||
return '';
|
||||
} else if (pressureDifference > 1.0 && pressureDifference <= 2.0) {
|
||||
return 'up-low';
|
||||
} else if (pressureDifference > 2.0) {
|
||||
return 'up-high';
|
||||
} else if (pressureDifference < -1.0 && pressureDifference >= -2.0) {
|
||||
return 'down-low';
|
||||
} else if (pressureDifference < -2.0) {
|
||||
return 'down-high';
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<span
|
||||
class="pressure-trend-arrow"
|
||||
:class="rotationClass(props.pressureDifference)"
|
||||
:title="'3 Hour Change: ' + props.pressureDifference.toFixed(1)">
|
||||
➜
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.pressure-trend-arrow {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.down-high {
|
||||
transform: rotate(60deg);
|
||||
}
|
||||
|
||||
.down-low {
|
||||
transform: rotate(25deg);
|
||||
}
|
||||
|
||||
.up-high {
|
||||
transform: rotate(-60deg);
|
||||
}
|
||||
|
||||
.up-low {
|
||||
transform: rotate(-25deg);
|
||||
}
|
||||
</style>
|
||||
@@ -4,8 +4,10 @@
|
||||
import { useLaundryStore } from '@/stores/laundryStore';
|
||||
import { usePowerStore } from '@/stores/powerStore';
|
||||
import { useHomeAssistantStore } from '@/stores/homeAssistantStore';
|
||||
import { ShortenWindDirection } from '@/windFormatter';
|
||||
import CalendarAgenda from '@/components/CalendarAgenda.vue';
|
||||
import LongPressButton from '@/components/LongPressButton.vue';
|
||||
import PressureTrendArrow from '@/components/PressureTrendArrow.vue';
|
||||
|
||||
const weatherStore = useWeatherStore();
|
||||
weatherStore.start();
|
||||
@@ -63,6 +65,19 @@
|
||||
v-if="weatherStore.current">
|
||||
{{ weatherStore.current?.Humidity?.toFixed(0) + '%' }}
|
||||
</div>
|
||||
<div
|
||||
class="kiosk-wind text-center pb-3"
|
||||
v-if="weatherStore.current">
|
||||
{{ weatherStore.current?.WindSpeed?.toFixed(0) + ' ' + ShortenWindDirection(weatherStore.current?.WindDirection) }}
|
||||
</div>
|
||||
<div
|
||||
class="kiosk-pressure text-center pb-3"
|
||||
v-if="weatherStore.current">
|
||||
<span>
|
||||
{{ (weatherStore.current?.Pressure! / 100).toFixed(0) }}
|
||||
</span>
|
||||
<PressureTrendArrow :pressureDifference="weatherStore.current?.PressureDifferenceThreeHour" />
|
||||
</div>
|
||||
<div
|
||||
class="kiosk-generation text-center pt-4"
|
||||
v-if="powerStore.current">
|
||||
@@ -170,7 +185,7 @@
|
||||
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 50%);
|
||||
grid-template-rows: repeat(6, auto) 1fr;
|
||||
grid-template-rows: repeat(7, auto) 1fr;
|
||||
grid-column-gap: 0px;
|
||||
grid-row-gap: 0px;
|
||||
|
||||
@@ -178,6 +193,7 @@
|
||||
'kiosk-time kiosk-time'
|
||||
'kiosk-date kiosk-date'
|
||||
'kiosk-temperature kiosk-humidity'
|
||||
'kiosk-wind kiosk-pressure'
|
||||
'kiosk-generation kiosk-consumption'
|
||||
'kiosk-washer kiosk-dryer'
|
||||
'kiosk-garage-door kiosk-house-alarm';
|
||||
@@ -218,6 +234,16 @@
|
||||
grid-area: kiosk-humidity;
|
||||
}
|
||||
|
||||
.kiosk-wind {
|
||||
font-size: 2rem;
|
||||
grid-area: kiosk-wind;
|
||||
}
|
||||
|
||||
.kiosk-pressure {
|
||||
font-size: 2rem;
|
||||
grid-area: kiosk-pressure;
|
||||
}
|
||||
|
||||
.kiosk-generation {
|
||||
grid-area: kiosk-generation;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user