PageRevisionList.js 1.5 KB

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