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} - - - - - - ); - }, 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} + + + + {this.state.isListCreatedFiles && @@ -249,7 +265,7 @@ class TableBody extends Component { } } -TableBody.propTypes = tablePropTypes; +ActivityItem.propTypes = activityPropTypes; class FilesActivities extends Component { constructor(props) {