Merge "Return PATCHSET_LEVEL comments to emails"
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 724d803..2175e04 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
@@ -28,9 +28,11 @@
import {unique} from '../../../utils/common-util';
import {
extractAssociatedLabels,
+ hasVotes,
iconForStatus,
} from '../../../utils/label-util';
import {fontStyles} from '../../../styles/gr-font-styles';
+import {charsOnly} from '../../../utils/string-util';
@customElement('gr-submit-requirements')
export class GrSubmitRequirements extends LitElement {
@@ -117,7 +119,9 @@
</thead>
<tbody>
${submit_requirements.map(
- requirement => html`<tr id="requirement-${requirement.name}">
+ requirement => html`<tr
+ id="requirement-${charsOnly(requirement.name)}"
+ >
<td>${this.renderStatus(requirement.status)}</td>
<td class="name">
<gr-limited-text
@@ -134,7 +138,7 @@
${submit_requirements.map(
requirement => html`
<gr-submit-requirement-hovercard
- for="requirement-${requirement.name}"
+ for="requirement-${charsOnly(requirement.name)}"
.requirement="${requirement}"
.change="${this.change}"
.account="${this.account}"
@@ -159,11 +163,23 @@
renderVotes(requirement: SubmitRequirementResultInfo) {
const requirementLabels = extractAssociatedLabels(requirement);
- const labels = this.change?.labels ?? {};
+ const allLabels = this.change?.labels ?? {};
+ const associatedLabels = Object.keys(allLabels).filter(label =>
+ requirementLabels.includes(label)
+ );
- return Object.keys(labels)
- .filter(label => requirementLabels.includes(label))
- .map(label => this.renderLabelVote(label, labels));
+ const everyAssociatedLabelsIsWithoutVotes = associatedLabels.every(
+ label => {
+ const labelInfo = allLabels[label];
+ if (!isDetailedLabelInfo(labelInfo)) return true;
+ return !hasVotes(labelInfo);
+ }
+ );
+ if (everyAssociatedLabelsIsWithoutVotes) return html`No votes`;
+
+ return associatedLabels.map(label =>
+ this.renderLabelVote(label, allLabels)
+ );
}
renderLabelVote(label: string, labels: LabelNameToInfoMap) {
diff --git a/polygerrit-ui/app/utils/label-util.ts b/polygerrit-ui/app/utils/label-util.ts
index 16e6803..066c7cd 100644
--- a/polygerrit-ui/app/utils/label-util.ts
+++ b/polygerrit-ui/app/utils/label-util.ts
@@ -121,6 +121,13 @@
return label.all?.filter(x => x._account_id === account._account_id)[0];
}
+export function hasVotes(labelInfo: DetailedLabelInfo) {
+ return (labelInfo.all ?? []).some(
+ approval =>
+ getLabelStatus(labelInfo, approval.value) !== LabelStatus.NEUTRAL
+ );
+}
+
export function labelCompare(labelName1: string, labelName2: string) {
if (labelName1 === CODE_REVIEW && labelName2 === CODE_REVIEW) return 0;
if (labelName1 === CODE_REVIEW) return -1;