Bugfixes im Zuge der Datenbank Umstellung
This commit is contained in:
@@ -8,10 +8,11 @@
|
||||
VerbrauchsausweisGewerbe,
|
||||
} from "@ibcornelsen/database/client";
|
||||
import { Enums } from "@ibcornelsen/database/client"
|
||||
import { GebaeudeClient, VerbrauchsausweisWohnenClient } from "./types";
|
||||
import { GebaeudeAufnahmeClient, GebaeudeClient, VerbrauchsausweisWohnenClient } from "./types";
|
||||
|
||||
export let gebaeude: GebaeudeClient;
|
||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe | BedarfsausweisWohnen;
|
||||
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient;
|
||||
|
||||
</script>
|
||||
|
||||
@@ -46,6 +47,7 @@
|
||||
name="baujahr_heizung"
|
||||
type="number"
|
||||
onlyUnique={true}
|
||||
minChars={4}
|
||||
onFocusIn={() => {
|
||||
addNotification({
|
||||
message: "Info",
|
||||
@@ -63,7 +65,7 @@
|
||||
className={auditHeizungGebaeudeBaujahr(gebaeude)
|
||||
? "linked"
|
||||
: ""}
|
||||
bind:tags={gebaeude.baujahr_heizung}
|
||||
bind:tags={gebaeude_aufnahme_allgemein.baujahr_heizung}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -81,6 +83,7 @@
|
||||
name="baujahr_gebaeude"
|
||||
type="number"
|
||||
onlyUnique={true}
|
||||
minChars={4}
|
||||
onFocusIn={() => {
|
||||
addNotification({
|
||||
message: "Info",
|
||||
@@ -98,7 +101,7 @@
|
||||
className={auditHeizungGebaeudeBaujahr(gebaeude)
|
||||
? "linked"
|
||||
: ""}
|
||||
bind:tags={gebaeude.baujahr_gebaeude}
|
||||
bind:tags={gebaeude_aufnahme_allgemein.baujahr_gebaeude}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -116,7 +119,7 @@
|
||||
required
|
||||
autocomplete="off"
|
||||
data-msg="Pflichtfeld"
|
||||
bind:value={gebaeude.einheiten}
|
||||
bind:value={gebaeude_aufnahme_allgemein.einheiten}
|
||||
maxlength="3"
|
||||
/>
|
||||
</div>
|
||||
@@ -134,7 +137,7 @@
|
||||
name="saniert"
|
||||
class=""
|
||||
required
|
||||
bind:value={gebaeude.saniert}
|
||||
bind:value={gebaeude_aufnahme_allgemein.saniert}
|
||||
>
|
||||
<option disabled>Bitte auswählen</option>
|
||||
<option value={true}>saniert</option>
|
||||
|
||||
@@ -10,12 +10,14 @@
|
||||
VerbrauchsausweisGewerbe,
|
||||
} from "@ibcornelsen/database/client";
|
||||
import {
|
||||
GebaeudeAufnahmeClient,
|
||||
GebaeudeClient,
|
||||
UploadedGebaeudeBild,
|
||||
VerbrauchsausweisWohnenClient,
|
||||
} from "./types";
|
||||
|
||||
export let gebaeude: GebaeudeClient;
|
||||
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient;
|
||||
export let ausweis:
|
||||
| VerbrauchsausweisWohnenClient
|
||||
| VerbrauchsausweisGewerbe
|
||||
@@ -40,7 +42,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="zentralheizung"
|
||||
bind:checked={gebaeude.zentralheizung}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.zentralheizung}
|
||||
value="ZH"
|
||||
/>Zentral/Etage</label
|
||||
>
|
||||
@@ -51,7 +53,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="einzelofen"
|
||||
bind:checked={gebaeude.einzelofen}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.einzelofen}
|
||||
value="EO"
|
||||
/>Einzelöfen</label
|
||||
>
|
||||
@@ -62,7 +64,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="durchlauf_erhitzer"
|
||||
bind:checked={gebaeude.durchlauf_erhitzer}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.durchlauf_erhitzer}
|
||||
value="DH"
|
||||
/>Durchlauferhitzer</label
|
||||
>
|
||||
@@ -73,7 +75,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="standard_kessel"
|
||||
bind:checked={gebaeude.standard_kessel}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.standard_kessel}
|
||||
value="SK"
|
||||
/>Standardkessel</label
|
||||
>
|
||||
@@ -84,7 +86,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="solarsystem_warmwasser"
|
||||
bind:checked={gebaeude.solarsystem_warmwasser}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.solarsystem_warmwasser}
|
||||
value="SSWW"
|
||||
/>Solarsystem für Warmwasser</label
|
||||
>
|
||||
@@ -95,7 +97,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="waermepumpe"
|
||||
bind:checked={gebaeude.waermepumpe}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.waermepumpe}
|
||||
value="WP"
|
||||
/>Wärmepumpe</label
|
||||
>
|
||||
@@ -106,7 +108,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="niedertemperatur_kessel"
|
||||
bind:checked={gebaeude.niedertemperatur_kessel}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.niedertemperatur_kessel}
|
||||
value="NK"
|
||||
/>Niedertemperaturkessel</label
|
||||
>
|
||||
@@ -117,7 +119,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="brennwert_kessel"
|
||||
bind:checked={gebaeude.brennwert_kessel}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.brennwert_kessel}
|
||||
value="BWK"
|
||||
/>Brennwertkessel</label
|
||||
>
|
||||
@@ -128,7 +130,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="warmwasser_rohre_gedaemmt"
|
||||
bind:checked={gebaeude.warmwasser_rohre_gedaemmt}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.warmwasser_rohre_gedaemmt}
|
||||
value="WRGD"
|
||||
/>Warmwasserrohre gedämmt</label
|
||||
>
|
||||
@@ -139,7 +141,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="heizungsrohre_gedaemmt"
|
||||
bind:checked={gebaeude.heizungsrohre_gedaemmt}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.heizungsrohre_gedaemmt}
|
||||
value="HRGD"
|
||||
/>Heizungsrohre gedämmt</label
|
||||
>
|
||||
@@ -150,7 +152,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="zirkulation"
|
||||
bind:checked={gebaeude.zirkulation}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.zirkulation}
|
||||
value="ZK"
|
||||
/>Zirkulation</label
|
||||
>
|
||||
@@ -161,7 +163,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="raum_temperatur_regler"
|
||||
bind:checked={gebaeude.raum_temperatur_regler}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.raum_temperatur_regler}
|
||||
value="RTR"
|
||||
/>Raumtemperaturregler</label
|
||||
>
|
||||
@@ -191,7 +193,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="einfach_verglasung"
|
||||
bind:checked={gebaeude.einfach_verglasung}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.einfach_verglasung}
|
||||
value="EG"
|
||||
/>Einfachglas</label
|
||||
>
|
||||
@@ -202,7 +204,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="doppel_verglasung"
|
||||
bind:checked={gebaeude.doppel_verglasung}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.doppel_verglasung}
|
||||
value="DF"
|
||||
/>Doppelverglasung</label
|
||||
>
|
||||
@@ -213,7 +215,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="isolier_verglasung"
|
||||
bind:checked={gebaeude.isolier_verglasung}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.isolier_verglasung}
|
||||
value="IVG"
|
||||
/>Isolierverglasung</label
|
||||
>
|
||||
@@ -224,7 +226,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="dreifach_verglasung"
|
||||
bind:checked={gebaeude.dreifach_verglasung}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.dreifach_verglasung}
|
||||
value="PHF"
|
||||
/>Dreifachverglasung</label
|
||||
>
|
||||
@@ -235,7 +237,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="fenster_dicht"
|
||||
bind:checked={gebaeude.fenster_dicht}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.fenster_dicht}
|
||||
value="FD"
|
||||
/>Alle Fenster dicht</label
|
||||
>
|
||||
@@ -246,7 +248,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="fenster_teilweise_undicht"
|
||||
bind:checked={gebaeude.fenster_teilweise_undicht}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.fenster_teilweise_undicht}
|
||||
value="FTUD"
|
||||
/>Fenster teilweise undicht</label
|
||||
>
|
||||
@@ -257,7 +259,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="tueren_dicht"
|
||||
bind:checked={gebaeude.tueren_dicht}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.tueren_dicht}
|
||||
value="TD"
|
||||
/>Alle Türen dicht</label
|
||||
>
|
||||
@@ -268,7 +270,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="tueren_undicht"
|
||||
bind:checked={gebaeude.tueren_undicht}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.tueren_undicht}
|
||||
value="TUD"
|
||||
/>Türen teilweise undicht</label
|
||||
>
|
||||
@@ -279,7 +281,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="rolllaeden_kaesten_gedaemmt"
|
||||
bind:checked={gebaeude.rolllaeden_kaesten_gedaemmt}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.rolllaeden_kaesten_gedaemmt}
|
||||
value="RKD"
|
||||
/>Rollladenkästen gedämmt, luftdicht</label
|
||||
>
|
||||
@@ -312,7 +314,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="aussenwand_gedaemmt"
|
||||
bind:checked={gebaeude.aussenwand_gedaemmt}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.aussenwand_gedaemmt}
|
||||
value="AWD"
|
||||
/>Außenwand gedämmt</label
|
||||
>
|
||||
@@ -323,7 +325,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="keller_wand_gedaemmt"
|
||||
bind:checked={gebaeude.keller_wand_gedaemmt}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.keller_wand_gedaemmt}
|
||||
value="KWD"
|
||||
/>Kelleraußenwand gedämmt</label
|
||||
>
|
||||
@@ -334,7 +336,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="keller_decke_gedaemmt"
|
||||
bind:checked={gebaeude.keller_decke_gedaemmt}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.keller_decke_gedaemmt}
|
||||
value="KDD"
|
||||
/>Kellerdecke gedämmt</label
|
||||
>
|
||||
@@ -345,7 +347,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="dachgeschoss_gedaemmt"
|
||||
bind:checked={gebaeude.dachgeschoss_gedaemmt}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt}
|
||||
value="DGD"
|
||||
/>Dachgeschoss gedämmt</label
|
||||
>
|
||||
@@ -356,7 +358,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="oberste_geschossdecke_gedaemmt"
|
||||
bind:checked={gebaeude.oberste_geschossdecke_gedaemmt}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt}
|
||||
value="OGDDW"
|
||||
/>Oberste Geschossdecke gedämmt</label
|
||||
>
|
||||
@@ -367,7 +369,7 @@
|
||||
type="checkbox"
|
||||
class="checkbox"
|
||||
name="oberste_geschossdecke_min_12cm_gedaemmt"
|
||||
bind:checked={gebaeude.oberste_geschossdecke_min_12cm_gedaemmt}
|
||||
bind:checked={gebaeude_aufnahme_allgemein.oberste_geschossdecke_min_12cm_gedaemmt}
|
||||
value="OGDD"
|
||||
/>Oberste Geschossdecke min. 12cm gedämmt</label
|
||||
>
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
<script lang="ts">
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
|
||||
import ThickArrowDown from "radix-svelte-icons/src/lib/icons/ThickArrowDown.svelte";
|
||||
import { BedarfsausweisWohnenClient, GebaeudeClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./types";
|
||||
import { BedarfsausweisWohnenClient, GebaeudeAufnahmeClient, GebaeudeClient, VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "./types";
|
||||
import ThickArrowUp from "radix-svelte-icons/src/lib/icons/ThickArrowUp.svelte";
|
||||
|
||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbeClient | BedarfsausweisWohnenClient;
|
||||
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient;
|
||||
export let gebaeude: GebaeudeClient;
|
||||
|
||||
let maxPerformance = 250;
|
||||
@@ -42,7 +43,7 @@
|
||||
let translation_2 = 0;
|
||||
$: {
|
||||
(async () => {
|
||||
const result = (await endEnergieVerbrauchVerbrauchsausweis_2016({ ...ausweis, gebaeude_stammdaten: gebaeude}));
|
||||
const result = (await endEnergieVerbrauchVerbrauchsausweis_2016({ ...ausweis, gebaeude_stammdaten: gebaeude, gebaeude_aufnahme_allgemein}));
|
||||
|
||||
if (!result) {
|
||||
return
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
import fuelList from "./brennstoffListe";
|
||||
import { auditVerbrauchAbweichung } from "../Verbrauchsausweis/audits/VerbrauchAbweichung";
|
||||
import type { VerbrauchsausweisGewerbe } from "@ibcornelsen/database/client";
|
||||
import { GebaeudeClient, VerbrauchsausweisWohnenClient } from "./types";
|
||||
import { GebaeudeAufnahmeClient, GebaeudeClient, VerbrauchsausweisWohnenClient } from "./types";
|
||||
|
||||
let availableYears = [
|
||||
2018, 2019,
|
||||
@@ -26,6 +26,7 @@
|
||||
];
|
||||
|
||||
export let gebaeude: GebaeudeClient;
|
||||
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient;
|
||||
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe;
|
||||
|
||||
const fuelMap: Record<string, string[]> = {};
|
||||
@@ -92,7 +93,7 @@
|
||||
<b>Koks:</b> Stark kohlenstoffhaltiger Brennstoff.<br /><br />
|
||||
</HelpLabel>
|
||||
<div>
|
||||
<select name="brennstoff_1" required bind:value={ausweis.brennstoff_1}>
|
||||
<select name="brennstoff_1" required bind:value={gebaeude_aufnahme_allgemein.brennstoff_1}>
|
||||
<option disabled>Bitte auswählen</option>
|
||||
{#each Object.keys(fuelMap) as fuel}
|
||||
<option value={fuel}>{fuel}</option>
|
||||
@@ -114,7 +115,7 @@
|
||||
bind:value={ausweis.einheit_1}
|
||||
>
|
||||
<option disabled>Bitte auswählen</option>
|
||||
{#each (fuelMap.hasOwnProperty(ausweis.brennstoff_1) ? fuelMap[ausweis.brennstoff_1] : []) as unit}
|
||||
{#each (fuelMap.hasOwnProperty(gebaeude_aufnahme_allgemein.brennstoff_1) ? fuelMap[gebaeude_aufnahme_allgemein.brennstoff_1] : []) as unit}
|
||||
<option value={unit}>{unit}</option>
|
||||
{/each}
|
||||
</select>
|
||||
@@ -126,7 +127,7 @@
|
||||
<div>
|
||||
<select
|
||||
name="brennstoff_2"
|
||||
bind:value={ausweis.brennstoff_2}
|
||||
bind:value={gebaeude_aufnahme_allgemein.brennstoff_2}
|
||||
disabled={!ausweis.zusaetzliche_heizquelle}
|
||||
required
|
||||
>
|
||||
@@ -148,7 +149,7 @@
|
||||
required
|
||||
>
|
||||
<option disabled>Bitte auswählen</option>
|
||||
{#each (fuelMap.hasOwnProperty(ausweis.brennstoff_2) ? fuelMap[ausweis.brennstoff_2] : []) as unit}
|
||||
{#each (fuelMap.hasOwnProperty(gebaeude_aufnahme_allgemein.brennstoff_2) ? fuelMap[gebaeude_aufnahme_allgemein.brennstoff_2] : []) as unit}
|
||||
<option value={unit}>{unit}</option>
|
||||
{/each}
|
||||
</select>
|
||||
|
||||
@@ -67,4 +67,8 @@ export type GebaeudeClient = inferProcedureInput<
|
||||
AppRouter["v1"]["verbrauchsausweisWohnen"]["2016"]["speichern"]
|
||||
>["gebaeude"];
|
||||
|
||||
export type GebaeudeAufnahmeClient = inferProcedureInput<
|
||||
AppRouter["v1"]["verbrauchsausweisWohnen"]["2016"]["speichern"]
|
||||
>["gebaeude_aufnahme_allgemein"];
|
||||
|
||||
export type BenutzerClient = inferProcedureOutput<AppRouter["v1"]["benutzer"]["fromPublicId"]>
|
||||
@@ -1,18 +1,22 @@
|
||||
<script lang="ts">
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016.js";
|
||||
import {
|
||||
BenutzerClient,
|
||||
GebaeudeClient,
|
||||
VerbrauchsausweisWohnenClient,
|
||||
} from "./Ausweis/types.js";
|
||||
|
||||
export let ausweis: VerbrauchsausweisWohnenClient & {
|
||||
gebaeude_stammdaten: GebaeudeClient;
|
||||
gebaeude_aufnahme_allgemein: GebaeudeClient & {
|
||||
gebaeude_stammdaten: GebaeudeClient;
|
||||
};
|
||||
benutzer: BenutzerClient;
|
||||
};
|
||||
export let calculations: Awaited<
|
||||
ReturnType<typeof endEnergieVerbrauchVerbrauchsausweis_2016>
|
||||
>;
|
||||
|
||||
console.log(ausweis);
|
||||
console.log(calculations);
|
||||
|
||||
|
||||
const ausweisArt = "VA"; // TODO: Das ist ein Platzhalter, hier muss die Ausweisart aus dem Ausweisobjekt kommen
|
||||
@@ -256,7 +260,7 @@
|
||||
}
|
||||
|
||||
let tooltip1Z1 =
|
||||
ausweis.gebaeude_stammdaten.adresse +
|
||||
ausweis.gebaeude_aufnahme_allgemein.adresse +
|
||||
", " +
|
||||
ausweis.objekt_plz +
|
||||
" " +
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<script lang="ts">
|
||||
import {
|
||||
GebaeudeAufnahmeClient,
|
||||
GebaeudeClient,
|
||||
VerbrauchsausweisWohnenClient,
|
||||
} from "#components/Ausweis/types";
|
||||
@@ -12,9 +13,15 @@
|
||||
Pencil2,
|
||||
QuestionMarkCircled,
|
||||
} from "radix-svelte-icons";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
|
||||
import { GebaeudeBilder } from "@ibcornelsen/database/client";
|
||||
|
||||
export let ausweis: VerbrauchsausweisWohnenClient & {
|
||||
gebaeude_stammdaten: GebaeudeClient;
|
||||
gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient & {
|
||||
gebaeude_stammdaten: GebaeudeClient & {
|
||||
gebaeude_bilder: GebaeudeBilder[];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
async function ausweisStornieren() {
|
||||
@@ -39,11 +46,14 @@
|
||||
</script>
|
||||
|
||||
<div class="card lg:card-side bg-base-200 card-bordered border-base-300">
|
||||
<div class="absolute top-0 left-0 w-full h-full bg-[rgba(0,0,0,0.7)] z-10 rounded-lg select-none">
|
||||
<h1 class="absolute -rotate-[25deg] text-7xl tracking-wide uppercase text-red-500 border-4 border-red-500 rounded-lg top-[50%] translate-y-[-50%] left-[50%] translate-x-[-50%]">Storniert</h1>
|
||||
</div>
|
||||
<figure class="lg:w-1/2">
|
||||
<img
|
||||
src="https://www.houseanddecors.com/wp-content/uploads/2019/01/modern-house-04.jpg"
|
||||
src={(ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.gebaeude_bilder && ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.gebaeude_bilder[0]?.url) || "/images/placeholder.jpg"}
|
||||
class="object-cover w-full h-full"
|
||||
alt="Album"
|
||||
alt="Gebäudebild"
|
||||
/>
|
||||
</figure>
|
||||
<div class="card-body lg:w-1/2">
|
||||
@@ -76,19 +86,23 @@
|
||||
</div>
|
||||
<div class="badge badge-success font-semibold">Ausgestellt</div>
|
||||
</div>
|
||||
<h2 class="card-title">{ausweis.gebaeude_stammdaten.adresse}</h2>
|
||||
<h2 class="card-title">{ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.adresse}</h2>
|
||||
<div class="mb-4 flex flex-row items-center gap-4">
|
||||
<progress class="progress w-full" value="54" max="100"></progress>
|
||||
<!-- TODO: Metrics für den Fortschritt festlegen -->
|
||||
<span class="text-sm font-semibold text-base-content">54%</span>
|
||||
</div>
|
||||
{#await endEnergieVerbrauchVerbrauchsausweis_2016(ausweis)}
|
||||
|
||||
{:then calculations}
|
||||
<div class="flex flex-col gap-2">
|
||||
<div class="flex flex-row justify-between">
|
||||
<span>Energieverbrauch</span>
|
||||
<span class="font-bold text-base-content">215kWh/A</span>
|
||||
<span class="font-bold text-base-content">{calculations?.endEnergieVerbrauchGesamt}kWh/A</span>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between">
|
||||
<span>CO2 Ausstoß</span>
|
||||
<span class="font-bold text-base-content">N/A</span>
|
||||
<span class="font-bold text-base-content">{calculations?.co2EmissionenGesamt}Kg/A</span>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between">
|
||||
<span>Erstellungsdatum</span>
|
||||
@@ -103,20 +117,21 @@
|
||||
<span
|
||||
class="font-bold text-base-content"
|
||||
title="Gebäude / Heizung"
|
||||
>{ausweis.gebaeude_stammdaten.baujahr_gebaeude[0] || "N/A"} /
|
||||
{ausweis.gebaeude_stammdaten.baujahr_heizung[0] ||
|
||||
>{ausweis.gebaeude_aufnahme_allgemein.baujahr_gebaeude[0] || "N/A"} /
|
||||
{ausweis.gebaeude_aufnahme_allgemein.baujahr_heizung[0] ||
|
||||
"N/A"}</span
|
||||
>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between">
|
||||
<span>Wohnfläche</span>
|
||||
<span class="font-bold text-base-content"
|
||||
>{ausweis.gebaeude_stammdaten.flaeche
|
||||
? `${ausweis.gebaeude_stammdaten.flaeche}m²`
|
||||
>{ausweis.gebaeude_aufnahme_allgemein.flaeche
|
||||
? `${ausweis.gebaeude_aufnahme_allgemein.flaeche}m²`
|
||||
: "N/A"}</span
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
{/await}
|
||||
<div class="card-actions justify-end mt-8">
|
||||
<a class="btn btn-primary">Bearbeiten</a>
|
||||
<button class="btn btn-ghost" title="PDF Herunterladen">
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
</script>
|
||||
|
||||
<aside class="hidden md:flex bg-base-100 border-r border-r-base-300 flex-col py-8">
|
||||
<a href="/dashboard" class="px-8"
|
||||
<a href="/" class="px-8"
|
||||
><img
|
||||
src="/images/header/logo-big.svg"
|
||||
class="w-36"
|
||||
@@ -37,10 +37,10 @@
|
||||
>
|
||||
|
||||
<div class="menu flex flex-col gap-2 mt-12 px-0">
|
||||
<button use:ripple={rippleOptions} class="button-tab">
|
||||
<a use:ripple={rippleOptions} class="button-tab" href="/dashboard">
|
||||
<Home width={22} height={22} />
|
||||
Home
|
||||
</button>
|
||||
</a>
|
||||
<a use:ripple={rippleOptions} class="button-tab" href="/dashboard/ausweise">
|
||||
<Reader width={22} height={22} />
|
||||
Ausweise
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
<script>
|
||||
|
||||
import moment from "moment";
|
||||
|
||||
</script>
|
||||
<div class="flex flex-row items-end justify-between px-12 py-8 border-t-8 border-t-primary">
|
||||
<h2>Copyright © {moment().format("YYYY")} • IB Cornelsen</h2>
|
||||
<h2>info@online-energieausweis.org</h2>
|
||||
</div>
|
||||
@@ -1,8 +0,0 @@
|
||||
<div class="flex flex-row items-end justify-between px-12 py-8 border-b-8 border-b-primary">
|
||||
<img src="/images/header/logo-big.png" width="250px" height="auto" alt="">
|
||||
<div class="flex flex-col">
|
||||
<p>fon 040 · 209339850</p>
|
||||
<p>fax 040 · 209339859</p>
|
||||
<p>online-energieausweis.org</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,5 +1,4 @@
|
||||
---
|
||||
import { Moon, Sun } from "radix-svelte-icons";
|
||||
import { validateAccessTokenServer } from "src/server/lib/validateAccessToken";
|
||||
import ThemeController from "./ThemeController.svelte";
|
||||
|
||||
@@ -63,6 +62,6 @@ const lightTheme = Astro.cookies.get("theme").value === "light";
|
||||
|
||||
<style>
|
||||
.header-button {
|
||||
@apply px-4 py-2 text-primary-content font-medium text-lg tracking-normal hover:bg-secondary;
|
||||
@apply px-4 py-2 text-primary-content font-medium text-lg tracking-normal hover:bg-secondary h-full;
|
||||
}
|
||||
</style>
|
||||
@@ -1,93 +0,0 @@
|
||||
<script lang="ts">
|
||||
import ProgressBar from "#components/Ausweis/Progressbar.svelte";
|
||||
import PriceContainer from "#components/Kaufabschluss/PriceContainer.svelte";
|
||||
import KundendatenContainer from "#components/Kaufabschluss/KundendatenContainer.svelte";
|
||||
|
||||
const prices = [45, 60, 160];
|
||||
</script>
|
||||
|
||||
<div class="gap-8 items-center mb-8 grid grid-cols-2">
|
||||
<div>
|
||||
<h1>Verbrauchsausweis erstellen - 45€</h1>
|
||||
<ProgressBar progress={100} />
|
||||
</div>
|
||||
<div />
|
||||
</div>
|
||||
|
||||
<form action="FORM/transfer/VA_3to4" method="POST" novalidate>
|
||||
<fieldset>
|
||||
<div class="grid grid-cols-2 gap-6">
|
||||
<PriceContainer {prices} />
|
||||
|
||||
<KundendatenContainer />
|
||||
|
||||
<div class="yellow-box">
|
||||
<h4>Bitte wählen sie ihre Bezahlmethode aus.</h4>
|
||||
<div class="flex flex-row gap-4">
|
||||
<div>
|
||||
<div class="payment-option-card">
|
||||
<img src="/images/paypal.png" alt="PayPal" />
|
||||
<div
|
||||
class="payment-option-label"
|
||||
aria-label="Zahlen mit PayPal"
|
||||
>
|
||||
Zahlen mit PayPal
|
||||
</div>
|
||||
</div>
|
||||
<div class="payment-option-card">
|
||||
<img src="/images/giropay.png" alt="Giropay" />
|
||||
<div
|
||||
class="payment-option-label"
|
||||
aria-label="Zahlen mit Giropay"
|
||||
>
|
||||
Zahlen mit Giropay
|
||||
</div>
|
||||
</div>
|
||||
<div class="payment-option-card">
|
||||
<img src="/images/sofort.png" alt="Sofort" />
|
||||
<div
|
||||
class="payment-option-label"
|
||||
aria-label="Zahlen mit Sofort"
|
||||
>
|
||||
Zahlen mit Sofort
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="payment-option-card">
|
||||
<img
|
||||
src="/images/mastercard.png"
|
||||
alt="Mastercard"
|
||||
/>
|
||||
<div
|
||||
class="payment-option-label"
|
||||
aria-label="Zahlen mit Kreditkarte"
|
||||
>
|
||||
Zahlen mit Kreditkarte
|
||||
</div>
|
||||
</div>
|
||||
<div class="payment-option-card">
|
||||
<img src="/images/rechnung.png" alt="Rechnung" />
|
||||
<div
|
||||
class="payment-option-label"
|
||||
aria-label="Zahlen mit Rechnung"
|
||||
>
|
||||
Zahlen mit Rechnung
|
||||
</div>
|
||||
</div>
|
||||
<div class="payment-option-card">
|
||||
<img src="/images/sepa.png" alt="SEPA" />
|
||||
<div
|
||||
class="payment-option-label"
|
||||
aria-label="Zahlen mit SEPA über PayPal"
|
||||
>
|
||||
SEPA über PayPal
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<button class="button">Daten ändern</button>
|
||||
</form>
|
||||
@@ -1,71 +0,0 @@
|
||||
<script lang="ts">
|
||||
import Label from "../Label.svelte";
|
||||
</script>
|
||||
|
||||
<div class="yellow-box flex flex-col gap-2">
|
||||
<div>
|
||||
<Label>Kunde</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
<div>
|
||||
<Label>Telefon</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
<div>
|
||||
<Label>E-Mail</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
<hr />
|
||||
|
||||
<div>
|
||||
<Label>Rechnungsempfänger</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Label>Zusatzzeile</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Label>Strasse</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Label>Telefon</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Label>E-Mail</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Label>PLZ und Ort</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
|
||||
<div>
|
||||
<Label>Versandempfänger</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Label>Zusatzzeile</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Label>Strasse</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<Label>PLZ und Ort</Label>
|
||||
<input type="text" readonly />
|
||||
</div>
|
||||
</div>
|
||||
@@ -1,10 +0,0 @@
|
||||
<div class="rounded-lg border-4 border-pdf-yellow-bright p-2">
|
||||
<div class="flex flex-row gap-2 items-end">
|
||||
<h1 class="text-4xl font-bold">ENERGIEAUSWEIS</h1>
|
||||
<span class="text-lg font-semibold">für Wohngebäude</span>
|
||||
</div>
|
||||
<p>
|
||||
gemäß den §§ 16 ff. Energieeinsparverordnung (EnEV) vom ¹ <span
|
||||
class="bg-gray-300 p-0.5">18. November 2013</span>
|
||||
</p>
|
||||
</div>
|
||||
@@ -1,15 +0,0 @@
|
||||
<script lang="ts">
|
||||
export let number: number;
|
||||
</script>
|
||||
|
||||
<div class="flex flex-row gap-2">
|
||||
<div
|
||||
class="bg-pdf-yellow-light rounded-lg w-full h-10 items-center justify-between flex flex-row px-2"
|
||||
>
|
||||
<slot></slot>
|
||||
</div>
|
||||
<span
|
||||
class="w-10 h-10 rounded-full border-pdf-yellow-bright border-4 bg-pdf-yellow-light flex items-center justify-center font-bold text-xl"
|
||||
>{number}</span
|
||||
>
|
||||
</div>
|
||||
@@ -25,7 +25,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
if (minChars > tag.length) {
|
||||
if (minChars > tag.toString().length) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -74,6 +74,12 @@
|
||||
on:keydown={onKeydown}
|
||||
on:focusin={onFocusIn}
|
||||
on:focusout={onFocusOut}
|
||||
on:blur={() => {
|
||||
if (tag.toString().length >= minChars) {
|
||||
addTag(tag)
|
||||
tag = ""
|
||||
}
|
||||
}}
|
||||
class="input input-bordered h-10 px-2 py-1.5 {className}"
|
||||
disabled={disable}
|
||||
readonly={readonly}
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
import Settings from "#components/Icons/Settings.svelte";
|
||||
import Home from "./Icons/Home.svelte";
|
||||
---
|
||||
|
||||
<div class="bg-violet-50 flex flex-col items-center justify-between py-8">
|
||||
<div>
|
||||
<a href="/">
|
||||
<Home width={25} height={25}></Home>
|
||||
</a>
|
||||
</div>
|
||||
<a href="/user/settings">
|
||||
<Settings width={25} height={25}></Settings>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
a {
|
||||
@apply p-1 rounded-lg transition-colors block;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
@apply bg-violet-100;
|
||||
}
|
||||
</style>
|
||||
0
src/data/templates/datenblatt.json
Normal file
0
src/data/templates/datenblatt.json
Normal file
146
src/data/templates/verbrauchsausweis-wohnen-2016.json
Normal file
146
src/data/templates/verbrauchsausweis-wohnen-2016.json
Normal file
File diff suppressed because one or more lines are too long
@@ -1,33 +0,0 @@
|
||||
---
|
||||
|
||||
export interface Props {
|
||||
title: string;
|
||||
}
|
||||
|
||||
const { title } = Astro.props;
|
||||
---
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<title>
|
||||
{title || 'Energieausweis online erstellen - Online Energieausweis'}
|
||||
</title>
|
||||
</head>
|
||||
|
||||
<body class="w-[210mm] h-[297mm] py-[12mm] px-[16mm]">
|
||||
<main>
|
||||
<article class="mainContent">
|
||||
<slot />
|
||||
</article>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<style is:global>
|
||||
* {
|
||||
font-family: Arial, Helvetica, sans-serif;
|
||||
}
|
||||
</style>
|
||||
23
src/lib/AusweisData.ts
Normal file
23
src/lib/AusweisData.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { VerbrauchsausweisWohnen, Benutzer, GebaeudeStammdaten, Rechnungen } from "@ibcornelsen/database/client";
|
||||
|
||||
export type AusweisData = VerbrauchsausweisWohnen & {
|
||||
benutzer: Benutzer;
|
||||
gebaeude_stammdaten: GebaeudeStammdaten;
|
||||
rechnungen: Rechnungen;
|
||||
};
|
||||
|
||||
export function convertAusweisData(
|
||||
inputs: AusweisData
|
||||
): Record<string, string> {
|
||||
return {
|
||||
"gebaeude_stammdaten.adresse": inputs.gebaeude_stammdaten.adresse || "",
|
||||
"gebaeude_stammdaten.gebaeudetyp":
|
||||
inputs.gebaeude_stammdaten.gebaeudetyp || "",
|
||||
"gebaeude_stammdaten.baujahr_gebaeude":
|
||||
inputs.gebaeude_stammdaten.baujahr_gebaeude.join(", ") || "",
|
||||
"gebaeude_stammdaten.baujahr_heizung":
|
||||
inputs.gebaeude_stammdaten.baujahr_heizung.join(", ") || "",
|
||||
"gebaeude_stammdaten.plz": inputs.gebaeude_stammdaten.plz || "",
|
||||
"gebaeude_stammdaten.ort": inputs.gebaeude_stammdaten.ort || "",
|
||||
};
|
||||
}
|
||||
@@ -1,55 +1,59 @@
|
||||
import { VerbrauchsausweisWohnenClient, GebaeudeClient } from "#components/Ausweis/types";
|
||||
import { VerbrauchsausweisWohnenClient, GebaeudeClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
||||
import { getKlimafaktoren } from "#lib/Klimafaktoren";
|
||||
import { getHeizwertfaktor } from "#lib/server/Heizwertfaktor";
|
||||
import moment from "moment";
|
||||
|
||||
export function energetischeNutzflaecheVerbrauchsausweisWohnen_2016(
|
||||
ausweis: VerbrauchsausweisWohnenClient & {
|
||||
gebaeude_stammdaten: GebaeudeClient;
|
||||
gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient & {
|
||||
gebaeude_stammdaten: GebaeudeClient;
|
||||
};
|
||||
}
|
||||
): number {
|
||||
if (!ausweis.gebaeude_stammdaten) {
|
||||
if (!ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten) {
|
||||
return 0
|
||||
}
|
||||
|
||||
let faktorKeller = 1.2;
|
||||
if (ausweis.keller_beheizt && (ausweis.gebaeude_stammdaten.einheiten || 1) <= 2) {
|
||||
if (ausweis.keller_beheizt && (ausweis.gebaeude_aufnahme_allgemein.einheiten || 1) <= 2) {
|
||||
faktorKeller = 1.35;
|
||||
}
|
||||
|
||||
if ((ausweis.gebaeude_stammdaten.nutzflaeche || 0) > 0) {
|
||||
return ausweis.gebaeude_stammdaten.nutzflaeche || 0;
|
||||
if ((ausweis.gebaeude_aufnahme_allgemein.nutzflaeche || 0) > 0) {
|
||||
return ausweis.gebaeude_aufnahme_allgemein.nutzflaeche || 0;
|
||||
} else {
|
||||
return (ausweis.gebaeude_stammdaten.flaeche || 1) * faktorKeller;
|
||||
return (ausweis.gebaeude_aufnahme_allgemein.flaeche || 1) * faktorKeller;
|
||||
}
|
||||
}
|
||||
|
||||
export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
ausweis: VerbrauchsausweisWohnenClient & {
|
||||
gebaeude_stammdaten: GebaeudeClient;
|
||||
gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient & {
|
||||
gebaeude_stammdaten: GebaeudeClient;
|
||||
}
|
||||
}
|
||||
) {
|
||||
if (!ausweis.gebaeude_stammdaten.plz || !ausweis.startdatum) {
|
||||
return null
|
||||
}
|
||||
|
||||
let startdatum = moment(ausweis.startdatum);
|
||||
|
||||
let klimafaktoren: Awaited<ReturnType<typeof getKlimafaktoren>> = [{
|
||||
month: ausweis.startdatum.getMonth(),
|
||||
year: ausweis.startdatum.getFullYear(),
|
||||
month: startdatum.month(),
|
||||
year: startdatum.year(),
|
||||
klimafaktor: 1
|
||||
},
|
||||
{
|
||||
month: ausweis.startdatum.getMonth(),
|
||||
year: ausweis.startdatum.getFullYear() + 1,
|
||||
month: startdatum.month(),
|
||||
year: startdatum.year() + 1,
|
||||
klimafaktor: 1
|
||||
},
|
||||
{
|
||||
month: ausweis.startdatum.getMonth(),
|
||||
year: ausweis.startdatum.getFullYear() + 2,
|
||||
month: startdatum.month(),
|
||||
year: startdatum.year() + 2,
|
||||
klimafaktor: 1
|
||||
}];
|
||||
|
||||
try {
|
||||
const response = await getKlimafaktoren(ausweis.startdatum, ausweis.gebaeude_stammdaten.plz)
|
||||
const response = await getKlimafaktoren(ausweis.startdatum, ausweis.gebaeude_aufnahme_allgemein.gebaeude_stammdaten.plz)
|
||||
|
||||
if (response) {
|
||||
klimafaktoren = response
|
||||
@@ -64,11 +68,11 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
// Endenergieverbrauch
|
||||
// Um den EEV auszurechnen, müssen die Verbräuche zu kWh konvertiert werden.
|
||||
let brennstoff_1 = getHeizwertfaktor(
|
||||
ausweis.brennstoff_1 as string,
|
||||
ausweis.gebaeude_aufnahme_allgemein.brennstoff_1 as string,
|
||||
ausweis.einheit_1 as string
|
||||
);
|
||||
let brennstoff_2 = getHeizwertfaktor(
|
||||
ausweis.brennstoff_2 as string,
|
||||
ausweis.gebaeude_aufnahme_allgemein.brennstoff_2 as string,
|
||||
ausweis.einheit_2 as string
|
||||
);
|
||||
|
||||
@@ -90,10 +94,10 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
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;
|
||||
let leerstand = (ausweis.gebaeude_aufnahme_allgemein.leerstand || 0) / 100;
|
||||
|
||||
if (ausweis.warmwasser_enthalten && ausweis.warmwasser_anteil_bekannt) {
|
||||
if (ausweis.gebaeude_stammdaten.solarsystem_warmwasser) {
|
||||
if (ausweis.gebaeude_aufnahme_allgemein.solarsystem_warmwasser) {
|
||||
// Wenn Warmwasser enthalten und Anteil bekannt und Solarsystem
|
||||
energieVerbrauchWarmwasser_1 =
|
||||
energieVerbrauchGesamt_1 *
|
||||
@@ -116,7 +120,7 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
leerstand *
|
||||
(energieVerbrauchWarmwasser_1 + energieVerbrauchWarmwasser_2);
|
||||
} else {
|
||||
if (ausweis.gebaeude_stammdaten.solarsystem_warmwasser) {
|
||||
if (ausweis.gebaeude_aufnahme_allgemein.solarsystem_warmwasser) {
|
||||
// Wenn Warmwasser Anteil unbekannt und Solarsystem
|
||||
energieVerbrauchWarmwasser_1 = energetischeNutzflaeche * 12 * 3;
|
||||
energieVerbrauchWarmwasser_2 = 0;
|
||||
@@ -184,7 +188,7 @@ export async function endEnergieVerbrauchVerbrauchsausweis_2016(
|
||||
let primaerfaktorww = 0;
|
||||
let primaerfaktorww_1 = 0;
|
||||
|
||||
if (!ausweis.warmwasser_enthalten && ausweis.gebaeude_stammdaten.durchlauf_erhitzer) {
|
||||
if (!ausweis.warmwasser_enthalten && ausweis.gebaeude_aufnahme_allgemein.durchlauf_erhitzer) {
|
||||
primaerfaktorww = 1.8;
|
||||
primaerfaktorww_1 = 1.8;
|
||||
} else {
|
||||
|
||||
@@ -19,11 +19,12 @@
|
||||
import Overlay from "#components/Overlay.svelte";
|
||||
import AusweisGespeichertModule from "./AusweisGespeichertModule.svelte";
|
||||
import { validateAccessTokenClient } from "src/client/lib/validateAccessToken";
|
||||
import { UploadedGebaeudeBild, VerbrauchsausweisWohnenClient, GebaeudeClient, BenutzerClient } from "#components/Ausweis/types";
|
||||
import { UploadedGebaeudeBild, VerbrauchsausweisWohnenClient, GebaeudeClient, BenutzerClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
||||
import { dialogs } from "svelte-dialogs";
|
||||
import LoginDialog from "#components/LoginDialog.svelte";
|
||||
|
||||
export let gebaeude: GebaeudeClient = {} as GebaeudeClient;
|
||||
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient = {} as GebaeudeAufnahmeClient;
|
||||
export let images: UploadedGebaeudeBild[] = [];
|
||||
export let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient;
|
||||
export let user: BenutzerClient = {} as BenutzerClient;
|
||||
@@ -93,7 +94,8 @@
|
||||
try {
|
||||
await client.v1.verbrauchsausweisWohnen[2016].speichern.mutate({
|
||||
ausweis,
|
||||
gebaeude
|
||||
gebaeude,
|
||||
gebaeude_aufnahme_allgemein
|
||||
})
|
||||
|
||||
await bilderHochladen();
|
||||
@@ -107,10 +109,12 @@
|
||||
try {
|
||||
const response = await client.v1.verbrauchsausweisWohnen[2016].erstellen.mutate({
|
||||
ausweis,
|
||||
gebaeude
|
||||
gebaeude,
|
||||
gebaeude_aufnahme_allgemein
|
||||
})
|
||||
ausweis.uid = response.uid;
|
||||
gebaeude.uid = response.gebaeude_uid;
|
||||
gebaeude_aufnahme_allgemein.uid = response.gebaeude_aufnahme_uid
|
||||
|
||||
await bilderHochladen();
|
||||
|
||||
@@ -149,25 +153,25 @@
|
||||
}
|
||||
|
||||
function automatischAusfüllen() {
|
||||
gebaeude.baujahr_gebaeude = [1962];
|
||||
gebaeude.baujahr_heizung = [1952];
|
||||
gebaeude.saniert = true;
|
||||
gebaeude.einheiten = 1;
|
||||
gebaeude_aufnahme_allgemein.baujahr_gebaeude = [1962];
|
||||
gebaeude_aufnahme_allgemein.baujahr_heizung = [1952];
|
||||
gebaeude_aufnahme_allgemein.saniert = true;
|
||||
gebaeude_aufnahme_allgemein.einheiten = 1;
|
||||
ausweis.ausstellgrund = "Vermietung";
|
||||
ausweis.verbrauch_1 = 15000;
|
||||
ausweis.verbrauch_2 = 14000;
|
||||
ausweis.verbrauch_3 = 16000;
|
||||
gebaeude.flaeche = 152;
|
||||
gebaeude.nutzflaeche = 172;
|
||||
gebaeude_aufnahme_allgemein.flaeche = 152;
|
||||
gebaeude_aufnahme_allgemein.nutzflaeche = 172;
|
||||
ausweis.keller_beheizt = true;
|
||||
ausweis.brennstoff_1 = "Erdgas H";
|
||||
gebaeude_aufnahme_allgemein.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.adresse = "Curslacker Deich 170";
|
||||
gebaeude.gebaeudeteil = "Gesamtgebäude";
|
||||
gebaeude_aufnahme_allgemein.gebaeudeteil = "Gesamtgebäude";
|
||||
|
||||
gebaeude = gebaeude;
|
||||
ausweis = ausweis;
|
||||
@@ -206,7 +210,7 @@
|
||||
<Progressbar progress={0} />
|
||||
</div>
|
||||
|
||||
<PerformanceScore bind:ausweis bind:gebaeude />
|
||||
<PerformanceScore bind:ausweis bind:gebaeude bind:gebaeude_aufnahme_allgemein />
|
||||
</div>
|
||||
|
||||
<form on:submit={ausweisAbschicken} name="ausweis" data-test="ausweis">
|
||||
@@ -229,7 +233,7 @@
|
||||
|
||||
<Label>A - Prüfung der Ausweisart</Label>
|
||||
|
||||
<Ausweisart bind:gebaeude bind:ausweis />
|
||||
<Ausweisart bind:gebaeude bind:gebaeude_aufnahme_allgemein bind:ausweis />
|
||||
|
||||
<hr />
|
||||
|
||||
@@ -297,7 +301,7 @@
|
||||
autocomplete="off"
|
||||
data-rule-minlength="2"
|
||||
data-msg-minlength="min. 2 Zeichen"
|
||||
bind:value={gebaeude.flaeche}
|
||||
bind:value={gebaeude_aufnahme_allgemein.flaeche}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -309,7 +313,7 @@
|
||||
<select
|
||||
name="keller" data-test="keller"
|
||||
required
|
||||
bind:value={gebaeude.keller}
|
||||
bind:value={gebaeude_aufnahme_allgemein.keller}
|
||||
>
|
||||
<option disabled>Bitte auswählen</option>
|
||||
<option value={Enums.Heizungsstatus.NICHT_VORHANDEN}>nicht vorhanden</option>
|
||||
@@ -323,7 +327,7 @@
|
||||
<div class="form-group col-md-3">
|
||||
<Label>Dachgeschoss *</Label>
|
||||
<div>
|
||||
<select name="dachgeschoss" data-test="dachgeschoss" bind:value={gebaeude.dachgeschoss} required>
|
||||
<select name="dachgeschoss" data-test="dachgeschoss" bind:value={gebaeude_aufnahme_allgemein.dachgeschoss} required>
|
||||
<option disabled>Bitte auswählen</option>
|
||||
<option value={Enums.Heizungsstatus.NICHT_VORHANDEN}>nicht vorhanden</option>
|
||||
<option value={Enums.Heizungsstatus.UNBEHEIZT}>unbeheizt</option>
|
||||
@@ -349,7 +353,7 @@
|
||||
autocomplete="off"
|
||||
data-rule-minlength="2"
|
||||
data-msg-minlength="min. 2 Zeichen"
|
||||
bind:value={gebaeude.nutzflaeche}
|
||||
bind:value={gebaeude_aufnahme_allgemein.nutzflaeche}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -360,7 +364,7 @@
|
||||
<Label>C - Eingabe von 3 zusammenhängenden Verbrauchsjahren</Label>
|
||||
|
||||
<div class="GRB">
|
||||
<Verbrauch bind:gebaeude bind:ausweis />
|
||||
<Verbrauch bind:gebaeude bind:gebaeude_aufnahme_allgemein bind:ausweis />
|
||||
</div>
|
||||
|
||||
<hr />
|
||||
@@ -545,7 +549,7 @@
|
||||
<select
|
||||
name="lueftung" data-test="lueftung"
|
||||
required
|
||||
bind:value={gebaeude.lueftung}
|
||||
bind:value={gebaeude_aufnahme_allgemein.lueftung}
|
||||
>
|
||||
<option disabled>Bitte auswählen</option>
|
||||
<option value="Fensterlüftung">Fensterlüftung</option>
|
||||
@@ -570,7 +574,7 @@
|
||||
<select
|
||||
name="kuehlung" data-test="kuehlung"
|
||||
required
|
||||
bind:value={gebaeude.kuehlung}
|
||||
bind:value={gebaeude_aufnahme_allgemein.kuehlung}
|
||||
>
|
||||
<option disabled>Bitte auswählen</option>
|
||||
<option value="1">vorhanden</option>
|
||||
@@ -591,7 +595,7 @@
|
||||
name="leerstand" data-test="leerstand"
|
||||
maxlength="2"
|
||||
type="number"
|
||||
bind:value={gebaeude.leerstand}
|
||||
bind:value={gebaeude_aufnahme_allgemein.leerstand}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@@ -603,7 +607,7 @@
|
||||
>F - Bitte prüfen Sie hier die Angaben zum Sanierungszustand des
|
||||
Gebäudes</Label
|
||||
>
|
||||
<BilderZusatzsysteme {images} {gebaeude} {ausweis} />
|
||||
<BilderZusatzsysteme {images} {gebaeude} {gebaeude_aufnahme_allgemein} {ausweis} />
|
||||
<hr />
|
||||
<div class="flex flex-row justify-between">
|
||||
<Hilfe />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { BenutzerClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import { BenutzerClient } from "#components/Ausweis/types";
|
||||
import DashboardAusweis from "#components/Dashboard/DashboardAusweis.svelte";
|
||||
import DashboardAusweisSkeleton from "#components/Dashboard/DashboardAusweisSkeleton.svelte";
|
||||
import { client } from "src/trpc";
|
||||
|
||||
@@ -1,9 +1,20 @@
|
||||
<script lang="ts">
|
||||
import { GebaeudeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
|
||||
import {
|
||||
BenutzerClient,
|
||||
GebaeudeAufnahmeClient,
|
||||
GebaeudeClient,
|
||||
VerbrauchsausweisWohnenClient,
|
||||
} from "#components/Ausweis/types";
|
||||
import AusweisPruefenBox from "#components/AusweisPruefenBox.svelte";
|
||||
import { endEnergieVerbrauchVerbrauchsausweis_2016 } from "#lib/Berechnungen/VerbrauchsausweisWohnen/VerbrauchsausweisWohnen_2016";
|
||||
|
||||
export let ausweise: VerbrauchsausweisWohnenClient & { gebaeude_stammdaten: GebaeudeClient }[];
|
||||
export let ausweise: (VerbrauchsausweisWohnenClient &
|
||||
{
|
||||
gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient & {
|
||||
gebaeude_stammdaten: GebaeudeClient;
|
||||
};
|
||||
benutzer: BenutzerClient;
|
||||
})[];
|
||||
</script>
|
||||
|
||||
{#each ausweise as ausweis}
|
||||
|
||||
@@ -5,8 +5,9 @@
|
||||
import { Viewer } from "@pdfme/ui";
|
||||
import { Check } from "radix-svelte-icons";
|
||||
import { image, text } from "@pdfme/schemas";
|
||||
import { AusweisData, convertAusweisData } from "#lib/AusweisData";
|
||||
|
||||
|
||||
type AusweisData = VerbrauchsausweisWohnen & { benutzer: Benutzer, gebaeude_stammdaten: GebaeudeStammdaten, rechnungen: Rechnungen }
|
||||
|
||||
export let ausweise: AusweisData[];
|
||||
|
||||
@@ -14,17 +15,6 @@
|
||||
let template: Template;
|
||||
let viewer: Viewer
|
||||
|
||||
function convertAusweisData(inputs: AusweisData): Record<string, string> {
|
||||
return {
|
||||
"gebaeude_stammdaten.adresse": inputs.gebaeude_stammdaten.adresse || "",
|
||||
"gebaeude_stammdaten.gebaeudetyp": inputs.gebaeude_stammdaten.gebaeudetyp || "",
|
||||
"gebaeude_stammdaten.baujahr_gebaeude": inputs.gebaeude_stammdaten.baujahr_gebaeude.join(", ") || "",
|
||||
"gebaeude_stammdaten.baujahr_heizung": inputs.gebaeude_stammdaten.baujahr_heizung.join(", ") || "",
|
||||
"gebaeude_stammdaten.plz": inputs.gebaeude_stammdaten.plz || "",
|
||||
"gebaeude_stammdaten.ort": inputs.gebaeude_stammdaten.ort || "",
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function loadTemplate() {
|
||||
const input = document.createElement("input");
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
<script lang="ts">
|
||||
import { addNotification } from "@ibcornelsen/ui";
|
||||
import { loginClient } from "#lib/login";
|
||||
import CrossCircled from "radix-svelte-icons/src/lib/icons/CrossCircled.svelte";
|
||||
import { fade } from "svelte/transition";
|
||||
@@ -48,6 +47,7 @@
|
||||
<input
|
||||
class="input input-bordered text-base text-base-content font-medium"
|
||||
type="password"
|
||||
minlength="8"
|
||||
placeholder="********"
|
||||
name="passwort"
|
||||
bind:value={passwort}
|
||||
|
||||
@@ -79,6 +79,7 @@
|
||||
<input
|
||||
type="password"
|
||||
placeholder="********"
|
||||
minlength="8"
|
||||
name="passwort"
|
||||
class="input input-bordered text-base text-base-content font-medium"
|
||||
bind:value={passwort}
|
||||
|
||||
@@ -13,5 +13,5 @@ const redirect = Astro.url.searchParams.get("redirect")
|
||||
---
|
||||
|
||||
<MinimalLayout title="Login">
|
||||
<LoginModule client:only redirect={redirect}></LoginModule>
|
||||
<LoginModule client:load redirect={redirect}></LoginModule>
|
||||
</MinimalLayout>
|
||||
|
||||
@@ -15,5 +15,5 @@ const redirect = Astro.url.searchParams.get("redirect");
|
||||
---
|
||||
|
||||
<MinimalLayout title="Registrieren - IBCornelsen">
|
||||
<RegisterModule client:only redirect={redirect}></RegisterModule>
|
||||
<RegisterModule client:load redirect={redirect}></RegisterModule>
|
||||
</MinimalLayout>
|
||||
|
||||
@@ -15,7 +15,11 @@ if (!accessTokenValid) {
|
||||
const ausweise = await prisma.verbrauchsausweisWohnen.findMany({
|
||||
take: 10,
|
||||
include: {
|
||||
gebaeude_stammdaten: true,
|
||||
gebaeude_aufnahme_allgemein: {
|
||||
include: {
|
||||
gebaeude_stammdaten: true
|
||||
}
|
||||
},
|
||||
benutzer: true
|
||||
}
|
||||
})
|
||||
|
||||
@@ -4,30 +4,34 @@ import AusweisLayout from "#layouts/AusweisLayout.astro";
|
||||
import VerbrauchsausweisWohnenModule from "#modules/Ausweise/VerbrauchsausweisWohnenModule.svelte";
|
||||
import { prisma } from "@ibcornelsen/database/server";
|
||||
import { exclude } from "#lib/exclude";
|
||||
import { UploadedGebaeudeBild, VerbrauchsausweisWohnenClient, GebaeudeClient, BenutzerClient } from "#components/Ausweis/types";
|
||||
import { UploadedGebaeudeBild, VerbrauchsausweisWohnenClient, GebaeudeClient, BenutzerClient, GebaeudeAufnahmeClient } from "#components/Ausweis/types";
|
||||
import { createCaller } from "#lib/caller";
|
||||
import { API_UID_COOKIE_NAME } from "#lib/constants";
|
||||
|
||||
const uid = Astro.url.searchParams.get("uid");
|
||||
let ausweis: VerbrauchsausweisWohnenClient = {} as VerbrauchsausweisWohnenClient;
|
||||
let gebaeude: GebaeudeClient = {} as GebaeudeClient;
|
||||
let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient = {} as GebaeudeAufnahmeClient;
|
||||
let images: UploadedGebaeudeBild[] = [];
|
||||
|
||||
if (uid) {
|
||||
const request = await prisma.verbrauchsausweisWohnen.findUnique({
|
||||
where: { uid },
|
||||
include: {
|
||||
gebaeude_stammdaten: true
|
||||
gebaeude_aufnahme_allgemein: {
|
||||
include: {
|
||||
GebaeudeStammdaten: {
|
||||
include: {
|
||||
gebaeude_bilder: true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
if (request) {
|
||||
const { gebaeude_stammdaten, ...rest } = request;
|
||||
const gebaeudeBilder = await prisma.gebaeudeBilder.findMany({
|
||||
where: { gebaeude_stammdaten_id: gebaeude_stammdaten.id },
|
||||
});
|
||||
|
||||
images = (await Promise.all(gebaeudeBilder.map(async bild => {
|
||||
images = (await Promise.all(request.gebaeude_aufnahme_allgemein.GebaeudeStammdaten.gebaeude_bilder.map(async bild => {
|
||||
try {
|
||||
const response = await createCaller(Astro).v1.bilder.getBase64({uid: bild.uid});
|
||||
return {
|
||||
@@ -40,8 +44,14 @@ if (uid) {
|
||||
}
|
||||
}))).filter(x => x !== null) as UploadedGebaeudeBild[];
|
||||
|
||||
ausweis = exclude(rest, ["id", "gebaeude_stammdaten_id", "ausweisart", "benutzer_id", "rechnungen_id"]) satisfies VerbrauchsausweisWohnenClient;
|
||||
gebaeude = exclude(request.gebaeude_stammdaten, ["id", "benutzer_id"]) satisfies GebaeudeClient;
|
||||
let { gebaeude_aufnahme_allgemein: {
|
||||
GebaeudeStammdaten: { gebaeude_bilder, ...request_gebaeude_stammdaten },
|
||||
...request_gebaeude_aufnahme_allgemein
|
||||
}, ...request_ausweis } = request;
|
||||
|
||||
ausweis = exclude(request_ausweis, ["id", "gebaeudeaufnahme_allgemein_id", "ausweisart", "benutzer_id", "rechnungen_id"]) satisfies VerbrauchsausweisWohnenClient;
|
||||
gebaeude = exclude(request_gebaeude_stammdaten, ["id", "benutzer_id"]) satisfies GebaeudeClient;
|
||||
gebaeude_aufnahme_allgemein = exclude(request_gebaeude_aufnahme_allgemein, ["id", "gebaeude_stammdaten_id"]) satisfies GebaeudeAufnahmeClient;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
---
|
||||
import {
|
||||
GebaeudeStammdaten,
|
||||
VerbrauchsausweisWohnen,
|
||||
prisma,
|
||||
} from "@ibcornelsen/database/server";
|
||||
import { generate } from "@pdfme/generator";
|
||||
|
||||
import moment from "moment";
|
||||
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";
|
||||
import { VerbrauchsausweisWohnen, GebaeudeStammdaten, prisma } from "@ibcornelsen/database/client";
|
||||
|
||||
|
||||
import VerbrauchsausweisWohnen2016Template from "../../data/templates/verbrauchsausweis-wohnen-2016.json";
|
||||
import { convertAusweisData } from "#lib/AusweisData";
|
||||
import { variable } from "#lib/pdf/plugins/variables";
|
||||
import { text, image } from "@pdfme/schemas"
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
let ausweis: (Partial<VerbrauchsausweisWohnen> & { gebaeude_stammdaten: Partial<GebaeudeStammdaten> }) | null = null;
|
||||
@@ -36,231 +38,22 @@ if (!ausweis) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
|
||||
const gebaeude = ausweis.gebaeude_stammdaten;
|
||||
const pdf = await generate({
|
||||
template: VerbrauchsausweisWohnen2016Template,
|
||||
plugins: { text, image, variable },
|
||||
inputs: [convertAusweisData(ausweis)],
|
||||
options: {
|
||||
author: "IB Cornelsen",
|
||||
creationDate: new Date(),
|
||||
creator: "IB Cornelsen",
|
||||
language: "de",
|
||||
title: "Verbrauchsausweis Wohnen 2016",
|
||||
},
|
||||
});
|
||||
|
||||
return new Response(pdf, {
|
||||
headers: {
|
||||
"Content-Type": "application/pdf",
|
||||
},
|
||||
});
|
||||
---
|
||||
|
||||
<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>{gebaeude.gebaeudetyp}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Adresse</td>
|
||||
<td>{gebaeude.adresse}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gebäudeteil</td>
|
||||
<td>{gebaeude.gebaeudeteil}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Baujahr Gebäude ³</td>
|
||||
<td>{gebaeude.baujahr_gebaeude}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td
|
||||
>Baujahr Wärmeerzeuger <sup>3</sup>
|
||||
<sup>4</sup></td
|
||||
>
|
||||
<td>{gebaeude.baujahr_heizung}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Anzahl Wohnungen</td>
|
||||
<td>{gebaeude.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,13 +1,22 @@
|
||||
---
|
||||
import moment from "moment";
|
||||
import Checkbox from "#components/Checkbox.svelte";
|
||||
import DatenblattFooter from "#components/DatenblattFooter.svelte";
|
||||
import DatenblattHeader from "#components/DatenblattHeader.svelte";
|
||||
import PDFLayout from "#layouts/PDFLayout.astro";
|
||||
import { GebaeudeStammdaten, VerbrauchsausweisWohnen, prisma } from "@ibcornelsen/database/client";
|
||||
import {
|
||||
GebaeudeStammdaten,
|
||||
VerbrauchsausweisWohnen,
|
||||
prisma,
|
||||
} from "@ibcornelsen/database/server";
|
||||
import { generate } from "@pdfme/generator";
|
||||
|
||||
import VerbrauchsausweisWohnen2016Template from "../../data/templates/verbrauchsausweis-wohnen-2016.json";
|
||||
import { convertAusweisData } from "#lib/AusweisData";
|
||||
import { variable } from "#lib/pdf/plugins/variables";
|
||||
import { text, image } from "@pdfme/schemas"
|
||||
|
||||
const base64 = Astro.url.searchParams.get("base64");
|
||||
let ausweis: (Partial<VerbrauchsausweisWohnen> & { gebaeude_stammdaten: Partial<GebaeudeStammdaten> }) | null = null;
|
||||
let ausweis:
|
||||
| (Partial<VerbrauchsausweisWohnen> & {
|
||||
gebaeude_stammdaten: Partial<GebaeudeStammdaten>;
|
||||
})
|
||||
| null = null;
|
||||
if (base64) {
|
||||
const buffer = Buffer.from(base64, "base64");
|
||||
const json = buffer.toString("utf-8");
|
||||
@@ -33,494 +42,22 @@ if (!ausweis) {
|
||||
return Astro.redirect("/404");
|
||||
}
|
||||
|
||||
const gebaeude = ausweis.gebaeude_stammdaten;
|
||||
const pdf = await generate({
|
||||
template: VerbrauchsausweisWohnen2016Template,
|
||||
plugins: { text, image, variable },
|
||||
inputs: [convertAusweisData(ausweis)],
|
||||
options: {
|
||||
author: "IB Cornelsen",
|
||||
creationDate: new Date(),
|
||||
creator: "IB Cornelsen",
|
||||
language: "de",
|
||||
title: "Verbrauchsausweis Wohnen 2016",
|
||||
},
|
||||
});
|
||||
|
||||
return new Response(pdf, {
|
||||
headers: {
|
||||
"Content-Type": "application/pdf",
|
||||
},
|
||||
});
|
||||
---
|
||||
|
||||
<PDFLayout title="Datenblatt">
|
||||
<div class="flex flex-col gap-20">
|
||||
<div class="flex flex-col gap-4">
|
||||
<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: {gebaeude.adresse}, {
|
||||
gebaeude.plz
|
||||
}
|
||||
{gebaeude.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
|
||||
>{
|
||||
gebaeude.baujahr_gebaeude
|
||||
}</td
|
||||
>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Baujahr Heizung:</td>
|
||||
<td
|
||||
>{
|
||||
gebaeude.baujahr_heizung
|
||||
}</td
|
||||
>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wohnfläche:</td>
|
||||
<td>{gebaeude.flaeche}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Lüftungskonzept:</td>
|
||||
<td>{gebaeude.lueftung}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gebäudetyp:</td>
|
||||
<td
|
||||
>{
|
||||
gebaeude.gebaeudetyp
|
||||
}</td
|
||||
>
|
||||
</tr></tbody
|
||||
>
|
||||
</table>
|
||||
<table>
|
||||
<tbody
|
||||
><tr>
|
||||
<td>Dachgeschoss:</td>
|
||||
<td
|
||||
>{
|
||||
gebaeude.dachgeschoss
|
||||
? "Beheizt"
|
||||
: gebaeude
|
||||
.dachgeschoss
|
||||
? "Unbeheizt"
|
||||
: "Nicht Vorhanden"
|
||||
}</td
|
||||
>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Beheizter Keller:</td>
|
||||
<td>{ausweis.keller_beheizt ? "Ja" : "Nein"}</td
|
||||
>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Wohnungen:</td>
|
||||
<td>{gebaeude.einheiten}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Anlage zur Kühlung:</td>
|
||||
<td>{ausweis.wird_gekuehlt ? "Ja" : "Nein"}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Leerstand:</td>
|
||||
<td>{gebaeude.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.startdatum).format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("1", "year")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("1", "year")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("2", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("2", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("3", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<h2>{ausweis.brennstoff_1}</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_1}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_2}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_3}</p>
|
||||
<p>{ausweis.einheit_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.startdatum).format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("1", "year")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("1", "year")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("2", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>
|
||||
Von: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("2", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
<p>
|
||||
Bis: {
|
||||
moment(ausweis.startdatum)
|
||||
.add("3", "years")
|
||||
.format("MM.YYYY")
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-col">
|
||||
<h2>{ausweis.brennstoff_1}</h2>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_1}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_2}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
<div class="flex flex-row justify-between gap-4">
|
||||
<p>{ausweis.verbrauch_3}</p>
|
||||
<p>{ausweis.einheit_1}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<p>
|
||||
Warmwasser enthalten: {
|
||||
ausweis.warmwasser_enthalten ? "Ja" : "Nein"
|
||||
}
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<DatenblattFooter />
|
||||
</div>
|
||||
<div class="flex flex-col gap-4">
|
||||
<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={gebaeude.zentralheizung ||
|
||||
false}
|
||||
>
|
||||
Zentral/Etage
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.einzelofen ||
|
||||
false}
|
||||
>
|
||||
Einzelöfen
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.durchlauf_erhitzer || false}
|
||||
>
|
||||
Durchlauferhitzer
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.standard_kessel ||
|
||||
false}
|
||||
>
|
||||
Standardkessel
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.solarsystem_warmwasser || false}
|
||||
>
|
||||
Solarsystem für Warmwasser
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.waermepumpe ||
|
||||
false}
|
||||
>
|
||||
Wärmepumpe
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.niedertemperatur_kessel || false}
|
||||
>
|
||||
Niedertemperaturkessel
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.brennwert_kessel ||
|
||||
false}
|
||||
>
|
||||
Brennwertkessel/Therme
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.warmwasser_rohre_gedaemmt || false}
|
||||
>
|
||||
Warmwasserrohre gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.heizungsrohre_gedaemmt || false}
|
||||
>
|
||||
Heizungsrohre gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.zirkulation ||
|
||||
false}
|
||||
>
|
||||
Zirkulation
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.raum_temperatur_regler || false}
|
||||
>
|
||||
Raumtemperraturregler
|
||||
</Checkbox>
|
||||
</div>
|
||||
<h3>Fenster/Dachfenster/Türen</h3>
|
||||
<div class="grid grid-cols-3">
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.einfach_verglasung || false}
|
||||
>
|
||||
Einfachglas
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.doppel_verglasung || false}
|
||||
>
|
||||
Doppelverglasung
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.isolier_verglasung || false}
|
||||
>
|
||||
Isolierverglasung
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.dreifach_verglasung || false}
|
||||
>
|
||||
Dreifachverglasung
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.fenster_dicht ||
|
||||
false}
|
||||
>
|
||||
Alle Fenster dicht
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.fenster_teilweise_undicht || false}
|
||||
>
|
||||
Fenster teilweise undicht
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.tueren_dicht ||
|
||||
false}
|
||||
>
|
||||
Alle Türen dicht
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude.tueren_undicht ||
|
||||
false}
|
||||
>
|
||||
Türen teilweise undicht
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.rolllaeden_kaesten_gedaemmt || false}
|
||||
>
|
||||
Rolladenkästen gedämmt
|
||||
</Checkbox>
|
||||
</div>
|
||||
<h3>Wärmedämmung</h3>
|
||||
<div class="grid grid-cols-2">
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.aussenwand_gedaemmt || false}
|
||||
>
|
||||
Außenwand gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.keller_wand_gedaemmt || false}
|
||||
>
|
||||
Kelleraußenwand gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.keller_decke_gedaemmt || false}
|
||||
>
|
||||
Kellerdecke gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.dachgeschoss_gedaemmt || false}
|
||||
>
|
||||
Dachgeschoss gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.oberste_geschossdecke_gedaemmt || false}
|
||||
>
|
||||
Oberste Geschossdecke gedämmt
|
||||
</Checkbox>
|
||||
<Checkbox
|
||||
checked={gebaeude
|
||||
.oberste_geschossdecke_min_12cm_gedaemmt || false}
|
||||
>
|
||||
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 />
|
||||
</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>
|
||||
|
||||
@@ -37,6 +37,7 @@ module.exports = {
|
||||
|
||||
'info': '#0689f4',
|
||||
'success': '#04b964',
|
||||
"success-content": "#ffffff",
|
||||
'warning': '#f49d1a',
|
||||
"warning-content": "#ffffff",
|
||||
'error': '#e43f3f',
|
||||
|
||||
Reference in New Issue
Block a user