diff --git a/components/Proposals.vue b/components/Proposals.vue
index 730c64d..0962635 100644
--- a/components/Proposals.vue
+++ b/components/Proposals.vue
@@ -10,10 +10,10 @@
-->
-
-
-
-
+
+
+
+
@@ -94,6 +94,16 @@ export default {
}
},
methods: {
+ hasVoteCounts (proposal) {
+ return proposal && Array.isArray(proposal.vote_counts) && proposal.vote_counts.length > 0
+ },
+ proposalVoteWeight (proposal, voteType) {
+ if (!this.hasVoteCounts(proposal)) {
+ return 0
+ }
+ const voteCount = proposal.vote_counts.find(voteCount => parseInt(voteCount.key) === voteType)
+ return voteCount ? Number(voteCount.value) || 0 : 0
+ },
print (x) {
console.log(x)
}
diff --git a/pages/proposals/_id/index.vue b/pages/proposals/_id/index.vue
index 73ecbd4..2cbddec 100644
--- a/pages/proposals/_id/index.vue
+++ b/pages/proposals/_id/index.vue
@@ -427,7 +427,19 @@ export default {
}
},
votePercentage (vote, proposal) {
- return (vote.weight / (proposal.vote_counts[0].value + proposal.vote_counts[1].value + proposal.vote_counts[2].value) * 100).toFixed(2)
+ const totalWeight = this.proposalVoteWeight(proposal)
+ if (totalWeight === 0) {
+ return '0.00'
+ }
+ return (vote.weight / totalWeight * 100).toFixed(2)
+ },
+ proposalVoteWeight (proposal) {
+ if (!proposal || !Array.isArray(proposal.vote_counts)) {
+ return 0
+ }
+ return proposal.vote_counts.reduce((total, voteCount) => {
+ return total + (Number(voteCount.value) || 0)
+ }, 0)
},
async assignToNextCycle () {
if (this.$dao.proposalConfig && this.proposal) {