API Optimierungen
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
export class Ausweis {
|
||||
public static fromPublicId(public_id: string) {
|
||||
public static fromUID(uid: string) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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}`);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
5
src/lib/server/Heizwertfaktor.ts
Normal file
5
src/lib/server/Heizwertfaktor.ts
Normal 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];
|
||||
})
|
||||
3
src/lib/server/Klimafaktoren.ts
Normal file
3
src/lib/server/Klimafaktoren.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
export async function getKlimafaktorenServer(date: Date, zip: string) {
|
||||
|
||||
};
|
||||
Reference in New Issue
Block a user