ES6ify /gr-change-list/*

Bug: Issue 6179
Change-Id: I64a60c6363786eed7ffae23ccc60bf4e6ed0a0d5
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.js b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.js
index a18cfaa..f86498c 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.js
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list.js
@@ -14,7 +14,7 @@
 (function() {
   'use strict';
 
-  var NUMBER_FIXED_COLUMNS = 3;
+  const NUMBER_FIXED_COLUMNS = 3;
 
   Polymer({
     is: 'gr-change-list',
@@ -42,7 +42,7 @@
        */
       account: {
         type: Object,
-        value: function() { return {}; },
+        value() { return {}; },
       },
       /**
        * An array of ChangeInfo objects to render.
@@ -58,11 +58,11 @@
        */
       groups: {
         type: Array,
-        value: function() { return []; },
+        value() { return []; },
       },
       groupTitles: {
         type: Array,
-        value: function() { return []; },
+        value() { return []; },
       },
       labelNames: {
         type: Array,
@@ -83,7 +83,7 @@
       },
       keyEventTarget: {
         type: Object,
-        value: function() { return document.body; },
+        value() { return document.body; },
       },
     },
 
@@ -102,16 +102,16 @@
       'shift+r': '_handleRKey',
     },
 
-    attached: function() {
+    attached() {
       this._loadPreferences();
     },
 
-    _lowerCase: function(column) {
+    _lowerCase(column) {
       return column.toLowerCase();
     },
 
-    _loadPreferences: function() {
-      return this._getLoggedIn().then(function(loggedIn) {
+    _loadPreferences() {
+      return this._getLoggedIn().then(loggedIn => {
         this.changeTableColumns = this.columnNames;
 
         if (!loggedIn) {
@@ -119,99 +119,99 @@
           this.visibleChangeTableColumns = this.columnNames;
           return;
         }
-        return this._getPreferences().then(function(preferences) {
+        return this._getPreferences().then(preferences => {
           this.showNumber = !!(preferences &&
               preferences.legacycid_in_change_table);
           this.visibleChangeTableColumns = preferences.change_table.length > 0 ?
               preferences.change_table : this.columnNames;
-        }.bind(this));
-      }.bind(this));
+        });
+      });
     },
 
-    _getLoggedIn: function() {
+    _getLoggedIn() {
       return this.$.restAPI.getLoggedIn();
     },
 
-    _getPreferences: function() {
+    _getPreferences() {
       return this.$.restAPI.getPreferences();
     },
 
-    _computeColspan: function(changeTableColumns, labelNames) {
+    _computeColspan(changeTableColumns, labelNames) {
       return changeTableColumns.length + labelNames.length +
           NUMBER_FIXED_COLUMNS;
     },
 
-    _computeLabelNames: function(groups) {
+    _computeLabelNames(groups) {
       if (!groups) { return []; }
-      var labels = [];
-      var nonExistingLabel = function(item) {
-        return labels.indexOf(item) < 0;
+      let labels = [];
+      const nonExistingLabel = function(item) {
+        return !labels.includes(item);
       };
-      for (var i = 0; i < groups.length; i++) {
-        var group = groups[i];
-        for (var j = 0; j < group.length; j++) {
-          var change = group[j];
+      for (let i = 0; i < groups.length; i++) {
+        const group = groups[i];
+        for (let j = 0; j < group.length; j++) {
+          const change = group[j];
           if (!change.labels) { continue; }
-          var currentLabels = Object.keys(change.labels);
+          const currentLabels = Object.keys(change.labels);
           labels = labels.concat(currentLabels.filter(nonExistingLabel));
         }
       }
       return labels.sort();
     },
 
-    _computeLabelShortcut: function(labelName) {
+    _computeLabelShortcut(labelName) {
       return labelName.replace(/[a-z-]/g, '');
     },
 
-    _changesChanged: function(changes) {
+    _changesChanged(changes) {
       this.groups = changes ? [changes] : [];
     },
 
-    _groupTitle: function(groupIndex) {
+    _groupTitle(groupIndex) {
       if (groupIndex > this.groupTitles.length - 1) { return null; }
       return this.groupTitles[groupIndex];
     },
 
-    _computeItemSelected: function(index, groupIndex, selectedIndex) {
-      var idx = 0;
-      for (var i = 0; i < groupIndex; i++) {
+    _computeItemSelected(index, groupIndex, selectedIndex) {
+      let idx = 0;
+      for (let i = 0; i < groupIndex; i++) {
         idx += this.groups[i].length;
       }
       idx += index;
       return idx == selectedIndex;
     },
 
-    _computeItemNeedsReview: function(account, change, showReviewedState) {
+    _computeItemNeedsReview(account, change, showReviewedState) {
       return showReviewedState && !change.reviewed &&
           this.changeIsOpen(change.status) &&
           account._account_id != change.owner._account_id;
     },
 
-    _computeItemAssigned: function(account, change) {
+    _computeItemAssigned(account, change) {
       if (!change.assignee) { return false; }
       return account._account_id === change.assignee._account_id;
     },
 
-    _getAggregateGroupsLen: function(groups) {
+    _getAggregateGroupsLen(groups) {
       groups = groups || [];
-      var len = 0;
-      this.groups.forEach(function(group) {
+      let len = 0;
+      for (const group of this.groups) {
         len += group.length;
-      });
+      }
       return len;
     },
 
-    _handleJKey: function(e) {
+    _handleJKey(e) {
       if (this.shouldSuppressKeyboardShortcut(e) ||
           this.modifierPressed(e)) { return; }
 
       e.preventDefault();
-      var len = this._getAggregateGroupsLen(this.groups);
+      const len = this._getAggregateGroupsLen(this.groups);
       if (this.selectedIndex === len - 1) { return; }
       this.selectedIndex += 1;
     },
 
-    _handleKKey: function(e) {
+    _handleKKey(e) {
       if (this.shouldSuppressKeyboardShortcut(e) ||
           this.modifierPressed(e)) { return; }
 
@@ -220,7 +220,7 @@
       this.selectedIndex -= 1;
     },
 
-    _handleEnterKey: function(e) {
+    _handleEnterKey(e) {
       if (this.shouldSuppressKeyboardShortcut(e) ||
           this.modifierPressed(e)) { return; }
 
@@ -228,21 +228,21 @@
       page.show(this._changeURLForIndex(this.selectedIndex));
     },
 
-    _handleNKey: function(e) {
+    _handleNKey(e) {
       if (this.shouldSuppressKeyboardShortcut(e)) { return; }
 
       e.preventDefault();
       this.fire('next-page');
     },
 
-    _handlePKey: function(e) {
+    _handlePKey(e) {
       if (this.shouldSuppressKeyboardShortcut(e)) { return; }
 
       e.preventDefault();
       this.fire('previous-page');
     },
 
-    _handleRKey: function(e) {
+    _handleRKey(e) {
       if (this.shouldSuppressKeyboardShortcut(e)) {
         return;
       }
@@ -251,15 +251,15 @@
       window.location.reload();
     },
 
-    _changeURLForIndex: function(index) {
-      var changeEls = this._getListItems();
+    _changeURLForIndex(index) {
+      const changeEls = this._getListItems();
       if (index < changeEls.length && changeEls[index]) {
         return changeEls[index].changeURL;
       }
       return '';
     },
 
-    _getListItems: function() {
+    _getListItems() {
       return Polymer.dom(this.root).querySelectorAll('gr-change-list-item');
     },
   });
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html
index 1a1abff..27f0603 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list/gr-change-list_test.html
@@ -40,16 +40,16 @@
 </test-fixture>
 
 <script>
-  suite('gr-change-list basic tests', function() {
-    var element;
+  suite('gr-change-list basic tests', () => {
+    let element;
 
-    setup(function() {
+    setup(() => {
       element = fixture('basic');
     });
 
     function stubRestAPI(preferences) {
-      var loggedInPromise = Promise.resolve(preferences !== null);
-      var preferencesPromise = Promise.resolve(preferences);
+      const loggedInPromise = Promise.resolve(preferences !== null);
+      const preferencesPromise = Promise.resolve(preferences);
       stub('gr-rest-api-interface', {
         getLoggedIn: sinon.stub().returns(loggedInPromise),
         getPreferences: sinon.stub().returns(preferencesPromise),
@@ -57,60 +57,60 @@
       return Promise.all([loggedInPromise, preferencesPromise]);
     }
 
-    suite('test show change number not logged in', function() {
-      setup(function() {
-        return stubRestAPI(null).then(function() {
+    suite('test show change number not logged in', () => {
+      setup(() => {
+        return stubRestAPI(null).then(() => {
           element = fixture('basic');
           return element._loadPreferences();
         });
       });
 
-      test('show number disabled', function() {
+      test('show number disabled', () => {
         assert.isFalse(element.showNumber);
       });
     });
 
-    suite('test show change number preference enabled', function() {
-      setup(function() {
+    suite('test show change number preference enabled', () => {
+      setup(() => {
         return stubRestAPI({legacycid_in_change_table: true,
-           time_format: 'HHMM_12',
-           change_table: [],
-        }).then(function() {
+          time_format: 'HHMM_12',
+          change_table: [],
+        }).then(() => {
           element = fixture('basic');
           return element._loadPreferences();
         });
       });
 
-      test('show number enabled', function() {
+      test('show number enabled', () => {
         assert.isTrue(element.showNumber);
       });
     });
 
-    suite('test show change number preference disabled', function() {
-      setup(function() {
+    suite('test show change number preference disabled', () => {
+      setup(() => {
         // legacycid_in_change_table is not set when false.
         return stubRestAPI({time_format: 'HHMM_12', change_table: []}).then(
-            function() {
-          element = fixture('basic');
-          return element._loadPreferences();
-        });
+            () => {
+              element = fixture('basic');
+              return element._loadPreferences();
+            });
       });
 
-      test('show number disabled', function() {
+      test('show number disabled', () => {
         assert.isFalse(element.showNumber);
       });
     });
 
-    test('computed fields', function() {
+    test('computed fields', () => {
       assert.equal(element._computeLabelNames(
           [[{_number: 0, labels: {}}]]).length, 0);
       assert.equal(element._computeLabelNames([[
             {_number: 0, labels: {Verified: {approved: {}}}},
-            {_number: 1, labels: {
-              Verified: {approved: {}}, 'Code-Review': {approved: {}}}},
-            {_number: 2, labels: {
-              Verified: {approved: {}}, 'Library-Compliance': {approved: {}}}},
-          ]]).length, 3);
+        {_number: 1, labels: {
+          'Verified': {approved: {}}, 'Code-Review': {approved: {}}}},
+        {_number: 2, labels: {
+          'Verified': {approved: {}}, 'Library-Compliance': {approved: {}}}},
+      ]]).length, 3);
 
       assert.equal(element._computeLabelShortcut('Code-Review'), 'CR');
       assert.equal(element._computeLabelShortcut('Verified'), 'V');
@@ -119,17 +119,17 @@
           'Some-Special-Label-7'), 'SSL7');
     });
 
-    test('colspans', function() {
-      var thItemCount = Polymer.dom(element.root).querySelectorAll(
+    test('colspans', () => {
+      const thItemCount = Polymer.dom(element.root).querySelectorAll(
           'th').length;
 
-      var changeTableColumns = [];
-      var labelNames = [];
+      const changeTableColumns = [];
+      const labelNames = [];
       assert.equal(thItemCount, element._computeColspan(
           changeTableColumns, labelNames));
     });
 
-    test('keyboard shortcuts', function(done) {
+    test('keyboard shortcuts', done => {
       element.selectedIndex = 0;
       element.changes = [
         {_number: 0},
@@ -137,17 +137,17 @@
         {_number: 2},
       ];
       flushAsynchronousOperations();
-      var elementItems = Polymer.dom(element.root).querySelectorAll(
+      const elementItems = Polymer.dom(element.root).querySelectorAll(
           'gr-change-list-item');
       assert.equal(elementItems.length, 3);
 
-      flush(function() {
+      flush(() => {
         assert.isTrue(elementItems[0].hasAttribute('selected'));
         MockInteractions.pressAndReleaseKeyOn(element, 74, null, 'j');
         assert.equal(element.selectedIndex, 1);
         MockInteractions.pressAndReleaseKeyOn(element, 74, null, 'j');
 
-        var showStub = sinon.stub(page, 'show');
+        const showStub = sinon.stub(page, 'show');
         assert.equal(element.selectedIndex, 2);
         MockInteractions.pressAndReleaseKeyOn(element, 13, null, 'enter');
         assert(showStub.lastCall.calledWithExactly('/c/2/'),
@@ -169,7 +169,7 @@
       });
     });
 
-    test('changes needing review', function() {
+    test('changes needing review', () => {
       element.changes = [
         {
           _number: 0,
@@ -196,13 +196,13 @@
           _number: 4,
           status: 'ABANDONED',
           owner: {_account_id: 0},
-        }
+        },
       ];
       flushAsynchronousOperations();
-      var elementItems = Polymer.dom(element.root).querySelectorAll(
+      let elementItems = Polymer.dom(element.root).querySelectorAll(
           'gr-change-list-item');
       assert.equal(elementItems.length, 5);
-      for (var i = 0; i < elementItems.length; i++) {
+      for (let i = 0; i < elementItems.length; i++) {
         assert.isFalse(elementItems[i].hasAttribute('needs-review'));
       }
 
@@ -227,150 +227,150 @@
       assert.isFalse(elementItems[4].hasAttribute('needs-review'));
     });
 
-    test('no changes', function() {
+    test('no changes', () => {
       element.changes = [];
       flushAsynchronousOperations();
-      var listItems = Polymer.dom(element.root).querySelectorAll(
+      const listItems = Polymer.dom(element.root).querySelectorAll(
           'gr-change-list-item');
       assert.equal(listItems.length, 0);
-      var noChangesMsg = Polymer.dom(element.root).querySelector('.noChanges');
+      const noChangesMsg =
+          Polymer.dom(element.root).querySelector('.noChanges');
       assert.ok(noChangesMsg);
     });
 
-    test('empty groups', function() {
+    test('empty groups', () => {
       element.groups = [[], []];
       flushAsynchronousOperations();
-      var listItems = Polymer.dom(element.root).querySelectorAll(
+      const listItems = Polymer.dom(element.root).querySelectorAll(
           'gr-change-list-item');
       assert.equal(listItems.length, 0);
-      var noChangesMsg = Polymer.dom(element.root).querySelectorAll(
+      const noChangesMsg = Polymer.dom(element.root).querySelectorAll(
           '.noChanges');
       assert.equal(noChangesMsg.length, 2);
     });
 
-    suite('empty column preference', function() {
-      var element;
+    suite('empty column preference', () => {
+      let element;
 
-      setup(function() {
-        return stubRestAPI({
+      setup(() =>
+        stubRestAPI({
           legacycid_in_change_table: true,
-            time_format: 'HHMM_12',
-            change_table: [],
-          }
-        ).then(function() {
+          time_format: 'HHMM_12',
+          change_table: [],
+        }).then(() => {
           element = fixture('basic');
           return element._loadPreferences();
-        });
-      });
+        })
+      );
 
-      test('show number enabled', function() {
+      test('show number enabled', () => {
         assert.isTrue(element.showNumber);
       });
 
-      test('all columns visible', function() {
-        element.columnNames.forEach(function(column) {
-          var elementClass = '.' + element._lowerCase(column);
+      test('all columns visible', () => {
+        for (const column of element.columnNames) {
+          const elementClass = '.' + element._lowerCase(column);
           assert.isFalse(element.$$(elementClass).hidden);
-        });
+        }
       });
     });
 
-    suite('full column preference', function() {
-      var element;
+    suite('full column preference', () => {
+      let element;
 
-      setup(function() {
+      setup(() => {
         return stubRestAPI({
-            legacycid_in_change_table: true,
-            time_format: 'HHMM_12',
-            change_table: [
-              'Subject',
-              'Status',
-              'Owner',
-              'Project',
-              'Branch',
-              'Updated',
-              'Size',
-            ],
-          }).then(function() {
+          legacycid_in_change_table: true,
+          time_format: 'HHMM_12',
+          change_table: [
+            'Subject',
+            'Status',
+            'Owner',
+            'Project',
+            'Branch',
+            'Updated',
+            'Size',
+          ],
+        }).then(() => {
           element = fixture('basic');
           return element._loadPreferences();
         });
       });
 
-      test('all columns visible', function() {
-        element.changeTableColumns.forEach(function(column) {
-          var elementClass = '.' + element._lowerCase(column);
+      test('all columns visible', () => {
+        for (const column of element.changeTableColumns) {
+          const elementClass = '.' + element._lowerCase(column);
           assert.isFalse(element.$$(elementClass).hidden);
-        });
+        }
       });
     });
 
-    suite('partial column preference', function() {
-      var element;
+    suite('partial column preference', () => {
+      let element;
 
-      setup(function() {
+      setup(() => {
         return stubRestAPI({
-            legacycid_in_change_table: true,
-            time_format: 'HHMM_12',
-            change_table: [
-              'Subject',
-              'Status',
-              'Owner',
-              'Branch',
-              'Updated',
-              'Size',
-            ],
-          }).then(function() {
+          legacycid_in_change_table: true,
+          time_format: 'HHMM_12',
+          change_table: [
+            'Subject',
+            'Status',
+            'Owner',
+            'Branch',
+            'Updated',
+            'Size',
+          ],
+        }).then(() => {
           element = fixture('basic');
           return element._loadPreferences();
         });
       });
 
-      test('all columns except project visible', function() {
-        element.changeTableColumns.forEach(function(column) {
-          var elementClass = '.' + column.toLowerCase();
+      test('all columns except project visible', () => {
+        for (const column of element.changeTableColumns) {
+          const elementClass = '.' + column.toLowerCase();
           if (column === 'Project') {
             assert.isTrue(element.$$(elementClass).hidden);
           } else {
             assert.isFalse(element.$$(elementClass).hidden);
           }
-        });
+        }
       });
     });
 
-    suite('random column does not exist', function() {
-      var element;
+    suite('random column does not exist', () => {
+      let element;
 
       /* This would only exist if somebody manually updated the config
       file. */
-      setup(function() {
+      setup(() => {
         return stubRestAPI({
-            legacycid_in_change_table: true,
-            time_format: 'HHMM_12',
-            change_table: [
-              'Bad',
-            ],
-          }).then(function() {
+          legacycid_in_change_table: true,
+          time_format: 'HHMM_12',
+          change_table: [
+            'Bad',
+          ],
+        }).then(() => {
           element = fixture('basic');
           return element._loadPreferences();
         });
       });
 
-      test('bad column does not exist', function() {
-        var elementClass = '.bad';
+      test('bad column does not exist', () => {
+        const elementClass = '.bad';
         assert.isNotOk(element.$$(elementClass));
       });
     });
   });
 
-  suite('gr-change-list groups', function() {
-    var element;
+  suite('gr-change-list groups', () => {
+    let element;
 
-    setup(function() {
+    setup(() => {
       element = fixture('basic');
     });
 
-    test('keyboard shortcuts', function() {
+    test('keyboard shortcuts', () => {
       element.selectedIndex = 0;
       element.groups = [
         [
@@ -387,11 +387,11 @@
           {_number: 6},
           {_number: 7},
           {_number: 8},
-        ]
+        ],
       ];
       element.groupTitles = ['Group 1', 'Group 2', 'Group 3'];
       flushAsynchronousOperations();
-      var elementItems = Polymer.dom(element.root).querySelectorAll(
+      const elementItems = Polymer.dom(element.root).querySelectorAll(
           'gr-change-list-item');
       assert.equal(elementItems.length, 9);
 
@@ -399,7 +399,7 @@
       assert.equal(element.selectedIndex, 1);
       MockInteractions.pressAndReleaseKeyOn(element, 74);  // 'j'
 
-      var showStub = sinon.stub(page, 'show');
+      const showStub = sinon.stub(page, 'show');
       assert.equal(element.selectedIndex, 2);
       MockInteractions.pressAndReleaseKeyOn(element, 13);  // 'enter'
       assert(showStub.lastCall.calledWithExactly('/c/2/'),
@@ -421,7 +421,7 @@
       showStub.restore();
     });
 
-    test('assigned attribute set in each item', function() {
+    test('assigned attribute set in each item', () => {
       element.changes = [
         {
           _number: 0,
@@ -441,9 +441,9 @@
       ];
       element.account = {_account_id: 42};
       flushAsynchronousOperations();
-      var items = element._getListItems();
+      const items = element._getListItems();
       assert.equal(items.length, 3);
-      for (var i = 0; i < items.length; i++) {
+      for (let i = 0; i < items.length; i++) {
         assert.equal(items[i].hasAttribute('assigned'),
             items[i]._account_id === element.account._account_id);
       }