Related Changes: Decorate merged and abandoned changes
Merged changes are decorated with a black dot; abandoned changes are
decorated with a dark red dot.
Change-Id: I1a5d044d432952f864df1fe3ec8ad9a514587fe4
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/Documentation/rest-api-changes.txt b/Documentation/rest-api-changes.txt
index bd94789..6e5cc36 100644
--- a/Documentation/rest-api-changes.txt
+++ b/Documentation/rest-api-changes.txt
@@ -3352,6 +3352,7 @@
|===========================
|Field Name ||Description
|`change_id` |optional|The Change-Id of the change.
+|`status` |optional|The status of the change.
|`commit` ||The commit as a
link:#commit-info[CommitInfo] entity.
|`_change_number` |optional|The change number.
diff --git a/Documentation/user-review-ui.txt b/Documentation/user-review-ui.txt
index 0cea546..d303703 100644
--- a/Documentation/user-review-ui.txt
+++ b/Documentation/user-review-ui.txt
@@ -538,7 +538,7 @@
note that following the link to an indirect descendant change may
result in a completely different related changes listing.
-** [[closed-ancestor]]Black Dot:
+** [[merged-ancestor]]Black Dot:
+
Indicates a merged ancestor, e.g. the commit was directly pushed into
the repository bypassing code review, or the ancestor change was
@@ -547,6 +547,10 @@
the commit was done on `branch-a`, but was then pushed to
`refs/for/branch-b`.
+** [[abandoned-change]]Dark Red Dot:
++
+Indicates an abandoned change.
+
+
image::images/user-review-ui-change-screen-related-changes-indicators.png[width=800, link="images/user-review-ui-change-screen-related-changes-indicators.png"]
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeConstants.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeConstants.java
index ada960c..a7d4945 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeConstants.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeConstants.java
@@ -47,4 +47,6 @@
String sameTopicTooltip();
String noChanges();
String indirectAncestor();
+ String merged();
+ String abandoned();
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeConstants.properties
index 172c1de..8852d4e 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeConstants.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/ChangeConstants.properties
@@ -28,3 +28,5 @@
sameTopicTooltip = Changes with the same topic
noChanges = No Changes
indirectAncestor = Indirect ancestor
+merged = Merged
+abandoned = Abandoned
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChanges.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChanges.java
index 7fbbfc7..5f6c6de 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChanges.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChanges.java
@@ -55,6 +55,8 @@
String current();
String gitweb();
String indirect();
+ String abandoned();
+ String merged();
String notCurrent();
String pointer();
String row();
@@ -342,6 +344,13 @@
}
public final native String id() /*-{ return this.change_id }-*/;
+
+ public final Change.Status status() {
+ String s = statusRaw();
+ return s != null ? Change.Status.valueOf(s) : null;
+ }
+ private final native String statusRaw() /*-{ return this.status; }-*/;
+
public final native CommitInfo commit() /*-{ return this.commit }-*/;
final native String branch() /*-{ return this.branch }-*/;
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChangesTab.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChangesTab.java
index 0f2ee81..2dfd53e 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChangesTab.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/RelatedChangesTab.java
@@ -20,6 +20,7 @@
import com.google.gerrit.client.changes.ChangeInfo.CommitInfo;
import com.google.gerrit.client.changes.Util;
import com.google.gerrit.common.PageLinks;
+import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JsArray;
@@ -301,6 +302,14 @@
sb.setStyleName(RelatedChanges.R.css().notCurrent());
sb.setAttribute("title", Util.C.notCurrent());
sb.append('\u25CF');
+ } else if (Change.Status.MERGED == info.status()) {
+ sb.setStyleName(RelatedChanges.R.css().merged());
+ sb.setAttribute("title", Resources.C.merged());
+ sb.append('\u25CF');
+ } else if (Change.Status.ABANDONED == info.status()) {
+ sb.setStyleName(RelatedChanges.R.css().abandoned());
+ sb.setAttribute("title", Resources.C.abandoned());
+ sb.append('\u25CF');
} else {
sb.setStyleName(RelatedChanges.R.css().current());
}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/related_changes.css b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/related_changes.css
index 2e62b98..4d103ae 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/related_changes.css
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/change/related_changes.css
@@ -68,6 +68,8 @@
.current,
.gitweb,
.indirect,
+.abandoned,
+.merged,
.notCurrent {
display: inline-block;
text-align: center;
@@ -75,6 +77,7 @@
width: 12px;
}
+.merged,
.gitweb {
color: #000;
}
@@ -84,6 +87,10 @@
font-weight: bold;
}
+.abandoned {
+ color: #900; /* dark red */
+}
+
.notCurrent {
color: #FFA62F; /* orange */
}
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetRelated.java b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetRelated.java
index 7c83c75..6056e5f 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/change/GetRelated.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/change/GetRelated.java
@@ -20,6 +20,7 @@
import com.google.common.collect.Multimap;
import com.google.common.collect.Sets;
import com.google.gerrit.common.Nullable;
+import com.google.gerrit.extensions.common.ChangeStatus;
import com.google.gerrit.extensions.common.CommitInfo;
import com.google.gerrit.extensions.restapi.RestReadView;
import com.google.gerrit.reviewdb.client.Change;
@@ -291,6 +292,7 @@
public static class ChangeAndCommit {
public String changeId;
+ public ChangeStatus status;
public CommitInfo commit;
public Integer _changeNumber;
public Integer _revisionNumber;
@@ -299,6 +301,7 @@
ChangeAndCommit(@Nullable Change change, @Nullable PatchSet ps, RevCommit c) {
if (change != null) {
changeId = change.getKey().get();
+ status = change.getStatus().asChangeStatus();
_changeNumber = change.getChangeId();
_revisionNumber = ps != null ? ps.getPatchSetId() : null;
PatchSet.Id curr = change.currentPatchSetId();