Skip to content
Snippets Groups Projects
InstanceHomePageTable.js 3.16 KiB
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';
import has from 'lodash';

const styles = theme => ({
  instanceTable: {
    //maxWidth: 800,
    //width: '100%',
    height: '100%',
    borderTop: '1px solid rgba(224, 224, 224, 1);',
  },
  divider: {
    marginTop: theme.spacing(1),
    marginBottom: theme.spacing(1)
  },
  sahaButton: {
    margin: theme.spacing(2),
  },
  spinnerContainer: {
    display: 'flex',
    width: '100%',
    height: '100%',
    alignItems: 'center',
    justifyContent: 'center'
  },
  labelCell: {
    width: 240,
  }
});



const InstanceHomePageTable = props => {
  const { classes, data, properties } = props;
  return (
    <Table className={classes.instanceTable}>
      <TableBody>
        {properties.map(row => {
          const label = intl.get(`perspectives.${props.resultClass}.properties.${row.id}.label`);
          const description = intl.get(`perspectives.${props.resultClass}.properties.${row.id}.description`);
          return (
            <TableRow key={row.id}>
              <TableCell className={classes.labelCell}>
                {label}
                <Tooltip
                  title={description}
                  enterDelay={300}
                >
                  <IconButton>
                    <InfoIcon />
                  </IconButton>
                </Tooltip>
              </TableCell>
              <ResultTableCell
                columnId={row.id}
                data={data[row.id]}
                valueType={row.valueType}
                makeLink={row.makeLink}
                externalLink={row.externalLink}
                sortValues={row.sortValues}
                numberedList={row.numberedList}
                container='cell'
                expanded={true}
                linkAsButton={has(row, 'linkAsButton')
                  ? row.linkAsButton
                  : null
                }
                collapsedMaxWords={has(row, 'collapsedMaxWords')
                  ? row.collapsedMaxWords
                  : null
                }
                showSource={has(row, 'showSource')
                  ? row.showSource
                  : null
                }
                sourceExternalLink={has(row, 'sourceExternalLink')
                  ? row.sourceExternalLink
                  : null
                }
              />
            </TableRow>
          );
        }
        )}
      </TableBody>
    </Table>
  );
};

InstanceHomePageTable.propTypes = {
  classes: PropTypes.object.isRequired,
  resultClass: PropTypes.string.isRequired,
  data: PropTypes.object.isRequired,
  properties: PropTypes.array.isRequired
};

export default withStyles(styles)(InstanceHomePageTable);