Show Merge Conflict status in change view
Bug: Issue 4057
Change-Id: Ic5abbae2b4f261dc4e182e892a74aff288ba3ce4
diff --git a/polygerrit-ui/app/behaviors/rest-client-behavior.html b/polygerrit-ui/app/behaviors/rest-client-behavior.html
index ce0b2a5..4def9b2 100644
--- a/polygerrit-ui/app/behaviors/rest-client-behavior.html
+++ b/polygerrit-ui/app/behaviors/rest-client-behavior.html
@@ -30,10 +30,10 @@
},
ChangeStatus: {
- NEW: 'NEW',
- MERGED: 'MERGED',
ABANDONED: 'ABANDONED',
DRAFT: 'DRAFT',
+ MERGED: 'MERGED',
+ NEW: 'NEW',
},
// Must be kept in sync with the ListChangesOption enum and protobuf.
@@ -108,6 +108,23 @@
return status === this.ChangeStatus.NEW ||
status === this.ChangeStatus.DRAFT;
},
+
+ changeStatusString: function(change) {
+ // "Closed" states should take precedence over "open" ones.
+ if (change.status === this.ChangeStatus.MERGED) {
+ return 'Merged';
+ }
+ if (change.status === this.ChangeStatus.ABANDONED) {
+ return 'Abandoned';
+ }
+ if (change.mergeable === false) {
+ return 'Merge Conflict';
+ }
+ if (change.status === this.ChangeStatus.DRAFT) {
+ return 'Draft';
+ }
+ return '';
+ },
};
window.Gerrit = window.Gerrit || {};
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.html b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.html
index 24f915a..9126785 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.html
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.html
@@ -75,7 +75,7 @@
[[change._number]]
</a>
<a class="cell subject" href$="[[changeURL]]">[[change.subject]]</a>
- <span class="cell status">[[_computeChangeStatusString(change)]]</span>
+ <span class="cell status">[[changeStatusString(change)]]</span>
<span class="cell owner">
<gr-account-link account="[[change.owner]]"></gr-account-link>
</span>
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js
index d160933..90b2e1d 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item.js
@@ -51,25 +51,6 @@
return '/c/' + changeNum + '/';
},
- _computeChangeStatusString: function(change) {
- // "Closed" states should take precedence over "open" ones.
- if (change.status == this.ChangeStatus.MERGED) {
- return 'Merged';
- }
- if (change.status == this.ChangeStatus.ABANDONED) {
- return 'Abandoned';
- }
-
- if (change.mergeable != null && change.mergeable == false) {
- return 'Merge Conflict';
- }
- if (change.status == this.ChangeStatus.DRAFT) {
- return 'Draft';
- }
-
- return '';
- },
-
_computeLabelTitle: function(change, labelName) {
var label = change.labels[labelName];
if (!label) { return 'Label not applicable'; }
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item_test.html b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item_test.html
index 5507b9f..b7c0853 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item_test.html
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-item/gr-change-list-item_test.html
@@ -38,18 +38,21 @@
element = fixture('basic');
});
- test('computed fields', function() {
- assert.equal(element._computeChangeStatusString({mergeable: true}), '');
- assert.equal(element._computeChangeStatusString({mergeable: false}),
- 'Merge Conflict');
- assert.equal(element._computeChangeStatusString({status: 'NEW'}), '');
- assert.equal(element._computeChangeStatusString({status: 'MERGED'}),
- 'Merged');
- assert.equal(element._computeChangeStatusString({status: 'ABANDONED'}),
- 'Abandoned');
- assert.equal(element._computeChangeStatusString({status: 'DRAFT'}),
- 'Draft');
+ test('change status', function() {
+ var getStatusForChange = function(change) {
+ element.change = change;
+ return element.$$('.cell.status').textContent;
+ };
+ assert.equal(getStatusForChange({mergeable: true}), '');
+ assert.equal(getStatusForChange({mergeable: false}), 'Merge Conflict');
+ assert.equal(getStatusForChange({status: 'NEW'}), '');
+ assert.equal(getStatusForChange({status: 'MERGED'}), 'Merged');
+ assert.equal(getStatusForChange({status: 'ABANDONED'}), 'Abandoned');
+ assert.equal(getStatusForChange({status: 'DRAFT'}), 'Draft');
+ });
+
+ test('computed fields', function() {
assert.equal(element._computeLabelClass({labels: {}}),
'cell label u-gray-background');
assert.equal(element._computeLabelClass(
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
index 76874c0..90499dd 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view.js
@@ -405,15 +405,17 @@
return '/' + changeNum;
},
- _computeChangeStatus: function(change, patchNum) {
- var status = change.status;
- if (status == this.ChangeStatus.NEW) {
+ _computeChangeStatus: function(change, patchNum) {
+ var statusString;
+ if (change.status === this.ChangeStatus.NEW) {
var rev = this._getRevisionNumber(change, patchNum);
- // TODO(davido): Figure out, why sometimes revision is not there
- if (rev == undefined || !rev.draft) { return ''; }
- status = this.ChangeStatus.DRAFT;
+ if (rev && rev.draft === true) {
+ statusString = 'Draft';
+ }
+ } else {
+ statusString = this.changeStatusString(change);
}
- return '(' + status.toLowerCase() + ')';
+ return statusString ? '(' + statusString + ')' : '';
},
_computeLatestPatchNum: function(allPatchSets) {
diff --git a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
index 141940d..633b72a 100644
--- a/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
+++ b/polygerrit-ui/app/elements/change/gr-change-view/gr-change-view_test.html
@@ -257,7 +257,7 @@
labels: {},
};
var status = element._computeChangeStatus(element._change, '1');
- assert.equal(status, '(draft)');
+ assert.equal(status, '(Draft)');
});
test('revision status draft', function() {
@@ -280,7 +280,7 @@
labels: {},
};
var status = element._computeChangeStatus(element._change, '2');
- assert.equal(status, '(draft)');
+ assert.equal(status, '(Draft)');
});
test('show commit message edit button', function() {