Add info text and range indicator
This commit is contained in:
43
src/App.js
43
src/App.js
@@ -7,6 +7,11 @@ import {
|
|||||||
Center,
|
Center,
|
||||||
SimpleGrid,
|
SimpleGrid,
|
||||||
Box,
|
Box,
|
||||||
|
Text,
|
||||||
|
Stack,
|
||||||
|
useColorModeValue,
|
||||||
|
OrderedList,
|
||||||
|
ListItem,
|
||||||
|
|
||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
|
|
||||||
@@ -45,20 +50,38 @@ function App() {
|
|||||||
<ChakraProvider theme={theme}>
|
<ChakraProvider theme={theme}>
|
||||||
<Nav></Nav>
|
<Nav></Nav>
|
||||||
<Center p={5}>
|
<Center p={5}>
|
||||||
<SimpleGrid columns={{ base: 1, md: 2, lg: 2 }} spacing={4}>
|
<Stack maxWidth={1200}>
|
||||||
|
<Box p={6} borderRadius="lg" bg={useColorModeValue('gray.100', 'gray.200')}>
|
||||||
|
<Text>
|
||||||
|
<Heading>Allemende Solimieten-Helferlein</Heading>
|
||||||
|
|
||||||
<Heading>Wohnung</Heading>
|
Im Rahmen des Konzept für solidarische Mieten, kann jede Partei in der Allmende ihre Miethöhe selbst bestimmen.
|
||||||
<Box></Box>
|
Dieses Tool soll als Orientierungshilfe bei der Selbsteinschätzung dienen.
|
||||||
|
</Text>
|
||||||
|
<Text pt={3}>Dies geschieht in folgenden Schritten:
|
||||||
|
</Text>
|
||||||
|
<OrderedList pt={3}>
|
||||||
|
<ListItem>Wähle deine Wohnung aus</ListItem>
|
||||||
|
<ListItem>Bestimme das monatliche Haushaltseinkommen</ListItem>
|
||||||
|
<ListItem>Wähle den Prozentsatz des Nettoeinkommens, den du zu zahlen bereit bist aus</ListItem>
|
||||||
|
<ListItem>Nun siehst du den daraus resultierenden Mietpreis absolut und auf den Quadratmeter gerechnet.</ListItem>
|
||||||
|
</OrderedList>
|
||||||
|
</Box>
|
||||||
|
<SimpleGrid pt={5} columns={{ base: 1, md: 2, lg: 2 }} spacing={4}>
|
||||||
|
|
||||||
<FlatSelectionCard setSelectedFlat={setSelectedFlat} />
|
<Heading>Wohnung</Heading>
|
||||||
<FlatDetailsCard flat={selectedFlat} />
|
<Box></Box>
|
||||||
|
|
||||||
<Heading>Selbsteinschätzung</Heading>
|
<FlatSelectionCard setSelectedFlat={setSelectedFlat} />
|
||||||
<Box></Box>
|
<FlatDetailsCard flat={selectedFlat} />
|
||||||
|
|
||||||
<SelfEvaluationCard rent={rent} setRent={setRent} />
|
<Heading>Selbsteinschätzung</Heading>
|
||||||
<ResultsCard rent={rent} flat={selectedFlat} />
|
<Box></Box>
|
||||||
</SimpleGrid>
|
|
||||||
|
<SelfEvaluationCard rent={rent} setRent={setRent} />
|
||||||
|
<ResultsCard rent={rent} flat={selectedFlat} />
|
||||||
|
</SimpleGrid>
|
||||||
|
</Stack>
|
||||||
</Center>
|
</Center>
|
||||||
</ChakraProvider >
|
</ChakraProvider >
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -31,4 +31,7 @@ export const flatData = {
|
|||||||
new Flat("W 2.7", 5, 95.7)
|
new Flat("W 2.7", 5, 95.7)
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const minRent = 9.50;
|
||||||
|
export const maxRent = 15.60;
|
||||||
@@ -14,6 +14,7 @@ import {
|
|||||||
StatNumber,
|
StatNumber,
|
||||||
StatGroup,
|
StatGroup,
|
||||||
Select,
|
Select,
|
||||||
|
Progress,
|
||||||
NumberInput,
|
NumberInput,
|
||||||
NumberInputField,
|
NumberInputField,
|
||||||
Slider,
|
Slider,
|
||||||
@@ -24,7 +25,7 @@ import {
|
|||||||
Tooltip
|
Tooltip
|
||||||
} from '@chakra-ui/react';
|
} from '@chakra-ui/react';
|
||||||
|
|
||||||
import { flatData } from './Data';
|
import { flatData, minRent, maxRent } from './Data';
|
||||||
|
|
||||||
export function FlatSelectionCard({ setSelectedFlat }) {
|
export function FlatSelectionCard({ setSelectedFlat }) {
|
||||||
const [levelOptions, setLevelOption] = useState([{ value: 0, label: "EG" }, { value: 1, label: "1. OG" }, { value: 2, label: "2. OG" }, { value: 3, label: "3. OG" }]);
|
const [levelOptions, setLevelOption] = useState([{ value: 0, label: "EG" }, { value: 1, label: "1. OG" }, { value: 2, label: "2. OG" }, { value: 3, label: "3. OG" }]);
|
||||||
@@ -222,18 +223,42 @@ export function ResultsCard({ rent, flat }) {
|
|||||||
var body = <CardBody></CardBody>
|
var body = <CardBody></CardBody>
|
||||||
if (flat) {
|
if (flat) {
|
||||||
var relativeRent = rent / flat.sizePrivate;
|
var relativeRent = rent / flat.sizePrivate;
|
||||||
|
var rangePosition = ((relativeRent - minRent) / (maxRent - minRent)) * 100;
|
||||||
|
if (rangePosition < 0) { rangePosition = 0; }
|
||||||
|
if (rangePosition > 100) { rangePosition = 100; }
|
||||||
|
var color = "green";
|
||||||
|
if (rangePosition > 33) { color = "yellow"; }
|
||||||
|
if (rangePosition > 66) { color = "red"; }
|
||||||
body = <CardBody>
|
body = <CardBody>
|
||||||
<StatGroup>
|
<Stack>
|
||||||
<Stat>
|
<StatGroup>
|
||||||
<StatLabel>Miete</StatLabel>
|
<Stat>
|
||||||
<StatNumber>{rent} €</StatNumber>
|
<StatLabel>Miete</StatLabel>
|
||||||
</Stat>
|
<StatNumber>{rent} €</StatNumber>
|
||||||
|
</Stat>
|
||||||
|
|
||||||
<Stat>
|
<Stat>
|
||||||
<StatLabel>Pro m²</StatLabel>
|
<StatLabel>Pro m²</StatLabel>
|
||||||
<StatNumber>{relativeRent.toFixed(2)} € </StatNumber>
|
<StatNumber>{relativeRent.toFixed(2)} € </StatNumber>
|
||||||
</Stat>
|
</Stat>
|
||||||
</StatGroup>
|
</StatGroup>
|
||||||
|
<Text>
|
||||||
|
Im Folgenden siehst du, wo deine Miete auf der Spanne zwischen WBS-Satz und
|
||||||
|
frei finanzierten Wohnungen ohne Soli-Ausgleich liegen würde.
|
||||||
|
</Text>
|
||||||
|
<Progress colorScheme={color} size='sm' value={rangePosition} />
|
||||||
|
<StatGroup>
|
||||||
|
<Stat>
|
||||||
|
<StatLabel>WBS Miete</StatLabel>
|
||||||
|
<StatNumber>{minRent.toFixed(2)} €</StatNumber>
|
||||||
|
</Stat>
|
||||||
|
|
||||||
|
<Stat>
|
||||||
|
<StatLabel>Max</StatLabel>
|
||||||
|
<StatNumber>{maxRent.toFixed(2)} € </StatNumber>
|
||||||
|
</Stat>
|
||||||
|
</StatGroup>
|
||||||
|
</Stack>
|
||||||
</CardBody>;
|
</CardBody>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user