Merge "Show in ApprovalTable if a reviewer can't vote in a category"
This commit is contained in:
@@ -42,6 +42,7 @@ public class ApprovalDetail {
|
||||
protected Account.Id account;
|
||||
protected List<PatchSetApproval> approvals;
|
||||
protected boolean canRemove;
|
||||
private Set<String> votable;
|
||||
|
||||
private transient Set<String> approved;
|
||||
private transient Set<String> rejected;
|
||||
@@ -112,6 +113,13 @@ public class ApprovalDetail {
|
||||
rejected.add(label);
|
||||
}
|
||||
|
||||
public void votable(String label) {
|
||||
if (votable == null) {
|
||||
votable = new HashSet<String>();
|
||||
}
|
||||
votable.add(label);
|
||||
}
|
||||
|
||||
public boolean isApproved(String label) {
|
||||
return approved != null && approved.contains(label);
|
||||
}
|
||||
@@ -119,4 +127,8 @@ public class ApprovalDetail {
|
||||
public boolean isRejected(String label) {
|
||||
return rejected != null && rejected.contains(label);
|
||||
}
|
||||
|
||||
public boolean canVote(String label) {
|
||||
return votable != null && votable.contains(label);
|
||||
}
|
||||
}
|
||||
|
@@ -106,4 +106,6 @@ public interface GerritConstants extends Constants {
|
||||
|
||||
String projectAccessError();
|
||||
String projectAccessProposeForReviewHint();
|
||||
|
||||
String userCannotVoteToolTip();
|
||||
}
|
||||
|
@@ -89,3 +89,5 @@ jumpMineDraftComments = Go to draft comments
|
||||
|
||||
projectAccessError = You don't have permissions to modify the access rights for the following refs:
|
||||
projectAccessProposeForReviewHint = You may propose these modifications to the project owners by clicking on 'Save for Review'.
|
||||
|
||||
userCannotVoteToolTip = User cannot vote in this category
|
@@ -37,6 +37,7 @@ public interface GerritCss extends CssResource {
|
||||
String approvalhint();
|
||||
String approvalrole();
|
||||
String approvalscore();
|
||||
String notVotable();
|
||||
String blockHeader();
|
||||
String bottomheader();
|
||||
String cAPPROVAL();
|
||||
|
@@ -397,8 +397,11 @@ public class ApprovalTable extends Composite {
|
||||
|
||||
for (String labelName : columns) {
|
||||
fmt.setStyleName(row, col, Gerrit.RESOURCES.css().approvalscore());
|
||||
if (!ad.canVote(labelName)) {
|
||||
fmt.addStyleName(row, col, Gerrit.RESOURCES.css().notVotable());
|
||||
fmt.getElement(row, col).setTitle(Gerrit.C.userCannotVoteToolTip());
|
||||
|
||||
if (ad.isRejected(labelName)) {
|
||||
} else if (ad.isRejected(labelName)) {
|
||||
table.setWidget(row, col, new Image(Gerrit.RESOURCES.redNot()));
|
||||
|
||||
} else if (ad.isApproved(labelName)) {
|
||||
|
@@ -871,6 +871,9 @@
|
||||
.infoTable td.approvalscore {
|
||||
text-align: center;
|
||||
}
|
||||
.infoTable td.notVotable {
|
||||
background: #F5F5F5;
|
||||
}
|
||||
.infoTable td.negscore {
|
||||
color: red;
|
||||
}
|
||||
|
@@ -19,6 +19,7 @@ import com.google.gerrit.common.data.ApprovalType;
|
||||
import com.google.gerrit.common.data.ApprovalTypes;
|
||||
import com.google.gerrit.common.data.ChangeDetail;
|
||||
import com.google.gerrit.common.data.ChangeInfo;
|
||||
import com.google.gerrit.common.data.PermissionRange;
|
||||
import com.google.gerrit.common.data.SubmitRecord;
|
||||
import com.google.gerrit.common.errors.NoSuchEntityException;
|
||||
import com.google.gerrit.httpd.rpc.Handler;
|
||||
@@ -71,6 +72,8 @@ public class ChangeDetailFactory extends Handler<ChangeDetail> {
|
||||
|
||||
private final ApprovalTypes approvalTypes;
|
||||
private final ChangeControl.Factory changeControlFactory;
|
||||
private final ChangeControl.GenericFactory changeControlGenericFactory;
|
||||
private final IdentifiedUser.GenericFactory identifiedUserFactory;
|
||||
private final FunctionState.Factory functionState;
|
||||
private final PatchSetDetailFactory.Factory patchSetDetail;
|
||||
private final AccountInfoCacheFactory aic;
|
||||
@@ -93,6 +96,8 @@ public class ChangeDetailFactory extends Handler<ChangeDetail> {
|
||||
final PatchSetDetailFactory.Factory patchSetDetail, final ReviewDb db,
|
||||
final GitRepositoryManager repoManager,
|
||||
final ChangeControl.Factory changeControlFactory,
|
||||
final ChangeControl.GenericFactory changeControlGenericFactory,
|
||||
final IdentifiedUser.GenericFactory identifiedUserFactory,
|
||||
final AccountInfoCacheFactory.Factory accountInfoCacheFactory,
|
||||
final AnonymousUser anonymousUser,
|
||||
final MergeOp.Factory opFactory,
|
||||
@@ -104,6 +109,8 @@ public class ChangeDetailFactory extends Handler<ChangeDetail> {
|
||||
this.db = db;
|
||||
this.repoManager = repoManager;
|
||||
this.changeControlFactory = changeControlFactory;
|
||||
this.changeControlGenericFactory = changeControlGenericFactory;
|
||||
this.identifiedUserFactory = identifiedUserFactory;
|
||||
this.anonymousUser = anonymousUser;
|
||||
this.aic = accountInfoCacheFactory.create();
|
||||
|
||||
@@ -241,6 +248,14 @@ public class ChangeDetailFactory extends Handler<ChangeDetail> {
|
||||
if (ca.getPatchSetId().equals(psId)) {
|
||||
d.add(ca);
|
||||
}
|
||||
final ChangeControl chgCtrl =
|
||||
changeControlGenericFactory.controlFor(detail.getChange(),
|
||||
identifiedUserFactory.create(ca.getAccountId()));
|
||||
for (PermissionRange pr : chgCtrl.getLabelRanges()) {
|
||||
if (pr.getMin() != 0 || pr.getMax() != 0) {
|
||||
d.votable(pr.getLabel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final Account.Id owner = detail.getChange().getOwner();
|
||||
|
@@ -55,6 +55,8 @@ final class PatchSetPublishDetailFactory extends Handler<PatchSetPublishDetail>
|
||||
private final ReviewDb db;
|
||||
private final FunctionState.Factory functionState;
|
||||
private final ChangeControl.Factory changeControlFactory;
|
||||
private final ChangeControl.GenericFactory changeControlGenericFactory;
|
||||
private final IdentifiedUser.GenericFactory identifiedUserFactory;
|
||||
private final ApprovalTypes approvalTypes;
|
||||
private final AccountInfoCacheFactory aic;
|
||||
private final IdentifiedUser user;
|
||||
@@ -71,12 +73,16 @@ final class PatchSetPublishDetailFactory extends Handler<PatchSetPublishDetail>
|
||||
final AccountInfoCacheFactory.Factory accountInfoCacheFactory,
|
||||
final FunctionState.Factory functionState,
|
||||
final ChangeControl.Factory changeControlFactory,
|
||||
final ChangeControl.GenericFactory changeControlGenericFactory,
|
||||
final IdentifiedUser.GenericFactory identifiedUserFactory,
|
||||
final ApprovalTypes approvalTypes,
|
||||
final IdentifiedUser user, @Assisted final PatchSet.Id patchSetId) {
|
||||
this.infoFactory = infoFactory;
|
||||
this.db = db;
|
||||
this.functionState = functionState;
|
||||
this.changeControlFactory = changeControlFactory;
|
||||
this.changeControlGenericFactory = changeControlGenericFactory;
|
||||
this.identifiedUserFactory = identifiedUserFactory;
|
||||
this.approvalTypes = approvalTypes;
|
||||
this.aic = accountInfoCacheFactory.create();
|
||||
this.user = user;
|
||||
@@ -190,7 +196,7 @@ final class PatchSetPublishDetailFactory extends Handler<PatchSetPublishDetail>
|
||||
}
|
||||
|
||||
private void loadApprovals(final PatchSetPublishDetail detail,
|
||||
final ChangeControl control) throws OrmException {
|
||||
final ChangeControl control) throws OrmException, NoSuchChangeException {
|
||||
final PatchSet.Id psId = detail.getChange().currentPatchSetId();
|
||||
final Change.Id changeId = patchSetId.getParentKey();
|
||||
final List<PatchSetApproval> allApprovals =
|
||||
@@ -221,6 +227,14 @@ final class PatchSetPublishDetailFactory extends Handler<PatchSetPublishDetail>
|
||||
if (ca.getPatchSetId().equals(psId)) {
|
||||
d.add(ca);
|
||||
}
|
||||
final ChangeControl chgCtrl =
|
||||
changeControlGenericFactory.controlFor(detail.getChange(),
|
||||
identifiedUserFactory.create(ca.getAccountId()));
|
||||
for (PermissionRange pr : chgCtrl.getLabelRanges()) {
|
||||
if (pr.getMin() != 0 || pr.getMax() != 0) {
|
||||
d.votable(pr.getLabel());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final Account.Id owner = detail.getChange().getOwner();
|
||||
|
Reference in New Issue
Block a user