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 f0f814f580..e8855d769c 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 @@ -14,17 +14,17 @@ (function() { 'use strict'; - var COMMIT_MESSAGE_PATH = '/COMMIT_MSG'; - var MERGE_LIST_PATH = '/MERGE_LIST'; + const COMMIT_MESSAGE_PATH = '/COMMIT_MSG'; + const MERGE_LIST_PATH = '/MERGE_LIST'; - var COMMENT_SAVE = 'Try again when all comments have saved.'; + const COMMENT_SAVE = 'Try again when all comments have saved.'; - var DiffSides = { + const DiffSides = { LEFT: 'left', RIGHT: 'right', }; - var HASH_PATTERN = /^[ab]?\d+$/; + const HASH_PATTERN = /^[ab]?\d+$/; Polymer({ is: 'gr-diff-view', @@ -51,12 +51,12 @@ }, keyEventTarget: { type: Object, - value: function() { return document.body; }, + value() { return document.body; }, }, changeViewState: { type: Object, notify: true, - value: function() { return {}; }, + value() { return {}; }, }, _patchRange: Object, @@ -65,7 +65,7 @@ _diff: Object, _fileList: { type: Array, - value: function() { return []; }, + value() { return []; }, }, _path: { type: String, @@ -134,18 +134,18 @@ ',': '_handleCommaKey', }, - attached: function() { - this._getLoggedIn().then(function(loggedIn) { + attached() { + this._getLoggedIn().then(loggedIn => { this._loggedIn = loggedIn; if (loggedIn) { this._setReviewed(true); } - }.bind(this)); + }); if (this.changeViewState.diffMode === null) { // If screen size is small, always default to unified view. - this.$.restAPI.getPreferences().then(function(prefs) { + this.$.restAPI.getPreferences().then(prefs => { this.set('changeViewState.diffMode', prefs.default_diff_view); - }.bind(this)); + }); } if (this._path) { @@ -156,63 +156,63 @@ this.$.cursor.push('diffs', this.$.diff); }, - _getLoggedIn: function() { + _getLoggedIn() { return this.$.restAPI.getLoggedIn(); }, - _getProjectConfig: function(project) { + _getProjectConfig(project) { return this.$.restAPI.getProjectConfig(project).then( - function(config) { + config => { this._projectConfig = config; - }.bind(this)); + }); }, - _getChangeDetail: function(changeNum) { + _getChangeDetail(changeNum) { return this.$.restAPI.getDiffChangeDetail(changeNum).then( - function(change) { + change => { this._change = change; - }.bind(this)); + }); }, - _getFiles: function(changeNum, patchRangeRecord) { - var patchRange = patchRangeRecord.base; + _getFiles(changeNum, patchRangeRecord) { + const patchRange = patchRangeRecord.base; return this.$.restAPI.getChangeFilePathsAsSpeciallySortedArray( - changeNum, patchRange).then(function(files) { + changeNum, patchRange).then(files => { this._fileList = files; - }.bind(this)); + }); }, - _getDiffPreferences: function() { + _getDiffPreferences() { return this.$.restAPI.getDiffPreferences(); }, - _getPreferences: function() { + _getPreferences() { return this.$.restAPI.getPreferences(); }, - _getWindowWidth: function() { + _getWindowWidth() { return window.innerWidth; }, - _handleReviewedChange: function(e) { + _handleReviewedChange(e) { this._setReviewed(Polymer.dom(e).rootTarget.checked); }, - _setReviewed: function(reviewed) { + _setReviewed(reviewed) { this.$.reviewed.checked = reviewed; - this._saveReviewedState(reviewed).catch(function(err) { + this._saveReviewedState(reviewed).catch(err => { alert('Couldn’t change file review status. Check the console ' + 'and contact the PolyGerrit team for assistance.'); throw err; - }.bind(this)); + }); }, - _saveReviewedState: function(reviewed) { + _saveReviewedState(reviewed) { return this.$.restAPI.saveFileReviewed(this._changeNum, this._patchRange.patchNum, this._path, reviewed); }, - _handleEscKey: function(e) { + _handleEscKey(e) { if (this.shouldSuppressKeyboardShortcut(e) || this.modifierPressed(e)) { return; } @@ -220,21 +220,21 @@ this.$.diff.displayLine = false; }, - _handleShiftLeftKey: function(e) { + _handleShiftLeftKey(e) { if (this.shouldSuppressKeyboardShortcut(e)) { return; } e.preventDefault(); this.$.cursor.moveLeft(); }, - _handleShiftRightKey: function(e) { + _handleShiftRightKey(e) { if (this.shouldSuppressKeyboardShortcut(e)) { return; } e.preventDefault(); this.$.cursor.moveRight(); }, - _handleUpKey: function(e) { + _handleUpKey(e) { if (this.shouldSuppressKeyboardShortcut(e)) { return; } if (e.detail.keyboardEvent.shiftKey && e.detail.keyboardEvent.keyCode === 75) { // 'K' @@ -248,7 +248,7 @@ this.$.cursor.moveUp(); }, - _handleDownKey: function(e) { + _handleDownKey(e) { if (this.shouldSuppressKeyboardShortcut(e)) { return; } if (e.detail.keyboardEvent.shiftKey && e.detail.keyboardEvent.keyCode === 74) { // 'J' @@ -262,33 +262,33 @@ this.$.cursor.moveDown(); }, - _moveToPreviousFileWithComment: function() { + _moveToPreviousFileWithComment() { if (this._commentSkips && this._commentSkips.previous) { page.show(this._getDiffURL(this._changeNum, this._patchRange, this._commentSkips.previous)); } }, - _moveToNextFileWithComment: function() { + _moveToNextFileWithComment() { if (this._commentSkips && this._commentSkips.next) { page.show(this._getDiffURL(this._changeNum, this._patchRange, this._commentSkips.next)); } }, - _handleCKey: function(e) { + _handleCKey(e) { if (this.shouldSuppressKeyboardShortcut(e)) { return; } if (this.$.diff.isRangeSelected()) { return; } if (this.modifierPressed(e)) { return; } e.preventDefault(); - var line = this.$.cursor.getTargetLineElement(); + const line = this.$.cursor.getTargetLineElement(); if (line) { this.$.diff.addDraftAtLine(line); } }, - _handleLeftBracketKey: function(e) { + _handleLeftBracketKey(e) { if (this.shouldSuppressKeyboardShortcut(e) || this.modifierPressed(e)) { return; } @@ -296,7 +296,7 @@ this._navToFile(this._path, this._fileList, -1); }, - _handleRightBracketKey: function(e) { + _handleRightBracketKey(e) { if (this.shouldSuppressKeyboardShortcut(e) || this.modifierPressed(e)) { return; } @@ -304,7 +304,7 @@ this._navToFile(this._path, this._fileList, 1); }, - _handleNKey: function(e) { + _handleNKey(e) { if (this.shouldSuppressKeyboardShortcut(e)) { return; } e.preventDefault(); @@ -316,7 +316,7 @@ } }, - _handlePKey: function(e) { + _handlePKey(e) { if (this.shouldSuppressKeyboardShortcut(e)) { return; } e.preventDefault(); @@ -328,7 +328,7 @@ } }, - _handleAKey: function(e) { + _handleAKey(e) { if (this.shouldSuppressKeyboardShortcut(e)) { return; } if (e.detail.keyboardEvent.shiftKey) { // Hide left diff. @@ -351,7 +351,7 @@ this._navToChangeView(); }, - _handleUKey: function(e) { + _handleUKey(e) { if (this.shouldSuppressKeyboardShortcut(e) || this.modifierPressed(e)) { return; } @@ -359,7 +359,7 @@ this._navToChangeView(); }, - _handleCommaKey: function(e) { + _handleCommaKey(e) { if (this.shouldSuppressKeyboardShortcut(e) || this.modifierPressed(e)) { return; } @@ -367,7 +367,7 @@ this.$.diffPreferences.open(); }, - _navToChangeView: function() { + _navToChangeView() { if (!this._changeNum || !this._patchRange.patchNum) { return; } page.show(this._getChangePath( @@ -376,15 +376,15 @@ this._change && this._change.revisions)); }, - _computeUpURL: function(changeNum, patchRange, change, changeRevisions) { + _computeUpURL(changeNum, patchRange, change, changeRevisions) { return this._getChangePath( changeNum, patchRange, change && changeRevisions); }, - _navToFile: function(path, fileList, direction) { - var url = this._computeNavLinkURL(path, fileList, direction); + _navToFile(path, fileList, direction) { + const url = this._computeNavLinkURL(path, fileList, direction); if (!url) { return; } page.show(this._computeNavLinkURL(path, fileList, direction)); @@ -401,12 +401,14 @@ * @return {?string} The next URL when proceeding in the specified * direction. */ - _computeNavLinkURL: function(path, fileList, direction, opt_noUp) { + _computeNavLinkURL(path, fileList, direction, opt_noUp) { if (!path || fileList.length === 0) { return null; } - var idx = fileList.indexOf(path); + let idx = fileList.indexOf(path); if (idx === -1) { - var file = direction > 0 ? fileList[0] : fileList[fileList.length - 1]; + const file = direction > 0 ? + fileList[0] : + fileList[fileList.length - 1]; return this._getDiffURL(this._changeNum, this._patchRange, file); } @@ -423,7 +425,7 @@ return this._getDiffURL(this._changeNum, this._patchRange, fileList[idx]); }, - _paramsChanged: function(value) { + _paramsChanged(value) { if (value.view != this.tagName.toLowerCase()) { return; } this._loadHash(location.hash); @@ -445,33 +447,33 @@ return; } - var promises = []; + const promises = []; this._localPrefs = this.$.storage.getPreferences(); - promises.push(this._getDiffPreferences().then(function(prefs) { + promises.push(this._getDiffPreferences().then(prefs => { this._prefs = prefs; - }.bind(this))); + })); - promises.push(this._getPreferences().then(function(prefs) { + promises.push(this._getPreferences().then(prefs => { this._userPrefs = prefs; - }.bind(this))); + })); promises.push(this._getChangeDetail(this._changeNum)); - Promise.all(promises).then(function() { + Promise.all(promises).then(() => { this._loading = false; this.$.diff.reload(); - }.bind(this)); + }); - this._loadCommentMap().then(function(commentMap) { + this._loadCommentMap().then(commentMap => { this._commentMap = commentMap; - }.bind(this)); + }); }, /** * If the URL hash is a diff address then configure the diff cursor. */ - _loadHash: function(hash) { + _loadHash(hash) { hash = hash.replace(/^#/, ''); if (!HASH_PATTERN.test(hash)) { return; } if (hash[0] === 'a' || hash[0] === 'b') { @@ -483,7 +485,7 @@ this.$.cursor.initialLineNumber = parseInt(hash, 10); }, - _pathChanged: function(path) { + _pathChanged(path) { if (this._fileList.length == 0) { return; } this.set('changeViewState.selectedFileIndex', @@ -494,17 +496,17 @@ } }, - _getDiffURL: function(changeNum, patchRange, path) { + _getDiffURL(changeNum, patchRange, path) { return this.getBaseUrl() + '/c/' + changeNum + '/' + this._patchRangeStr(patchRange) + '/' + this.encodeURL(path, true); }, - _computeDiffURL: function(changeNum, patchRangeRecord, path) { + _computeDiffURL(changeNum, patchRangeRecord, path) { return this._getDiffURL(changeNum, patchRangeRecord.base, path); }, - _patchRangeStr: function(patchRange) { - var patchStr = patchRange.patchNum; + _patchRangeStr(patchRange) { + let patchStr = patchRange.patchNum; if (patchRange.basePatchNum != null && patchRange.basePatchNum != 'PARENT') { patchStr = patchRange.basePatchNum + '..' + patchRange.patchNum; @@ -512,25 +514,25 @@ return patchStr; }, - _computeAvailablePatches: function(revisions) { - var patchNums = []; - for (var rev in revisions) { - patchNums.push(revisions[rev]._number); + _computeAvailablePatches(revisions) { + const patchNums = []; + for (const rev of Object.values(revisions)) { + patchNums.push(rev._number); } - return patchNums.sort(function(a, b) { return a - b; }); + return patchNums.sort((a, b) => { return a - b; }); }, - _getChangePath: function(changeNum, patchRange, revisions) { - var base = this.getBaseUrl() + '/c/' + changeNum + '/'; + _getChangePath(changeNum, patchRange, revisions) { + const base = this.getBaseUrl() + '/c/' + changeNum + '/'; // The change may not have loaded yet, making revisions unavailable. if (!revisions) { return base + this._patchRangeStr(patchRange); } - var latestPatchNum = -1; - for (var rev in revisions) { - latestPatchNum = Math.max(latestPatchNum, revisions[rev]._number); + let latestPatchNum = -1; + for (const rev of Object.values(revisions)) { + latestPatchNum = Math.max(latestPatchNum, rev._number); } if (patchRange.basePatchNum !== 'PARENT' || parseInt(patchRange.patchNum, 10) !== latestPatchNum) { @@ -540,11 +542,11 @@ return base; }, - _computeChangePath: function(changeNum, patchRangeRecord, revisions) { + _computeChangePath(changeNum, patchRangeRecord, revisions) { return this._getChangePath(changeNum, patchRangeRecord.base, revisions); }, - _computeFileDisplayName: function(path) { + _computeFileDisplayName(path) { if (path === COMMIT_MESSAGE_PATH) { return 'Commit message'; } else if (path === MERGE_LIST_PATH) { @@ -553,20 +555,20 @@ return path; }, - _computeTruncatedFileDisplayName: function(path) { + _computeTruncatedFileDisplayName(path) { return util.truncatePath(this._computeFileDisplayName(path)); }, - _computeFileSelected: function(path, currentPath) { + _computeFileSelected(path, currentPath) { return path == currentPath; }, - _computePrefsButtonHidden: function(prefs, loggedIn) { + _computePrefsButtonHidden(prefs, loggedIn) { return !loggedIn || !prefs; }, - _computeKeyNav: function(path, selectedPath, fileList) { - var selectedIndex = fileList.indexOf(selectedPath); + _computeKeyNav(path, selectedPath, fileList) { + const selectedIndex = fileList.indexOf(selectedPath); if (fileList.indexOf(path) == selectedIndex - 1) { return '['; } @@ -576,41 +578,41 @@ return ''; }, - _handleFileTap: function(e) { + _handleFileTap(e) { // async is needed so that that the click event is fired before the // dropdown closes (This was a bug for touch devices). - this.async(function() { + this.async(() => { this.$.dropdown.close(); }, 1); }, - _handleMobileSelectChange: function(e) { - var path = Polymer.dom(e).rootTarget.value; + _handleMobileSelectChange(e) { + const path = Polymer.dom(e).rootTarget.value; page.show(this._getDiffURL(this._changeNum, this._patchRange, path)); }, - _showDropdownTapHandler: function(e) { + _showDropdownTapHandler(e) { this.$.dropdown.open(); }, - _handlePrefsTap: function(e) { + _handlePrefsTap(e) { e.preventDefault(); this.$.diffPreferences.open(); }, - _handlePrefsSave: function(e) { + _handlePrefsSave(e) { e.stopPropagation(); - var el = Polymer.dom(e).rootTarget; + const el = Polymer.dom(e).rootTarget; el.disabled = true; this.$.storage.savePreferences(this._localPrefs); - this._saveDiffPreferences().then(function(response) { + this._saveDiffPreferences().then(response => { el.disabled = false; if (!response.ok) { return response; } this.$.prefsOverlay.close(); - }.bind(this)).catch(function(err) { + }).catch(err => { el.disabled = false; - }.bind(this)); + }); }, /** @@ -627,7 +629,7 @@ * * @return {String} */ - _getDiffViewMode: function() { + _getDiffViewMode() { if (this.changeViewState.diffMode) { return this.changeViewState.diffMode; } else if (this._userPrefs) { @@ -638,17 +640,17 @@ } }, - _computeModeSelectHidden: function() { + _computeModeSelectHidden() { return this._isImageDiff; }, - _onLineSelected: function(e, detail) { + _onLineSelected(e, detail) { this.$.cursor.moveToLineNumber(detail.number, detail.side); history.replaceState(null, null, '#' + this.$.cursor.getAddress()); }, - _computeDownloadLink: function(changeNum, patchRange, path) { - var url = this.changeBaseURL(changeNum, patchRange.patchNum); + _computeDownloadLink(changeNum, patchRange, path) { + let url = this.changeBaseURL(changeNum, patchRange.patchNum); url += '/patch?zip&path=' + encodeURIComponent(path); return url; }, @@ -659,9 +661,9 @@ * current patch range. * @return {Promise} A promise that yields a comment map object. */ - _loadCommentMap: function() { - function filterByRange(comment) { - var patchNum = comment.patch_set + ''; + _loadCommentMap() { + const filterByRange = comment => { + const patchNum = comment.patch_set + ''; return patchNum === this._patchRange.patchNum || patchNum === this._patchRange.basePatchNum; }; @@ -670,34 +672,34 @@ this.$.restAPI.getDiffComments(this._changeNum), this._getDiffDrafts(), this.$.restAPI.getDiffRobotComments(this._changeNum), - ]).then(function(results) { - var commentMap = {}; - results.forEach(function(response) { - for (var path in response) { + ]).then(results => { + const commentMap = {}; + for (const response of results) { + for (const path in response) { if (response.hasOwnProperty(path) && - response[path].filter(filterByRange.bind(this)).length) { + response[path].filter(filterByRange).length) { commentMap[path] = true; } } - }.bind(this)); + } return commentMap; - }.bind(this)); + }); }, - _getDiffDrafts: function() { - return this._getLoggedIn().then(function(loggedIn) { + _getDiffDrafts() { + return this._getLoggedIn().then(loggedIn => { if (!loggedIn) { return Promise.resolve({}); } return this.$.restAPI.getDiffDrafts(this._changeNum); - }.bind(this)); + }); }, - _computeCommentSkips: function(commentMap, fileList, path) { - var skips = {previous: null, next: null}; + _computeCommentSkips(commentMap, fileList, path) { + const skips = {previous: null, next: null}; if (!fileList.length) { return skips; } - var pathIndex = fileList.indexOf(path); + const pathIndex = fileList.indexOf(path); // Scan backward for the previous file. - for (var i = pathIndex - 1; i >= 0; i--) { + for (let i = pathIndex - 1; i >= 0; i--) { if (commentMap[fileList[i]]) { skips.previous = fileList[i]; break; @@ -705,7 +707,7 @@ } // Scan forward for the next file. - for (i = pathIndex + 1; i < fileList.length; i++) { + for (let i = pathIndex + 1; i < fileList.length; i++) { if (commentMap[fileList[i]]) { skips.next = fileList[i]; break; 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 663cd3baa8..625af35e65 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 @@ -41,34 +41,34 @@ limitations under the License.