mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-09 15:05:44 +01:00
Show number of lines that can be expanded
This commit is contained in:
@@ -309,4 +309,20 @@ describe("diff expander", () => {
|
|||||||
it("should return correct hunk", () => {
|
it("should return correct hunk", () => {
|
||||||
expect(diffExpander.getHunk(1).hunk).toBe(HUNK_1);
|
expect(diffExpander.getHunk(1).hunk).toBe(HUNK_1);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should return max expand head range for first hunk", () => {
|
||||||
|
expect(diffExpander.getHunk(0).maxExpandHeadRange).toBe(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return max expand head range for hunks in the middle", () => {
|
||||||
|
expect(diffExpander.getHunk(1).maxExpandHeadRange).toBe(5);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return max expand bottom range for hunks in the middle", () => {
|
||||||
|
expect(diffExpander.getHunk(1).maxExpandBottomRange).toBe(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should return a really bix number for the expand bottom range of the last hunk", () => {
|
||||||
|
expect(diffExpander.getHunk(3).maxExpandBottomRange).toBeGreaterThan(99999);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -35,15 +35,37 @@ class DiffExpander {
|
|||||||
return this.file.hunks.length;
|
return this.file.hunks.length;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
minLineNumber = (n: number) => {
|
||||||
|
return this.file.hunks[n].newStart;
|
||||||
|
};
|
||||||
|
|
||||||
|
maxLineNumber = (n: number) => {
|
||||||
|
return this.file.hunks[n].newStart + this.file.hunks[n].newLines;
|
||||||
|
};
|
||||||
|
|
||||||
|
computeMaxExpandHeadRange = (n: number) => {
|
||||||
|
if (n === 0) {
|
||||||
|
return this.minLineNumber(n) - 1;
|
||||||
|
}
|
||||||
|
return this.minLineNumber(n) - this.maxLineNumber(n - 1);
|
||||||
|
};
|
||||||
|
|
||||||
|
computeMaxExpandBottomRange = (n: number) => {
|
||||||
|
if (n === this.file.hunks.length - 1) {
|
||||||
|
return Number.MAX_SAFE_INTEGER;
|
||||||
|
}
|
||||||
|
return this.minLineNumber(n + 1) - this.maxLineNumber(n);
|
||||||
|
};
|
||||||
|
|
||||||
getHunk: (n: number) => ExpandableHunk = (n: number) => {
|
getHunk: (n: number) => ExpandableHunk = (n: number) => {
|
||||||
return {
|
return {
|
||||||
maxExpandHeadRange: 10,
|
maxExpandHeadRange: this.computeMaxExpandHeadRange(n),
|
||||||
maxExpandBottomRange: 10,
|
maxExpandBottomRange: this.computeMaxExpandBottomRange(n),
|
||||||
expandHead: () => {
|
expandHead: () => {
|
||||||
console.log("expand head", n);
|
return this;
|
||||||
},
|
},
|
||||||
expandBottom: () => {
|
expandBottom: () => {
|
||||||
console.log("expand bottom", n);
|
return this;
|
||||||
},
|
},
|
||||||
hunk: this.file.hunks[n]
|
hunk: this.file.hunks[n]
|
||||||
};
|
};
|
||||||
@@ -54,8 +76,8 @@ export type ExpandableHunk = {
|
|||||||
hunk: Hunk;
|
hunk: Hunk;
|
||||||
maxExpandHeadRange: number;
|
maxExpandHeadRange: number;
|
||||||
maxExpandBottomRange: number;
|
maxExpandBottomRange: number;
|
||||||
expandHead: () => void;
|
expandHead: () => DiffExpander;
|
||||||
expandBottom: () => void;
|
expandBottom: () => DiffExpander;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default DiffExpander;
|
export default DiffExpander;
|
||||||
|
|||||||
@@ -147,7 +147,9 @@ class DiffFile extends React.Component<Props, State> {
|
|||||||
if (expandableHunk.maxExpandHeadRange > 0) {
|
if (expandableHunk.maxExpandHeadRange > 0) {
|
||||||
return (
|
return (
|
||||||
<Decoration>
|
<Decoration>
|
||||||
<HunkDivider onClick={expandableHunk.expandHead}>{"Load first n lines"}</HunkDivider>
|
<HunkDivider onClick={() => this.setState({ diffExpander: expandableHunk.expandHead() })}>
|
||||||
|
{`Load ${expandableHunk.maxExpandHeadRange} more lines`}
|
||||||
|
</HunkDivider>
|
||||||
</Decoration>
|
</Decoration>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -159,7 +161,9 @@ class DiffFile extends React.Component<Props, State> {
|
|||||||
if (expandableHunk.maxExpandBottomRange > 0) {
|
if (expandableHunk.maxExpandBottomRange > 0) {
|
||||||
return (
|
return (
|
||||||
<Decoration>
|
<Decoration>
|
||||||
<HunkDivider onClick={expandableHunk.expandBottom}>{"Load last n lines"}</HunkDivider>
|
<HunkDivider onClick={() => this.setState({ diffExpander: expandableHunk.expandBottom() })}>
|
||||||
|
{`Load ${expandableHunk.maxExpandBottomRange} more lines`}
|
||||||
|
</HunkDivider>
|
||||||
</Decoration>
|
</Decoration>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user