From e3fba9a5383ee0799a97faf588b5b821553d3f13 Mon Sep 17 00:00:00 2001
From: Bogdan Cochior <bogdan.cochior@thinslices.com>
Date: Fri, 9 Feb 2018 16:39:45 +0200
Subject: [PATCH] WIP: Add temporary view abstract

---
 .../src/components/Dashboard/Dashboard.js     | 15 ++++++++-
 .../components/Dashboard/Dashboard.local.scss | 33 +++++++++++++++++++
 .../src/components/Dashboard/DashboardCard.js | 16 +++++++--
 .../src/components/Dashboard/DashboardPage.js | 17 +++++++++-
 4 files changed, 77 insertions(+), 4 deletions(-)

diff --git a/packages/components-faraday/src/components/Dashboard/Dashboard.js b/packages/components-faraday/src/components/Dashboard/Dashboard.js
index 36429611c..29ba564fd 100644
--- a/packages/components-faraday/src/components/Dashboard/Dashboard.js
+++ b/packages/components-faraday/src/components/Dashboard/Dashboard.js
@@ -1,5 +1,5 @@
 import React from 'react'
-import { get } from 'lodash'
+import { get, isEmpty } from 'lodash'
 import { Button } from '@pubsweet/ui'
 import { connect } from 'react-redux'
 import { compose, withHandlers } from 'recompose'
@@ -21,6 +21,8 @@ const Dashboard = ({
   changeFilterValue,
   filterValues,
   filterItems,
+  abstractModal,
+  setModal,
   ...rest
 }) => (
   <div className={classes.root}>
@@ -41,6 +43,17 @@ const Dashboard = ({
       list={getItems()}
       listView={listView}
     />
+    {!isEmpty(abstractModal) && (
+      <div className={classes.modal}>
+        <div className={classes.modalContent}>
+          <div
+            className={classes.modalText}
+            dangerouslySetInnerHTML={{ __html: abstractModal }} // eslint-disable-line
+          />
+          <Button onClick={setModal()}>Close</Button>
+        </div>
+      </div>
+    )}
   </div>
 )
 
diff --git a/packages/components-faraday/src/components/Dashboard/Dashboard.local.scss b/packages/components-faraday/src/components/Dashboard/Dashboard.local.scss
index c4b717e21..5a2dc6819 100644
--- a/packages/components-faraday/src/components/Dashboard/Dashboard.local.scss
+++ b/packages/components-faraday/src/components/Dashboard/Dashboard.local.scss
@@ -150,3 +150,36 @@
 .version {
   margin-left: 1em;
 }
+
+.modal {
+  align-items: center;
+  background: rgba(255, 255, 255, 0.95);
+  bottom: 0;
+  display: flex;
+  justify-content: center;
+  left: 0;
+  position: fixed;
+  right: 0;
+  top: 0;
+}
+
+.modalContent {
+  border: 1px solid var(--color-primary);
+  height: 50vw;
+  margin: 0 auto;
+  padding: 20px;
+  position: relative;
+  width: 50vw;
+
+  .modalText {
+    height: calc(100% - 60px);
+    overflow-y: scroll;
+    padding-right: 10px;
+  }
+
+  button {
+    bottom: 20px;
+    position: absolute;
+    right: 20px;
+  }
+}
diff --git a/packages/components-faraday/src/components/Dashboard/DashboardCard.js b/packages/components-faraday/src/components/Dashboard/DashboardCard.js
index 792a4113b..970ce57a3 100644
--- a/packages/components-faraday/src/components/Dashboard/DashboardCard.js
+++ b/packages/components-faraday/src/components/Dashboard/DashboardCard.js
@@ -1,7 +1,9 @@
 import React from 'react'
+import PropTypes from 'prop-types'
 import { get, isEmpty } from 'lodash'
 import classnames from 'classnames'
 import { Button, Icon } from '@pubsweet/ui'
+import { compose, getContext } from 'recompose'
 
 import { parseVersion, getFilesURL, downloadAll } from './utils'
 import classes from './Dashboard.local.scss'
@@ -12,6 +14,7 @@ const DashboardCard = ({
   listView,
   project,
   version,
+  setModal,
 }) => {
   const { submitted, author, title, type, version: vers } = parseVersion(
     version,
@@ -19,6 +22,7 @@ const DashboardCard = ({
   const files = getFilesURL(get(version, 'files'))
   const status = get(project, 'status') || 'Draft'
   const hasFiles = !isEmpty(files)
+  const abstract = get(version, 'metadata.abstract')
 
   return (
     <div className={classes.card}>
@@ -68,7 +72,11 @@ const DashboardCard = ({
             </div>
             <div className={classes.column2}>
               <div>{author}</div>
-              <a>View</a>
+              {abstract && (
+                <a href="#" onClick={setModal(abstract)}>
+                  view
+                </a>
+              )}
             </div>
           </div>
           <div className={classes.column3}>
@@ -103,4 +111,8 @@ const DashboardCard = ({
   )
 }
 
-export default DashboardCard
+export default compose(
+  getContext({
+    setModal: PropTypes.func,
+  }),
+)(DashboardCard)
diff --git a/packages/components-faraday/src/components/Dashboard/DashboardPage.js b/packages/components-faraday/src/components/Dashboard/DashboardPage.js
index 3006b1890..36a4a7adf 100644
--- a/packages/components-faraday/src/components/Dashboard/DashboardPage.js
+++ b/packages/components-faraday/src/components/Dashboard/DashboardPage.js
@@ -1,9 +1,10 @@
 import { get } from 'lodash'
+import PropTypes from 'prop-types'
 import { connect } from 'react-redux'
 import { actions } from 'pubsweet-client'
 import { ConnectPage } from 'xpub-connect'
 import { withRouter } from 'react-router-dom'
-import { compose, withState, withHandlers } from 'recompose'
+import { compose, withState, withHandlers, withContext } from 'recompose'
 import { newestFirst, selectCurrentUser } from 'xpub-selectors'
 import { createDraftSubmission } from 'pubsweet-component-wizard/src/redux/conversion'
 
@@ -18,8 +19,12 @@ export default compose(
     actions.getUsers(),
   ]),
   withState('listView', 'changeView', true),
+  withState('abstractModal', 'setAbstractModal', ''),
   withHandlers({
     changeViewMode: ({ changeView }) => () => changeView(listView => !listView),
+    setModal: ({ setAbstractModal }) => abstract => () => {
+      setAbstractModal(abstract)
+    },
   }),
   connect(
     state => {
@@ -88,4 +93,14 @@ export default compose(
       },
     },
   }),
+  withContext(
+    {
+      abstractModal: PropTypes.string,
+      setModal: PropTypes.func,
+    },
+    ({ abstractModal, setModal }) => ({
+      abstractModal,
+      setModal,
+    }),
+  ),
 )(Dashboard)
-- 
GitLab