Add 'shift + R' keyboard shortcut to change view
This commit adds 'shift + R' as a keyboard shortcut to the change
view. This keyboard shortcut fetches patchset data from the API and
then takes the user to the most recent patchset.
Bug: Issue 4227
Change-Id: Ia102a8c7a7ab2027256dc5c14c9eaf7840fe8373
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
index 14ac4d1..84644da 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
@@ -267,19 +267,7 @@
},
_handlePatchChange: function(e) {
- var patchNum = e.target.value;
- var currentPatchNum;
- if (this._change.current_revision) {
- currentPatchNum =
- this._change.revisions[this._change.current_revision]._number;
- } else {
- currentPatchNum = this._computeLatestPatchNum(this._allPatchSets);
- }
- if (patchNum == currentPatchNum) {
- page.show(this.changePath(this._changeNum));
- return;
- }
- page.show(this.changePath(this._changeNum) + '/' + patchNum);
+ this._changePatchNum(parseInt(e.target.value, 10));
},
_handleReplyTap: function(e) {
@@ -405,6 +393,25 @@
this.fire('title-change', {title: title});
},
+ /**
+ * Change active patch to the provided patch num.
+ * @param {int} patchNum the patchn number to be viewed.
+ */
+ _changePatchNum: function(patchNum) {
+ var currentPatchNum;
+ if (this._change.current_revision) {
+ currentPatchNum =
+ this._change.revisions[this._change.current_revision]._number;
+ } else {
+ currentPatchNum = this._computeLatestPatchNum(this._allPatchSets);
+ }
+ if (patchNum === currentPatchNum) {
+ page.show(this.changePath(this._changeNum));
+ return;
+ }
+ page.show(this.changePath(this._changeNum) + '/' + patchNum);
+ },
+
_computeChangePermalink: function(changeNum) {
return '/' + changeNum;
},
@@ -495,9 +502,17 @@
return label;
},
+ _switchToMostRecentPatchNum: function() {
+ this._getChangeDetail().then(function() {
+ var patchNum = this._allPatchSets[this._allPatchSets.length - 1];
+ if (patchNum !== this._patchRange.patchNum) {
+ this._changePatchNum(patchNum);
+ }
+ }.bind(this));
+ },
+
_handleKey: function(e) {
if (this.shouldSupressKeyboardShortcut(e)) { return; }
-
switch (e.keyCode) {
case 65: // 'a'
if (this._loggedIn && !e.shiftKey) {
@@ -505,6 +520,12 @@
this._openReplyDialog();
}
break;
+ case 82: // 'r'
+ if (e.shiftKey) {
+ e.preventDefault();
+ this._switchToMostRecentPatchNum();
+ }
+ break;
case 85: // 'u'
e.preventDefault();
page.show('/');