From d063acece5ca6fe4d9d0cc391c8fe812d7f3ff17 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E5=81=A5=E8=BE=89?=
<40563566+WangJianhui666@users.noreply.github.com>
Date: Thu, 28 Feb 2019 18:09:21 +0800
Subject: [PATCH] repair activity icon (#3015)
---
frontend/src/css/files-activities.css | 4 +-
.../src/pages/dashboard/files-activities.js | 366 +++++++++---------
2 files changed, 193 insertions(+), 177 deletions(-)
diff --git a/frontend/src/css/files-activities.css b/frontend/src/css/files-activities.css
index cbc82c350d..b83fddccdb 100644
--- a/frontend/src/css/files-activities.css
+++ b/frontend/src/css/files-activities.css
@@ -1,6 +1,6 @@
table tr .activity-date {
border-top: 0;
}
-table td .created-files-detail {
- display: inline-block;
+table td .activity-detail {
+ display: inline;
}
\ No newline at end of file
diff --git a/frontend/src/pages/dashboard/files-activities.js b/frontend/src/pages/dashboard/files-activities.js
index ef023446f5..c2ff6a3c0b 100644
--- a/frontend/src/pages/dashboard/files-activities.js
+++ b/frontend/src/pages/dashboard/files-activities.js
@@ -31,7 +31,18 @@ class FileActivitiesContent extends Component {
-
+
+ {items.map((item, index) => {
+ return (
+
+ );
+ })}
+
{isLoadingMore ? : ''}
@@ -41,205 +52,210 @@ class FileActivitiesContent extends Component {
FileActivitiesContent.propTypes = contentPropTypes;
-
-const tablePropTypes = {
+const activityPropTypes = {
+ item: PropTypes.object.isRequired,
+ index: PropTypes.number.isRequired,
items: PropTypes.array.isRequired,
};
-class TableBody extends Component {
+class ActivityItem extends Component {
constructor(props) {
super(props);
this.state = {
isListCreatedFiles: false,
- activity: '',
+ active: false,
};
}
- onListCreatedFilesToggle = (activity) => {
+ onMouseEnter = () => {
+ this.setState({
+ active: true
+ });
+ }
+
+ onMouseLeave = () => {
+ this.setState({
+ active: false
+ });
+ }
+
+ onListCreatedFilesToggle = () => {
this.setState({
isListCreatedFiles: !this.state.isListCreatedFiles,
- activity: activity,
});
}
render() {
- let listFilesActivities = this.props.items.map(function(item, index) {
- let op, details;
- let userProfileURL = `${siteRoot}profile/${encodeURIComponent(item.author_email)}/`;
+ let {item, index, items} = this.props;
+ let op, details;
+ let userProfileURL = `${siteRoot}profile/${encodeURIComponent(item.author_email)}/`;
- let libURL = siteRoot + 'library/' + item.repo_id + '/' + encodeURIComponent(item.repo_name) + '/';
- let libLink = {item.repo_name} ;
- let smallLibLink = {item.repo_name} ;
+ let libURL = siteRoot + 'library/' + item.repo_id + '/' + encodeURIComponent(item.repo_name) + '/';
+ let libLink = {item.repo_name} ;
+ let smallLibLink = {item.repo_name} ;
- if (item.obj_type == 'repo') {
- switch(item.op_type) {
- case 'create':
- op = gettext('Created library');
- details = {libLink} ;
- break;
- case 'rename':
- op = gettext('Renamed library');
- details = {item.old_repo_name} => {libLink} ;
- break;
- case 'delete':
- op = gettext('Deleted library');
- details = {item.repo_name} ;
- break;
- case 'recover':
- op = gettext('Restored library');
- details = {libLink} ;
- break;
- case 'clean-up-trash':
- if (item.days == 0) {
- op = gettext('Removed all items from trash.');
- } else {
- op = gettext('Removed items older than {n} days from trash.').replace('{n}', item.days);
- }
- details = {libLink} ;
- break;
- }
- } else if (item.obj_type == 'review') {
- let fileURL = `${siteRoot}drafts/review/${item.review_id}`;
- let fileLink = {item.name} ;
- switch(item.op_type) {
- case 'open':
- op = gettext('Open review');
- details = {fileLink} {smallLibLink} ;
- break;
- case 'closed':
- op = gettext('Close review');
- details = {fileLink} {smallLibLink} ;
- break;
- case 'finished':
- op = gettext('Publish draft');
- details = {fileLink} {smallLibLink} ;
- break;
- }
- } else if (item.obj_type == 'files') {
- let fileURL = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;
- let fileLink = `${item.name} `;
- let fileCount = item.createdFilesCount - 1;
- let firstLine = gettext('{file} and {n} other files');
- firstLine = firstLine.replace('{file}', fileLink);
- firstLine = firstLine.replace('{n}', fileCount);
- op = gettext('Created {n} files').replace('{n}', item.createdFilesCount);
- details =
-
-
- {' '}
- {smallLibLink}
- ;
- } else if (item.obj_type == 'file') {
- let fileURL = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;
- let fileLink = {item.name} ;
- switch(item.op_type) {
- case 'create':
- if (item.name.endsWith('(draft).md')) {
- op = gettext('Created draft');
- details = {fileLink} {smallLibLink} ;
- break;
- }
- op = gettext('Created file');
- details = {fileLink} {smallLibLink} ;
- break;
- case 'delete':
- if (item.name.endsWith('(draft).md')) {
- op = gettext('Deleted draft');
- details = {item.name} {smallLibLink} ;
- break;
- }
- op = gettext('Deleted file');
- details = {item.name} {smallLibLink} ;
- break;
- case 'recover':
- op = gettext('Restored file');
- details = {fileLink} {smallLibLink} ;
- break;
- case 'rename':
- op = gettext('Renamed file');
- details = {item.old_name} => {fileLink} {smallLibLink} ;
- break;
- case 'move':
- var filePathLink = {item.path} ;
- op = gettext('Moved file');
- details = {item.old_path} => {filePathLink} {smallLibLink} ;
- break;
- case 'edit': // update
- if (item.name.endsWith('(draft).md')) {
- op = gettext('Updated draft');
- details = {fileLink} {smallLibLink} ;
- break;
- }
- op = gettext('Updated file');
- details = {fileLink} {smallLibLink} ;
- break;
- }
- } else { // dir
- let dirURL = siteRoot + 'library/' + item.repo_id + '/' + encodeURIComponent(item.repo_name) + Utils.encodePath(item.path);
- let dirLink = {item.name} ;
- switch(item.op_type) {
- case 'create':
- op = gettext('Created folder');
- details = {dirLink} {smallLibLink} ;
- break;
- case 'delete':
- op = gettext('Deleted folder');
- details = {item.name} {smallLibLink} ;
- break;
- case 'recover':
- op = gettext('Restored folder');
- details = {dirLink} {smallLibLink} ;
- break;
- case 'rename':
- op = gettext('Renamed folder');
- details = {item.old_name} => {dirLink} {smallLibLink} ;
- break;
- case 'move':
- var dirPathLink = {item.path} ;
- op = gettext('Moved folder');
- details = {item.old_path} => {dirPathLink} {smallLibLink} ;
- break;
- }
- }
-
- let isShowDate = true;
- if (index > 0) {
- let lastEventTime = this.props.items[index - 1].time;
- isShowDate = moment(item.time).isSame(lastEventTime, 'day') ? false : true;
- }
-
- return (
-
- { isShowDate &&
-
- {moment(item.time).format('YYYY-MM-DD')}
-
+ if (item.obj_type == 'repo') {
+ switch(item.op_type) {
+ case 'create':
+ op = gettext('Created library');
+ details = {libLink} ;
+ break;
+ case 'rename':
+ op = gettext('Renamed library');
+ details = {item.old_repo_name} => {libLink} ;
+ break;
+ case 'delete':
+ op = gettext('Deleted library');
+ details = {item.repo_name} ;
+ break;
+ case 'recover':
+ op = gettext('Restored library');
+ details = {libLink} ;
+ break;
+ case 'clean-up-trash':
+ if (item.days == 0) {
+ op = gettext('Removed all items from trash.');
+ } else {
+ op = gettext('Removed items older than {n} days from trash.').replace('{n}', item.days);
}
-
-
-
-
-
- {item.author_name}
-
- {op}
- {details}
-
- {moment(item.time).fromNow()}
-
-
-
- );
- }, this);
+ details = {libLink} ;
+ break;
+ }
+ } else if (item.obj_type == 'review') {
+ let fileURL = `${siteRoot}drafts/review/${item.review_id}`;
+ let fileLink = {item.name} ;
+ switch(item.op_type) {
+ case 'open':
+ op = gettext('Open review');
+ details = {fileLink} {smallLibLink} ;
+ break;
+ case 'closed':
+ op = gettext('Close review');
+ details = {fileLink} {smallLibLink} ;
+ break;
+ case 'finished':
+ op = gettext('Publish draft');
+ details = {fileLink} {smallLibLink} ;
+ break;
+ }
+ } else if (item.obj_type == 'files') {
+ let fileURL = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;
+ let fileLink = `${item.name} `;
+ let fileCount = item.createdFilesCount - 1;
+ let firstLine = gettext('{file} and {n} other files');
+ firstLine = firstLine.replace('{file}', fileLink);
+ firstLine = firstLine.replace('{n}', fileCount);
+ op = gettext('Created {n} files').replace('{n}', item.createdFilesCount);
+ details =
+
+
{' '}
+ {this.state.active && }
+ {smallLibLink}
+ ;
+ } else if (item.obj_type == 'file') {
+ let fileURL = `${siteRoot}lib/${item.repo_id}/file${Utils.encodePath(item.path)}`;
+ let fileLink = {item.name} ;
+ switch(item.op_type) {
+ case 'create':
+ if (item.name.endsWith('(draft).md')) {
+ op = gettext('Created draft');
+ details = {fileLink} {smallLibLink} ;
+ break;
+ }
+ op = gettext('Created file');
+ details = {fileLink} {smallLibLink} ;
+ break;
+ case 'delete':
+ if (item.name.endsWith('(draft).md')) {
+ op = gettext('Deleted draft');
+ details = {item.name} {smallLibLink} ;
+ break;
+ }
+ op = gettext('Deleted file');
+ details = {item.name} {smallLibLink} ;
+ break;
+ case 'recover':
+ op = gettext('Restored file');
+ details = {fileLink} {smallLibLink} ;
+ break;
+ case 'rename':
+ op = gettext('Renamed file');
+ details = {item.old_name} => {fileLink} {smallLibLink} ;
+ break;
+ case 'move':
+ var filePathLink = {item.path} ;
+ op = gettext('Moved file');
+ details = {item.old_path} => {filePathLink} {smallLibLink} ;
+ break;
+ case 'edit': // update
+ if (item.name.endsWith('(draft).md')) {
+ op = gettext('Updated draft');
+ details = {fileLink} {smallLibLink} ;
+ break;
+ }
+ op = gettext('Updated file');
+ details = {fileLink} {smallLibLink} ;
+ break;
+ }
+ } else { // dir
+ let dirURL = siteRoot + 'library/' + item.repo_id + '/' + encodeURIComponent(item.repo_name) + Utils.encodePath(item.path);
+ let dirLink = {item.name} ;
+ switch(item.op_type) {
+ case 'create':
+ op = gettext('Created folder');
+ details = {dirLink} {smallLibLink} ;
+ break;
+ case 'delete':
+ op = gettext('Deleted folder');
+ details = {item.name} {smallLibLink} ;
+ break;
+ case 'recover':
+ op = gettext('Restored folder');
+ details = {dirLink} {smallLibLink} ;
+ break;
+ case 'rename':
+ op = gettext('Renamed folder');
+ details = {item.old_name} => {dirLink} {smallLibLink} ;
+ break;
+ case 'move':
+ var dirPathLink = {item.path} ;
+ op = gettext('Moved folder');
+ details = {item.old_path} => {dirPathLink} {smallLibLink} ;
+ break;
+ }
+ }
+
+ let isShowDate = true;
+ if (index > 0) {
+ let lastEventTime = items[index - 1].time;
+ isShowDate = moment(item.time).isSame(lastEventTime, 'day') ? false : true;
+ }
return (
- {listFilesActivities}
+ { isShowDate &&
+
+ {moment(item.time).format('YYYY-MM-DD')}
+
+ }
+
+
+
+
+
+ {item.author_name}
+
+ {op}
+ {details}
+
+ {moment(item.time).fromNow()}
+
+
{this.state.isListCreatedFiles &&
@@ -249,7 +265,7 @@ class TableBody extends Component {
}
}
-TableBody.propTypes = tablePropTypes;
+ActivityItem.propTypes = activityPropTypes;
class FilesActivities extends Component {
constructor(props) {