Revision.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import UserDate from '../Common/UserDate';
  4. import UserPicture from '../User/UserPicture';
  5. export default class Revision extends React.Component {
  6. constructor(props) {
  7. super(props);
  8. this._onDiffOpenClicked = this._onDiffOpenClicked.bind(this);
  9. }
  10. componentDidMount() {
  11. }
  12. _onDiffOpenClicked() {
  13. this.props.onDiffOpenClicked(this.props.revision);
  14. }
  15. render() {
  16. const revision = this.props.revision;
  17. const author = revision.author;
  18. let pic = '';
  19. if (typeof author === 'object') {
  20. pic = <UserPicture user={author} />;
  21. }
  22. const iconClass = this.props.revisionDiffOpened ? 'caret caret-opened' : 'caret';
  23. return (
  24. <div className="revision-history-main d-flex">
  25. <div className="m-t-5">
  26. {pic}
  27. </div>
  28. <div className="m-l-10">
  29. <div className="revision-history-author">
  30. <strong>{author.username}</strong>
  31. </div>
  32. <div className="revision-history-meta">
  33. <p>
  34. <UserDate dateTime={revision.createdAt} />
  35. </p>
  36. <p>
  37. <a className="diff-view" onClick={this._onDiffOpenClicked}>
  38. <i className={iconClass}></i> View diff
  39. </a>
  40. <a href={'?revision=' + revision._id } className="m-l-10">
  41. <i className="icon-login"></i> Go to this version
  42. </a>
  43. </p>
  44. </div>
  45. </div>
  46. </div>
  47. );
  48. }
  49. }
  50. Revision.propTypes = {
  51. revision: PropTypes.object,
  52. revisionDiffOpened: PropTypes.bool.isRequired,
  53. onDiffOpenClicked: PropTypes.func.isRequired,
  54. };