blue-chestnut-solar-expert 0.0.34 → 0.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.undo-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/eraser-icon_16.cjs.entry.js +78 -43
- package/dist/cjs/eraser-icon_16.cjs.entry.js.map +1 -1
- package/dist/cjs/loading-widget.cjs.entry.js +1 -1
- package/dist/collection/components/map-draw/tool-box.js +7 -3
- package/dist/collection/components/map-draw/tool-box.js.map +1 -1
- package/dist/collection/components/solar-expert/solar-expert.js +2 -2
- package/dist/collection/components/solar-expert/solar-expert.js.map +1 -1
- package/dist/collection/components/solar-system-form/solar-system-form.js +58 -34
- package/dist/collection/components/solar-system-form/solar-system-form.js.map +1 -1
- package/dist/collection/components/widgets/loading-widget.js +1 -1
- package/dist/collection/constants.js +1 -1
- package/dist/collection/constants.js.map +1 -1
- package/dist/collection/types/lang.js.map +1 -1
- package/dist/collection/utils/lang/english.js +1 -0
- package/dist/collection/utils/lang/english.js.map +1 -1
- package/dist/collection/utils/lang/german.js +1 -0
- package/dist/collection/utils/lang/german.js.map +1 -1
- package/dist/collection/utils/lang/spanish.js +1 -0
- package/dist/collection/utils/lang/spanish.js.map +1 -1
- package/dist/collection/utils/simulation/simulation.js +8 -3
- package/dist/collection/utils/simulation/simulation.js.map +1 -1
- package/dist/collection/utils/simulation/types.js.map +1 -1
- package/dist/components/loading-widget.js +1 -1
- package/dist/components/map-draw.js +1 -1
- package/dist/components/map-selector.js +1 -1
- package/dist/components/{p-DbJfa2yQ.js → p-2Um_yzGy.js} +3 -3
- package/dist/components/{p-DbJfa2yQ.js.map → p-2Um_yzGy.js.map} +1 -1
- package/dist/components/{p-BGxYjXB5.js → p-3JEPWoBM.js} +3 -3
- package/dist/components/{p-BGxYjXB5.js.map → p-3JEPWoBM.js.map} +1 -1
- package/dist/components/{p-BcV6HHN8.js → p-BU8VgrD9.js} +3 -3
- package/dist/components/{p-BcV6HHN8.js.map → p-BU8VgrD9.js.map} +1 -1
- package/dist/components/{p-B1ywivYa.js → p-CUDvRPwB.js} +3 -3
- package/dist/components/{p-B1ywivYa.js.map → p-CUDvRPwB.js.map} +1 -1
- package/dist/components/{p-ClYOM_0b.js → p-CsaE9aHg.js} +8 -8
- package/dist/components/{p-ClYOM_0b.js.map → p-CsaE9aHg.js.map} +1 -1
- package/dist/components/{p-CrzEBN9H.js → p-Cti_pU17.js} +69 -41
- package/dist/components/p-Cti_pU17.js.map +1 -0
- package/dist/components/{p-DMkbzkL_.js → p-DJT7IBlC.js} +10 -6
- package/dist/components/p-DJT7IBlC.js.map +1 -0
- package/dist/components/{p-BLXc1FjC.js → p-DmmMPG7q.js} +5 -2
- package/dist/components/p-DmmMPG7q.js.map +1 -0
- package/dist/components/polygon-buttons.js +1 -1
- package/dist/components/polygon-information.js +1 -1
- package/dist/components/settings-modal.js +1 -1
- package/dist/components/solar-expert.js +10 -10
- package/dist/components/solar-expert.js.map +1 -1
- package/dist/components/solar-system-form.js +1 -1
- package/dist/components/tool-box.js +1 -1
- package/dist/esm/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.undo-icon.entry.js.map +1 -1
- package/dist/esm/eraser-icon_16.entry.js +78 -43
- package/dist/esm/eraser-icon_16.entry.js.map +1 -1
- package/dist/esm/loading-widget.entry.js +1 -1
- package/dist/stencil-library/eraser-icon.house-icon.icon-selector.map-draw.map-selector.move-icon.octagon-minus-icon.polygon-buttons.polygon-information.search-icon.settings-icon.settings-modal.solar-expert.solar-system-form.tool-box.undo-icon.entry.esm.js.map +1 -1
- package/dist/stencil-library/p-b60b09ed.entry.js +2 -0
- package/dist/stencil-library/p-b60b09ed.entry.js.map +1 -0
- package/dist/stencil-library/{p-1e4e5fe9.entry.js → p-df0b0ef8.entry.js} +2 -2
- package/dist/stencil-library/stencil-library.esm.js +1 -1
- package/dist/types/components/solar-system-form/solar-system-form.d.ts +1 -0
- package/dist/types/constants.d.ts +1 -1
- package/dist/types/types/lang.d.ts +1 -0
- package/dist/types/utils/simulation/types.d.ts +1 -0
- package/package.json +1 -1
- package/dist/components/p-BLXc1FjC.js.map +0 -1
- package/dist/components/p-CrzEBN9H.js.map +0 -1
- package/dist/components/p-DMkbzkL_.js.map +0 -1
- package/dist/stencil-library/p-958f0a27.entry.js +0 -2
- package/dist/stencil-library/p-958f0a27.entry.js.map +0 -1
- /package/dist/stencil-library/{p-1e4e5fe9.entry.js.map → p-df0b0ef8.entry.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solar-system-form.js","sourceRoot":"","sources":["../../../src/components/solar-system-form/solar-system-form.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State, Watch } from \"@stencil/core\";\r\nimport { DEFAULT_SOLAR_PANEL_TYPE } from \"../../config\";\r\nimport { SolarPanelSystemPart } from \"../../utils/geometry/fitting\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { Polygon } from \"../../types/shapes\";\r\nimport { state } from \"../../store\";\r\nimport { SimulationConfig } from \"../../utils/simulation/types\";\r\nimport {\r\n generateElectricCarChargingHours,\r\n simulate,\r\n} from \"../../utils/simulation/simulation\";\r\n\r\n@Component({\r\n tag: \"solar-system-form\",\r\n styleUrl: \"../../output.css\",\r\n shadow: false,\r\n})\r\nexport class SolarSystemForm {\r\n @Prop()\r\n systemConfigs: { [id: string]: SolarPanelSystemPart } = {};\r\n @Prop()\r\n roofPolygons: { [id: string]: Polygon } = {};\r\n @Prop()\r\n obstructionPolygons: { [id: string]: Polygon } = {};\r\n\r\n @State()\r\n householdConsumption: number = 4500;\r\n @State()\r\n consumptionProfile: \"mostly_at_home\" | \"mostly_away\" = \"mostly_at_home\";\r\n @State()\r\n electricityPrice: number = 0.3;\r\n @State()\r\n compensationRate: number = 0.07;\r\n @State()\r\n annualPriceIncrease: number = 2;\r\n @State()\r\n autonomy: number = 0;\r\n @State()\r\n costSavings: number = 0;\r\n @State()\r\n numberOfPanels: number = 5;\r\n @State()\r\n panelPeakPower: number = 0.4; // kW per panel\r\n @State()\r\n name: string = \"\";\r\n @State()\r\n email: string = \"\";\r\n @State()\r\n nameError: string = \"\";\r\n @State()\r\n emailError: string = \"\";\r\n @State()\r\n electricCar: boolean = false;\r\n @State()\r\n electricCarChargingTime: \"day\" | \"night\" = \"day\";\r\n @State()\r\n heatPump: number = 0;\r\n @State()\r\n battery: number = 0;\r\n\r\n @State()\r\n compensation25Years: number = 0;\r\n @State()\r\n savedCosts25Years: number = 0;\r\n @State()\r\n maxPanels: number = 5;\r\n @State()\r\n kmDrivenPerYear: number = 10000;\r\n\r\n @Watch(\"systemConfigs\")\r\n updateSystemConfigs() {\r\n if (Object.keys(this.systemConfigs).length === 0) {\r\n this.numberOfPanels = 0;\r\n this.maxPanels = 0;\r\n return;\r\n }\r\n this.numberOfPanels = Object.keys(this.systemConfigs).reduce(\r\n (acc, curr) =>\r\n acc + this.systemConfigs[curr].positionedPanels.length,\r\n 0,\r\n );\r\n this.maxPanels = Object.keys(this.systemConfigs).reduce(\r\n (acc, curr) =>\r\n acc + this.systemConfigs[curr].positionedPanels.length,\r\n 0,\r\n );\r\n\r\n this.panelPeakPower =\r\n Object.entries(this.systemConfigs)[0][1].positionedPanels[0].panel\r\n .kWattPeak;\r\n\r\n this.recalculate();\r\n }\r\n\r\n private recalculate() {\r\n const simulationConfig: SimulationConfig = {\r\n general: {\r\n simulationYears: 25,\r\n },\r\n householdConsumption: {\r\n consumptionProfile: this.consumptionProfile,\r\n winterConsumptionFactor: 1.2,\r\n summerConsumptionFactor: 0.8,\r\n averageConsumption: this.householdConsumption / 365,\r\n },\r\n electricityPrice: {\r\n purchase: this.electricityPrice,\r\n sell: this.compensationRate,\r\n increase: this.annualPriceIncrease / 100,\r\n },\r\n solarSystem: {\r\n numberOfPanels: this.numberOfPanels,\r\n panelType: DEFAULT_SOLAR_PANEL_TYPE,\r\n pitch: 30,\r\n },\r\n batteryKWh: this.battery,\r\n solarRadiation: {\r\n winterFactor: 0.2,\r\n summerFactor: 0.6,\r\n },\r\n heatPump: {\r\n m2: this.heatPump,\r\n },\r\n electricCar: this.electricCar\r\n ? {\r\n averageKilometersPerDay: this.kmDrivenPerYear / 365,\r\n consumptionkWhPer100km: 17,\r\n batteryKWh: 20,\r\n chargingHours: this.electricCarChargingTime === \"day\"\r\n ? generateElectricCarChargingHours(6, 18)\r\n : generateElectricCarChargingHours(18, 6),\r\n }\r\n : undefined,\r\n };\r\n\r\n const result = simulate(simulationConfig);\r\n\r\n this.compensation25Years = result.compensationPerDay * 365 * 25;\r\n this.savedCosts25Years = result.byYearSavedCosts.reduce(\r\n (acc, curr) => acc + curr,\r\n 0,\r\n );\r\n this.costSavings = result.compensationPerDay * 365;\r\n this.autonomy = result.autonomy * 100;\r\n }\r\n\r\n componentWillLoad() {\r\n this.updateSystemConfigs();\r\n }\r\n\r\n private validateForm(): boolean {\r\n let isValid = true;\r\n const t = getLanguageStrings(state.settings.language);\r\n\r\n // Validate name\r\n if (!this.name.trim()) {\r\n this.nameError = t.solarSystemForm.nameError;\r\n isValid = false;\r\n } else {\r\n this.nameError = \"\";\r\n }\r\n\r\n // Validate email\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!this.email.trim()) {\r\n this.emailError = t.solarSystemForm.emailError;\r\n isValid = false;\r\n } else if (!emailRegex.test(this.email)) {\r\n this.emailError = t.solarSystemForm.validEmailError;\r\n isValid = false;\r\n } else {\r\n this.emailError = \"\";\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n private handleRequestOffer() {\r\n if (!this.validateForm()) {\r\n return;\r\n }\r\n // Here you can implement the logic to handle the offer request\r\n console.log(\"Requesting offer for: \", {\r\n name: this.name,\r\n email: this.email,\r\n systemConfig: this.systemConfigs,\r\n consumption: this.householdConsumption,\r\n autonomy: this.autonomy,\r\n costSavings: this.costSavings,\r\n roofPolygons: this.roofPolygons,\r\n obstructionPolygons: this.obstructionPolygons,\r\n });\r\n }\r\n\r\n private isIOS(): boolean {\r\n return state.isIOS;\r\n }\r\n\r\n render() {\r\n const t = getLanguageStrings(state.settings.language);\r\n return (\r\n <div\r\n class=\"flex flex-col justify-center items-center w-full h-full pt-4\" // style={{\r\n // display: (Object.keys(this.systemConfigs).length === 0)\r\n // ? \"none\"\r\n // : \"flex\",\r\n // }}\r\n id=\"solar-system-form\"\r\n >\r\n <h1 class=\"text-2xl font-bold text-secondary mb-4 w-full\">\r\n {t.solarSystemForm.title}\r\n </h1>\r\n\r\n <div class=\"w-full bg-primary rounded-4xl p-6 space-y-6\">\r\n {/* System Info Section */}\r\n <div class=\"space-y-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.systemInformation}\r\n </h2>\r\n <div class=\"grid grid-rows-3 gap-0\">\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.numberOfPanels}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.panelPeakPower}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n {!this.isIOS()\r\n ? (\r\n <input\r\n type=\"number\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n value={this.numberOfPanels}\r\n readOnly\r\n />\r\n )\r\n : (\r\n <input\r\n type=\"number\"\r\n min=\"1\"\r\n max={this.maxPanels}\r\n class=\"flex-1 px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n value={this.numberOfPanels}\r\n onInput={(e) => {\r\n const value = parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n if (\r\n value >= 1 &&\r\n value <=\r\n this.maxPanels\r\n ) {\r\n this.numberOfPanels = value;\r\n this.recalculate();\r\n }\r\n }}\r\n />\r\n )}\r\n <input\r\n type=\"number\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n value={this.panelPeakPower}\r\n readonly\r\n />\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <div class=\"w-full pt-2\">\r\n {!this.isIOS() &&\r\n (\r\n <input\r\n type=\"range\"\r\n min=\"1\"\r\n max={this.maxPanels}\r\n step=\"1\"\r\n class=\"input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\r\n value={this.numberOfPanels}\r\n onInput={(e) => {\r\n this.numberOfPanels =\r\n parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bg-muted rounded-4xl p-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <span class=\"text-text-muted\">\r\n {t.solarSystemForm.totalSystemPeakPower}\r\n </span>\r\n <span class=\"text-xl font-bold text-secondary\">\r\n {(DEFAULT_SOLAR_PANEL_TYPE.kWattPeak *\r\n this.numberOfPanels).toFixed(1)} kW\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n {/* Household Consumption Section */}\r\n <div class=\"space-y-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.householdConsumptionTitle}\r\n </h2>\r\n <div class=\"grid grid-rows-2 gap-0\">\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <label class=\"block text-sm font-medium text-text-muted\">\r\n {t.solarSystemForm.annualConsumption}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted\">\r\n {t.solarSystemForm.consumptionProfileTitle}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <input\r\n type=\"number\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n value={this.householdConsumption}\r\n onInput={(e) => {\r\n this.householdConsumption = parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n <select\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n onChange={(e) => {\r\n this.consumptionProfile =\r\n (e.target as HTMLSelectElement)\r\n .value as\r\n | \"mostly_at_home\"\r\n | \"mostly_away\";\r\n this.recalculate();\r\n }}\r\n >\r\n <option\r\n value=\"mostly_at_home\"\r\n selected={this.consumptionProfile ===\r\n \"mostly_at_home\"}\r\n >\r\n {t.solarSystemForm.consumptionProfiles\r\n .mostlyAtHome}\r\n </option>\r\n <option\r\n value=\"mostly_away\"\r\n selected={this.consumptionProfile ===\r\n \"mostly_away\"}\r\n >\r\n {t.solarSystemForm.consumptionProfiles\r\n .mostlyAway}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n {\r\n /* <div class=\"mt-4 h-48\">\r\n <canvas ref={(el) => this.chartRef = el}></canvas>\r\n </div> */\r\n }\r\n </div>\r\n <div class=\"space-y-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.additionalComponents.title}\r\n </h2>\r\n <div class=\"flex flex-col gap-4\">\r\n {/* Heat Pump Section */}\r\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <div class=\"flex items-center gap-2\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"heatPump\"\r\n class=\"w-4 h-4 accent-tertiary border-border rounded-full focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\r\n checked={this.heatPump > 0}\r\n onChange={(e) => {\r\n this.heatPump =\r\n (e.target as HTMLInputElement)\r\n .checked\r\n ? 100\r\n : 0;\r\n this.recalculate();\r\n }}\r\n />\r\n <label\r\n htmlFor=\"heatPump\"\r\n class=\"text-text-muted\"\r\n >\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .heatPump}\r\n </label>\r\n </div>\r\n {(this.heatPump > 0 && !this.isIOS()) && (\r\n <span class=\"text-text-muted\">\r\n {this.heatPump} m²\r\n </span>\r\n )}\r\n </div>\r\n {this.heatPump > 0 && (\r\n <div class=\"flex flex-col gap-2\">\r\n {this.isIOS()\r\n ? (\r\n <div class=\"flex items-center gap-2\">\r\n <input\r\n type=\"number\"\r\n min=\"10\"\r\n max=\"300\"\r\n step=\"10\"\r\n class=\"flex-1 px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n style={{ //TODO fix this\r\n border:\r\n \"1px solid var(--color-border)\",\r\n }}\r\n value={this.heatPump}\r\n onInput={(e) => {\r\n const value =\r\n parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n if (\r\n value >= 10 &&\r\n value <= 300\r\n ) {\r\n this.heatPump =\r\n value;\r\n this.recalculate();\r\n }\r\n }}\r\n />\r\n <span class=\"text-sm text-text-muted\">\r\n m²\r\n </span>\r\n </div>\r\n )\r\n : (\r\n <input\r\n type=\"range\"\r\n min=\"10\"\r\n max=\"300\"\r\n step=\"10\"\r\n class=\"input-slider custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\r\n value={this.heatPump}\r\n onInput={(e) => {\r\n this.heatPump =\r\n parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Electric Car Section */}\r\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <div class=\"flex items-center gap-2\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"electricCar\"\r\n class=\"w-4 h-4 accent-tertiary border-border rounded focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\r\n checked={this.electricCar}\r\n onChange={(e) => {\r\n this.electricCar =\r\n (e.target as HTMLInputElement)\r\n .checked;\r\n this.recalculate();\r\n }}\r\n />\r\n <label\r\n htmlFor=\"electricCar\"\r\n class=\"text-text-muted\"\r\n >\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .electricCar}\r\n </label>\r\n </div>\r\n </div>\r\n {this.electricCar && (\r\n <div class=\"flex flex-col gap-2\">\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <label class=\"text-sm text-text-muted\">\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .chargingTime}\r\n </label>\r\n <label class=\"text-sm text-text-muted\">\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .kilometersPerYear}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <select\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n onChange={(e) => {\r\n this.electricCarChargingTime =\r\n (e.target as HTMLSelectElement)\r\n .value as\r\n | \"day\"\r\n | \"night\";\r\n this.recalculate();\r\n }}\r\n style={{ //TODO fix this\r\n border:\r\n \"1px solid var(--color-border)\",\r\n }}\r\n >\r\n <option\r\n value=\"day\"\r\n selected={this\r\n .electricCarChargingTime ===\r\n \"day\"}\r\n >\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .chargingTimeDay}\r\n </option>\r\n <option\r\n value=\"night\"\r\n selected={this\r\n .electricCarChargingTime ===\r\n \"night\"}\r\n >\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .chargingTimeNight}\r\n </option>\r\n </select>\r\n <input\r\n type=\"number\"\r\n min=\"1000\"\r\n max=\"50000\"\r\n step=\"1000\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.kmDrivenPerYear}\r\n onInput={(e) => {\r\n this.kmDrivenPerYear =\r\n parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n style={{ //TODO fix this\r\n border:\r\n \"1px solid var(--color-border)\",\r\n }}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Battery Section */}\r\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <label class=\"text-text-muted\">\r\n {t.solarSystemForm.additionalComponents\r\n .battery}\r\n </label>\r\n {!this.isIOS() && (\r\n <span class=\"text-text-muted\">\r\n {this.battery} kWh\r\n </span>\r\n )}\r\n </div>\r\n <div class=\"flex flex-col gap-2\">\r\n {this.isIOS()\r\n ? (\r\n <div class=\"flex items-center gap-2\">\r\n <input\r\n type=\"number\"\r\n min=\"0\"\r\n max=\"20\"\r\n step=\"1\"\r\n class=\"flex-1 px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.battery}\r\n onInput={(e) => {\r\n const value = parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n if (\r\n value >= 0 &&\r\n value <= 20\r\n ) {\r\n this.battery =\r\n value;\r\n this.recalculate();\r\n }\r\n }}\r\n placeholder=\"Battery capacity\"\r\n style={{ //TODO fix this\r\n border:\r\n \"1px solid var(--color-border)\",\r\n }}\r\n />\r\n <span class=\"text-sm text-text-muted\">\r\n kWh\r\n </span>\r\n </div>\r\n )\r\n : (\r\n <input\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"20\"\r\n step=\"1\"\r\n class=\"input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\r\n value={this.battery}\r\n onInput={(e) => {\r\n this.battery = parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Electricity Price and Compensation Section */}\r\n <div class=\"space-y-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.electricityCostsTitle}\r\n </h2>\r\n <div class=\"grid grid-rows-2 gap-0\">\r\n <div class=\"grid grid-cols-3 gap-4\">\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.electricityPrice}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.compensationRate}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.annualPriceIncrease}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-3 gap-4 text-primary-foreground\">\r\n <input\r\n type=\"number\"\r\n step=\"0.01\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.electricityPrice.toFixed(2)}\r\n onInput={(e) => {\r\n this.electricityPrice = parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n <input\r\n type=\"number\"\r\n step=\"0.01\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.compensationRate.toFixed(2)}\r\n onInput={(e) => {\r\n this.compensationRate = parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n <input\r\n type=\"number\"\r\n step=\"0.1\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.annualPriceIncrease.toFixed(1)}\r\n onInput={(e) => {\r\n this.annualPriceIncrease = parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Results Section */}\r\n <div\r\n class=\"space-y-4 p-4 border border-border rounded-4xl\"\r\n style={{ //TODO fix this\r\n border: \"1px solid var(--color-border)\",\r\n }}\r\n >\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.resultsTitle}\r\n </h2>\r\n <div class=\"bg-muted rounded-4xl p-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <span class=\"text-text-muted\">\r\n {t.solarSystemForm.autonomy}\r\n </span>\r\n <span class=\"text-xl font-bold text-secondary\">\r\n {this.autonomy > 100\r\n ? \"100\"\r\n : this.autonomy.toFixed(1)}%\r\n </span>\r\n </div>\r\n <div class=\"flex items-center justify-between mt-4\">\r\n <div class=\"flex items-center gap-2\">\r\n <span class=\"text-text-muted\">\r\n {t.solarSystemForm.costSavings}\r\n </span>\r\n <div class=\"relative group\">\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n class=\"h-5 w-5 text-gray-400 cursor-help\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n >\r\n <path\r\n fill-rule=\"evenodd\"\r\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3a1 1 0 00-.867.5 1 1 0 11-1.731-1A3 3 0 0113 8a3.001 3.001 0 01-2 2.83V11a1 1 0 11-2 0v-1a1 1 0 011-1 1 1 0 100-2zm0 8a1 1 0 100-2 1 1 0 000 2z\"\r\n clip-rule=\"evenodd\"\r\n />\r\n </svg>\r\n <div class=\"absolute bottom-full left-1/2 transform -translate-x-1/2 mb-2 w-64 p-2 bg-gray-800 text-muted text-sm rounded-lg opacity-0 group-hover:opacity-100 transition-opacity duration-200 pointer-events-none\">\r\n {t.solarSystemForm\r\n .savingsDisclaimer}\r\n </div>\r\n </div>\r\n </div>\r\n <span class=\"text-xl font-bold text-success\">\r\n {this.costSavings.toFixed(2)}€/{t\r\n .solarSystemForm.year}\r\n </span>\r\n </div>\r\n <div class=\"flex items-center justify-between mt-4\">\r\n <div class=\"flex items-center gap-2\">\r\n <span class=\"text-text-muted\">\r\n Einspeisevergütung 25 Jahre\r\n </span>\r\n </div>\r\n <span class=\"text-xl font-bold text-success\">\r\n {this.compensation25Years.toFixed(2)}€\r\n </span>\r\n </div>\r\n <div class=\"flex items-center justify-between mt-4\">\r\n <div class=\"flex items-center gap-2\">\r\n <span class=\"text-text-muted\">\r\n Geldwerter Vorteil 25 Jahre\r\n </span>\r\n </div>\r\n <span class=\"text-xl font-bold text-success\">\r\n {this.savedCosts25Years.toFixed(2)}€\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Contact Information Section */}\r\n <div class=\"space-y-4 pt-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.requestOffer}\r\n </h2>\r\n <div class=\"grid gap-4\">\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.name}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.email}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <div>\r\n <input\r\n type=\"text\"\r\n class={`w-full px-4 py-2 rounded-4xl border ${\r\n this.nameError\r\n ? \"border-error\"\r\n : \"border-border\"\r\n } focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\r\n value={this.name}\r\n onInput={(e) => {\r\n this.name =\r\n (e.target as HTMLInputElement)\r\n .value;\r\n this.validateForm();\r\n }}\r\n placeholder=\"Your name\"\r\n />\r\n {this.nameError && (\r\n <p class=\"text-error text-sm mt-1\">\r\n {this.nameError}\r\n </p>\r\n )}\r\n </div>\r\n <div>\r\n <input\r\n type=\"email\"\r\n class={`w-full px-4 py-2 rounded-4xl border ${\r\n this.emailError\r\n ? \"border-error\"\r\n : \"border-border\"\r\n } focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\r\n value={this.email}\r\n onInput={(e) => {\r\n this.email =\r\n (e.target as HTMLInputElement)\r\n .value;\r\n this.validateForm();\r\n }}\r\n placeholder=\"your.email@example.com\"\r\n />\r\n {this.emailError && (\r\n <p class=\"text-error text-sm mt-1\">\r\n {this.emailError}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex justify-center\">\r\n <button\r\n onClick={() => this.handleRequestOffer()}\r\n disabled={!this.name.trim() ||\r\n !this.email.trim() || !!this.nameError ||\r\n !!this.emailError}\r\n class=\"px-4 py-2 bg-secondary rounded-4xl hover:bg-tertiary transition-colors duration-200 text-muted\"\r\n >\r\n {t.solarSystemForm.requestOfferButton}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"solar-system-form.js","sourceRoot":"","sources":["../../../src/components/solar-system-form/solar-system-form.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Prop, State, Watch } from \"@stencil/core\";\r\nimport { DEFAULT_SOLAR_PANEL_TYPE } from \"../../config\";\r\nimport { SolarPanelSystemPart } from \"../../utils/geometry/fitting\";\r\nimport { getLanguageStrings } from \"../../utils/lang/general\";\r\nimport { Polygon } from \"../../types/shapes\";\r\nimport { state } from \"../../store\";\r\nimport { SimulationConfig } from \"../../utils/simulation/types\";\r\nimport {\r\n generateElectricCarChargingHours,\r\n simulate,\r\n} from \"../../utils/simulation/simulation\";\r\nimport { HEAT_PUMP_CONSUMPTION } from \"../../constants\";\r\n\r\n@Component({\r\n tag: \"solar-system-form\",\r\n styleUrl: \"../../output.css\",\r\n shadow: false,\r\n})\r\nexport class SolarSystemForm {\r\n @Prop()\r\n systemConfigs: { [id: string]: SolarPanelSystemPart } = {};\r\n @Prop()\r\n roofPolygons: { [id: string]: Polygon } = {};\r\n @Prop()\r\n obstructionPolygons: { [id: string]: Polygon } = {};\r\n\r\n @State()\r\n householdConsumption: number = 4500;\r\n @State()\r\n consumptionProfile: \"mostly_at_home\" | \"mostly_away\" = \"mostly_at_home\";\r\n @State()\r\n electricityPrice: number = 0.3;\r\n @State()\r\n compensationRate: number = 0.07;\r\n @State()\r\n annualPriceIncrease: number = 2;\r\n @State()\r\n autonomy: number = 0;\r\n @State()\r\n costSavings: number = 0;\r\n @State()\r\n numberOfPanels: number = 5;\r\n @State()\r\n panelPeakPower: number = 0.4; // kW per panel\r\n @State()\r\n name: string = \"\";\r\n @State()\r\n email: string = \"\";\r\n @State()\r\n nameError: string = \"\";\r\n @State()\r\n emailError: string = \"\";\r\n @State()\r\n electricCar: boolean = false;\r\n @State()\r\n electricCarChargingTime: \"day\" | \"night\" = \"day\";\r\n @State()\r\n heatPump: number = 0;\r\n @State()\r\n battery: number = 0;\r\n\r\n @State()\r\n compensation25Years: number = 0;\r\n @State()\r\n savedCosts25Years: number = 0;\r\n @State()\r\n maxPanels: number = 5;\r\n @State()\r\n kmDrivenPerYear: number = 10000;\r\n\r\n @Watch(\"systemConfigs\")\r\n updateSystemConfigs() {\r\n if (Object.keys(this.systemConfigs).length === 0) {\r\n this.numberOfPanels = 0;\r\n this.maxPanels = 0;\r\n return;\r\n }\r\n this.numberOfPanels = Object.keys(this.systemConfigs).reduce(\r\n (acc, curr) =>\r\n acc + this.systemConfigs[curr].positionedPanels.length,\r\n 0,\r\n );\r\n this.maxPanels = Object.keys(this.systemConfigs).reduce(\r\n (acc, curr) =>\r\n acc + this.systemConfigs[curr].positionedPanels.length,\r\n 0,\r\n );\r\n\r\n this.panelPeakPower =\r\n Object.entries(this.systemConfigs)[0][1].positionedPanels[0].panel\r\n .kWattPeak;\r\n\r\n this.recalculate();\r\n }\r\n\r\n private formatEuropeanNumber(num: number, decimals: number = 2): string {\r\n const fixed = num.toFixed(decimals);\r\n const [integerPart, decimalPart] = fixed.split(\".\");\r\n\r\n // Add dots as thousands separators\r\n const formattedInteger = integerPart.replace(\r\n /\\B(?=(\\d{3})+(?!\\d))/g,\r\n \".\",\r\n );\r\n\r\n // Join with comma as decimal separator\r\n return decimalPart\r\n ? `${formattedInteger},${decimalPart}`\r\n : formattedInteger;\r\n }\r\n\r\n private recalculate() {\r\n const simulationConfig: SimulationConfig = {\r\n general: {\r\n simulationYears: 25,\r\n },\r\n householdConsumption: {\r\n consumptionProfile: this.consumptionProfile,\r\n winterConsumptionFactor: 1.2,\r\n summerConsumptionFactor: 0.8,\r\n averageConsumption: this.householdConsumption / 365,\r\n },\r\n electricityPrice: {\r\n purchase: this.electricityPrice,\r\n sell: this.compensationRate,\r\n increase: this.annualPriceIncrease / 100,\r\n },\r\n solarSystem: {\r\n numberOfPanels: this.numberOfPanels,\r\n panelType: DEFAULT_SOLAR_PANEL_TYPE,\r\n pitch: 30,\r\n },\r\n batteryKWh: this.battery,\r\n solarRadiation: {\r\n winterFactor: 0.2,\r\n summerFactor: 0.6,\r\n },\r\n heatPump: {\r\n m2: this.heatPump,\r\n },\r\n electricCar: this.electricCar\r\n ? {\r\n averageKilometersPerDay: this.kmDrivenPerYear / 365,\r\n consumptionkWhPer100km: 17,\r\n batteryKWh: 20,\r\n chargingHours: this.electricCarChargingTime === \"day\"\r\n ? generateElectricCarChargingHours(6, 18)\r\n : generateElectricCarChargingHours(18, 6),\r\n }\r\n : undefined,\r\n };\r\n\r\n const result = simulate(simulationConfig);\r\n\r\n this.compensation25Years = result.compensationPerDay * 365 * 25;\r\n this.savedCosts25Years = result.byYearSavedCosts.reduce(\r\n (acc, curr) => acc + curr,\r\n 0,\r\n );\r\n this.costSavings = result.byYearSavedCosts[0];\r\n this.autonomy = result.autonomy * 100;\r\n }\r\n\r\n componentWillLoad() {\r\n this.updateSystemConfigs();\r\n }\r\n\r\n private validateForm(): boolean {\r\n let isValid = true;\r\n const t = getLanguageStrings(state.settings.language);\r\n\r\n // Validate name\r\n if (!this.name.trim()) {\r\n this.nameError = t.solarSystemForm.nameError;\r\n isValid = false;\r\n } else {\r\n this.nameError = \"\";\r\n }\r\n\r\n // Validate email\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!this.email.trim()) {\r\n this.emailError = t.solarSystemForm.emailError;\r\n isValid = false;\r\n } else if (!emailRegex.test(this.email)) {\r\n this.emailError = t.solarSystemForm.validEmailError;\r\n isValid = false;\r\n } else {\r\n this.emailError = \"\";\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n private handleRequestOffer() {\r\n if (!this.validateForm()) {\r\n return;\r\n }\r\n // Here you can implement the logic to handle the offer request\r\n console.log(\"Requesting offer for: \", {\r\n name: this.name,\r\n email: this.email,\r\n systemConfig: this.systemConfigs,\r\n consumption: this.householdConsumption,\r\n autonomy: this.autonomy,\r\n costSavings: this.costSavings,\r\n roofPolygons: this.roofPolygons,\r\n obstructionPolygons: this.obstructionPolygons,\r\n });\r\n }\r\n\r\n private isIOS(): boolean {\r\n return state.isIOS;\r\n }\r\n\r\n render() {\r\n const t = getLanguageStrings(state.settings.language);\r\n return (\r\n <div\r\n class=\"flex flex-col justify-center items-center w-full h-full pt-4\" // style={{\r\n // display: (Object.keys(this.systemConfigs).length === 0)\r\n // ? \"none\"\r\n // : \"flex\",\r\n // }}\r\n id=\"solar-system-form\"\r\n >\r\n <h1 class=\"text-2xl font-bold text-secondary mb-4 w-full\">\r\n {t.solarSystemForm.title}\r\n </h1>\r\n\r\n <div class=\"w-full bg-primary rounded-4xl p-6 space-y-6\">\r\n {/* System Info Section */}\r\n <div class=\"space-y-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.systemInformation}\r\n </h2>\r\n <div class=\"grid grid-rows-3 gap-0\">\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.numberOfPanels}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.panelPeakPower}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n {!this.isIOS()\r\n ? (\r\n <input\r\n type=\"number\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n value={this.numberOfPanels}\r\n readOnly\r\n />\r\n )\r\n : (\r\n <input\r\n type=\"number\"\r\n min=\"1\"\r\n max={this.maxPanels}\r\n class=\"flex-1 px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n value={this.numberOfPanels}\r\n onInput={(e) => {\r\n const value = parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n if (\r\n value >= 1 &&\r\n value <=\r\n this.maxPanels\r\n ) {\r\n this.numberOfPanels = value;\r\n this.recalculate();\r\n }\r\n }}\r\n />\r\n )}\r\n <input\r\n type=\"number\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n value={this.panelPeakPower}\r\n readonly\r\n />\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <div class=\"w-full pt-2\">\r\n {!this.isIOS() &&\r\n (\r\n <input\r\n type=\"range\"\r\n min=\"1\"\r\n max={this.maxPanels}\r\n step=\"1\"\r\n class=\"input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\r\n value={this.numberOfPanels}\r\n onInput={(e) => {\r\n this.numberOfPanels =\r\n parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"bg-muted rounded-4xl p-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <span class=\"text-text-muted\">\r\n {t.solarSystemForm.totalSystemPeakPower}\r\n </span>\r\n <span class=\"text-xl font-bold text-secondary\">\r\n {(DEFAULT_SOLAR_PANEL_TYPE.kWattPeak *\r\n this.numberOfPanels).toFixed(1)} kW\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n {/* Household Consumption Section */}\r\n <div class=\"space-y-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.householdConsumptionTitle}\r\n </h2>\r\n <div class=\"grid grid-rows-2 gap-0\">\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <label class=\"block text-sm font-medium text-text-muted\">\r\n {t.solarSystemForm.annualConsumption}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted\">\r\n {t.solarSystemForm.consumptionProfileTitle}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <input\r\n type=\"number\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n value={this.householdConsumption}\r\n onInput={(e) => {\r\n this.householdConsumption = parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n <select\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground\"\r\n onChange={(e) => {\r\n this.consumptionProfile =\r\n (e.target as HTMLSelectElement)\r\n .value as\r\n | \"mostly_at_home\"\r\n | \"mostly_away\";\r\n this.recalculate();\r\n }}\r\n >\r\n <option\r\n value=\"mostly_at_home\"\r\n selected={this.consumptionProfile ===\r\n \"mostly_at_home\"}\r\n >\r\n {t.solarSystemForm.consumptionProfiles\r\n .mostlyAtHome}\r\n </option>\r\n <option\r\n value=\"mostly_away\"\r\n selected={this.consumptionProfile ===\r\n \"mostly_away\"}\r\n >\r\n {t.solarSystemForm.consumptionProfiles\r\n .mostlyAway}\r\n </option>\r\n </select>\r\n </div>\r\n </div>\r\n {\r\n /* <div class=\"mt-4 h-48\">\r\n <canvas ref={(el) => this.chartRef = el}></canvas>\r\n </div> */\r\n }\r\n </div>\r\n <div class=\"space-y-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.additionalComponents.title}\r\n </h2>\r\n <div class=\"flex flex-col gap-4\">\r\n {/* Heat Pump Section */}\r\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <div class=\"flex items-center gap-2\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"heatPump\"\r\n class=\"w-4 h-4 accent-tertiary border-border rounded-full focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\r\n checked={this.heatPump > 0}\r\n onChange={(e) => {\r\n this.heatPump =\r\n (e.target as HTMLInputElement)\r\n .checked\r\n ? 100\r\n : 0;\r\n this.recalculate();\r\n }}\r\n />\r\n <label\r\n htmlFor=\"heatPump\"\r\n class=\"text-text-muted\"\r\n >\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .heatPump}\r\n </label>\r\n </div>\r\n {(this.heatPump > 0 && !this.isIOS()) && (\r\n <span class=\"text-text-muted\">\r\n {this.heatPump} m²\r\n </span>\r\n )}\r\n </div>\r\n {this.heatPump > 0 && (\r\n <div class=\"flex flex-col gap-2\">\r\n {this.isIOS()\r\n ? (\r\n <div class=\"flex items-center gap-2\">\r\n <input\r\n type=\"number\"\r\n min=\"10\"\r\n max=\"300\"\r\n step=\"10\"\r\n class=\"flex-1 px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n style={{ //TODO fix this\r\n border:\r\n \"1px solid var(--color-border)\",\r\n }}\r\n value={this.heatPump}\r\n onInput={(e) => {\r\n const value =\r\n parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n if (\r\n value >= 10 &&\r\n value <= 300\r\n ) {\r\n this.heatPump =\r\n value;\r\n this.recalculate();\r\n }\r\n }}\r\n />\r\n <span class=\"text-sm text-text-muted\">\r\n m²\r\n </span>\r\n </div>\r\n )\r\n : (\r\n <input\r\n type=\"range\"\r\n min=\"10\"\r\n max=\"300\"\r\n step=\"10\"\r\n class=\"input-slider custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\r\n value={this.heatPump}\r\n onInput={(e) => {\r\n this.heatPump =\r\n parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Electric Car Section */}\r\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <div class=\"flex items-center gap-2\">\r\n <input\r\n type=\"checkbox\"\r\n id=\"electricCar\"\r\n class=\"w-4 h-4 accent-tertiary border-border rounded focus:ring-tertiary focus:ring-offset-0 focus:ring-2\"\r\n checked={this.electricCar}\r\n onChange={(e) => {\r\n this.electricCar =\r\n (e.target as HTMLInputElement)\r\n .checked;\r\n this.recalculate();\r\n }}\r\n />\r\n <label\r\n htmlFor=\"electricCar\"\r\n class=\"text-text-muted\"\r\n >\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .electricCar}\r\n </label>\r\n </div>\r\n </div>\r\n {this.electricCar && (\r\n <div class=\"flex flex-col gap-2\">\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <label class=\"text-sm text-text-muted\">\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .chargingTime}\r\n </label>\r\n <label class=\"text-sm text-text-muted\">\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .kilometersPerYear}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <select\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n onChange={(e) => {\r\n this.electricCarChargingTime =\r\n (e.target as HTMLSelectElement)\r\n .value as\r\n | \"day\"\r\n | \"night\";\r\n this.recalculate();\r\n }}\r\n style={{ //TODO fix this\r\n border:\r\n \"1px solid var(--color-border)\",\r\n }}\r\n >\r\n <option\r\n value=\"day\"\r\n selected={this\r\n .electricCarChargingTime ===\r\n \"day\"}\r\n >\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .chargingTimeDay}\r\n </option>\r\n <option\r\n value=\"night\"\r\n selected={this\r\n .electricCarChargingTime ===\r\n \"night\"}\r\n >\r\n {t.solarSystemForm\r\n .additionalComponents\r\n .chargingTimeNight}\r\n </option>\r\n </select>\r\n <input\r\n type=\"number\"\r\n min=\"1000\"\r\n max=\"50000\"\r\n step=\"1000\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.kmDrivenPerYear}\r\n onInput={(e) => {\r\n this.kmDrivenPerYear =\r\n parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n style={{ //TODO fix this\r\n border:\r\n \"1px solid var(--color-border)\",\r\n }}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Battery Section */}\r\n <div class=\"flex flex-col bg-muted rounded-4xl p-4 gap-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <label class=\"text-text-muted\">\r\n {t.solarSystemForm.additionalComponents\r\n .battery}\r\n </label>\r\n {!this.isIOS() && (\r\n <span class=\"text-text-muted\">\r\n {this.battery} kWh\r\n </span>\r\n )}\r\n </div>\r\n <div class=\"flex flex-col gap-2\">\r\n {this.isIOS()\r\n ? (\r\n <div class=\"flex items-center gap-2\">\r\n <input\r\n type=\"number\"\r\n min=\"0\"\r\n max=\"20\"\r\n step=\"1\"\r\n class=\"flex-1 px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.battery}\r\n onInput={(e) => {\r\n const value = parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n if (\r\n value >= 0 &&\r\n value <= 20\r\n ) {\r\n this.battery =\r\n value;\r\n this.recalculate();\r\n }\r\n }}\r\n placeholder=\"Battery capacity\"\r\n style={{ //TODO fix this\r\n border:\r\n \"1px solid var(--color-border)\",\r\n }}\r\n />\r\n <span class=\"text-sm text-text-muted\">\r\n kWh\r\n </span>\r\n </div>\r\n )\r\n : (\r\n <input\r\n type=\"range\"\r\n min=\"0\"\r\n max=\"20\"\r\n step=\"1\"\r\n class=\"input-slider w-full custom-range appearance-none rounded-full bg-transparent [&::-webkit-slider-runnable-track]:rounded-full [&::-webkit-slider-runnable-track]:bg-black/25 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:h-[10px] [&::-webkit-slider-thumb]:w-[10px] [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-muted\"\r\n value={this.battery}\r\n onInput={(e) => {\r\n this.battery = parseInt(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Electricity Price and Compensation Section */}\r\n <div class=\"space-y-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.electricityCostsTitle}\r\n </h2>\r\n <div class=\"grid grid-rows-2 gap-0\">\r\n <div class=\"grid grid-cols-3 gap-4\">\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.electricityPrice}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.compensationRate}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.annualPriceIncrease}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-3 gap-4 text-primary-foreground\">\r\n <input\r\n type=\"number\"\r\n step=\"0.01\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.electricityPrice.toFixed(2)}\r\n onInput={(e) => {\r\n this.electricityPrice = parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n <input\r\n type=\"number\"\r\n step=\"0.01\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.compensationRate.toFixed(2)}\r\n onInput={(e) => {\r\n this.compensationRate = parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n <input\r\n type=\"number\"\r\n step=\"0.1\"\r\n class=\"w-full px-4 py-2 rounded-4xl border border-border focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted\"\r\n value={this.annualPriceIncrease.toFixed(1)}\r\n onInput={(e) => {\r\n this.annualPriceIncrease = parseFloat(\r\n (e.target as HTMLInputElement)\r\n .value,\r\n );\r\n this.recalculate();\r\n }}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Results Section */}\r\n <div\r\n class=\"space-y-4 p-4 border border-border rounded-4xl\"\r\n style={{ //TODO fix this\r\n border: \"1px solid var(--color-border)\",\r\n }}\r\n >\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.resultsTitle}\r\n </h2>\r\n <div class=\"bg-muted rounded-4xl p-4\">\r\n <div class=\"flex items-center justify-between\">\r\n <span class=\"text-text-muted\">\r\n {t.solarSystemForm.autonomy}\r\n </span>\r\n <span class=\"text-xl font-bold text-secondary\">\r\n {this.autonomy > 100\r\n ? \"100\"\r\n : this.formatEuropeanNumber(\r\n this.autonomy,\r\n 1,\r\n )}%\r\n </span>\r\n </div>\r\n <div class=\"flex items-center justify-between mt-4\">\r\n <span class=\"text-text-muted\">\r\n {t.solarSystemForm.totalEnergyConsumption}\r\n </span>\r\n <span class=\"text-xl font-bold text-secondary\">\r\n {(() => {\r\n let total = this.householdConsumption;\r\n // Add electric car consumption: km/year * 17kWh/100km\r\n if (this.electricCar) {\r\n total +=\r\n (this.kmDrivenPerYear * 17) /\r\n 100;\r\n }\r\n // Add heat pump consumption: m2 * 60kWh/m2/year (typical estimate)\r\n if (this.heatPump > 0) {\r\n total += this.heatPump *\r\n HEAT_PUMP_CONSUMPTION * 365;\r\n }\r\n return this.formatEuropeanNumber(\r\n total,\r\n 0,\r\n );\r\n })()} kWh/{t.solarSystemForm.year}\r\n </span>\r\n </div>\r\n <div class=\"flex items-center justify-between mt-4\">\r\n <div class=\"flex items-center gap-2\">\r\n <span class=\"text-text-muted\">\r\n {t.solarSystemForm.costSavings}\r\n </span>\r\n </div>\r\n <span class=\"text-xl font-bold text-success\">\r\n {this.formatEuropeanNumber(\r\n this.costSavings,\r\n )}€/{t\r\n .solarSystemForm.year}\r\n </span>\r\n </div>\r\n <div class=\"flex items-center justify-between mt-4\">\r\n <div class=\"flex items-center gap-2\">\r\n <span class=\"text-text-muted\">\r\n Einspeisevergütung 25 Jahre\r\n </span>\r\n </div>\r\n <span class=\"text-xl font-bold text-success\">\r\n {this.formatEuropeanNumber(\r\n this.compensation25Years,\r\n )}€\r\n </span>\r\n </div>\r\n <div class=\"flex items-center justify-between mt-4\">\r\n <div class=\"flex items-center gap-2\">\r\n <span class=\"text-text-muted\">\r\n Geldwerter Vorteil 25 Jahre\r\n </span>\r\n </div>\r\n <span class=\"text-xl font-bold text-success\">\r\n {this.formatEuropeanNumber(\r\n this.savedCosts25Years,\r\n )}€\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Contact Information Section */}\r\n <div class=\"space-y-4 pt-4\">\r\n <h2 class=\"text-lg font-semibold text-secondary\">\r\n {t.solarSystemForm.requestOffer}\r\n </h2>\r\n <div class=\"grid gap-4\">\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.name}\r\n </label>\r\n <label class=\"block text-sm font-medium text-text-muted mb-1\">\r\n {t.solarSystemForm.email}\r\n </label>\r\n </div>\r\n <div class=\"grid grid-cols-2 gap-4\">\r\n <div>\r\n <input\r\n type=\"text\"\r\n class={`w-full px-4 py-2 rounded-4xl border ${\r\n this.nameError\r\n ? \"border-error\"\r\n : \"border-border\"\r\n } focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\r\n value={this.name}\r\n onInput={(e) => {\r\n this.name =\r\n (e.target as HTMLInputElement)\r\n .value;\r\n this.validateForm();\r\n }}\r\n placeholder=\"Your name\"\r\n />\r\n {this.nameError && (\r\n <p class=\"text-error text-sm mt-1\">\r\n {this.nameError}\r\n </p>\r\n )}\r\n </div>\r\n <div>\r\n <input\r\n type=\"email\"\r\n class={`w-full px-4 py-2 rounded-4xl border ${\r\n this.emailError\r\n ? \"border-error\"\r\n : \"border-border\"\r\n } focus:ring-2 focus:ring-tertiary focus:border-transparent bg-muted text-muted-foreground`}\r\n value={this.email}\r\n onInput={(e) => {\r\n this.email =\r\n (e.target as HTMLInputElement)\r\n .value;\r\n this.validateForm();\r\n }}\r\n placeholder=\"your.email@example.com\"\r\n />\r\n {this.emailError && (\r\n <p class=\"text-error text-sm mt-1\">\r\n {this.emailError}\r\n </p>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"flex justify-center\">\r\n <button\r\n onClick={() => this.handleRequestOffer()}\r\n disabled={!this.name.trim() ||\r\n !this.email.trim() || !!this.nameError ||\r\n !!this.emailError}\r\n class=\"px-4 py-2 bg-secondary rounded-4xl hover:bg-tertiary transition-colors duration-200\"\r\n style={{ color: \"var(--color-muted)\" }}\r\n >\r\n {t.solarSystemForm.requestOfferButton}\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
2
|
export class LoadingWidget {
|
|
3
3
|
render() {
|
|
4
|
-
return (h("div", { key: '
|
|
4
|
+
return (h("div", { key: '977cdc480ba45a866e73bf5bba91f35b26663412', class: "absolute flex items-center justify-center bg-muted bg-opacity-75 z-20 pt-7 rounded-4xl" }, h("div", { key: '3982cf82646e2d7cd02eafc5c91985563954eed3', class: "animate-spin rounded-full h-16 w-16 border-t-2 border-b-2 border-secondary" })));
|
|
5
5
|
}
|
|
6
6
|
static get is() { return "loading-widget"; }
|
|
7
7
|
static get originalStyleUrls() {
|
|
@@ -5,7 +5,7 @@ const ROW_SPACING = 1;
|
|
|
5
5
|
const COLUMN_SPACING = 1;
|
|
6
6
|
const BORDER_INSET = 0;
|
|
7
7
|
const DEFAULT_SUNNINESS = 600;
|
|
8
|
-
const HEAT_PUMP_CONSUMPTION = 0.
|
|
8
|
+
const HEAT_PUMP_CONSUMPTION = 0.02; // kWh per m² per day
|
|
9
9
|
const SOLAR_RADIATION = [
|
|
10
10
|
0,
|
|
11
11
|
0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,YAAY;AAC9C,MAAM,oBAAoB,GAAG,SAAS,CAAC;AACvC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAE/C,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,qBAAqB;AAEzD,MAAM,eAAe,GAAG;IACpB,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC,EAAE,oBAAoB;IACvB,CAAC;IACD,GAAG;IACH,GAAG,EAAE,IAAI;IACT,GAAG;IACH,GAAG;IACH,CAAC,EAAE,qBAAqB;IACxB,CAAC;IACD,CAAC;IACD,CAAC;IACD,GAAG;IACH,GAAG;IACH,GAAG,EAAE,qBAAqB;IAC1B,IAAI;IACJ,IAAI;IACJ,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC,EAAE,qBAAqB;CAC3B,CAAC;AACF,MAAM,oBAAoB,GAAG;IACzB,cAAc,EAAE;QACZ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI,EAAE,oBAAoB;QAC1B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,qBAAqB;QAC3B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,GAAG,EAAE,qBAAqB;QAC1B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG,EAAE,qBAAqB;KAC7B;IACD,WAAW,EAAE;QACT,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI,EAAE,oBAAoB;QAC1B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,qBAAqB;QAC3B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,CAAC,EAAE,qBAAqB;QACxB,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG,EAAE,qBAAqB;KAC7B;CACJ,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC","sourcesContent":["\r\nconst OPEN_POLYGON_COLOR = \"red\"; //\"#ffffff\";\r\nconst CLOSED_POLYGON_COLOR = \"#fcba03\";\r\nconst DOTTED_LINE_COLOR = \"rgba(0, 0, 0, 0.5)\";\r\n\r\nconst ROW_SPACING = 1;\r\nconst COLUMN_SPACING = 1;\r\n\r\nconst BORDER_INSET = 0;\r\nconst DEFAULT_SUNNINESS = 600;\r\n\r\nconst HEAT_PUMP_CONSUMPTION = 0.
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,YAAY;AAC9C,MAAM,oBAAoB,GAAG,SAAS,CAAC;AACvC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAE/C,MAAM,WAAW,GAAG,CAAC,CAAC;AACtB,MAAM,cAAc,GAAG,CAAC,CAAC;AAEzB,MAAM,YAAY,GAAG,CAAC,CAAC;AACvB,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,qBAAqB,GAAG,IAAI,CAAC,CAAC,qBAAqB;AAEzD,MAAM,eAAe,GAAG;IACpB,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC,EAAE,oBAAoB;IACvB,CAAC;IACD,GAAG;IACH,GAAG,EAAE,IAAI;IACT,GAAG;IACH,GAAG;IACH,CAAC,EAAE,qBAAqB;IACxB,CAAC;IACD,CAAC;IACD,CAAC;IACD,GAAG;IACH,GAAG;IACH,GAAG,EAAE,qBAAqB;IAC1B,IAAI;IACJ,IAAI;IACJ,CAAC;IACD,CAAC;IACD,CAAC;IACD,CAAC,EAAE,qBAAqB;CAC3B,CAAC;AACF,MAAM,oBAAoB,GAAG;IACzB,cAAc,EAAE;QACZ,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI,EAAE,oBAAoB;QAC1B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,qBAAqB;QAC3B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,GAAG,EAAE,qBAAqB;QAC1B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG,EAAE,qBAAqB;KAC7B;IACD,WAAW,EAAE;QACT,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG;QACH,IAAI,EAAE,oBAAoB;QAC1B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,qBAAqB;QAC3B,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,KAAK;QACL,CAAC,EAAE,qBAAqB;QACxB,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,IAAI;QACJ,GAAG,EAAE,qBAAqB;KAC7B;CACJ,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC","sourcesContent":["\r\nconst OPEN_POLYGON_COLOR = \"red\"; //\"#ffffff\";\r\nconst CLOSED_POLYGON_COLOR = \"#fcba03\";\r\nconst DOTTED_LINE_COLOR = \"rgba(0, 0, 0, 0.5)\";\r\n\r\nconst ROW_SPACING = 1;\r\nconst COLUMN_SPACING = 1;\r\n\r\nconst BORDER_INSET = 0;\r\nconst DEFAULT_SUNNINESS = 600;\r\n\r\nconst HEAT_PUMP_CONSUMPTION = 0.02; // kWh per m² per day\r\n\r\nconst SOLAR_RADIATION = [\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0,\r\n 0, // 00:00 - 05:00 - 6\r\n 0,\r\n 0.1,\r\n 0.2, // 8\r\n 0.4, \r\n 0.8,\r\n 1, // 06:00 - 11:00 - 12\r\n 1,\r\n 1,\r\n 1,\r\n 0.7,\r\n 0.5,\r\n 0.3, // 12:00 - 17:00 - 18\r\n 0.16,\r\n 0.02,\r\n 0,\r\n 0,\r\n 0,\r\n 0, // 18:00 - 23:00 - 24\r\n];\r\nconst CONSUMPTION_PROFILES = {\r\n mostly_at_home: [\r\n 0.1,\r\n 0.1,\r\n 0.1,\r\n 0.1,\r\n 0.1,\r\n 0.15, // 00:00 - 05:00 - 6\r\n 0.23,\r\n 0.26,\r\n 0.16,\r\n 0.16,\r\n 0.15,\r\n 0.19, // 06:00 - 11:00 - 12\r\n 0.23,\r\n 0.24,\r\n 0.35,\r\n 0.28,\r\n 0.275,\r\n 0.8, // 12:00 - 17:00 - 18\r\n 0.78,\r\n 0.74,\r\n 0.75,\r\n 0.73,\r\n 0.26,\r\n 0.1, // 18:00 - 23:00 - 24\r\n ],\r\n mostly_away: [\r\n 0.1,\r\n 0.1,\r\n 0.1,\r\n 0.1,\r\n 0.1,\r\n 0.15, // 00:00 - 05:00 - 6\r\n 0.29,\r\n 0.32,\r\n 0.25,\r\n 0.15,\r\n 0.12,\r\n 0.14, // 06:00 - 11:00 - 12\r\n 0.15,\r\n 0.12,\r\n 0.16,\r\n 0.21,\r\n 0.285,\r\n 1, // 12:00 - 17:00 - 18\r\n 0.81,\r\n 0.77,\r\n 0.79,\r\n 0.73,\r\n 0.26,\r\n 0.1, // 18:00 - 23:00 - 24\r\n ],\r\n};\r\n\r\nexport { OPEN_POLYGON_COLOR, CLOSED_POLYGON_COLOR, DOTTED_LINE_COLOR, ROW_SPACING, COLUMN_SPACING, BORDER_INSET, DEFAULT_SUNNINESS, CONSUMPTION_PROFILES, SOLAR_RADIATION, HEAT_PUMP_CONSUMPTION };\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lang.js","sourceRoot":"","sources":["../../src/types/lang.ts"],"names":[],"mappings":"","sourcesContent":["export type Language = \"en\" | \"es\" | \"de\";\r\n\r\nexport interface LanguageStrings {\r\n settings: {\r\n language: string;\r\n rowSpacing: string;\r\n columnSpacing: string;\r\n borderInset: string;\r\n },\r\n mapSelector: {\r\n explanation: string;\r\n radius: string;\r\n accept: string;\r\n chooseOnMap: string;\r\n }\r\n solarExpert: {\r\n searchPlaceholder: string;\r\n },\r\n solarSystemForm: {\r\n title: string;\r\n year: string;\r\n systemInformation: string;\r\n numberOfPanels: string;\r\n panelPeakPower: string;\r\n totalSystemPeakPower: string;\r\n electricityPrice: string;\r\n compensationRate: string;\r\n autonomy: string;\r\n costSavings: string;\r\n householdConsumptionTitle: string;\r\n consumptionProfileTitle: string;\r\n electricityCostsTitle: string;\r\n compensationRateTitle: string;\r\n resultsTitle: string;\r\n savingsDisclaimer: string;\r\n annualConsumption: string;\r\n name: string;\r\n email: string;\r\n nameError: string;\r\n emailError: string;\r\n consumptionProfiles: {\r\n mostlyAtHome: string;\r\n mostlyAway: string;\r\n },\r\n chart: {\r\n consumption: string;\r\n production: string;\r\n consumptionProfile: string;\r\n relativeConsumption: string;\r\n hourOfDay: string;\r\n },\r\n validEmailError: string;\r\n requestOffer: string;\r\n requestOfferButton: string;\r\n additionalComponents: {\r\n title: string;\r\n heatPump: string;\r\n electricCar: string;\r\n battery: string;\r\n chargingTime: string;\r\n chargingTimeDay: string;\r\n chargingTimeNight: string;\r\n kilometersPerYear: string;\r\n },\r\n annualPriceIncrease: string;\r\n costSavings25Years: string;\r\n\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: string;\r\n hide: string;\r\n parts: {\r\n roof: string;\r\n obstruction: string;\r\n delete: string;\r\n move: string;\r\n end: string;\r\n }\r\n },\r\n noPolygonSelected: string;\r\n noAddressSelected: string;\r\n information: string;\r\n calculateSolarPanels: string;\r\n markRoofEdge: string;\r\n panels: string;\r\n area: string;\r\n azimuth: string;\r\n pitch: string;\r\n tools: {\r\n roof: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n },\r\n obstruction: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n },\r\n delete: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n },\r\n move: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n },\r\n undo: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n }\r\n }\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"lang.js","sourceRoot":"","sources":["../../src/types/lang.ts"],"names":[],"mappings":"","sourcesContent":["export type Language = \"en\" | \"es\" | \"de\";\r\n\r\nexport interface LanguageStrings {\r\n settings: {\r\n language: string;\r\n rowSpacing: string;\r\n columnSpacing: string;\r\n borderInset: string;\r\n },\r\n mapSelector: {\r\n explanation: string;\r\n radius: string;\r\n accept: string;\r\n chooseOnMap: string;\r\n }\r\n solarExpert: {\r\n searchPlaceholder: string;\r\n },\r\n solarSystemForm: {\r\n title: string;\r\n year: string;\r\n systemInformation: string;\r\n numberOfPanels: string;\r\n panelPeakPower: string;\r\n totalSystemPeakPower: string;\r\n electricityPrice: string;\r\n compensationRate: string;\r\n autonomy: string;\r\n totalEnergyConsumption: string;\r\n costSavings: string;\r\n householdConsumptionTitle: string;\r\n consumptionProfileTitle: string;\r\n electricityCostsTitle: string;\r\n compensationRateTitle: string;\r\n resultsTitle: string;\r\n savingsDisclaimer: string;\r\n annualConsumption: string;\r\n name: string;\r\n email: string;\r\n nameError: string;\r\n emailError: string;\r\n consumptionProfiles: {\r\n mostlyAtHome: string;\r\n mostlyAway: string;\r\n },\r\n chart: {\r\n consumption: string;\r\n production: string;\r\n consumptionProfile: string;\r\n relativeConsumption: string;\r\n hourOfDay: string;\r\n },\r\n validEmailError: string;\r\n requestOffer: string;\r\n requestOfferButton: string;\r\n additionalComponents: {\r\n title: string;\r\n heatPump: string;\r\n electricCar: string;\r\n battery: string;\r\n chargingTime: string;\r\n chargingTimeDay: string;\r\n chargingTimeNight: string;\r\n kilometersPerYear: string;\r\n },\r\n annualPriceIncrease: string;\r\n costSavings25Years: string;\r\n\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: string;\r\n hide: string;\r\n parts: {\r\n roof: string;\r\n obstruction: string;\r\n delete: string;\r\n move: string;\r\n end: string;\r\n }\r\n },\r\n noPolygonSelected: string;\r\n noAddressSelected: string;\r\n information: string;\r\n calculateSolarPanels: string;\r\n markRoofEdge: string;\r\n panels: string;\r\n area: string;\r\n azimuth: string;\r\n pitch: string;\r\n tools: {\r\n roof: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n },\r\n obstruction: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n },\r\n delete: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n },\r\n move: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n },\r\n undo: {\r\n name: string;\r\n explanation: string;\r\n ariaLabel: string;\r\n }\r\n }\r\n }\r\n}"]}
|
|
@@ -23,6 +23,7 @@ export const en = {
|
|
|
23
23
|
electricityPrice: "Electricity Price (€/kWh)",
|
|
24
24
|
compensationRate: "Compensation Rate (€/kWh)",
|
|
25
25
|
autonomy: "Autonomy",
|
|
26
|
+
totalEnergyConsumption: "Total Energy Consumption",
|
|
26
27
|
costSavings: "Cost Savings (€/year)",
|
|
27
28
|
householdConsumptionTitle: "Household Electricity Consumption",
|
|
28
29
|
consumptionProfileTitle: "Consumption Profile",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"english.js","sourceRoot":"","sources":["../../../src/utils/lang/english.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const en: LanguageStrings = {\r\n settings: {\r\n language: \"Language\",\r\n rowSpacing: \"Row Spacing\",\r\n columnSpacing: \"Column Spacing\",\r\n borderInset: \"Border Inset\",\r\n },\r\n mapSelector: {\r\n explanation: \"Select your house on the map and adjust the radius of the circle to fully encompase your roof.\",\r\n radius: \"Radius (meters)\",\r\n accept: \"Accept\",\r\n chooseOnMap: \"Choose on Map\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Search for your address\"\r\n },\r\n solarSystemForm: {\r\n title: \"Solar System Configuration\",\r\n systemInformation: \"System Information\",\r\n numberOfPanels: \"Number of Solar Panels\",\r\n panelPeakPower: \"Panel Peak Power (kW)\",\r\n totalSystemPeakPower: \"Total System Peak Power (kW)\",\r\n electricityPrice: \"Electricity Price (€/kWh)\",\r\n compensationRate: \"Compensation Rate (€/kWh)\",\r\n autonomy: \"Autonomy\",\r\n costSavings: \"Cost Savings (€/year)\",\r\n householdConsumptionTitle: \"Household Electricity Consumption\",\r\n consumptionProfileTitle: \"Consumption Profile\",\r\n electricityCostsTitle: \"Electricity Costs\",\r\n compensationRateTitle: \"Compensation Rate\",\r\n resultsTitle: \"Results\",\r\n savingsDisclaimer: \"Disclaimer: The savings are based on the average electricity price in Spain.\",\r\n annualConsumption: \"Annual Consumption (kWh)\",\r\n name: \"Name\",\r\n email: \"Email\",\r\n nameError: \"Please enter your name\",\r\n emailError: \"Please enter a valid email address\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Mostly at home\",\r\n mostlyAway: \"Mostly away\",\r\n },\r\n chart: {\r\n consumption: \"Consumption\",\r\n production: \"Production\",\r\n consumptionProfile: \"Consumption Profile\",\r\n relativeConsumption: \"Relative Consumption\",\r\n hourOfDay: \"Hour of Day\",\r\n },\r\n validEmailError: \"Please enter a valid email address\",\r\n requestOffer: \"Request Offer\",\r\n requestOfferButton: \"Request Offer\",\r\n year: \"year\",\r\n additionalComponents: {\r\n title: \"Additional Components\",\r\n heatPump: \"Heat Pump\",\r\n electricCar: \"Electric Car\",\r\n battery: \"Battery\",\r\n chargingTime: \"Charging Time\",\r\n chargingTimeDay: \"Day (06:00 - 18:00)\",\r\n chargingTimeNight: \"Night (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilometers per Year\",\r\n },\r\n annualPriceIncrease: \"Annual Price Increase (%)\",\r\n costSavings25Years: \"25-Year Savings\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Show Instructions\",\r\n hide: \"Hide Instructions\",\r\n parts: {\r\n roof: \"After you have searched and selected your address. Highlight the part of your roof that you want to add solar panels to. Mark each surface with a polygon with the roof tool\",\r\n obstruction: \". If you have skylights or other obstructions where you don't want to add solar panels, mark those as well with the obstruction tool\",\r\n delete: \". You can delete polygons with the delete tool\",\r\n move: \". If you want to change the corners of a polygon, select the move tool\",\r\n end: \", select the polygon you want to change and drag and drop the corners.\",\r\n }\r\n },\r\n noPolygonSelected: \"No polygon selected\",\r\n noAddressSelected: \"Please select an address\",\r\n information: \"Information\",\r\n calculateSolarPanels: \"Calculate Solar Panels\",\r\n markRoofEdge: \"Mark lower roof edge\",\r\n panels: \"Panels\",\r\n area: \"Area\",\r\n azimuth: \"Azimuth\",\r\n pitch: \"Pitch\",\r\n tools: {\r\n roof: {\r\n name: \"Roof\",\r\n explanation: \"Draw the roof of the building\",\r\n ariaLabel: \"Roof\",\r\n },\r\n obstruction: {\r\n name: \"Obstruction\",\r\n explanation: \"Draw the obstruction of the building\",\r\n ariaLabel: \"Obstruction\",\r\n },\r\n delete: {\r\n name: \"Delete\",\r\n explanation: \"Delete the selected polygon\",\r\n ariaLabel: \"Delete\",\r\n },\r\n move: {\r\n name: \"Move\",\r\n explanation: \"Move the selected polygon\",\r\n ariaLabel: \"Move\",\r\n },\r\n undo: {\r\n name: \"Undo\",\r\n explanation: \"Undo the last action\",\r\n ariaLabel: \"Undo\",\r\n }\r\n },\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"english.js","sourceRoot":"","sources":["../../../src/utils/lang/english.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const en: LanguageStrings = {\r\n settings: {\r\n language: \"Language\",\r\n rowSpacing: \"Row Spacing\",\r\n columnSpacing: \"Column Spacing\",\r\n borderInset: \"Border Inset\",\r\n },\r\n mapSelector: {\r\n explanation: \"Select your house on the map and adjust the radius of the circle to fully encompase your roof.\",\r\n radius: \"Radius (meters)\",\r\n accept: \"Accept\",\r\n chooseOnMap: \"Choose on Map\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Search for your address\"\r\n },\r\n solarSystemForm: {\r\n title: \"Solar System Configuration\",\r\n systemInformation: \"System Information\",\r\n numberOfPanels: \"Number of Solar Panels\",\r\n panelPeakPower: \"Panel Peak Power (kW)\",\r\n totalSystemPeakPower: \"Total System Peak Power (kW)\",\r\n electricityPrice: \"Electricity Price (€/kWh)\",\r\n compensationRate: \"Compensation Rate (€/kWh)\",\r\n autonomy: \"Autonomy\",\r\n totalEnergyConsumption: \"Total Energy Consumption\",\r\n costSavings: \"Cost Savings (€/year)\",\r\n householdConsumptionTitle: \"Household Electricity Consumption\",\r\n consumptionProfileTitle: \"Consumption Profile\",\r\n electricityCostsTitle: \"Electricity Costs\",\r\n compensationRateTitle: \"Compensation Rate\",\r\n resultsTitle: \"Results\",\r\n savingsDisclaimer: \"Disclaimer: The savings are based on the average electricity price in Spain.\",\r\n annualConsumption: \"Annual Consumption (kWh)\",\r\n name: \"Name\",\r\n email: \"Email\",\r\n nameError: \"Please enter your name\",\r\n emailError: \"Please enter a valid email address\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Mostly at home\",\r\n mostlyAway: \"Mostly away\",\r\n },\r\n chart: {\r\n consumption: \"Consumption\",\r\n production: \"Production\",\r\n consumptionProfile: \"Consumption Profile\",\r\n relativeConsumption: \"Relative Consumption\",\r\n hourOfDay: \"Hour of Day\",\r\n },\r\n validEmailError: \"Please enter a valid email address\",\r\n requestOffer: \"Request Offer\",\r\n requestOfferButton: \"Request Offer\",\r\n year: \"year\",\r\n additionalComponents: {\r\n title: \"Additional Components\",\r\n heatPump: \"Heat Pump\",\r\n electricCar: \"Electric Car\",\r\n battery: \"Battery\",\r\n chargingTime: \"Charging Time\",\r\n chargingTimeDay: \"Day (06:00 - 18:00)\",\r\n chargingTimeNight: \"Night (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilometers per Year\",\r\n },\r\n annualPriceIncrease: \"Annual Price Increase (%)\",\r\n costSavings25Years: \"25-Year Savings\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Show Instructions\",\r\n hide: \"Hide Instructions\",\r\n parts: {\r\n roof: \"After you have searched and selected your address. Highlight the part of your roof that you want to add solar panels to. Mark each surface with a polygon with the roof tool\",\r\n obstruction: \". If you have skylights or other obstructions where you don't want to add solar panels, mark those as well with the obstruction tool\",\r\n delete: \". You can delete polygons with the delete tool\",\r\n move: \". If you want to change the corners of a polygon, select the move tool\",\r\n end: \", select the polygon you want to change and drag and drop the corners.\",\r\n }\r\n },\r\n noPolygonSelected: \"No polygon selected\",\r\n noAddressSelected: \"Please select an address\",\r\n information: \"Information\",\r\n calculateSolarPanels: \"Calculate Solar Panels\",\r\n markRoofEdge: \"Mark lower roof edge\",\r\n panels: \"Panels\",\r\n area: \"Area\",\r\n azimuth: \"Azimuth\",\r\n pitch: \"Pitch\",\r\n tools: {\r\n roof: {\r\n name: \"Roof\",\r\n explanation: \"Draw the roof of the building\",\r\n ariaLabel: \"Roof\",\r\n },\r\n obstruction: {\r\n name: \"Obstruction\",\r\n explanation: \"Draw the obstruction of the building\",\r\n ariaLabel: \"Obstruction\",\r\n },\r\n delete: {\r\n name: \"Delete\",\r\n explanation: \"Delete the selected polygon\",\r\n ariaLabel: \"Delete\",\r\n },\r\n move: {\r\n name: \"Move\",\r\n explanation: \"Move the selected polygon\",\r\n ariaLabel: \"Move\",\r\n },\r\n undo: {\r\n name: \"Undo\",\r\n explanation: \"Undo the last action\",\r\n ariaLabel: \"Undo\",\r\n }\r\n },\r\n }\r\n}"]}
|
|
@@ -23,6 +23,7 @@ export const de = {
|
|
|
23
23
|
electricityPrice: "Strompreis (€/kWh)",
|
|
24
24
|
compensationRate: "Einspeisevergütung (€/kWh)",
|
|
25
25
|
autonomy: "Autarkie",
|
|
26
|
+
totalEnergyConsumption: "Gesamtenergieverbrauch",
|
|
26
27
|
costSavings: "Einsparungen (€/Jahr)",
|
|
27
28
|
householdConsumptionTitle: "Haushaltsverbrauch",
|
|
28
29
|
consumptionProfileTitle: "Verbrauchprofil",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"german.js","sourceRoot":"","sources":["../../../src/utils/lang/german.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const de: LanguageStrings = {\r\n settings: {\r\n language: \"Sprache\",\r\n rowSpacing: \"Zeilenabstand\",\r\n columnSpacing: \"Spaltenabstand\",\r\n borderInset: \"Randabstand\",\r\n },\r\n mapSelector: {\r\n explanation: \"Wählen Sie Ihre Adresse auf der Karte und passen Sie den Radius des Kreises an, um Ihr Dach vollständig zu erfassen.\",\r\n radius: \"Radius (Meter)\",\r\n accept: \"Akzeptieren\",\r\n chooseOnMap: \"Auf der Karte auswählen\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Ihre Adresse\"\r\n },\r\n solarSystemForm: {\r\n title: \"Solarsystem Konfiguration\",\r\n systemInformation: \"System Information\",\r\n numberOfPanels: \"Anzahl der Solarpanel\",\r\n panelPeakPower: \"Panelleistung (kW)\",\r\n totalSystemPeakPower: \"Anlagengröße (kWp)\",\r\n electricityPrice: \"Strompreis (€/kWh)\",\r\n compensationRate: \"Einspeisevergütung (€/kWh)\",\r\n autonomy: \"Autarkie\",\r\n costSavings: \"Einsparungen (€/Jahr)\",\r\n householdConsumptionTitle: \"Haushaltsverbrauch\",\r\n consumptionProfileTitle: \"Verbrauchprofil\",\r\n electricityCostsTitle: \"Stromkosten\",\r\n compensationRateTitle: \"Einspeisevergütung\",\r\n resultsTitle: \"Ergebnisse\",\r\n savingsDisclaimer: \"Disclaimer: Die Einsparungen basieren auf dem durchschnittlichen Strompreis in Deutschland.\",\r\n annualConsumption: \"Jährlicher Verbrauch (kWh)\",\r\n name: \"Name\",\r\n email: \"Email\",\r\n nameError: \"Bitte geben Sie Ihren Namen ein\",\r\n emailError: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Hauptsächlich zu Hause\",\r\n mostlyAway: \"Erwerbstätig\",\r\n },\r\n chart: {\r\n consumption: \"Verbrauch\",\r\n production: \"Produktion\",\r\n consumptionProfile: \"Verbrauchprofil\",\r\n relativeConsumption: \"Verbrauch\",\r\n hourOfDay: \"Stunde des Tages\",\r\n },\r\n validEmailError: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\r\n requestOffer: \"Angebot anfordern\",\r\n requestOfferButton: \"Angebot anfordern\",\r\n year: \"Jahr\",\r\n additionalComponents: {\r\n title: \"Zusätzliches\",\r\n heatPump: \"Wärmepumpe\",\r\n electricCar: \"Elektroauto\",\r\n battery: \"Batterie\",\r\n chargingTime: \"Zeitpunkt der Ladung\",\r\n chargingTimeDay: \"Tag (06:00 - 18:00)\",\r\n chargingTimeNight: \"Nacht (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilometer pro Jahr\",\r\n },\r\n annualPriceIncrease: \"Jährliche Preissteigerung (%)\t\",\r\n costSavings25Years: \"25-Jährige Einsparungen\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Anleitung anzeigen\",\r\n hide: \"Anleitung ausblenden\",\r\n parts: {\r\n roof: \"Nachdem Sie Ihre Adresse gesucht und ausgewählt haben. Markieren Sie die Teile Ihres Daches, auf denen Sie Solarpanelleisten hinzufügen möchten. Markieren Sie jede Oberfläche mit einem Polygon mit dem Dachwerkzeug\",\r\n obstruction: \". Wenn Sie Dachfenster oder andere Hindernisse haben, auf denen Sie keine Solarpanele hinzufügen können, markieren Sie diese mit dem Hinderniswerkzeug\",\r\n delete: \". Sie können Polygone mit dem Löschwerkzeug löschen\",\r\n move: \". Wenn Sie die Ecken eines Polygons ändern möchten, wählen Sie das Verschiebewerkzeug\",\r\n end: \", wählen Sie das Polygon, das Sie ändern möchten, und verschieben Sie die Ecken.\",\r\n }\r\n },\r\n markRoofEdge: \"untere Dachkante markieren\",\r\n noPolygonSelected: \"Kein Polygon ausgewählt\",\r\n noAddressSelected: \"Bitte wählen Sie eine Adresse\",\r\n information: \"Information\",\r\n calculateSolarPanels: \"Berechnen Sie die Solarpanele\",\r\n panels: \"Panele\",\r\n area: \"Fläche\",\r\n azimuth: \"Ausrichtung\",\r\n pitch: \"Neigung\",\r\n tools: {\r\n roof: {\r\n name: \"Dach\",\r\n explanation: \"Zeichnen Sie das Dach des Gebäudes\",\r\n ariaLabel: \"Dach\",\r\n },\r\n obstruction: {\r\n name: \"Hindernis\",\r\n explanation: \"Zeichnen Sie das Hindernis des Gebäudes\",\r\n ariaLabel: \"Hindernis\",\r\n },\r\n delete: {\r\n name: \"Löschen\",\r\n explanation: \"Löschen Sie das ausgewählte Polygon\",\r\n ariaLabel: \"Löschen\",\r\n },\r\n move: {\r\n name: \"Verschieben\",\r\n explanation: \"Verschieben Sie Punkte des ausgewählten Polygons\",\r\n ariaLabel: \"Verschieben\",\r\n },\r\n undo: {\r\n name: \"Rückgängig\",\r\n explanation: \"Sie die letzte Aktion rückgängig\",\r\n ariaLabel: \"Rückgängig\",\r\n }\r\n },\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"german.js","sourceRoot":"","sources":["../../../src/utils/lang/german.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const de: LanguageStrings = {\r\n settings: {\r\n language: \"Sprache\",\r\n rowSpacing: \"Zeilenabstand\",\r\n columnSpacing: \"Spaltenabstand\",\r\n borderInset: \"Randabstand\",\r\n },\r\n mapSelector: {\r\n explanation: \"Wählen Sie Ihre Adresse auf der Karte und passen Sie den Radius des Kreises an, um Ihr Dach vollständig zu erfassen.\",\r\n radius: \"Radius (Meter)\",\r\n accept: \"Akzeptieren\",\r\n chooseOnMap: \"Auf der Karte auswählen\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Ihre Adresse\"\r\n },\r\n solarSystemForm: {\r\n title: \"Solarsystem Konfiguration\",\r\n systemInformation: \"System Information\",\r\n numberOfPanels: \"Anzahl der Solarpanel\",\r\n panelPeakPower: \"Panelleistung (kW)\",\r\n totalSystemPeakPower: \"Anlagengröße (kWp)\",\r\n electricityPrice: \"Strompreis (€/kWh)\",\r\n compensationRate: \"Einspeisevergütung (€/kWh)\",\r\n autonomy: \"Autarkie\",\r\n totalEnergyConsumption: \"Gesamtenergieverbrauch\",\r\n costSavings: \"Einsparungen (€/Jahr)\",\r\n householdConsumptionTitle: \"Haushaltsverbrauch\",\r\n consumptionProfileTitle: \"Verbrauchprofil\",\r\n electricityCostsTitle: \"Stromkosten\",\r\n compensationRateTitle: \"Einspeisevergütung\",\r\n resultsTitle: \"Ergebnisse\",\r\n savingsDisclaimer: \"Disclaimer: Die Einsparungen basieren auf dem durchschnittlichen Strompreis in Deutschland.\",\r\n annualConsumption: \"Jährlicher Verbrauch (kWh)\",\r\n name: \"Name\",\r\n email: \"Email\",\r\n nameError: \"Bitte geben Sie Ihren Namen ein\",\r\n emailError: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Hauptsächlich zu Hause\",\r\n mostlyAway: \"Erwerbstätig\",\r\n },\r\n chart: {\r\n consumption: \"Verbrauch\",\r\n production: \"Produktion\",\r\n consumptionProfile: \"Verbrauchprofil\",\r\n relativeConsumption: \"Verbrauch\",\r\n hourOfDay: \"Stunde des Tages\",\r\n },\r\n validEmailError: \"Bitte geben Sie eine gültige E-Mail-Adresse ein\",\r\n requestOffer: \"Angebot anfordern\",\r\n requestOfferButton: \"Angebot anfordern\",\r\n year: \"Jahr\",\r\n additionalComponents: {\r\n title: \"Zusätzliches\",\r\n heatPump: \"Wärmepumpe\",\r\n electricCar: \"Elektroauto\",\r\n battery: \"Batterie\",\r\n chargingTime: \"Zeitpunkt der Ladung\",\r\n chargingTimeDay: \"Tag (06:00 - 18:00)\",\r\n chargingTimeNight: \"Nacht (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilometer pro Jahr\",\r\n },\r\n annualPriceIncrease: \"Jährliche Preissteigerung (%)\t\",\r\n costSavings25Years: \"25-Jährige Einsparungen\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Anleitung anzeigen\",\r\n hide: \"Anleitung ausblenden\",\r\n parts: {\r\n roof: \"Nachdem Sie Ihre Adresse gesucht und ausgewählt haben. Markieren Sie die Teile Ihres Daches, auf denen Sie Solarpanelleisten hinzufügen möchten. Markieren Sie jede Oberfläche mit einem Polygon mit dem Dachwerkzeug\",\r\n obstruction: \". Wenn Sie Dachfenster oder andere Hindernisse haben, auf denen Sie keine Solarpanele hinzufügen können, markieren Sie diese mit dem Hinderniswerkzeug\",\r\n delete: \". Sie können Polygone mit dem Löschwerkzeug löschen\",\r\n move: \". Wenn Sie die Ecken eines Polygons ändern möchten, wählen Sie das Verschiebewerkzeug\",\r\n end: \", wählen Sie das Polygon, das Sie ändern möchten, und verschieben Sie die Ecken.\",\r\n }\r\n },\r\n markRoofEdge: \"untere Dachkante markieren\",\r\n noPolygonSelected: \"Kein Polygon ausgewählt\",\r\n noAddressSelected: \"Bitte wählen Sie eine Adresse\",\r\n information: \"Information\",\r\n calculateSolarPanels: \"Berechnen Sie die Solarpanele\",\r\n panels: \"Panele\",\r\n area: \"Fläche\",\r\n azimuth: \"Ausrichtung\",\r\n pitch: \"Neigung\",\r\n tools: {\r\n roof: {\r\n name: \"Dach\",\r\n explanation: \"Zeichnen Sie das Dach des Gebäudes\",\r\n ariaLabel: \"Dach\",\r\n },\r\n obstruction: {\r\n name: \"Hindernis\",\r\n explanation: \"Zeichnen Sie das Hindernis des Gebäudes\",\r\n ariaLabel: \"Hindernis\",\r\n },\r\n delete: {\r\n name: \"Löschen\",\r\n explanation: \"Löschen Sie das ausgewählte Polygon\",\r\n ariaLabel: \"Löschen\",\r\n },\r\n move: {\r\n name: \"Verschieben\",\r\n explanation: \"Verschieben Sie Punkte des ausgewählten Polygons\",\r\n ariaLabel: \"Verschieben\",\r\n },\r\n undo: {\r\n name: \"Rückgängig\",\r\n explanation: \"Sie die letzte Aktion rückgängig\",\r\n ariaLabel: \"Rückgängig\",\r\n }\r\n },\r\n }\r\n}"]}
|
|
@@ -23,6 +23,7 @@ export const es = {
|
|
|
23
23
|
electricityPrice: "Precio de la electricidad (€/kWh)",
|
|
24
24
|
compensationRate: "Tasa de compensación (€/kWh)",
|
|
25
25
|
autonomy: "Autonomía",
|
|
26
|
+
totalEnergyConsumption: "Consumo Total de Energía",
|
|
26
27
|
costSavings: "Ahorro (€/año)",
|
|
27
28
|
householdConsumptionTitle: "Consumo de la casa",
|
|
28
29
|
consumptionProfileTitle: "Perfil de consumo",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spanish.js","sourceRoot":"","sources":["../../../src/utils/lang/spanish.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const es: LanguageStrings = {\r\n settings: {\r\n language: \"Idioma\",\r\n rowSpacing: \"Espaciado de filas\",\r\n columnSpacing: \"Espaciado de columnas\",\r\n borderInset: \"Espaciado de bordes\",\r\n },\r\n mapSelector: {\r\n explanation: \"Selecciona tu casa en el mapa y ajusta el radio del círculo para cubrir completamente tu tejado.\",\r\n radius: \"Radio (metros)\",\r\n accept: \"Aceptar\",\r\n chooseOnMap: \"Seleccionar en el mapa\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Buscar tu dirección\"\r\n },\r\n solarSystemForm: {\r\n title: \"Configuración del sistema solar\",\r\n systemInformation: \"Información del sistema\",\r\n numberOfPanels: \"Número de paneles solares\",\r\n panelPeakPower: \"Potencia pico del panel (kW)\",\r\n totalSystemPeakPower: \"Potencia pico total del sistema (kW)\",\r\n electricityPrice: \"Precio de la electricidad (€/kWh)\",\r\n compensationRate: \"Tasa de compensación (€/kWh)\",\r\n autonomy: \"Autonomía\",\r\n costSavings: \"Ahorro (€/año)\",\r\n householdConsumptionTitle: \"Consumo de la casa\",\r\n consumptionProfileTitle: \"Perfil de consumo\",\r\n electricityCostsTitle: \"Costes de la electricidad\",\r\n compensationRateTitle: \"Tasa de compensación\",\r\n resultsTitle: \"Resultados\",\r\n savingsDisclaimer: \"Nota: Los ahorros se basan en el precio promedio de la electricidad en España.\",\r\n annualConsumption: \"Consumo anual (kWh)\",\r\n name: \"Nombre\",\r\n email: \"Email\",\r\n nameError: \"Por favor, ingrese su nombre\",\r\n emailError: \"Por favor, ingrese una dirección de correo electrónico válida\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Principalmente en casa\",\r\n mostlyAway: \"Empleo\",\r\n },\r\n chart: {\r\n consumption: \"Consumo\",\r\n production: \"Producción\",\r\n consumptionProfile: \"Perfil de consumo\",\r\n relativeConsumption: \"Consumo\",\r\n hourOfDay: \"Hora del día\",\r\n },\r\n validEmailError: \"Por favor, ingrese una dirección de correo electrónico válida\",\r\n requestOffer: \"Solicitar una oferta\",\r\n requestOfferButton: \"Solicitar oferta\",\r\n year: \"Año\",\r\n additionalComponents: {\r\n title: \"Componentes adicionales\",\r\n heatPump: \"Caldera\",\r\n electricCar: \"Coche eléctrico\",\r\n battery: \"Batería\",\r\n chargingTime: \"Hora de carga\",\r\n chargingTimeDay: \"Día (06:00 - 18:00)\",\r\n chargingTimeNight: \"Noche (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilómetros por año\",\r\n },\r\n annualPriceIncrease: \"Aumento anual del precio (%)\",\r\n costSavings25Years: \"Ahorro en 25 años\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Mostrar instrucciones\",\r\n hide: \"Ocultar instrucciones\",\r\n parts: {\r\n roof: \"Después de buscar y seleccionar su dirección, resalte la parte del tejado donde desea añadir paneles solares. Marque cada superficie con un polígono con la herramienta de tejado\",\r\n obstruction: \". Si tiene claraboyas u otras obstrucciones donde no desea añadir paneles solares, márquelas también con la herramienta de obstrucción\",\r\n delete: \". Puede eliminar polígonos con la herramienta de eliminación\",\r\n move: \". Si desea cambiar las esquinas de un polígono, seleccione la herramienta de movimiento\",\r\n end: \", seleccione el polígono que desea modificar y arrastre y suelte los bordes.\",\r\n }\r\n },\r\n markRoofEdge: \"Marcar borde inferior del tejado\",\r\n noPolygonSelected: \"No se ha seleccionado un polígono\",\r\n noAddressSelected: \"Por favor, seleccione una dirección\",\r\n information: \"Información\",\r\n calculateSolarPanels: \"Calcular paneles solares\",\r\n panels: \"Paneles\",\r\n area: \"Área\",\r\n azimuth: \"Azimut\",\r\n pitch: \"Inclinación\",\r\n tools: {\r\n roof: {\r\n name: \"Tejado\",\r\n explanation: \"Dibuje el tejado del edificio\",\r\n ariaLabel: \"Tejado\",\r\n },\r\n obstruction: {\r\n name: \"Obstrucción\",\r\n explanation: \"Dibuje la obstrucción del edificio\",\r\n ariaLabel: \"Obstrucción\",\r\n },\r\n delete: {\r\n name: \"Eliminar\",\r\n explanation: \"Elimine el polígono seleccionado\",\r\n ariaLabel: \"Eliminar\",\r\n },\r\n move: {\r\n name: \"Mover\",\r\n explanation: \"Mueva los puntos del polígono seleccionado\",\r\n ariaLabel: \"Mover\",\r\n },\r\n undo: {\r\n name: \"Deshacer\",\r\n explanation: \"Deshaga la última acción\",\r\n ariaLabel: \"Deshacer\",\r\n }\r\n },\r\n }\r\n}"]}
|
|
1
|
+
{"version":3,"file":"spanish.js","sourceRoot":"","sources":["../../../src/utils/lang/spanish.ts"],"names":[],"mappings":"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","sourcesContent":["import { LanguageStrings } from \"../../types/lang\";\r\n\r\nexport const es: LanguageStrings = {\r\n settings: {\r\n language: \"Idioma\",\r\n rowSpacing: \"Espaciado de filas\",\r\n columnSpacing: \"Espaciado de columnas\",\r\n borderInset: \"Espaciado de bordes\",\r\n },\r\n mapSelector: {\r\n explanation: \"Selecciona tu casa en el mapa y ajusta el radio del círculo para cubrir completamente tu tejado.\",\r\n radius: \"Radio (metros)\",\r\n accept: \"Aceptar\",\r\n chooseOnMap: \"Seleccionar en el mapa\",\r\n },\r\n solarExpert: {\r\n searchPlaceholder: \"Buscar tu dirección\"\r\n },\r\n solarSystemForm: {\r\n title: \"Configuración del sistema solar\",\r\n systemInformation: \"Información del sistema\",\r\n numberOfPanels: \"Número de paneles solares\",\r\n panelPeakPower: \"Potencia pico del panel (kW)\",\r\n totalSystemPeakPower: \"Potencia pico total del sistema (kW)\",\r\n electricityPrice: \"Precio de la electricidad (€/kWh)\",\r\n compensationRate: \"Tasa de compensación (€/kWh)\",\r\n autonomy: \"Autonomía\",\r\n totalEnergyConsumption: \"Consumo Total de Energía\",\r\n costSavings: \"Ahorro (€/año)\",\r\n householdConsumptionTitle: \"Consumo de la casa\",\r\n consumptionProfileTitle: \"Perfil de consumo\",\r\n electricityCostsTitle: \"Costes de la electricidad\",\r\n compensationRateTitle: \"Tasa de compensación\",\r\n resultsTitle: \"Resultados\",\r\n savingsDisclaimer: \"Nota: Los ahorros se basan en el precio promedio de la electricidad en España.\",\r\n annualConsumption: \"Consumo anual (kWh)\",\r\n name: \"Nombre\",\r\n email: \"Email\",\r\n nameError: \"Por favor, ingrese su nombre\",\r\n emailError: \"Por favor, ingrese una dirección de correo electrónico válida\",\r\n consumptionProfiles: {\r\n mostlyAtHome: \"Principalmente en casa\",\r\n mostlyAway: \"Empleo\",\r\n },\r\n chart: {\r\n consumption: \"Consumo\",\r\n production: \"Producción\",\r\n consumptionProfile: \"Perfil de consumo\",\r\n relativeConsumption: \"Consumo\",\r\n hourOfDay: \"Hora del día\",\r\n },\r\n validEmailError: \"Por favor, ingrese una dirección de correo electrónico válida\",\r\n requestOffer: \"Solicitar una oferta\",\r\n requestOfferButton: \"Solicitar oferta\",\r\n year: \"Año\",\r\n additionalComponents: {\r\n title: \"Componentes adicionales\",\r\n heatPump: \"Caldera\",\r\n electricCar: \"Coche eléctrico\",\r\n battery: \"Batería\",\r\n chargingTime: \"Hora de carga\",\r\n chargingTimeDay: \"Día (06:00 - 18:00)\",\r\n chargingTimeNight: \"Noche (18:00 - 06:00)\",\r\n kilometersPerYear: \"Kilómetros por año\",\r\n },\r\n annualPriceIncrease: \"Aumento anual del precio (%)\",\r\n costSavings25Years: \"Ahorro en 25 años\",\r\n },\r\n mapDraw: {\r\n instructions: {\r\n show: \"Mostrar instrucciones\",\r\n hide: \"Ocultar instrucciones\",\r\n parts: {\r\n roof: \"Después de buscar y seleccionar su dirección, resalte la parte del tejado donde desea añadir paneles solares. Marque cada superficie con un polígono con la herramienta de tejado\",\r\n obstruction: \". Si tiene claraboyas u otras obstrucciones donde no desea añadir paneles solares, márquelas también con la herramienta de obstrucción\",\r\n delete: \". Puede eliminar polígonos con la herramienta de eliminación\",\r\n move: \". Si desea cambiar las esquinas de un polígono, seleccione la herramienta de movimiento\",\r\n end: \", seleccione el polígono que desea modificar y arrastre y suelte los bordes.\",\r\n }\r\n },\r\n markRoofEdge: \"Marcar borde inferior del tejado\",\r\n noPolygonSelected: \"No se ha seleccionado un polígono\",\r\n noAddressSelected: \"Por favor, seleccione una dirección\",\r\n information: \"Información\",\r\n calculateSolarPanels: \"Calcular paneles solares\",\r\n panels: \"Paneles\",\r\n area: \"Área\",\r\n azimuth: \"Azimut\",\r\n pitch: \"Inclinación\",\r\n tools: {\r\n roof: {\r\n name: \"Tejado\",\r\n explanation: \"Dibuje el tejado del edificio\",\r\n ariaLabel: \"Tejado\",\r\n },\r\n obstruction: {\r\n name: \"Obstrucción\",\r\n explanation: \"Dibuje la obstrucción del edificio\",\r\n ariaLabel: \"Obstrucción\",\r\n },\r\n delete: {\r\n name: \"Eliminar\",\r\n explanation: \"Elimine el polígono seleccionado\",\r\n ariaLabel: \"Eliminar\",\r\n },\r\n move: {\r\n name: \"Mover\",\r\n explanation: \"Mueva los puntos del polígono seleccionado\",\r\n ariaLabel: \"Mover\",\r\n },\r\n undo: {\r\n name: \"Deshacer\",\r\n explanation: \"Deshaga la última acción\",\r\n ariaLabel: \"Deshacer\",\r\n }\r\n },\r\n }\r\n}"]}
|
|
@@ -26,8 +26,13 @@ export function simulateDay(production, consumption, dailyConsumption, battery)
|
|
|
26
26
|
const energyDifference = production[hour] - consumption[hour];
|
|
27
27
|
if (energyDifference > 0) {
|
|
28
28
|
energyUsageOfProduction += consumption[hour];
|
|
29
|
-
if (batteryCharge < battery) {
|
|
30
|
-
batteryCharge =
|
|
29
|
+
if (batteryCharge < battery && batteryCharge + energyDifference <= battery) {
|
|
30
|
+
batteryCharge = batteryCharge + energyDifference;
|
|
31
|
+
}
|
|
32
|
+
else if (batteryCharge < battery) {
|
|
33
|
+
const batteryDifference = battery - batteryCharge;
|
|
34
|
+
batteryCharge = battery;
|
|
35
|
+
soldEnergy += energyDifference - batteryDifference;
|
|
31
36
|
}
|
|
32
37
|
else {
|
|
33
38
|
soldEnergy += energyDifference;
|
|
@@ -41,7 +46,6 @@ export function simulateDay(production, consumption, dailyConsumption, battery)
|
|
|
41
46
|
}
|
|
42
47
|
else {
|
|
43
48
|
energyUsageOfProduction += production[hour] + batteryCharge;
|
|
44
|
-
soldEnergy -= energyDifference + batteryCharge;
|
|
45
49
|
batteryCharge = 0;
|
|
46
50
|
}
|
|
47
51
|
}
|
|
@@ -104,6 +108,7 @@ export function simulate(config) {
|
|
|
104
108
|
autonomy: (summerDay.autonomy + winterDay.autonomy) / 2,
|
|
105
109
|
compensationPerDay: soldEnergy * config.electricityPrice.sell,
|
|
106
110
|
byYearSavedCosts: savedCostsByYear,
|
|
111
|
+
totalEnergyConsumptionDay: (summerConsumptionWholeDay + winterConsumptionWholeDay) / 2,
|
|
107
112
|
};
|
|
108
113
|
}
|
|
109
114
|
//# sourceMappingURL=simulation.js.map
|