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