From fe2cc1b1aedeff470d67435134be2cb23f56bac5 Mon Sep 17 00:00:00 2001 From: Niklas Meinzer Date: Fri, 31 May 2024 17:08:28 +0200 Subject: [PATCH] make it all work for WGs --- src/App.js | 7 +++--- src/Data.js | 14 +++++++++++- src/Solimieten.js | 57 ++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 64 insertions(+), 14 deletions(-) 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; }