Revision.jsx 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import React from 'react';
  2. import { UserPicture } from '@growi/ui';
  3. import PropTypes from 'prop-types';
  4. import UserDate from '../User/UserDate';
  5. import Username from '../User/Username';
  6. export default class Revision extends React.Component {
  7. componentDidMount() {
  8. }
  9. renderSimplifiedNodiff(revision) {
  10. const { t } = this.props;
  11. const author = revision.author;
  12. let pic = '';
  13. if (typeof author === 'object') {
  14. pic = <UserPicture user={author} size="sm" />;
  15. }
  16. return (
  17. <div className="revision-history-main revision-history-main-nodiff my-1 d-flex align-items-center">
  18. <div className="picture-container">
  19. {pic}
  20. </div>
  21. <div className="ml-3">
  22. <span className="text-muted small">
  23. <UserDate dateTime={revision.createdAt} /> ({ t('No diff') })
  24. </span>
  25. </div>
  26. </div>
  27. );
  28. }
  29. renderFull(revision) {
  30. const { t } = this.props;
  31. const author = revision.author;
  32. let pic = '';
  33. if (typeof author === 'object') {
  34. pic = <UserPicture user={author} size="lg" />;
  35. }
  36. return (
  37. <div className="revision-history-main d-flex">
  38. <div className="picture-container">
  39. {pic}
  40. </div>
  41. <div className="ml-2">
  42. <div className="revision-history-author mb-1">
  43. <strong><Username user={author}></Username></strong>
  44. {this.props.isLatestRevision && <span className="badge badge-info ml-2">Latest</span>}
  45. </div>
  46. <div className="mb-1">
  47. <UserDate dateTime={revision.createdAt} />
  48. <br className="d-xl-none d-block" />
  49. <a className="ml-xl-3" href={`?revision=${revision._id}`}>
  50. <i className="icon-login"></i> { t('Go to this version') }
  51. </a>
  52. </div>
  53. </div>
  54. </div>
  55. );
  56. }
  57. render() {
  58. const revision = this.props.revision;
  59. if (!this.props.hasDiff) {
  60. return this.renderSimplifiedNodiff(revision);
  61. }
  62. return this.renderFull(revision);
  63. }
  64. }
  65. Revision.propTypes = {
  66. t: PropTypes.func.isRequired, // i18next
  67. revision: PropTypes.object,
  68. isLatestRevision: PropTypes.bool.isRequired,
  69. hasDiff: PropTypes.bool.isRequired,
  70. };