Revision.js 1.5 KB

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