|
|
@@ -14,18 +14,29 @@ export default class PageRevisionList extends React.Component {
|
|
|
};
|
|
|
}
|
|
|
|
|
|
- renderRow(revision, previousRevision) {
|
|
|
+ /**
|
|
|
+ * render a row (Revision component and RevisionDiff component)
|
|
|
+ * @param {Revison} revision
|
|
|
+ * @param {Revision} previousRevision
|
|
|
+ * @param {boolean} hasDiff whether revision has difference to previousRevision
|
|
|
+ * @param {boolean} isContiguousNodiff true if the current 'hasDiff' and one of previous row is both false
|
|
|
+ */
|
|
|
+ renderRow(revision, previousRevision, hasDiff, isContiguousNodiff) {
|
|
|
const revisionId = revision._id;
|
|
|
const revisionDiffOpened = this.props.diffOpened[revisionId] || false;
|
|
|
|
|
|
- const hasDiff = revision.hasDiffToPrev !== false; // set 'true' if undefined for backward compatibility
|
|
|
+ const classNames = ['revision-history-outer'];
|
|
|
+ if (isContiguousNodiff) {
|
|
|
+ classNames.push('revision-history-outer-contiguous-nodiff');
|
|
|
+ }
|
|
|
|
|
|
return (
|
|
|
- <div className="revision-history-outer pt-3" key={`revision-history-${revisionId}`}>
|
|
|
+ <div className={classNames.join(' ')} key={`revision-history-${revisionId}`}>
|
|
|
<Revision
|
|
|
revision={revision}
|
|
|
revisionDiffOpened={revisionDiffOpened}
|
|
|
hasDiff={hasDiff}
|
|
|
+ showNodiffRevisions={this.state.showNodiffRevisions}
|
|
|
onDiffOpenClicked={this.props.onDiffOpenClicked}
|
|
|
key={`revision-history-rev-${revisionId}`}
|
|
|
/>
|
|
|
@@ -45,6 +56,8 @@ export default class PageRevisionList extends React.Component {
|
|
|
const revisions = this.props.revisions,
|
|
|
revisionCount = this.props.revisions.length;
|
|
|
|
|
|
+ let hasDiffPrev;
|
|
|
+
|
|
|
const revisionList = this.props.revisions.map((revision, idx) => {
|
|
|
let previousRevision;
|
|
|
if (idx+1 < revisionCount) {
|
|
|
@@ -54,7 +67,12 @@ export default class PageRevisionList extends React.Component {
|
|
|
previousRevision = revision; // if it is the first revision, show full text as diff text
|
|
|
}
|
|
|
|
|
|
- return this.renderRow(revision, previousRevision);
|
|
|
+ const hasDiff = revision.hasDiffToPrev !== false; // set 'true' if undefined for backward compatibility
|
|
|
+ const isContiguousNodiff = !hasDiff && !hasDiffPrev;
|
|
|
+
|
|
|
+ hasDiffPrev = hasDiff;
|
|
|
+
|
|
|
+ return this.renderRow(revision, previousRevision, hasDiff, isContiguousNodiff);
|
|
|
});
|
|
|
|
|
|
return (
|