diff --git a/src/App.js b/src/App.js
index 43bc064..31c327c 100644
--- a/src/App.js
+++ b/src/App.js
@@ -22,6 +22,7 @@ import { Nav } from './Nav';
function App() {
const [selectedFlat, setSelectedFlat] = useState();
+ const [selectedRoom, setSelectedRoom] = useState();
const [rent, setRent] = useState(0);
@@ -72,14 +73,14 @@ function App() {
Wohnung
-
-
+
+
Selbsteinschätzung
-
+
diff --git a/src/Data.js b/src/Data.js
index 25d5d8a..8ad5f62 100644
--- a/src/Data.js
+++ b/src/Data.js
@@ -1,9 +1,20 @@
class Flat {
- constructor(name, numRooms, sizePrivate, isWbs = false, isAccessible = false) {
+ constructor(name, numRooms, sizePrivate, isWbs = false, isAccessible = false, wgRoomList = null) {
this.name = name;
this.numRooms = numRooms;
this.sizePrivate = sizePrivate;
this.isWbs = isWbs;
+ this.sizeShared = 0;
+ if (!wgRoomList) {
+ this.wgRoomList = [];
+ } else {
+ this.wgRoomList = wgRoomList;
+ this.sizeShared = this.sizePrivate;
+ for (var i = 0; i < this.wgRoomList.length; i++) {
+ this.sizeShared -= this.wgRoomList[i].size;
+ }
+ }
+
}
print() {
@@ -22,6 +33,7 @@ export const flatData = {
],
1: [
new Flat("W 1.4", 2, 55.7),
+ new Flat("W 1.5 (WG)", 5, 83.86, true, false, [{ "label": "1.5 02", "size": 15.72 }, { "label": "1.5 03", "size": 9.81 }, { "label": "1.5 05", "size": 11.48 }, { "label": "1.5 06", "size": 13.45 }]),
new Flat("W 1.6.0", 1, 25.6),
new Flat("W 1.6", 5, 95.7),
],
diff --git a/src/Solimieten.js b/src/Solimieten.js
index aa46a43..e996726 100644
--- a/src/Solimieten.js
+++ b/src/Solimieten.js
@@ -27,9 +27,10 @@ import {
import { flatData, minRent, maxRent } from './Data';
-export function FlatSelectionCard({ setSelectedFlat }) {
+export function FlatSelectionCard({ setSelectedFlat, onRoomSelected }) {
const [levelOptions, setLevelOption] = useState([{ value: 0, label: "EG" }, { value: 1, label: "1. OG" }, { value: 2, label: "2. OG" }, { value: 3, label: "3. OG" }]);
const [flatOptions, setFlatOptions] = useState([]);
+ const [roomOptions, setRoomOptions] = useState([]);
const [selectedBuilding, setSelectedBuilding] = useState();
function buildingSelected(e) {
@@ -52,9 +53,15 @@ export function FlatSelectionCard({ setSelectedFlat }) {
function flatSelected(e) {
var index = e.target.value;
-
+ var flat = flatOptions[index];
+ if (flat.wgRoomList) {
+ setRoomOptions(flat.wgRoomList);
+ }
setSelectedFlat(flatOptions[index]);
}
+ function roomSelected(e) {
+ onRoomSelected(roomOptions[e.target.value]);
+ }
return
@@ -72,19 +79,43 @@ export function FlatSelectionCard({ setSelectedFlat }) {
+ {roomOptions.length > 0 ? () : null}
}
-export function FlatDetailsCard({ flat }) {
+export function FlatDetailsCard({ flat, room }) {
var body =
Bitte auswählen
;
var badges = "";
- if (flat) {
+ if (flat && (room || flat.wgRoomList.length === 0)) {
+ var sizePrivate = flat.sizePrivate;
+ if (room) {
+ sizePrivate = room.size;
+ }
+
+ var sizeSharedBox = null;
+ var sizeSharedShare = 0;
+
+ if (flat.wgRoomList.length > 0) {
+ sizeSharedShare = flat.sizeShared / flat.wgRoomList.length;
+ sizeSharedBox =
+
+ Interne Gemeinschaftsfläche
+
+
+ {flat.sizeShared.toFixed(2)} m²
+
+ ;
+
+ }
+
body =
} spacing='4'>
@@ -94,7 +125,7 @@ export function FlatDetailsCard({ flat }) {
Bezeichnung
- {flat.name}
+ {flat.name} {room ? "Zimmer: " + room.label : null}
@@ -105,12 +136,13 @@ export function FlatDetailsCard({ flat }) {
{flat.numRooms}
+ {sizeSharedBox}
- Private Fläche
+ Fläche
- {flat.sizePrivate} m²
+ {sizePrivate + sizeSharedShare} m² {sizeSharedShare ? ("(" + sizePrivate + " m² Zimmer + " + sizeSharedShare.toFixed(2) + " m² Anteil interne Gemeinschaftsfläche)") : null}
@@ -219,10 +251,15 @@ export function SelfEvaluationCard({ rent, setRent }) {
}
-export function ResultsCard({ rent, flat }) {
+export function ResultsCard({ rent, flat, room }) {
var body =
- if (flat) {
- var relativeRent = rent / flat.sizePrivate;
+ if (flat && (room || flat.wgRoomList.length === 0)) {
+ var totalSize = flat.sizePrivate;
+ if (room) {
+ totalSize = room.size + flat.sizeShared / flat.wgRoomList.length;
+ }
+
+ var relativeRent = rent / totalSize;
var rangePosition = ((relativeRent - minRent) / (maxRent - minRent)) * 100;
if (rangePosition < 0) { rangePosition = 0; }
if (rangePosition > 100) { rangePosition = 100; }