ApartmentData.vue 8.45 KB
Newer Older
abergavenny's avatar
abergavenny committed
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<script setup>
import { ref } from 'vue'

import ApartmentCapture from '@/components/ApartmentCapture.vue'
import ContentPanel from '@/components/ContentPanel.vue'
import DataItem from '@/components/DataItem.vue'
import DataPage from '@/components/DataPage.vue'
import EnergyPerformanceCertificate from '@/components/EnergyPerformanceCertificate.vue'
import ImageBanner from '@/components/ImageBanner.vue'
import MessageBox from '@/components/MessageBox.vue'
import ModalContainer from '@/components/ModalContainer.vue'
import SectionTitle from '@/components/SectionTitle.vue'
import WaitingForData from '@/components/WaitingForData.vue'
import { REFERENCE_ENERGY_PERFORMANCE } from '@/data/parameters'
import { 
  convertHeaterEfficiency,
  convertWindowEfficiency
 } from '@/helpers'
import { useApartmentStore } from '@/stores/apartments'
import { useBuildingStore } from '@/stores/buildings'

const showModal = ref(false)

const apartments = useApartmentStore()
const buildings = useBuildingStore()

function onEdit() {
  showModal.value = true
}

// DEVINFO Hier kann der Bewertungstext (Energieausweis) angepasst werden
function convertHeatingEfficiencyMessage(value, potential) {
  if (value < REFERENCE_ENERGY_PERFORMANCE) return `Sie sind auf einem guten Niveau.`
  else if (value === REFERENCE_ENERGY_PERFORMANCE) return `Sie sind im Mittel (Klasse E).`
  else if (value > REFERENCE_ENERGY_PERFORMANCE) return `Das Verbesserungspotential Ihrer Energieeffizienz liegt bei ${potential}%.`
  else return null
}

// DEVINFO Hier kann der Bewertungstext (Verglasung) angepasst werden
function convertWindowGlazingMessage(value) {
  if (value === 'SIMPLE_GLAZING') return `Schlechte Verglasung (U-Wert ca. 4,7 W/(m²K)). Einsparung von 491 kWh sind möglich (Einsparung je ausgetauschtes Fenster ca. 158€ jährlich ). Gebäude-Energie-Gesetz (GEG) schreibt bei Austausch einen Wert von 1,3 W/(m²K) vor.`
  else if (value === 'DOUBLE_GLAZING') return `Mittelmäßige Verglasung (U-Wert 1,4 bis 3 W/m²K). Empfehlung: Fenster mit zweifacher, unbeschichteter Isolierverglasung (vor 1995 verbaut) gegen dreifach verglaste, wärmegedämmte Fenster austauschen. Der Austausch von zweifachem, unbeschichtetem Isolierglas spart 216 kWh. (Einsparung je ausgetauschtes Fenster ca. 70€ jährlich). Bei neueren Fenstern ist individuell zu entscheiden. Gebäude-Energie-Gesetz (GEG) schreibt bei Austausch einen Wert von 1,3 W/(m²K) vor.`
  else if (value === 'TRIPLE_GLAZING') return `3-fach Verglasung vorhanden und damit keine wesentlich Verbesserung möglich. Austausch wirtschaftlich nicht sinnvoll.`
  else return null
}
</script>

<template>
  <ContentPanel label="Ihre Wohneinheit">
    <DataPage :stretch="true">
      <div class="content-wrapper">
        <div class="content stretched scroll">
          <span class="static-text">Id: {{ apartments.active }}</span>
          <SectionTitle value="Energieeffizienz" />
          <div class="info-box" v-if="apartments.heatingEfficiency">
            <DataItem :label="`Effizienzklasse (${apartments.heatingEfficiency.distict ? 'Wohnung' : 'Gebäude'})`"
              :data="`${apartments.heatingEfficiency.performance} kWh/m²`" />
            <MessageBox
              :msg="convertHeatingEfficiencyMessage(apartments.heatingEfficiency.performance, apartments.heatingEfficiency.potential)"
              type="basic" />
            <EnergyPerformanceCertificate :data="apartments.heatingEfficiency.performance" />
          </div>
          <WaitingForData v-else />
          <SectionTitle value="Energieeffizienz - Fenster" />
          <div class="info-box" v-if="apartments.windowEfficiency">
            <DataItem label="Energetische Berwertung Fenster"
              :data="convertWindowEfficiency(apartments.windowEfficiency.performance)" />
            <MessageBox :msg="convertWindowGlazingMessage(apartments.current?.data.windowGlazing)" type="basic" />
          </div>
          <WaitingForData v-else />
          <SectionTitle value="Energieeffizienz - Heizkörper" />
          <div class="info-box" v-if="apartments.heaterEfficiency">
            <DataItem label="Bewertung Heizkörper" :data="convertHeaterEfficiency(apartments.heaterEfficiency.delta)" />
            <MessageBox
              msg="Durch regelmäßiges Warten und Entlüften können Sie die Effizienz Ihrer Heizkörper steigern."
              type="basic" />
          </div>
          <WaitingForData v-else />
          <SectionTitle value="Emissionen Heizung" />
          <div class="info-box"
            v-if="apartments.current?.data.centralHeating ? buildings.co2Efficiency : apartments.co2Efficiency">
            <DataItem label="CO2 Emissionen"
              :data="apartments.current?.data.centralHeating ? buildings.co2Efficiency.performance : apartments.co2Efficiency.performance"
              unit="kg" />
            <DataItem label="Entspricht Fahrstrecke"
              :data="apartments.current?.data.centralHeating ? buildings.co2Efficiency.proportion : apartments.co2Efficiency.proportion"
              unit="km" />
          </div>
          <WaitingForData v-else />
          <SectionTitle value="Gebäudedaten" />
          <ImageBanner v-if="apartments.files[apartments.active]" :url="apartments.files[apartments.active]" />
          <DataItem label="Baujahr" :data="buildings.single?.data.yearOfConstruction" :as-text="true" />
          <DataItem label="Stockwerke" :data="buildings.single?.data.numberOfFloors" />
          <DataItem label="Energieklasse" :data="buildings.single?.data.energyPerformanceCertificate" unit="kWh/m²" />
          <DataItem v-if="!buildings.single?.data.selfContainedCentralHeating" label="Heizung"
            :data="buildings.heatingInstallationString" />
          <DataItem v-if="!buildings.single?.data.selfContainedCentralHeating" label="Wärmebedarf Gebäude Vorjahr"
            :data="buildings.consumption" unit="kWh" />
          <DataItem v-if="!buildings.single?.data.photovoltaic" label="PV Ertrag"
            :data="buildings.single?.data.photovoltaicYield" unit="kWh/m²" />
          <SectionTitle value="Fenster" />
          <DataItem label="Klein" :data="apartments.current?.data.smallWindows" />
          <DataItem label="Normal" :data="apartments.current?.data.mediumWindows" />
          <DataItem label="Groß" :data="apartments.current?.data.largeWindows" />
          <DataItem label="Dach" :data="apartments.current?.data.roofWindows" />
          <DataItem label="Rahmen" :data="apartments.windowFrameString" />
          <DataItem label="Verglasung" :data="apartments.windowGlazingString" />
          <DataItem label="Zustand (Durchschnitt)" :data="apartments.windowConditionString" />
          <DataItem label="Alter (Durchschnitt)" :data="apartments.current?.data.averageWindowAge" />
          <MessageBox v-if="apartments.current?.data.windowComment" :msg="apartments.current?.data.windowComment"
            type="basic" />
          <SectionTitle value="Heizung" />
          <DataItem label="Wohnfläche" :data="apartments.current?.data.area" unit="m²" />
          <DataItem label="Deckenhöhe" :data="apartments.current?.data.ceilingHeight" unit="m" />
          <DataItem label="Heizkörper (klein)" :data="apartments.current?.data.smallHeatingElements" />
          <DataItem label="Heizkörper (normal)" :data="apartments.current?.data.mediumHeatingElements" />
          <DataItem label="Heizkörper (groß)" :data="apartments.current?.data.largeHeatingElements" />
          <DataItem v-if="apartments.current?.data.panelHeating" label="Flächenheizung"
            :data="apartments.current?.data.panelHeating" unit="m²" />
          <DataItem v-if="apartments.current?.data.centralHeating" label="Zentralheizung"
            :data="apartments.current?.data.centralHeating ? 'ja' : 'nein'" />
          <DataItem v-if="!apartments.current?.data.centralHeating" label="Wärmebedarf"
            :data="apartments.current?.data.heatDemand" unit="kWh" />
          <DataItem label="Strombedarf" :data="apartments.current?.data.powerDemand" unit="kWh" />
          <MessageBox v-if="apartments.current?.data.apartmentComment" :msg="apartments.current?.data.apartmentComment"
            type="basic" />
        </div>
        <div class="content">
          <button class="button primary" type="button" @click="onEdit">
            <span>Daten eingeben</span>
          </button>
        </div>
      </div>
    </DataPage>
  </ContentPanel>
  <ModalContainer v-if="showModal" label="Wohnungsdaten eingeben" @close-modal="() => showModal = false">
    <ApartmentCapture />
  </ModalContainer>
</template>