From 6de35a391265306237d56e9edf0af5a5f5e5128e Mon Sep 17 00:00:00 2001
From: esikkala <esko.ikkala@aalto.fi>
Date: Thu, 24 May 2018 15:10:14 +0300
Subject: [PATCH] Adjust to simpler result mapping, add some initial result
 data

---
 src/components/ResultMarker.js |  12 +-
 src/components/ResultTable.js  |  75 ++++--------
 src/components/SimpleTable.js  |  20 ++--
 src/containers/MapApp.js       |   8 +-
 src/reducers/search.js         | 208 ++++++++++++++++++++++++++++++++-
 5 files changed, 246 insertions(+), 77 deletions(-)

diff --git a/src/components/ResultMarker.js b/src/components/ResultMarker.js
index 827e80e7..9951d531 100644
--- a/src/components/ResultMarker.js
+++ b/src/components/ResultMarker.js
@@ -6,21 +6,21 @@ const ResultMarker = ({ label, lat, long }) => {
   if (typeof lat === 'undefined' || typeof long === 'undefined') {
     return(null);
   } else {
-    const pos = [+lat[0].value, +long[0].value];
+    const pos = [+lat, +long];
     return (
       <Marker position={pos}>
         <Popup>
-          <p>{label[0].value}</p>
+          <p>{label}</p>
         </Popup>
       </Marker>
     );
-  }  
+  }
 };
 
 ResultMarker.propTypes = {
-  label: PropTypes.array.isRequired,
-  lat: PropTypes.array.isRequired,
-  long: PropTypes.array.isRequired,
+  label: PropTypes.string.isRequired,
+  lat: PropTypes.string.isRequired,
+  long: PropTypes.string.isRequired,
 };
 
 export default ResultMarker;
diff --git a/src/components/ResultTable.js b/src/components/ResultTable.js
index dc5b63d6..7db559cd 100644
--- a/src/components/ResultTable.js
+++ b/src/components/ResultTable.js
@@ -6,6 +6,7 @@ import Table from '@material-ui/core/Table';
 import TableBody from '@material-ui/core/TableBody';
 import TableCell from '@material-ui/core/TableCell';
 import TableHead from '@material-ui/core/TableHead';
+import TablePagination from '@material-ui/core/TablePagination';
 import TableRow from '@material-ui/core/TableRow';
 import TableSortLabel from '@material-ui/core/TableSortLabel';
 import Toolbar from '@material-ui/core/Toolbar';
@@ -18,18 +19,11 @@ import DeleteIcon from '@material-ui/icons/Delete';
 import FilterListIcon from '@material-ui/icons/FilterList';
 import { lighten } from '@material-ui/core/styles/colorManipulator';
 
-let counter = 0;
-function createData(name, calories, fat, carbs, protein) {
-  counter += 1;
-  return { id: counter, name, calories, fat, carbs, protein };
-}
-
 const columnData = [
-  { id: 'name', numeric: false, disablePadding: true, label: 'Name' },
-  { id: 'calories', numeric: true, disablePadding: false, label: 'Type' },
-  { id: 'fat', numeric: true, disablePadding: false, label: 'Area' },
-  { id: 'carbs', numeric: true, disablePadding: false, label: 'Carbs (g)' },
-  { id: 'protein', numeric: true, disablePadding: false, label: 'Protein (g)' },
+  { id: 'name', numeric: false, disablePadding: false, label: 'Name' },
+  { id: 'type', numeric: false, disablePadding: false, label: 'Type' },
+  { id: 'area', numeric: false, disablePadding: false, label: 'Area' },
+  { id: 'source', numeric: false, disablePadding: false, label: 'Source' },
 ];
 
 class EnhancedTableHead extends React.Component {
@@ -130,7 +124,7 @@ let EnhancedTableToolbar = props => {
           </Typography>
         ) : (
           <Typography variant="title" id="tableTitle">
-            Search results
+            Nutrition
           </Typography>
         )}
       </div>
@@ -164,8 +158,7 @@ EnhancedTableToolbar = withStyles(toolbarStyles)(EnhancedTableToolbar);
 const styles = theme => ({
   root: {
     width: '100%',
-    height: '100%',
-    marginTop: theme.spacing.unit * 2,
+    marginTop: theme.spacing.unit * 3,
   },
   table: {
     minWidth: 700,
@@ -183,21 +176,7 @@ class EnhancedTable extends React.Component {
       order: 'asc',
       orderBy: 'calories',
       selected: [],
-      data: [
-        createData('Cupcake', 305, 3.7, 67, 4.3),
-        createData('Donut', 452, 25.0, 51, 4.9),
-        createData('Eclair', 262, 16.0, 24, 6.0),
-        createData('Frozen yoghurt', 159, 6.0, 24, 4.0),
-        createData('Gingerbread', 356, 16.0, 49, 3.9),
-        createData('Honeycomb', 408, 3.2, 87, 6.5),
-        createData('Ice cream sandwich', 237, 9.0, 37, 4.3),
-        createData('Jelly Bean', 375, 0.0, 94, 0.0),
-        createData('KitKat', 518, 26.0, 65, 7.0),
-        createData('Lollipop', 392, 0.2, 98, 0.0),
-        createData('Marshmallow', 318, 0, 81, 2.0),
-        createData('Nougat', 360, 19.0, 9, 37.0),
-        createData('Oreo', 437, 18.0, 63, 4.0),
-      ].sort((a, b) => (a.calories < b.calories ? -1 : 1)),
+      data: this.props.data,
       page: 0,
       rowsPerPage: 5,
     };
@@ -221,7 +200,7 @@ class EnhancedTable extends React.Component {
 
   handleSelectAllClick = (event, checked) => {
     if (checked) {
-      this.setState({ selected: this.state.data.map(n => n.id) });
+      this.setState({ selected: this.state.data.map(n => n.s) });
       return;
     }
     this.setState({ selected: [] });
@@ -248,20 +227,11 @@ class EnhancedTable extends React.Component {
     this.setState({ selected: newSelected });
   };
 
-  handleChangePage = (event, page) => {
-    this.setState({ page });
-  };
-
-  handleChangeRowsPerPage = event => {
-    this.setState({ rowsPerPage: event.target.value });
-  };
-
   isSelected = id => this.state.selected.indexOf(id) !== -1;
 
   render() {
     const { classes } = this.props;
-    const { data, order, orderBy, selected, rowsPerPage, page } = this.state;
-    const emptyRows = rowsPerPage - Math.min(rowsPerPage, data.length - page * rowsPerPage);
+    const { data, order, orderBy, selected } = this.state;
 
     return (
       <Paper className={classes.root}>
@@ -277,36 +247,30 @@ class EnhancedTable extends React.Component {
               rowCount={data.length}
             />
             <TableBody>
-              {data.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map(n => {
-                const isSelected = this.isSelected(n.id);
+              {data.map(n => {
+                const isSelected = this.isSelected(n.s);
                 return (
                   <TableRow
                     hover
-                    onClick={event => this.handleClick(event, n.id)}
+                    onClick={event => this.handleClick(event, n.s)}
                     role="checkbox"
                     aria-checked={isSelected}
                     tabIndex={-1}
-                    key={n.id}
+                    key={n.s}
                     selected={isSelected}
                   >
                     <TableCell padding="checkbox">
                       <Checkbox checked={isSelected} />
                     </TableCell>
-                    <TableCell component="th" scope="row" padding="none">
-                      {n.name}
+                    <TableCell component="th" scope="row">
+                      {n.label}
                     </TableCell>
-                    <TableCell numeric>{n.calories}</TableCell>
-                    <TableCell numeric>{n.fat}</TableCell>
-                    <TableCell numeric>{n.carbs}</TableCell>
-                    <TableCell numeric>{n.protein}</TableCell>
+                    <TableCell>{n.typeLabel}</TableCell>
+                    <TableCell>{n.broaderAreaLabel}</TableCell>
+                    <TableCell>{n.source}</TableCell>
                   </TableRow>
                 );
               })}
-              {emptyRows > 0 && (
-                <TableRow style={{ height: 49 * emptyRows }}>
-                  <TableCell colSpan={6} />
-                </TableRow>
-              )}
             </TableBody>
           </Table>
         </div>
@@ -317,6 +281,7 @@ class EnhancedTable extends React.Component {
 
 EnhancedTable.propTypes = {
   classes: PropTypes.object.isRequired,
+  data: PropTypes.array
 };
 
 export default withStyles(styles)(EnhancedTable);
diff --git a/src/components/SimpleTable.js b/src/components/SimpleTable.js
index 52d7c604..5e2f49a4 100644
--- a/src/components/SimpleTable.js
+++ b/src/components/SimpleTable.js
@@ -15,16 +15,16 @@ const styles = theme => ({
     overflowX: 'auto',
   },
   table: {
-    minWidth: 700,
+    minWidth: 750,
   },
 });
 
 const SimpleTable = (props) => {
-  const { classes, search } = props;
-  
+  const { classes, data } = props;
+
   return (
     <Paper className={classes.root}>
-      {search.results.length > 0 &&
+      {data.length > 0 &&
         <Table className={classes.table}>
           <TableHead>
             <TableRow>
@@ -35,15 +35,15 @@ const SimpleTable = (props) => {
             </TableRow>
           </TableHead>
           <TableBody>
-            {search.results.map(result => {
+            {data.map(result => {
               return (
                 <TableRow key={result.s}>
                   <TableCell component="th" scope="row">
-                    {result.label[0].value}
+                    {result.label}
                   </TableCell>
-                  <TableCell>{result.typeLabel[0].value}</TableCell>
-                  <TableCell>{result.broaderAreaLabel[0].value}</TableCell>
-                  <TableCell>{result.source[0].value}</TableCell>
+                  <TableCell>{result.typeLabel}</TableCell>
+                  <TableCell>{result.broaderAreaLabel}</TableCell>
+                  <TableCell>{result.source}</TableCell>
                 </TableRow>
               );
             })}
@@ -56,7 +56,7 @@ const SimpleTable = (props) => {
 
 SimpleTable.propTypes = {
   classes: PropTypes.object.isRequired,
-  search: PropTypes.object.isRequired,
+  data: PropTypes.array.isRequired,
 };
 
 export default withStyles(styles)(SimpleTable);
diff --git a/src/containers/MapApp.js b/src/containers/MapApp.js
index f2a1ee97..cbfcfb6f 100644
--- a/src/containers/MapApp.js
+++ b/src/containers/MapApp.js
@@ -15,7 +15,7 @@ import ChevronRightIcon from '@material-ui/icons/ChevronRight';
 import IntegrationAutosuggest from '../components/IntegrationAutosuggest';
 import LeafletMap from '../components/LeafletMap';
 import Message from '../components/Message';
-// import ResultTable from '../components/ResultTable';
+//import ResultTable from '../components/ResultTable';
 import SimpleTable from '../components/SimpleTable';
 
 import {
@@ -28,7 +28,7 @@ import {
   closeDrawer
 } from '../actions';
 
-const drawerWidth = 700;
+const drawerWidth = 800;
 
 const styles = theme => ({
   root: {
@@ -141,7 +141,9 @@ let MapApp = (props) => {
           {theme.direction === 'rtl' ? <ChevronRightIcon /> : <ChevronLeftIcon />}
         </IconButton>
       </div>
-      <SimpleTable search={props.search} />
+      {props.search.results.length > 0 &&
+        <SimpleTable data={props.search.results} />
+      }
     </Drawer>
   );
 
diff --git a/src/reducers/search.js b/src/reducers/search.js
index 9f5fa078..5424102e 100644
--- a/src/reducers/search.js
+++ b/src/reducers/search.js
@@ -10,10 +10,212 @@ import suggestions from './suggestions';
 import results from './results';
 
 export const INITIAL_STATE = {
-  query: '',
+  query: 'kive',
   datasets: ['warsa_karelian_places', 'warsa_municipalities'],
   suggestions: [],
-  results: []
+  results: [ { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_20949',
+    label: 'Kiveksienkennäs',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Lumivaara',
+    lat: '61.470031',
+    long: '30.12829',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_19450',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Jääski',
+    lat: '60.998066',
+    long: '28.795745',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_26729',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Uukuniemi',
+    lat: '61.703397',
+    long: '30.03475',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_31110',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Uukuniemi',
+    lat: '61.784059',
+    long: '30.167493',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_15730',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Hiitola',
+    lat: '61.182671',
+    long: '29.736767',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_22715',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Kanneljärvi',
+    lat: '60.401013',
+    long: '29.452854',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_14516',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Kurkijoki',
+    lat: '61.478766',
+    long: '29.715502',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_21873',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Käkisalmen mlk',
+    lat: '60.958474',
+    long: '30.163148',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_26423',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Käkisalmen mlk',
+    lat: '61.048316',
+    long: '29.99702',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_26573',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Rautu',
+    lat: '60.527514',
+    long: '30.270254',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_27354',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Räisälä',
+    lat: '60.940371',
+    long: '29.738772',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_18419',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Suojärvi',
+    lat: '62.113113',
+    long: '32.410906',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_25949',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Valkjärvi',
+    lat: '60.518527',
+    long: '29.723975',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_29974',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Viipurin mlk',
+    lat: '60.594928',
+    long: '28.883801',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_30290',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Viipurin mlk',
+    lat: '60.708614',
+    long: '28.568478',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_19637',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Viipurin mlk',
+    lat: '60.863643',
+    long: '28.819216',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_19068',
+    label: 'Kivelä',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Vuoksenranta',
+    lat: '60.796359',
+    long: '29.574668',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_38361',
+    label: 'Kivenjoki',
+    typeLabel: 'Vesimuodostuma',
+    broaderAreaLabel: 'Sortavalan mlk',
+    lat: '61.69327',
+    long: '30.563798',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_13448',
+    label: 'Kivenjuuri',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Kurkijoki',
+    lat: '61.407188',
+    long: '29.847207',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_28671',
+    label: 'Kivenkaivanto',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Lumivaara',
+    lat: '61.416124',
+    long: '30.184251',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_30183',
+    label: 'Kivenkolkka',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Metsäpirtti',
+    lat: '60.589715',
+    long: '30.489737',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_26220',
+    label: 'Kivenkorva',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Kesälahti',
+    lat: '61.829013',
+    long: '29.939999',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_14191',
+    label: 'Kivenkorva',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Antrea',
+    lat: '60.875455',
+    long: '29.205412',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_30481',
+    label: 'Kivenkulma',
+    typeLabel: 'Rakennettu kohde',
+    broaderAreaLabel: 'Sortavalan mlk',
+    lat: '61.710203',
+    long: '30.772071',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_38957',
+    label: 'Kivenkulmankoski',
+    typeLabel: 'Vesimuodostuma',
+    broaderAreaLabel: 'Salmi',
+    lat: '61.550062',
+    long: '31.633363',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_14',
+    label: 'Kivennapa',
+    typeLabel: 'Kirkonkylä , kaupunki',
+    broaderAreaLabel: 'Kivennapa',
+    lat: '60.348002',
+    long: '29.72542',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_9242',
+    label: 'Kivennavanmäki',
+    typeLabel: 'Maastokohde',
+    broaderAreaLabel: 'Impilahti',
+    lat: '61.623947',
+    long: '31.448691',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/karelian_places/k_place_10136',
+    label: 'Kivennavansaari',
+    typeLabel: 'Maastokohde',
+    broaderAreaLabel: 'Äyräpää',
+    lat: '60.741968',
+    long: '29.428721',
+    source: 'KMN' },
+  { s: 'http://ldf.fi/warsa/places/municipalities/m_place_568',
+    label: 'Kivennapa',
+    typeLabel: 'Kunta',
+    broaderAreaLabel: 'Viipurin lääni',
+    lat: '60.365334',
+    long: '29.820196',
+    source: 'FWM' } ]
 };
 
 const search = (state = INITIAL_STATE, action) => {
@@ -29,7 +231,7 @@ const search = (state = INITIAL_STATE, action) => {
     case UPDATE_RESULTS:
       return {
         ...state,
-        suggestions: [], 
+        suggestions: [],
         results: results(state.results, action)
 
       };
-- 
GitLab