New favicon and FlatDetails card

This commit is contained in:
Niklas Meinzer
2024-05-20 17:14:45 +02:00
parent 60b3efa1f8
commit e847deecdf
3 changed files with 105 additions and 23 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@@ -2,12 +2,7 @@ import { React, useState } from 'react';
import { import {
ChakraProvider, ChakraProvider,
Box,
Text, Text,
Link,
VStack,
Code,
Grid,
theme, theme,
Select, Select,
Card, Card,
@@ -15,7 +10,10 @@ import {
Heading, Heading,
CardBody, CardBody,
Center, Center,
SimpleGrid,
} from '@chakra-ui/react'; } from '@chakra-ui/react';
import { FlatDetails } from './Solimieten';
import { ColorModeSwitcher } from './ColorModeSwitcher'; import { ColorModeSwitcher } from './ColorModeSwitcher';
import { flatData } from './Data'; import { flatData } from './Data';
@@ -23,6 +21,7 @@ function App() {
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" }]);
const [flatOptions, setFlatOptions] = useState([]); const [flatOptions, setFlatOptions] = useState([]);
const [selectedBuilding, setSelectedBuilding] = useState(); const [selectedBuilding, setSelectedBuilding] = useState();
const [selectedFlat, setSelectedFlat] = useState();
function buildingSelected(e) { function buildingSelected(e) {
var newOptions; var newOptions;
@@ -42,10 +41,18 @@ function App() {
setFlatOptions(flatData[selectedBuilding][e.target.value]); setFlatOptions(flatData[selectedBuilding][e.target.value]);
} }
} }
function flatSelected(e) {
var index = e.target.value;
setSelectedFlat(flatOptions[index]);
}
return ( return (
<ChakraProvider theme={theme}> <ChakraProvider theme={theme}>
<Center> <Center>
<SimpleGrid columns={2} spacing={4}>
<Card> <Card>
<CardHeader> <CardHeader>
<Heading size='md'>Wohnungsauswahl</Heading> <Heading size='md'>Wohnungsauswahl</Heading>
@@ -59,11 +66,13 @@ function App() {
<Select placeholder='Etage auswählen' onChange={levelSelected}> <Select placeholder='Etage auswählen' onChange={levelSelected}>
{levelOptions.map(({ value, label }, index) => <option value={value} >{label}</option>)} {levelOptions.map(({ value, label }, index) => <option value={value} >{label}</option>)}
</Select> </Select>
<Select placeholder='Wohnung auswählen'> <Select placeholder='Wohnung auswählen' onChange={flatSelected}>
{flatOptions.map((flat) => <option value={flat} >{flat.print()}</option>)} {flatOptions.map((flat, index) => <option value={index} >{flat.print()}</option>)}
</Select> </Select>
</CardBody> </CardBody>
</Card> </Card>
<FlatDetails flat={selectedFlat} />
</SimpleGrid>
</Center> </Center>
</ChakraProvider > </ChakraProvider >
); );

73
src/Solimieten.js Normal file
View File

@@ -0,0 +1,73 @@
import {
Card,
CardHeader,
Heading,
CardBody,
Stack,
StackDivider,
Box,
Text,
Badge
} from '@chakra-ui/react';
export function FlatDetails({ flat }) {
var body = <CardBody>
Bitte auswählen
</CardBody>;
var badges = "";
if (flat) {
body = <CardBody>
<Stack divider={<StackDivider />} spacing='4'>
<Box>
<Heading size='xs' textTransform='uppercase'>
Bezeichnung
</Heading>
<Text pt='2' fontSize='sm'>
{flat.name}
</Text>
</Box>
<Box>
<Heading size='xs' textTransform='uppercase'>
Zimmeranzahl
</Heading>
<Text pt='2' fontSize='sm'>
{flat.numRooms}
</Text>
</Box>
<Box>
<Heading size='xs' textTransform='uppercase'>
Private Fläche
</Heading>
<Text pt='2' fontSize='sm'>
{flat.sizePrivate}
</Text>
</Box>
</Stack>
</CardBody>;
if (flat.isWbs) {
badges = <Badge colorScheme='blue'>
mit WBS
</Badge>;
} else {
badges = <Badge colorScheme='yellow'>
ohne WBS
</Badge>;
}
}
return (
<Card>
<CardHeader>
{badges}
<Heading size='md'>Wohnungsdetails</Heading>
</CardHeader>
{body}
</Card>
);
}