Datenbank Schema Änderungen
This commit is contained in:
9
database.env
Normal file
9
database.env
Normal file
@@ -0,0 +1,9 @@
|
||||
POSTGRES_DB=main
|
||||
POSTGRES_HOST=database
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_USER=main
|
||||
POSTGRES_PASSWORD=hHMP8cd^N3SnzGRR
|
||||
|
||||
DB_CONTAINER_NAME=database
|
||||
|
||||
POSTGRES_DATABASE_URL="postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
|
||||
@@ -4,11 +4,10 @@ services:
|
||||
build: ./
|
||||
container_name: online-energieausweis
|
||||
command: bun run dev --host
|
||||
links:
|
||||
depends_on:
|
||||
- database
|
||||
environment:
|
||||
PORT: 3000
|
||||
DB_CONNECTION: ${DATABASE_URL}
|
||||
NODE_ENV: "development"
|
||||
ports:
|
||||
- 3000:3000
|
||||
@@ -24,7 +23,7 @@ services:
|
||||
env_file:
|
||||
- ../database/.env
|
||||
ports:
|
||||
- "5436:5432"
|
||||
- "5432:5432"
|
||||
networks:
|
||||
- postgres
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
"format": "prettier --write .",
|
||||
"build:production": "astro build && bun --bun server.js",
|
||||
"i18n:generate": "bunx astro-i18next generate",
|
||||
"prisma:studio": "bunx prisma studio --schema=./node_modules/@ibcornelsen/database/prisma/schema.prisma"
|
||||
"prisma:studio": "bunx prisma studio --schema=./node_modules/@ibcornelsen/database/prisma/schema.prisma"
|
||||
},
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
@@ -35,6 +35,7 @@
|
||||
"i18next-fs-backend": "^2.1.5",
|
||||
"i18next-http-backend": "^2.2.1",
|
||||
"jimp": "^0.22.8",
|
||||
"js-cookie": "^3.0.5",
|
||||
"jwt-simple": "^0.5.6",
|
||||
"katex": "^0.16.7",
|
||||
"knex": "^2.4.2",
|
||||
@@ -49,6 +50,7 @@
|
||||
"zod": "^3.21.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/js-cookie": "^3.0.6",
|
||||
"@types/uuid": "^9.0.1",
|
||||
"@typescript-eslint/eslint-plugin": "^5.59.6",
|
||||
"@typescript-eslint/parser": "^5.59.6",
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
<script lang="ts">
|
||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||
import { VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
|
||||
const base64 = btoa(JSON.stringify(ausweis));
|
||||
</script>
|
||||
|
||||
@@ -1,17 +1,12 @@
|
||||
<script lang="ts">
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||
import AnsichtsausweisButton from "#components/AnsichtsausweisButton.svelte";
|
||||
import DatenblattButton from "#components/DatenblattButton.svelte";
|
||||
import HelpLabel from "#components/HelpLabel.svelte";
|
||||
|
||||
export let ausweis:
|
||||
| Verbrauchsausweis
|
||||
| VerbrauchsausweisGewerbe
|
||||
| Bedarfsausweis;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
|
||||
import ImageGrid from "../ImageGrid.svelte";
|
||||
import { VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
let images: (File & { data: string })[] = [];
|
||||
</script>
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
<script lang="ts">
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { Gebaeude } from "src/lib/Gebaeude";
|
||||
import HelpLabel from "#components/HelpLabel.svelte";
|
||||
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr";
|
||||
import { addNotification, deleteNotification } from "@ibcornelsen/ui";
|
||||
import TagInput from "../TagInput.svelte";
|
||||
import { writable } from "svelte/store";
|
||||
import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export let gebaeude: Gebaeude;
|
||||
export let ausweis: Verbrauchsausweis;
|
||||
export let gebaeude: GebaeudeStammdaten;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
|
||||
$: baujahrHeizung = writable(ausweis.baujahr_heizung)
|
||||
$: baujahr = writable(gebaeude.baujahr);
|
||||
$: baujahrHeizung = writable(gebaeude.baujahr_heizung || [])
|
||||
$: baujahr = writable(gebaeude.baujahr_gebaeude || []);
|
||||
</script>
|
||||
|
||||
<div class="GRB">
|
||||
|
||||
@@ -5,12 +5,11 @@
|
||||
import DaemmungImage from "./DaemmungImage.svelte";
|
||||
import FensterImage from "./FensterImage.svelte";
|
||||
import Label from "../Label.svelte";
|
||||
import { Gebaeude } from "src/lib/Gebaeude";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export let gebaeude: Gebaeude;
|
||||
|
||||
$: ausweis = gebaeude.ausweis || new Verbrauchsausweis()
|
||||
export let gebaeude: GebaeudeStammdaten;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
</script>
|
||||
|
||||
|
||||
@@ -30,7 +29,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage1"
|
||||
bind:checked={gebaeude.versorgungssysteme[0]}
|
||||
bind:checked={gebaeude.zentralheizung}
|
||||
value="ZH"
|
||||
/>Zentral/Etage</label
|
||||
>
|
||||
@@ -40,7 +39,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage2"
|
||||
bind:checked={gebaeude.versorgungssysteme[1]}
|
||||
bind:checked={gebaeude.einzelofen}
|
||||
value="EO"
|
||||
/>Einzelöfen</label
|
||||
>
|
||||
@@ -50,7 +49,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage3"
|
||||
bind:checked={gebaeude.versorgungssysteme[2]}
|
||||
bind:checked={gebaeude.durchlauf_erhitzer}
|
||||
value="DH"
|
||||
/>Durchlauferhitzer</label
|
||||
>
|
||||
@@ -60,7 +59,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage4"
|
||||
bind:checked={gebaeude.versorgungssysteme[3]}
|
||||
bind:checked={gebaeude.standard_kessel}
|
||||
value="SK"
|
||||
/>Standardkessel</label
|
||||
>
|
||||
@@ -70,7 +69,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage5"
|
||||
bind:checked={gebaeude.versorgungssysteme[4]}
|
||||
bind:checked={gebaeude.solarsystem_warmwasser}
|
||||
value="SSWW"
|
||||
/>Solarsystem für Warmwasser</label
|
||||
>
|
||||
@@ -80,7 +79,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage6"
|
||||
bind:checked={gebaeude.versorgungssysteme[5]}
|
||||
bind:checked={gebaeude.waermepumpe}
|
||||
value="WP"
|
||||
/>Wärmepumpe</label
|
||||
>
|
||||
@@ -90,7 +89,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage7"
|
||||
bind:checked={gebaeude.versorgungssysteme[6]}
|
||||
bind:checked={gebaeude.niedertemperatur_kessel}
|
||||
value="NK"
|
||||
/>Niedertemperaturkessel</label
|
||||
>
|
||||
@@ -100,7 +99,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage8"
|
||||
bind:checked={gebaeude.versorgungssysteme[7]}
|
||||
bind:checked={gebaeude.brennwert_kessel}
|
||||
value="BWK"
|
||||
/>Brennwertkessel</label
|
||||
>
|
||||
@@ -110,7 +109,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage9"
|
||||
bind:checked={gebaeude.versorgungssysteme[8]}
|
||||
bind:checked={gebaeude.warmwasser_rohre_gedaemmt}
|
||||
value="WRGD"
|
||||
/>Warmwasserrohre gedämmt</label
|
||||
>
|
||||
@@ -120,7 +119,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage10"
|
||||
bind:checked={gebaeude.versorgungssysteme[9]}
|
||||
bind:checked={gebaeude.heizungsrohre_gedaemmt}
|
||||
value="HRGD"
|
||||
/>Heizungsrohre gedämmt</label
|
||||
>
|
||||
@@ -130,7 +129,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage11"
|
||||
bind:checked={gebaeude.versorgungssysteme[10]}
|
||||
bind:checked={gebaeude.zirkulation}
|
||||
value="ZK"
|
||||
/>Zirkulation</label
|
||||
>
|
||||
@@ -140,7 +139,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGheizungsanlage12"
|
||||
bind:checked={gebaeude.versorgungssysteme[11]}
|
||||
bind:checked={gebaeude.raum_temperatur_regler}
|
||||
value="RTR"
|
||||
/>Raumtemperaturregler</label
|
||||
>
|
||||
@@ -169,7 +168,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGfensterdach1"
|
||||
bind:checked={gebaeude.fenster_dach[0]}
|
||||
bind:checked={gebaeude.einfach_verglasung}
|
||||
value="EG"
|
||||
/>Einfachglas</label
|
||||
>
|
||||
@@ -179,7 +178,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGfensterdach2"
|
||||
bind:checked={gebaeude.fenster_dach[1]}
|
||||
bind:checked={gebaeude.doppel_verglasung}
|
||||
value="DF"
|
||||
/>Doppelverglasung</label
|
||||
>
|
||||
@@ -189,7 +188,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGfensterdach3"
|
||||
bind:checked={gebaeude.fenster_dach[2]}
|
||||
bind:checked={gebaeude.isolier_verglasung}
|
||||
value="IVG"
|
||||
/>Isolierverglasung</label
|
||||
>
|
||||
@@ -199,7 +198,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGfensterdach4"
|
||||
bind:checked={gebaeude.fenster_dach[3]}
|
||||
bind:checked={gebaeude.dreifach_verglasung}
|
||||
value="PHF"
|
||||
/>Dreifachverglasung</label
|
||||
>
|
||||
@@ -209,7 +208,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGfensterdach5"
|
||||
bind:checked={gebaeude.fenster_dach[4]}
|
||||
bind:checked={gebaeude.fenster_dicht}
|
||||
value="FD"
|
||||
/>Alle Fenster dicht</label
|
||||
>
|
||||
@@ -219,7 +218,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGfensterdach6"
|
||||
bind:checked={gebaeude.fenster_dach[5]}
|
||||
bind:checked={gebaeude.fenster_teilweise_undicht}
|
||||
value="FTUD"
|
||||
/>Fenster teilweise undicht</label
|
||||
>
|
||||
@@ -229,7 +228,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGfensterdach7"
|
||||
bind:checked={gebaeude.fenster_dach[6]}
|
||||
bind:checked={gebaeude.tueren_dicht}
|
||||
value="TD"
|
||||
/>Alle Türen dicht</label
|
||||
>
|
||||
@@ -239,7 +238,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGfensterdach8"
|
||||
bind:checked={gebaeude.fenster_dach[7]}
|
||||
bind:checked={gebaeude.tueren_undicht}
|
||||
value="TUD"
|
||||
/>Türen teilweise undicht</label
|
||||
>
|
||||
@@ -249,7 +248,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGfensterdach9"
|
||||
bind:checked={gebaeude.fenster_dach[8]}
|
||||
bind:checked={gebaeude.rolllaeden_kaesten_gedaemmt}
|
||||
value="RKD"
|
||||
/>Rollladenkästen gedämmt, luftdicht</label
|
||||
>
|
||||
@@ -281,7 +280,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGwaermedaemmung1"
|
||||
bind:checked={gebaeude.daemmung[0]}
|
||||
bind:checked={gebaeude.aussenwand_gedaemmt}
|
||||
value="AWD"
|
||||
/>Außenwand gedämmt</label
|
||||
>
|
||||
@@ -291,7 +290,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGwaermedaemmung2"
|
||||
bind:checked={gebaeude.daemmung[1]}
|
||||
bind:checked={gebaeude.keller_wand_gedaemmt}
|
||||
value="KWD"
|
||||
/>Kelleraußenwand gedämmt</label
|
||||
>
|
||||
@@ -301,7 +300,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGwaermedaemmung3"
|
||||
bind:checked={gebaeude.daemmung[2]}
|
||||
bind:checked={gebaeude.keller_decke_gedaemmt}
|
||||
value="KDD"
|
||||
/>Kellerdecke gedämmt</label
|
||||
>
|
||||
@@ -311,7 +310,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGwaermedaemmung4"
|
||||
bind:checked={gebaeude.daemmung[3]}
|
||||
bind:checked={gebaeude.dachgeschoss_gedaemmt}
|
||||
value="DGD"
|
||||
/>Dachgeschoss gedämmt</label
|
||||
>
|
||||
@@ -321,7 +320,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGwaermedaemmung5"
|
||||
bind:checked={gebaeude.daemmung[4]}
|
||||
bind:checked={gebaeude.oberste_geschossdecke_gedaemmt}
|
||||
value="OGDDW"
|
||||
/>Oberste Geschossdecke gedämmt</label
|
||||
>
|
||||
@@ -331,7 +330,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGwaermedaemmung6"
|
||||
bind:checked={gebaeude.daemmung[5]}
|
||||
bind:checked={gebaeude.oberste_geschossdecke_min_12cm_gedaemmt}
|
||||
value="OGDD"
|
||||
/>Oberste Geschossdecke min. 12cm gedämmt</label
|
||||
>
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
<script lang="ts">
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import ImageGrid from "../ImageGrid.svelte";;
|
||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||
import { VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
let images: (File & { data: string })[] = [];
|
||||
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
</script>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
<script lang="ts">
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import ImageGrid from "../ImageGrid.svelte";;
|
||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||
import { VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
let images: (File & { data: string })[] = [];
|
||||
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
</script>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
<script lang="ts">
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import ImageGrid from "../ImageGrid.svelte";;
|
||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||
import { VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
let images: (File & { data: string })[] = [];
|
||||
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
</script>
|
||||
|
||||
<div class="grid grid-cols-2 gap-4">
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<script lang="ts">
|
||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||
import { endEnergieVerbrauch } from "#lib/Berechnungen/endEnergieVerbrauch";
|
||||
import { BedarfsausweisWohnen, GebaeudeStammdaten, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export let ausweis: Verbrauchsausweis | VerbrauchsausweisGewerbe | Bedarfsausweis;
|
||||
export let ausweis: VerbrauchsausweisWohnen | VerbrauchsausweisGewerbe | BedarfsausweisWohnen;
|
||||
export let gebaeude: GebaeudeStammdaten;
|
||||
|
||||
let maxPerformance = 250;
|
||||
|
||||
@@ -40,10 +40,10 @@
|
||||
let translation_2 = 0;
|
||||
$: {
|
||||
(async () => {
|
||||
const endEnergieVerbrauch = (await ausweis.endEnergieVerbrauch);
|
||||
const primaerEnergieVerbrauch = (await ausweis.primaerEnergieBedarf);
|
||||
translation_1 = Math.max(0, Math.min(100, endEnergieVerbrauch / maxPerformance * 100))
|
||||
translation_2 = Math.max(0, Math.min(100, primaerEnergieVerbrauch / maxPerformance * 100))
|
||||
const energieVerbrauch = (await endEnergieVerbrauch({ ...ausweis, gebaeude_stammdaten: gebaeude}));
|
||||
//const primaerEnergieVerbrauch = (await ausweis.primaerEnergieBedarf);
|
||||
translation_1 = Math.max(0, Math.min(100, energieVerbrauch / maxPerformance * 100))
|
||||
//translation_2 = Math.max(0, Math.min(100, primaerEnergieVerbrauch / maxPerformance * 100))
|
||||
})()
|
||||
}
|
||||
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
import moment, { Moment } from "moment";
|
||||
import Label from "../Label.svelte";
|
||||
import fuelList from "./fuelList";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { Gebaeude } from "src/lib/Gebaeude";
|
||||
import { auditVerbrauchAbweichung } from "../Verbrauchsausweis/audits/VerbrauchAbweichung";
|
||||
import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
let availableYears = [
|
||||
2018, 2019,
|
||||
@@ -25,8 +24,8 @@
|
||||
"Dezember",
|
||||
];
|
||||
|
||||
export let gebaeude: Gebaeude;
|
||||
export let ausweis: Verbrauchsausweis;
|
||||
export let gebaeude: GebaeudeStammdaten;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
|
||||
const fuelMap: Record<string, string[]> = {};
|
||||
for (const fuel of fuelList) {
|
||||
@@ -44,7 +43,7 @@
|
||||
}
|
||||
}
|
||||
|
||||
$: abweichung = auditVerbrauchAbweichung(gebaeude);
|
||||
$: abweichung = auditVerbrauchAbweichung(ausweis, gebaeude);
|
||||
</script>
|
||||
|
||||
<div class="w-full flex flex-col gap-4">
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
<script lang="ts">
|
||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||
import { VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
|
||||
const base64 = btoa(JSON.stringify(ausweis));
|
||||
</script>
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
<script lang="ts">
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import UploadImages from "./UploadImages.svelte";
|
||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||
import { VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export let images: (File & { data: string })[] = [];
|
||||
export let max: number = 4;
|
||||
export let ausweis: Verbrauchsausweis | Bedarfsausweis | VerbrauchsausweisGewerbe;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
</script>
|
||||
|
||||
<div class="flex flex-col gap-4">
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
<script lang="ts">
|
||||
import { Bedarfsausweis } from "src/lib/Ausweis/Bedarfsausweis";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { VerbrauchsausweisGewerbe } from "src/lib/Ausweis/VerbrauchsausweisGewerbe";
|
||||
import { VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export let max: number = 2;
|
||||
|
||||
// Array of base64 encoded images read into the input.
|
||||
export let images: (File & { data: string })[] = [];
|
||||
export let ausweis: Verbrauchsausweis | VerbrauchsausweisGewerbe | Bedarfsausweis;
|
||||
export let ausweis: VerbrauchsausweisWohnen;
|
||||
|
||||
function getAllImages(this: HTMLInputElement) {
|
||||
const files = this.files || [];
|
||||
@@ -66,7 +64,7 @@
|
||||
data: dataURL.split(';base64,')[1],
|
||||
name: file.name,
|
||||
kategorie: "",
|
||||
gebaeude_uid: ausweis.gebaeude_uid
|
||||
gebaeude_uid: ausweis.gebaeude_stammdaten_id
|
||||
})
|
||||
}).then(response => response.json()).then(json => {
|
||||
if (json.success === false) {
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
import { Gebaeude } from "src/lib/Gebaeude";
|
||||
import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export function auditBedarfsausweisBenoetigt(gebaeude: Gebaeude): boolean {
|
||||
let ausweis = gebaeude.ausweis;
|
||||
if (!ausweis) {
|
||||
return false;
|
||||
export function auditBedarfsausweisBenoetigt(ausweis: VerbrauchsausweisWohnen, gebaeude: GebaeudeStammdaten): boolean {
|
||||
|
||||
if (gebaeude.baujahr_gebaeude && gebaeude.baujahr_gebaeude.length > 0) {
|
||||
return (
|
||||
(gebaeude.baujahr_gebaeude[0] < 1978 &&
|
||||
gebaeude.einheiten <= 4 &&
|
||||
gebaeude.saniert == false &&
|
||||
(ausweis.ausstellgrund == "Vermietung" ||
|
||||
ausweis.ausstellgrund == "Sonstiges" ||
|
||||
ausweis.ausstellgrund == "Verkauf")) ||
|
||||
ausweis.ausstellgrund == "Neubau" ||
|
||||
ausweis.ausstellgrund == "Modernisierung"
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
(gebaeude.baujahr[0] < 1978 &&
|
||||
gebaeude.einheiten <= 4 &&
|
||||
gebaeude.saniert == false &&
|
||||
(ausweis.ausstellgrund == "Vermietung" ||
|
||||
ausweis.ausstellgrund == "Sonstiges" ||
|
||||
ausweis.ausstellgrund == "Verkauf")) ||
|
||||
ausweis.ausstellgrund == "Neubau" ||
|
||||
ausweis.ausstellgrund == "Modernisierung"
|
||||
);
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
import { Gebaeude } from "src/lib/Gebaeude";
|
||||
import { AuditType, hidden } from "../audits/hidden";
|
||||
import { GebaeudeStammdaten } from "@ibcornelsen/database";
|
||||
|
||||
export function auditHeizungGebaeudeBaujahr(gebaeude: Gebaeude): boolean {
|
||||
let ausweis = gebaeude.ausweis;
|
||||
if (!ausweis) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return ausweis.baujahr_anlage[0] > 1500 &&
|
||||
gebaeude.baujahr[0] > 1500 &&
|
||||
ausweis.baujahr_anlage[0] < gebaeude.baujahr[0]
|
||||
export function auditHeizungGebaeudeBaujahr(gebaeude: GebaeudeStammdaten): boolean {
|
||||
if ((gebaeude.baujahr_heizung && gebaeude.baujahr_heizung.length > 0) && (gebaeude.baujahr_gebaeude && gebaeude.baujahr_gebaeude.length > 0)) {
|
||||
return gebaeude.baujahr_heizung[0] > 1500 &&
|
||||
gebaeude.baujahr_gebaeude[0] > 1500 &&
|
||||
gebaeude.baujahr_heizung[0] < gebaeude.baujahr_gebaeude[0]
|
||||
&& !hidden.has(AuditType.HEIZUNG_GEBAEUDE_BAUJAHR)
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
import { Gebaeude } from "src/lib/Gebaeude";
|
||||
import { AuditType, hidden } from "./hidden";
|
||||
import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export function auditVerbrauchAbweichung(gebaeude: Gebaeude): number[] {
|
||||
let ausweis = gebaeude.ausweis;
|
||||
if (!ausweis || gebaeude.leerstand > 0) {
|
||||
export function auditVerbrauchAbweichung(ausweis: VerbrauchsausweisWohnen, gebaeude: GebaeudeStammdaten): number[] {
|
||||
if (gebaeude.leerstand && (gebaeude.leerstand > 0)) {
|
||||
return [];
|
||||
}
|
||||
|
||||
@@ -11,19 +11,19 @@ export function auditVerbrauchAbweichung(gebaeude: Gebaeude): number[] {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (getAbweichung(ausweis.kennwerte.verbrauch_1, ausweis.kennwerte.verbrauch_2) > 0.25) {
|
||||
if (getAbweichung(ausweis.verbrauch_1 || 0, ausweis.verbrauch_2 || 0) > 0.25) {
|
||||
return [1, 2];
|
||||
}
|
||||
|
||||
if (getAbweichung(ausweis.kennwerte.verbrauch_2, ausweis.kennwerte.verbrauch_3) > 0.25) {
|
||||
if (getAbweichung(ausweis.verbrauch_2 || 0, ausweis.verbrauch_3 || 0) > 0.25) {
|
||||
return [2, 3];
|
||||
}
|
||||
|
||||
if (getAbweichung(ausweis.kennwerte.verbrauch_4, ausweis.kennwerte.verbrauch_5) > 0.25) {
|
||||
if (getAbweichung(ausweis.verbrauch_4 || 0, ausweis.verbrauch_5 || 0) > 0.25) {
|
||||
return [4, 5];
|
||||
}
|
||||
|
||||
if (getAbweichung(ausweis.kennwerte.verbrauch_5, ausweis.kennwerte.verbrauch_6) > 0.25) {
|
||||
if (getAbweichung(ausweis.verbrauch_5 || 0, ausweis.verbrauch_6 || 0) > 0.25) {
|
||||
return [5, 6];
|
||||
}
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
export { default as VerbrauchsausweisContent } from "./VerbrauchsausweisContent.svelte"
|
||||
@@ -4,8 +4,8 @@
|
||||
|
||||
export let name: string;
|
||||
export let readonly: boolean = false;
|
||||
export let city: string;
|
||||
export let zip: string = "";
|
||||
export let city: string | null;
|
||||
export let zip: string | null = "";
|
||||
|
||||
|
||||
let hideZipDropdown: boolean = true;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Moment } from "moment";
|
||||
import { getHeizwertfaktorClient } from "../server/Heizwertfaktor";
|
||||
import { getHeizwertfaktor } from "../server/Heizwertfaktor";
|
||||
import moment from "moment";
|
||||
import { BitChecker } from "../BitChecker";
|
||||
import { getHeizungswerte } from "../Heizungswerte";
|
||||
@@ -155,12 +155,12 @@ export class Bedarfsausweis {
|
||||
public get primaerEnergieBedarf(): number {
|
||||
const Endenergieverbrauch = this.endEnergieVerbrauch;
|
||||
|
||||
const brennstoff_1 = getHeizwertfaktorClient(
|
||||
const brennstoff_1 = getHeizwertfaktor(
|
||||
this.energietraeger_1,
|
||||
this.energietraeger_einheit_heizquelle_1
|
||||
);
|
||||
|
||||
return Endenergieverbrauch * brennstoff_1.primärenergiefaktor;
|
||||
return Endenergieverbrauch * brennstoff_1.primaerenergiefaktor;
|
||||
}
|
||||
|
||||
public get endEnergieVerbrauch(): number {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { getKlimafaktorenClient } from "../Klimafaktoren";
|
||||
import { getHeizwertfaktorClient } from "../server/Heizwertfaktor";
|
||||
import { getHeizwertfaktor } from "../server/Heizwertfaktor";
|
||||
import { Ausstellgrund, Ausweisart } from "./types";
|
||||
import { Gebaeude } from "../Gebaeude";
|
||||
import { User } from "#lib/User";
|
||||
@@ -58,12 +58,12 @@ export class Verbrauchsausweis {
|
||||
return (async () => {
|
||||
const Endenergieverbrauch = await this.endEnergieVerbrauch;
|
||||
|
||||
const brennstoff_1 = getHeizwertfaktorClient(
|
||||
const brennstoff_1 = getHeizwertfaktor(
|
||||
this.brennstoff_1,
|
||||
this.einheit_1
|
||||
);
|
||||
|
||||
return Endenergieverbrauch * brennstoff_1.primärenergiefaktor;
|
||||
return Endenergieverbrauch * brennstoff_1.primaerenergiefaktor;
|
||||
})();
|
||||
}
|
||||
|
||||
@@ -77,11 +77,11 @@ export class Verbrauchsausweis {
|
||||
|
||||
// Endenergieverbrauch
|
||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||
let brennstoff_1 = getHeizwertfaktorClient(
|
||||
let brennstoff_1 = getHeizwertfaktor(
|
||||
this.brennstoff_1,
|
||||
this.einheit_1
|
||||
);
|
||||
let brennstoff_2 = getHeizwertfaktorClient(
|
||||
let brennstoff_2 = getHeizwertfaktor(
|
||||
this.brennstoff_2,
|
||||
this.einheit_2
|
||||
);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Moment } from "moment";
|
||||
import { getKlimafaktorenClient } from "../Klimafaktoren";
|
||||
import { getHeizwertfaktorClient } from "../server/Heizwertfaktor";
|
||||
import { getHeizwertfaktor } from "../server/Heizwertfaktor";
|
||||
import moment from "moment";
|
||||
import { BitChecker } from "../BitChecker";
|
||||
import { Ausstellgrund, Ausweisart, Dachgeschoss, Lueftungskonzept } from "./types";
|
||||
@@ -149,9 +149,9 @@ export class VerbrauchsausweisGewerbe {
|
||||
return (async () => {
|
||||
const Endenergieverbrauch = await this.endEnergieVerbrauch;
|
||||
|
||||
const brennstoff_1 = getHeizwertfaktorClient(this.energietraeger_1, this.energietraeger_einheit_heizquelle_1);
|
||||
const brennstoff_1 = getHeizwertfaktor(this.energietraeger_1, this.energietraeger_einheit_heizquelle_1);
|
||||
|
||||
return Endenergieverbrauch * brennstoff_1.primärenergiefaktor;
|
||||
return Endenergieverbrauch * brennstoff_1.primaerenergiefaktor;
|
||||
})();
|
||||
}
|
||||
|
||||
@@ -165,8 +165,8 @@ export class VerbrauchsausweisGewerbe {
|
||||
|
||||
// Endenergieverbrauch
|
||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||
let brennstoff_1 = getHeizwertfaktorClient(this.energietraeger_1, this.energietraeger_einheit_heizquelle_1);
|
||||
let brennstoff_2 = getHeizwertfaktorClient(this.energietraeger_2, this.energietraeger_einheit_heizquelle_2);
|
||||
let brennstoff_1 = getHeizwertfaktor(this.energietraeger_1, this.energietraeger_einheit_heizquelle_1);
|
||||
let brennstoff_2 = getHeizwertfaktor(this.energietraeger_2, this.energietraeger_einheit_heizquelle_2);
|
||||
|
||||
let verbrauch_1_kwh =
|
||||
(this.energieverbrauch_1_heizquelle_1 * brennstoff_1.umrechnungsfaktor)
|
||||
|
||||
@@ -0,0 +1,293 @@
|
||||
import { getKlimafaktoren } from "#lib/Klimafaktoren";
|
||||
import { getHeizwertfaktor } from "#lib/server/Heizwertfaktor";
|
||||
import {
|
||||
GebaeudeStammdaten,
|
||||
VerbrauchsausweisWohnen,
|
||||
} from "@ibcornelsen/database";
|
||||
|
||||
export function energetischeNutzflaecheVerbrauchsausweisWohnen_2016(
|
||||
ausweis: VerbrauchsausweisWohnen & {
|
||||
gebaeude_stammdaten: GebaeudeStammdaten;
|
||||
}
|
||||
): number {
|
||||
let faktorKeller = 1.2;
|
||||
if (ausweis.keller_beheizt && (ausweis.gebaeude_stammdaten.einheiten || 1) <= 2) {
|
||||
faktorKeller = 1.35;
|
||||
}
|
||||
|
||||
return (ausweis.gebaeude_stammdaten.flaeche || 1) * faktorKeller;
|
||||
}
|
||||
|
||||
export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
ausweis: VerbrauchsausweisWohnen & {
|
||||
gebaeude_stammdaten: GebaeudeStammdaten;
|
||||
}
|
||||
) {
|
||||
const date = ausweis.startdatum;
|
||||
const klimafaktoren = await getKlimafaktoren(
|
||||
date,
|
||||
ausweis.gebaeude_stammdaten.plz
|
||||
);
|
||||
|
||||
// Endenergieverbrauch
|
||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||
let brennstoff_1 = getHeizwertfaktor(
|
||||
ausweis.brennstoff_1 as string,
|
||||
ausweis.einheit_1 as string
|
||||
);
|
||||
let brennstoff_2 = getHeizwertfaktor(
|
||||
ausweis.brennstoff_2 as string,
|
||||
ausweis.einheit_2 as string
|
||||
);
|
||||
|
||||
const energetischeNutzflaeche =
|
||||
energetischeNutzflaecheVerbrauchsausweisWohnen_2016(ausweis);
|
||||
|
||||
let energieVerbrauchGesamt_1 =
|
||||
((ausweis.verbrauch_1 || 0) +
|
||||
(ausweis.verbrauch_2 || 0) +
|
||||
(ausweis.verbrauch_3 || 0)) *
|
||||
brennstoff_1.umrechnungsfaktor;
|
||||
let energieVerbrauchGesamt_2 =
|
||||
((ausweis.verbrauch_4 || 0) +
|
||||
(ausweis.verbrauch_5 || 0) +
|
||||
(ausweis.verbrauch_6 || 0)) *
|
||||
brennstoff_2.umrechnungsfaktor;
|
||||
|
||||
let energieVerbrauchWarmwasser_1 = 0;
|
||||
let energieVerbrauchWarmwasser_2 = 0;
|
||||
let leerstandsZuschlagWarmwasser = 0;
|
||||
// Leerstand wird in Prozent angegeben, muss hier aber in eine Zahl zwischen 0 und 1 umgerechnet werden.
|
||||
let leerstand = (ausweis.gebaeude_stammdaten.leerstand || 0) / 100;
|
||||
|
||||
if (ausweis.warmwasser_enthalten && ausweis.warmwasser_anteil_bekannt) {
|
||||
if (ausweis.gebaeude_stammdaten.solarsystem_warmwasser) {
|
||||
// Wenn Warmwasser enthalten und Anteil bekannt und Solarsystem
|
||||
energieVerbrauchWarmwasser_1 =
|
||||
energieVerbrauchGesamt_1 *
|
||||
((ausweis.anteil_warmwasser_1 || 0) / 100) *
|
||||
0.6;
|
||||
energieVerbrauchWarmwasser_2 =
|
||||
energieVerbrauchGesamt_2 *
|
||||
((ausweis.anteil_warmwasser_2 || 0) / 100) *
|
||||
0.6;
|
||||
} else {
|
||||
// Wenn Warmwasser enthalten und Anteil bekannt und **kein** Solarsystem
|
||||
energieVerbrauchWarmwasser_1 =
|
||||
energieVerbrauchGesamt_1 *
|
||||
((ausweis.anteil_warmwasser_1 || 0) / 100);
|
||||
energieVerbrauchWarmwasser_2 =
|
||||
energieVerbrauchGesamt_2 *
|
||||
((ausweis.anteil_warmwasser_2 || 0) / 100);
|
||||
}
|
||||
leerstandsZuschlagWarmwasser =
|
||||
leerstand *
|
||||
(energieVerbrauchWarmwasser_1 + energieVerbrauchWarmwasser_2);
|
||||
} else {
|
||||
if (ausweis.gebaeude_stammdaten.solarsystem_warmwasser) {
|
||||
// Wenn Warmwasser Anteil unbekannt und Solarsystem
|
||||
energieVerbrauchWarmwasser_1 = energetischeNutzflaeche * 12 * 3;
|
||||
energieVerbrauchWarmwasser_2 = 0;
|
||||
} else {
|
||||
// Wenn Warmwasser Anteil unbekannt und **kein** Solarsystem
|
||||
energieVerbrauchWarmwasser_1 = energetischeNutzflaeche * 20 * 3;
|
||||
energieVerbrauchWarmwasser_2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
let energieVerbrauchHeizung_1 = energieVerbrauchGesamt_1;
|
||||
let energieVerbrauchHeizung_2 = energieVerbrauchGesamt_2;
|
||||
|
||||
if (ausweis.warmwasser_enthalten) {
|
||||
energieVerbrauchHeizung_1 -= energieVerbrauchWarmwasser_1;
|
||||
energieVerbrauchHeizung_2 -= energieVerbrauchWarmwasser_2;
|
||||
}
|
||||
|
||||
let durchschnittsKlimafaktor =
|
||||
(klimafaktoren[0] + klimafaktoren[1] + klimafaktoren[2]) / 3 || 1;
|
||||
|
||||
let energieVerbrauchHeizungBereinigt_1 =
|
||||
energieVerbrauchHeizung_1 * durchschnittsKlimafaktor;
|
||||
let energieVerbrauchHeizungBereinigt_2 =
|
||||
energieVerbrauchHeizung_2 * durchschnittsKlimafaktor;
|
||||
|
||||
let kuehlungsZuschlag = 0;
|
||||
if (ausweis.wird_gekuehlt) {
|
||||
kuehlungsZuschlag = 6 * 3 * energetischeNutzflaeche;
|
||||
}
|
||||
|
||||
let durchschnittsEnergieVerbrauchHeizungBereingt =
|
||||
(energieVerbrauchHeizungBereinigt_1 +
|
||||
energieVerbrauchHeizungBereinigt_2) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
|
||||
let faktorDurchschnittsEnergieVerbrauchHeizungBereinigt =
|
||||
-0.0028 * durchschnittsEnergieVerbrauchHeizungBereingt + 0.9147;
|
||||
|
||||
if (faktorDurchschnittsEnergieVerbrauchHeizungBereinigt <= 0.25) {
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt = 0.25;
|
||||
} else if (faktorDurchschnittsEnergieVerbrauchHeizungBereinigt >= 1.0) {
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt = 1.0;
|
||||
}
|
||||
|
||||
let leerstandsZuschlagHeizung =
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt *
|
||||
leerstand *
|
||||
(energieVerbrauchHeizungBereinigt_1 +
|
||||
energieVerbrauchHeizungBereinigt_2);
|
||||
|
||||
let endEnergieVerbrauch_1 =
|
||||
(energieVerbrauchHeizungBereinigt_1 + energieVerbrauchWarmwasser_1) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
let endEnergieVerbrauch_2 =
|
||||
(energieVerbrauchHeizungBereinigt_2 + energieVerbrauchWarmwasser_2) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
|
||||
let endEnergieVerbrauchLeerstandsZuschlag =
|
||||
(leerstandsZuschlagHeizung + leerstandsZuschlagWarmwasser) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
let endEnergieVerbrauchKuehlungsZuschlag =
|
||||
kuehlungsZuschlag / (3 * energetischeNutzflaeche);
|
||||
|
||||
let primaerfaktorww = 0;
|
||||
let primaerfaktorww_1 = 0;
|
||||
|
||||
if (!ausweis.warmwasser_enthalten && ausweis.gebaeude_stammdaten.durchlauf_erhitzer) {
|
||||
primaerfaktorww = 1.8;
|
||||
primaerfaktorww_1 = 1.8;
|
||||
} else {
|
||||
primaerfaktorww = brennstoff_1.primaerenergiefaktor;
|
||||
primaerfaktorww_1 = brennstoff_2.primaerenergiefaktor;
|
||||
}
|
||||
|
||||
let primaerEnergieVerbrauch_1 =
|
||||
(energieVerbrauchHeizungBereinigt_1 *
|
||||
brennstoff_1.primaerenergiefaktor +
|
||||
energieVerbrauchWarmwasser_1 * primaerfaktorww) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
let primaerEnergieVerbrauch_2 =
|
||||
(energieVerbrauchHeizungBereinigt_2 *
|
||||
brennstoff_2.primaerenergiefaktor +
|
||||
energieVerbrauchWarmwasser_2 * primaerfaktorww_1) /
|
||||
(3 * energetischeNutzflaeche);
|
||||
|
||||
let primaerEnergieVerbrauchLeerstandsZuschlag =
|
||||
endEnergieVerbrauchLeerstandsZuschlag *
|
||||
brennstoff_1.primaerenergiefaktor;
|
||||
let primaerEnergieVerbrauchKuehlungsZuschlag =
|
||||
endEnergieVerbrauchKuehlungsZuschlag * 1.8;
|
||||
|
||||
let co2Emissionen_1 = endEnergieVerbrauch_1 * brennstoff_1.coe;
|
||||
let co2Emissionen_2 = endEnergieVerbrauch_2 * brennstoff_2.coe;
|
||||
|
||||
let co2EmissionenLeerstandsZuschlag =
|
||||
endEnergieVerbrauchLeerstandsZuschlag * brennstoff_1.coe;
|
||||
let co2EmissionenKuehlungsZuschlag =
|
||||
endEnergieVerbrauchKuehlungsZuschlag * brennstoff_2.coe;
|
||||
|
||||
let endEnergieVerbrauchGesamt =
|
||||
endEnergieVerbrauch_1 +
|
||||
endEnergieVerbrauch_2 +
|
||||
endEnergieVerbrauchLeerstandsZuschlag +
|
||||
endEnergieVerbrauchKuehlungsZuschlag;
|
||||
let primaerEnergieVerbrauchGesamt =
|
||||
primaerEnergieVerbrauch_1 +
|
||||
primaerEnergieVerbrauch_2 +
|
||||
primaerEnergieVerbrauchLeerstandsZuschlag +
|
||||
primaerEnergieVerbrauchKuehlungsZuschlag;
|
||||
let co2EmissionenGesamt =
|
||||
co2Emissionen_1 +
|
||||
co2Emissionen_2 +
|
||||
co2EmissionenLeerstandsZuschlag +
|
||||
co2EmissionenKuehlungsZuschlag;
|
||||
|
||||
return {
|
||||
brennstoff_1: brennstoff_1,
|
||||
brennstoff_2: brennstoff_2,
|
||||
klimafaktoren: klimafaktoren,
|
||||
kuehlungsZuschlag: Math.round(kuehlungsZuschlag),
|
||||
durchschnittsKlimafaktor: Math.round(durchschnittsKlimafaktor),
|
||||
ausweis: ausweis,
|
||||
|
||||
anteil_heizung_1: 1 - (ausweis.anteil_warmwasser_1 || 0) / 100,
|
||||
anteil_heizung_2: 1 - (ausweis.anteil_warmwasser_2 || 0) / 100,
|
||||
|
||||
verbrauch_1_kwh: Math.round(
|
||||
(ausweis.verbrauch_1 || 0) * brennstoff_1.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_2_kwh: Math.round(
|
||||
(ausweis.verbrauch_2 || 0) * brennstoff_1.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_3_kwh: Math.round(
|
||||
(ausweis.verbrauch_3 || 0) * brennstoff_1.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_4_kwh: Math.round(
|
||||
(ausweis.verbrauch_4 || 0) * brennstoff_2.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_5_kwh: Math.round(
|
||||
(ausweis.verbrauch_5 || 0) * brennstoff_2.umrechnungsfaktor
|
||||
),
|
||||
verbrauch_6_kwh: Math.round(
|
||||
(ausweis.verbrauch_6 || 0) * brennstoff_2.umrechnungsfaktor
|
||||
),
|
||||
|
||||
energetische_nutzfläche: Math.round(energetischeNutzflaeche),
|
||||
leerstand: leerstand,
|
||||
leerstandsZuschlagHeizung: Math.round(leerstandsZuschlagHeizung),
|
||||
leerstandsZuschlagWarmwasser: Math.round(leerstandsZuschlagWarmwasser),
|
||||
endEnergieVerbrauchLeerstandsZuschlag: Math.round(
|
||||
endEnergieVerbrauchLeerstandsZuschlag
|
||||
),
|
||||
endEnergieVerbrauchKuehlungsZuschlag: Math.round(
|
||||
endEnergieVerbrauchKuehlungsZuschlag
|
||||
),
|
||||
coeeffkg: co2EmissionenGesamt,
|
||||
energieVerbrauchGesamt_1: Math.round(energieVerbrauchGesamt_1),
|
||||
energieVerbrauchGesamt_2: Math.round(energieVerbrauchGesamt_2),
|
||||
energieVerbrauchWarmwasser_1: Math.round(energieVerbrauchWarmwasser_1),
|
||||
energieVerbrauchWarmwasser_2: Math.round(energieVerbrauchWarmwasser_2),
|
||||
energieVerbrauchHeizung_1: energieVerbrauchHeizung_1,
|
||||
energieVerbrauchHeizung_2: energieVerbrauchHeizung_2,
|
||||
anteil_warmwasser_1: (ausweis.anteil_warmwasser_1 || 0) / 100,
|
||||
anteil_warmwasser_2: (ausweis.anteil_warmwasser_2 || 0) / 100,
|
||||
|
||||
energieVerbrauchHeizungBereinigt_1: Math.round(
|
||||
energieVerbrauchHeizungBereinigt_1
|
||||
),
|
||||
energieVerbrauchHeizungBereinigt_2: Math.round(
|
||||
energieVerbrauchHeizungBereinigt_2
|
||||
),
|
||||
durchschnittsEnergieVerbrauchHeizungBereingt: Math.round(
|
||||
durchschnittsEnergieVerbrauchHeizungBereingt
|
||||
),
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt: Math.round(
|
||||
faktorDurchschnittsEnergieVerbrauchHeizungBereinigt
|
||||
),
|
||||
|
||||
endEnergieVerbrauch_1: Math.round(endEnergieVerbrauch_1),
|
||||
endEnergieVerbrauch_2: Math.round(endEnergieVerbrauch_2),
|
||||
|
||||
primaerEnergieVerbrauch_1: Math.round(primaerEnergieVerbrauch_1),
|
||||
primaerEnergieVerbrauch_2: Math.round(primaerEnergieVerbrauch_2),
|
||||
|
||||
primaerEnergieVerbrauchLeerstandsZuschlag: Math.round(
|
||||
primaerEnergieVerbrauchLeerstandsZuschlag
|
||||
),
|
||||
primaerEnergieVerbrauchKuehlungsZuschlag: Math.round(
|
||||
primaerEnergieVerbrauchKuehlungsZuschlag
|
||||
),
|
||||
|
||||
co2Emissionen_1: co2Emissionen_1,
|
||||
co2Emissionen_2: co2Emissionen_2,
|
||||
|
||||
co2EmissionenLeerstandsZuschlag: co2EmissionenLeerstandsZuschlag,
|
||||
co2EmissionenKuehlungsZuschlag: co2EmissionenKuehlungsZuschlag,
|
||||
|
||||
co2EmissionenGesamt: Math.round(co2EmissionenGesamt),
|
||||
|
||||
endEnergieVerbrauchGesamt: Math.round(endEnergieVerbrauchGesamt),
|
||||
primaerEnergieVerbrauchGesamt: Math.round(
|
||||
primaerEnergieVerbrauchGesamt
|
||||
),
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
import { getKlimafaktoren } from "#lib/Klimafaktoren";
|
||||
import { getHeizwertfaktor } from "#lib/server/Heizwertfaktor";
|
||||
import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export function energetischeNutzflaecheVerbrauchsausweisWohnen_2023(ausweis: VerbrauchsausweisWohnen & { gebaeude_stammdaten: GebaeudeStammdaten }): number {
|
||||
return (
|
||||
ausweis.gebaeude_stammdaten.flaeche *
|
||||
(ausweis.gebaeude_stammdaten.keller ? 1.35 : 1.2)
|
||||
);
|
||||
}
|
||||
|
||||
export async function endEnergieVerbrauchVerbrauchsausweis_2023(ausweis: VerbrauchsausweisWohnen & { gebaeude_stammdaten: GebaeudeStammdaten }): Promise<number> {
|
||||
const date = ausweis.startdatum;
|
||||
const klimafaktoren = await getKlimafaktoren(
|
||||
date,
|
||||
ausweis.gebaeude_stammdaten.plz
|
||||
);
|
||||
|
||||
// Endenergieverbrauch
|
||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||
let brennstoff_1 = getHeizwertfaktor(
|
||||
ausweis.brennstoff_1,
|
||||
ausweis.einheit_1
|
||||
);
|
||||
let brennstoff_2 = getHeizwertfaktor(
|
||||
ausweis.brennstoff_2,
|
||||
ausweis.einheit_2
|
||||
);
|
||||
|
||||
let verbrauch_1_kwh =
|
||||
ausweis.verbrauch_1 * brennstoff_1.umrechnungsfaktor;
|
||||
let verbrauch_2_kwh =
|
||||
ausweis.verbrauch_2 * brennstoff_1.umrechnungsfaktor;
|
||||
let verbrauch_3_kwh =
|
||||
ausweis.verbrauch_3 * brennstoff_1.umrechnungsfaktor;
|
||||
let verbrauch_4_kwh =
|
||||
ausweis.verbrauch_4 * brennstoff_2.umrechnungsfaktor;
|
||||
let verbrauch_5_kwh =
|
||||
ausweis.verbrauch_5 * brennstoff_2.umrechnungsfaktor;
|
||||
let verbrauch_6_kwh =
|
||||
ausweis.verbrauch_6 * brennstoff_2.umrechnungsfaktor;
|
||||
|
||||
const energetischeNutzflaeche = energetischeNutzflaecheVerbrauchsausweisWohnen_2016(ausweis);
|
||||
|
||||
let warmwasserZuschlag = 0;
|
||||
let leerstandsZuschlag = 0;
|
||||
let kuehlungsZuschlag = 0;
|
||||
if (ausweis.anteil_warmwasser_1 == 0) {
|
||||
warmwasserZuschlag = 20 * energetischeNutzflaeche * 3;
|
||||
}
|
||||
|
||||
if (ausweis.gebaeude_stammdaten.leerstand > 0) {
|
||||
let durchschnittsKlimafaktor =
|
||||
klimafaktoren.reduce((a, b) => a + b, 0) / 3;
|
||||
|
||||
leerstandsZuschlag =
|
||||
((verbrauch_1_kwh +
|
||||
verbrauch_2_kwh +
|
||||
verbrauch_3_kwh +
|
||||
verbrauch_4_kwh +
|
||||
verbrauch_5_kwh +
|
||||
verbrauch_6_kwh) *
|
||||
(ausweis.gebaeude_stammdaten.leerstand / 100)) /
|
||||
durchschnittsKlimafaktor;
|
||||
}
|
||||
|
||||
if (ausweis.gebaeude_stammdaten.energiequelle_2_nutzung[3]) {
|
||||
kuehlungsZuschlag = 6 * energetischeNutzflaeche * 3;
|
||||
}
|
||||
|
||||
let anteil_heizung = 1 - ausweis.anteil_warmwasser_1 / 100;
|
||||
let anteil_warmwasser = ausweis.anteil_warmwasser_1 / 100;
|
||||
|
||||
let Energieverbrauchskennwert =
|
||||
(anteil_heizung *
|
||||
(verbrauch_1_kwh + verbrauch_4_kwh) *
|
||||
klimafaktoren[0] +
|
||||
anteil_warmwasser * (verbrauch_1_kwh + verbrauch_4_kwh) +
|
||||
anteil_heizung *
|
||||
(verbrauch_2_kwh + verbrauch_5_kwh) *
|
||||
klimafaktoren[1] +
|
||||
anteil_warmwasser * (verbrauch_2_kwh + verbrauch_5_kwh) +
|
||||
anteil_heizung *
|
||||
(verbrauch_3_kwh + verbrauch_6_kwh) *
|
||||
klimafaktoren[2] +
|
||||
anteil_warmwasser * (verbrauch_3_kwh + verbrauch_6_kwh) +
|
||||
warmwasserZuschlag +
|
||||
leerstandsZuschlag +
|
||||
kuehlungsZuschlag) /
|
||||
3 /
|
||||
energetischeNutzflaeche;
|
||||
|
||||
|
||||
return Energieverbrauchskennwert;
|
||||
}
|
||||
6
src/lib/Berechnungen/endEnergieVerbrauch.ts
Normal file
6
src/lib/Berechnungen/endEnergieVerbrauch.ts
Normal file
@@ -0,0 +1,6 @@
|
||||
import { BedarfsausweisWohnen, GebaeudeStammdaten, VerbrauchsausweisGewerbe, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "./VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
|
||||
|
||||
export async function endEnergieVerbrauch(ausweis: VerbrauchsausweisWohnen & { gebaeude_stammdaten: GebaeudeStammdaten }): Promise<number> {
|
||||
return (await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis)).endEnergieVerbrauchGesamt;
|
||||
}
|
||||
@@ -1,12 +1,14 @@
|
||||
import moment from "moment";
|
||||
import { memoize } from "./Memoization";
|
||||
import { prisma } from "@ibcornelsen/database";
|
||||
import { l } from "astro-i18n";
|
||||
|
||||
export const getKlimafaktorenClient = memoize<Promise<[number, number, number]>>(async (date: Date, zip: string) => {
|
||||
if (!zip || !date) {
|
||||
export const getKlimafaktorenClient = memoize<Promise<[number, number, number]>>(async (date: Date, plz: string) => {
|
||||
if (!plz || !date) {
|
||||
return [0, 0, 0];
|
||||
}
|
||||
|
||||
const response = await fetch(`/api/klimafaktor?date=${moment(date).format("YYYY-MM-DD")}&accuracy=years&zip=${zip}`, {
|
||||
const response = await fetch(`/api/klimafaktor?date=${moment(date).format("YYYY-MM-DD")}&accuracy=years&zip=${plz}`, {
|
||||
method: "GET",
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
@@ -21,6 +23,34 @@ export const getKlimafaktorenClient = memoize<Promise<[number, number, number]>>
|
||||
return Object.values(json.data) as [number, number, number];
|
||||
});
|
||||
|
||||
export const getKlimafaktorenServer = memoize(async (date: Date, zip: string) => {
|
||||
export const getKlimafaktorenServer = memoize(async (date: Date, plz: string) => {
|
||||
if (!plz || !date) {
|
||||
return [0, 0, 0];
|
||||
}
|
||||
|
||||
});
|
||||
const klimafaktoren = await prisma.klimafaktoren.findMany({
|
||||
where: {
|
||||
plz,
|
||||
month: moment(date).month(),
|
||||
OR: [
|
||||
{
|
||||
year: moment(date).year()
|
||||
},
|
||||
{
|
||||
year: moment(date).year() + 1
|
||||
},
|
||||
{
|
||||
year: moment(date).year() + 2
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
if (klimafaktoren.length === 0) {
|
||||
return [0, 0, 0];
|
||||
}
|
||||
|
||||
return klimafaktoren.map(klimafaktor => klimafaktor.klimafaktor) as [number, number, number];
|
||||
});
|
||||
|
||||
export const getKlimafaktoren = typeof window === "undefined" ? getKlimafaktorenServer : getKlimafaktorenClient;
|
||||
@@ -1,10 +1,10 @@
|
||||
import moment, { Moment } from "moment";
|
||||
import { db } from "../shared";
|
||||
import { prisma } from "@ibcornelsen/database";
|
||||
|
||||
export async function getClimateFactor(dates: Moment[], zip: string): Promise<number[][] | null> {
|
||||
export async function getClimateFactor(dates: Moment[], zip: string): Promise<({ zip: string } & Record<string, number>) | null> {
|
||||
const formattedDates = dates.map(date => {
|
||||
let d = moment(date).format("MM_YYYY");
|
||||
return `d_${d} as ${d}`
|
||||
return `d_${d}`
|
||||
});
|
||||
|
||||
if (dates.length == 0) {
|
||||
@@ -14,9 +14,20 @@ export async function getClimateFactor(dates: Moment[], zip: string): Promise<nu
|
||||
return null;
|
||||
}
|
||||
|
||||
let result;
|
||||
let result: ({ zip: string } & Record<string, number>) | null = null;
|
||||
try {
|
||||
result = await db<number[][]>("climate_factors").select(formattedDates).where("zip", zip).first();
|
||||
result = await prisma.klimafaktoren.findUnique({
|
||||
select: {
|
||||
zip: true,
|
||||
...formattedDates.reduce((acc, cur) => {
|
||||
acc[cur] = true;
|
||||
return acc;
|
||||
}, {} as Record<string, boolean>)
|
||||
},
|
||||
where: {
|
||||
zip
|
||||
}
|
||||
}) as ({ zip: string } & Record<string, number>) | null;
|
||||
} catch(e) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { db, prisma } from "../shared";
|
||||
import { prisma } from "@ibcornelsen/database";
|
||||
import { UserRegisterValidator, UserType, UserTypeValidator } from "./type";
|
||||
import { v4 as uuid } from "uuid";
|
||||
import { hashPassword } from "../Password";
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { Benutzer, Rechnungen, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
import { Gebaeude } from "src/lib/Gebaeude";
|
||||
import { getKlimafaktorenClient } from "src/lib/Klimafaktoren";
|
||||
import { getHeizwertfaktorClient } from "src/lib/server/Heizwertfaktor";
|
||||
import { getHeizwertfaktor } from "src/lib/server/Heizwertfaktor";
|
||||
|
||||
|
||||
export class Verbrauchsausweis implements Partial<VerbrauchsausweisWohnen & { benutzer: Benutzer, rechnung: Rechnungen }> {
|
||||
@@ -49,12 +49,12 @@ export class Verbrauchsausweis implements Partial<VerbrauchsausweisWohnen & { be
|
||||
return (async () => {
|
||||
const Endenergieverbrauch = await this.endEnergieVerbrauch;
|
||||
|
||||
const brennstoff_1 = getHeizwertfaktorClient(
|
||||
const brennstoff_1 = getHeizwertfaktor(
|
||||
this.brennstoff_1,
|
||||
this.einheit_1
|
||||
);
|
||||
|
||||
return Endenergieverbrauch * brennstoff_1.primärenergiefaktor;
|
||||
return Endenergieverbrauch * brennstoff_1.primaerenergiefaktor;
|
||||
})();
|
||||
}
|
||||
|
||||
@@ -68,11 +68,11 @@ export class Verbrauchsausweis implements Partial<VerbrauchsausweisWohnen & { be
|
||||
|
||||
// Endenergieverbrauch
|
||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||
let brennstoff_1 = getHeizwertfaktorClient(
|
||||
let brennstoff_1 = getHeizwertfaktor(
|
||||
this.brennstoff_1,
|
||||
this.einheit_1
|
||||
);
|
||||
let brennstoff_2 = getHeizwertfaktorClient(
|
||||
let brennstoff_2 = getHeizwertfaktor(
|
||||
this.brennstoff_2,
|
||||
this.einheit_2
|
||||
);
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
import fuelList from "#components/Ausweis/fuelList";
|
||||
|
||||
export const getHeizwertfaktorClient = function(energietraeger: string, einheit: string): {
|
||||
export const getHeizwertfaktor = function(energietraeger: string, einheit: string): {
|
||||
coe: number,
|
||||
energietraeger: string,
|
||||
einheit: string,
|
||||
umrechnungsfaktor: number,
|
||||
primärenergiefaktor: number
|
||||
primaerenergiefaktor: number
|
||||
} {
|
||||
for (const fuel of fuelList) {
|
||||
if (fuel[0] == energietraeger && fuel[1] == einheit) {
|
||||
@@ -14,7 +14,7 @@ export const getHeizwertfaktorClient = function(energietraeger: string, einheit:
|
||||
energietraeger: fuel[0],
|
||||
einheit: fuel[1],
|
||||
umrechnungsfaktor: fuel[2],
|
||||
primärenergiefaktor: fuel[3]
|
||||
primaerenergiefaktor: fuel[3]
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,6 @@ export const getHeizwertfaktorClient = function(energietraeger: string, einheit:
|
||||
energietraeger: "",
|
||||
einheit: "",
|
||||
umrechnungsfaktor: 0,
|
||||
primärenergiefaktor: 0
|
||||
primaerenergiefaktor: 0
|
||||
};
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
import knex, { Knex } from "knex";
|
||||
export { prisma } from "@ibcornelsen/database"
|
||||
|
||||
export function dbOpen(): Knex {
|
||||
const db = knex({
|
||||
client: 'pg',
|
||||
connection: process.env.DB_CONNECTION
|
||||
})
|
||||
|
||||
return db;
|
||||
}
|
||||
|
||||
export const db = dbOpen();
|
||||
@@ -6,21 +6,20 @@
|
||||
import Verbrauch from "#components/Ausweis/Verbrauch.svelte";
|
||||
import Label from "#components/Label.svelte";
|
||||
import Ausweisart from "#components/Ausweis/Ausweisart.svelte";
|
||||
import ZipSearch from "../ZIPSearch.svelte";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import ZipSearch from "#components/ZIPSearch.svelte";
|
||||
import moment from "moment";
|
||||
import BilderZusatzsysteme from "../Ausweis/BilderZusatzsysteme.svelte";
|
||||
import { Gebaeude } from "src/lib/Gebaeude";
|
||||
import BilderZusatzsysteme from "#components/Ausweis/BilderZusatzsysteme.svelte";
|
||||
import { RawNotificationWrapper, RawNotification, notifications } from "@ibcornelsen/ui";
|
||||
import { auditHeizungGebaeudeBaujahr } from "./audits/HeizungGebaeudeBaujahr";
|
||||
import { AuditType, hidden } from "./audits/hidden";
|
||||
import { auditBedarfsausweisBenoetigt } from "./audits/BedarfsausweisBenoetigt";
|
||||
import { auditVerbrauchAbweichung } from "./audits/VerbrauchAbweichung";
|
||||
import { auditHeizungGebaeudeBaujahr } from "#components/Verbrauchsausweis/audits/HeizungGebaeudeBaujahr";
|
||||
import { AuditType, hidden } from "#components/Verbrauchsausweis/audits/hidden";
|
||||
import { auditBedarfsausweisBenoetigt } from "#components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt";
|
||||
import { auditVerbrauchAbweichung } from "#components/Verbrauchsausweis/audits/VerbrauchAbweichung";
|
||||
import { GebaeudeStammdaten, VerbrauchsausweisWohnen } from "@ibcornelsen/database";
|
||||
|
||||
export let uid: string = "";
|
||||
|
||||
let gebaeude = new Gebaeude();
|
||||
let ausweis = new Verbrauchsausweis();
|
||||
let gebaeude: GebaeudeStammdaten = {} as GebaeudeStammdaten;
|
||||
let ausweis: VerbrauchsausweisWohnen = {} as VerbrauchsausweisWohnen;
|
||||
if (uid) {
|
||||
async () => {
|
||||
const result = await fetch(`/api/verbrauchsausweis?uid=${uid}`, {
|
||||
@@ -30,33 +29,32 @@
|
||||
const json = await result.json();
|
||||
|
||||
if (json.success) {
|
||||
gebaeude = new Gebaeude(json.data.gebaeude);
|
||||
ausweis = new Verbrauchsausweis(json.data.ausweis);
|
||||
gebaeude = json.data.gebaeude
|
||||
ausweis = json.data.ausweis
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function automatischAusfüllen() {
|
||||
gebaeude.baujahr = [1962];
|
||||
ausweis.baujahr_heizung = [1952];
|
||||
gebaeude.baujahr_gebaeude = [1962];
|
||||
gebaeude.baujahr_heizung = [1952];
|
||||
gebaeude.saniert = true;
|
||||
gebaeude.einheiten = 1;
|
||||
ausweis.ausstellgrund = "Vermietung";
|
||||
ausweis.verbrauch_1 = 15000;
|
||||
ausweis.verbrauch_2 = 14000;
|
||||
ausweis.verbrauch_3 = 16000;
|
||||
gebaeude.wohnflaeche = 152;
|
||||
gebaeude.keller_beheizt = true;
|
||||
gebaeude.flaeche = 152;
|
||||
ausweis.keller_beheizt = true;
|
||||
ausweis.brennstoff_1 = "Erdgas H";
|
||||
ausweis.einheit_1 = "kWh";
|
||||
ausweis.anteil_warmwasser_1 = 18;
|
||||
ausweis.startdatum = moment("12.01.2019").toDate();
|
||||
gebaeude.plz = "21039";
|
||||
gebaeude.ort = "Hamburg";
|
||||
gebaeude.strasse = "Curslacker Deich 170";
|
||||
gebaeude.adresse = "Curslacker Deich 170";
|
||||
gebaeude.gebaeudeteil = "Gesamtgebäude";
|
||||
|
||||
ausweis.gebaeude_stammdaten = gebaeude
|
||||
gebaeude = gebaeude;
|
||||
ausweis = ausweis;
|
||||
}
|
||||
@@ -68,7 +66,7 @@
|
||||
<Progressbar progress={0} />
|
||||
</div>
|
||||
|
||||
<PerformanceScore bind:ausweis />
|
||||
<PerformanceScore bind:ausweis bind:gebaeude />
|
||||
</div>
|
||||
|
||||
<form method="post" action="/verbrauchsausweis/erstellen">
|
||||
@@ -91,7 +89,7 @@
|
||||
|
||||
<Label>A - Prüfung der Ausweisart</Label>
|
||||
|
||||
<Ausweisart bind:gebaeude={gebaeude} bind:ausweis={ausweis} />
|
||||
<Ausweisart bind:gebaeude bind:ausweis />
|
||||
|
||||
<hr />
|
||||
|
||||
@@ -116,7 +114,7 @@
|
||||
required
|
||||
data-msg-minlength="min. 5 Zeichen"
|
||||
data-msg-maxlength="max. 40 Zeichen"
|
||||
bind:value={gebaeude.strasse}
|
||||
bind:value={gebaeude.adresse}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -161,7 +159,7 @@
|
||||
autocomplete="off"
|
||||
data-rule-minlength="2"
|
||||
data-msg-minlength="min. 2 Zeichen"
|
||||
bind:value={gebaeude.wohnflaeche}
|
||||
bind:value={gebaeude.flaeche}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -173,7 +171,7 @@
|
||||
<select
|
||||
name="IGkeller"
|
||||
required
|
||||
bind:value={gebaeude.keller_beheizt}
|
||||
bind:value={ausweis.keller_beheizt}
|
||||
>
|
||||
<option>Bitte auswählen</option>
|
||||
<option value={false}>nicht vorhanden</option>
|
||||
@@ -202,7 +200,7 @@
|
||||
<Label>C - Eingabe von 3 zusammenhängenden Verbrauchsjahren</Label>
|
||||
|
||||
<div class="GRB">
|
||||
<Verbrauch bind:gebaeude={gebaeude} bind:ausweis={ausweis} />
|
||||
<Verbrauch bind:gebaeude bind:ausweis />
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
@@ -276,7 +274,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGversorgungssysteme1"
|
||||
bind:checked={gebaeude.energiequelle_2_nutzung[0]}
|
||||
bind:checked={ausweis.alternative_heizung}
|
||||
value="Heizung"
|
||||
/>Heizung</label
|
||||
>
|
||||
@@ -284,7 +282,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGversorgungssysteme2"
|
||||
bind:checked={gebaeude.energiequelle_2_nutzung[1]}
|
||||
bind:checked={ausweis.alternative_warmwasser}
|
||||
value="Warmwasser"
|
||||
/>Warmwasser</label
|
||||
>
|
||||
@@ -292,7 +290,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGversorgungssysteme3"
|
||||
bind:checked={gebaeude.energiequelle_2_nutzung[2]}
|
||||
bind:checked={ausweis.alternative_lueftung}
|
||||
value="Lüftung"
|
||||
/>Lüftung</label
|
||||
>
|
||||
@@ -300,7 +298,7 @@
|
||||
><input
|
||||
type="checkbox"
|
||||
name="IGversorgungssysteme4"
|
||||
bind:checked={gebaeude.energiequelle_2_nutzung[3]}
|
||||
bind:checked={ausweis.alternative_kuehlung}
|
||||
value="Kühlung"
|
||||
/>Kühlung</label
|
||||
>
|
||||
@@ -439,7 +437,7 @@
|
||||
>F - Bitte prüfen Sie hier die Angaben zum Sanierungszustand des
|
||||
Gebäudes</Label
|
||||
>
|
||||
<BilderZusatzsysteme gebaeude={gebaeude} />
|
||||
<BilderZusatzsysteme {gebaeude} {ausweis} />
|
||||
<hr />
|
||||
<div class="flex flex-row justify-between">
|
||||
<Hilfe />
|
||||
@@ -456,7 +454,7 @@
|
||||
</RawNotification>
|
||||
{/each}
|
||||
|
||||
{#if auditBedarfsausweisBenoetigt(gebaeude)}
|
||||
{#if auditBedarfsausweisBenoetigt(ausweis, gebaeude)}
|
||||
<RawNotification
|
||||
notification={{
|
||||
message: "Bedarfsausweis benötigt!",
|
||||
@@ -491,7 +489,7 @@
|
||||
</RawNotification>
|
||||
{/if}
|
||||
|
||||
{#if auditVerbrauchAbweichung(gebaeude).length > 0}
|
||||
{#if auditVerbrauchAbweichung(ausweis, gebaeude).length > 0}
|
||||
<RawNotification
|
||||
notification={{
|
||||
message: "Plausibilitätsprüfung",
|
||||
@@ -505,9 +503,9 @@
|
||||
type: "warning",
|
||||
}}
|
||||
>
|
||||
Die Abweichung der Verbräuche zwischen Zeitraum {auditVerbrauchAbweichung(
|
||||
Die Abweichung der Verbräuche zwischen Zeitraum {auditVerbrauchAbweichung(ausweis,
|
||||
gebaeude
|
||||
)[0]} und {auditVerbrauchAbweichung(gebaeude)[1]} beträgt mehr als 25%
|
||||
)[0]} und {auditVerbrauchAbweichung(ausweis, gebaeude)[1]} beträgt mehr als 25%
|
||||
und sie haben keinen Leerstand angegeben. Sind sie sich sicher, dass
|
||||
das stimmt?
|
||||
</RawNotification>
|
||||
@@ -1,17 +1,7 @@
|
||||
<script lang="ts">
|
||||
import i18next, { t } from "i18next";
|
||||
import HttpApi from "i18next-http-backend";
|
||||
import cookie from "cookiejs";
|
||||
import Cookies from "js-cookie"
|
||||
import { addNotification } from "@ibcornelsen/ui";
|
||||
|
||||
i18next.use(HttpApi).init({
|
||||
lng: i18next.language,
|
||||
fallbackLng: "de",
|
||||
backend: {
|
||||
loadPath: "/locales/{{lng}}/{{ns}}.json",
|
||||
}
|
||||
})
|
||||
|
||||
let email: string;
|
||||
let password: string;
|
||||
|
||||
@@ -32,8 +22,8 @@
|
||||
path: "/",
|
||||
expires: json.data.expires
|
||||
}
|
||||
cookie.set("token", json.data.token, options);
|
||||
cookie.set("expires", json.data.expires, options);
|
||||
Cookies.set("token", json.data.token, options);
|
||||
Cookies.set("expires", json.data.expires, options);
|
||||
localStorage.setItem("token", json.data.token);
|
||||
localStorage.setItem("expires", json.data.expires);
|
||||
window.location.href = "/user";
|
||||
@@ -56,6 +46,7 @@
|
||||
<div>
|
||||
<h4>Email</h4>
|
||||
<input
|
||||
class="px-2.5 py-1.5 rounded-lg border bg-gray-50"
|
||||
type="text"
|
||||
placeholder="Email"
|
||||
name="email"
|
||||
@@ -66,6 +57,7 @@
|
||||
<div>
|
||||
<h4>Passwort</h4>
|
||||
<input
|
||||
class="px-2.5 py-1.5 rounded-lg border bg-gray-50"
|
||||
type="password"
|
||||
placeholder="********"
|
||||
name="password"
|
||||
@@ -36,7 +36,7 @@
|
||||
<input
|
||||
type="text"
|
||||
placeholder="Email"
|
||||
class="formInput"
|
||||
class="px-2.5 py-1.5 rounded-lg border bg-gray-50"
|
||||
bind:value={email}
|
||||
required
|
||||
/>
|
||||
@@ -46,7 +46,7 @@
|
||||
<input
|
||||
type="password"
|
||||
placeholder="********"
|
||||
class="formInput"
|
||||
class="px-2.5 py-1.5 rounded-lg border bg-gray-50"
|
||||
bind:value={passwort}
|
||||
required
|
||||
/>
|
||||
@@ -1,9 +1,8 @@
|
||||
import { prisma } from "@ibcornelsen/database";
|
||||
import type { APIRoute } from "astro";
|
||||
import { ActionFailedError, MissingEntityError, error, success } from "src/lib/APIResponse";
|
||||
import { Ausweis } from "src/lib/Ausweis/Ausweis";
|
||||
import { Energiekennwerte } from "src/lib/Energiekennwerte";
|
||||
import { Gebaeude } from "src/lib/Gebaeude";
|
||||
import { db } from "src/lib/shared";
|
||||
import { z } from "zod";
|
||||
|
||||
const AusweisUploadChecker = z.object({
|
||||
@@ -83,54 +82,35 @@ export const post: APIRoute = async ({ request }) => {
|
||||
return error(validation.error.issues);
|
||||
}
|
||||
|
||||
let gebaeude, kennwerte, ausweis;
|
||||
let gebaeude, ausweis;
|
||||
if (body.gebaeude_uid) {
|
||||
gebaeude = await db("gebaeude")
|
||||
.update(body.gebaeude)
|
||||
.where("uid", body.gebaeude_uid)
|
||||
.returning(["uid", "id"]);
|
||||
gebaeude = await prisma.gebaeudeStammdaten.update({
|
||||
where: {
|
||||
uid: body.gebaeude_uid,
|
||||
},
|
||||
data: body.gebaeude,
|
||||
})
|
||||
} else {
|
||||
gebaeude = await db("gebaeude")
|
||||
.insert(body.gebaeude)
|
||||
.returning(["uid", "id"]);
|
||||
gebaeude = await prisma.gebaeudeStammdaten.create({
|
||||
data: body.gebaeude,
|
||||
})
|
||||
}
|
||||
|
||||
if (!gebaeude) {
|
||||
return ActionFailedError();
|
||||
}
|
||||
|
||||
if (body.kennwerte_uid) {
|
||||
kennwerte = await db("energiekennwerte")
|
||||
.update({ ...body.kennwerte, gebaeude_id: gebaeude[0].id })
|
||||
.where("uid", body.kennwerte_uid)
|
||||
.returning(["uid", "id"]);
|
||||
} else {
|
||||
kennwerte = await db("energiekennwerte")
|
||||
.insert({ ...body.kennwerte, gebaeude_id: gebaeude[0].id })
|
||||
.returning(["uid", "id"]);
|
||||
}
|
||||
|
||||
if (!kennwerte) {
|
||||
return ActionFailedError();
|
||||
}
|
||||
|
||||
if (body.ausweis_uid) {
|
||||
ausweis = await db("energieausweise")
|
||||
.update({
|
||||
...body.ausweis,
|
||||
gebaeude_id: gebaeude[0].id,
|
||||
energiekennwerte_id: kennwerte[0].id,
|
||||
})
|
||||
.where("uid", body.ausweis_uid)
|
||||
.returning(["uid", "id"]);
|
||||
ausweis = await prisma.verbrauchsausweisWohnen.update({
|
||||
where: {
|
||||
uid: body.ausweis_uid,
|
||||
},
|
||||
data: body.ausweis,
|
||||
})
|
||||
} else {
|
||||
ausweis = await db("energieausweise")
|
||||
.insert({
|
||||
...body.ausweis,
|
||||
gebaeude_id: gebaeude[0].id,
|
||||
energiekennwerte_id: kennwerte[0].id,
|
||||
})
|
||||
.returning(["uid", "id"]);
|
||||
ausweis = await prisma.verbrauchsausweisWohnen.create({
|
||||
data: body.ausweis,
|
||||
})
|
||||
}
|
||||
|
||||
if (!ausweis) {
|
||||
@@ -138,9 +118,8 @@ export const post: APIRoute = async ({ request }) => {
|
||||
}
|
||||
|
||||
return success({
|
||||
ausweis: ausweis[0],
|
||||
kennwerte: kennwerte[0],
|
||||
gebaeude: gebaeude[0],
|
||||
ausweis: ausweis,
|
||||
gebaeude: gebaeude,
|
||||
});
|
||||
};
|
||||
|
||||
@@ -153,29 +132,18 @@ export const get: APIRoute = async ({ request }) => {
|
||||
return error(validation.error.issues);
|
||||
}
|
||||
|
||||
let result = await db<{ gebaeude: Gebaeude, kennwerte: Energiekennwerte, ausweis: Ausweis}>("gebaeude")
|
||||
.select([
|
||||
db.raw("(json_agg(gebaeude)->0) AS gebaeude"),
|
||||
db.raw("(json_agg(energiekennwerte)->0) AS kennwerte"),
|
||||
db.raw("(json_agg(energieausweise)->0) AS ausweis"),
|
||||
])
|
||||
.leftJoin(
|
||||
"energiekennwerte",
|
||||
"energiekennwerte.gebaeude_id",
|
||||
"gebaeude.id"
|
||||
)
|
||||
.leftJoin(
|
||||
"energieausweise",
|
||||
"energieausweise.gebaeude_id",
|
||||
"gebaeude.id"
|
||||
)
|
||||
.where("gebaeude.uid", body.uid)
|
||||
.groupBy("gebaeude.id")
|
||||
.first();
|
||||
const ausweis = await prisma.verbrauchsausweisWohnen.findUnique({
|
||||
where: {
|
||||
uid: body.uid,
|
||||
},
|
||||
include: {
|
||||
gebaeude_stammdaten: true,
|
||||
}
|
||||
})
|
||||
|
||||
if (!result) {
|
||||
if (!ausweis) {
|
||||
return MissingEntityError("gebäude");
|
||||
}
|
||||
|
||||
return result;
|
||||
return success(ausweis);
|
||||
};
|
||||
@@ -4,7 +4,7 @@ import {
|
||||
error,
|
||||
success,
|
||||
} from "src/lib/APIResponse";
|
||||
import { db, prisma } from "src/lib/shared";
|
||||
import { prisma } from "@ibcornelsen/database";
|
||||
|
||||
export const get: APIRoute = async ({ url }) => {
|
||||
const body = url.searchParams
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
} from "src/lib/APIResponse";
|
||||
import * as path from "path";
|
||||
import * as fs from "fs";
|
||||
import { prisma } from "src/lib/shared";
|
||||
import { prisma } from "@ibcornelsen/database";
|
||||
|
||||
export const get: APIRoute = async ({ url }) => {
|
||||
const body = url.searchParams
|
||||
|
||||
@@ -9,7 +9,7 @@ import * as jimp from "jimp";
|
||||
import { z } from "zod";
|
||||
import * as path from "path";
|
||||
import * as fs from "fs";
|
||||
import { db, prisma } from "src/lib/shared";
|
||||
import { prisma } from "@ibcornelsen/database";
|
||||
|
||||
const ImageUploadChecker = z.object({
|
||||
data: z.string(),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { APIRoute } from "astro";
|
||||
import { success, MissingPropertyError, error } from "../../lib/APIResponse";
|
||||
import { validatePassword, hashPassword } from "../../lib/Password";
|
||||
import { validatePassword } from "../../lib/Password";
|
||||
import { User } from "../../lib/User";
|
||||
import moment from "moment";
|
||||
import { encodeToken } from "../../lib/JsonWebToken";
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
import BedarfsausweisContent from "#components/Bedarfsausweis/BedarfsausweisContent.svelte";
|
||||
|
||||
changeLanguage("en");
|
||||
---
|
||||
<AusweisLayout title="Bedarfsausweis erstellen | IBCornelsen">
|
||||
<BedarfsausweisContent client:load></BedarfsausweisContent>
|
||||
</AusweisLayout>
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
import Page from "../../verbrauchsausweis/erstellen.astro"
|
||||
const { props } = Astro
|
||||
---
|
||||
|
||||
<Page {...props} />
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
import Page from "../../verbrauchsausweis/index.astro"
|
||||
const { props } = Astro
|
||||
---
|
||||
|
||||
<Page {...props} />
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import Layout from "#layouts/Layout.astro";
|
||||
|
||||
changeLanguage("en");
|
||||
---
|
||||
|
||||
<Layout title="Für Entwickler - IBCornelsen">
|
||||
<h1>Warum das IBCornelsen?</h1>
|
||||
<p>Unser Unternehmen bietet eine weite Auswahl an Schnittstellen und damit einhergehenden Daten. Unsere API bietet uneingeschränkten Zugang zu Immobilien, Verbrauchsdaten und vielem Weiteren.</p>
|
||||
</Layout>
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import Layout from "#layouts/Layout.astro";
|
||||
|
||||
changeLanguage("en");
|
||||
---
|
||||
|
||||
<Layout title="FAQ - IBCornelsen"></Layout>
|
||||
@@ -1,366 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import { BoxWithHeading } from "@ibcornelsen/ui";
|
||||
import Widget from "#components/Widget.svelte";
|
||||
import Layout from "#layouts/Layout.astro";
|
||||
import FeatureCard from "#components/FeatureCard.svelte";
|
||||
|
||||
changeLanguage("en");
|
||||
---
|
||||
|
||||
<Layout title="Energieausweis online erstellen - Online Energieausweis">
|
||||
<h1>Energieausweis online erstellen</h1>
|
||||
|
||||
<Widget client:load />
|
||||
|
||||
<h2>GEG gilt ab 1. Mai 2021 und löst die EnEV ab</h2>
|
||||
<BoxWithHeading heading="Folgende Punkte ändern sich:">
|
||||
<ul>
|
||||
<li>
|
||||
Erhöhte Sorgfaltspflicht bei der Erstellung der Energieausweise.
|
||||
Insbesondere zur Einschätzung der Modernisierungsempfehlungen
|
||||
werden jetzt Fotos der relevanten Bereiche von Dach, Fenster,
|
||||
Heizung und Außenwand benötigt.
|
||||
</li>
|
||||
<li>
|
||||
Die Primärenergiefaktoren zur Ermittlung des Gebäudekennwerts
|
||||
werden jetzt direkt im GEG (§22 Primärenergiefaktoren) geregelt.
|
||||
Dadurch wird mehr Transparenz und Nachvollziehbarkeit
|
||||
geschaffen. Auch findet die Verwendung von Biogas aus dem
|
||||
Erdgasnetz jetzt angemessen Berücksichtigung.
|
||||
</li>
|
||||
<li>
|
||||
Die lokale Erzeugung von Strom über eine PV-Anlage wird besser
|
||||
berücksichtigt und kann vom Jahres-Primärenergiebedarf abgezogen
|
||||
werden (bis 45%).
|
||||
</li>
|
||||
<li>
|
||||
Die Angabe der CO2-Emission des Gebäudes im Energieausweis wird
|
||||
verplichtend eingeführt.
|
||||
</li>
|
||||
</ul>
|
||||
</BoxWithHeading>
|
||||
|
||||
<h2>
|
||||
Energieausweis nach aktueller GEG (vormals EnEV) geprüft vom Diplom
|
||||
Ingenieur
|
||||
</h2>
|
||||
<div class="right-img">
|
||||
<img
|
||||
title="Energieausweis online erstellen"
|
||||
src="images/Bedarfsausweis-Wohngebaeude-Beispiel.jpg"
|
||||
alt="Energieausweis online erstellen"
|
||||
/>
|
||||
</div>
|
||||
<hr />Sie möchten Ihren <strong>Energieausweis online erstellen</strong>?
|
||||
Auf dieser Seite finden Sie alle nötigen Informationen hierzu. Sollten Sie
|
||||
sich nicht sicher sein <a href="/energieausweis-welcher-energieausweis.php"
|
||||
>welchen Energieausweis</a
|
||||
> Sie benötigen, können Sie sich bei uns umfassend informieren. Wir haben fürs
|
||||
Sie alle wichtigen Informationen rund um die GEG und zur
|
||||
<a href="/energieausweis-pflicht.php">Energieausweis Pflicht</a> zusammengetragen.
|
||||
Zusätzlich haben wir die entscheidenden Informationen auf übersichtlichen Merkblättern
|
||||
im PDF Format zum Download zusammengefasst. Sollten Sie noch Fragen zum Thema
|
||||
Energieausweis online erstellen haben, stehen wir Ihnen gerne telefonisch unter
|
||||
folgender Nummer: 040/209 339 850 zur Verfügung.
|
||||
<hr />Mit dem <strong>Energieausweis</strong> werden Wohngebäude und Nichtwohngebäude
|
||||
nach den Vorgaben der Energieeinsparverordnung <a
|
||||
href="/enev-zusammenfassung">EnEV</a
|
||||
>
|
||||
energetisch bewertet. Das <a href="https://www.dibt.de/" target="blank"
|
||||
>DIBt</a
|
||||
>
|
||||
(Deutsches Institut für Bautechnik) regelt die Grundsätze zur Ausstellung, Berechnung
|
||||
und der Qualitätssicherung. Der Energieausweis beschreibt die entsprechenden
|
||||
Energiekennwerte auf einer Farbskala, grün (A+/Effizienzhaus), gelb (D) und rot
|
||||
(H / unsaniert). Es wird grundsätzlich zwischen zwei Energieausweisarten unterschieden:
|
||||
<hr />
|
||||
<div
|
||||
style="border-left: 5px solid #f5b68c; border-right: 5px solid #f5b68c;"
|
||||
>
|
||||
<ul id="start_ul">
|
||||
<li>
|
||||
Der verbrauchsbasierte Energieausweis wird als <a
|
||||
title="Verbrauchsausweis"
|
||||
href="/verbrauchsausweis/"
|
||||
><strong>Verbrauchsausweis</strong></a
|
||||
> bezeichnet. Dies ist der „kleine“ Energieausweis und kann bei Vermietung
|
||||
und Verkauf in den meisten Fällen verwendet werden. Hier gehts direkt
|
||||
zum Eingabeformular <br />→ <a
|
||||
title="Energieausweis online erstellen - Verbrauchsausweis"
|
||||
href="/energieausweis-erstellen/verbrauchsausweis-erstellen.php"
|
||||
>Energieausweis online erstellen</a
|
||||
>
|
||||
<hr />
|
||||
</li>
|
||||
<li>
|
||||
Der bedarfsbasierte Energieausweis wird als <a
|
||||
title="Bedarfsausweis"
|
||||
href="/bedarfsausweis/"><strong>Bedarfsausweis</strong></a
|
||||
>bezeichnet. Dies ist der „große“ Energieausweis und kann immer
|
||||
verwendet werden. Bei Neubau und Modernisierung ist er zwingend
|
||||
vorgeschrieben. Hier gehts direkt zum Eingabeformular <br />→ <a
|
||||
title="Energieausweis online erstellen - Bedarfsausweis"
|
||||
href="/energieausweis-erstellen/bedarfsausweis-erstellen.php"
|
||||
>Energieausweis online erstellen</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="grid grid-cols-3 gap-4">
|
||||
<FeatureCard heading="Verbrauchsausweis Wohngebäude" price={45} href="/verbrauchsausweis">
|
||||
<div class="rpt_feature">Unsere Leistungen:</div>
|
||||
<div class="rpt_feature">Prüfung durch Diplom Ingenieur</div>
|
||||
<div class="rpt_feature">Energieausweis Vorschau als PDF</div>
|
||||
<div class="rpt_feature">Ausweisdokument als PDF per E-Mail</div>
|
||||
<div class="rpt_feature">Registrierung beim DiBt</div>
|
||||
<div class="rpt_feature">Bearbeitung innhalb 24h</div>
|
||||
<div class="rpt_feature">rechtssicher nach aktueller EnEV</div>
|
||||
<div class="rpt_feature">telefonische Beratung</div>
|
||||
</FeatureCard>
|
||||
<FeatureCard heading="Bedarfsausweis Wohngebäude" price={75} href="/bedarfsausweis">
|
||||
<div class="rpt_feature">Unsere Leistungen:</div>
|
||||
<div class="rpt_feature">Prüfung durch Diplom Ingenieur</div>
|
||||
<div class="rpt_feature">Energieausweis Vorschau als PDF</div>
|
||||
<div class="rpt_feature">Ausweisdokument als PDF per E-Mail</div>
|
||||
<div class="rpt_feature">Registrierung beim DiBt</div>
|
||||
<div class="rpt_feature">Bearbeitung innhalb 24h</div>
|
||||
<div class="rpt_feature">rechtssicher nach aktueller EnEV</div>
|
||||
<div class="rpt_feature">telefonische Beratung</div>
|
||||
</FeatureCard>
|
||||
<FeatureCard heading="Verbrauchsausweis Gewerbe" price={65} href="/verbrauchsausweis-gewerbe">
|
||||
<div class="rpt_feature">Unsere Leistungen:</div>
|
||||
<div class="rpt_feature">Prüfung durch Diplom Ingenieur</div>
|
||||
<div class="rpt_feature">Energieausweis Vorschau als PDF</div>
|
||||
<div class="rpt_feature">Ausweisdokument als PDF per E-Mail</div>
|
||||
<div class="rpt_feature">Registrierung beim DiBt</div>
|
||||
<div class="rpt_feature">Bearbeitung innhalb 24h</div>
|
||||
<div class="rpt_feature">rechtssicher nach aktueller EnEV</div>
|
||||
<div class="rpt_feature">telefonische Beratung</div>
|
||||
</FeatureCard>
|
||||
</div>
|
||||
<hr />
|
||||
|
||||
<h2>Unterschied: Verbrauchsausweis und Bedarfsausweis</h2> Grundsätzlich unterscheidet
|
||||
man beim Energieausweis zwischen Verbrauchsausweis und Bedarfsausweis.<h3>
|
||||
Was ist ein Verbrauchsausweis?
|
||||
</h3>
|
||||
Der Verbrauchsausweis gibt den Energieverbrauch der Gebäudebewohner in den vergangenen
|
||||
drei Jahren für Heizung und Warmwasserbereitung an. Um den <a
|
||||
href="/enev-zusammenfassung#§-19-EnEV"
|
||||
>Energieverbrauchskennwert zu ermitteln</a
|
||||
>, wird der tatsächliche Energieverbrauch mithilfe eines standortbezogenen
|
||||
Klimafaktors bereinigt. Der Durchschnittswert wird dann durch die sogenannte
|
||||
energetische Gebäudenutzfläche (An) geteilt. So führt beispielsweise ein
|
||||
hoher Verbrauch in einem einzelnen harten Winter nicht zu einer schlechteren
|
||||
Beurteilung des Gebäudes. Der tatsächliche Energieverbrauch in einem Gebäude
|
||||
oder einer Wohnung kann aufgrund des Witterungseinflusses vom
|
||||
Energieverbrauchskennwert abweichen.Das Ergebnis im Verbrauchsausweis ist
|
||||
stark vom individuellen Nutzungsverhalten der Bewohner abhängig. Wird in
|
||||
einem energetisch schlechten Gebäude kaum geheizt, so kann der
|
||||
Energieausweis trotzdem sehr gut ausfallen.<h3>
|
||||
Was ist ein Bedarfsausweis?
|
||||
</h3> Der Bedarfsausweis entsteht auf Grundlage einer technischen <a
|
||||
href="/enev-zusammenfassung#§-18-EnEV"
|
||||
>Analyse der Bausubstanz und der Heizungsanlage eines Gebäudes</a
|
||||
> und ist unabhängig vom individuellen Nutzerverhalten. Die Farbverlaufsskala
|
||||
im Bedarfsausweis weist zwei verschiedene Werte aus, die sehr unterschiedlich
|
||||
ausfallen können – einen Wert für den Endenergiebedarf und einen für den Primärenergiebedarf.
|
||||
Zusätzlich wird noch ein Kennwert für die energetische Qualität der Gebäudehülle
|
||||
dargestellt.Der Energiebedarf gibt die nach technischen Regeln berechnete, vom
|
||||
konkreten Gebäude jährlich benötigte Energiemenge für Heizung, Lüftung und Warmwasserbereitung
|
||||
an. Dabei werden bei der Berechnung standardisierte Randbedingungen – beispielsweise
|
||||
eine Innentemperatur von 19 Grad im beheizten Bereich des Gebäudes – zugrunde
|
||||
gelegt. Am Endenergiebedarf sollten sich Hausbewohner orientieren, wenn sie ihren
|
||||
künftigen Energieverbrauch und die Energiekosten abschätzen wollen.Der Primärenergiebedarf
|
||||
bildet die Gesamtenergieeffizienz eines Gebäudes ab. Er berücksichtigt neben
|
||||
der Endenergie auch die so genannte „Vorkette“ (Erkundung, Gewinnung, Verteilung,
|
||||
Umwandlung) der jeweils eingesetzten Energieträger (z.B. Heizöl, Gas, Strom,
|
||||
erneuerbare Energien).Besonders niedrig fällt der Primärenergiebedarf aus, wenn
|
||||
erneuerbare Energien (solare Strahlungsenergie, Geothermie, Energie aus Biomasse)
|
||||
für die Energieversorgung im Gebäude eingesetzt werden. Am Primärenergiebedarf
|
||||
können Verbraucher erkennen, wie umweltfreundlich ihr Gebäude ist.<h3>
|
||||
Fazit – Verbrauchsausweis / Bedarfsausweis
|
||||
</h3> Geht es um den tatsächlichen Verbrauch der Energie, der den Aufwand für
|
||||
Heizung und zentrale Warmwasserbereitung der vergangenen drei Jahre berücksichtigt,
|
||||
wird der Energieverbrauchskennwert für den Verbrauchsausweis ermittelt. Bei gewerblichen
|
||||
Objekten wird zusätzlich der Verbrauch für Beleuchtung und Klimatisierung mit
|
||||
eingerechnet. Anhand der Zeiträume und der Lage des Gebäudes (Postleitzahl) werden
|
||||
diese Daten ausgewertet und sowohl zeit-, als auch klimabereinigt zur Bewertung
|
||||
der vorhandenen energetischen Qualität herangezogen.Für das Ausstellen des Bedarfsausweis
|
||||
wird der rechnerische Energiebedarf unter standardisierten Randbedingungen benötigt.
|
||||
Daten rund um Bausubstanz, Gebäudehülle und Heizanlage fließen in die Berechnung
|
||||
mit ein. Bedarfsausweise widerspiegeln die tatsächliche energetische Qualität
|
||||
eines Gebäudes damit wesentlich besser als die Verbrauchsausweise.
|
||||
|
||||
<hr />
|
||||
<div class="start_infobox" title="Verbrauchsausweis Wohngebäude">
|
||||
<div class="start_infobox_inside IB_VA_WG">
|
||||
<img
|
||||
alt="Energieausweis online erstellen - Verbrauchsausweis"
|
||||
title="Energieausweis online erstellen - Verbrauchsausweis"
|
||||
class="start_infobox_img"
|
||||
src="/images/energieausweis-online-erstellen-verbrauchsausweis.png"
|
||||
/>
|
||||
<div class="title">Verbrauchsausweis Wohngebäude</div>
|
||||
<hr />
|
||||
<ul>
|
||||
<li>
|
||||
3 zusammenhängende Heizenergieverbräuche müssen eingegeben
|
||||
werden.
|
||||
</li>
|
||||
<li>
|
||||
Wohnfläche, Baujahr Gebäude und Baujahr Heizung müssen
|
||||
eingegeben werden.
|
||||
</li>
|
||||
<li>
|
||||
<div class="start_infobox_link">
|
||||
<a
|
||||
title="Verbrauchsausweis"
|
||||
href="/verbrauchsausweis/verbrauchsausweis-wohngebaeude.php"
|
||||
>Verbrauchsausweis</a
|
||||
>
|
||||
bei fast allen Gebäuden möglich. (Baujahr > 1977 - Vermietung/Verkauf)
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="start_infobox_button">
|
||||
<a
|
||||
title="Verbrauchsausweis erstellen"
|
||||
href="/energieausweis-erstellen/verbrauchsausweis-erstellen.php"
|
||||
>Jetzt Verbrauchsausweis erstellen</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="start_infobox BA-WG" title="Bedarfssausweis Wohngebäude">
|
||||
<div class="start_infobox_inside">
|
||||
<img
|
||||
alt="Energieausweis online erstellen - Bedarfsausweis"
|
||||
title="Energieausweis online erstellen - Bedarfsausweis"
|
||||
class="start_infobox_img"
|
||||
src="/images/energieausweis-online-erstellen-verbrauchsausweis.png"
|
||||
/>
|
||||
<div class="title">Bedarfsausweis Wohngebäude</div>
|
||||
<hr />
|
||||
<ul>
|
||||
<li>
|
||||
Die verwendete Heizungsanlage (Standardkessel,
|
||||
Brennwertkessel, etc.) muß eingegeben werden.
|
||||
</li>
|
||||
<li>
|
||||
Grundrissgeometrie sowie Baujahr Heizung und Gebäude müssen
|
||||
eingegeben werden.
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
title="Bedarfsausweis"
|
||||
href="/bedarfsausweis/bedarfsausweis-wohngebaeude.php"
|
||||
>Bedarfsausweis</a
|
||||
> bei allen Gebäuden möglich. Die Berechnung ist umfangreicher
|
||||
und besser vergleichbar.
|
||||
</li>
|
||||
</ul>
|
||||
<div class="start_infobox_button">
|
||||
<a
|
||||
title="Bedarfsausweis erstellen"
|
||||
href="/energieausweis-erstellen/bedarfsausweis-erstellen.php"
|
||||
>Jetzt Bedarfsausweis erstellen</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="start_infobox VANW_WG" title="Bedarfsausweis Gewerbe">
|
||||
<div class="start_infobox_inside">
|
||||
<img
|
||||
alt="Energieausweis online erstellen - Bedarfsausweis Gewerbe"
|
||||
title="Energieausweis online erstellen - Bedarfsausweis Gewerbe"
|
||||
class="start_infobox_img"
|
||||
src="/images/energieausweis-online-erstellen-verbrauchsausweis-gewerbe.png"
|
||||
/>
|
||||
<div class="title">Bedarfsausweis Gewerbe</div>
|
||||
<hr />
|
||||
<ul>
|
||||
<li>
|
||||
Aktuelle Grundriss- und Ansichtspläne werden für die
|
||||
Zonierung benötigt.
|
||||
</li>
|
||||
<li>
|
||||
Baubeschreibung (z.B. aus der Baugenehmigung) mit Angabe der
|
||||
verwendeten Baustoffe und TGA.
|
||||
</li>
|
||||
<li>
|
||||
Angabe vom Baujahr der Heizung, Gebäude und Klimaanlage.
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
title="Bedarfsausweis Gewerbe"
|
||||
href="/bedarfsausweis/bedarfsausweis-gewerbe.php"
|
||||
>Bedarfsausweis Gewerbe</a
|
||||
> bei allen Nichtwohngebäuden möglich (kann immmer verwendet
|
||||
werden).
|
||||
</li>
|
||||
</ul>
|
||||
<div class="start_infobox_button">
|
||||
<a
|
||||
href="/energieausweis-erstellen/bedarfsausweis-gewerbe-anfragen.php"
|
||||
title="Bedarfsausweis Gewerbe anfragen"
|
||||
>Jetzt Bedarfsausweis Gewerbe anfragen</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
<h2>Energieausweis online erstellen</h2> Soll Wohneigentum veräußert oder bauliches
|
||||
Teileigentum zum Erwerb angeboten werden, muss dem möglichen Käufer oder Leasingnehmer
|
||||
auf Verlangen unverzüglich ein
|
||||
<a href="enev-zusammenfassung#§-16a-EnEV">Energieausweis gezeigt werden</a>.
|
||||
In den meisten Fällen ist hier ein Verbrauchsausweis ausreichend. Auch
|
||||
Mietern oder Pächtern soll der Energieausweis unmittelbaren Aufschluss über
|
||||
die energetischen Bedingungen des Gebäudes aufzeigen.Kommt der Anbieter der
|
||||
offerierten Immobilie diesem Auftrag nach der Energieeinsparverordnung nicht
|
||||
nach, drohen Bußgelder bis zu 15 000 Euro. Als Ausnahmen gelten Gebäude mit
|
||||
nicht mehr als 50 m² Fläche sowie Baudenkmäler (<a
|
||||
href="enev-zusammenfassung#§-16-EnEV">§ 16 Abs. 4 EnEV</a
|
||||
>).Die Deutsche Energie-Agentur GmbH (<a
|
||||
href="https://www.dena.de/"
|
||||
target="blank">dena</a
|
||||
>) empfiehlt bei Wohngebäuden generell den Bedarfsausweis. Er erlaubt eine
|
||||
nutzerunabhängige Bewertung des Gebäudes. Zusätzlich können bei der
|
||||
Erstellung eines Bedarfsausweises die Empfehlungen für Modernisierungen auf
|
||||
der Basis einer technischen Analyse des Gebäudes ermittelt werden.
|
||||
<hr />
|
||||
<h2>Zusammenfassung: Was ist ein Energieausweis?</h2>
|
||||
<ul id="start_ul_1">
|
||||
<li>
|
||||
Der Gesetzgeber hat zwei Arten des Energieausweises bestimmt: Den
|
||||
Verbrauchsausweis und den Bedarfsausweis.
|
||||
</li>
|
||||
<li>
|
||||
Je nach Gebäudeart, Baujahr, Nutzungsart gilt es verschiedene
|
||||
Kriterien für den Energieausweis zu beachten.
|
||||
</li>
|
||||
<li>
|
||||
Der Energieausweis ist ein Mittel, das als Starter für
|
||||
Energiesparmaßnahmen definiert werden kann.
|
||||
</li>
|
||||
<li>
|
||||
Mit Hilfe des Energieausweises kann sich der Marktwert einer
|
||||
Immobilie erhöhen.
|
||||
</li>
|
||||
<li>
|
||||
Der Energieausweis offenbart bauliche Mängel, die eine
|
||||
Energieverschwendung mit sich bringen.
|
||||
</li>
|
||||
<li>
|
||||
Im Energieausweis werden Sanierungs- bzw. Modernisierungsvorschläge
|
||||
dokumentiert.
|
||||
</li>
|
||||
<li>
|
||||
Anhand des Energiepasses lässt sich der energetische Zustand
|
||||
verschiedener Gebäude miteinander vergleichen.
|
||||
</li>
|
||||
</ul>
|
||||
</Layout>
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import Kaufabschluss from "#components/Kaufabschluss/Kaufabschluss.svelte";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
|
||||
changeLanguage("en");
|
||||
---
|
||||
|
||||
<AusweisLayout title="Kaufabschluss Verbrauchsausweis - IBCornelsen">
|
||||
<Kaufabschluss client:load></Kaufabschluss>
|
||||
</AusweisLayout>
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import Kundendaten from "#components/Ausweis/Kundendaten.svelte";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
|
||||
changeLanguage("en");
|
||||
---
|
||||
|
||||
<AusweisLayout title="Kundendaten Aufnehmen - IBCornelsen">
|
||||
<Kundendaten client:load></Kundendaten>
|
||||
</AusweisLayout>
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import LoginView from "../../components/LoginView.svelte";
|
||||
import Layout from "../../layouts/Layout.astro";
|
||||
|
||||
changeLanguage("en");
|
||||
|
||||
const token = Astro.cookies.get("token").value;
|
||||
const expires = Astro.cookies.get("expires").number();
|
||||
const now = moment().unix();
|
||||
if (token && now < expires) {
|
||||
return Astro.redirect(`/user`);
|
||||
}
|
||||
---
|
||||
|
||||
<Layout title="Login">
|
||||
<LoginView client:only></LoginView>
|
||||
</Layout>
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
|
||||
changeLanguage("en");
|
||||
|
||||
Astro.cookies.delete("token");
|
||||
Astro.cookies.delete("expires");
|
||||
return Astro.redirect("/");
|
||||
---
|
||||
@@ -1,247 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import { Ausweis } from "src/lib/Ausweis";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import Checkbox from "#components/Checkbox.svelte";
|
||||
import PDFHeader from "#components/PDF/PDFHeader.svelte";
|
||||
import PDFSectionHeader from "#components/PDF/PDFSectionHeader.svelte";
|
||||
import PDFLayout from "#layouts/PDFLayout.astro";
|
||||
|
||||
changeLanguage("en");
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
if (!base64) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
const ausweis = Verbrauchsausweis.fromBase64(base64);
|
||||
if (!ausweis) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
---
|
||||
|
||||
<PDFLayout title="Ansichtsausweis">
|
||||
<div class="flex flex-col gap-20">
|
||||
<div class="flex flex-col gap-2">
|
||||
<PDFHeader></PDFHeader>
|
||||
<PDFSectionHeader number={1}>
|
||||
<p class="text-xs">
|
||||
Gültig bis: <span
|
||||
>{
|
||||
moment().add("10", "years").locale("de").format("DD. MMM. YYYY")
|
||||
}</span>
|
||||
</p>
|
||||
<p class="text-xs">Ausweis ID <span>1293819</span></p>
|
||||
<p class="text-xs">
|
||||
Registriernummer wird nach Zahlungseingang vergeben
|
||||
</p>
|
||||
</PDFSectionHeader>
|
||||
<div
|
||||
class="border-4 border-pdf-yellow-bright bg-pdf-yellow-light rounded-lg"
|
||||
>
|
||||
<h2>Gebäude</h2>
|
||||
<div class="flex flex-col">
|
||||
<div class="flex flex-row">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Gebäudetyp</td>
|
||||
<td>{ausweis.objekt_typ}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Adresse</td>
|
||||
<td>{ausweis.objekt_strasse}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gebäudeteil</td>
|
||||
<td>{ausweis.objekt_gebaeudeteil}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Baujahr Gebäude ³</td>
|
||||
<td>{ausweis.baujahr_gebaeude}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td
|
||||
>Baujahr Wärmeerzeuger <sup>3</sup>
|
||||
<sup>4</sup></td
|
||||
>
|
||||
<td>{ausweis.baujahr_anlage}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Anzahl Wohnungen</td>
|
||||
<td>{ausweis.anzahl_einheiten}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gebäudenutzfläche (A<sub>N</sub>)</td>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>192m²</td>
|
||||
<td
|
||||
class="flex flex-row items-center h-full w-full gap-2 pl-2"
|
||||
>
|
||||
<input type="checkbox" />
|
||||
nach § 19 EnEV aus der Wohnfläche ermittelt
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td
|
||||
>Wesentliche Energieträger für<br /> Heizung und
|
||||
Warmwasser <sup>3</sup></td
|
||||
>
|
||||
<td>Erdgas, BraunkohleBraunkohle, Strommix</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="w-[35%]">
|
||||
<img src="" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<table></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<h2>
|
||||
Hinweise zu den Angaben über die energetische Qualität des
|
||||
Gebäudes
|
||||
</h2>
|
||||
<div class="bg-white w-full">
|
||||
<p>
|
||||
Die energetische Qualität eines Gebäudes kann durch die
|
||||
Berechnung des <strong>Energiebedarfs</strong> unter Annahme
|
||||
von standardisierten Randbedingungen oder durch die Auswertung
|
||||
des <strong>Energieverbrauchs</strong> ermittelt werden. Als
|
||||
Bezugsfläche dient die energetische Gebäudenutzfläche nach der
|
||||
EnEV, die sich in der Regel von den allgemeinen Wohnflächenangaben
|
||||
unterscheidet. Die angegebenen Vergleichswerte sollen überschlägige
|
||||
Vergleiche ermöglichen (<strong
|
||||
>Erläuterungen - siehe Seite 5</strong
|
||||
>). Teil des Energieausweises sind die
|
||||
Modernisierungsempfehlungen (Seite 4).
|
||||
</p>
|
||||
<Checkbox checked={true}>
|
||||
Der Energieausweis wurde auf der Grundlage von Berechnungen
|
||||
des <strong>Energiebedarfs</strong> erstellt (Energiebedarfsausweis).
|
||||
Die Ergebnisse sind auf <strong>Seite 2</strong> dargestellt.
|
||||
Zusätzliche Informationen zum Verbrauch sind freiwillig.
|
||||
</Checkbox>
|
||||
<Checkbox checked={false}>
|
||||
Der Energieausweis wurde auf der Grundlage von Auswertungen
|
||||
des <strong>Energieverbrauchs</strong> erstellt (Energieverbrauchsausweis).
|
||||
Die Ergebnisse sind auf <strong>Seite 3</strong> dargestellt.
|
||||
</Checkbox>
|
||||
<div class="flex flex-row justify-between items-center w-[80%]">
|
||||
<p>Datenerhebung Bedarf/Verbrauch durch</p>
|
||||
<Checkbox checked={true}>Eigentümer</Checkbox>
|
||||
<Checkbox checked={false}>Aussteller</Checkbox>
|
||||
</div>
|
||||
<Checkbox>
|
||||
Dem Energieausweis sind zusätzliche Informationen zur
|
||||
energetischen Qualität beigefügt (freiwillige Angabe).
|
||||
</Checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<h2>Hinweise zur Verwendung des Energieausweises</h2>
|
||||
<p class="bg-white">
|
||||
Der Energieausweis dient lediglich der Information. Die Angaben
|
||||
im Energieausweis beziehen sich auf das gesamte Wohngebäude oder
|
||||
den oben bezeichneten Gebäudeteil. Der Energieausweis ist
|
||||
lediglich dafür gedacht, einen überschlägigen Vergleich von
|
||||
Gebäuden zu ermöglichen.
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row gap-2">
|
||||
<div class="bg-pdf-yellow-light rounded-lg p-2 w-full h-20">
|
||||
<p>Aussteller:</p>
|
||||
</div>
|
||||
<div class="bg-pdf-yellow-light rounded-lg p-2 w-full h-20"></div>
|
||||
</div>
|
||||
<div class="flex flex-row flex-wrap">
|
||||
<p>
|
||||
<sup>1</sup> Datum der angewendeten EnEV, gegebenenfalls angewendeten
|
||||
Änderungsverordnung zur EnEV
|
||||
</p>
|
||||
<p>
|
||||
<sup>2</sup> Bei nicht rechtzeitiger Zuteilung der Registriernummer
|
||||
(§ 17 Absatz 4 Satz 4 und 5 EnEV) ist das Datum der Antragstellung
|
||||
einzutragen; die Registriernummer ist nach deren Eingang nachträglich
|
||||
einzusetzen.
|
||||
</p>
|
||||
<p><sup>3</sup> Mehrfachangaben möglich</p>
|
||||
<p><sup>4</sup> bei Wärmenetzen Baujahr der Übergabestation</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col gap-2">
|
||||
<PDFHeader></PDFHeader>
|
||||
<PDFSectionHeader number={2}>
|
||||
<p>Berechneter Energiebedarf des Gebäudes</p>
|
||||
</PDFSectionHeader>
|
||||
<div
|
||||
class="box"
|
||||
>
|
||||
<h2>Energiebedarf</h2>
|
||||
<div class="bg-white w-full flex flex-col">
|
||||
<div class="flex flex-col items-end text-center">
|
||||
<div class="flex flex-row">
|
||||
<span class="bg-gray-300 p-0.5">200</span>
|
||||
<span>kg/(m²a)</span>
|
||||
</div>
|
||||
<span>CO² Treibhausgas Emissionen</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</PDFLayout>
|
||||
|
||||
<style is:global>
|
||||
table {
|
||||
@apply w-full h-full;
|
||||
}
|
||||
|
||||
td > table td {
|
||||
@apply px-0 py-0 border-t-0 border-b-0;
|
||||
}
|
||||
|
||||
td:has(table) {
|
||||
@apply p-0;
|
||||
}
|
||||
|
||||
td > table td:first-child {
|
||||
@apply border-l-0;
|
||||
}
|
||||
|
||||
td > table td:last-child {
|
||||
@apply border-r-0;
|
||||
}
|
||||
|
||||
td {
|
||||
@apply border border-black px-1 text-xs py-0.5;
|
||||
}
|
||||
|
||||
td:not(:first-child) {
|
||||
@apply bg-white;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply font-bold text-sm;
|
||||
}
|
||||
|
||||
p,
|
||||
label {
|
||||
@apply text-xs;
|
||||
}
|
||||
|
||||
.box {
|
||||
@apply border-4 border-pdf-yellow-bright bg-pdf-yellow-light rounded-lg;
|
||||
}
|
||||
|
||||
.box > * {
|
||||
@apply px-1 py-0.5;
|
||||
}
|
||||
</style>
|
||||
@@ -1,253 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { Dachgeschoss } from "src/lib/Ausweis/types";
|
||||
import Checkbox from "#components/Checkbox.svelte";
|
||||
import DatenblattFooter from "#components/DatenblattFooter.svelte";
|
||||
import DatenblattHeader from "#components/DatenblattHeader.svelte";
|
||||
import PDFHeader from "#components/PDF/PDFHeader.svelte";
|
||||
import PDFSectionHeader from "#components/PDF/PDFSectionHeader.svelte";
|
||||
import PDFLayout from "#layouts/PDFLayout.astro";
|
||||
|
||||
changeLanguage("en");
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
if (!base64) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
const ausweis = Verbrauchsausweis.fromBase64(base64);
|
||||
if (!ausweis) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
---
|
||||
|
||||
<PDFLayout title="Datenblatt">
|
||||
<div class="flex flex-col gap-20">
|
||||
<div class="flex flex-col gap-4">
|
||||
<DatenblattHeader></DatenblattHeader>
|
||||
<div class="px-12 py-20 flex flex-col gap-2">
|
||||
<div class="flex flex-row justify-between items-center">
|
||||
<h2>Datenblatt Energieausweis</h2>
|
||||
<h2>Ausweis ID: </h2>
|
||||
</div>
|
||||
<h3>Gebäudedaten:</h3>
|
||||
<p>Adresse: {ausweis.objekt_strasse}, {ausweis.objekt_plz} {ausweis.objekt_ort}</p>
|
||||
<div class="flex justify-between">
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Neubau"}>Neubau</Checkbox>
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Vermietung" || ausweis.ausstellgrund == "Verkauf"}>Vermietung/Verkauf</Checkbox>
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Modernisierung"}>Modernisierung</Checkbox>
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Sonstiges"}>Sonstiges</Checkbox>
|
||||
</div>
|
||||
<div class="flex justify-between gap-4">
|
||||
<table>
|
||||
<tbody><tr>
|
||||
<td>Baujahr Gebäude:</td>
|
||||
<td>{ausweis.baujahr_gebaeude}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Baujahr Heizung:</td>
|
||||
<td>{ausweis.baujahr_anlage}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wohnfläche:</td>
|
||||
<td>{ausweis.wohnflaeche}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lüftungskonzept:</td>
|
||||
<td>{ausweis.lueftungskonzept}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gebäudetyp:</td>
|
||||
<td>{ausweis.objekt_typ}</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
<table>
|
||||
<tbody><tr>
|
||||
<td>Dachgeschoss:</td>
|
||||
<td>{ausweis.dachgeschoss == Dachgeschoss.BEHEIZT ? "Beheizt" : (ausweis.dachgeschoss == Dachgeschoss.UNBEHEIZT ? "Unbeheizt" : "Nicht Vorhanden")}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beheizter Keller:</td>
|
||||
<td>{ausweis.keller_beheizt ? "Ja" : "Nein"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wohnungen:</td>
|
||||
<td>{ausweis.anzahl_einheiten}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Anlage zur Kühlung:</td>
|
||||
<td>{ausweis.wird_gekuehlt ? "Ja" : "Nein"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Leerstand:</td>
|
||||
<td>{ausweis.leerstand}%</td>
|
||||
</tr></tbody>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
<div class="flex flex-row gap-8">
|
||||
<div class="flex flex-col">
|
||||
<h2>Heizverbrauch</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("1", "year").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).add("1", "year").format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("2", "years").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).add("2", "years").format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("3", "years").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<h2>{ausweis.energietraeger_1}</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_1_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_2_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_3_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-row gap-8">
|
||||
<div class="flex flex-col">
|
||||
<h2>Heizverbrauch (Heizwert)</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("1", "year").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).add("1", "year").format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("2", "years").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).add("2", "years").format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("3", "years").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<h2>{ausweis.energietraeger_1}</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_1_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_2_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_3_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>Warmwasser enthalten: {ausweis.warmwasser_enthalten ? "Ja" : "Nein"}</p>
|
||||
</div>
|
||||
|
||||
<DatenblattFooter></DatenblattFooter>
|
||||
</div>
|
||||
<div class="flex flex-col gap-4">
|
||||
<DatenblattHeader></DatenblattHeader>
|
||||
<div class="px-12 py-20 flex flex-col gap-2">
|
||||
<h2>Modernisierungsstand</h2>
|
||||
<h3>Heizungsanlage</h3>
|
||||
<div class="grid grid-cols-3">
|
||||
<Checkbox checked={ausweis.versorgungssysteme[0]}>Zentral/Etage</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[1]}>Einzelöfen</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[2]}>Durchlauferhitzer</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[3]}>Standardkessel</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[4]}>Solarsystem für Warmwasser</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[5]}>Wärmepumpe</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[6]}>Niedertemperaturkessel</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[7]}>Brennwertkessel/Therme</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[8]}>Warmwasserrohre gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[9]}>Heizungsrohre gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[10]}>Zirkulation</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[11]}>Raumtemperraturregler</Checkbox>
|
||||
</div>
|
||||
<h3>Fenster/Dachfenster/Türen</h3>
|
||||
<div class="grid grid-cols-3">
|
||||
<Checkbox checked={ausweis.fenster_dach[0]}>Einfachglas</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[1]}>Doppelverglasung</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[2]}>Isolierverglasung</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[3]}>Dreifachverglasung</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[4]}>Alle Fenster dicht</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[5]}>Fenster teilweise undicht</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[6]}>Alle Türen dicht</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[7]}>Türen teilweise undicht</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[8]}>Rolladenkästen gedämmt</Checkbox>
|
||||
</div>
|
||||
<h3>Wärmedämmung</h3>
|
||||
<div class="grid grid-cols-2">
|
||||
<Checkbox checked={ausweis.daemmung[0]}>Außenwand gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[1]}>Kelleraußenwand gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[2]}>Kellerdecke gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[3]}>Dachgeschoss gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[4]}>Oberste Geschossdecke gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[5]}>Oberste Geschossdecke min. 12cm gedämmt</Checkbox>
|
||||
</div>
|
||||
<Checkbox checked={true}>Die Angaben sind richtig und entsprechen dem aktuellen Stand.</Checkbox>
|
||||
<Checkbox checked={true}>Ich habe die AGB gelesen und akzeptiert.</Checkbox>
|
||||
<p>Die Angaben auf diesem Datenblatt wurden uns übermittelt und werden zur Berechnung und
|
||||
Ausstellung des Ausweises herangezogen.</p>
|
||||
</div>
|
||||
<DatenblattFooter></DatenblattFooter>
|
||||
</div>
|
||||
</div>
|
||||
</PDFLayout>
|
||||
|
||||
<style is:global>
|
||||
table {
|
||||
@apply w-full h-full;
|
||||
}
|
||||
|
||||
td > table td {
|
||||
@apply px-0 py-0 border-t-0 border-b-0;
|
||||
}
|
||||
|
||||
td:has(table) {
|
||||
@apply p-0;
|
||||
}
|
||||
|
||||
td > table td:first-child {
|
||||
@apply border-l-0;
|
||||
}
|
||||
|
||||
td > table td:last-child {
|
||||
@apply border-r-0;
|
||||
}
|
||||
|
||||
td {
|
||||
@apply border border-black px-1 text-xs py-0.5;
|
||||
}
|
||||
|
||||
td:not(:first-child) {
|
||||
@apply bg-white;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply font-bold text-sm;
|
||||
}
|
||||
|
||||
p,
|
||||
label {
|
||||
@apply text-xs;
|
||||
}
|
||||
|
||||
.box {
|
||||
@apply border-4 border-pdf-yellow-bright bg-pdf-yellow-light rounded-lg;
|
||||
}
|
||||
|
||||
.box > * {
|
||||
@apply px-1 py-0.5;
|
||||
}
|
||||
</style>
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
import Page from "../../bedarfsausweis/index.astro"
|
||||
const { props } = Astro
|
||||
---
|
||||
|
||||
<Page {...props} />
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import RegisterView from "../../components/RegisterView.svelte";
|
||||
import Layout from "../../layouts/Layout.astro";
|
||||
|
||||
changeLanguage("en");
|
||||
|
||||
const token = Astro.cookies.get("token").value;
|
||||
const expires = Astro.cookies.get("expires").number();
|
||||
const now = moment().unix();
|
||||
if (token && now < expires) {
|
||||
return Astro.redirect("/user");
|
||||
}
|
||||
---
|
||||
|
||||
<Layout title="Login">
|
||||
<RegisterView client:only></RegisterView>
|
||||
</Layout>
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import { decodeToken } from "#lib/JsonWebToken";
|
||||
import { User } from "#lib/User";
|
||||
import UserLayout from "#layouts/UserLayout.astro";
|
||||
import AusweisCard from "#components/AusweisCard.svelte";
|
||||
import { Verbrauchsausweis } from "#lib/Ausweis/Verbrauchsausweis";
|
||||
|
||||
changeLanguage("en");
|
||||
|
||||
const token = Astro.cookies.get("token").value;
|
||||
const expires = Astro.cookies.get("expires").number();
|
||||
const now = moment().unix();
|
||||
if (!token || now > expires) {
|
||||
Astro.cookies.delete("token");
|
||||
Astro.cookies.delete("expires");
|
||||
return Astro.redirect(`/login`);
|
||||
}
|
||||
const parsed = decodeToken(token);
|
||||
const user = await User.fromUID(parsed.uid);
|
||||
if (!user) {
|
||||
Astro.cookies.delete("token");
|
||||
Astro.cookies.delete("expires");
|
||||
return Astro.redirect(`/login`);
|
||||
}
|
||||
---
|
||||
|
||||
<UserLayout title="Dashboard">
|
||||
<h1>Willkommen zurück <b>{user.email}</b></h1>
|
||||
|
||||
<h2>Ihre Ausweise</h2>
|
||||
<div class="grid grid-flow-row grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4">
|
||||
<AusweisCard client:load hidden={true} i={0} ausweis={new Verbrauchsausweis()}></AusweisCard>
|
||||
<AusweisCard client:load hidden={true} i={1} ausweis={new Verbrauchsausweis()}></AusweisCard>
|
||||
<AusweisCard client:load hidden={true} i={2} ausweis={new Verbrauchsausweis()}></AusweisCard>
|
||||
</div>
|
||||
</UserLayout>
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
import VerbrauchsausweisGewerbeContent from "#components/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeContent.svelte";
|
||||
|
||||
changeLanguage("en");
|
||||
---
|
||||
|
||||
<AusweisLayout title="Verbrauchsausweis Gewerbe erstellen | IBCornelsen">
|
||||
<VerbrauchsausweisGewerbeContent client:load></VerbrauchsausweisGewerbeContent>
|
||||
</AusweisLayout>
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
|
||||
changeLanguage("en");
|
||||
|
||||
console.log(Object.fromEntries(new URLSearchParams(await Astro.request.text())));
|
||||
return Astro.redirect("/kundendaten");
|
||||
---
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
import VerbrauchsausweisContent from "#components/Verbrauchsausweis/VerbrauchsausweisContent.svelte";
|
||||
|
||||
changeLanguage("en");
|
||||
|
||||
const uid = Astro.cookies.get("ausweis_uid").value;
|
||||
---
|
||||
|
||||
<AusweisLayout title="Verbrauchsausweis erstellen">
|
||||
<VerbrauchsausweisContent client:load uid={uid} />
|
||||
</AusweisLayout>
|
||||
@@ -1,10 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
import BedarfsausweisContent from "#components/Bedarfsausweis/BedarfsausweisContent.svelte";
|
||||
|
||||
changeLanguage("fr");
|
||||
---
|
||||
<AusweisLayout title="Bedarfsausweis erstellen | IBCornelsen">
|
||||
<BedarfsausweisContent client:load></BedarfsausweisContent>
|
||||
</AusweisLayout>
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import Layout from "#layouts/Layout.astro";
|
||||
|
||||
changeLanguage("fr");
|
||||
---
|
||||
|
||||
<Layout title="Für Entwickler - IBCornelsen">
|
||||
<h1>Warum das IBCornelsen?</h1>
|
||||
<p>Unser Unternehmen bietet eine weite Auswahl an Schnittstellen und damit einhergehenden Daten. Unsere API bietet uneingeschränkten Zugang zu Immobilien, Verbrauchsdaten und vielem Weiteren.</p>
|
||||
</Layout>
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import Layout from "#layouts/Layout.astro";
|
||||
|
||||
changeLanguage("fr");
|
||||
---
|
||||
|
||||
<Layout title="FAQ - IBCornelsen"></Layout>
|
||||
@@ -1,366 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import { BoxWithHeading } from "@ibcornelsen/ui";
|
||||
import Widget from "#components/Widget.svelte";
|
||||
import Layout from "#layouts/Layout.astro";
|
||||
import FeatureCard from "#components/FeatureCard.svelte";
|
||||
|
||||
changeLanguage("fr");
|
||||
---
|
||||
|
||||
<Layout title="Energieausweis online erstellen - Online Energieausweis">
|
||||
<h1>Energieausweis online erstellen</h1>
|
||||
|
||||
<Widget client:load />
|
||||
|
||||
<h2>GEG gilt ab 1. Mai 2021 und löst die EnEV ab</h2>
|
||||
<BoxWithHeading heading="Folgende Punkte ändern sich:">
|
||||
<ul>
|
||||
<li>
|
||||
Erhöhte Sorgfaltspflicht bei der Erstellung der Energieausweise.
|
||||
Insbesondere zur Einschätzung der Modernisierungsempfehlungen
|
||||
werden jetzt Fotos der relevanten Bereiche von Dach, Fenster,
|
||||
Heizung und Außenwand benötigt.
|
||||
</li>
|
||||
<li>
|
||||
Die Primärenergiefaktoren zur Ermittlung des Gebäudekennwerts
|
||||
werden jetzt direkt im GEG (§22 Primärenergiefaktoren) geregelt.
|
||||
Dadurch wird mehr Transparenz und Nachvollziehbarkeit
|
||||
geschaffen. Auch findet die Verwendung von Biogas aus dem
|
||||
Erdgasnetz jetzt angemessen Berücksichtigung.
|
||||
</li>
|
||||
<li>
|
||||
Die lokale Erzeugung von Strom über eine PV-Anlage wird besser
|
||||
berücksichtigt und kann vom Jahres-Primärenergiebedarf abgezogen
|
||||
werden (bis 45%).
|
||||
</li>
|
||||
<li>
|
||||
Die Angabe der CO2-Emission des Gebäudes im Energieausweis wird
|
||||
verplichtend eingeführt.
|
||||
</li>
|
||||
</ul>
|
||||
</BoxWithHeading>
|
||||
|
||||
<h2>
|
||||
Energieausweis nach aktueller GEG (vormals EnEV) geprüft vom Diplom
|
||||
Ingenieur
|
||||
</h2>
|
||||
<div class="right-img">
|
||||
<img
|
||||
title="Energieausweis online erstellen"
|
||||
src="images/Bedarfsausweis-Wohngebaeude-Beispiel.jpg"
|
||||
alt="Energieausweis online erstellen"
|
||||
/>
|
||||
</div>
|
||||
<hr />Sie möchten Ihren <strong>Energieausweis online erstellen</strong>?
|
||||
Auf dieser Seite finden Sie alle nötigen Informationen hierzu. Sollten Sie
|
||||
sich nicht sicher sein <a href="/energieausweis-welcher-energieausweis.php"
|
||||
>welchen Energieausweis</a
|
||||
> Sie benötigen, können Sie sich bei uns umfassend informieren. Wir haben fürs
|
||||
Sie alle wichtigen Informationen rund um die GEG und zur
|
||||
<a href="/energieausweis-pflicht.php">Energieausweis Pflicht</a> zusammengetragen.
|
||||
Zusätzlich haben wir die entscheidenden Informationen auf übersichtlichen Merkblättern
|
||||
im PDF Format zum Download zusammengefasst. Sollten Sie noch Fragen zum Thema
|
||||
Energieausweis online erstellen haben, stehen wir Ihnen gerne telefonisch unter
|
||||
folgender Nummer: 040/209 339 850 zur Verfügung.
|
||||
<hr />Mit dem <strong>Energieausweis</strong> werden Wohngebäude und Nichtwohngebäude
|
||||
nach den Vorgaben der Energieeinsparverordnung <a
|
||||
href="/enev-zusammenfassung">EnEV</a
|
||||
>
|
||||
energetisch bewertet. Das <a href="https://www.dibt.de/" target="blank"
|
||||
>DIBt</a
|
||||
>
|
||||
(Deutsches Institut für Bautechnik) regelt die Grundsätze zur Ausstellung, Berechnung
|
||||
und der Qualitätssicherung. Der Energieausweis beschreibt die entsprechenden
|
||||
Energiekennwerte auf einer Farbskala, grün (A+/Effizienzhaus), gelb (D) und rot
|
||||
(H / unsaniert). Es wird grundsätzlich zwischen zwei Energieausweisarten unterschieden:
|
||||
<hr />
|
||||
<div
|
||||
style="border-left: 5px solid #f5b68c; border-right: 5px solid #f5b68c;"
|
||||
>
|
||||
<ul id="start_ul">
|
||||
<li>
|
||||
Der verbrauchsbasierte Energieausweis wird als <a
|
||||
title="Verbrauchsausweis"
|
||||
href="/verbrauchsausweis/"
|
||||
><strong>Verbrauchsausweis</strong></a
|
||||
> bezeichnet. Dies ist der „kleine“ Energieausweis und kann bei Vermietung
|
||||
und Verkauf in den meisten Fällen verwendet werden. Hier gehts direkt
|
||||
zum Eingabeformular <br />→ <a
|
||||
title="Energieausweis online erstellen - Verbrauchsausweis"
|
||||
href="/energieausweis-erstellen/verbrauchsausweis-erstellen.php"
|
||||
>Energieausweis online erstellen</a
|
||||
>
|
||||
<hr />
|
||||
</li>
|
||||
<li>
|
||||
Der bedarfsbasierte Energieausweis wird als <a
|
||||
title="Bedarfsausweis"
|
||||
href="/bedarfsausweis/"><strong>Bedarfsausweis</strong></a
|
||||
>bezeichnet. Dies ist der „große“ Energieausweis und kann immer
|
||||
verwendet werden. Bei Neubau und Modernisierung ist er zwingend
|
||||
vorgeschrieben. Hier gehts direkt zum Eingabeformular <br />→ <a
|
||||
title="Energieausweis online erstellen - Bedarfsausweis"
|
||||
href="/energieausweis-erstellen/bedarfsausweis-erstellen.php"
|
||||
>Energieausweis online erstellen</a
|
||||
>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<hr />
|
||||
<div class="grid grid-cols-3 gap-4">
|
||||
<FeatureCard heading="Verbrauchsausweis Wohngebäude" price={45} href="/verbrauchsausweis">
|
||||
<div class="rpt_feature">Unsere Leistungen:</div>
|
||||
<div class="rpt_feature">Prüfung durch Diplom Ingenieur</div>
|
||||
<div class="rpt_feature">Energieausweis Vorschau als PDF</div>
|
||||
<div class="rpt_feature">Ausweisdokument als PDF per E-Mail</div>
|
||||
<div class="rpt_feature">Registrierung beim DiBt</div>
|
||||
<div class="rpt_feature">Bearbeitung innhalb 24h</div>
|
||||
<div class="rpt_feature">rechtssicher nach aktueller EnEV</div>
|
||||
<div class="rpt_feature">telefonische Beratung</div>
|
||||
</FeatureCard>
|
||||
<FeatureCard heading="Bedarfsausweis Wohngebäude" price={75} href="/bedarfsausweis">
|
||||
<div class="rpt_feature">Unsere Leistungen:</div>
|
||||
<div class="rpt_feature">Prüfung durch Diplom Ingenieur</div>
|
||||
<div class="rpt_feature">Energieausweis Vorschau als PDF</div>
|
||||
<div class="rpt_feature">Ausweisdokument als PDF per E-Mail</div>
|
||||
<div class="rpt_feature">Registrierung beim DiBt</div>
|
||||
<div class="rpt_feature">Bearbeitung innhalb 24h</div>
|
||||
<div class="rpt_feature">rechtssicher nach aktueller EnEV</div>
|
||||
<div class="rpt_feature">telefonische Beratung</div>
|
||||
</FeatureCard>
|
||||
<FeatureCard heading="Verbrauchsausweis Gewerbe" price={65} href="/verbrauchsausweis-gewerbe">
|
||||
<div class="rpt_feature">Unsere Leistungen:</div>
|
||||
<div class="rpt_feature">Prüfung durch Diplom Ingenieur</div>
|
||||
<div class="rpt_feature">Energieausweis Vorschau als PDF</div>
|
||||
<div class="rpt_feature">Ausweisdokument als PDF per E-Mail</div>
|
||||
<div class="rpt_feature">Registrierung beim DiBt</div>
|
||||
<div class="rpt_feature">Bearbeitung innhalb 24h</div>
|
||||
<div class="rpt_feature">rechtssicher nach aktueller EnEV</div>
|
||||
<div class="rpt_feature">telefonische Beratung</div>
|
||||
</FeatureCard>
|
||||
</div>
|
||||
<hr />
|
||||
|
||||
<h2>Unterschied: Verbrauchsausweis und Bedarfsausweis</h2> Grundsätzlich unterscheidet
|
||||
man beim Energieausweis zwischen Verbrauchsausweis und Bedarfsausweis.<h3>
|
||||
Was ist ein Verbrauchsausweis?
|
||||
</h3>
|
||||
Der Verbrauchsausweis gibt den Energieverbrauch der Gebäudebewohner in den vergangenen
|
||||
drei Jahren für Heizung und Warmwasserbereitung an. Um den <a
|
||||
href="/enev-zusammenfassung#§-19-EnEV"
|
||||
>Energieverbrauchskennwert zu ermitteln</a
|
||||
>, wird der tatsächliche Energieverbrauch mithilfe eines standortbezogenen
|
||||
Klimafaktors bereinigt. Der Durchschnittswert wird dann durch die sogenannte
|
||||
energetische Gebäudenutzfläche (An) geteilt. So führt beispielsweise ein
|
||||
hoher Verbrauch in einem einzelnen harten Winter nicht zu einer schlechteren
|
||||
Beurteilung des Gebäudes. Der tatsächliche Energieverbrauch in einem Gebäude
|
||||
oder einer Wohnung kann aufgrund des Witterungseinflusses vom
|
||||
Energieverbrauchskennwert abweichen.Das Ergebnis im Verbrauchsausweis ist
|
||||
stark vom individuellen Nutzungsverhalten der Bewohner abhängig. Wird in
|
||||
einem energetisch schlechten Gebäude kaum geheizt, so kann der
|
||||
Energieausweis trotzdem sehr gut ausfallen.<h3>
|
||||
Was ist ein Bedarfsausweis?
|
||||
</h3> Der Bedarfsausweis entsteht auf Grundlage einer technischen <a
|
||||
href="/enev-zusammenfassung#§-18-EnEV"
|
||||
>Analyse der Bausubstanz und der Heizungsanlage eines Gebäudes</a
|
||||
> und ist unabhängig vom individuellen Nutzerverhalten. Die Farbverlaufsskala
|
||||
im Bedarfsausweis weist zwei verschiedene Werte aus, die sehr unterschiedlich
|
||||
ausfallen können – einen Wert für den Endenergiebedarf und einen für den Primärenergiebedarf.
|
||||
Zusätzlich wird noch ein Kennwert für die energetische Qualität der Gebäudehülle
|
||||
dargestellt.Der Energiebedarf gibt die nach technischen Regeln berechnete, vom
|
||||
konkreten Gebäude jährlich benötigte Energiemenge für Heizung, Lüftung und Warmwasserbereitung
|
||||
an. Dabei werden bei der Berechnung standardisierte Randbedingungen – beispielsweise
|
||||
eine Innentemperatur von 19 Grad im beheizten Bereich des Gebäudes – zugrunde
|
||||
gelegt. Am Endenergiebedarf sollten sich Hausbewohner orientieren, wenn sie ihren
|
||||
künftigen Energieverbrauch und die Energiekosten abschätzen wollen.Der Primärenergiebedarf
|
||||
bildet die Gesamtenergieeffizienz eines Gebäudes ab. Er berücksichtigt neben
|
||||
der Endenergie auch die so genannte „Vorkette“ (Erkundung, Gewinnung, Verteilung,
|
||||
Umwandlung) der jeweils eingesetzten Energieträger (z.B. Heizöl, Gas, Strom,
|
||||
erneuerbare Energien).Besonders niedrig fällt der Primärenergiebedarf aus, wenn
|
||||
erneuerbare Energien (solare Strahlungsenergie, Geothermie, Energie aus Biomasse)
|
||||
für die Energieversorgung im Gebäude eingesetzt werden. Am Primärenergiebedarf
|
||||
können Verbraucher erkennen, wie umweltfreundlich ihr Gebäude ist.<h3>
|
||||
Fazit – Verbrauchsausweis / Bedarfsausweis
|
||||
</h3> Geht es um den tatsächlichen Verbrauch der Energie, der den Aufwand für
|
||||
Heizung und zentrale Warmwasserbereitung der vergangenen drei Jahre berücksichtigt,
|
||||
wird der Energieverbrauchskennwert für den Verbrauchsausweis ermittelt. Bei gewerblichen
|
||||
Objekten wird zusätzlich der Verbrauch für Beleuchtung und Klimatisierung mit
|
||||
eingerechnet. Anhand der Zeiträume und der Lage des Gebäudes (Postleitzahl) werden
|
||||
diese Daten ausgewertet und sowohl zeit-, als auch klimabereinigt zur Bewertung
|
||||
der vorhandenen energetischen Qualität herangezogen.Für das Ausstellen des Bedarfsausweis
|
||||
wird der rechnerische Energiebedarf unter standardisierten Randbedingungen benötigt.
|
||||
Daten rund um Bausubstanz, Gebäudehülle und Heizanlage fließen in die Berechnung
|
||||
mit ein. Bedarfsausweise widerspiegeln die tatsächliche energetische Qualität
|
||||
eines Gebäudes damit wesentlich besser als die Verbrauchsausweise.
|
||||
|
||||
<hr />
|
||||
<div class="start_infobox" title="Verbrauchsausweis Wohngebäude">
|
||||
<div class="start_infobox_inside IB_VA_WG">
|
||||
<img
|
||||
alt="Energieausweis online erstellen - Verbrauchsausweis"
|
||||
title="Energieausweis online erstellen - Verbrauchsausweis"
|
||||
class="start_infobox_img"
|
||||
src="/images/energieausweis-online-erstellen-verbrauchsausweis.png"
|
||||
/>
|
||||
<div class="title">Verbrauchsausweis Wohngebäude</div>
|
||||
<hr />
|
||||
<ul>
|
||||
<li>
|
||||
3 zusammenhängende Heizenergieverbräuche müssen eingegeben
|
||||
werden.
|
||||
</li>
|
||||
<li>
|
||||
Wohnfläche, Baujahr Gebäude und Baujahr Heizung müssen
|
||||
eingegeben werden.
|
||||
</li>
|
||||
<li>
|
||||
<div class="start_infobox_link">
|
||||
<a
|
||||
title="Verbrauchsausweis"
|
||||
href="/verbrauchsausweis/verbrauchsausweis-wohngebaeude.php"
|
||||
>Verbrauchsausweis</a
|
||||
>
|
||||
bei fast allen Gebäuden möglich. (Baujahr > 1977 - Vermietung/Verkauf)
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="start_infobox_button">
|
||||
<a
|
||||
title="Verbrauchsausweis erstellen"
|
||||
href="/energieausweis-erstellen/verbrauchsausweis-erstellen.php"
|
||||
>Jetzt Verbrauchsausweis erstellen</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="start_infobox BA-WG" title="Bedarfssausweis Wohngebäude">
|
||||
<div class="start_infobox_inside">
|
||||
<img
|
||||
alt="Energieausweis online erstellen - Bedarfsausweis"
|
||||
title="Energieausweis online erstellen - Bedarfsausweis"
|
||||
class="start_infobox_img"
|
||||
src="/images/energieausweis-online-erstellen-verbrauchsausweis.png"
|
||||
/>
|
||||
<div class="title">Bedarfsausweis Wohngebäude</div>
|
||||
<hr />
|
||||
<ul>
|
||||
<li>
|
||||
Die verwendete Heizungsanlage (Standardkessel,
|
||||
Brennwertkessel, etc.) muß eingegeben werden.
|
||||
</li>
|
||||
<li>
|
||||
Grundrissgeometrie sowie Baujahr Heizung und Gebäude müssen
|
||||
eingegeben werden.
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
title="Bedarfsausweis"
|
||||
href="/bedarfsausweis/bedarfsausweis-wohngebaeude.php"
|
||||
>Bedarfsausweis</a
|
||||
> bei allen Gebäuden möglich. Die Berechnung ist umfangreicher
|
||||
und besser vergleichbar.
|
||||
</li>
|
||||
</ul>
|
||||
<div class="start_infobox_button">
|
||||
<a
|
||||
title="Bedarfsausweis erstellen"
|
||||
href="/energieausweis-erstellen/bedarfsausweis-erstellen.php"
|
||||
>Jetzt Bedarfsausweis erstellen</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="start_infobox VANW_WG" title="Bedarfsausweis Gewerbe">
|
||||
<div class="start_infobox_inside">
|
||||
<img
|
||||
alt="Energieausweis online erstellen - Bedarfsausweis Gewerbe"
|
||||
title="Energieausweis online erstellen - Bedarfsausweis Gewerbe"
|
||||
class="start_infobox_img"
|
||||
src="/images/energieausweis-online-erstellen-verbrauchsausweis-gewerbe.png"
|
||||
/>
|
||||
<div class="title">Bedarfsausweis Gewerbe</div>
|
||||
<hr />
|
||||
<ul>
|
||||
<li>
|
||||
Aktuelle Grundriss- und Ansichtspläne werden für die
|
||||
Zonierung benötigt.
|
||||
</li>
|
||||
<li>
|
||||
Baubeschreibung (z.B. aus der Baugenehmigung) mit Angabe der
|
||||
verwendeten Baustoffe und TGA.
|
||||
</li>
|
||||
<li>
|
||||
Angabe vom Baujahr der Heizung, Gebäude und Klimaanlage.
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
title="Bedarfsausweis Gewerbe"
|
||||
href="/bedarfsausweis/bedarfsausweis-gewerbe.php"
|
||||
>Bedarfsausweis Gewerbe</a
|
||||
> bei allen Nichtwohngebäuden möglich (kann immmer verwendet
|
||||
werden).
|
||||
</li>
|
||||
</ul>
|
||||
<div class="start_infobox_button">
|
||||
<a
|
||||
href="/energieausweis-erstellen/bedarfsausweis-gewerbe-anfragen.php"
|
||||
title="Bedarfsausweis Gewerbe anfragen"
|
||||
>Jetzt Bedarfsausweis Gewerbe anfragen</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
<h2>Energieausweis online erstellen</h2> Soll Wohneigentum veräußert oder bauliches
|
||||
Teileigentum zum Erwerb angeboten werden, muss dem möglichen Käufer oder Leasingnehmer
|
||||
auf Verlangen unverzüglich ein
|
||||
<a href="enev-zusammenfassung#§-16a-EnEV">Energieausweis gezeigt werden</a>.
|
||||
In den meisten Fällen ist hier ein Verbrauchsausweis ausreichend. Auch
|
||||
Mietern oder Pächtern soll der Energieausweis unmittelbaren Aufschluss über
|
||||
die energetischen Bedingungen des Gebäudes aufzeigen.Kommt der Anbieter der
|
||||
offerierten Immobilie diesem Auftrag nach der Energieeinsparverordnung nicht
|
||||
nach, drohen Bußgelder bis zu 15 000 Euro. Als Ausnahmen gelten Gebäude mit
|
||||
nicht mehr als 50 m² Fläche sowie Baudenkmäler (<a
|
||||
href="enev-zusammenfassung#§-16-EnEV">§ 16 Abs. 4 EnEV</a
|
||||
>).Die Deutsche Energie-Agentur GmbH (<a
|
||||
href="https://www.dena.de/"
|
||||
target="blank">dena</a
|
||||
>) empfiehlt bei Wohngebäuden generell den Bedarfsausweis. Er erlaubt eine
|
||||
nutzerunabhängige Bewertung des Gebäudes. Zusätzlich können bei der
|
||||
Erstellung eines Bedarfsausweises die Empfehlungen für Modernisierungen auf
|
||||
der Basis einer technischen Analyse des Gebäudes ermittelt werden.
|
||||
<hr />
|
||||
<h2>Zusammenfassung: Was ist ein Energieausweis?</h2>
|
||||
<ul id="start_ul_1">
|
||||
<li>
|
||||
Der Gesetzgeber hat zwei Arten des Energieausweises bestimmt: Den
|
||||
Verbrauchsausweis und den Bedarfsausweis.
|
||||
</li>
|
||||
<li>
|
||||
Je nach Gebäudeart, Baujahr, Nutzungsart gilt es verschiedene
|
||||
Kriterien für den Energieausweis zu beachten.
|
||||
</li>
|
||||
<li>
|
||||
Der Energieausweis ist ein Mittel, das als Starter für
|
||||
Energiesparmaßnahmen definiert werden kann.
|
||||
</li>
|
||||
<li>
|
||||
Mit Hilfe des Energieausweises kann sich der Marktwert einer
|
||||
Immobilie erhöhen.
|
||||
</li>
|
||||
<li>
|
||||
Der Energieausweis offenbart bauliche Mängel, die eine
|
||||
Energieverschwendung mit sich bringen.
|
||||
</li>
|
||||
<li>
|
||||
Im Energieausweis werden Sanierungs- bzw. Modernisierungsvorschläge
|
||||
dokumentiert.
|
||||
</li>
|
||||
<li>
|
||||
Anhand des Energiepasses lässt sich der energetische Zustand
|
||||
verschiedener Gebäude miteinander vergleichen.
|
||||
</li>
|
||||
</ul>
|
||||
</Layout>
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import Kaufabschluss from "#components/Kaufabschluss/Kaufabschluss.svelte";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
|
||||
changeLanguage("fr");
|
||||
---
|
||||
|
||||
<AusweisLayout title="Kaufabschluss Verbrauchsausweis - IBCornelsen">
|
||||
<Kaufabschluss client:load></Kaufabschluss>
|
||||
</AusweisLayout>
|
||||
@@ -1,12 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import Kundendaten from "#components/Ausweis/Kundendaten.svelte";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
|
||||
changeLanguage("fr");
|
||||
---
|
||||
|
||||
<AusweisLayout title="Kundendaten Aufnehmen - IBCornelsen">
|
||||
<Kundendaten client:load></Kundendaten>
|
||||
</AusweisLayout>
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import LoginView from "../../components/LoginView.svelte";
|
||||
import Layout from "../../layouts/Layout.astro";
|
||||
|
||||
changeLanguage("fr");
|
||||
|
||||
const token = Astro.cookies.get("token").value;
|
||||
const expires = Astro.cookies.get("expires").number();
|
||||
const now = moment().unix();
|
||||
if (token && now < expires) {
|
||||
return Astro.redirect(`/user`);
|
||||
}
|
||||
---
|
||||
|
||||
<Layout title="Login">
|
||||
<LoginView client:only></LoginView>
|
||||
</Layout>
|
||||
@@ -1,9 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
|
||||
changeLanguage("fr");
|
||||
|
||||
Astro.cookies.delete("token");
|
||||
Astro.cookies.delete("expires");
|
||||
return Astro.redirect("/");
|
||||
---
|
||||
@@ -1,247 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import { Ausweis } from "src/lib/Ausweis";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import Checkbox from "#components/Checkbox.svelte";
|
||||
import PDFHeader from "#components/PDF/PDFHeader.svelte";
|
||||
import PDFSectionHeader from "#components/PDF/PDFSectionHeader.svelte";
|
||||
import PDFLayout from "#layouts/PDFLayout.astro";
|
||||
|
||||
changeLanguage("fr");
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
if (!base64) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
const ausweis = Verbrauchsausweis.fromBase64(base64);
|
||||
if (!ausweis) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
---
|
||||
|
||||
<PDFLayout title="Ansichtsausweis">
|
||||
<div class="flex flex-col gap-20">
|
||||
<div class="flex flex-col gap-2">
|
||||
<PDFHeader></PDFHeader>
|
||||
<PDFSectionHeader number={1}>
|
||||
<p class="text-xs">
|
||||
Gültig bis: <span
|
||||
>{
|
||||
moment().add("10", "years").locale("de").format("DD. MMM. YYYY")
|
||||
}</span>
|
||||
</p>
|
||||
<p class="text-xs">Ausweis ID <span>1293819</span></p>
|
||||
<p class="text-xs">
|
||||
Registriernummer wird nach Zahlungseingang vergeben
|
||||
</p>
|
||||
</PDFSectionHeader>
|
||||
<div
|
||||
class="border-4 border-pdf-yellow-bright bg-pdf-yellow-light rounded-lg"
|
||||
>
|
||||
<h2>Gebäude</h2>
|
||||
<div class="flex flex-col">
|
||||
<div class="flex flex-row">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Gebäudetyp</td>
|
||||
<td>{ausweis.objekt_typ}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Adresse</td>
|
||||
<td>{ausweis.objekt_strasse}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gebäudeteil</td>
|
||||
<td>{ausweis.objekt_gebaeudeteil}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Baujahr Gebäude ³</td>
|
||||
<td>{ausweis.baujahr_gebaeude}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td
|
||||
>Baujahr Wärmeerzeuger <sup>3</sup>
|
||||
<sup>4</sup></td
|
||||
>
|
||||
<td>{ausweis.baujahr_anlage}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Anzahl Wohnungen</td>
|
||||
<td>{ausweis.anzahl_einheiten}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gebäudenutzfläche (A<sub>N</sub>)</td>
|
||||
<td>
|
||||
<table>
|
||||
<tr>
|
||||
<td>192m²</td>
|
||||
<td
|
||||
class="flex flex-row items-center h-full w-full gap-2 pl-2"
|
||||
>
|
||||
<input type="checkbox" />
|
||||
nach § 19 EnEV aus der Wohnfläche ermittelt
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td
|
||||
>Wesentliche Energieträger für<br /> Heizung und
|
||||
Warmwasser <sup>3</sup></td
|
||||
>
|
||||
<td>Erdgas, BraunkohleBraunkohle, Strommix</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="w-[35%]">
|
||||
<img src="" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<table></table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<h2>
|
||||
Hinweise zu den Angaben über die energetische Qualität des
|
||||
Gebäudes
|
||||
</h2>
|
||||
<div class="bg-white w-full">
|
||||
<p>
|
||||
Die energetische Qualität eines Gebäudes kann durch die
|
||||
Berechnung des <strong>Energiebedarfs</strong> unter Annahme
|
||||
von standardisierten Randbedingungen oder durch die Auswertung
|
||||
des <strong>Energieverbrauchs</strong> ermittelt werden. Als
|
||||
Bezugsfläche dient die energetische Gebäudenutzfläche nach der
|
||||
EnEV, die sich in der Regel von den allgemeinen Wohnflächenangaben
|
||||
unterscheidet. Die angegebenen Vergleichswerte sollen überschlägige
|
||||
Vergleiche ermöglichen (<strong
|
||||
>Erläuterungen - siehe Seite 5</strong
|
||||
>). Teil des Energieausweises sind die
|
||||
Modernisierungsempfehlungen (Seite 4).
|
||||
</p>
|
||||
<Checkbox checked={true}>
|
||||
Der Energieausweis wurde auf der Grundlage von Berechnungen
|
||||
des <strong>Energiebedarfs</strong> erstellt (Energiebedarfsausweis).
|
||||
Die Ergebnisse sind auf <strong>Seite 2</strong> dargestellt.
|
||||
Zusätzliche Informationen zum Verbrauch sind freiwillig.
|
||||
</Checkbox>
|
||||
<Checkbox checked={false}>
|
||||
Der Energieausweis wurde auf der Grundlage von Auswertungen
|
||||
des <strong>Energieverbrauchs</strong> erstellt (Energieverbrauchsausweis).
|
||||
Die Ergebnisse sind auf <strong>Seite 3</strong> dargestellt.
|
||||
</Checkbox>
|
||||
<div class="flex flex-row justify-between items-center w-[80%]">
|
||||
<p>Datenerhebung Bedarf/Verbrauch durch</p>
|
||||
<Checkbox checked={true}>Eigentümer</Checkbox>
|
||||
<Checkbox checked={false}>Aussteller</Checkbox>
|
||||
</div>
|
||||
<Checkbox>
|
||||
Dem Energieausweis sind zusätzliche Informationen zur
|
||||
energetischen Qualität beigefügt (freiwillige Angabe).
|
||||
</Checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<h2>Hinweise zur Verwendung des Energieausweises</h2>
|
||||
<p class="bg-white">
|
||||
Der Energieausweis dient lediglich der Information. Die Angaben
|
||||
im Energieausweis beziehen sich auf das gesamte Wohngebäude oder
|
||||
den oben bezeichneten Gebäudeteil. Der Energieausweis ist
|
||||
lediglich dafür gedacht, einen überschlägigen Vergleich von
|
||||
Gebäuden zu ermöglichen.
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row gap-2">
|
||||
<div class="bg-pdf-yellow-light rounded-lg p-2 w-full h-20">
|
||||
<p>Aussteller:</p>
|
||||
</div>
|
||||
<div class="bg-pdf-yellow-light rounded-lg p-2 w-full h-20"></div>
|
||||
</div>
|
||||
<div class="flex flex-row flex-wrap">
|
||||
<p>
|
||||
<sup>1</sup> Datum der angewendeten EnEV, gegebenenfalls angewendeten
|
||||
Änderungsverordnung zur EnEV
|
||||
</p>
|
||||
<p>
|
||||
<sup>2</sup> Bei nicht rechtzeitiger Zuteilung der Registriernummer
|
||||
(§ 17 Absatz 4 Satz 4 und 5 EnEV) ist das Datum der Antragstellung
|
||||
einzutragen; die Registriernummer ist nach deren Eingang nachträglich
|
||||
einzusetzen.
|
||||
</p>
|
||||
<p><sup>3</sup> Mehrfachangaben möglich</p>
|
||||
<p><sup>4</sup> bei Wärmenetzen Baujahr der Übergabestation</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-col gap-2">
|
||||
<PDFHeader></PDFHeader>
|
||||
<PDFSectionHeader number={2}>
|
||||
<p>Berechneter Energiebedarf des Gebäudes</p>
|
||||
</PDFSectionHeader>
|
||||
<div
|
||||
class="box"
|
||||
>
|
||||
<h2>Energiebedarf</h2>
|
||||
<div class="bg-white w-full flex flex-col">
|
||||
<div class="flex flex-col items-end text-center">
|
||||
<div class="flex flex-row">
|
||||
<span class="bg-gray-300 p-0.5">200</span>
|
||||
<span>kg/(m²a)</span>
|
||||
</div>
|
||||
<span>CO² Treibhausgas Emissionen</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</PDFLayout>
|
||||
|
||||
<style is:global>
|
||||
table {
|
||||
@apply w-full h-full;
|
||||
}
|
||||
|
||||
td > table td {
|
||||
@apply px-0 py-0 border-t-0 border-b-0;
|
||||
}
|
||||
|
||||
td:has(table) {
|
||||
@apply p-0;
|
||||
}
|
||||
|
||||
td > table td:first-child {
|
||||
@apply border-l-0;
|
||||
}
|
||||
|
||||
td > table td:last-child {
|
||||
@apply border-r-0;
|
||||
}
|
||||
|
||||
td {
|
||||
@apply border border-black px-1 text-xs py-0.5;
|
||||
}
|
||||
|
||||
td:not(:first-child) {
|
||||
@apply bg-white;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply font-bold text-sm;
|
||||
}
|
||||
|
||||
p,
|
||||
label {
|
||||
@apply text-xs;
|
||||
}
|
||||
|
||||
.box {
|
||||
@apply border-4 border-pdf-yellow-bright bg-pdf-yellow-light rounded-lg;
|
||||
}
|
||||
|
||||
.box > * {
|
||||
@apply px-1 py-0.5;
|
||||
}
|
||||
</style>
|
||||
@@ -1,253 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
|
||||
import { Dachgeschoss } from "src/lib/Ausweis/types";
|
||||
import Checkbox from "#components/Checkbox.svelte";
|
||||
import DatenblattFooter from "#components/DatenblattFooter.svelte";
|
||||
import DatenblattHeader from "#components/DatenblattHeader.svelte";
|
||||
import PDFHeader from "#components/PDF/PDFHeader.svelte";
|
||||
import PDFSectionHeader from "#components/PDF/PDFSectionHeader.svelte";
|
||||
import PDFLayout from "#layouts/PDFLayout.astro";
|
||||
|
||||
changeLanguage("fr");
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
if (!base64) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
const ausweis = Verbrauchsausweis.fromBase64(base64);
|
||||
if (!ausweis) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
---
|
||||
|
||||
<PDFLayout title="Datenblatt">
|
||||
<div class="flex flex-col gap-20">
|
||||
<div class="flex flex-col gap-4">
|
||||
<DatenblattHeader></DatenblattHeader>
|
||||
<div class="px-12 py-20 flex flex-col gap-2">
|
||||
<div class="flex flex-row justify-between items-center">
|
||||
<h2>Datenblatt Energieausweis</h2>
|
||||
<h2>Ausweis ID: </h2>
|
||||
</div>
|
||||
<h3>Gebäudedaten:</h3>
|
||||
<p>Adresse: {ausweis.objekt_strasse}, {ausweis.objekt_plz} {ausweis.objekt_ort}</p>
|
||||
<div class="flex justify-between">
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Neubau"}>Neubau</Checkbox>
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Vermietung" || ausweis.ausstellgrund == "Verkauf"}>Vermietung/Verkauf</Checkbox>
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Modernisierung"}>Modernisierung</Checkbox>
|
||||
<Checkbox checked={ausweis.ausstellgrund == "Sonstiges"}>Sonstiges</Checkbox>
|
||||
</div>
|
||||
<div class="flex justify-between gap-4">
|
||||
<table>
|
||||
<tbody><tr>
|
||||
<td>Baujahr Gebäude:</td>
|
||||
<td>{ausweis.baujahr_gebaeude}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Baujahr Heizung:</td>
|
||||
<td>{ausweis.baujahr_anlage}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wohnfläche:</td>
|
||||
<td>{ausweis.wohnflaeche}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lüftungskonzept:</td>
|
||||
<td>{ausweis.lueftungskonzept}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gebäudetyp:</td>
|
||||
<td>{ausweis.objekt_typ}</td>
|
||||
</tr></tbody>
|
||||
</table>
|
||||
<table>
|
||||
<tbody><tr>
|
||||
<td>Dachgeschoss:</td>
|
||||
<td>{ausweis.dachgeschoss == Dachgeschoss.BEHEIZT ? "Beheizt" : (ausweis.dachgeschoss == Dachgeschoss.UNBEHEIZT ? "Unbeheizt" : "Nicht Vorhanden")}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beheizter Keller:</td>
|
||||
<td>{ausweis.keller_beheizt ? "Ja" : "Nein"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wohnungen:</td>
|
||||
<td>{ausweis.anzahl_einheiten}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Anlage zur Kühlung:</td>
|
||||
<td>{ausweis.wird_gekuehlt ? "Ja" : "Nein"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Leerstand:</td>
|
||||
<td>{ausweis.leerstand}%</td>
|
||||
</tr></tbody>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
<div class="flex flex-row gap-8">
|
||||
<div class="flex flex-col">
|
||||
<h2>Heizverbrauch</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("1", "year").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).add("1", "year").format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("2", "years").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).add("2", "years").format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("3", "years").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<h2>{ausweis.energietraeger_1}</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_1_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_2_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_3_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-row gap-8">
|
||||
<div class="flex flex-col">
|
||||
<h2>Heizverbrauch (Heizwert)</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("1", "year").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).add("1", "year").format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("2", "years").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>Von: {moment(ausweis.energieverbrauch_zeitraum).add("2", "years").format("MM.YYYY")}</p>
|
||||
<p>Bis: {moment(ausweis.energieverbrauch_zeitraum).add("3", "years").format("MM.YYYY")}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<h2>{ausweis.energietraeger_1}</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_1_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_2_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.energieverbrauch_3_heizquelle_1}</p>
|
||||
<p>{ausweis.energietraeger_einheit_heizquelle_1}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>Warmwasser enthalten: {ausweis.warmwasser_enthalten ? "Ja" : "Nein"}</p>
|
||||
</div>
|
||||
|
||||
<DatenblattFooter></DatenblattFooter>
|
||||
</div>
|
||||
<div class="flex flex-col gap-4">
|
||||
<DatenblattHeader></DatenblattHeader>
|
||||
<div class="px-12 py-20 flex flex-col gap-2">
|
||||
<h2>Modernisierungsstand</h2>
|
||||
<h3>Heizungsanlage</h3>
|
||||
<div class="grid grid-cols-3">
|
||||
<Checkbox checked={ausweis.versorgungssysteme[0]}>Zentral/Etage</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[1]}>Einzelöfen</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[2]}>Durchlauferhitzer</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[3]}>Standardkessel</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[4]}>Solarsystem für Warmwasser</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[5]}>Wärmepumpe</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[6]}>Niedertemperaturkessel</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[7]}>Brennwertkessel/Therme</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[8]}>Warmwasserrohre gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[9]}>Heizungsrohre gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[10]}>Zirkulation</Checkbox>
|
||||
<Checkbox checked={ausweis.versorgungssysteme[11]}>Raumtemperraturregler</Checkbox>
|
||||
</div>
|
||||
<h3>Fenster/Dachfenster/Türen</h3>
|
||||
<div class="grid grid-cols-3">
|
||||
<Checkbox checked={ausweis.fenster_dach[0]}>Einfachglas</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[1]}>Doppelverglasung</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[2]}>Isolierverglasung</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[3]}>Dreifachverglasung</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[4]}>Alle Fenster dicht</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[5]}>Fenster teilweise undicht</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[6]}>Alle Türen dicht</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[7]}>Türen teilweise undicht</Checkbox>
|
||||
<Checkbox checked={ausweis.fenster_dach[8]}>Rolladenkästen gedämmt</Checkbox>
|
||||
</div>
|
||||
<h3>Wärmedämmung</h3>
|
||||
<div class="grid grid-cols-2">
|
||||
<Checkbox checked={ausweis.daemmung[0]}>Außenwand gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[1]}>Kelleraußenwand gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[2]}>Kellerdecke gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[3]}>Dachgeschoss gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[4]}>Oberste Geschossdecke gedämmt</Checkbox>
|
||||
<Checkbox checked={ausweis.daemmung[5]}>Oberste Geschossdecke min. 12cm gedämmt</Checkbox>
|
||||
</div>
|
||||
<Checkbox checked={true}>Die Angaben sind richtig und entsprechen dem aktuellen Stand.</Checkbox>
|
||||
<Checkbox checked={true}>Ich habe die AGB gelesen und akzeptiert.</Checkbox>
|
||||
<p>Die Angaben auf diesem Datenblatt wurden uns übermittelt und werden zur Berechnung und
|
||||
Ausstellung des Ausweises herangezogen.</p>
|
||||
</div>
|
||||
<DatenblattFooter></DatenblattFooter>
|
||||
</div>
|
||||
</div>
|
||||
</PDFLayout>
|
||||
|
||||
<style is:global>
|
||||
table {
|
||||
@apply w-full h-full;
|
||||
}
|
||||
|
||||
td > table td {
|
||||
@apply px-0 py-0 border-t-0 border-b-0;
|
||||
}
|
||||
|
||||
td:has(table) {
|
||||
@apply p-0;
|
||||
}
|
||||
|
||||
td > table td:first-child {
|
||||
@apply border-l-0;
|
||||
}
|
||||
|
||||
td > table td:last-child {
|
||||
@apply border-r-0;
|
||||
}
|
||||
|
||||
td {
|
||||
@apply border border-black px-1 text-xs py-0.5;
|
||||
}
|
||||
|
||||
td:not(:first-child) {
|
||||
@apply bg-white;
|
||||
}
|
||||
|
||||
h2 {
|
||||
@apply font-bold text-sm;
|
||||
}
|
||||
|
||||
p,
|
||||
label {
|
||||
@apply text-xs;
|
||||
}
|
||||
|
||||
.box {
|
||||
@apply border-4 border-pdf-yellow-bright bg-pdf-yellow-light rounded-lg;
|
||||
}
|
||||
|
||||
.box > * {
|
||||
@apply px-1 py-0.5;
|
||||
}
|
||||
</style>
|
||||
@@ -1,19 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import RegisterView from "../../components/RegisterView.svelte";
|
||||
import Layout from "../../layouts/Layout.astro";
|
||||
|
||||
changeLanguage("fr");
|
||||
|
||||
const token = Astro.cookies.get("token").value;
|
||||
const expires = Astro.cookies.get("expires").number();
|
||||
const now = moment().unix();
|
||||
if (token && now < expires) {
|
||||
return Astro.redirect("/user");
|
||||
}
|
||||
---
|
||||
|
||||
<Layout title="Login">
|
||||
<RegisterView client:only></RegisterView>
|
||||
</Layout>
|
||||
@@ -1,38 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import { decodeToken } from "#lib/JsonWebToken";
|
||||
import { User } from "#lib/User";
|
||||
import UserLayout from "#layouts/UserLayout.astro";
|
||||
import AusweisCard from "#components/AusweisCard.svelte";
|
||||
import { Verbrauchsausweis } from "#lib/Ausweis/Verbrauchsausweis";
|
||||
|
||||
changeLanguage("fr");
|
||||
|
||||
const token = Astro.cookies.get("token").value;
|
||||
const expires = Astro.cookies.get("expires").number();
|
||||
const now = moment().unix();
|
||||
if (!token || now > expires) {
|
||||
Astro.cookies.delete("token");
|
||||
Astro.cookies.delete("expires");
|
||||
return Astro.redirect(`/login`);
|
||||
}
|
||||
const parsed = decodeToken(token);
|
||||
const user = await User.fromUID(parsed.uid);
|
||||
if (!user) {
|
||||
Astro.cookies.delete("token");
|
||||
Astro.cookies.delete("expires");
|
||||
return Astro.redirect(`/login`);
|
||||
}
|
||||
---
|
||||
|
||||
<UserLayout title="Dashboard">
|
||||
<h1>Willkommen zurück <b>{user.email}</b></h1>
|
||||
|
||||
<h2>Ihre Ausweise</h2>
|
||||
<div class="grid grid-flow-row grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-4">
|
||||
<AusweisCard client:load hidden={true} i={0} ausweis={new Verbrauchsausweis()}></AusweisCard>
|
||||
<AusweisCard client:load hidden={true} i={1} ausweis={new Verbrauchsausweis()}></AusweisCard>
|
||||
<AusweisCard client:load hidden={true} i={2} ausweis={new Verbrauchsausweis()}></AusweisCard>
|
||||
</div>
|
||||
</UserLayout>
|
||||
@@ -1,11 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
import VerbrauchsausweisGewerbeContent from "#components/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeContent.svelte";
|
||||
|
||||
changeLanguage("fr");
|
||||
---
|
||||
|
||||
<AusweisLayout title="Verbrauchsausweis Gewerbe erstellen | IBCornelsen">
|
||||
<VerbrauchsausweisGewerbeContent client:load></VerbrauchsausweisGewerbeContent>
|
||||
</AusweisLayout>
|
||||
@@ -1,8 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
|
||||
changeLanguage("fr");
|
||||
|
||||
console.log(Object.fromEntries(new URLSearchParams(await Astro.request.text())));
|
||||
return Astro.redirect("/kundendaten");
|
||||
---
|
||||
@@ -1,13 +0,0 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
import VerbrauchsausweisContent from "#components/Verbrauchsausweis/VerbrauchsausweisContent.svelte";
|
||||
|
||||
changeLanguage("fr");
|
||||
|
||||
const uid = Astro.cookies.get("ausweis_uid").value;
|
||||
---
|
||||
|
||||
<AusweisLayout title="Verbrauchsausweis erstellen">
|
||||
<VerbrauchsausweisContent client:load uid={uid} />
|
||||
</AusweisLayout>
|
||||
@@ -1,11 +1,8 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import LoginView from "../components/LoginView.svelte";
|
||||
import LoginModule from "../modules/LoginModule.svelte";
|
||||
import Layout from "../layouts/Layout.astro";
|
||||
|
||||
changeLanguage("de");
|
||||
|
||||
const token = Astro.cookies.get("token").value;
|
||||
const expires = Astro.cookies.get("expires").number();
|
||||
const now = moment().unix();
|
||||
@@ -15,5 +12,5 @@ if (token && now < expires) {
|
||||
---
|
||||
|
||||
<Layout title="Login">
|
||||
<LoginView client:only></LoginView>
|
||||
<LoginModule client:only></LoginModule>
|
||||
</Layout>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import moment from "moment";
|
||||
import RegisterView from "../components/RegisterView.svelte";
|
||||
import RegisterView from "../modules/RegisterModule.svelte";
|
||||
import Layout from "../layouts/Layout.astro";
|
||||
|
||||
changeLanguage("de");
|
||||
@@ -14,6 +14,6 @@ if (token && now < expires) {
|
||||
}
|
||||
---
|
||||
|
||||
<Layout title="Login">
|
||||
<Layout title="Registrieren - IBCornelsen">
|
||||
<RegisterView client:only></RegisterView>
|
||||
</Layout>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
import { changeLanguage } from "i18next";
|
||||
import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
import VerbrauchsausweisContent from "#components/Verbrauchsausweis/VerbrauchsausweisContent.svelte";
|
||||
import Verbrauchsausweis from "#modules/Ausweise/Verbrauchsausweis.svelte";
|
||||
|
||||
changeLanguage("de");
|
||||
|
||||
@@ -9,5 +9,5 @@ const uid = Astro.cookies.get("ausweis_uid").value;
|
||||
---
|
||||
|
||||
<AusweisLayout title="Verbrauchsausweis erstellen">
|
||||
<VerbrauchsausweisContent client:load uid={uid} />
|
||||
<Verbrauchsausweis client:load uid={uid} />
|
||||
</AusweisLayout>
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
"paths": {
|
||||
"#lib/*": ["./src/lib/*"],
|
||||
"#components/*": ["./src/components/*"],
|
||||
"#layouts/*": ["./src/layouts/*"]
|
||||
"#layouts/*": ["./src/layouts/*"],
|
||||
"#modules/*": ["./src/modules/*"],
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user