API Optimierungen

This commit is contained in:
Moritz Utcke
2023-05-06 23:02:54 +04:00
parent bc3878e645
commit 9619bf29f3
14 changed files with 396 additions and 31 deletions

View File

@@ -1,4 +1,5 @@
import { getKlimafaktorenClient } from "../Klimafaktoren";
import { getHeizwertfaktorClient } from "../server/Heizwertfaktor";
export enum AusweisType {
VERBRAUCHSAUSWEIS,
@@ -16,6 +17,40 @@ export enum Lueftungskonzept {
export type Ausweisart = "VA" | "BA" | "VANW";
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 {
public ausweisart: Ausweisart = "VA";
public id: number = 0;
@@ -35,8 +70,7 @@ export class Verbrauchsausweis {
public erstellungsdatum: Date = new Date();
public ausstellgrund: Ausstellgrund = "Vermietung";
public energieverbrauch_zeitraum_monat: number = 0;
public energieverbrauch_zeitraum_jahr: number = 0;
public energieverbrauch_zeitraum: Date = new Date();
public energieverbrauch_1_heizquelle_1: number = 0;
public energieverbrauch_2_heizquelle_1: number = 0;
public energieverbrauch_3_heizquelle_1: number = 0;
@@ -52,7 +86,7 @@ export class Verbrauchsausweis {
public anteil_warmwasser_1: number = 0;
public anteil_warmwasser_2: number = 0;
public public_id: string = "";
public uid: string = "";
public wohnflaeche: number = 0;
public keller_beheizt: boolean = false;
@@ -66,7 +100,7 @@ export class Verbrauchsausweis {
public versorgungssysteme: number = 0;
public fenster_dach: number = 0;
public energiequelle_2_nutzung: number = 0;
public energiequelle_2_nutzung: BitChecker = new BitChecker(0);
public daemmung: number = 0;
public energetische_nutzfläche: number = 0;
@@ -160,7 +194,7 @@ export class Verbrauchsausweis {
];
if (this.energietraeger_1 && this.energietraeger_einheit_heizquelle_1) {
[umrechnungsfaktor, primaerfaktor, heizwertfaktor, coe] =
getHeizwertfaktor(
await getHeizwertfaktorClient(
this.energietraeger_1,
this.energietraeger_einheit_heizquelle_1
);
@@ -168,7 +202,7 @@ export class Verbrauchsausweis {
if (this.energietraeger_2 && this.energietraeger_einheit_heizquelle_2) {
[umrechnungsfaktor_1, primaerfaktor_1, heizwertfaktor_1, coe_1] =
getHeizwertfaktor(
await getHeizwertfaktorClient(
this.energietraeger_2,
this.energietraeger_einheit_heizquelle_2
);
@@ -215,7 +249,7 @@ export class Verbrauchsausweis {
durchschnittsKlimafaktor;
}
if (energiequelle_2_nutzung[3]) {
if (this.energiequelle_2_nutzung.isSet(3)) {
kuehlungsZuschlag = 6 * this.energetische_nutzfläche * 3;
}

View File

@@ -1,5 +1,5 @@
export class Ausweis {
public static fromPublicId(public_id: string) {
public static fromUID(uid: string) {
}

View File

@@ -1,5 +1,5 @@
import moment from "moment";
import { memoize } from "./Memization";
import { memoize } from "./Memoization";
export const getKlimafaktorenClient = memoize<Promise<number[]>>(async (date: Date, zip: string) => {
const response = await fetch(`/api/klimafaktoren?date=${moment(date).format("YYYY-MM-DD")}&zip=${zip}`);

View File

@@ -10,7 +10,7 @@ export class User {
* @param uid Die unique/public id des gesuchten Benutzers.
* @returns {UserType | null} Die Daten des Nutzers oder null falls dieser nicht gefunden werden kann.
*/
public static async fromPublicId(uid: string): Promise<UserType | null> {
public static async fromUID(uid: string): Promise<UserType | null> {
if (!uid || typeof uid !== "string") {
return null;
}

View File

@@ -0,0 +1,5 @@
import { memoize } from "../Memoization";
export const getHeizwertfaktorClient = memoize<Promise<[number, number, number, number]>>(async function() {
return [1,1,1,1];
})

View File

@@ -0,0 +1,3 @@
export async function getKlimafaktorenServer(date: Date, zip: string) {
};