Push Umbe

This commit is contained in:
Robert Jagtiani
2024-12-12 18:46:10 +01:00
parent 68a16f3413
commit bb6c75246e
18 changed files with 3383 additions and 3393 deletions

64
.gitignore vendored
View File

@@ -1,32 +1,32 @@
# build output
dist/
# generated types
.astro/
# log files
logs/
# dependencies
node_modules/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# lockfile
pnpm-lock.yaml
bun.lockb
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store
public/fonts/
*.Identifier
# build output
dist/
# generated types
.astro/
# log files
logs/
# dependencies
node_modules/
# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
# lockfile
pnpm-lock.yaml
bun.lockb
# environment variables
.env
.env.production
# macOS-specific files
.DS_Store
public/fonts/
*.Identifier

View File

@@ -1,86 +1,86 @@
{
"name": "online-energieausweis",
"version": "0.0.1",
"license": "GPL V3.0",
"type": "module",
"scripts": {
"dev": "bun astro dev",
"build": "bun astro build",
"preview": "bun astro preview",
"astro": "astro",
"test:e2e": "cypress run",
"test:unit": "bun test",
"format": "prettier --write .",
"build:production": "astro build && bun --bun server.ts",
"i18n:generate": "bunx astro-i18next generate",
"prisma:studio": "bunx prisma studio --schema=./node_modules/@ibcornelsen/database/prisma/schema.prisma"
},
"private": true,
"dependencies": {
"@astrojs/mdx": "^3.1.9",
"@astrojs/node": "^8.3.4",
"@astrojs/svelte": "^2.2.0",
"@astrojs/tailwind": "^3.1.3",
"@ibcornelsen/api": "link:@ibcornelsen/api",
"@ibcornelsen/database": "link:@ibcornelsen/database",
"@ibcornelsen/ui": "^0.0.2",
"@mollie/api-client": "^3.7.0",
"@pdfme/common": "^5.1.7",
"@pdfme/generator": "^5.1.7",
"@pdfme/ui": "^5.1.7",
"@trpc/client": "^10.45.2",
"@trpc/server": "^10.45.2",
"astro": "^4.16.10",
"astro-i18next": "1.0.0-beta.21",
"body-scroll-lock": "^4.0.0-beta.0",
"buffer": "^6.0.3",
"bun": "^1.1.34",
"caniuse-lite": "^1.0.30001684",
"csvtojson": "^2.0.10",
"express": "^4.21.1",
"flag-icons": "^6.15.0",
"fontkit": "^2.0.4",
"i18next": "^23.16.5",
"i18next-fs-backend": "^2.3.2",
"i18next-http-backend": "^2.6.2",
"js-cookie": "^3.0.5",
"js-interpolate": "^1.0.1",
"katex": "^0.16.11",
"moment": "^2.30.1",
"moment-timezone": "^0.5.46",
"postcss-nested": "^7.0.2",
"radix-svelte-icons": "^1.0.0",
"sass": "^1.80.6",
"svelte": "^3.59.2",
"svelte-dialogs": "^1.2.2",
"svelte-preprocess": "^5.1.4",
"svelte-ripple-action": "^1.0.6",
"tailwindcss": "^3.4.14",
"trpc-openapi": "^1.2.0",
"uuid": "^9.0.1",
"zod": "^3.23.8"
},
"devDependencies": {
"@faker-js/faker": "^8.4.1",
"@tailwindcss/typography": "^0.5.15",
"@types/body-scroll-lock": "^3.1.2",
"@types/express": "^5.0.0",
"@types/fontkit": "^2.0.7",
"@types/js-cookie": "^3.0.6",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"autoprefixer": "^10.4.20",
"bun-types": "^1.1.34",
"cypress": "^13.15.2",
"cypress-file-upload": "^5.0.8",
"daisyui": "^4.12.14",
"eslint": "~8.15.0",
"eslint-config-prettier": "8.1.0",
"postcss": "^8.4.49",
"postcss-import": "^16.1.0",
"postcss-nesting": "^13.0.1",
"prettier": "^2.8.8",
"typescript": "^4.9.5"
}
}
{
"name": "online-energieausweis",
"version": "0.0.1",
"license": "GPL V3.0",
"type": "module",
"scripts": {
"dev": "bun astro dev",
"build": "bun astro build",
"preview": "bun astro preview",
"astro": "astro",
"test:e2e": "cypress run",
"test:unit": "bun test",
"format": "prettier --write .",
"build:production": "astro build && bun --bun server.ts",
"i18n:generate": "bunx astro-i18next generate",
"prisma:studio": "bunx prisma studio --schema=./node_modules/@ibcornelsen/database/prisma/schema.prisma"
},
"private": true,
"dependencies": {
"@astrojs/mdx": "^3.1.9",
"@astrojs/node": "^8.3.4",
"@astrojs/svelte": "^2.2.0",
"@astrojs/tailwind": "^3.1.3",
"@ibcornelsen/api": "link:@ibcornelsen/api",
"@ibcornelsen/database": "link:@ibcornelsen/database",
"@ibcornelsen/ui": "^0.0.2",
"@mollie/api-client": "^3.7.0",
"@pdfme/common": "^5.1.7",
"@pdfme/generator": "^5.1.7",
"@pdfme/ui": "^5.1.7",
"@trpc/client": "^10.45.2",
"@trpc/server": "^10.45.2",
"astro": "^4.16.10",
"astro-i18next": "1.0.0-beta.21",
"body-scroll-lock": "^4.0.0-beta.0",
"buffer": "^6.0.3",
"bun": "^1.1.34",
"caniuse-lite": "^1.0.30001684",
"csvtojson": "^2.0.10",
"express": "^4.21.1",
"flag-icons": "^6.15.0",
"fontkit": "^2.0.4",
"i18next": "^23.16.5",
"i18next-fs-backend": "^2.3.2",
"i18next-http-backend": "^2.6.2",
"js-cookie": "^3.0.5",
"js-interpolate": "^1.0.1",
"katex": "^0.16.11",
"moment": "^2.30.1",
"moment-timezone": "^0.5.46",
"postcss-nested": "^7.0.2",
"radix-svelte-icons": "^1.0.0",
"sass": "^1.80.6",
"svelte": "^3.59.2",
"svelte-dialogs": "^1.2.2",
"svelte-preprocess": "^5.1.4",
"svelte-ripple-action": "^1.0.6",
"tailwindcss": "^3.4.14",
"trpc-openapi": "^1.2.0",
"uuid": "^9.0.1",
"zod": "^3.23.8"
},
"devDependencies": {
"@faker-js/faker": "^8.4.1",
"@tailwindcss/typography": "^0.5.15",
"@types/body-scroll-lock": "^3.1.2",
"@types/express": "^5.0.0",
"@types/fontkit": "^2.0.7",
"@types/js-cookie": "^3.0.6",
"@types/uuid": "^9.0.8",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"autoprefixer": "^10.4.20",
"bun-types": "^1.1.34",
"cypress": "^13.15.2",
"cypress-file-upload": "^5.0.8",
"daisyui": "^4.12.14",
"eslint": "~8.15.0",
"eslint-config-prettier": "8.1.0",
"postcss": "^8.4.49",
"postcss-import": "^16.1.0",
"postcss-nesting": "^13.0.1",
"prettier": "^2.8.8",
"typescript": "^4.9.5"
}
}

View File

@@ -1,86 +1,86 @@
import {
BenutzerClient,
GebaeudeAufnahmeClient,
GebaeudeClient,
UploadedGebaeudeBild,
VerbrauchsausweisWohnenClient,
} from "#components/Ausweis/types.js";
import { exclude } from "#lib/exclude.js";
import { client } from "src/trpc.js";
import { bilderHochladen } from "./bilderHochladen.js";
import { addNotification } from "@ibcornelsen/ui";
export async function verbrauchsausweisWohnenSpeichern(
ausweis: VerbrauchsausweisWohnenClient,
gebaeude: GebaeudeClient,
gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient,
images: (UploadedGebaeudeBild & { base64?: string })[],
user: BenutzerClient
) {
if (ausweis.uid) {
// Anscheinend wurde der Ausweis bereits erstellt und hat eine UID.
// Jetzt müssen wir ihn nun nur noch abspeichern.
try {
await client.v1.verbrauchsausweisWohnen[2016].speichern.mutate({
...ausweis,
gebaeude_aufnahme_allgemein: {
...exclude(
gebaeude_aufnahme_allgemein,
["erstellungsdatum", "events", "ausstellungsdatum", "rechnungen"]
),
gebaeude_stammdaten: {
...exclude(gebaeude, [
"gebaeude_bilder",
]),
},
},
});
images = await bilderHochladen(images, gebaeude.uid);
return { uid: ausweis.uid, gebaeude_uid: gebaeude.uid, gebaeude_aufnahme_uid: gebaeude_aufnahme_allgemein.uid };
} catch (e) {
// TODO: Ticket mit Fehldermeldung abschicken.
}
} else {
// Wir speichern den Ausweis ab und leiten auf die "ausweis-gespeichert" Seite weiter.
try {
const response =
await client.v1.verbrauchsausweisWohnen[2016].erstellen.mutate({
...ausweis,
gebaeude_aufnahme_allgemein: {
...gebaeude_aufnahme_allgemein,
gebaeude_stammdaten: {
...gebaeude,
},
},
});
images = await bilderHochladen(images, response.gebaeude_uid);
return response;
} catch (e: any) {
await client.v1.tickets.erstellen.mutate({
titel: "Ausweis konnte nicht gespeichert werden",
beschreibung: e.stack,
email: user.email ?? "",
metadata: JSON.stringify({
ausweis,
}),
});
// TODO: Ticket mit Fehldermeldung abschicken.
}
}
addNotification({
dismissable: false,
message:
"Ausweis konnte nicht gespeichert werden, bitte versuchen sie es erneut.",
subtext:
"Sollte das Problem weiterhin bestehen, kontaktieren sie bitte den Support.",
timeout: 6000,
type: "error",
});
return null;
}
import {
BenutzerClient,
GebaeudeAufnahmeClient,
GebaeudeClient,
UploadedGebaeudeBild,
VerbrauchsausweisWohnenClient,
} from "#components/Ausweis/types.js";
import { exclude } from "#lib/exclude.js";
import { client } from "src/trpc.js";
import { bilderHochladen } from "./bilderHochladen.js";
import { addNotification } from "@ibcornelsen/ui";
export async function verbrauchsausweisWohnenSpeichern(
ausweis: VerbrauchsausweisWohnenClient,
gebaeude: GebaeudeClient,
gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient,
images: (UploadedGebaeudeBild & { base64?: string })[],
user: BenutzerClient
) {
if (ausweis.uid) {
// Anscheinend wurde der Ausweis bereits erstellt und hat eine UID.
// Jetzt müssen wir ihn nun nur noch abspeichern.
try {
await client.v1.verbrauchsausweisWohnen[2016].speichern.mutate({
...ausweis,
gebaeude_aufnahme_allgemein: {
...exclude(
gebaeude_aufnahme_allgemein,
["erstellungsdatum", "events", "ausstellungsdatum", "rechnungen"]
),
gebaeude_stammdaten: {
...exclude(gebaeude, [
"gebaeude_bilder",
]),
},
},
});
images = await bilderHochladen(images, gebaeude.uid);
return { uid: ausweis.uid, gebaeude_uid: gebaeude.uid, gebaeude_aufnahme_uid: gebaeude_aufnahme_allgemein.uid };
} catch (e) {
// TODO: Ticket mit Fehldermeldung abschicken.
}
} else {
// Wir speichern den Ausweis ab und leiten auf die "ausweis-gespeichert" Seite weiter.
try {
const response =
await client.v1.verbrauchsausweisWohnen[2016].erstellen.mutate({
...ausweis,
gebaeude_aufnahme_allgemein: {
...gebaeude_aufnahme_allgemein,
gebaeude_stammdaten: {
...gebaeude,
},
},
});
images = await bilderHochladen(images, response.gebaeude_uid);
return response;
} catch (e: any) {
await client.v1.tickets.erstellen.mutate({
titel: "Ausweis konnte nicht gespeichert werden",
beschreibung: e.stack,
email: user.email ?? "",
metadata: JSON.stringify({
ausweis,
}),
});
// TODO: Ticket mit Fehldermeldung abschicken.
}
}
addNotification({
dismissable: false,
message:
"Ausweis konnte nicht gespeichert werden, bitte versuchen sie es erneut.",
subtext:
"Sollte das Problem weiterhin bestehen, kontaktieren sie bitte den Support.",
timeout: 6000,
type: "error",
});
return null;
}

View File

@@ -1,242 +1,232 @@
<script lang="ts">
<<<<<<< HEAD
=======
console.log("Hallo Welt");
>>>>>>> origin/UMBE
import HelpLabel from "#labels/HelpLabel.svelte";
import Inputlabel from "#labels/InputLabel.svelte";
//import Label from "#components/Label.svelte";
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
import { addNotification, deleteNotification } from "@ibcornelsen/ui";
import TagInput from "../TagInput.svelte";
import type {
BedarfsausweisWohnen,
VerbrauchsausweisGewerbe,
} from "@ibcornelsen/database/client";
import { Enums } from "@ibcornelsen/database/client";
import {
GebaeudeAufnahmeClient,
GebaeudeClient,
VerbrauchsausweisWohnenClient,
} from "./types.js";
export let gebaeude: GebaeudeClient;
export let ausweis:
| VerbrauchsausweisWohnenClient
| VerbrauchsausweisGewerbe
| BedarfsausweisWohnen;
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient;
</script>
<<<<<<< HEAD
<div class="bereich-box relative grid
=======
<div
class="bereich-box grid
>>>>>>> origin/UMBE
grid-cols-1 gap-x-4 gap-y-8
sm:grid-cols-2 sm:gap-x-6 sm:gap-y-8
xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
"
>
<!-- Anlass für Energieausweis -->
<<<<<<< HEAD
<!-- Anlass für Energieausweis -->
=======
<div class="input-standard order-1 md:order-1 xl:order-1">
<Inputlabel title="Anlass *"></Inputlabel>
>>>>>>> origin/UMBE
<select
id="ausstellgrund"
class="rounded-e-none"
name="ausstellgrund"
placeholder="Anlass"
required
>
{#each Object.entries(Enums.Ausstellgrund) as [name, ausstellgrund]}
<option value={ausstellgrund}>{name}</option>
{/each}
</select>
<div class="help-label">
<HelpLabel>Bitte wählen Sie den Anlass.</HelpLabel>
</div>
</div>
<!-- Gebäudetyp -->
<div class="input-standard order-2 md:order-3 xl:order-2">
<Inputlabel title="Gebäudetyp *"></Inputlabel>
<select
name="gebaeudetyp"
data-test="gebaeudetyp"
required
bind:value={gebaeude_aufnahme_allgemein.gebaeudetyp}
>
<option disabled>Bitte auswählen</option>
<option value="Einfamilienhaus">Einfamilienhaus</option>
<option value="Freistehendes Einfamilienhaus"
>Freistehendes Einfamilienhaus</option
>
<option value="Freistehendes Zweifamilienhaus"
>Freistehendes Zweifamilienhaus</option
>
<option value="Doppelhaushälfte">Doppelhaushälfte</option>
<option value="Reihenendhaus">Reihenendhaus</option>
<option value="Reihenmittelhaus">Reihenmittelhaus</option>
<option value="Mehrfamilienhaus">Mehrfamilienhaus</option>
<option value="Wohn- und Geschäftshaus"
>Wohn- und Geschäftshaus</option
>
<option value="Atrium-Bungalow">Atrium-Bungalow</option>
<option value="Winkelbungalow">Winkelbungalow</option>
</select>
<div class="help-label">
<HelpLabel>Bitte wählen Sie hier den Gebäudetyp aus.</HelpLabel>
</div>
</div>
<!-- Anzahl der Wohnungen -->
<div class="input-standard order-3 md:order-5 xl:order-3">
<Inputlabel title="Anzahl Wohnungen *"></Inputlabel>
<input
id="einheiten"
class="rounded-e-none"
name="einheiten"
type="number"
required
autocomplete="off"
data-msg="Pflichtfeld"
maxlength="3"
bind:value={gebaeude_aufnahme_allgemein.einheiten}
/>
<div class="help-label">
<HelpLabel>
Bitte geben Sie hier die Anzahl der Wohnungen ein, die sich im
Gebäude befinden.
</HelpLabel>
</div>
</div>
<!-- Sanierungsstatus -->
<div class="input-standard order-4 md:order-2 xl:order-4">
<Inputlabel title="Sanierungsstatus *"></Inputlabel>
<select
name="saniert"
class=""
required
bind:value={gebaeude_aufnahme_allgemein.saniert}
>
<option disabled selected value={false}>Bitte auswählen</option>
<option value={true}>saniert</option>
<option value={false}>unsaniert</option>
</select>
<div class="help-label">
<HelpLabel>
Bitte geben Sie an ob das Gebäude energetisch saniert oder
unsaniert ist. Wenn das Dach mindestens 12 cm gedämmt und
Heizung sowie Fenster nicht älter als 30 Jahre sind, können Sie
saniert auswählen.
</HelpLabel>
</div>
</div>
<!-- Baujahr -->
<div class="input-standard order-5 md:order-4 xl:order-5">
<Inputlabel title="Baujahr *"></Inputlabel>
<TagInput
name="baujahr_gebaeude"
type="number"
onlyUnique={true}
minChars={4}
onFocusIn={() => {
addNotification({
message: "Info",
subtext:
"Wussten sie, dass sie mehrere Jahre angeben können in denen z.B. Renovierungen an ihrem Gebäude durchgeführt wurden. Drücken sie dafür einfach <kbd>Enter</kbd> oder <kbd>Space</kbd> nach jedem Jahr.",
dismissable: true,
uid: "GEBAEUDE_BAUJAHR",
timeout: 0,
type: "info",
});
}}
onFocusOut={() => {
deleteNotification("GEBAEUDE_BAUJAHR");
}}
className={auditHeizungGebaeudeBaujahr(gebaeude_aufnahme_allgemein)
? "linked"
: ""}
bind:tags={gebaeude_aufnahme_allgemein.baujahr_gebaeude}
/>
<div class="help-label">
<HelpLabel>
Bitte geben Sie hier das Baujahr des Gebäudes ein. Sollte eine
eine grundlegende Sanierung von Dach, Fenster und Heizung
stattgefunden haben, dann berücksichtigen Sie das in dem Sie bei
Sanierungsstatus -saniert- angeben.
</HelpLabel>
</div>
</div>
<!-- Baujahr Heizung -->
<div class="input-standard order-6 md:order-6 xl:order-6">
<Inputlabel title="Baujahr Heizung *"></Inputlabel>
<TagInput
name="baujahr_heizung"
type="number"
onlyUnique={true}
minChars={4}
onFocusIn={() => {
addNotification({
message: "Info",
subtext:
"Wussten sie, dass sie mehrere Jahre angeben können in denen z.B. Renovierungen an ihrer Heizung durchgeführt wurden. Drücken sie dafür einfach <kbd>Enter</kbd> oder <kbd>Space</kbd> nach jedem Jahr.",
dismissable: true,
uid: "HEIZUNG_BAUJAHR",
timeout: 0,
type: "info",
});
}}
onFocusOut={() => {
deleteNotification("HEIZUNG_BAUJAHR");
}}
className={auditHeizungGebaeudeBaujahr(gebaeude_aufnahme_allgemein)
? "linked"
: ""}
bind:tags={gebaeude_aufnahme_allgemein.baujahr_heizung}
/>
<div class="help-label">
<HelpLabel>
Bitte geben Sie hier das Baujahr der Heizungsanlage ein. Sollten
unterschiedliche Baujahre vorliegen, dann geben Sie einen
Zeitbereich ein <br />z.B. 1994-2001.
</HelpLabel>
</div>
</div>
</div>
<script lang="ts">
import HelpLabel from "#labels/HelpLabel.svelte";
import Inputlabel from "#labels/InputLabel.svelte";
//import Label from "#components/Label.svelte";
import { auditHeizungGebaeudeBaujahr } from "../Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
import { addNotification, deleteNotification } from "@ibcornelsen/ui";
import TagInput from "../TagInput.svelte";
import type {
BedarfsausweisWohnen,
VerbrauchsausweisGewerbe,
} from "@ibcornelsen/database/client";
import { Enums } from "@ibcornelsen/database/client";
import {
GebaeudeAufnahmeClient,
GebaeudeClient,
VerbrauchsausweisWohnenClient,
} from "./types.js";
export let gebaeude: GebaeudeClient;
export let ausweis:
| VerbrauchsausweisWohnenClient
| VerbrauchsausweisGewerbe
| BedarfsausweisWohnen;
export let gebaeude_aufnahme_allgemein: GebaeudeAufnahmeClient;
</script>
<div class="bereich-box relative grid
grid-cols-1 gap-x-4 gap-y-8
sm:grid-cols-2 sm:gap-x-6 sm:gap-y-8
xl:grid-cols-3 xl:gap-x-8 xl:gap-y-8
"
>
<!-- Anlass für Energieausweis -->
<<<<<<< HEAD
<!-- Anlass für Energieausweis -->
=======
<div class="input-standard order-1 md:order-1 xl:order-1">
<Inputlabel title="Anlass *"></Inputlabel>
>>>>>>> origin/UMBE
<select
id="ausstellgrund"
class="rounded-e-none"
name="ausstellgrund"
placeholder="Anlass"
required
>
{#each Object.entries(Enums.Ausstellgrund) as [name, ausstellgrund]}
<option value={ausstellgrund}>{name}</option>
{/each}
</select>
<div class="help-label">
<HelpLabel>Bitte wählen Sie den Anlass.</HelpLabel>
</div>
</div>
<!-- Gebäudetyp -->
<div class="input-standard order-2 md:order-3 xl:order-2">
<Inputlabel title="Gebäudetyp *"></Inputlabel>
<select
name="gebaeudetyp"
data-test="gebaeudetyp"
required
bind:value={gebaeude_aufnahme_allgemein.gebaeudetyp}
>
<option disabled>Bitte auswählen</option>
<option value="Einfamilienhaus">Einfamilienhaus</option>
<option value="Freistehendes Einfamilienhaus"
>Freistehendes Einfamilienhaus</option
>
<option value="Freistehendes Zweifamilienhaus"
>Freistehendes Zweifamilienhaus</option
>
<option value="Doppelhaushälfte">Doppelhaushälfte</option>
<option value="Reihenendhaus">Reihenendhaus</option>
<option value="Reihenmittelhaus">Reihenmittelhaus</option>
<option value="Mehrfamilienhaus">Mehrfamilienhaus</option>
<option value="Wohn- und Geschäftshaus"
>Wohn- und Geschäftshaus</option
>
<option value="Atrium-Bungalow">Atrium-Bungalow</option>
<option value="Winkelbungalow">Winkelbungalow</option>
</select>
<div class="help-label">
<HelpLabel>Bitte wählen Sie hier den Gebäudetyp aus.</HelpLabel>
</div>
</div>
<!-- Anzahl der Wohnungen -->
<div class="input-standard order-3 md:order-5 xl:order-3">
<Inputlabel title="Anzahl Wohnungen *"></Inputlabel>
<input
id="einheiten"
class="rounded-e-none"
name="einheiten"
type="number"
required
autocomplete="off"
data-msg="Pflichtfeld"
maxlength="3"
bind:value={gebaeude_aufnahme_allgemein.einheiten}
/>
<div class="help-label">
<HelpLabel>
Bitte geben Sie hier die Anzahl der Wohnungen ein, die sich im
Gebäude befinden.
</HelpLabel>
</div>
</div>
<!-- Sanierungsstatus -->
<div class="input-standard order-4 md:order-2 xl:order-4">
<Inputlabel title="Sanierungsstatus *"></Inputlabel>
<select
name="saniert"
class=""
required
bind:value={gebaeude_aufnahme_allgemein.saniert}
>
<option disabled selected value={false}>Bitte auswählen</option>
<option value={true}>saniert</option>
<option value={false}>unsaniert</option>
</select>
<div class="help-label">
<HelpLabel>
Bitte geben Sie an ob das Gebäude energetisch saniert oder
unsaniert ist. Wenn das Dach mindestens 12 cm gedämmt und
Heizung sowie Fenster nicht älter als 30 Jahre sind, können Sie
saniert auswählen.
</HelpLabel>
</div>
</div>
<!-- Baujahr -->
<div class="input-standard order-5 md:order-4 xl:order-5">
<Inputlabel title="Baujahr *"></Inputlabel>
<TagInput
name="baujahr_gebaeude"
type="number"
onlyUnique={true}
minChars={4}
onFocusIn={() => {
addNotification({
message: "Info",
subtext:
"Wussten sie, dass sie mehrere Jahre angeben können in denen z.B. Renovierungen an ihrem Gebäude durchgeführt wurden. Drücken sie dafür einfach <kbd>Enter</kbd> oder <kbd>Space</kbd> nach jedem Jahr.",
dismissable: true,
uid: "GEBAEUDE_BAUJAHR",
timeout: 0,
type: "info",
});
}}
onFocusOut={() => {
deleteNotification("GEBAEUDE_BAUJAHR");
}}
className={auditHeizungGebaeudeBaujahr(gebaeude_aufnahme_allgemein)
? "linked"
: ""}
bind:tags={gebaeude_aufnahme_allgemein.baujahr_gebaeude}
/>
<div class="help-label">
<HelpLabel>
Bitte geben Sie hier das Baujahr des Gebäudes ein. Sollte eine
eine grundlegende Sanierung von Dach, Fenster und Heizung
stattgefunden haben, dann berücksichtigen Sie das in dem Sie bei
Sanierungsstatus -saniert- angeben.
</HelpLabel>
</div>
</div>
<!-- Baujahr Heizung -->
<div class="input-standard order-6 md:order-6 xl:order-6">
<Inputlabel title="Baujahr Heizung *"></Inputlabel>
<TagInput
name="baujahr_heizung"
type="number"
onlyUnique={true}
minChars={4}
onFocusIn={() => {
addNotification({
message: "Info",
subtext:
"Wussten sie, dass sie mehrere Jahre angeben können in denen z.B. Renovierungen an ihrer Heizung durchgeführt wurden. Drücken sie dafür einfach <kbd>Enter</kbd> oder <kbd>Space</kbd> nach jedem Jahr.",
dismissable: true,
uid: "HEIZUNG_BAUJAHR",
timeout: 0,
type: "info",
});
}}
onFocusOut={() => {
deleteNotification("HEIZUNG_BAUJAHR");
}}
className={auditHeizungGebaeudeBaujahr(gebaeude_aufnahme_allgemein)
? "linked"
: ""}
bind:tags={gebaeude_aufnahme_allgemein.baujahr_heizung}
/>
<div class="help-label">
<HelpLabel>
Bitte geben Sie hier das Baujahr der Heizungsanlage ein. Sollten
unterschiedliche Baujahre vorliegen, dann geben Sie einen
Zeitbereich ein <br />z.B. 1994-2001.
</HelpLabel>
</div>
</div>
</div>

View File

@@ -1,67 +1,67 @@
<script lang="ts">
import ImageGrid from "../ImageGrid.svelte";;
import { Enums, type BedarfsausweisWohnen, type VerbrauchsausweisGewerbe } from "@ibcornelsen/database/client";
import { GebaeudeClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "./types.js";
export let images: UploadedGebaeudeBild[] = [];
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe | BedarfsausweisWohnen;
export let gebaeude: GebaeudeClient;
</script>
<div class="grid grid-cols-2 gap-4">
<div class="rounded-lg border-4 p-4 bg-white">
<input type="file" class="image_upload" multiple />
<p class="font-bold mb-2">
<span class="text-red-500">WICHTIG:</span>
Bild Upload - Heizungsanlage bzw. des Wärmeerzeugers (1 bis 4 Bilder)
</p>
<p>
Seit Mai 2021 wird das neue Gebäudeenergiegesetz (GEG) in
Deutschland angewendet. Daher werden von nun an Bilder vom Gebäude
zur Einschätzung der Modernisierungsempfehlungen benötigt. Hierfür
müssen laut Gesetzgeber Detailbilder vom Sanierungszustand bzw. der
Gebäudehülle und der Anlagentechnik (Wärmeerzeuger etc.) zur
Verfügung gestellt werden. Diese Bilder erscheinen nicht auf Ihrem
Energieausweis.
</p>
<br />
<ol>
<li>1.Bild : Heizungsraum mit Heizkessel bzw. Heizungsanlage*</li>
<li>
2.Bild : <em
>(wenn möglich, Warmwasserleitungen bzw. die Heizungsrohre)</em
>
</li>
<li>
3.Bild : <em
>(wenn möglich, Detailbild des Wärmeerzeugers bzw.
Heizkessel)</em
>
</li>
<li>
4.Bild : <em
>(wenn möglich, Bild des Typenschildes der Heizung)</em
>
</li>
</ol>
<p>* erforderliches Bild</p>
<br />
<p>
Idealerweise sollte der Heizungsraum mit Heizkessel bzw.
Heizungsanlage fotografiert werden. Die Warmwasserleitungen bzw. die
Heizungsrohre sollten gut sichtbar sein und vorhandene bzw. nicht
vorhandene Dämmung sollte erkennbar sein.
</p>
</div>
<div class="rounded-lg border-4 p-4 bg-white">
<p>
Diese Bilder erscheinen <span class="text-red-500">nicht</span> auf
Ihrem Energieausweis!<br />
<strong>Bitte laden Sie hier mind. 1 Bild hoch:</strong>
</p>
<ImageGrid name={"heizung_image"} kategorie={Enums.BilderKategorie.Heizung} max={4} bind:gebaeude bind:images bind:ausweis />
</div>
</div>
<script lang="ts">
import ImageGrid from "../ImageGrid.svelte";;
import { Enums, type BedarfsausweisWohnen, type VerbrauchsausweisGewerbe } from "@ibcornelsen/database/client";
import { GebaeudeClient, UploadedGebaeudeBild, VerbrauchsausweisWohnenClient } from "./types.js";
export let images: UploadedGebaeudeBild[] = [];
export let ausweis: VerbrauchsausweisWohnenClient | VerbrauchsausweisGewerbe | BedarfsausweisWohnen;
export let gebaeude: GebaeudeClient;
</script>
<div class="grid grid-cols-2 gap-4">
<div class="rounded-lg border-4 p-4 bg-white">
<input type="file" class="image_upload" multiple />
<p class="font-bold mb-2">
<span class="text-red-500">WICHTIG:</span>
Bild Upload - Heizungsanlage bzw. des Wärmeerzeugers (1 bis 4 Bilder)
</p>
<p>
Seit Mai 2021 wird das neue Gebäudeenergiegesetz (GEG) in
Deutschland angewendet. Daher werden von nun an Bilder vom Gebäude
zur Einschätzung der Modernisierungsempfehlungen benötigt. Hierfür
müssen laut Gesetzgeber Detailbilder vom Sanierungszustand bzw. der
Gebäudehülle und der Anlagentechnik (Wärmeerzeuger etc.) zur
Verfügung gestellt werden. Diese Bilder erscheinen nicht auf Ihrem
Energieausweis.
</p>
<br />
<ol>
<li>1.Bild : Heizungsraum mit Heizkessel bzw. Heizungsanlage*</li>
<li>
2.Bild : <em
>(wenn möglich, Warmwasserleitungen bzw. die Heizungsrohre)</em
>
</li>
<li>
3.Bild : <em
>(wenn möglich, Detailbild des Wärmeerzeugers bzw.
Heizkessel)</em
>
</li>
<li>
4.Bild : <em
>(wenn möglich, Bild des Typenschildes der Heizung)</em
>
</li>
</ol>
<p>* erforderliches Bild</p>
<br />
<p>
Idealerweise sollte der Heizungsraum mit Heizkessel bzw.
Heizungsanlage fotografiert werden. Die Warmwasserleitungen bzw. die
Heizungsrohre sollten gut sichtbar sein und vorhandene bzw. nicht
vorhandene Dämmung sollte erkennbar sein.
</p>
</div>
<div class="rounded-lg border-4 p-4 bg-white">
<p>
Diese Bilder erscheinen <span class="text-red-500">nicht</span> auf
Ihrem Energieausweis!<br />
<strong>Bitte laden Sie hier mind. 1 Bild hoch:</strong>
</p>
<ImageGrid name={"heizung_image"} kategorie={Enums.BilderKategorie.Heizung} max={4} bind:gebaeude bind:images bind:ausweis />
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@@ -1,56 +1,56 @@
<script>
import { PRICES } from "#lib/constants";
</script>
<div id ="card-BAG-promo" class="box card">
<div class="">
<h2>Bedarfsausweis Gewerbe</h2>
<hr class="mb-2">
<div class="flex flex-row mb-2 mt-2 w-full items-end">
<div>
<img class="w-[100%] !min-w-[100px]" src="/images/right-sidebar/UMBE_gewerbegebaeude.svg" alt="Gewerbe Bedarfsausweis"/>
</div>
<div>
<p class="promo tracking-tighter text-2xl text-gray-700 pl-3">ab<span class="promo pl-2">{PRICES.BedarfsausweisGewerbe[0]}</span></p>
</div>
</div>
<div class="white">
<div class="variante">fundiert (empfohlen)</div>
<div class="services"><div>Mehrzonenmodell nach DIN 18599.</div><div class="check"></div></div>
<div class="services"><div>Zulässig bei Vermietung oder Verkauf.</div><div class="check"></div></div>
<div class="services"><div>Grundlage für Sanierungsvarianten.</div><div class="check-no"></div></div>
<div class="services"><div>Objektiveres, besser vergleichbares Ergebnis.</div><div class="check-no"></div></div>
</div>
<a href="./energieausweis-erstellen/bedarfsausweis-gewerbe/" id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >jetzt online erstellen</a>
<a href="./energieausweis-erstellen/bedarfsausweis-gewerbe/" id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-primary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >zur Produktübersicht</a>
</div>
</div>
<style lang="scss">
#card-BAG-promo{
.white{@apply text-center text-black p-2 grid grid-rows-subgrid row-span-6}
.variante{@apply w-fit text-black justify-self-end mr-3}
.variante{@apply text-2xl}
.services{@apply text-start py-2 grid grid-cols-[1fr_minmax(10px,50px)]}
.services:not(:last-child){@apply border-b-[1px] border-gray-200}
.check{@apply justify-self-end font-bold text-green-700}
.check-no{@apply justify-self-end font-bold text-red-700}
}
<script>
import { PRICES } from "#lib/constants";
</script>
<div id ="card-BAG-promo" class="box card">
<div class="">
<h2>Bedarfsausweis Gewerbe</h2>
<hr class="mb-2">
<div class="flex flex-row mb-2 mt-2 w-full items-end">
<div>
<img class="w-[100%] !min-w-[100px]" src="/images/right-sidebar/UMBE_gewerbegebaeude.svg" alt="Gewerbe Bedarfsausweis"/>
</div>
<div>
<p class="promo tracking-tighter text-2xl text-gray-700 pl-3">ab<span class="promo pl-2">{PRICES.BedarfsausweisGewerbe[0]}</span></p>
</div>
</div>
<div class="white">
<div class="variante">fundiert (empfohlen)</div>
<div class="services"><div>Mehrzonenmodell nach DIN 18599.</div><div class="check"></div></div>
<div class="services"><div>Zulässig bei Vermietung oder Verkauf.</div><div class="check"></div></div>
<div class="services"><div>Grundlage für Sanierungsvarianten.</div><div class="check-no"></div></div>
<div class="services"><div>Objektiveres, besser vergleichbares Ergebnis.</div><div class="check-no"></div></div>
</div>
<a href="./energieausweis-erstellen/bedarfsausweis-gewerbe/" id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >jetzt online erstellen</a>
<a href="./energieausweis-erstellen/bedarfsausweis-gewerbe/" id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-primary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >zur Produktübersicht</a>
</div>
</div>
<style lang="scss">
#card-BAG-promo{
.white{@apply text-center text-black p-2 grid grid-rows-subgrid row-span-6}
.variante{@apply w-fit text-black justify-self-end mr-3}
.variante{@apply text-2xl}
.services{@apply text-start py-2 grid grid-cols-[1fr_minmax(10px,50px)]}
.services:not(:last-child){@apply border-b-[1px] border-gray-200}
.check{@apply justify-self-end font-bold text-green-700}
.check-no{@apply justify-self-end font-bold text-red-700}
}
</style>

View File

@@ -1,56 +1,56 @@
<script>
import { PRICES } from "#lib/constants";
</script>
<div id ="card-BA-promo" class="box card">
<div class="">
<h2>Bedarfssausweis Wohngebäude</h2>
<hr class="mb-2">
<div class="flex flex-row mb-2 mt-2 w-full items-end">
<div>
<img class="w-[100%] !min-w-[100px]" src="/images/right-sidebar/UMBE_wohngebaeude.svg" alt="Wohnhaus Bedarfsausweis"/>
</div>
<div>
<p class="promo tracking-tighter text-2xl text-gray-700 pl-3">ab<span class="promo pl-2">{PRICES.BedarfsausweisWohnen[0]}</span></p>
</div>
</div>
<div class="white">
<div class="variante">fundiert (empfohlen)</div>
<div class="services"><div>Erfassung der Gebäudegeometrie.</div><div class="check"></div></div>
<div class="services"><div>Für Vermietung, Verkauf und Finanzierung.</div><div class="check"></div></div>
<div class="services"><div>Zulässig auch für unsanierte Objekte.</div><div class="check"></div></div>
<div class="services"><div>Kann als Grundlage für den ISFP dienen.</div><div class="check"></div></div>
<div class="services"><div>Objektivere Berechnungsmethode nach DIN 18599.</div><div class="check"></div></div>
</div>
<a href="./energieausweis-erstellen/bedarfsausweis-wohngebaeude/" id="link-BA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >jetzt online erstellen</a>
<a href="./energieausweis-erstellen/bedarfsausweis-wohngebaeude/" id="link-BA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-primary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >zur Produktübersicht</a>
</div>
</div>
<style lang="scss">
#card-BA-promo{
.white{@apply text-center text-black p-2 grid grid-rows-subgrid row-span-6}
.variante{@apply w-fit text-black justify-self-end mr-3}
.variante{@apply text-2xl}
.services{@apply text-start py-2 grid grid-cols-[1fr_minmax(10px,50px)]}
.services:not(:last-child){@apply border-b-[1px] border-gray-200}
.check{@apply justify-self-end font-bold text-green-700}
}
<script>
import { PRICES } from "#lib/constants";
</script>
<div id ="card-BA-promo" class="box card">
<div class="">
<h2>Bedarfssausweis Wohngebäude</h2>
<hr class="mb-2">
<div class="flex flex-row mb-2 mt-2 w-full items-end">
<div>
<img class="w-[100%] !min-w-[100px]" src="/images/right-sidebar/UMBE_wohngebaeude.svg" alt="Wohnhaus Bedarfsausweis"/>
</div>
<div>
<p class="promo tracking-tighter text-2xl text-gray-700 pl-3">ab<span class="promo pl-2">{PRICES.BedarfsausweisWohnen[0]}</span></p>
</div>
</div>
<div class="white">
<div class="variante">fundiert (empfohlen)</div>
<div class="services"><div>Erfassung der Gebäudegeometrie.</div><div class="check"></div></div>
<div class="services"><div>Für Vermietung, Verkauf und Finanzierung.</div><div class="check"></div></div>
<div class="services"><div>Zulässig auch für unsanierte Objekte.</div><div class="check"></div></div>
<div class="services"><div>Kann als Grundlage für den ISFP dienen.</div><div class="check"></div></div>
<div class="services"><div>Objektivere Berechnungsmethode nach DIN 18599.</div><div class="check"></div></div>
</div>
<a href="./energieausweis-erstellen/bedarfsausweis-wohngebaeude/" id="link-BA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >jetzt online erstellen</a>
<a href="./energieausweis-erstellen/bedarfsausweis-wohngebaeude/" id="link-BA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-primary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >zur Produktübersicht</a>
</div>
</div>
<style lang="scss">
#card-BA-promo{
.white{@apply text-center text-black p-2 grid grid-rows-subgrid row-span-6}
.variante{@apply w-fit text-black justify-self-end mr-3}
.variante{@apply text-2xl}
.services{@apply text-start py-2 grid grid-cols-[1fr_minmax(10px,50px)]}
.services:not(:last-child){@apply border-b-[1px] border-gray-200}
.check{@apply justify-self-end font-bold text-green-700}
}
</style>

View File

@@ -1,56 +1,56 @@
<script>
import { PRICES } from "#lib/constants";
</script>
<div id ="card-VAG-promo" class="box card ">
<div class="">
<h2>Verbrauchsausweis Gewerbe</h2>
<hr class="mb-2">
<div class="flex flex-row mb-2 mt-2 w-full items-end">
<div>
<img class="w-[100%] !min-w-[100px]" src="/images/right-sidebar/UMBE_gewerbegebaeude.svg" alt="Gewerbe Verbrauchsausweis"/>
</div>
<div>
<p class="promo tracking-tighter text-2xl text-gray-700 pl-3">ab<span class="promo pl-2">{PRICES.VerbrauchsausweisGewerbe[0]}</span></p>
</div>
</div>
<div class="white">
<div class="variante">einfach</div>
<div class="services"><div>3 Jahresverbräuche von Heizung Gebäudestrom nötig.</div><div class="check"></div></div>
<div class="services"><div>Zulässig bei Vermietung oder Verkauf.</div><div class="check"></div></div>
<div class="services"><div>Für bauliche und energetische Maßnahmen ungeeignet.</div><div class="check-no"></div></div>
<div class="services"><div>Wird nicht immer bei den Banken akzeptiert.</div><div class="check-no"></div></div>
</div>
<a href="./energieausweis-erstellen/verbrauchsausweis-gewerbe/" id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >jetzt online erstellen</a>
<a href="./energieausweis-erstellen/verbrauchsausweis-gewerbe/" id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-primary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >zur Produktübersicht</a>
</div>
</div>
<style lang="scss">
#card-VAG-promo{
.white{@apply text-center text-black p-2 grid grid-rows-subgrid row-span-6}
.variante{@apply w-fit text-black justify-self-end mr-3}
.variante{@apply text-2xl}
.services{@apply text-start py-2 grid grid-cols-[1fr_minmax(10px,50px)]}
.services:not(:last-child){@apply border-b-[1px] border-gray-200}
.check{@apply justify-self-end font-bold text-green-700}
.check-no{@apply justify-self-end font-bold text-red-700}
}
<script>
import { PRICES } from "#lib/constants";
</script>
<div id ="card-VAG-promo" class="box card ">
<div class="">
<h2>Verbrauchsausweis Gewerbe</h2>
<hr class="mb-2">
<div class="flex flex-row mb-2 mt-2 w-full items-end">
<div>
<img class="w-[100%] !min-w-[100px]" src="/images/right-sidebar/UMBE_gewerbegebaeude.svg" alt="Gewerbe Verbrauchsausweis"/>
</div>
<div>
<p class="promo tracking-tighter text-2xl text-gray-700 pl-3">ab<span class="promo pl-2">{PRICES.VerbrauchsausweisGewerbe[0]}</span></p>
</div>
</div>
<div class="white">
<div class="variante">einfach</div>
<div class="services"><div>3 Jahresverbräuche von Heizung Gebäudestrom nötig.</div><div class="check"></div></div>
<div class="services"><div>Zulässig bei Vermietung oder Verkauf.</div><div class="check"></div></div>
<div class="services"><div>Für bauliche und energetische Maßnahmen ungeeignet.</div><div class="check-no"></div></div>
<div class="services"><div>Wird nicht immer bei den Banken akzeptiert.</div><div class="check-no"></div></div>
</div>
<a href="./energieausweis-erstellen/verbrauchsausweis-gewerbe/" id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >jetzt online erstellen</a>
<a href="./energieausweis-erstellen/verbrauchsausweis-gewerbe/" id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-primary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
" >zur Produktübersicht</a>
</div>
</div>
<style lang="scss">
#card-VAG-promo{
.white{@apply text-center text-black p-2 grid grid-rows-subgrid row-span-6}
.variante{@apply w-fit text-black justify-self-end mr-3}
.variante{@apply text-2xl}
.services{@apply text-start py-2 grid grid-cols-[1fr_minmax(10px,50px)]}
.services:not(:last-child){@apply border-b-[1px] border-gray-200}
.check{@apply justify-self-end font-bold text-green-700}
.check-no{@apply justify-self-end font-bold text-red-700}
}
</style>

View File

@@ -1,96 +1,96 @@
<script>
import { PRICES } from "#lib/constants";
</script>
<div id="card-VA-promo" class="box card bg-white px-6 py-4 mb-5">
<div class="">
<h2>Verbrauchsausweis Wohngebäude</h2>
<hr class="mb-2" />
<div class="flex flex-row mb-2 mt-2 w-full items-end">
<div>
<img
class="w-[100%] !min-w-[100px]"
src="/images/right-sidebar/UMBE_wohngebaeude.svg"
alt="Wohnhaus Verbrauchsausweis"
/>
</div>
<div>
<p class="promo tracking-tighter text-2xl text-gray-700 pl-3">
ab<span class="promo pl-2"
>{PRICES.VerbrauchsausweisWohnen[0]}</span
>
</p>
</div>
</div>
<div class="white">
<div class="variante">einfach</div>
<div class="services">
<div>3 Jahresverbräuche der Heizung benötigt.</div>
<div class="check"></div>
</div>
<div class="services">
<div>Zulässig bei Vermietung oder Verkauf.</div>
<div class="check"></div>
</div>
<div class="services">
<div>Unzulässig bei unsanierten Gebäuden vor 1978.</div>
<div class="check-no"></div>
</div>
<div class="services">
<div>Ungenau durch individuelles Heizverhalten.</div>
<div class="check-no"></div>
</div>
<div class="services">
<div>Wird nicht immer bei den Banken akzeptiert.</div>
<div class="check-no"></div>
</div>
</div>
<div class="flex flex-row flex-wrap justify-center">
<a
href="./energieausweis-erstellen/verbrauchsausweis-wohngebaeude/"
id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
">jetzt online erstellen</a
>
<a
href="./energieausweis-erstellen/verbrauchsausweis-wohngebaeude/"
id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-primary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
">zur Produktübersicht</a
>
</div>
</div>
</div>
<style lang="scss">
#card-VA-promo {
.white {
@apply text-center text-black p-2 grid grid-rows-subgrid row-span-6;
}
.variante {
@apply w-fit text-black justify-self-end mr-3;
}
.variante {
@apply text-2xl;
}
.services {
@apply text-start py-2 grid grid-cols-[1fr_minmax(10px,50px)];
}
.services:not(:last-child) {
@apply border-b-[1px] border-gray-200;
}
.check {
@apply justify-self-end font-bold text-green-700;
}
.check-no {
@apply justify-self-end font-bold text-red-700;
}
}
</style>
<script>
import { PRICES } from "#lib/constants";
</script>
<div id="card-VA-promo" class="box card bg-white px-6 py-4 mb-5">
<div class="">
<h2>Verbrauchsausweis Wohngebäude</h2>
<hr class="mb-2" />
<div class="flex flex-row mb-2 mt-2 w-full items-end">
<div>
<img
class="w-[100%] !min-w-[100px]"
src="/images/right-sidebar/UMBE_wohngebaeude.svg"
alt="Wohnhaus Verbrauchsausweis"
/>
</div>
<div>
<p class="promo tracking-tighter text-2xl text-gray-700 pl-3">
ab<span class="promo pl-2"
>{PRICES.VerbrauchsausweisWohnen[0]}</span
>
</p>
</div>
</div>
<div class="white">
<div class="variante">einfach</div>
<div class="services">
<div>3 Jahresverbräuche der Heizung benötigt.</div>
<div class="check"></div>
</div>
<div class="services">
<div>Zulässig bei Vermietung oder Verkauf.</div>
<div class="check"></div>
</div>
<div class="services">
<div>Unzulässig bei unsanierten Gebäuden vor 1978.</div>
<div class="check-no"></div>
</div>
<div class="services">
<div>Ungenau durch individuelles Heizverhalten.</div>
<div class="check-no"></div>
</div>
<div class="services">
<div>Wird nicht immer bei den Banken akzeptiert.</div>
<div class="check-no"></div>
</div>
</div>
<div class="flex flex-row flex-wrap justify-center">
<a
href="./energieausweis-erstellen/verbrauchsausweis-wohngebaeude/"
id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
">jetzt online erstellen</a
>
<a
href="./energieausweis-erstellen/verbrauchsausweis-wohngebaeude/"
id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-primary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
">zur Produktübersicht</a
>
</div>
</div>
</div>
<style lang="scss">
#card-VA-promo {
.white {
@apply text-center text-black p-2 grid grid-rows-subgrid row-span-6;
}
.variante {
@apply w-fit text-black justify-self-end mr-3;
}
.variante {
@apply text-2xl;
}
.services {
@apply text-start py-2 grid grid-cols-[1fr_minmax(10px,50px)];
}
.services:not(:last-child) {
@apply border-b-[1px] border-gray-200;
}
.check {
@apply justify-self-end font-bold text-green-700;
}
.check-no {
@apply justify-self-end font-bold text-red-700;
}
}
</style>

View File

@@ -1,35 +1,35 @@
<script>
import { PRICES } from "#lib/constants";
</script>
<<<<<<< HEAD:src/components/design/sidebars/cards/cardVApromo.svelte
<div id ="cardVApromo"
class=" box card">
=======
>>>>>>> origin/UMBE:src/components/design/sidebars/cards/card-VA-promo.svelte
<div id="card-VA-promo" class=" box card bg-white px-6 py-4 mb-5">
<div class="grid">
<h2>Verbrauchsausweis Wohngebäude</h2>
<hr class="mb-4" />
<img
class="w-[70%] justify-self-center !min-w-[100px] mb-[1rem]"
src="/images/right-sidebar/UMBE_wohngebaeude.svg"
alt="Wohnhaus Verbrauchsausweis"
/>
<p class="promo tracking-tighter text-[2rem] text-gray-700 pl-6">
ab<span class="promo pl-2">{PRICES.VerbrauchsausweisWohnen[0]}</span
>
</p>
<a
href="./energieausweis-erstellen/verbrauchsausweis-wohngebaeude/"
id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
">jetzt Verbrauchsausweis erstellen</a
>
</div>
</div>
<style lang="scss">
</style>
<script>
import { PRICES } from "#lib/constants";
</script>
<<<<<<< HEAD:src/components/design/sidebars/cards/cardVApromo.svelte
<div id ="cardVApromo"
class=" box card">
=======
>>>>>>> origin/UMBE:src/components/design/sidebars/cards/card-VA-promo.svelte
<div id="card-VA-promo" class=" box card bg-white px-6 py-4 mb-5">
<div class="grid">
<h2>Verbrauchsausweis Wohngebäude</h2>
<hr class="mb-4" />
<img
class="w-[70%] justify-self-center !min-w-[100px] mb-[1rem]"
src="/images/right-sidebar/UMBE_wohngebaeude.svg"
alt="Wohnhaus Verbrauchsausweis"
/>
<p class="promo tracking-tighter text-[2rem] text-gray-700 pl-6">
ab<span class="promo pl-2">{PRICES.VerbrauchsausweisWohnen[0]}</span
>
</p>
<a
href="./energieausweis-erstellen/verbrauchsausweis-wohngebaeude/"
id="link-VA-promo"
class=" w-[90%] justify-self-center text-center text-white font-[700] bg-secondary rounded-md px-3 py-1 mt-2 no-underline text-[1rem]
hover:bg-primary
">jetzt Verbrauchsausweis erstellen</a
>
</div>
</div>
<style lang="scss">
</style>

View File

@@ -1,315 +1,315 @@
<script lang="ts">
import CardVerbrauchsausweisWidget from "#content/CardVerbrauchsausweisWidget.svelte";
import CardVerbrauchsausweisGewerbeWidget from "#content/CardVerbrauchsausweisGewerbeWidget.svelte";
import CardBedarfsausweisWidget from "#content/CardBedarfsausweisWidget.svelte";
import CardBedarfsausweisGewerbeWidget from "#content/CardBedarfsausweisGewerbeWidget.svelte";
import { fade } from "svelte/transition";
<<<<<<< HEAD:src/components/widgets/welcherAusweisWidget.svelte
import cardVAwidget from "#content/cardVAwidget.svelte";
import cardVAGwidget from "#content/cardVAGwidget.svelte";
import cardBAwidget from "#content/cardBAwidget.svelte";
import cardBAGwidget from "#content/cardBAGwidget.svelte";
import { fade } from 'svelte/transition';
=======
let gebaeudetyp: string;
let anlass: string;
let einheiten: string;
let sanierungsstatus: string;
let baujahr: string;
>>>>>>> origin/UMBE:src/components/Widget.svelte
const allowedTypes = [
"Einfamilienhaus",
"Zweifamilienhaus",
"Mehrfamilienhaus",
"Mischgebäude",
];
const allowedTypesGewerbe = ["Gewerbegebäude", "Mischgebäude"];
const allowedReason = ["Vermietung/Verkauf", "sonstiges", "Aushangpflicht"];
let showVerbrauchsausweis: boolean = false
$: {
if (baujahr === "vor 1978") {
showVerbrauchsausweis =
allowedReason.includes(anlass) &&
allowedTypes.includes(gebaeudetyp) &&
(einheiten === "mehr als 4 Wohneinheiten" ||
sanierungsstatus === "saniert");
} else {
showVerbrauchsausweis =
allowedReason.includes(anlass) &&
allowedTypes.includes(gebaeudetyp);
}
}
</script>
<<<<<<< HEAD:src/components/widgets/welcherAusweisWidget.svelte
<div id="OEA_widget">
<input id="recode" type="hidden" value="widgetvorlage">
<div id="OEA_input">
<div class="OEA_zeile1">
<div class="OEA_item1">
<div class="OEA_title1">Gebäudetyp</div>
<select class="OEA_auswahl1" id="OEA_changeTyp" on:change={handleTypeChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="Einfamilienhaus">Einfamilienhaus</option>
<option value="Zweifamilienhaus">Zweifamilienhaus</option>
<option value="Mehrfamilienhaus">Mehrfamilienhaus</option>
<option value="Gewerbegebäude">Gewerbegebäude</option>
<option value="Mischgebäude">Mischgebäude</option>
</select>
</div>
<div class="OEA_item2">
<div class="OEA_title1">Anlass</div>
<select class="OEA_auswahl1" id="OEA_changeAnlass" on:change={handleReasonChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="Vermietung/Verkauf">Vermietung/Verkauf</option>
<option value="Modernisierung">Modernisierung</option>
<option value="Neubau">Neubau</option>
<option value="Erweiterung">Erweiterung</option>
<option value="Aushangpflicht">Aushangpflicht</option>
<option value="sonstiges">sonstiges z.B. Bank</option>
</select>
</div>
</div>
<div class="OEA_zeile2">
<div class="OEA_item3">
<div class="OEA_title2">Baujahr</div>
<select class="OEA_auswahl2" id="changeBaujahr" on:change={handleYearChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="vor 1978">vor 1978</option>
<option value="nach 1977">nach 1977</option>
</select>
</div>
<div class="OEA_item4">
<div class="OEA_title2">Wohneinheiten</div>
<select class="OEA_auswahl2" id="changeEinheiten" on:change={handleUnitsChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="bis 4 Wohneinheiten">bis 4 Wohneinheiten</option>
<option value="mehr als 4 Wohneinheiten">mehr als 4 Wohneinheiten</option>
</select>
</div>
<div class="OEA_item5">
<div class="OEA_title2">Sanierungsstatus</div>
<select class="OEA_auswahl2" id="changeStatus" on:change={handleStatusChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="saniert">saniert</option>
<option value="unsaniert">unsaniert</option>
</select>
</div>
</div>
<div class="OEA_zeile3">
{#if showVA}
<div class="OEA_item6 result" transition:fade={{ duration: 1000 }}>
<cardVAwidget client:load />
</div>
{/if}
{#if showBA}
<div class="OEA_item6 result" transition:fade={{ duration: 1000 }}>
<cardBAwidget client:load />
</div>
{/if}
{#if showVAG}
<div class="OEA_item6 result" transition:fade={{ duration: 1000 }}>
<cardVAGwidget client:load />
</div>
{/if}
{#if showBAG}
<div class="OEA_item6 result" transition:fade={{ duration: 1000 }}>
<cardBAGwidget client:load />
</div>
{/if}
</div>
=======
<div id="OEA_widget">
<input id="recode" type="hidden" value="widgetvorlage" />
<div id="OEA_input">
<div class="OEA_zeile1">
<div class="OEA_item1">
<div class="OEA_title1">Gebäudetyp</div>
<select
class="OEA_auswahl1"
bind:value={gebaeudetyp}
>
<option value="" selected disabled>bitte auswählen</option>
<option value="Einfamilienhaus">Einfamilienhaus</option>
<option value="Zweifamilienhaus">Zweifamilienhaus</option>
<option value="Mehrfamilienhaus">Mehrfamilienhaus</option>
<option value="Gewerbegebäude">Gewerbegebäude</option>
<option value="Mischgebäude">Mischgebäude</option>
</select>
</div>
<div class="OEA_item2">
<div class="OEA_title1">Anlass</div>
<select
class="OEA_auswahl1"
bind:value={anlass}
>
<option value="" selected disabled>bitte auswählen</option>
<option value="Vermietung/Verkauf"
>Vermietung/Verkauf</option
>
<option value="Modernisierung">Modernisierung</option>
<option value="Neubau">Neubau</option>
<option value="Erweiterung">Erweiterung</option>
<option value="Aushangpflicht">Aushangpflicht</option>
<option value="sonstiges">sonstiges z.B. Bank</option>
</select>
</div>
</div>
<div class="OEA_zeile2">
<div class="OEA_item3">
<div class="OEA_title2">Baujahr</div>
<select
class="OEA_auswahl2"
bind:value={baujahr}
>
<option value="" selected disabled>bitte auswählen</option>
<option value="vor 1978">vor 1978</option>
<option value="nach 1977">nach 1977</option>
</select>
</div>
>>>>>>> origin/UMBE:src/components/Widget.svelte
<div class="OEA_item4">
<div class="OEA_title2">Wohneinheiten</div>
<select
class="OEA_auswahl2"
bind:value={einheiten}
>
<option value="" selected disabled>bitte auswählen</option>
<option value="bis 4 Wohneinheiten"
>bis 4 Wohneinheiten</option
>
<option value="mehr als 4 Wohneinheiten"
>mehr als 4 Wohneinheiten</option
>
</select>
</div>
<div class="OEA_item5">
<div class="OEA_title2">Sanierungsstatus</div>
<select
class="OEA_auswahl2"
bind:value={sanierungsstatus}
>
<option selected disabled>bitte auswählen</option>
<option value="saniert">saniert</option>
<option value="unsaniert">unsaniert</option>
</select>
</div>
</div>
<div class="OEA_zeile3">
{#if showVerbrauchsausweis}
<div
class="OEA_item6 result"
transition:fade={{ duration: 1000 }}
>
<CardVerbrauchsausweisWidget />
</div>
{/if}
{#if allowedReason.includes(anlass) && allowedTypes.includes(gebaeudetyp)}
<div
class="OEA_item6 result"
transition:fade={{ duration: 1000 }}
>
<CardBedarfsausweisWidget />
</div>
{/if}
{#if allowedReason.includes(anlass) && allowedTypesGewerbe.includes(gebaeudetyp)}
<div
class="OEA_item6 result"
transition:fade={{ duration: 1000 }}
>
<CardVerbrauchsausweisGewerbeWidget />
</div>
{/if}
{#if allowedReason.includes(anlass) && allowedTypesGewerbe.includes(gebaeudetyp)}
<div
class="OEA_item6 result"
transition:fade={{ duration: 1000 }}
>
<CardBedarfsausweisGewerbeWidget />
</div>
{/if}
</div>
</div>
</div>
<style lang="scss">
#OEA_widget {
@apply bg-gray-100 p-4 shadow-xl;
#OEA_input {
@apply space-y-2;
.OEA_zeile1,
.OEA_zeile2 {
@apply flex flex-row space-x-2;
.OEA_item1,
.OEA_item2,
.OEA_item3,
.OEA_item4,
.OEA_item5 {
@apply w-full;
.OEA_title1,
.OEA_title2 {
@apply font-bold text-lg text-white p-1.5 pl-2 rounded w-full;
}
}
}
.OEA_title1 {
@apply bg-secondary;
}
.OEA_title2 {
@apply bg-primary;
}
.OEA_auswahl1,
.OEA_auswahl2 {
@apply w-full p-2 rounded focus:outline-none focus:ring-2 focus:ring-blue-500;
}
#OEA_result {
@apply rounded-lg text-gray-700;
}
.OEA_zeile3 {
@apply flex flex-row space-x-4 pt-6 items-start justify-center;
}
.OEA_item6 {
.result {
@apply opacity-0 transition-opacity duration-1000 ease-in-out;
}
.result[style*="opacity: 1"] {
@apply opacity-100;
}
}
}
}
</style>
<script lang="ts">
import CardVerbrauchsausweisWidget from "#content/CardVerbrauchsausweisWidget.svelte";
import CardVerbrauchsausweisGewerbeWidget from "#content/CardVerbrauchsausweisGewerbeWidget.svelte";
import CardBedarfsausweisWidget from "#content/CardBedarfsausweisWidget.svelte";
import CardBedarfsausweisGewerbeWidget from "#content/CardBedarfsausweisGewerbeWidget.svelte";
import { fade } from "svelte/transition";
<<<<<<< HEAD:src/components/widgets/welcherAusweisWidget.svelte
import cardVAwidget from "#content/cardVAwidget.svelte";
import cardVAGwidget from "#content/cardVAGwidget.svelte";
import cardBAwidget from "#content/cardBAwidget.svelte";
import cardBAGwidget from "#content/cardBAGwidget.svelte";
import { fade } from 'svelte/transition';
=======
let gebaeudetyp: string;
let anlass: string;
let einheiten: string;
let sanierungsstatus: string;
let baujahr: string;
>>>>>>> origin/UMBE:src/components/Widget.svelte
const allowedTypes = [
"Einfamilienhaus",
"Zweifamilienhaus",
"Mehrfamilienhaus",
"Mischgebäude",
];
const allowedTypesGewerbe = ["Gewerbegebäude", "Mischgebäude"];
const allowedReason = ["Vermietung/Verkauf", "sonstiges", "Aushangpflicht"];
let showVerbrauchsausweis: boolean = false
$: {
if (baujahr === "vor 1978") {
showVerbrauchsausweis =
allowedReason.includes(anlass) &&
allowedTypes.includes(gebaeudetyp) &&
(einheiten === "mehr als 4 Wohneinheiten" ||
sanierungsstatus === "saniert");
} else {
showVerbrauchsausweis =
allowedReason.includes(anlass) &&
allowedTypes.includes(gebaeudetyp);
}
}
</script>
<<<<<<< HEAD:src/components/widgets/welcherAusweisWidget.svelte
<div id="OEA_widget">
<input id="recode" type="hidden" value="widgetvorlage">
<div id="OEA_input">
<div class="OEA_zeile1">
<div class="OEA_item1">
<div class="OEA_title1">Gebäudetyp</div>
<select class="OEA_auswahl1" id="OEA_changeTyp" on:change={handleTypeChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="Einfamilienhaus">Einfamilienhaus</option>
<option value="Zweifamilienhaus">Zweifamilienhaus</option>
<option value="Mehrfamilienhaus">Mehrfamilienhaus</option>
<option value="Gewerbegebäude">Gewerbegebäude</option>
<option value="Mischgebäude">Mischgebäude</option>
</select>
</div>
<div class="OEA_item2">
<div class="OEA_title1">Anlass</div>
<select class="OEA_auswahl1" id="OEA_changeAnlass" on:change={handleReasonChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="Vermietung/Verkauf">Vermietung/Verkauf</option>
<option value="Modernisierung">Modernisierung</option>
<option value="Neubau">Neubau</option>
<option value="Erweiterung">Erweiterung</option>
<option value="Aushangpflicht">Aushangpflicht</option>
<option value="sonstiges">sonstiges z.B. Bank</option>
</select>
</div>
</div>
<div class="OEA_zeile2">
<div class="OEA_item3">
<div class="OEA_title2">Baujahr</div>
<select class="OEA_auswahl2" id="changeBaujahr" on:change={handleYearChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="vor 1978">vor 1978</option>
<option value="nach 1977">nach 1977</option>
</select>
</div>
<div class="OEA_item4">
<div class="OEA_title2">Wohneinheiten</div>
<select class="OEA_auswahl2" id="changeEinheiten" on:change={handleUnitsChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="bis 4 Wohneinheiten">bis 4 Wohneinheiten</option>
<option value="mehr als 4 Wohneinheiten">mehr als 4 Wohneinheiten</option>
</select>
</div>
<div class="OEA_item5">
<div class="OEA_title2">Sanierungsstatus</div>
<select class="OEA_auswahl2" id="changeStatus" on:change={handleStatusChange}>
<option value="" selected disabled>bitte auswählen</option>
<option value="saniert">saniert</option>
<option value="unsaniert">unsaniert</option>
</select>
</div>
</div>
<div class="OEA_zeile3">
{#if showVA}
<div class="OEA_item6 result" transition:fade={{ duration: 1000 }}>
<cardVAwidget client:load />
</div>
{/if}
{#if showBA}
<div class="OEA_item6 result" transition:fade={{ duration: 1000 }}>
<cardBAwidget client:load />
</div>
{/if}
{#if showVAG}
<div class="OEA_item6 result" transition:fade={{ duration: 1000 }}>
<cardVAGwidget client:load />
</div>
{/if}
{#if showBAG}
<div class="OEA_item6 result" transition:fade={{ duration: 1000 }}>
<cardBAGwidget client:load />
</div>
{/if}
</div>
=======
<div id="OEA_widget">
<input id="recode" type="hidden" value="widgetvorlage" />
<div id="OEA_input">
<div class="OEA_zeile1">
<div class="OEA_item1">
<div class="OEA_title1">Gebäudetyp</div>
<select
class="OEA_auswahl1"
bind:value={gebaeudetyp}
>
<option value="" selected disabled>bitte auswählen</option>
<option value="Einfamilienhaus">Einfamilienhaus</option>
<option value="Zweifamilienhaus">Zweifamilienhaus</option>
<option value="Mehrfamilienhaus">Mehrfamilienhaus</option>
<option value="Gewerbegebäude">Gewerbegebäude</option>
<option value="Mischgebäude">Mischgebäude</option>
</select>
</div>
<div class="OEA_item2">
<div class="OEA_title1">Anlass</div>
<select
class="OEA_auswahl1"
bind:value={anlass}
>
<option value="" selected disabled>bitte auswählen</option>
<option value="Vermietung/Verkauf"
>Vermietung/Verkauf</option
>
<option value="Modernisierung">Modernisierung</option>
<option value="Neubau">Neubau</option>
<option value="Erweiterung">Erweiterung</option>
<option value="Aushangpflicht">Aushangpflicht</option>
<option value="sonstiges">sonstiges z.B. Bank</option>
</select>
</div>
</div>
<div class="OEA_zeile2">
<div class="OEA_item3">
<div class="OEA_title2">Baujahr</div>
<select
class="OEA_auswahl2"
bind:value={baujahr}
>
<option value="" selected disabled>bitte auswählen</option>
<option value="vor 1978">vor 1978</option>
<option value="nach 1977">nach 1977</option>
</select>
</div>
>>>>>>> origin/UMBE:src/components/Widget.svelte
<div class="OEA_item4">
<div class="OEA_title2">Wohneinheiten</div>
<select
class="OEA_auswahl2"
bind:value={einheiten}
>
<option value="" selected disabled>bitte auswählen</option>
<option value="bis 4 Wohneinheiten"
>bis 4 Wohneinheiten</option
>
<option value="mehr als 4 Wohneinheiten"
>mehr als 4 Wohneinheiten</option
>
</select>
</div>
<div class="OEA_item5">
<div class="OEA_title2">Sanierungsstatus</div>
<select
class="OEA_auswahl2"
bind:value={sanierungsstatus}
>
<option selected disabled>bitte auswählen</option>
<option value="saniert">saniert</option>
<option value="unsaniert">unsaniert</option>
</select>
</div>
</div>
<div class="OEA_zeile3">
{#if showVerbrauchsausweis}
<div
class="OEA_item6 result"
transition:fade={{ duration: 1000 }}
>
<CardVerbrauchsausweisWidget />
</div>
{/if}
{#if allowedReason.includes(anlass) && allowedTypes.includes(gebaeudetyp)}
<div
class="OEA_item6 result"
transition:fade={{ duration: 1000 }}
>
<CardBedarfsausweisWidget />
</div>
{/if}
{#if allowedReason.includes(anlass) && allowedTypesGewerbe.includes(gebaeudetyp)}
<div
class="OEA_item6 result"
transition:fade={{ duration: 1000 }}
>
<CardVerbrauchsausweisGewerbeWidget />
</div>
{/if}
{#if allowedReason.includes(anlass) && allowedTypesGewerbe.includes(gebaeudetyp)}
<div
class="OEA_item6 result"
transition:fade={{ duration: 1000 }}
>
<CardBedarfsausweisGewerbeWidget />
</div>
{/if}
</div>
</div>
</div>
<style lang="scss">
#OEA_widget {
@apply bg-gray-100 p-4 shadow-xl;
#OEA_input {
@apply space-y-2;
.OEA_zeile1,
.OEA_zeile2 {
@apply flex flex-row space-x-2;
.OEA_item1,
.OEA_item2,
.OEA_item3,
.OEA_item4,
.OEA_item5 {
@apply w-full;
.OEA_title1,
.OEA_title2 {
@apply font-bold text-lg text-white p-1.5 pl-2 rounded w-full;
}
}
}
.OEA_title1 {
@apply bg-secondary;
}
.OEA_title2 {
@apply bg-primary;
}
.OEA_auswahl1,
.OEA_auswahl2 {
@apply w-full p-2 rounded focus:outline-none focus:ring-2 focus:ring-blue-500;
}
#OEA_result {
@apply rounded-lg text-gray-700;
}
.OEA_zeile3 {
@apply flex flex-row space-x-4 pt-6 items-start justify-center;
}
.OEA_item6 {
.result {
@apply opacity-0 transition-opacity duration-1000 ease-in-out;
}
.result[style*="opacity: 1"] {
@apply opacity-100;
}
}
}
}
</style>

View File

@@ -1,238 +1,238 @@
<script lang="ts">
//import PerformanceScore from "#components/Ausweis/PerformanceScore.svelte";
//import Progressbar from "#components/Ausweis/Progressbar.svelte";
import Hilfe from "#components/Ausweis/Hilfe.svelte";
import BereichLabel from "#labels/BereichLabel.svelte";
import HelpLabel from "#labels/HelpLabel.svelte";
import Inputlabel from "#labels/InputLabel.svelte";
import Label from "#components/Label.svelte";
import Ausweisart from "#components/Ausweis/Ausweisart.svelte";
import GebaeudeDaten from "#components/Ausweis/GebaeudeDaten.svelte";
import Verbrauch from "#components/Ausweis/Verbrauch.svelte";
//import ZipSearch from "#components/PlzSuche.svelte";
import moment from "moment";
import BilderZusatzsysteme from "#components/Ausweis/BilderZusatzsysteme.svelte";
import {
RawNotificationWrapper,
RawNotification,
notifications,
} from "#components/Notifications/index.js";
import { auditHeizungGebaeudeBaujahr } from "#components/Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
import { auditHeizungJuengerDreiJahre } from "#components/Verbrauchsausweis/audits/HeizungJuengerDreiJahre.js";
import { auditZeitraumAktuell } from "#components/Verbrauchsausweis/audits/ZeitraumAktuell.js";
import { auditKlimaFaktoren } from "#components/Verbrauchsausweis/audits/KlimaFaktoren.js";
import { auditWohnFlaeche } from "#components/Verbrauchsausweis/audits/WohnFlaeche.js";
import { auditWarmWasser } from "#components/Verbrauchsausweis/audits/WarmWasser.js";
import { auditLeerStand } from "#components/Verbrauchsausweis/audits/LeerStand.js";
import { auditPlzNichtErkannt } from "#components/Verbrauchsausweis/audits/PlzNichtErkannt.js";
import {
AuditType,
hidden,
} from "#components/Verbrauchsausweis/audits/hidden.js";
import { auditBedarfsausweisBenoetigt } from "#components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt.js";
import { auditVerbrauchAbweichung } from "#components/Verbrauchsausweis/audits/VerbrauchAbweichung.js";
import { auditEndEnergie } from "#components/Verbrauchsausweis/audits/EndEnergie.js";
import { auditWohnflaecheGroesserGesamtflaeche } from "#components/Verbrauchsausweis/audits/WohnflaecheGroesserGesamtflaeche.js";
//import { Enums } from "@ibcornelsen/database/client"
import Overlay from "#components/Overlay.svelte";
import AusweisGespeichertModule from "#modules/Ausweise/AusweisGespeichertModule.svelte";
import {
VerbrauchsausweisWohnenClient,
BenutzerClient,
UploadedGebaeudeBild,
} from "#components/Ausweis/types.js";
import { verbrauchsausweisWohnenSpeichern } from "src/client/lib/verbrauchsausweisWohnenSpeichern.js";
// TODO: Vom Server sollte ein volles Objekt kommen, dass alle Subobjekte enthält, weil es sonst zu Problemen führen kann
// wenn gebaeude_aufnahme_allgemein oder gebaeude_stammdaten nicht existiert...
export let ausweis: VerbrauchsausweisWohnenClient;
export let user: BenutzerClient = {} as BenutzerClient;
let gebaeude_aufnahme_allgemein = ausweis.gebaeude_aufnahme_allgemein || {};
let gebaeude =
ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] =
ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten
?.gebaeude_bilder || [];
async function spaeterWeitermachen() {
const result = await verbrauchsausweisWohnenSpeichern(
ausweis,
gebaeude,
gebaeude_aufnahme_allgemein,
images,
user
);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid;
gebaeude.uid = result.gebaeude_uid;
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid;
window.history.pushState(
{},
"",
`${location.pathname}?uid=${result.uid}`
);
speichernOverlayHidden = false;
}
}
function automatischAusfüllen() {
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_aufnahme_allgemein.flaeche = 152;
gebaeude_aufnahme_allgemein.nutzflaeche = 172;
ausweis.keller_beheizt = true;
gebaeude_aufnahme_allgemein.brennstoff_1 = "Erdgas H";
ausweis.einheit_1 = "kWh";
ausweis.anteil_warmwasser_1 = 18;
ausweis.startdatum = moment("01.01.2019").toDate();
gebaeude_aufnahme_allgemein.plz = "21039";
gebaeude_aufnahme_allgemein.ort = "Hamburg";
gebaeude_aufnahme_allgemein.adresse = "Curslacker Deich 170";
gebaeude_aufnahme_allgemein.gebaeudeteil = "Gesamtgebäude";
gebaeude = gebaeude;
ausweis = ausweis;
}
async function ausweisAbschicken(e: SubmitEvent) {
if (e && e.preventDefault) e.preventDefault();
const result = await verbrauchsausweisWohnenSpeichern(
ausweis,
gebaeude,
gebaeude_aufnahme_allgemein,
images,
user
);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid;
gebaeude.uid = result.gebaeude_uid;
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid;
window.history.pushState(
{},
"",
`${location.pathname}?uid=${result.uid}`
);
window.location.href = `/kundendaten?uid=${result.uid}`;
}
}
let waitOverlayHidden = true;
let speichernOverlayHidden = true;
$: {
if (
gebaeude_aufnahme_allgemein.saniert &&
gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt ===
undefined &&
gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt === undefined
) {
gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt = true;
gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt = true;
}
}
</script>
<Overlay bind:hidden={speichernOverlayHidden}>
<div class="bg-white w-full max-w-screen-sm py-8 px-8">
<AusweisGespeichertModule uid={ausweis.uid}></AusweisGespeichertModule>
</div>
</Overlay>
<Overlay bind:hidden={waitOverlayHidden}>
<p class="text-white font-semibold text-4xl">
Bitte warten sie, ihr Ausweis wird nun erstellt.
</p>
</Overlay>
<form on:submit={ausweisAbschicken} name="ausweis" data-test="ausweis">
<div id="formular-box" class="formular-boxen ring-0">
<!-- Später weitermachen / Hilfe anfordern -->
<div
class="w-full grid gap-x-4 gap-y-2
grid-cols-1
xs:grid-cols-2
"
>
<div class="md:justify-self-start">
<button
class="button"
type="button"
on:click={spaeterWeitermachen}>Später Weitermachen</button
>
</div>
<div class="md:justify-self-end"><Hilfe /></div>
</div>
<div class="mt-2">
<button
class="button hidden"
on:click={automatischAusfüllen}
type="button">Automatisch Ausfüllen</button
>
</div>
<!-- A Prüfung der Ausweisart -->
<BereichLabel bereich="A">Prüfung der Ausweisart</BereichLabel>
<Ausweisart
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:ausweis
/>
<!-- B Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss -->
<<<<<<< HEAD
<BereichLabel bereich="A">Prüfung der Ausweisart</BereichLabel>
<div class="collapseBereich">
<Ausweisart
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:ausweis
/>
</div>
<!-- B Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss -->
<BereichLabel bereich="B">Eingabe&nbsp;der&nbsp;Gebäudeadresse - Angaben&nbsp;zu&nbsp;Wohnfläche, Keller&nbsp;und&nbsp;Dachgeschoss</BereichLabel>
<div class="collapseBereich">
<GebaeudeDaten
bind:gebaeude_aufnahme_allgemein
/>
</div>
</div>
=======
<BereichLabel bereich="B"
>Eingabe&nbsp;der&nbsp;Gebäudeadresse -
Angaben&nbsp;zu&nbsp;Wohnfläche, Keller&nbsp;und&nbsp;Dachgeschoss</BereichLabel
>
>>>>>>> origin/UMBE
<GebaeudeDaten bind:gebaeude_aufnahme_allgemein />
</div>
</form>
<style lang="scss">
</style>
<script lang="ts">
//import PerformanceScore from "#components/Ausweis/PerformanceScore.svelte";
//import Progressbar from "#components/Ausweis/Progressbar.svelte";
import Hilfe from "#components/Ausweis/Hilfe.svelte";
import BereichLabel from "#labels/BereichLabel.svelte";
import HelpLabel from "#labels/HelpLabel.svelte";
import Inputlabel from "#labels/InputLabel.svelte";
import Label from "#components/Label.svelte";
import Ausweisart from "#components/Ausweis/Ausweisart.svelte";
import GebaeudeDaten from "#components/Ausweis/GebaeudeDaten.svelte";
import Verbrauch from "#components/Ausweis/Verbrauch.svelte";
//import ZipSearch from "#components/PlzSuche.svelte";
import moment from "moment";
import BilderZusatzsysteme from "#components/Ausweis/BilderZusatzsysteme.svelte";
import {
RawNotificationWrapper,
RawNotification,
notifications,
} from "#components/Notifications/index.js";
import { auditHeizungGebaeudeBaujahr } from "#components/Verbrauchsausweis/audits/HeizungGebaeudeBaujahr.js";
import { auditHeizungJuengerDreiJahre } from "#components/Verbrauchsausweis/audits/HeizungJuengerDreiJahre.js";
import { auditZeitraumAktuell } from "#components/Verbrauchsausweis/audits/ZeitraumAktuell.js";
import { auditKlimaFaktoren } from "#components/Verbrauchsausweis/audits/KlimaFaktoren.js";
import { auditWohnFlaeche } from "#components/Verbrauchsausweis/audits/WohnFlaeche.js";
import { auditWarmWasser } from "#components/Verbrauchsausweis/audits/WarmWasser.js";
import { auditLeerStand } from "#components/Verbrauchsausweis/audits/LeerStand.js";
import { auditPlzNichtErkannt } from "#components/Verbrauchsausweis/audits/PlzNichtErkannt.js";
import {
AuditType,
hidden,
} from "#components/Verbrauchsausweis/audits/hidden.js";
import { auditBedarfsausweisBenoetigt } from "#components/Verbrauchsausweis/audits/BedarfsausweisBenoetigt.js";
import { auditVerbrauchAbweichung } from "#components/Verbrauchsausweis/audits/VerbrauchAbweichung.js";
import { auditEndEnergie } from "#components/Verbrauchsausweis/audits/EndEnergie.js";
import { auditWohnflaecheGroesserGesamtflaeche } from "#components/Verbrauchsausweis/audits/WohnflaecheGroesserGesamtflaeche.js";
//import { Enums } from "@ibcornelsen/database/client"
import Overlay from "#components/Overlay.svelte";
import AusweisGespeichertModule from "#modules/Ausweise/AusweisGespeichertModule.svelte";
import {
VerbrauchsausweisWohnenClient,
BenutzerClient,
UploadedGebaeudeBild,
} from "#components/Ausweis/types.js";
import { verbrauchsausweisWohnenSpeichern } from "src/client/lib/verbrauchsausweisWohnenSpeichern.js";
// TODO: Vom Server sollte ein volles Objekt kommen, dass alle Subobjekte enthält, weil es sonst zu Problemen führen kann
// wenn gebaeude_aufnahme_allgemein oder gebaeude_stammdaten nicht existiert...
export let ausweis: VerbrauchsausweisWohnenClient;
export let user: BenutzerClient = {} as BenutzerClient;
let gebaeude_aufnahme_allgemein = ausweis.gebaeude_aufnahme_allgemein || {};
let gebaeude =
ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten || {};
let images: (UploadedGebaeudeBild & { base64?: string })[] =
ausweis.gebaeude_aufnahme_allgemein?.gebaeude_stammdaten
?.gebaeude_bilder || [];
async function spaeterWeitermachen() {
const result = await verbrauchsausweisWohnenSpeichern(
ausweis,
gebaeude,
gebaeude_aufnahme_allgemein,
images,
user
);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid;
gebaeude.uid = result.gebaeude_uid;
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid;
window.history.pushState(
{},
"",
`${location.pathname}?uid=${result.uid}`
);
speichernOverlayHidden = false;
}
}
function automatischAusfüllen() {
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_aufnahme_allgemein.flaeche = 152;
gebaeude_aufnahme_allgemein.nutzflaeche = 172;
ausweis.keller_beheizt = true;
gebaeude_aufnahme_allgemein.brennstoff_1 = "Erdgas H";
ausweis.einheit_1 = "kWh";
ausweis.anteil_warmwasser_1 = 18;
ausweis.startdatum = moment("01.01.2019").toDate();
gebaeude_aufnahme_allgemein.plz = "21039";
gebaeude_aufnahme_allgemein.ort = "Hamburg";
gebaeude_aufnahme_allgemein.adresse = "Curslacker Deich 170";
gebaeude_aufnahme_allgemein.gebaeudeteil = "Gesamtgebäude";
gebaeude = gebaeude;
ausweis = ausweis;
}
async function ausweisAbschicken(e: SubmitEvent) {
if (e && e.preventDefault) e.preventDefault();
const result = await verbrauchsausweisWohnenSpeichern(
ausweis,
gebaeude,
gebaeude_aufnahme_allgemein,
images,
user
);
if (result !== null) {
// Falls der Nutzer zurück navigiert, sollte er wieder auf seinen Vorgang kommen.
// Sonst müsste er alles neu eingeben...
ausweis.uid = result.uid;
gebaeude.uid = result.gebaeude_uid;
gebaeude_aufnahme_allgemein.uid = result.gebaeude_aufnahme_uid;
window.history.pushState(
{},
"",
`${location.pathname}?uid=${result.uid}`
);
window.location.href = `/kundendaten?uid=${result.uid}`;
}
}
let waitOverlayHidden = true;
let speichernOverlayHidden = true;
$: {
if (
gebaeude_aufnahme_allgemein.saniert &&
gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt ===
undefined &&
gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt === undefined
) {
gebaeude_aufnahme_allgemein.oberste_geschossdecke_gedaemmt = true;
gebaeude_aufnahme_allgemein.dachgeschoss_gedaemmt = true;
}
}
</script>
<Overlay bind:hidden={speichernOverlayHidden}>
<div class="bg-white w-full max-w-screen-sm py-8 px-8">
<AusweisGespeichertModule uid={ausweis.uid}></AusweisGespeichertModule>
</div>
</Overlay>
<Overlay bind:hidden={waitOverlayHidden}>
<p class="text-white font-semibold text-4xl">
Bitte warten sie, ihr Ausweis wird nun erstellt.
</p>
</Overlay>
<form on:submit={ausweisAbschicken} name="ausweis" data-test="ausweis">
<div id="formular-box" class="formular-boxen ring-0">
<!-- Später weitermachen / Hilfe anfordern -->
<div
class="w-full grid gap-x-4 gap-y-2
grid-cols-1
xs:grid-cols-2
"
>
<div class="md:justify-self-start">
<button
class="button"
type="button"
on:click={spaeterWeitermachen}>Später Weitermachen</button
>
</div>
<div class="md:justify-self-end"><Hilfe /></div>
</div>
<div class="mt-2">
<button
class="button hidden"
on:click={automatischAusfüllen}
type="button">Automatisch Ausfüllen</button
>
</div>
<!-- A Prüfung der Ausweisart -->
<BereichLabel bereich="A">Prüfung der Ausweisart</BereichLabel>
<Ausweisart
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:ausweis
/>
<!-- B Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss -->
<<<<<<< HEAD
<BereichLabel bereich="A">Prüfung der Ausweisart</BereichLabel>
<div class="collapseBereich">
<Ausweisart
bind:gebaeude
bind:gebaeude_aufnahme_allgemein
bind:ausweis
/>
</div>
<!-- B Eingabe der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss -->
<BereichLabel bereich="B">Eingabe&nbsp;der&nbsp;Gebäudeadresse - Angaben&nbsp;zu&nbsp;Wohnfläche, Keller&nbsp;und&nbsp;Dachgeschoss</BereichLabel>
<div class="collapseBereich">
<GebaeudeDaten
bind:gebaeude_aufnahme_allgemein
/>
</div>
</div>
=======
<BereichLabel bereich="B"
>Eingabe&nbsp;der&nbsp;Gebäudeadresse -
Angaben&nbsp;zu&nbsp;Wohnfläche, Keller&nbsp;und&nbsp;Dachgeschoss</BereichLabel
>
>>>>>>> origin/UMBE
<GebaeudeDaten bind:gebaeude_aufnahme_allgemein />
</div>
</form>
<style lang="scss">
</style>

View File

@@ -1,35 +1,35 @@
---
import AusweisLayout from "#layouts/AusweisLayout.astro";
import BedarfsausweisContent from "#components/Bedarfsausweis/BedarfsausweisContent.svelte";
import { BedarfsausweisWohnenClient } from "#components/Ausweis/types";
import { createCaller } from "#lib/caller";
const uid = Astro.url.searchParams.get("uid");
let ausweis: Partial<BedarfsausweisWohnenClient> = {
gebaeude_aufnahme_allgemein: { gebaeude_stammdaten: {} },
energiequelle_2_nutzung: []
} as Partial<BedarfsausweisWohnenClient>;
const caller = createCaller(Astro);
if (uid) {
ausweis = await caller.v1.bedarfsausweisWohen.get({
uid: uid,
});
if (!ausweis) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohnen"
);
}
}
---
<AusweisLayout title="Bedarfsausweis erstellen | IBCornelsen">
<BedarfsausweisContent client:load ausweis={ausweis}></BedarfsausweisContent>
---
import AusweisLayout from "#layouts/AusweisLayout.astro";
import BedarfsausweisContent from "#components/Bedarfsausweis/BedarfsausweisContent.svelte";
import { BedarfsausweisWohnenClient } from "#components/Ausweis/types";
import { createCaller } from "#lib/caller";
const uid = Astro.url.searchParams.get("uid");
let ausweis: Partial<BedarfsausweisWohnenClient> = {
gebaeude_aufnahme_allgemein: { gebaeude_stammdaten: {} },
energiequelle_2_nutzung: []
} as Partial<BedarfsausweisWohnenClient>;
const caller = createCaller(Astro);
if (uid) {
ausweis = await caller.v1.bedarfsausweisWohen.get({
uid: uid,
});
if (!ausweis) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
return Astro.redirect(
"/energieausweis-erstellen/bedarfsausweis-wohnen"
);
}
}
---
<AusweisLayout title="Bedarfsausweis erstellen | IBCornelsen">
<BedarfsausweisContent client:load ausweis={ausweis}></BedarfsausweisContent>
</AusweisLayout>

View File

@@ -1,33 +1,33 @@
---
import AusweisLayout from "#layouts/AusweisLayout.astro";
import VerbrauchsausweisGewerbeModule from "#modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte";
import { VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { createCaller } from "#lib/caller";
const uid = Astro.url.searchParams.get("uid");
let ausweis: VerbrauchsausweisGewerbeClient = {
gebaeude_aufnahme_allgemein: { gebaeude_stammdaten: {} },
} as VerbrauchsausweisGewerbeClient;
const caller = createCaller(Astro);
if (uid) {
ausweis = await caller.v1.verbrauchsausweisGewerbe.get({
uid: uid,
});
if (!ausweis) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohnen"
);
}
}
---
<AusweisLayout title="Verbrauchsausweis Gewerbe erstellen | IBCornelsen">
<VerbrauchsausweisGewerbeModule client:load ausweis={ausweis}></VerbrauchsausweisGewerbeModule>
---
import AusweisLayout from "#layouts/AusweisLayout.astro";
import VerbrauchsausweisGewerbeModule from "#modules/VerbrauchsausweisGewerbe/VerbrauchsausweisGewerbeModule.svelte";
import { VerbrauchsausweisGewerbeClient, VerbrauchsausweisWohnenClient } from "#components/Ausweis/types";
import { createCaller } from "#lib/caller";
const uid = Astro.url.searchParams.get("uid");
let ausweis: VerbrauchsausweisGewerbeClient = {
gebaeude_aufnahme_allgemein: { gebaeude_stammdaten: {} },
} as VerbrauchsausweisGewerbeClient;
const caller = createCaller(Astro);
if (uid) {
ausweis = await caller.v1.verbrauchsausweisGewerbe.get({
uid: uid,
});
if (!ausweis) {
// Der Ausweis scheint nicht zu existieren.
// Wir leiten auf die generische Ausweisseite ohne UID weiter.
return Astro.redirect(
"/energieausweis-erstellen/verbrauchsausweis-wohnen"
);
}
}
---
<AusweisLayout title="Verbrauchsausweis Gewerbe erstellen | IBCornelsen">
<VerbrauchsausweisGewerbeModule client:load ausweis={ausweis}></VerbrauchsausweisGewerbeModule>
</AusweisLayout>

View File

@@ -1,24 +1,24 @@
---
import Layout from "#layouts/Layout.astro";
<<<<<<< HEAD
import ProduktVergleich from "#content/produktVergleich.svelte";
=======
import BannerSaeule from "#content/BannerSaeule.svelte";
>>>>>>> origin/UMBE
---
<Layout title="Energieausweis online erstellen - Online Energieausweis">
<h1>Unsere Ausweise im Detail:</h1>
<<<<<<< HEAD
<!-- <ProduktVergleich /> -->
=======
<BannerSaeule client:load />
>>>>>>> origin/UMBE
</Layout>
---
import Layout from "#layouts/Layout.astro";
<<<<<<< HEAD
import ProduktVergleich from "#content/produktVergleich.svelte";
=======
import BannerSaeule from "#content/BannerSaeule.svelte";
>>>>>>> origin/UMBE
---
<Layout title="Energieausweis online erstellen - Online Energieausweis">
<h1>Unsere Ausweise im Detail:</h1>
<<<<<<< HEAD
<!-- <ProduktVergleich /> -->
=======
<BannerSaeule client:load />
>>>>>>> origin/UMBE
</Layout>

View File

@@ -1,13 +1,13 @@
---
import Layout from "#layouts/Layout_1.astro";
---
<Layout title="Energieausweis online erstellen - Online Energieausweis">
<h1>Energieausweis online erstellen</h1>
<!-- <BannerPrice client:load /> -->
</Layout>
---
import Layout from "#layouts/Layout_1.astro";
---
<Layout title="Energieausweis online erstellen - Online Energieausweis">
<h1>Energieausweis online erstellen</h1>
<!-- <BannerPrice client:load /> -->
</Layout>