From 94e8c40f52b239562aded5e70e334ddbb2eea23b Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Mon, 28 Sep 2020 20:43:47 -0700 Subject: Page for all attributes --- modern/src/PositionPage.js | 80 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 modern/src/PositionPage.js (limited to 'modern/src/PositionPage.js') diff --git a/modern/src/PositionPage.js b/modern/src/PositionPage.js new file mode 100644 index 0000000..a91a7a1 --- /dev/null +++ b/modern/src/PositionPage.js @@ -0,0 +1,80 @@ +import React, { Fragment, useState } from 'react'; + +import t from './common/localization'; +import { makeStyles, Typography, ListItem, ListItemText, ListItemSecondaryAction, List, Container, Paper, Divider } from '@material-ui/core'; +import { useParams } from 'react-router-dom'; +import { useEffectAsync } from './reactHelper'; +import MainToolbar from './MainToolbar'; +import { formatPosition } from './common/formatter'; +import { prefixString } from './common/stringUtils'; + +const useStyles = makeStyles(theme => ({ + root: { + marginTop: theme.spacing(2), + marginBottom: theme.spacing(2), + }, +})); + +const PositionPage = () => { + const classes = useStyles(); + + const { id } = useParams(); + + const [item, setItem] = useState(); + + useEffectAsync(async () => { + if (id) { + const response = await fetch(`/api/positions?id=${id}`, { + headers: { + 'Accept': 'application/json' + }, + }); + if (response.ok) { + const items = await response.json(); + setItem(items[0]); + } + } else { + setItem({}); + } + }, [id]); + + const formatKey = (key) => { + return t(prefixString('position', key)) || `${t('sharedAttribute')} "${key}"`; + }; + + const attributesList = () => { + const combinedList = {...item, ...item.attributes}; + return Object.entries(combinedList).filter(([_, value]) => typeof value !== 'object'); + } + + return ( + <> + + + + {item && + + {attributesList().map(([key, value], index, list) => ( + + + + + + {formatPosition(value, key)} + + + + {index < list.length - 1 ? : null} + + ))} + + } + + + + ); +} + +export default PositionPage; -- cgit v1.2.3