ES6ify gr-label-scores
Change-Id: I994c1887590f366bfd40bcfca59316ec258880ed
This commit is contained in:
@@ -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];
|
||||
},
|
||||
});
|
||||
|
||||
@@ -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',
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user