Make GrDiffGroupRange use LineRange
This is to avoid having two very similar but inconsistent range types in
the API.
Change-Id: I14497e6e2cc0d1c519346bf024894dcf9be6eeed
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.ts b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.ts
index d7ddc3f..3afa1e3 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-builder/gr-diff-builder.ts
@@ -182,8 +182,8 @@
let groupEndLine = 0;
if (side) {
const range = rangeBySide(group.lineRange, side);
- groupStartLine = range.start || 0;
- groupEndLine = range.end || 0;
+ groupStartLine = range.start_line;
+ groupEndLine = range.end_line;
}
if (groupStartLine === 0) {
@@ -312,8 +312,9 @@
contextGroups: GrDiffGroup[],
viewMode: DiffViewMode
) {
- const leftStart = contextGroups[0].lineRange.left.start!;
- const leftEnd = contextGroups[contextGroups.length - 1].lineRange.left.end!;
+ const leftStart = contextGroups[0].lineRange.left.start_line;
+ const leftEnd =
+ contextGroups[contextGroups.length - 1].lineRange.left.end_line;
const numLines = leftEnd - leftStart + 1;
if (numLines === 0) console.error('context group without lines');
@@ -493,8 +494,14 @@
const firstRange = groups[0].lineRange;
const lastRange = groups[groups.length - 1].lineRange;
const lineRange = {
- left: {start: firstRange.left.start, end: lastRange.left.end},
- right: {start: firstRange.right.start, end: lastRange.right.end},
+ left: {
+ start_line: firstRange.left.start_line,
+ end_line: lastRange.left.end_line,
+ },
+ right: {
+ start_line: firstRange.right.start_line,
+ end_line: lastRange.right.end_line,
+ },
};
button.dispatchEvent(
new CustomEvent<ContentLoadNeededEventDetail>('content-load-needed', {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.ts b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.ts
index 5a432dd..a0584b6 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor.ts
@@ -371,8 +371,11 @@
group.ignoredWhitespaceOnly = !!chunk.common;
if (chunk.skip) {
group.lineRange = {
- left: {start: offsetLeft, end: offsetLeft + chunk.skip - 1},
- right: {start: offsetRight, end: offsetRight + chunk.skip - 1},
+ left: {start_line: offsetLeft, end_line: offsetLeft + chunk.skip - 1},
+ right: {
+ start_line: offsetRight,
+ end_line: offsetRight + chunk.skip - 1,
+ },
};
}
return group;
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor_test.js b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor_test.js
index 0c3c9bf..f5cbcc0 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-processor/gr-diff-processor_test.js
@@ -202,8 +202,8 @@
const skipGroup = commonGroup.contextGroups[1];
assert.equal(skipGroup.skip, 43900);
const expectedRange = {
- left: {start: 21, end: 43920},
- right: {start: 21, end: 43920},
+ left: {start_line: 21, end_line: 43920},
+ right: {start_line: 21, end_line: 43920},
};
assert.deepEqual(skipGroup.lineRange, expectedRange);
@@ -499,8 +499,8 @@
const skipGroup = commonGroup.contextGroups[1];
assert.equal(skipGroup.skip, 60);
const expectedRange = {
- left: {start: 22, end: 81},
- right: {start: 21, end: 80},
+ left: {start_line: 22, end_line: 81},
+ right: {start_line: 21, end_line: 80},
};
assert.deepEqual(skipGroup.lineRange, expectedRange);
@@ -834,20 +834,26 @@
assert.deepEqual(
skippedGroup.lineRange,
{
- left: {start: lineNums.left + 1, end: lineNums.left + skip},
- right: {start: lineNums.right + 1, end: lineNums.right + skip},
+ left: {
+ start_line: lineNums.left + 1,
+ end_line: lineNums.left + skip,
+ },
+ right: {
+ start_line: lineNums.right + 1,
+ end_line: lineNums.right + skip,
+ },
});
assert.deepEqual(
abGroup.lineRange,
{
left: {
- start: lineNums.left + skip + 1,
- end: lineNums.left + skip + rows.length,
+ start_line: lineNums.left + skip + 1,
+ end_line: lineNums.left + skip + rows.length,
},
right: {
- start: lineNums.right + skip + 1,
- end: lineNums.right + skip + rows.length,
+ start_line: lineNums.right + skip + 1,
+ end_line: lineNums.right + skip + rows.length,
},
});
});
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group.ts b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group.ts
index 11d3ce3..4100b7a 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group.ts
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group.ts
@@ -15,6 +15,7 @@
* limitations under the License.
*/
import {BLANK_LINE, GrDiffLine, GrDiffLineType} from './gr-diff-line';
+import {LineRange} from '../../../api/diff';
import {Side} from '../../../constants/constants';
export enum GrDiffGroupType {
@@ -33,17 +34,12 @@
right: GrDiffLine;
}
-interface Range {
- start: number | null;
- end: number | null;
-}
-
export interface GrDiffGroupRange {
- left: Range;
- right: Range;
+ left: LineRange;
+ right: LineRange;
}
-export function rangeBySide(range: GrDiffGroupRange, side: Side): Range {
+export function rangeBySide(range: GrDiffGroupRange, side: Side): LineRange {
return side === Side.LEFT ? range.left : range.right;
}
@@ -92,8 +88,8 @@
if (hiddenEnd) {
let beforeLength = 0;
if (before.length > 0) {
- const beforeStart = before[0].lineRange.left.start || 0;
- const beforeEnd = before[before.length - 1].lineRange.left.end || 0;
+ const beforeStart = before[0].lineRange.left.start_line;
+ const beforeEnd = before[before.length - 1].lineRange.left.end_line;
beforeLength = beforeEnd - beforeStart + 1;
}
[hidden, after] = _splitCommonGroups(hidden, hiddenEnd - beforeLength);
@@ -137,8 +133,8 @@
// group will in the future mean load more data - and therefore we want to
// fire an event when user wants to do it.
const closerToStartThanEnd =
- leftSplit - (group.lineRange.left.start || 0) <
- (group.lineRange.right.end || 0) - leftSplit;
+ leftSplit - group.lineRange.left.start_line <
+ group.lineRange.right.end_line - leftSplit;
if (closerToStartThanEnd) {
afterSplit = group;
} else {
@@ -191,18 +187,18 @@
split: number
): GrDiffGroup[][] {
if (groups.length === 0) return [[], []];
- const leftSplit = (groups[0].lineRange.left.start || 0) + split;
- const rightSplit = (groups[0].lineRange.right.start || 0) + split;
+ const leftSplit = groups[0].lineRange.left.start_line + split;
+ const rightSplit = groups[0].lineRange.right.start_line + split;
const beforeGroups = [];
const afterGroups = [];
for (const group of groups) {
const isCompletelyBefore =
- (group.lineRange.left.end || 0) < leftSplit ||
- (group.lineRange.right.end || 0) < rightSplit;
+ group.lineRange.left.end_line < leftSplit ||
+ group.lineRange.right.end_line < rightSplit;
const isCompletelyAfter =
- leftSplit <= (group.lineRange.left.start || 0) ||
- rightSplit <= (group.lineRange.right.start || 0);
+ leftSplit <= group.lineRange.left.start_line ||
+ rightSplit <= group.lineRange.right.start_line;
if (isCompletelyBefore) {
beforeGroups.push(group);
} else if (isCompletelyAfter) {
@@ -264,8 +260,8 @@
/** Both start and end line are inclusive. */
lineRange: GrDiffGroupRange = {
- left: {start: null, end: null},
- right: {start: null, end: null},
+ left: {start_line: 0, end_line: 0},
+ right: {start_line: 0, end_line: 0},
};
moveDetails?: {
@@ -344,16 +340,13 @@
if (line.type === GrDiffLineType.ADD || line.type === GrDiffLineType.BOTH) {
if (
- this.lineRange.right.start === null ||
- line.afterNumber < this.lineRange.right.start
+ this.lineRange.right.start_line === 0 ||
+ line.afterNumber < this.lineRange.right.start_line
) {
- this.lineRange.right.start = line.afterNumber;
+ this.lineRange.right.start_line = line.afterNumber;
}
- if (
- this.lineRange.right.end === null ||
- line.afterNumber > this.lineRange.right.end
- ) {
- this.lineRange.right.end = line.afterNumber;
+ if (line.afterNumber > this.lineRange.right.end_line) {
+ this.lineRange.right.end_line = line.afterNumber;
}
}
@@ -362,16 +355,13 @@
line.type === GrDiffLineType.BOTH
) {
if (
- this.lineRange.left.start === null ||
- line.beforeNumber < this.lineRange.left.start
+ this.lineRange.left.start_line === 0 ||
+ line.beforeNumber < this.lineRange.left.start_line
) {
- this.lineRange.left.start = line.beforeNumber;
+ this.lineRange.left.start_line = line.beforeNumber;
}
- if (
- this.lineRange.left.end === null ||
- line.beforeNumber > this.lineRange.left.end
- ) {
- this.lineRange.left.end = line.beforeNumber;
+ if (line.beforeNumber > this.lineRange.left.end_line) {
+ this.lineRange.left.end_line = line.beforeNumber;
}
}
}
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group_test.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group_test.js
index 8182941..4c7d346 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group_test.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff-group_test.js
@@ -32,8 +32,8 @@
assert.deepEqual(group.adds, [l1, l2]);
assert.deepEqual(group.removes, [l3]);
assert.deepEqual(group.lineRange, {
- left: {start: 64, end: 64},
- right: {start: 128, end: 129},
+ left: {start_line: 64, end_line: 64},
+ right: {start_line: 128, end_line: 129},
});
let pairs = group.getSideBySidePairs();
@@ -66,8 +66,8 @@
assert.deepEqual(group.removes, []);
assert.deepEqual(group.lineRange, {
- left: {start: 64, end: 66},
- right: {start: 128, end: 130},
+ left: {start_line: 64, end_line: 66},
+ right: {start_line: 128, end_line: 130},
});
let pairs = group.getSideBySidePairs();
@@ -184,8 +184,8 @@
const skipGroup = new GrDiffGroup(GrDiffGroupType.BOTH);
skipGroup.skip = 60;
skipGroup.lineRange = {
- left: {start: 8, end: 67},
- right: {start: 10, end: 69},
+ left: {start_line: 8, end_line: 67},
+ right: {start_line: 10, end_line: 69},
};
groups = [
new GrDiffGroup(GrDiffGroupType.BOTH, [