Show "File X of Y" next to file navigation links in diff view
Bug: Issue 4917
Change-Id: Ie993504fe80034da0e3d3ddee99687ba09ebc2ff
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
index a1c7340..2ce29db 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
@@ -41,6 +41,9 @@
:host {
background-color: var(--view-background-color);
}
+ .hidden {
+ display: none;
+ }
gr-patch-range-select {
display: block;
}
@@ -214,6 +217,10 @@
</div>
</h3>
<div class="navLinks desktop">
+ <span class$="fileNum [[_computeFileNumVisible(_fileNum, _formattedFiles)]]">
+ File [[_fileNum]] of [[_formattedFiles.length]]
+ <span class="separator"></span>
+ </span>
<a class="navLink"
href$="[[_computeNavLinkURL(_change, _path, _fileList, -1, 1)]]">
Prev</a>
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
index a8ada4a..bccf348 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
@@ -93,6 +93,10 @@
type: String,
observer: '_pathChanged',
},
+ _fileNum: {
+ type: Number,
+ computed: '_computeFileNum(_path, _formattedFiles)',
+ },
_loggedIn: {
type: Boolean,
value: false,
@@ -928,5 +932,19 @@
_getRevisionInfo(change) {
return new Gerrit.RevisionInfo(change);
},
+
+ _computeFileNum(file, files) {
+ return files.findIndex(({value}) => value === file) + 1;
+ },
+
+ _computeFileNumVisible(file, files) {
+ if (!files) { return 'hidden'; }
+ const fileNum = this._computeFileNum(file, files);
+ if (!isNaN(fileNum) && isFinite(fileNum) && fileNum > 0) {
+ return '';
+ } else {
+ return 'hidden';
+ }
+ },
});
})();
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
index 4daabe3..4565338 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
@@ -876,6 +876,19 @@
assert.isTrue(callCompute({basePatchNum: 1, patchNum: 'edit'}));
});
+ test('_computeFileNum', () => {
+ assert.equal(element._computeFileNum('/foo',
+ [{value: '/foo'}, {value: '/bar'}]), 1);
+ assert.equal(element._computeFileNum('/bar',
+ [{value: '/foo'}, {value: '/bar'}]), 2);
+ });
+
+ test('_computeFileNumVisible', () => {
+ assert.equal(element._computeFileNumVisible('', []), 'hidden');
+ assert.equal(element._computeFileNumVisible('/bar',
+ [{value: '/foo'}, {value: '/bar'}]), '');
+ });
+
suite('editMode behavior', () => {
setup(() => {
element._loggedIn = true;