Submit requirements - do not render neutral gr-vote-chip
Change-Id: Icefeaa5e8dfe8cc4a0f3d630545a67bc864f2edf
diff --git a/polygerrit-ui/app/elements/change/gr-submit-requirements/gr-submit-requirements.ts b/polygerrit-ui/app/elements/change/gr-submit-requirements/gr-submit-requirements.ts
index 11dc9d9..c2b54a6 100644
--- a/polygerrit-ui/app/elements/change/gr-submit-requirements/gr-submit-requirements.ts
+++ b/polygerrit-ui/app/elements/change/gr-submit-requirements/gr-submit-requirements.ts
@@ -31,6 +31,7 @@
import {
extractAssociatedLabels,
getAllUniqueApprovals,
+ hasNeutralStatus,
hasVotes,
iconForStatus,
} from '../../../utils/label-util';
@@ -227,7 +228,9 @@
renderLabelVote(label: string, labels: LabelNameToInfoMap) {
const labelInfo = labels[label];
if (isDetailedLabelInfo(labelInfo)) {
- const uniqueApprovals = getAllUniqueApprovals(labelInfo);
+ const uniqueApprovals = getAllUniqueApprovals(labelInfo).filter(
+ approval => !hasNeutralStatus(labelInfo, approval)
+ );
return uniqueApprovals.map(
approvalInfo =>
html`<gr-vote-chip
@@ -380,15 +383,19 @@
}
private renderVotes() {
- if (!this.labelInfo) return;
- if (isDetailedLabelInfo(this.labelInfo)) {
- return getAllUniqueApprovals(this.labelInfo).map(
+ const {labelInfo} = this;
+ if (!labelInfo) return;
+ if (isDetailedLabelInfo(labelInfo)) {
+ const approvals = getAllUniqueApprovals(labelInfo).filter(
+ approval => !hasNeutralStatus(labelInfo, approval)
+ );
+ return approvals.map(
approvalInfo => html`<gr-vote-chip
.vote="${approvalInfo}"
- .label="${this.labelInfo}"
+ .label="${labelInfo}"
></gr-vote-chip>`
);
- } else if (isQuickLabelInfo(this.labelInfo)) {
+ } else if (isQuickLabelInfo(labelInfo)) {
return [html`<gr-vote-chip .label="${this.labelInfo}"></gr-vote-chip>`];
} else {
return html``;
diff --git a/polygerrit-ui/app/utils/label-util.ts b/polygerrit-ui/app/utils/label-util.ts
index 7c94892..78c4132 100644
--- a/polygerrit-ui/app/utils/label-util.ts
+++ b/polygerrit-ui/app/utils/label-util.ts
@@ -83,14 +83,20 @@
? LabelStatus.APPROVED
: LabelStatus.RECOMMENDED;
}
- }
- if (isQuickLabelInfo(label)) {
+ } else if (isQuickLabelInfo(label)) {
if (label.approved) return LabelStatus.RECOMMENDED;
if (label.rejected) return LabelStatus.DISLIKED;
}
return LabelStatus.NEUTRAL;
}
+export function hasNeutralStatus(
+ label: DetailedLabelInfo,
+ approvalInfo: ApprovalInfo
+) {
+ return getLabelStatus(label, approvalInfo.value) === LabelStatus.NEUTRAL;
+}
+
export function classForLabelStatus(status: LabelStatus) {
switch (status) {
case LabelStatus.APPROVED:
diff --git a/polygerrit-ui/app/utils/label-util_test.ts b/polygerrit-ui/app/utils/label-util_test.ts
index ec27758..1004aac 100644
--- a/polygerrit-ui/app/utils/label-util_test.ts
+++ b/polygerrit-ui/app/utils/label-util_test.ts
@@ -32,6 +32,7 @@
AccountInfo,
ApprovalInfo,
DetailedLabelInfo,
+ LabelInfo,
QuickLabelInfo,
} from '../types/common';
import {
@@ -182,6 +183,16 @@
assert.equal(getLabelStatus(labelInfo), LabelStatus.DISLIKED);
});
+ test('getLabelStatus - detailed and quick info', () => {
+ let labelInfo: LabelInfo = {all: [], values: VALUES_2};
+ labelInfo = {
+ all: [{value: 0}],
+ values: VALUES_0,
+ rejected: createAccountWithEmail(),
+ };
+ assert.equal(getLabelStatus(labelInfo), LabelStatus.NEUTRAL);
+ });
+
test('getRepresentativeValue', () => {
let labelInfo: DetailedLabelInfo = {all: []};
assert.equal(getRepresentativeValue(labelInfo), 0);