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, [