PageRevisionList.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. onDiffOpenClicked={this.props.onDiffOpenClicked}
  23. key={"revision-history-rev-" + revisionId}
  24. />
  25. <RevisionDiff
  26. revisionDiffOpened={revisionDiffOpened}
  27. currentRevision={revision}
  28. previousRevision={previousRevision}
  29. key={"revision-diff-" + revisionId}
  30. />
  31. </div>
  32. );
  33. });
  34. return (
  35. <div className="revision-history-list">
  36. {revisionList}
  37. </div>
  38. );
  39. }
  40. }
  41. PageRevisionList.propTypes = {
  42. revisions: PropTypes.array,
  43. diffOpened: PropTypes.object,
  44. onDiffOpenClicked: PropTypes.func.isRequired,
  45. }