Newer
Older
import React from 'react'
import PropTypes from 'prop-types'
import intl from 'react-intl-universal'
import { withStyles } from '@material-ui/core/styles'
import Table from '@material-ui/core/Table'
import TableBody from '@material-ui/core/TableBody'
import TableRow from '@material-ui/core/TableRow'
import TableCell from '@material-ui/core/TableCell'
import ResultTableCell from '../facet_results/ResultTableCell'
import Tooltip from '@material-ui/core/Tooltip'
import IconButton from '@material-ui/core/IconButton'
import InfoIcon from '@material-ui/icons/InfoOutlined'
const styles = theme => ({
instanceTable: {
// maxWidth: 800,
// width: '100%',
borderTop: '1px solid rgba(224, 224, 224, 1);'
},
divider: {
marginTop: theme.spacing(1),
marginBottom: theme.spacing(1)
},
sahaButton: {
},
spinnerContainer: {
display: 'flex',
width: '100%',
height: '100%',
alignItems: 'center',
justifyContent: 'center'
},
labelCell: {
/**
* A component for generating a table based on data about an entity.
*/
class InstanceHomePageTable extends React.Component {
componentDidMount = () => {
if (this.props.fetchResultsWhenMounted) {
this.props.fetchResults({
resultClass: this.props.resultClassVariant,
facetClass: this.props.facetClass,
uri: this.props.uri
})
}
}
render = () => {
const { classes, data, resultClass, properties } = this.props
return (
<>
{data &&
<Table className={classes.instanceTable}>
<TableBody>
{properties.map(row => {
const label = intl.get(`perspectives.${resultClass}.properties.${row.id}.label`)
const description = intl.get(`perspectives.${resultClass}.properties.${row.id}.description`)
const {
id, valueType, makeLink, externalLink, sortValues, sortBy, numberedList, previewImageHeight,
linkAsButton, collapsedMaxWords, showSource, sourceExternalLink, renderAsHTML, HTMLParserTask
} = row
return (
<TableRow key={row.id}>
<TableCell className={classes.labelCell}>
{label}
<Tooltip
title={description}
enterDelay={300}
>
<IconButton>
<InfoIcon />
</IconButton>
</Tooltip>
</TableCell>
<ResultTableCell
columnId={id}
data={data[id]}
valueType={valueType}
makeLink={makeLink}
externalLink={externalLink}
sortValues={sortValues}
sortBy={sortBy}
numberedList={numberedList}
previewImageHeight={previewImageHeight}
linkAsButton={linkAsButton}
collapsedMaxWords={collapsedMaxWords}
showSource={showSource}
sourceExternalLink={sourceExternalLink}
renderAsHTML={renderAsHTML}
HTMLParserTask={HTMLParserTask}
referencedTerm={data.referencedTerm}
/>
</TableRow>
)
}
)}
</TableBody>
</Table>}
</>
)
}
InstanceHomePageTable.propTypes = {
classes: PropTypes.object.isRequired,
export const InstanceHomePageTableComponent = InstanceHomePageTable
export default withStyles(styles)(InstanceHomePageTable)