PageRevisionList.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. } else {
  16. previousRevision = revision; // if it is the first revision, show full text as diff text
  17. }
  18. return (
  19. <div className="revision-hisory-outer" key={"revision-history-" + revisionId}>
  20. <Revision
  21. revision={revision}
  22. revisionDiffOpened={revisionDiffOpened}
  23. onDiffOpenClicked={this.props.onDiffOpenClicked}
  24. key={"revision-history-rev-" + revisionId}
  25. />
  26. <RevisionDiff
  27. revisionDiffOpened={revisionDiffOpened}
  28. currentRevision={revision}
  29. previousRevision={previousRevision}
  30. key={"revision-diff-" + revisionId}
  31. />
  32. </div>
  33. );
  34. });
  35. return (
  36. <div className="revision-history-list">
  37. {revisionList}
  38. </div>
  39. );
  40. }
  41. }
  42. PageRevisionList.propTypes = {
  43. revisions: PropTypes.array,
  44. diffOpened: PropTypes.object,
  45. onDiffOpenClicked: PropTypes.func.isRequired,
  46. }