diff --git a/docker-compose.yml b/docker-compose.yml
index cacf2010..14e020a0 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -15,6 +15,7 @@ services:
- 3000:3000
volumes:
- ./:/online-energieausweis
+ - ./node_modules/@ibcornelsen/ui:/online-energieausweis/node_modules/@ibcornelsen/ui
networks:
- postgres
db:
diff --git a/src/components/Ausweis/AusweisPreviewContainer.svelte b/src/components/Ausweis/AusweisPreviewContainer.svelte
index 77ed2293..22c757df 100644
--- a/src/components/Ausweis/AusweisPreviewContainer.svelte
+++ b/src/components/Ausweis/AusweisPreviewContainer.svelte
@@ -5,6 +5,10 @@
import HelpLabel from "~/components/HelpLabel.svelte";
export let ausweis: Verbrauchsausweis;
+
+ import UploadImages from "../UploadImages.svelte";
+
+ let images: (File & { data: string })[] = [];
@@ -21,27 +25,20 @@
-
diff --git a/src/components/UploadImages.svelte b/src/components/UploadImages.svelte
new file mode 100644
index 00000000..7bc12cb8
--- /dev/null
+++ b/src/components/UploadImages.svelte
@@ -0,0 +1,58 @@
+
+
+{#if max > 1}
+
+{:else}
+
+{/if}
diff --git a/src/components/Verbrauchsausweis/VerbrauchsausweisContent.svelte b/src/components/Verbrauchsausweis/VerbrauchsausweisContent.svelte
index 6d7dbb5c..c10c6847 100644
--- a/src/components/Verbrauchsausweis/VerbrauchsausweisContent.svelte
+++ b/src/components/Verbrauchsausweis/VerbrauchsausweisContent.svelte
@@ -10,33 +10,14 @@
import FensterImage from "~/components/Ausweis/FensterImage.svelte";
import DaemmungImage from "~/components/Ausweis/DaemmungImage.svelte";
import AusweisPreviewContainer from "~/components/Ausweis/AusweisPreviewContainer.svelte";
- import { calculateEnergyPerformanceScore } from "./energyPerformanceCalculation";
import ZipSearch from "../ZIPSearch.svelte";
import { Verbrauchsausweis } from "src/lib/Ausweis/Verbrauchsausweis";
+ import moment from "moment";
- const ausweis = new Verbrauchsausweis();
+ let ausweis = new Verbrauchsausweis();
- let conversionFactor: number = 0;
- let calorificValueFactor: number = 0;
-
- let energyConsumption = [0, 0, 0];
- let additionalEnergyConsumption = [0, 0, 0];
- let climateFactors = [0, 0, 0];
-
- let area = 0;
- let energyPerformance = 0;
-
- $: {
- energyPerformance = calculateEnergyPerformanceScore(
- energyConsumption,
- additionalEnergyConsumption,
- ausweis.anteil_warmwasser_1,
- climateFactors,
- area * (ausweis.keller_beheizt ? 1.35 : 1.2),
- conversionFactor,
- calorificValueFactor
- );
- }
+ console.log(ausweis);
+
let needsRequirementCertificate: boolean = false;
@@ -56,11 +37,19 @@
ausweis.objekt_saniert = true;
ausweis.anzahl_einheiten = 1;
ausweis.ausstellgrund = "Vermietung";
- energyConsumption = [15000, 14000, 16000];
- area = 152;
+ ausweis.energieverbrauch_1_heizquelle_1 = 15000;
+ ausweis.energieverbrauch_2_heizquelle_1 = 14000;
+ ausweis.energieverbrauch_3_heizquelle_1 = 16000;
+ ausweis.wohnflaeche = 152;
ausweis.keller_beheizt = true;
+ ausweis.energietraeger_1 = "Erdgas H"
+ ausweis.energietraeger_einheit_heizquelle_1 = "kWh"
ausweis.warmwasser_enthalten = true;
ausweis.anteil_warmwasser_1 = 18;
+ ausweis.energieverbrauch_zeitraum = moment("12.01.2019");
+ ausweis.objekt_plz = "21039";
+ ausweis.objekt_ort = "Hamburg";
+ ausweis.objekt_strasse = "Curslacker Deich 170";
}
@@ -71,8 +60,7 @@
@@ -84,7 +72,7 @@
Später Weitermachen
-
@@ -151,6 +139,7 @@
required
data-msg-minlength="min. 5 Zeichen"
data-msg-maxlength="max. 40 Zeichen"
+ bind:value={ausweis.objekt_strasse}
/>
@@ -196,7 +185,7 @@
autocomplete="off"
data-rule-minlength="2"
data-msg-minlength="min. 2 Zeichen"
- bind:value={area}
+ bind:value={ausweis.wohnflaeche}
/>
@@ -240,12 +229,7 @@
@@ -283,7 +267,7 @@
@@ -319,6 +304,7 @@
>Heizung
@@ -326,6 +312,7 @@
>Warmwasser
@@ -333,6 +320,7 @@
>Lüftung
@@ -340,6 +328,7 @@
>Kühlung
@@ -509,6 +498,7 @@
>Zentral/Etage
@@ -518,6 +508,7 @@
>Einzelöfen
@@ -527,6 +518,7 @@
>Durchlauferhitzer
@@ -536,6 +528,7 @@
>Standardkessel
@@ -545,6 +538,7 @@
>Solarsystem für Warmwasser
@@ -554,6 +548,7 @@
>Wärmepumpe
@@ -563,6 +558,7 @@
>Niedertemperaturkessel
@@ -572,6 +568,7 @@
>Brennwertkessel
@@ -581,6 +578,7 @@
>Warmwasserrohre gedämmt
@@ -590,6 +588,7 @@
>Heizungsrohre gedämmt
@@ -599,6 +598,7 @@
>Zirkulation
@@ -608,6 +608,7 @@
>Raumtemperaturregler
@@ -637,6 +638,7 @@
>Einfachglas
@@ -646,6 +648,7 @@
>Doppelverglasung
@@ -655,6 +658,7 @@
>Isolierverglasung
@@ -664,6 +668,7 @@
>Dreifachverglasung
@@ -673,6 +678,7 @@
>Alle Fenster dicht
@@ -682,6 +688,7 @@
>Fenster teilweise undicht
@@ -691,6 +698,7 @@
>Alle Türen dicht
@@ -700,6 +708,7 @@
>Türen teilweise undicht
@@ -709,6 +718,7 @@
>Rollladenkästen gedämmt, luftdicht
@@ -743,6 +753,7 @@
>Außenwand gedämmt
@@ -752,6 +763,7 @@
>Kelleraußenwand gedämmt
@@ -761,6 +773,7 @@
>Kellerdecke gedämmt
@@ -770,6 +783,7 @@
>Dachgeschoss gedämmt
@@ -779,6 +793,7 @@
>Oberste Geschossdecke gedämmt
@@ -788,6 +803,7 @@
>Oberste Geschossdecke min. 12cm gedämmt
@@ -810,7 +826,7 @@
-
+
diff --git a/src/components/Verbrauchsausweis/energyPerformanceCalculation.ts b/src/components/Verbrauchsausweis/energyPerformanceCalculation.ts
deleted file mode 100644
index f92a0226..00000000
--- a/src/components/Verbrauchsausweis/energyPerformanceCalculation.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-
-/**
- *
- * @param energyConsumption Ein Array aus allen Verbräuchen der drei Verbrauchsjahre für die primäre Energiequelle
- * @param additionalEnergyConsumption Ein Array aus allen Verbräuchen der drei Verbrauchsjahre für die sekundäre Energiequelle
- * @param waterHeatingPortion Der Anteil den Warmwasser am Energieverbrauch ausgemacht hat
- * @param climateFactors Ein Array aus drei Klimafaktoren für die Verbrauchsjahre
- * @param area Die Nutzfläche des Gebäudes
- * @param conversionFactor Der Umrechnungsfaktor des Energieträgers
- * @param calorificValueFactor Der Heizwertfaktor des Energieträgers
- * @returns Den Performance Wert den das Gebäude erzielt hat.
- */
-export function calculateEnergyPerformanceScore(
- energyConsumption: number[],
- additionalEnergyConsumption: number[],
- waterHeatingPortion: number,
- climateFactors: number[],
- area: number,
- conversionFactor: number,
- calorificValueFactor: number
-): number {
- // Alle Werte müssen in kWh umgerechnet werden.
- let energyConsumptionKWh = energyConsumption.map((x) => convertEnergyConsumptionToKWh(x, conversionFactor, calorificValueFactor))
- let additionalEnergyConsumptionKWh = additionalEnergyConsumption.map((x) => convertEnergyConsumptionToKWh(x, conversionFactor, calorificValueFactor))
- let heatingPortion = 1 - (waterHeatingPortion / 100);
-
-
- return (heatingPortion * (energyConsumptionKWh[0] + additionalEnergyConsumptionKWh[0]) * climateFactors[0] +
- (waterHeatingPortion / 100) * (energyConsumptionKWh[0] + additionalEnergyConsumptionKWh[0]) +
- heatingPortion * (energyConsumptionKWh[1] + additionalEnergyConsumptionKWh[1]) * climateFactors[1] +
- (waterHeatingPortion / 100) * (energyConsumptionKWh[1] + additionalEnergyConsumptionKWh[1]) +
- heatingPortion * (energyConsumptionKWh[2] + additionalEnergyConsumptionKWh[2]) * climateFactors[2] +
- (waterHeatingPortion / 100) * (energyConsumptionKWh[2] + additionalEnergyConsumptionKWh[2])) /
- 3 /
- (area || 1);
-}
-
-function convertEnergyConsumptionToKWh(consumption: number, conversionFactor: number, calorificValueFactor: number): number {
- return (consumption * conversionFactor) / calorificValueFactor;
-}
diff --git a/src/layouts/AusweisLayout.astro b/src/layouts/AusweisLayout.astro
index eafd525c..f105afc6 100644
--- a/src/layouts/AusweisLayout.astro
+++ b/src/layouts/AusweisLayout.astro
@@ -101,7 +101,7 @@ const schema = JSON.stringify({
min-height: 100vh;
}
- button, .button, button[type="button"] {
+ .button {
@apply px-8 py-2 bg-secondary rounded-lg text-white font-medium hover:shadow-lg transition-all hover:underline active:bg-blue-900 text-center;
color: #fff !important;
}
diff --git a/src/lib/Ausweis/Verbrauchsausweis.ts b/src/lib/Ausweis/Verbrauchsausweis.ts
index d4cccf28..78b08258 100644
--- a/src/lib/Ausweis/Verbrauchsausweis.ts
+++ b/src/lib/Ausweis/Verbrauchsausweis.ts
@@ -1,5 +1,9 @@
+import { Moment } from "moment";
import { getKlimafaktorenClient } from "../Klimafaktoren";
import { getHeizwertfaktorClient } from "../server/Heizwertfaktor";
+import moment from "moment";
+import fuelList from "~/components/Ausweis/fuelList";
+import { BitChecker } from "../BitChecker";
export enum AusweisType {
VERBRAUCHSAUSWEIS,
@@ -15,40 +19,13 @@ export enum Lueftungskonzept {
}
export type Ausweisart = "VA" | "BA" | "VANW";
-export type Ausstellgrund = "Vermietung" | "Neubau" | "Verkauf" | "Modernisierung" | "Sonstiges";
+export type Ausstellgrund =
+ | "Vermietung"
+ | "Neubau"
+ | "Verkauf"
+ | "Modernisierung"
+ | "Sonstiges";
-class BitChecker {
- public value: number;
-
- constructor(number: number) {
- this.value = number;
- }
-
- public isSet(bitIndex: number): boolean {
- const bitMask = 1 << bitIndex;
- return (this.value & bitMask) !== 0;
- }
-
- public set(index: number): number {
- if (!this.isSet(index)) {
- this.value += 2 ** index;
- }
-
- return this.value;
- }
-
- public off(index: number) {
- if (this.isSet(index)) {
- this.value -= 2 ** index;
- }
-
- return this.value;
- }
-
- public valueOf(): number {
- return this.value;
- }
-}
export class Verbrauchsausweis {
@@ -70,7 +47,7 @@ export class Verbrauchsausweis {
public erstellungsdatum: Date = new Date();
public ausstellgrund: Ausstellgrund = "Vermietung";
- public energieverbrauch_zeitraum: Date = new Date();
+ public energieverbrauch_zeitraum: Moment = moment();
public energieverbrauch_1_heizquelle_1: number = 0;
public energieverbrauch_2_heizquelle_1: number = 0;
public energieverbrauch_3_heizquelle_1: number = 0;
@@ -98,11 +75,13 @@ export class Verbrauchsausweis {
public leerstand: number = 0;
public images: string[] = [];
- public versorgungssysteme: number = 0;
- public fenster_dach: number = 0;
- public energiequelle_2_nutzung: BitChecker = new BitChecker(0);
- public daemmung: number = 0;
- public energetische_nutzfläche: number = 0;
+ public versorgungssysteme: boolean[] = BitChecker(0);
+ public fenster_dach: boolean[] = BitChecker(0);
+ public energiequelle_2_nutzung: boolean[] = BitChecker(0);
+ public daemmung: boolean[] = BitChecker(0);
+ public get energetische_nutzfläche(): number {
+ return this.wohnflaeche * (this.keller_beheizt ? 1.35 : 1.2);
+ };
/**
* Bedarfsausweis spezifische Eigenschaften
@@ -181,109 +160,98 @@ export class Verbrauchsausweis {
const json = JSON.parse(text.toString());
return json;
-
- } catch(e) {
+ } catch (e) {
return null;
}
}
- public async endEnergieVerbrauch(): Promise {
- const date = this.energieverbrauch_zeitraum
- const klimafaktoren = await getKlimafaktorenClient(
- date,
- this.objekt_plz
- );
+ public get primaer_energie_verbrauch(): Promise {
+ return (async () => {
+ const Endenergieverbrauch = await this.end_energie_verbrauch;
- // Endenergieverbrauch
- // Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
- let [umrechnungsfaktor, primaerfaktor, heizwertfaktor, coe] = [
- 1, 1, 1, 1,
- ];
- let [umrechnungsfaktor_1, primaerfaktor_1, heizwertfaktor_1, coe_1] = [
- 1, 1, 1, 1,
- ];
- if (this.energietraeger_1 && this.energietraeger_einheit_heizquelle_1) {
- [umrechnungsfaktor, primaerfaktor, heizwertfaktor, coe] =
- await getHeizwertfaktorClient(
- this.energietraeger_1,
- this.energietraeger_einheit_heizquelle_1
- );
- }
+ const brennstoff_1 = getHeizwertfaktorClient(this.energietraeger_1, this.energietraeger_einheit_heizquelle_1);
- if (this.energietraeger_2 && this.energietraeger_einheit_heizquelle_2) {
- [umrechnungsfaktor_1, primaerfaktor_1, heizwertfaktor_1, coe_1] =
- await getHeizwertfaktorClient(
- this.energietraeger_2,
- this.energietraeger_einheit_heizquelle_2
- );
- }
+ return Endenergieverbrauch * brennstoff_1.primärenergiefaktor;
+ })();
+ }
- let verbrauch_1_kwh =
- (this.energieverbrauch_1_heizquelle_1 * umrechnungsfaktor) /
- heizwertfaktor;
- let verbrauch_2_kwh =
- (this.energieverbrauch_2_heizquelle_1 * umrechnungsfaktor) /
- heizwertfaktor;
- let verbrauch_3_kwh =
- (this.energieverbrauch_3_heizquelle_1 * umrechnungsfaktor) /
- heizwertfaktor;
- let verbrauch_4_kwh =
- (this.energieverbrauch_1_heizquelle_2 * umrechnungsfaktor_1) /
- heizwertfaktor_1;
- let verbrauch_5_kwh =
- (this.energieverbrauch_2_heizquelle_2 * umrechnungsfaktor_1) /
- heizwertfaktor_1;
- let verbrauch_6_kwh =
- (this.energieverbrauch_3_heizquelle_2 * umrechnungsfaktor_1) /
- heizwertfaktor_1;
+ public get end_energie_verbrauch(): Promise {
+ return (async () => {
+ const date = this.energieverbrauch_zeitraum;
+ const klimafaktoren = await getKlimafaktorenClient(
+ date,
+ this.objekt_plz
+ );
- let warmwasserZuschlag = 0;
- let leerstandsZuschlag = 0;
- let kuehlungsZuschlag = 0;
- if (this.anteil_warmwasser_1 == 0) {
- warmwasserZuschlag = 20 * this.energetische_nutzfläche * 3;
- }
+ // 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);
- if (this.leerstand > 0) {
- let durchschnittsKlimafaktor =
- klimafaktoren.reduce((a, b) => a + b, 0) / 3;
+ let verbrauch_1_kwh =
+ (this.energieverbrauch_1_heizquelle_1 * brennstoff_1.umrechnungsfaktor)
+ let verbrauch_2_kwh =
+ (this.energieverbrauch_2_heizquelle_1 * brennstoff_1.umrechnungsfaktor)
+ let verbrauch_3_kwh =
+ (this.energieverbrauch_3_heizquelle_1 * brennstoff_1.umrechnungsfaktor)
+ let verbrauch_4_kwh =
+ (this.energieverbrauch_1_heizquelle_2 * brennstoff_2.umrechnungsfaktor)
+ let verbrauch_5_kwh =
+ (this.energieverbrauch_2_heizquelle_2 * brennstoff_2.umrechnungsfaktor)
+ let verbrauch_6_kwh =
+ (this.energieverbrauch_3_heizquelle_2 * brennstoff_2.umrechnungsfaktor)
- leerstandsZuschlag =
- ((verbrauch_1_kwh +
- verbrauch_2_kwh +
- verbrauch_3_kwh +
- verbrauch_4_kwh +
- verbrauch_5_kwh +
- verbrauch_6_kwh) *
- (this.leerstand / 100)) /
- durchschnittsKlimafaktor;
- }
+ let warmwasserZuschlag = 0;
+ let leerstandsZuschlag = 0;
+ let kuehlungsZuschlag = 0;
+ if (this.anteil_warmwasser_1 == 0) {
+ warmwasserZuschlag = 20 * this.energetische_nutzfläche * 3;
+ }
- if (this.energiequelle_2_nutzung.isSet(3)) {
- kuehlungsZuschlag = 6 * this.energetische_nutzfläche * 3;
- }
+ if (this.leerstand > 0) {
+ let durchschnittsKlimafaktor =
+ klimafaktoren.reduce((a, b) => a + b, 0) / 3;
- let anteil_heizung = 1 - this.anteil_warmwasser_1 / 100;
- let anteil_warmwasser = this.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 /
- this.energetische_nutzfläche;
+ leerstandsZuschlag =
+ ((verbrauch_1_kwh +
+ verbrauch_2_kwh +
+ verbrauch_3_kwh +
+ verbrauch_4_kwh +
+ verbrauch_5_kwh +
+ verbrauch_6_kwh) *
+ (this.leerstand / 100)) /
+ durchschnittsKlimafaktor;
+ }
- return Energieverbrauchskennwert;
+ if (this.energiequelle_2_nutzung[3]) {
+ kuehlungsZuschlag = 6 * this.energetische_nutzfläche * 3;
+ }
+
+
+ let anteil_heizung = 1 - this.anteil_warmwasser_1 / 100;
+ let anteil_warmwasser = this.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 /
+ this.energetische_nutzfläche;
+
+
+ return Energieverbrauchskennwert;
+ })();
}
}
diff --git a/src/lib/BitChecker.ts b/src/lib/BitChecker.ts
new file mode 100644
index 00000000..e51d8d05
--- /dev/null
+++ b/src/lib/BitChecker.ts
@@ -0,0 +1,18 @@
+export function BitChecker(initial: number = 0, length: number = 32): boolean[] {
+ const target: boolean[] = new Array(length).fill(false).map((x, i) => {
+ return (initial & (1 << i)) !== 0 ? true : false
+ });
+ return new Proxy(target, {
+ get(target, property) {
+ if (property == "value") {
+ return target.reduce((a, b, i) => a + (b ? 2 ** i : 0), 0);
+ }
+
+ return Reflect.get(target, property);
+ },
+
+ set(target, property, value) {
+ return Reflect.set(target, property, value);
+ }
+ })
+}
\ No newline at end of file
diff --git a/src/lib/Klimafaktoren.ts b/src/lib/Klimafaktoren.ts
index 603556f1..76aaf3f6 100644
--- a/src/lib/Klimafaktoren.ts
+++ b/src/lib/Klimafaktoren.ts
@@ -1,11 +1,19 @@
import moment from "moment";
import { memoize } from "./Memoization";
-export const getKlimafaktorenClient = memoize>(async (date: Date, zip: string) => {
- const response = await fetch(`/api/klimafaktoren?date=${moment(date).format("YYYY-MM-DD")}&zip=${zip}`);
+export const getKlimafaktorenClient = memoize>(async (date: Date, zip: string) => {
+ if (!zip || !date) {
+ return [0, 0, 0];
+ }
+
+ const response = await fetch(`/api/klimafaktor?date=${moment(date).format("YYYY-MM-DD")}&accuracy=years&zip=${zip}`);
const json = await response.json();
- return json;
+ if (!json.success) {
+ return [0, 0, 0];
+ }
+
+ return Object.values(json.data) as [number, number, number];
});
export const getKlimafaktorenServer = memoize(async (date: Date, zip: string) => {
diff --git a/src/lib/server/Heizwertfaktor.ts b/src/lib/server/Heizwertfaktor.ts
index 4e2656bc..e648c20f 100644
--- a/src/lib/server/Heizwertfaktor.ts
+++ b/src/lib/server/Heizwertfaktor.ts
@@ -1,5 +1,23 @@
-import { memoize } from "../Memoization";
+import fuelList from "~/components/Ausweis/fuelList";
-export const getHeizwertfaktorClient = memoize>(async function() {
- return [1,1,1,1];
-})
\ No newline at end of file
+export const getHeizwertfaktorClient = function(energietraeger: string, einheit: string): {
+ coe: number,
+ energietraeger: string,
+ einheit: string,
+ umrechnungsfaktor: number,
+ primärenergiefaktor: number
+} {
+ for (const fuel of fuelList) {
+ if (fuel.energietraeger == energietraeger && fuel.einheit == einheit) {
+ return fuel;
+ }
+ }
+
+ return {
+ coe: 0,
+ energietraeger: "",
+ einheit: "",
+ umrechnungsfaktor: 0,
+ primärenergiefaktor: 0
+ };
+}
\ No newline at end of file
diff --git a/src/pages/api/ausweis/verbrauchsausweis.ts b/src/pages/api/ausweis/verbrauchsausweis.ts
new file mode 100644
index 00000000..91044f55
--- /dev/null
+++ b/src/pages/api/ausweis/verbrauchsausweis.ts
@@ -0,0 +1,16 @@
+import type { APIRoute } from "astro";
+import { success } from "src/lib/APIResponse";
+
+/**
+ * Erstellt einen Verbrauchsausweis anhand der gegebenen Daten und trägt ihn in die Datenbank ein.
+ * @param param0
+ * @returns
+ */
+export const post: APIRoute = async ({ request }) => {
+ const body = await request.json();
+
+
+
+
+ return success({});
+}
\ No newline at end of file
diff --git a/src/pages/api/climate_factor/index.ts b/src/pages/api/klimafaktor/index.ts
similarity index 80%
rename from src/pages/api/climate_factor/index.ts
rename to src/pages/api/klimafaktor/index.ts
index 70bd64e4..93b4f9e6 100644
--- a/src/pages/api/climate_factor/index.ts
+++ b/src/pages/api/klimafaktor/index.ts
@@ -4,10 +4,15 @@ import { ActionFailedError, InvalidDataError, MissingPropertyError, error, succe
import { getClimateFactor } from "src/lib/Klimafaktoren/getClimateFactor";
export const get: APIRoute = async function({ request }) {
- const body = Object.fromEntries(new URLSearchParams(request.url.split("?")[1]))
+ let body;
+ try {
+ body = Object.fromEntries(new URLSearchParams(request.url.split("?")[1]))
+ } catch(e) {
+ return error(["Failed to parse URL"]);
+ }
- if (!body.start || !body.end) {
- return MissingPropertyError(["start", "end"]);
+ if (!body.date) {
+ return MissingPropertyError(["date"]);
}
let accuracy = body.accuracy || "months";
@@ -20,8 +25,8 @@ export const get: APIRoute = async function({ request }) {
return error(["Invalid ZIP Code, must be 4 or 5 characters long."])
}
- let start = moment(body.start);
- let end = moment(body.end);
+ let start = moment(body.date);
+ let end = moment(body.date).add("2", "years");
if (!start.isValid()) {
return error(["Invalid start date given."]);
diff --git a/src/pages/index.astro b/src/pages/index.astro
index b7f08060..b76e3fff 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -1,5 +1,5 @@
---
-import BoxWithHeading from '../components/BoxWithHeading.astro';
+import {BoxWithHeading} from '@ibcornelsen/ui';
import Widget from '../components/Widget.svelte';
import Layout from '../layouts/Layout.astro';
---
diff --git a/src/pages/welcher-energieausweis.mdx b/src/pages/welcher-energieausweis.mdx
index 5e4713e1..e507e69f 100644
--- a/src/pages/welcher-energieausweis.mdx
+++ b/src/pages/welcher-energieausweis.mdx
@@ -3,7 +3,7 @@ layout: ../layouts/Layout.astro
title: Welcher Energieausweis?
---
-import BoxWithHeading from "~/components/BoxWithHeading.astro";
+import { BoxWithHeading } from "@ibcornelsen/ui";
import Widget from "~/components/Widget.svelte";
# Welcher Energieausweis ist der richtige?
@@ -54,14 +54,14 @@ eingehalten werden müssen.
---
-- Grundriss- und Ansichtspläne sowie Baubeschreibung.
-- Die wärmeübertragenden Umfassngsflächen wie Dach, Außenwand, Fenster,
- Kellerdecke bzw. Boden werden aus den Plänen ermittelt.
-- Auch das Gebäudevolumen zur Ermittlung der energetischen Gebäudenutzfläche und die
- verschiedenen Nutzungszonen werden aus den Plänen erhoben.
-- Die verwendete Heizungsanlage mit den Wärmeübergabekomponenten (Heizkörper,
- Fußbodenheizung, etc) sowie Energieträger und Kessel werden aus der Baubeschreibung oder
- aus den Angaben des Bauherren herangezogen.
+ - Grundriss- und Ansichtspläne sowie Baubeschreibung. - Die
+ wärmeübertragenden Umfassngsflächen wie Dach, Außenwand, Fenster,
+ Kellerdecke bzw. Boden werden aus den Plänen ermittelt. - Auch das
+ Gebäudevolumen zur Ermittlung der energetischen Gebäudenutzfläche und die
+ verschiedenen Nutzungszonen werden aus den Plänen erhoben. - Die verwendete
+ Heizungsanlage mit den Wärmeübergabekomponenten (Heizkörper,
+ Fußbodenheizung, etc) sowie Energieträger und Kessel werden aus der
+ Baubeschreibung oder aus den Angaben des Bauherren herangezogen.
Sollten Sie den Bedarfsausweis nur für Vermietung und Verkauf benötigen, dann
@@ -105,20 +105,19 @@ Anforderungen für Nichtwohngebäude eingehalten werden müssen.
---
-- Grundriss- und Ansichtspläne sowie Baubeschreibung.
-- Die wärmeübertragenden Umfassngsflächen wie Dach, Außenwand, Fenster,
- Kellerdecke bzw. Boden werden aus den Plänen ermittelt.
-- Auch das Gebäudevolumen zur Ermittlung der energetischen Gebäudenutzfläche und
- die verschiedenen Nutzungszonen werden aus den Plänen erhoben.
-- Die verwendete Heizungsanlage mit den Wärmeübergabekomponenten (Heizkörper,
- Fußbodenheizung, etc) sowie Energieträger und Kessel werden aus der
- Baubeschreibung oder aus den Angaben des Bauherren herangezogen.
-- Anlagentechnik zu Kühlung und Lüftung der entsprechenden Nutzungszonen müssen
- definiert sein.
-- Die verwendete Beleuchtung der verschiedenen Nutzungszonen wird ebenfalls
-herangezogen
+ - Grundriss- und Ansichtspläne sowie Baubeschreibung. - Die
+ wärmeübertragenden Umfassngsflächen wie Dach, Außenwand, Fenster,
+ Kellerdecke bzw. Boden werden aus den Plänen ermittelt. - Auch das
+ Gebäudevolumen zur Ermittlung der energetischen Gebäudenutzfläche und die
+ verschiedenen Nutzungszonen werden aus den Plänen erhoben. - Die verwendete
+ Heizungsanlage mit den Wärmeübergabekomponenten (Heizkörper,
+ Fußbodenheizung, etc) sowie Energieträger und Kessel werden aus der
+ Baubeschreibung oder aus den Angaben des Bauherren herangezogen. -
+ Anlagentechnik zu Kühlung und Lüftung der entsprechenden Nutzungszonen
+ müssen definiert sein. - Die verwendete Beleuchtung der verschiedenen
+ Nutzungszonen wird ebenfalls herangezogen
Sollten Sie den Bedarfsausweis nur für Vermietung und Verkauf benötigen, dann
können Sie den Ausweis bei uns auch online erstellen lassen. Die Eingabedaten
-werden dann nach einem vereinfachten Verfahren erhoben.
\ No newline at end of file
+werden dann nach einem vereinfachten Verfahren erhoben.
diff --git a/tailwind.config.cjs b/tailwind.config.cjs
index 88ab672e..346c2b84 100644
--- a/tailwind.config.cjs
+++ b/tailwind.config.cjs
@@ -1,6 +1,6 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
- content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"],
+ content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}","./node_modules/@ibcornelsen/ui/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"],
theme: {
extend: {
colors: {