Merge remote-tracking branch 'origin/UMBE' into UMBE
This commit is contained in:
60
.gitignore
vendored
60
.gitignore
vendored
@@ -1,28 +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
|
||||
# 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
|
||||
|
||||
172
package.json
172
package.json
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
[ZoneTransfer]
|
||||
ZoneId=3
|
||||
ReferrerUrl=C:\Users\all\Downloads\antique-olive-std.zip
|
||||
@@ -1,3 +0,0 @@
|
||||
[ZoneTransfer]
|
||||
ZoneId=3
|
||||
ReferrerUrl=C:\Users\all\Downloads\font (1).zip
|
||||
@@ -1,3 +0,0 @@
|
||||
[ZoneTransfer]
|
||||
ZoneId=3
|
||||
ReferrerUrl=C:\Users\all\Downloads\font (1).zip
|
||||
@@ -1,3 +0,0 @@
|
||||
[ZoneTransfer]
|
||||
ZoneId=3
|
||||
ReferrerUrl=C:\Users\all\Downloads\font (1).zip
|
||||
@@ -1,3 +0,0 @@
|
||||
[ZoneTransfer]
|
||||
ZoneId=3
|
||||
ReferrerUrl=C:\Users\all\Downloads\font (1).zip
|
||||
@@ -1,3 +0,0 @@
|
||||
[ZoneTransfer]
|
||||
ZoneId=3
|
||||
ReferrerUrl=C:\Users\all\Downloads\font (1).zip
|
||||
@@ -1,3 +0,0 @@
|
||||
[ZoneTransfer]
|
||||
ZoneId=3
|
||||
ReferrerUrl=C:\Users\all\Downloads\font (1).zip
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -1,224 +1,224 @@
|
||||
<script lang="ts">
|
||||
console.log("Hallo Welt");
|
||||
|
||||
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 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 -->
|
||||
|
||||
<div class="input-standard order-1 md:order-1 xl:order-1">
|
||||
<Inputlabel title="Anlass *"></Inputlabel>
|
||||
|
||||
<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 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 -->
|
||||
|
||||
<div class="input-standard order-1 md:order-1 xl:order-1">
|
||||
<Inputlabel title="Anlass *"></Inputlabel>
|
||||
|
||||
<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>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
</script>
|
||||
|
||||
<div class="bereich-box grid
|
||||
<div id="B" class="bereich-box 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
|
||||
|
||||
@@ -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
56
src/components/design/content/cardBAGwidget.svelte
Normal file
56
src/components/design/content/cardBAGwidget.svelte
Normal file
@@ -0,0 +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}
|
||||
|
||||
}
|
||||
</style>
|
||||
56
src/components/design/content/cardBAwidget.svelte
Normal file
56
src/components/design/content/cardBAwidget.svelte
Normal file
@@ -0,0 +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}
|
||||
|
||||
}
|
||||
</style>
|
||||
56
src/components/design/content/cardVAGwidget.svelte
Normal file
56
src/components/design/content/cardVAGwidget.svelte
Normal file
@@ -0,0 +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}
|
||||
|
||||
}
|
||||
</style>
|
||||
57
src/components/design/content/cardVAwidget.svelte
Normal file
57
src/components/design/content/cardVAwidget.svelte
Normal file
@@ -0,0 +1,57 @@
|
||||
<script>
|
||||
import { PRICES } from "#lib/constants";
|
||||
</script>
|
||||
|
||||
<div id ="card-VA-promo" class="box card">
|
||||
<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>
|
||||
<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>
|
||||
|
||||
|
||||
<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>
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
import Login from "#sidebarCards/card-login.svelte";
|
||||
import HeaderLogin from "#header/headerLogin.svelte";
|
||||
---
|
||||
|
||||
<header>
|
||||
@@ -56,7 +56,7 @@ lg:px-0 lg:gap-x-4">
|
||||
</div>
|
||||
|
||||
<div class="w-full justify-self-center">
|
||||
<Login client:load />
|
||||
<HeaderLogin />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -2,9 +2,8 @@
|
||||
import { PRICES } from "#lib/constants";
|
||||
</script>
|
||||
|
||||
<div id ="card-BA-G-promo"
|
||||
class=" box card hidden bg-white px-6 py-4 mb-5
|
||||
lg:block">
|
||||
<div id ="cardBAGpromo"
|
||||
class=" box card">
|
||||
|
||||
<div class="grid">
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
import { PRICES } from "#lib/constants";
|
||||
</script>
|
||||
|
||||
<div id ="card-BA-promo"
|
||||
class=" box card bg-white px-6 py-4 mb-5">
|
||||
<div id ="cardBApromo"
|
||||
class=" box card">
|
||||
|
||||
<div class="grid">
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div id ="card-contact" class="box card bg-white px-6 py-4 mb-5">
|
||||
<div id ="cardContact" class="box card">
|
||||
|
||||
<div class="grid grid-cols-[max-content,1fr]">
|
||||
<div class="">
|
||||
@@ -23,9 +23,8 @@
|
||||
</script>
|
||||
|
||||
<div
|
||||
id="card-login"
|
||||
class="box card hidden bg-white px-6 py-4 mb-5
|
||||
lg:block lg:ring-2 lg:ring-secondary/50"
|
||||
id="cardLogin"
|
||||
class="box card"
|
||||
>
|
||||
<div class="grid">
|
||||
<div class="grid grid-cols-[2rem,1fr,1fr]">
|
||||
@@ -91,14 +91,14 @@ if(innerWidth>1024){
|
||||
|
||||
|
||||
|
||||
<nav id="card-navigation" class="card-navigation hidden box ring-0 md:ring-2 ring-primary/50 rounded-tr-none lg:block">
|
||||
<nav id="cardNavigation" class="cardNavigation box hidden ring-0 md:ring-2 ring-primary/50 rounded-tr-none lg:block mb-0 lg:mb-5">
|
||||
|
||||
<!-- svelte-ignore a11y-mouse-events-have-key-events -->
|
||||
<div class="nav-element dropdown lg:dropdown-right" on:click={dropdown} on:keydown={dropdown} on:mouseover={hover} on:mouseleave={hoverout}>
|
||||
{#if innerWidth > 1023}
|
||||
<a href={undefined} class="nav-element-child lg:rounded-t-lg xl:rounded-t-xl " >Energieausweis erstellen<span class="dd-symbol-clone">❯</span><span class="dd-symbol">❯</span></a>
|
||||
<a href={undefined} class="nav-element-child lg:rounded-t-lg xl:rounded-t-xl" >Energieausweis erstellen<span class="dd-symbol-clone">❯</span><span class="dd-symbol">❯</span></a>
|
||||
{:else}
|
||||
<a href={undefined} class="nav-element-child xl:rounded-t-[.75rem]">Energieausweis erstellen<span class="dd-symbol-clone">❯</span><span class="dd-symbol">❯</span></a>
|
||||
<a href={undefined} class="nav-element-child lg:rounded-t-lg xl:rounded-t-xl">Energieausweis erstellen<span class="dd-symbol-clone">❯</span><span class="dd-symbol">❯</span></a>
|
||||
{/if}
|
||||
|
||||
<ul class="dropdown-content energieasusweis-erstellen">
|
||||
@@ -201,8 +201,6 @@ if(innerWidth>1024){
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
|
||||
|
||||
.dd-symbol::before{
|
||||
content:'❯';
|
||||
font-size:0.95rem;
|
||||
@@ -2,12 +2,8 @@
|
||||
import { PRICES } from "#lib/constants";
|
||||
</script>
|
||||
|
||||
<div id ="card-price-info"
|
||||
class=" box card hidden bg-white px-4 py-2 mt-5
|
||||
lg:block">
|
||||
|
||||
<div class="">
|
||||
|
||||
<div id ="cardPreisinfo" class="box card hidden lg:block">
|
||||
|
||||
<h2>Was wird der Energieausweis kosten?</h2>
|
||||
<hr class="mb-4 bg-primary h-[2px]">
|
||||
<p>Verbrauchsausweis Wohngebäude</p>
|
||||
@@ -29,13 +25,8 @@
|
||||
<p>ab 450€ inkl. MwSt.</p>
|
||||
<hr class="mt-2">
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<style lang="scss">
|
||||
|
||||
|
||||
</style>
|
||||
@@ -2,8 +2,8 @@
|
||||
import { PRICES } from "#lib/constants";
|
||||
</script>
|
||||
|
||||
<div id ="card-VA-G-promo"
|
||||
class=" box card bg-white px-6 py-4 mb-5">
|
||||
<div id ="cardVAGpromo"
|
||||
class=" box card">
|
||||
|
||||
<div class="grid">
|
||||
|
||||
@@ -1,29 +1,33 @@
|
||||
<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="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>
|
||||
|
||||
<div id ="cardVApromo" class=" box card">
|
||||
|
||||
<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>
|
||||
|
||||
</div>
|
||||
|
||||
<style lang="scss">
|
||||
</style>
|
||||
@@ -1,96 +0,0 @@
|
||||
|
||||
<script>
|
||||
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
<div class="">
|
||||
|
||||
<details class="dropdown block xl:dropdown-right">
|
||||
<summary class="btn rounded-none w-full justify-start">Energieausweis erstellen<span class="absolute right-[20px]">❯</span></summary>
|
||||
<ul class="dd-cont p-2 shadow menu dropdown-content z-[1] w-full bg-base-100">
|
||||
<li class=""><a>Verbrauchsausweis erstellen</a></li>
|
||||
<li class=""><a>Bedarfsausweis erstellen</a></li>
|
||||
<li class=""><a>Verbrauchsausweis Gewerbe erstellen</a></li>
|
||||
<li class=""><a>Bedarfsausweis Gewerbe erstellen</a></li>
|
||||
</ul>
|
||||
</details>
|
||||
|
||||
<details class="dropdown block">
|
||||
<summary class="btn rounded-none w-full justify-start">Welcher Energieausweis?</summary>
|
||||
</details>
|
||||
|
||||
<details class="dropdown block xl:dropdown-hover xl:dropdown-right">
|
||||
<summary class="btn rounded-none w-full justify-start">Verbrauchsausweis<span class="absolute right-[20px]">❯</span></summary>
|
||||
<ul class="dd-cont p-2 shadow menu dropdown-content z-[1] w-full bg-base-100">
|
||||
<li class=""><a>Verbrauchsausweis Wohngebäude</a></li>
|
||||
<li class=""><a>Verbrauchsausweis online erstellen</a></li>
|
||||
<li class=""><a>Häufige Fragen zum Verbrauchsausweis</a></li>
|
||||
<li class=""><a>Statistiken zum Verbrauchsausweis Wohngebäude</a></li>
|
||||
<li class=""><a>Verbrauchsausweis Gewerbe</a></li>
|
||||
<li class=""><a>Verbrauchsausweis Gewerbe online erstellen</a></li>
|
||||
<li class=""><a>Häufige Fragen zum Verbrauchsausweis Gewerbe</a></li>
|
||||
<li class=""><a>Statistiken zum Verbrauchsausweis Gewerbe</a></li>
|
||||
</ul>
|
||||
</details>
|
||||
<details class="dropdown block xl:dropdown-hover xl:dropdown-right">
|
||||
<summary class="btn rounded-none w-full justify-start">Bedarfsausweis<span class="absolute right-[20px]">❯</span></summary>
|
||||
<ul class="dd-cont p-2 shadow menu dropdown-content z-[1] w-full bg-base-100">
|
||||
<li class=""><a>Bedarfsausweis Wohngebäude</a></li>
|
||||
<li class=""><a>Bedarfsausweis online erstellen</a></li>
|
||||
<li class=""><a>Häufige Fragen zum Bedarfsausweis</a></li>
|
||||
<li class=""><a>Statistiken zum Bedarfsausweis Wohngebäude</a></li>
|
||||
<li class=""><a>Bedarfsausweis Gewerbe</a></li>
|
||||
<li class=""><a>Bedarfsausweis Gewerbe online erstellen</a></li>
|
||||
<li class=""><a>Häufige Fragen zum Bedarfsausweis Gewerbe</a></li>
|
||||
<li class=""><a>Statistiken zum Bedarfsausweis Gewerbe</a></li>
|
||||
</ul>
|
||||
</details>
|
||||
<details class="dropdown block xl:dropdown-hover xl:dropdown-right">
|
||||
<summary class="btn rounded-none w-full justify-start">Energieausweis<span class="absolute right-[20px]">❯</span></summary>
|
||||
<ul class="dd-cont p-2 shadow menu dropdown-content z-[1] w-full bg-base-100">
|
||||
<li class=""><a>Energieausweis Pflicht</a></li>
|
||||
<li class=""><a>Energieausweis Kosten</a></li>
|
||||
<li class=""><a>Energieausweis Haus</a></li>
|
||||
</ul>
|
||||
</details>
|
||||
<details class="dropdown block">
|
||||
<summary class="btn rounded-none w-full justify-start">EnEV Zusammenfassung - Archiv</summary>
|
||||
</details>
|
||||
<details class="dropdown block">
|
||||
<summary class="btn rounded-none w-full justify-start">Energieausweis Aussteller</summary>
|
||||
</details>
|
||||
<details class="dropdown block">
|
||||
<summary class="btn rounded-none w-full justify-start">Kundenbewertungen</summary>
|
||||
</details>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<style>
|
||||
|
||||
.dd-cont{
|
||||
@apply !relative lg:!absolute;
|
||||
li{
|
||||
@apply w-max
|
||||
}
|
||||
}
|
||||
|
||||
summary{
|
||||
@apply text-black !text-[1.1rem] !font-normal
|
||||
|
||||
}
|
||||
details:hover > summary {
|
||||
@apply !bg-primary !text-white
|
||||
}
|
||||
details:hover > details.dd-cont {
|
||||
@apply !visible
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</style>
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
import Navigation from "#sidebarCards/card-navigation.svelte";
|
||||
import Preistabelle from "#sidebarCards/card-price-info.svelte";
|
||||
import CardNavigation from "#sidebarCards/cardNavigation.svelte";
|
||||
import CardPriceiInfo from "#sidebarCards/cardPriceiInfo.svelte";
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
<div class="">
|
||||
|
||||
<CardNavigation client:load/>
|
||||
<CardPriceiInfo />
|
||||
|
||||
<Navigation client:load />
|
||||
<Preistabelle client:load />
|
||||
</div>
|
||||
@@ -1,22 +1,20 @@
|
||||
---
|
||||
import Contact from "#sidebarCards/card-contact.svelte";
|
||||
import Review from "#sidebarCards/card-review.svelte";
|
||||
import VApromo from "#sidebarCards/card-VA-promo.svelte";
|
||||
import VAGpromo from "#sidebarCards/card-VA-G-promo.svelte";
|
||||
import BApromo from "#sidebarCards/card-BA-promo.svelte";
|
||||
import BAGpromo from "#sidebarCards/card-BA-G-promo.svelte";
|
||||
import CardContact from "#sidebarCards/cardContact.svelte";
|
||||
import CardReview from "#sidebarCards/cardReview.svelte";
|
||||
import CardVApromo from "#sidebarCards/cardVApromo.svelte";
|
||||
import CardVAGpromo from "#sidebarCards/cardVAGpromo.svelte";
|
||||
import CardBApromo from "#sidebarCards/cardBApromo.svelte";
|
||||
import CardBAGpromo from "#sidebarCards/cardBAGpromo.svelte";
|
||||
---
|
||||
|
||||
<div class="hidden
|
||||
xl:flex xl:flex-col xl:grow
|
||||
">
|
||||
<div class="hidden 2xl:block">
|
||||
|
||||
<Contact client:load />
|
||||
<Review client:load />
|
||||
<VAGpromo client:load />
|
||||
<BAGpromo client:load />
|
||||
<VApromo client:load />
|
||||
<BApromo client:load />
|
||||
<CardContact />
|
||||
<CardReview />
|
||||
<CardVAGpromo />
|
||||
<CardBAGpromo />
|
||||
<CardVApromo />
|
||||
<CardBApromo />
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
import Login from "#sidebarCards/card-login_1.svelte";
|
||||
import Contact from "#sidebarCards/card-contact.svelte";
|
||||
import Review from "#sidebarCards/card-review.svelte";
|
||||
import VApromo from "#sidebarCards/card-VA-promo.svelte";
|
||||
import VAGpromo from "#sidebarCards/card-VA-G-promo.svelte";
|
||||
import BApromo from "#sidebarCards/card-BA-promo.svelte";
|
||||
import BAGpromo from "#sidebarCards/card-BA-G-promo.svelte";
|
||||
import Login from "#sidebarCards/cardlogin_1.svelte";
|
||||
import Contact from "#sidebarCards/cardcontact.svelte";
|
||||
import Review from "#sidebarCards/cardreview.svelte";
|
||||
import VApromo from "#sidebarCards/cardVApromo.svelte";
|
||||
import VAGpromo from "#sidebarCards/cardVAGpromo.svelte";
|
||||
import BApromo from "#sidebarCards/cardBApromo.svelte";
|
||||
import BAGpromo from "#sidebarCards/cardBAGpromo.svelte";
|
||||
---
|
||||
|
||||
<div class="hidden
|
||||
|
||||
@@ -1,5 +1,30 @@
|
||||
<script lang="ts">
|
||||
export let bereich: string;
|
||||
|
||||
|
||||
function toggleBereich(event){
|
||||
|
||||
|
||||
|
||||
var x = event.target.parentNode.parentNode.parentNode;
|
||||
var y = x.nextElementSibling;
|
||||
var z = event.target.innerHTML;
|
||||
|
||||
console.log(y);
|
||||
|
||||
if(z=='-'){
|
||||
//y.classList.remove('hidden');
|
||||
y.style.maxHeight = '0px';
|
||||
event.target.innerHTML = "+";
|
||||
|
||||
}else{
|
||||
//y.classList.add('hidden');
|
||||
y.style.maxHeight = '500px';
|
||||
event.target.innerHTML = "-";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -7,10 +32,10 @@
|
||||
<div class="bereichs-label">
|
||||
|
||||
<div>
|
||||
<div class="grid grid-cols-[max-content_1fr] items-center justify-items-start gap-2">
|
||||
<div class="grid grid-cols-[max-content_1fr_40px] items-center justify-items-start gap-2">
|
||||
<div class="formular-abschnitt1">{bereich}</div>
|
||||
<div class="formular-abschnitt2"><slot></slot></div>
|
||||
<!--<div class="justify-self-end"><img src="/images/icons/toggle-icon.svg" alt="toggle-icon" class="w-[25px] rotate-[90deg]"/></div>-->
|
||||
<div id="BereichToggle" class="justify-self-center self-center cursor-pointer text-[2rem] ring-1 ring-secondary px-4 rounded-sm" on:click={() => toggleBereich(event)}>-</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -3,11 +3,19 @@
|
||||
import WidgetCardTemplate from "./design/content/WidgetCardTemplate.svelte";
|
||||
import { PRICES } from "#lib/constants.js";
|
||||
|
||||
<<<<<<< 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",
|
||||
@@ -35,6 +43,94 @@
|
||||
}
|
||||
</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" />
|
||||
|
||||
@@ -86,6 +182,7 @@
|
||||
<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>
|
||||
@@ -44,7 +44,7 @@ const { title } = Astro.props;
|
||||
2xl:grid-cols-[minmax(350px,350px)1fr_minmax(350px,350px)] 2xl:gap-5 2xl:p-6
|
||||
">
|
||||
|
||||
<SidebarLeft />
|
||||
<SidebarLeft client:load/>
|
||||
|
||||
<article class="box rounded-tl-none p-6">
|
||||
<slot />
|
||||
|
||||
@@ -1,212 +1,214 @@
|
||||
<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 -->
|
||||
|
||||
<BereichLabel bereich="B"
|
||||
>Eingabe der Gebäudeadresse -
|
||||
Angaben zu Wohnfläche, Keller und Dachgeschoss</BereichLabel
|
||||
>
|
||||
|
||||
<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>
|
||||
<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 der Gebäudeadresse - Angaben zu Wohnfläche, Keller und Dachgeschoss</BereichLabel>
|
||||
<div class="collapseBereich">
|
||||
<GebaeudeDaten
|
||||
bind:gebaeude_aufnahme_allgemein
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
||||
</form>
|
||||
|
||||
<style lang="scss">
|
||||
</style>
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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>
|
||||
@@ -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>
|
||||
@@ -1,16 +1,16 @@
|
||||
---
|
||||
import Layout from "#layouts/Layout.astro";
|
||||
import BannerSaeule from "#content/BannerSaeule.svelte";
|
||||
|
||||
---
|
||||
|
||||
<Layout title="Energieausweis online erstellen - Online Energieausweis">
|
||||
|
||||
<h1>Unsere Ausweise im Detail:</h1>
|
||||
|
||||
<BannerSaeule client:load />
|
||||
</Layout>
|
||||
|
||||
|
||||
|
||||
|
||||
---
|
||||
import Layout from "#layouts/Layout.astro";
|
||||
import ProduktVergleich from "#content/produktVergleich.svelte";
|
||||
|
||||
---
|
||||
|
||||
<Layout title="Energieausweis online erstellen - Online Energieausweis">
|
||||
|
||||
<h1>Unsere Ausweise im Detail:</h1>
|
||||
|
||||
<!-- <ProduktVergleich /> -->
|
||||
</Layout>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ title: "Welcher Energieausweis?"
|
||||
---
|
||||
|
||||
import { BoxWithHeading } from "@ibcornelsen/ui";
|
||||
import Widget from "#components/Widget.svelte";
|
||||
import WelcherAusweisWidget from "#widgets/welcherAusweisWidget.svelte";
|
||||
|
||||
# Welcher Energieausweis ist der richtige?
|
||||
|
||||
@@ -14,7 +14,7 @@ Falls Sie nicht wissen sollten welchen Energieausweis Sie benötigen, können Si
|
||||
hier ganz einfach den Gebäudetyp und die entsprechende Maßnahme angeben und
|
||||
bekommen als Ergebnis, den für Sie pasenden Energieausweis angezeigt.
|
||||
|
||||
<Widget client:load />
|
||||
<WelcherAusweisWidget />
|
||||
|
||||
## Bei Vermietung und Verkauf Ihres Wohnhauses ist der Verbrauchsausweis Wohngebäude ausreichend
|
||||
|
||||
|
||||
@@ -5,12 +5,20 @@
|
||||
|
||||
|
||||
.formular-abschnitt1{@apply text-[1.25rem] py-[1px] px-[10px] text-secondary/80 bg-black/15 ring-2 ring-black/30 rounded-sm font-bold;}
|
||||
.formular-abschnitt2{@apply [font-size:_clamp(16px,1vw,28px)] md:[font-size:_clamp(20px,1.25vw,36px)] pl-1;}
|
||||
.formular-abschnitt2{@apply [font-size:_clamp(16px,1vw,28px)] pl-1 justify-self-start
|
||||
md:[font-size:_clamp(20px,1.25vw,36px)]
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
.bereichs-label{@apply px-4 sm:px-0 mt-6 mb-3}
|
||||
|
||||
.collapseBereich{@apply overflow-hidden transition-all ease-in-out duration-200 h-[auto]}
|
||||
.bereich-box {@apply w-full bg-gray-500/10 ring-1 rounded-sm ring-gray-500/35 pt-6 pb-8 px-4;
|
||||
|
||||
transform-origin: top center;
|
||||
/*background: linear-gradient(
|
||||
135deg,
|
||||
rgba(252, 234, 187, 1) 0%,
|
||||
@@ -20,6 +28,8 @@
|
||||
); */
|
||||
}
|
||||
|
||||
|
||||
|
||||
.input-standard{@apply w-full grid grid-cols-[1fr_25px] items-center relative mt-2}
|
||||
.help-label{@apply rounded-e-sm ring-1 ring-black/15}
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ radio {
|
||||
/*ARTICLE*/
|
||||
|
||||
article {
|
||||
@apply w-full relative bg-white min-h-screen px-0 py-0;
|
||||
@apply w-full relative bg-white px-0 py-0;
|
||||
|
||||
hr {
|
||||
@apply mb-4 mt-4;
|
||||
@@ -112,6 +112,7 @@ article {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*SIDEBAR-LEFT*/
|
||||
|
||||
/*NAVIGATION*/
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
"#sidebarRight/*": ["./src/components/design/sidebars/right/*"],
|
||||
|
||||
"#ausweise/*": ["./src/pages/energieausweis-erstellen/*"],
|
||||
"#labels/*": ["./src/components/labels/*"]
|
||||
"#labels/*": ["./src/components/labels/*"],
|
||||
"#widgets/*": ["./src/components/widgets/*"]
|
||||
},
|
||||
"types": ["cypress", "cypress-file-upload", "bun-types", "svelte"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user