diff options
author | Kasper Nilsson <kaspern@google.com> | 2018-11-14 20:58:17 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-11-14 20:58:17 +0000 |
commit | 421eff33e068fa4ae62fa1797dd35c7c8cffad1d (patch) | |
tree | b5504473eb7e9bbfc8ae697782beef2842b86dc7 | |
parent | cc20e47cce8934600803956b72ab8a21cf82b712 (diff) | |
parent | eb12253ff0077649410335b34fb6f90e3459383d (diff) |
Merge "Add shift+m shortcut to diff view" into stable-2.16
4 files changed, 48 insertions, 2 deletions
diff --git a/polygerrit-ui/app/behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html b/polygerrit-ui/app/behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html index d1fdf2f0b3..af982cfceb 100644 --- a/polygerrit-ui/app/behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html +++ b/polygerrit-ui/app/behaviors/keyboard-shortcut-behavior/keyboard-shortcut-behavior.html @@ -165,6 +165,7 @@ shortcuts are. PREV_FILE: 'PREV_FILE', NEXT_FILE_WITH_COMMENTS: 'NEXT_FILE_WITH_COMMENTS', PREV_FILE_WITH_COMMENTS: 'PREV_FILE_WITH_COMMENTS', + NEXT_UNREVIEWED_FILE: 'NEXT_UNREVIEWED_FILE', CURSOR_NEXT_FILE: 'CURSOR_NEXT_FILE', CURSOR_PREV_FILE: 'CURSOR_PREV_FILE', OPEN_FILE: 'OPEN_FILE', @@ -255,6 +256,8 @@ shortcuts are. 'Mark/unmark file as reviewed'); _describe(Shortcut.TOGGLE_DIFF_MODE, ShortcutSection.DIFFS, 'Toggle unified/side-by-side diff'); + _describe(Shortcut.NEXT_UNREVIEWED_FILE, ShortcutSection.DIFFS, + 'Mark file as reviewed and go to next unreviewed file'); _describe(Shortcut.NEXT_FILE, ShortcutSection.NAVIGATION, 'Select next file'); _describe(Shortcut.PREV_FILE, ShortcutSection.NAVIGATION, 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 6f361d89b4..cf8417a8ea 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 @@ -161,6 +161,10 @@ type: Object, computed: '_getRevisionInfo(_change)', }, + _reviewedFiles: { + type: Object, + value: () => new Set(), + }, }, behaviors: [ @@ -207,6 +211,7 @@ [this.Shortcut.TOGGLE_DIFF_MODE]: '_handleToggleDiffMode', [this.Shortcut.TOGGLE_FILE_REVIEWED]: '_handleToggleFileReviewed', [this.Shortcut.EXPAND_ALL_DIFF_CONTEXT]: '_handleExpandAllDiffContext', + [this.Shortcut.NEXT_UNREVIEWED_FILE]: '_handleNextUnreviewedFile', // Final two are actually handled by gr-diff-comment-thread. [this.Shortcut.EXPAND_ALL_COMMENT_THREADS]: null, @@ -555,10 +560,18 @@ return {path: fileList[idx]}; }, + _getReviewedFiles(changeNum, patchNum) { + return this.$.restAPI.getReviewedFiles(changeNum, patchNum) + .then(files => { + this._reviewedFiles = new Set(files); + return this._reviewedFiles; + }); + }, + _getReviewedStatus(editMode, changeNum, patchNum, path) { if (editMode) { return Promise.resolve(false); } - return this.$.restAPI.getReviewedFiles(changeNum, patchNum) - .then(files => files.includes(path)); + return this._getReviewedFiles(changeNum, patchNum) + .then(files => files.has(path)); }, _paramsChanged(value) { @@ -1012,5 +1025,15 @@ if (this.shouldSuppressKeyboardShortcut(e)) { return; } this.$.diffHost.expandAllContext(); }, + + _handleNextUnreviewedFile(e) { + this._setReviewed(true); + // Ensure that the currently viewed file always appears in unreviewedFiles + // so we resolve the right "next" file. + const unreviewedFiles = this._fileList + .filter(file => + (file === this._path || !this._reviewedFiles.has(file))); + this._navToFile(this._path, unreviewedFiles, 1); + }, }); })(); 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 431578bb7d..958acdb9a8 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 @@ -67,6 +67,7 @@ limitations under the License. kb.bindShortcut(kb.Shortcut.EXPAND_ALL_DIFF_CONTEXT, 'shift+x'); kb.bindShortcut(kb.Shortcut.EXPAND_ALL_COMMENT_THREADS, 'e'); kb.bindShortcut(kb.Shortcut.COLLAPSE_ALL_COMMENT_THREADS, 'shift+e'); + kb.bindShortcut(kb.Shortcut.NEXT_UNREVIEWED_FILE, 'shift+m'); let element; let sandbox; @@ -1106,5 +1107,22 @@ limitations under the License. assert.isTrue(setStub.calledOnce); assert.isTrue(setStub.calledWith(101, 'test-project')); }); + + test('shift+m navigates to next unreviewed file', () => { + element._fileList = ['file1', 'file2', 'file3']; + element._reviewedFiles = new Set(['file1', 'file2']); + element._path = 'file1'; + const reviewedStub = sandbox.stub(element, '_setReviewed'); + const navStub = sandbox.stub(element, '_navToFile'); + MockInteractions.pressAndReleaseKeyOn(element, 77, 'shift', 'm'); + flushAsynchronousOperations(); + + assert.isTrue(reviewedStub.lastCall.args[0]); + assert.deepEqual(navStub.lastCall.args, [ + 'file1', + ['file1', 'file3'], + 1, + ]); + }); }); </script> diff --git a/polygerrit-ui/app/elements/gr-app.js b/polygerrit-ui/app/elements/gr-app.js index 0cf517d1b5..321dc580a0 100644 --- a/polygerrit-ui/app/elements/gr-app.js +++ b/polygerrit-ui/app/elements/gr-app.js @@ -275,6 +275,8 @@ this.bindShortcut( this.Shortcut.TOGGLE_FILE_REVIEWED, 'r'); this.bindShortcut( + this.Shortcut.NEXT_UNREVIEWED_FILE, 'shift+m'); + this.bindShortcut( this.Shortcut.TOGGLE_ALL_INLINE_DIFFS, 'shift+i:keyup'); this.bindShortcut( this.Shortcut.TOGGLE_INLINE_DIFF, 'i:keyup'); |