Skip to content
Snippets Groups Projects
MapApp.js 4.74 KiB
Newer Older
import React from 'react';
import PropTypes from 'prop-types';
import { connect } from 'react-redux';
import { withStyles } from '@material-ui/core/styles';
import withWidth from '@material-ui/core/withWidth';
import { withRouter } from 'react-router-dom';
import compose from 'recompose/compose';
import Paper from '@material-ui/core/Paper';
import TopBar from '../components/TopBar';
esikkala's avatar
esikkala committed
import { Route } from 'react-router-dom';
import Manuscripts from '../components/Manuscripts';
import Main from '../components/Main';
  fetchManuscripts,
  fetchPlaces,
  fetchPlace,
esikkala's avatar
esikkala committed
  updateFilter,
Esko Ikkala's avatar
Esko Ikkala committed
const logoPadding = 50;
const logoHeight = 52;

const styles = theme => ({
  root: {
    flexGrow: 1,
    height: '100%',
  },
Esko Ikkala's avatar
Esko Ikkala committed
  flex: {
    flexGrow: 1,
Esko Ikkala's avatar
Esko Ikkala committed
  appFrame: {
    height: '100%',
    zIndex: 1,
Esko Ikkala's avatar
Esko Ikkala committed
    overflow: 'hidden',
Esko Ikkala's avatar
Esko Ikkala committed
    position: 'relative',
Esko Ikkala's avatar
Esko Ikkala committed
    width: '100%',
    minWidth: 300,
    //minHeight: 700
Esko Ikkala's avatar
Esko Ikkala committed
  mainContainer: {
    display: 'flex',
    width: '100%',
Esko Ikkala's avatar
Esko Ikkala committed
    marginTop: 64,
    height: 'calc(100% - 128px)',
    [theme.breakpoints.down(600)]: {
      marginTop: 56,
      height: 'calc(100% - 122px)',
    },
    borderRight: '4px solid' + theme.palette.primary.main,
    borderLeft: '4px solid' + theme.palette.primary.main,
    backgroundColor: 'rgb(238, 238, 238)'
  footer: {
    position: 'absolute',
    borderTop: '4px solid' + theme.palette.primary.main,
    display: 'flex',
    alignItems: 'center',
    justifyContent: 'center',
    bottom: 0,
    width: '100%',
    height: 64,
    background: theme.palette.primary.main,
    borderRadius: 0,
  },
Esko Ikkala's avatar
Esko Ikkala committed
  oxfordLogo: {
Esko Ikkala's avatar
Esko Ikkala committed
    height: logoHeight
  },
  pennLogo: {
    paddingLeft: logoPadding,
    height: logoHeight - 8
  },
Esko Ikkala's avatar
Esko Ikkala committed
  cnrsLogo: {
Esko Ikkala's avatar
Esko Ikkala committed
    paddingLeft: logoPadding,
    height: logoHeight
Esko Ikkala's avatar
Esko Ikkala committed
  aaltoLogo: {
Esko Ikkala's avatar
Esko Ikkala committed
    paddingLeft: logoPadding,
    height: logoHeight - 10
  const { classes, facet, map, search } = props;
esikkala's avatar
esikkala committed
  // console.log(props.facet)

  return (
    <div className={classes.root}>
      <div className={classes.appFrame}>
        <div className={classes.mainContainer}>
          <Route
            exact path="/"
            component={Main}
          />
          <Route
            path="/manuscripts"
            render={() =>
              <Manuscripts
                facet={facet}
                map={map}
                search={search}
                fetchManuscripts={props.fetchManuscripts}
                fetchPlaces={props.fetchPlaces}
                fetchPlace={props.fetchPlace}
                fetchFacet={props.fetchFacet}
                fetchResults={props.fetchResults}
esikkala's avatar
esikkala committed
                updateFilter={props.updateFilter}
                match={props.match}
              />}
          />
        <Paper className={classes.footer}>
          <img className={classes.oxfordLogo} src='img/logos/oxford-logo-white.png' alt='Oxford University logo'/>
Esko Ikkala's avatar
Esko Ikkala committed
          <img className={classes.pennLogo} src='img/logos/penn-logo-white.png' alt='Oxford University logo'/>
Esko Ikkala's avatar
Esko Ikkala committed
          <img className={classes.cnrsLogo} src='img/logos/cnrs-logo-white-small.png' alt='CNRS logo'/>
          <img className={classes.aaltoLogo} src='img/logos/aalto-logo-white-no-background-small.png' alt='Aalto University logo'/>
// <img className={classes.secoLogo} src='img/logos/seco-logo-white-no-background-small.png' alt='SeCo logo'/>
Esko Ikkala's avatar
Esko Ikkala committed
// <img className={classes.heldigLogo} src='img/logos/heldig-logo-small.png' alt='HELDIG logo'/>
// <img className={classes.uhLogo} src='img/logos/university-of-helsinki-logo-white-no-background-small.png' alt='University of Helsinki logo'/>
const mapStateToProps = (state) => {
  return {
    map: state.map,
    search: state.search,
    //browser: state.browser,

const mapDispatchToProps = ({
  fetchManuscripts,
  fetchPlaces,
  fetchPlace,
esikkala's avatar
esikkala committed
  fetchResults,
  updateFilter,
});

MapApp.propTypes = {
  classes: PropTypes.object.isRequired,
  theme: PropTypes.object.isRequired,
  // error: PropTypes.object.isRequired,
  // browser: PropTypes.object.isRequired,
  facet: PropTypes.object.isRequired,
  map: PropTypes.object.isRequired,
  search: PropTypes.object.isRequired,
  fetchManuscripts: PropTypes.func.isRequired,
  fetchPlaces: PropTypes.func.isRequired,
  fetchPlace:  PropTypes.func.isRequired,
  fetchFacet: PropTypes.func.isRequired,
esikkala's avatar
esikkala committed
  fetchResults: PropTypes.func.isRequired,
esikkala's avatar
esikkala committed
  updateFilter: PropTypes.func.isRequired,
esikkala's avatar
esikkala committed
  match: PropTypes.object.isRequired
  connect(
    mapStateToProps,
    mapDispatchToProps
  ),
  withWidth(),
  withStyles(styles, {withTheme: true}),
)(MapApp);