ES6ify gr-label-scores

Change-Id: I994c1887590f366bfd40bcfca59316ec258880ed
This commit is contained in:
Becky Siegel
2017-05-15 14:09:57 -07:00
parent 69145ea185
commit 2456d6c029
2 changed files with 64 additions and 69 deletions

View File

@@ -29,22 +29,20 @@
_labelValues: Object,
},
getLabelValues: function() {
var labels = {};
for (var label in this.permittedLabels) {
getLabelValues() {
const labels = {};
for (const label in this.permittedLabels) {
if (!this.permittedLabels.hasOwnProperty(label)) { continue; }
var selectorEl = this.$$('iron-selector[data-label="' +
label + '"]');
const selectorEl = this.$$(`iron-selector[data-label="${label}"]`);
// The user may have not voted on this label.
if (!selectorEl || !selectorEl.selectedItem) { continue; }
var selectedVal = selectorEl.selectedItem.getAttribute('data-value');
let selectedVal = selectorEl.selectedItem.getAttribute('data-value');
selectedVal = parseInt(selectedVal, 10);
// Only send the selection if the user changed it.
var prevVal = this._getVoteForAccount(this.change.labels, label,
let prevVal = this._getVoteForAccount(this.change.labels, label,
this.account);
if (prevVal !== null) {
prevVal = parseInt(prevVal, 10);
@@ -56,10 +54,10 @@
return labels;
},
_getVoteForAccount: function(labels, labelName, account) {
var votes = labels[labelName];
_getVoteForAccount(labels, labelName, account) {
const votes = labels[labelName];
if (votes.all && votes.all.length > 0) {
for (var i = 0; i < votes.all.length; i++) {
for (let i = 0; i < votes.all.length; i++) {
if (votes.all[i]._account_id == account._account_id) {
return votes.all[i].value;
}
@@ -68,44 +66,43 @@
return null;
},
_computeLabels: function(labelRecord) {
var labelsObj = labelRecord.base;
_computeLabels(labelRecord) {
const labelsObj = labelRecord.base;
if (!labelsObj) { return []; }
return Object.keys(labelsObj).sort().map(function(key) {
return Object.keys(labelsObj).sort().map(key => {
return {
name: key,
value: this._getVoteForAccount(labelsObj, key, this.account),
};
}.bind(this));
});
},
_computeColumns: function(permittedLabels) {
var labels = Object.keys(permittedLabels);
var values = {};
labels.forEach(function(label) {
permittedLabels[label].forEach(function(value) {
_computeColumns(permittedLabels) {
const labels = Object.keys(permittedLabels);
const values = {};
for (const label of labels) {
for (const value of permittedLabels[label]) {
values[parseInt(value, 10)] = true;
});
});
}
}
var orderedValues = Object.keys(values).sort(function(a, b) {
const orderedValues = Object.keys(values).sort((a, b) => {
return a - b;
});
for (var i = 0; i < orderedValues.length; i++) {
for (let i = 0; i < orderedValues.length; i++) {
values[orderedValues[i]] = i;
}
this._labelValues = values;
},
_computeIndexOfLabelValue: function(labels, permittedLabels, label) {
_computeIndexOfLabelValue(labels, permittedLabels, label) {
if (!labels[label.name]) { return null; }
var labelValue = label.value;
var len = permittedLabels[label.name] != null ?
const labelValue = label.value;
const len = permittedLabels[label.name] != null ?
permittedLabels[label.name].length : 0;
for (var i = 0; i < len; i++) {
var val = parseInt(permittedLabels[label.name][i], 10);
for (let i = 0; i < len; i++) {
const val = parseInt(permittedLabels[label.name][i], 10);
if (val == labelValue) {
return i;
}
@@ -113,23 +110,23 @@
return null;
},
_computePermittedLabelValues: function(permittedLabels, label) {
_computePermittedLabelValues(permittedLabels, label) {
return permittedLabels[label];
},
_computeBlankItems: function(permittedLabels, label, side) {
_computeBlankItems(permittedLabels, label, side) {
if (!permittedLabels[label]) { return []; }
var startPosition = this._labelValues[parseInt(
const startPosition = this._labelValues[parseInt(
permittedLabels[label][0])];
if (side === 'start') {
return new Array(startPosition);
}
var endPosition = this._labelValues[parseInt(
const endPosition = this._labelValues[parseInt(
permittedLabels[label][permittedLabels[label].length - 1])];
return new Array(Object.keys(this._labelValues).length - endPosition - 1);
},
_computeAnyPermittedLabelValues: function(permittedLabels, label) {
_computeAnyPermittedLabelValues(permittedLabels, label) {
return permittedLabels.hasOwnProperty(label);
},
@@ -137,7 +134,7 @@
return changeStatus === 'MERGED';
},
_computeLabelValueTitle: function(labels, label, value) {
_computeLabelValueTitle(labels, label, value) {
return labels[label] && labels[label].values[value];
},
});

View File

@@ -33,14 +33,14 @@ limitations under the License.
</test-fixture>
<script>
suite('gr-label-scores tests', function() {
var element;
var sandbox;
suite('gr-label-scores tests', () => {
let element;
let sandbox;
setup(function(done) {
setup(done => {
sandbox = sinon.sandbox.create();
stub('gr-rest-api-interface', {
getLoggedIn: function() { return Promise.resolve(false); },
getLoggedIn() { return Promise.resolve(false); },
});
element = fixture('basic');
element.change = {
@@ -61,7 +61,7 @@ limitations under the License.
value: '+1',
}],
},
Verified: {
'Verified': {
values: {
'0': 'No score',
'+1': 'good',
@@ -91,7 +91,7 @@ limitations under the License.
'+1',
'+2',
],
Verified: [
'Verified': [
'-1',
' 0',
'+1',
@@ -100,14 +100,16 @@ limitations under the License.
flush(done);
});
teardown(function() {
teardown(() => {
sandbox.restore();
});
test('label picker', function() {
for (var label in element.permittedLabels) {
assert.ok(element.$$('iron-selector[data-label="' + label + '"]'),
label);
test('label picker', () => {
for (const label in element.permittedLabels) {
if (element.permittedLabels.hasOwnProperty(label)) {
assert.ok(element.$$('iron-selector[data-label="' + label + '"]'),
label);
}
}
element.draft = 'I wholeheartedly disapprove';
MockInteractions.tap(element.$$(
@@ -119,17 +121,16 @@ limitations under the License.
flushAsynchronousOperations();
assert.deepEqual(element.getLabelValues(), {
'Code-Review': -1,
Verified: -1,
'Verified': -1,
});
assert.equal(element.$$('iron-selector[data-label="Code-Review"]')
.selected, 1);
assert.equal(element.$$(
'iron-selector[data-label="Verified"] .iron-selected')
.textContent.trim(), '-1');
});
test('correct item is selected', function() {
test('correct item is selected', () => {
assert.equal(element.$$('iron-selector[data-label="Code-Review"]')
.selected, 3);
assert.equal(
@@ -144,10 +145,9 @@ limitations under the License.
.textContent.trim(), '+1');
});
test('do not display tooltips on touch devices', function() {
var verifiedBtn = element.$$(
'iron-selector[data-label="Verified"] > ' +
'gr-button[data-value="-1"]');
test('do not display tooltips on touch devices', () => {
const verifiedBtn = element.$$(
'iron-selector[data-label="Verified"] > gr-button[data-value="-1"]');
// On touch devices, tooltips should not be shown.
verifiedBtn._isTouchDevice = true;
@@ -164,13 +164,13 @@ limitations under the License.
assert.isNotOk(verifiedBtn._tooltip);
});
test('_getVoteForAccount', function() {
var labelName = 'Code-Review';
test('_getVoteForAccount', () => {
const labelName = 'Code-Review';
assert.equal(element._getVoteForAccount(element.change.labels, labelName,
element.account), '+1');
});
test('_computeColumns', function() {
test('_computeColumns', () => {
element._computeColumns(element.permittedLabels);
assert.deepEqual(element._labelValues, {
'-2': 0,
@@ -181,15 +181,13 @@ limitations under the License.
});
});
test('_computeIndexOfLabelValue', function() {
var labelName = 'Code-Review';
test('_computeIndexOfLabelValue', () => {
assert.equal(element._computeIndexOfLabelValue(element.change.labels,
element.permittedLabels,
element._labels[0]), 3);
});
test('_computeBlankItems', function() {
test('_computeBlankItems', () => {
element._labelValues = {
'-2': 0,
'-1': 1,
@@ -203,10 +201,10 @@ limitations under the License.
assert.deepEqual(
element._computeBlankItems(element.permittedLabels,
'Verified').length, 1);
'Verified').length, 1);
});
test('changes in label score are reflected in the DOM', function() {
test('changes in label score are reflected in the DOM', () => {
element.change = {
_number: '123',
labels: {
@@ -220,7 +218,7 @@ limitations under the License.
},
default_value: 0,
},
Verified: {
'Verified': {
values: {
'0': 'No score',
'+1': 'good',
@@ -233,14 +231,14 @@ limitations under the License.
},
};
flushAsynchronousOperations();
var selector = element.$$('iron-selector[data-label="Verified"]');
const selector = element.$$('iron-selector[data-label="Verified"]');
element.set(['change', 'labels', 'Verified', 'all'],
[{_account_id: 123, value: 1}]);
flushAsynchronousOperations();
assert.equal(selector.selected, 2); // Index 2, value 1
});
test('without permitted labels', function() {
test('without permitted labels', () => {
element.permittedLabels = {
Verified: [
'-1',
@@ -256,7 +254,7 @@ limitations under the License.
element.$$('iron-selector[data-label="Code-Review"]').hidden);
});
test('asymetrical labels', function() {
test('asymetrical labels', () => {
element.permittedLabels = {
'Code-Review': [
'-2',
@@ -265,7 +263,7 @@ limitations under the License.
'+1',
'+2',
],
Verified: [
'Verified': [
' 0',
'+1',
],