From 7d73046c937b5bd4a1483a7dc65de95118b1692d Mon Sep 17 00:00:00 2001 From: Esko Ikkala <esko.ikkala@aalto.fi> Date: Fri, 26 Oct 2018 13:55:58 +0300 Subject: [PATCH] Hide material column, add render function for owner --- src/client/components/ResultTable.js | 99 +++++++++++++++++++----- src/client/components/ResultTableHead.js | 12 +-- src/client/reducers/options.js | 2 +- 3 files changed, 87 insertions(+), 26 deletions(-) diff --git a/src/client/components/ResultTable.js b/src/client/components/ResultTable.js index c99d956e..c2d8ca6c 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 3e3e22ca..5ea93221 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 5c8898c7..217020ce 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 = { -- GitLab