diff --git a/src/client/components/ResultTable.js b/src/client/components/ResultTable.js index c99d956ecd0724f3b515dd5a3ac33fffa1e90fb9..c2d8ca6c48eaf0a12bed287f4550b6eaf634d9eb 100644 --- a/src/client/components/ResultTable.js +++ b/src/client/components/ResultTable.js @@ -5,7 +5,6 @@ import Table from '@material-ui/core/Table'; import TableBody from '@material-ui/core/TableBody'; import TableCell from '@material-ui/core/TableCell'; import TableRow from '@material-ui/core/TableRow'; -import TableFooter from '@material-ui/core/TableFooter'; import Paper from '@material-ui/core/Paper'; import ResultTableHead from './ResultTableHead'; import { has, orderBy } from 'lodash'; @@ -28,7 +27,7 @@ const styles = () => ({ valueList: { paddingLeft: 15 }, - valueListCustomSort: { + valueListNoBullets: { listStyle: 'none', paddingLeft: 0 }, @@ -73,22 +72,14 @@ class ResultTable extends React.Component { } }; - objectListRenderer = (cell, makeLink, customSort, ordered) => { + objectListRenderer = (cell, makeLink, ordered) => { if (cell == null || cell === '-'){ return '-'; } else if (Array.isArray(cell)) { - if (customSort) { - cell.map(item => { - Array.isArray(item.order) ? item.earliestOrder = item.order[0] : item.earliestOrder = item.order; - }); - cell.sort((a, b) => a.earliestOrder - b.earliestOrder); - } else { - cell = orderBy(cell, 'prefLabel'); - } + cell = orderBy(cell, 'prefLabel'); const listItems = cell.map((item, i) => <li key={i}> - {customSort && <span>{Array.isArray(item.order) ? item.order.toString() : item.order}. </span>} {makeLink && <a target='_blank' rel='noopener noreferrer' @@ -100,16 +91,15 @@ class ResultTable extends React.Component { {!makeLink && item.prefLabel} </li> ); - const listClass = customSort ? this.props.classes.valueListCustomSort : this.props.classes.valueList; if (ordered) { return ( - <ol className={listClass}> + <ol className={this.props.classes.valueList}> {listItems} </ol> ); } else { return ( - <ul className={listClass}> + <ul className={this.props.classes.valueList}> {listItems} </ul> ); @@ -130,6 +120,77 @@ class ResultTable extends React.Component { } }; + transactionRenderer = cell => { + if (Array.isArray(cell)) { + cell = orderBy(cell, 'date'); + const items = cell.map((item, i) => { + return ( + <li key={i}> + {item.date} + {' '} + <a + target='_blank' rel='noopener noreferrer' + href={item.sdbmLink} + > + {item.prefLabel} + </a> + </li> + ); + }); + return ( + <ul className={this.props.classes.valueList}> + {items} + </ul> + ); + } else { + return ( + <span> + {cell.date} + {' '} + <a + target='_blank' rel='noopener noreferrer' + href={cell.sdbmLink} + > + {cell.prefLabel} + </a> + </span> + + ); + } + }; + + ownerRenderer = cell => { + if (Array.isArray(cell)) { + cell.map(item => { + Array.isArray(item.order) ? item.earliestOrder = item.order[0] : item.earliestOrder = item.order; + }); + cell.sort((a, b) => a.earliestOrder - b.earliestOrder); + + const items = cell.map((item, i) => { + return ( + <li key={i}> + <span>{Array.isArray(item.order) ? item.order.toString() : item.order}. </span> + <a + target='_blank' rel='noopener noreferrer' + href={item.sdbmLink} + > + {item.prefLabel} + </a> + </li> + ); + }); + return ( + <ul className={this.props.classes.valueListNoBullets}> + {items} + </ul> + ); + } else { + return ( + <span>{cell.date}<br />{cell.location}</span> + ); + } + }; + render() { const { classes, rows } = this.props; @@ -166,14 +227,14 @@ class ResultTable extends React.Component { <TableCell className={classes.withFilter}> {this.stringListRenderer(row.language)} </TableCell> - <TableCell className={classes.withFilter}> + {/*<TableCell className={classes.withFilter}> {this.stringListRenderer(row.material)} - </TableCell> + </TableCell>*/} <TableCell className={classes.withFilter}> - {this.objectListRenderer(row.acquisition, true)} + {this.transactionRenderer(row.acquisition)} </TableCell> <TableCell className={classes.withFilter}> - {this.objectListRenderer(row.owner, true, true, false)} + {this.ownerRenderer(row.owner)} </TableCell> </TableRow> ); diff --git a/src/client/components/ResultTableHead.js b/src/client/components/ResultTableHead.js index 3e3e22ca629d270d562062c10e194a2df410062f..5ea93221643fab19b3d9bcc2448dce48c9fc75e2 100644 --- a/src/client/components/ResultTableHead.js +++ b/src/client/components/ResultTableHead.js @@ -49,13 +49,13 @@ const columns = [ property: 'language', desc: 'Language description' }, + // { + // label: 'Material', + // property: 'material', + // desc: 'Material description' + // }, { - label: 'Material', - property: 'material', - desc: 'Material description' - }, - { - label: 'Transaction', + label: 'Observation', property: 'acquisition', desc: 'Transaction description' }, diff --git a/src/client/reducers/options.js b/src/client/reducers/options.js index 5c8898c7f416df63f137cee28d2a67817b068673..217020ce46420d9831c0068369100f8f144c80ae 100644 --- a/src/client/reducers/options.js +++ b/src/client/reducers/options.js @@ -5,7 +5,7 @@ import { } from '../actions'; const DEFAULT_LANGUAGE = 'en'; -const DEFAULT_RESULT_FORMAT = 'creationPlaceMap'; +const DEFAULT_RESULT_FORMAT = 'table'; const DEFAULT_MAP_MODE = 'cluster'; export const INITIAL_STATE = {