Show "File X of Y" next to file navigation links in diff view

Bug: Issue 4917
Change-Id: Ie993504fe80034da0e3d3ddee99687ba09ebc2ff
This commit is contained in:
Viktar Donich
2018-01-30 16:17:13 -08:00
parent a4d59f0686
commit c5069b1cd2
3 changed files with 38 additions and 0 deletions

View File

@@ -41,6 +41,9 @@ limitations under the License.
:host { :host {
background-color: var(--view-background-color); background-color: var(--view-background-color);
} }
.hidden {
display: none;
}
gr-patch-range-select { gr-patch-range-select {
display: block; display: block;
} }
@@ -214,6 +217,10 @@ limitations under the License.
</div> </div>
</h3> </h3>
<div class="navLinks desktop"> <div class="navLinks desktop">
<span class$="fileNum [[_computeFileNumVisible(_fileNum, _formattedFiles)]]">
File [[_fileNum]] of [[_formattedFiles.length]]
<span class="separator"></span>
</span>
<a class="navLink" <a class="navLink"
href$="[[_computeNavLinkURL(_change, _path, _fileList, -1, 1)]]"> href$="[[_computeNavLinkURL(_change, _path, _fileList, -1, 1)]]">
Prev</a> Prev</a>

View File

@@ -93,6 +93,10 @@
type: String, type: String,
observer: '_pathChanged', observer: '_pathChanged',
}, },
_fileNum: {
type: Number,
computed: '_computeFileNum(_path, _formattedFiles)',
},
_loggedIn: { _loggedIn: {
type: Boolean, type: Boolean,
value: false, value: false,
@@ -928,5 +932,19 @@
_getRevisionInfo(change) { _getRevisionInfo(change) {
return new Gerrit.RevisionInfo(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';
}
},
}); });
})(); })();

View File

@@ -876,6 +876,19 @@ limitations under the License.
assert.isTrue(callCompute({basePatchNum: 1, patchNum: 'edit'})); 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', () => { suite('editMode behavior', () => {
setup(() => { setup(() => {
element._loggedIn = true; element._loggedIn = true;