An error occurred while loading the file. Please try again.
-
Lückemeyer authored4d5a8201
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<template>
<div class="chart-view">
<h2>Daten für Raum: {{ room }}</h2>
<ChartCard
title="CO₂ Verlauf"
:labels="labels"
:data="co2Data"
borderColor="#ff6384"
/>
<!-- Debug-Ausgabe -->
<pre>Labels: {{ labels }}</pre>
<pre>CO₂: {{ co2Data }}</pre>
</div>
</template>
<script lang="ts">
import { defineComponent, ref, onMounted } from 'vue'
import { useRoute } from 'vue-router'
import ChartCard from '../components/ChartCard.vue'
export default defineComponent({
name: 'ChartView',
components: { ChartCard },
setup() {
const route = useRoute()
const room = decodeURIComponent(route.params.room as string)
const labels = ref<string[]>([])
const co2Data = ref<number[]>([])
onMounted(async () => {
try {
const url = `http://localhost:8000/api/room_data_range?room=${encodeURIComponent(room)}&start=-7d&stop=now()`
const response = await fetch(url)
if (!response.ok) {
throw new Error(`HTTP-Fehler: ${response.status}`)
}
const json = await response.json()
const entries = Object.entries(json.data).sort(
([a], [b]) => new Date(a).getTime() - new Date(b).getTime()
)
const labelsArray = entries.map(([timestamp]) =>
new Date(timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })
)
const co2DataArray = entries.map(([, values]) => values.co2)
labels.value = labelsArray
co2Data.value = co2DataArray
} catch (err) {
console.error('❌ Fehler beim Laden der Daten:', err)
}
})
return { room, labels, co2Data }
}
})
</script>
<style scoped>
.chart-view {
padding: 2rem;
}
</style>