Show whether a related change is merged or old.

Include a colored circle at the end of the related change line to
indicate the state. Use a black circle when the change is a link to
gitweb and a orange circle when the link to the change is not the
current patch set. Expose the current_revision_number on the
ChangeAndCommit object.

Change-Id: I5c629ecac61a4b9c6fc709f328a290313e3d6093
This commit is contained in:
Colby Ranger
2013-12-12 15:25:11 -08:00
parent fbd91eaf7a
commit c818dc46b0
5 changed files with 36 additions and 1 deletions

View File

@@ -199,8 +199,10 @@ public interface GerritCss extends CssResource {
String projectFilterPanel();
String projectNameColumn();
String publishCommentsScreen();
String relatedChangesTabPanel();
String relatedChangesGitweb();
String relatedChangesNotCurrent();
String relatedChangesSubject();
String relatedChangesTabPanel();
String registerScreenExplain();
String registerScreenNextLinks();
String registerScreenSection();

View File

@@ -330,18 +330,27 @@ public class RelatedChanges extends TabPanel {
final native boolean has_revision_number()
/*-{ return this.hasOwnProperty('_revision_number') }-*/;
final native boolean has_current_revision_number()
/*-{ return this.hasOwnProperty('_current_revision_number') }-*/;
final native int _change_number()
/*-{ return this._change_number }-*/;
final native int _revision_number()
/*-{ return this._revision_number }-*/;
final native int _current_revision_number()
/*-{ return this._current_revision_number }-*/;
final native void set_change_number(int n)
/*-{ this._change_number=n; }-*/;
final native void set_revision_number(int n)
/*-{ this._revision_number=n; }-*/;
final native void set_current_revision_number(int n)
/*-{ this._current_revision_number=n; }-*/;
protected ChangeAndCommit() {
}
}

View File

@@ -17,6 +17,7 @@ package com.google.gerrit.client.change;
import com.google.gerrit.client.Gerrit;
import com.google.gerrit.client.GitwebLink;
import com.google.gerrit.client.change.RelatedChanges.ChangeAndCommit;
import com.google.gerrit.client.changes.Util;
import com.google.gerrit.client.ui.NavigationTable;
import com.google.gerrit.common.PageLinks;
import com.google.gerrit.reviewdb.client.PatchSet;
@@ -278,6 +279,18 @@ class RelatedChangesTab implements IsWidget {
}
sb.closeTd();
sb.openTd();
GitwebLink gw = Gerrit.getGitwebLink();
if (gw != null && (!info.has_change_number() || !info.has_revision_number())) {
sb.addStyleName(Gerrit.RESOURCES.css().relatedChangesGitweb());
sb.setAttribute("title", gw.getLinkName());
} else if (info.has_current_revision_number() && info.has_revision_number()
&& info._current_revision_number() != info._revision_number()) {
sb.addStyleName(Gerrit.RESOURCES.css().relatedChangesNotCurrent());
sb.setAttribute("title", Util.C.notCurrent());
}
sb.closeTd();
sb.closeTr();
}

View File

@@ -1642,3 +1642,11 @@ a:hover.downloadLink {
.relatedChangesTabPanel .gwt-TabBarItem-disabled {
display: none;
}
.relatedChangesNotCurrent:after {
content: '\25CF'; /* circle */
color: #FFA62F; /* orange */
}
.relatedChangesGitweb:after {
content: '\25CF'; /* circle */
color: #000;
}

View File

@@ -287,12 +287,15 @@ public class GetRelated implements RestReadView<RevisionResource> {
CommitInfo commit;
Integer _changeNumber;
Integer _revisionNumber;
Integer _currentRevisionNumber;
ChangeAndCommit(@Nullable Change change, @Nullable PatchSet ps, RevCommit c) {
if (change != null) {
changeId = change.getKey().get();
_changeNumber = change.getChangeId();
_revisionNumber = ps != null ? ps.getPatchSetId() : null;
PatchSet.Id curr = change.currentPatchSetId();
_currentRevisionNumber = curr != null ? curr.get() : null;
}
commit = new CommitInfo();