PageRevisionList.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import Revision from './Revision';
  4. import RevisionDiff from './RevisionDiff';
  5. export default class PageRevisionList extends React.Component {
  6. render() {
  7. const revisions = this.props.revisions,
  8. revisionCount = this.props.revisions.length;
  9. const revisionList = this.props.revisions.map((revision, idx) => {
  10. const revisionId = revision._id
  11. , revisionDiffOpened = this.props.diffOpened[revisionId] || false;
  12. let previousRevision;
  13. if (idx+1 < revisionCount) {
  14. previousRevision = revisions[idx + 1];
  15. }
  16. else {
  17. previousRevision = revision; // if it is the first revision, show full text as diff text
  18. }
  19. return (
  20. <div className="revision-hisory-outer" key={'revision-history-' + revisionId}>
  21. <Revision
  22. revision={revision}
  23. revisionDiffOpened={revisionDiffOpened}
  24. onDiffOpenClicked={this.props.onDiffOpenClicked}
  25. key={'revision-history-rev-' + revisionId}
  26. />
  27. <RevisionDiff
  28. revisionDiffOpened={revisionDiffOpened}
  29. currentRevision={revision}
  30. previousRevision={previousRevision}
  31. key={'revision-diff-' + revisionId}
  32. />
  33. </div>
  34. );
  35. });
  36. return (
  37. <div className="revision-history-list">
  38. {revisionList}
  39. </div>
  40. );
  41. }
  42. }
  43. PageRevisionList.propTypes = {
  44. revisions: PropTypes.array,
  45. diffOpened: PropTypes.object,
  46. onDiffOpenClicked: PropTypes.func.isRequired,
  47. };