summaryrefslogtreecommitdiff
path: root/src/components/projects
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/projects')
-rw-r--r--src/components/projects/ProjectActionButtons.js24
-rw-r--r--src/components/projects/ProjectAuth.js2
-rw-r--r--src/components/projects/ProjectAuthList.js33
-rw-r--r--src/components/projects/ProjectAuthList.sass87
4 files changed, 89 insertions, 57 deletions
diff --git a/src/components/projects/ProjectActionButtons.js b/src/components/projects/ProjectActionButtons.js
new file mode 100644
index 00000000..085438d8
--- /dev/null
+++ b/src/components/projects/ProjectActionButtons.js
@@ -0,0 +1,24 @@
+import PropTypes from "prop-types";
+import React from 'react';
+
+const ProjectActionButtons = ({onOpen, onViewUsers, onDelete}) => (
+ <div className="project-icons">
+ <div className="open" title="Open this project" onClick={onOpen}>
+ <span className="fa fa-play"/>
+ </div>
+ <div className="users" title="View and edit collaborators on this project" onClick={onViewUsers}>
+ <span className="fa fa-users"/>
+ </div>
+ <div className="delete" title="Delete this project" onClick={onDelete}>
+ <span className="fa fa-trash"/>
+ </div>
+ </div>
+);
+
+ProjectActionButtons.propTypes = {
+ onOpen: PropTypes.func.isRequired,
+ onViewUsers: PropTypes.func.isRequired,
+ onDelete: PropTypes.func.isRequired,
+};
+
+export default ProjectActionButtons;
diff --git a/src/components/projects/ProjectAuth.js b/src/components/projects/ProjectAuth.js
index 7e3abae1..e58ac92b 100644
--- a/src/components/projects/ProjectAuth.js
+++ b/src/components/projects/ProjectAuth.js
@@ -1,5 +1,6 @@
import classNames from 'classnames';
import React from 'react';
+import ProjectActions from "../../containers/projects/ProjectActions";
import Shapes from "../../shapes/index";
import {AUTH_DESCRIPTION_MAP, AUTH_ICON_MAP} from "../../util/authorizations";
import {parseAndFormatDateTime} from "../../util/date-time";
@@ -12,6 +13,7 @@ const ProjectAuth = ({projectAuth}) => (
<span className={classNames("fa", "fa-" + AUTH_ICON_MAP[projectAuth.authorizationLevel])}/>
{AUTH_DESCRIPTION_MAP[projectAuth.authorizationLevel]}
</div>
+ <ProjectActions/>
</div>
);
diff --git a/src/components/projects/ProjectAuthList.js b/src/components/projects/ProjectAuthList.js
index 093b3279..217a8375 100644
--- a/src/components/projects/ProjectAuthList.js
+++ b/src/components/projects/ProjectAuthList.js
@@ -5,23 +5,26 @@ import NoProjectsAlert from "./NoProjectsAlert";
import ProjectAuth from "./ProjectAuth";
import "./ProjectAuthList.css";
-const ProjectAuthList = ({authorizations, onProjectClick}) => (
- <div className="project-list">
- <div className="list-head">
- <div>Project name</div>
- <div>Last edited</div>
- <div>Access rights</div>
- </div>
- <div className="list-body">
- {authorizations.length === 0 ?
- <NoProjectsAlert/> :
- authorizations.map(authorization => (
+const ProjectAuthList = ({authorizations}) => {
+ if (authorizations.length === 0) {
+ return <NoProjectsAlert/>;
+ }
+
+ return (
+ <div className="project-list">
+ <div className="list-head">
+ <div>Project name</div>
+ <div>Last edited</div>
+ <div>Access rights</div>
+ </div>
+ <div className="list-body">
+ {authorizations.map(authorization => (
<ProjectAuth projectAuth={authorization} key={authorization.simulation.id}/>
- ))
- }
+ ))}
+ </div>
</div>
- </div>
-);
+ );
+};
ProjectAuthList.propTypes = {
authorizations: PropTypes.arrayOf(Shapes.Authorization).isRequired,
diff --git a/src/components/projects/ProjectAuthList.sass b/src/components/projects/ProjectAuthList.sass
index 86e1123c..1c65305e 100644
--- a/src/components/projects/ProjectAuthList.sass
+++ b/src/components/projects/ProjectAuthList.sass
@@ -28,25 +28,19 @@
line-height: 40px
clear: both
- +transition(background, $transition-length)
- +clickable
-
-.project-row:hover
- background: #fff
-
-.project-row:active
- background: #cccccc
-
.project-row:not(:first-of-type)
margin-top: -1px
// Sizing of table columns
.project-row, .project-list .list-head
div:first-of-type
- width: 50%
+ width: 40%
div:nth-of-type(2)
- width: 30%
+ width: 20%
+
+ div:nth-of-type(3)
+ width: 20%
div:last-of-type
width: 20%
@@ -54,45 +48,54 @@
span
margin-right: 10px
-.project-row.active
- border-bottom: 0
- background: #3442b1
- color: #eee
+.project-row .project-icons div
+ display: inline
+ position: relative
+ top: 5px
+ width: 30px
+ height: 30px
+ margin-right: 5px
+ font-size: 12pt
+ color: white
+ +border-radius(100%)
+ +clickable
+ +transition(background, $transition-length)
-.project-view
- padding: 10px
- overflow: hidden
- border: 1px solid #b6b6b6
- border-top: 0
+ span
+ position: relative
+ top: -4px
+ left: -1px
- background: #3442b1
- color: #eee
+ &.open
+ $icon-color: #0c60bf
+ background: $icon-color
- .participants
- display: inline-block
- float: left
+ &:hover
+ background: lighten($icon-color, 10%)
- .access-buttons
- display: inline-block
- float: right
+ &:active
+ background: darken($icon-color, 10%)
- .inline-btn
- margin-left: 10px
+ &.users
+ font-size: 10pt
+ $icon-color: #17bf55
+ background: $icon-color
- .open
- background: #e38829
+ span
+ left: -2px
- .open:hover
- background: #ff992e
+ &:hover
+ background: lighten($icon-color, 10%)
- .open:active
- background: #ba6f21
+ &:active
+ background: darken($icon-color, 10%)
- .edit
- background: #2c3897
+ &.delete
+ $icon-color: #e3474d
+ background: $icon-color
- .edit:hover
- background: #3a4ac8
+ &:hover
+ background: lighten($icon-color, 10%)
- .edit:active
- background: #242d7a
+ &:active
+ background: darken($icon-color, 10%)