diff --git a/app/components/flow/Results.js b/app/components/flow/Results.js index 2321871..90f7ac0 100644 --- a/app/components/flow/Results.js +++ b/app/components/flow/Results.js @@ -85,7 +85,7 @@ class Results extends Component {
{ !isError && {title} - { ballots.map((item, i) => ) } + { ballots.map((item, i) => ) } }
@@ -106,7 +106,7 @@ class BallotResult extends Component { } render(){ - const {title, quadraticVotes, tokenTotal, totalVotes} = this.props; + const {title, quadraticVotes, tokenTotal, totalVotes, totalVoters} = this.props; const {show} = this.state; const votePercentage = totalVotes > 0 ? parseInt(quadraticVotes) / totalVotes * 100 : 0; @@ -118,7 +118,7 @@ class BallotResult extends Component { {show && } diff --git a/contracts/polls/PollManager.sol b/contracts/polls/PollManager.sol index 7acb6d5..a9390c7 100644 --- a/contracts/polls/PollManager.sol +++ b/contracts/polls/PollManager.sol @@ -17,6 +17,7 @@ contract PollManager is Controlled { mapping(uint8 => mapping(address => uint)) ballots; mapping(uint8 => uint) qvResults; mapping(uint8 => uint) results; + mapping(uint8 => uint) votersByBallot; address author; } @@ -71,7 +72,7 @@ contract PollManager is Controlled { { require(_endTime > block.timestamp, "End time must be greater than current timestamp"); require(_startBlock >= block.number, "Start block must not be in the past"); - require(_numBallots <= 50, "Only a max of 50 ballots are allowed"); + require(_numBallots <= 100, "Only a max of 100 ballots are allowed"); _idPoll = _polls.length; _polls.length ++; @@ -98,7 +99,7 @@ contract PollManager is Controlled { public { require(_idPoll < _polls.length, "Invalid _idPoll"); - require(_numBallots <= 50, "Only a max of 50 ballots are allowed"); + require(_numBallots <= 100, "Only a max of 100 ballots are allowed"); Poll storage p = _polls[_idPoll]; require(p.startBlock > block.number, "You cannot modify an active poll"); @@ -186,6 +187,7 @@ contract PollManager is Controlled { if(_ballots[i] != 0){ p.qvResults[i] += sqrt(_ballots[i] / 1 ether); p.results[i] += _ballots[i]; + p.votersByBallot[i]++; } } @@ -215,6 +217,7 @@ contract PollManager is Controlled { if(ballotAmount != 0){ p.qvResults[i] -= sqrt(ballotAmount / 1 ether); p.results[i] -= ballotAmount; + p.votersByBallot[i]--; } } @@ -252,8 +255,9 @@ contract PollManager is Controlled { bool _finalized, uint _voters, address _author, - uint[50] _tokenTotal, - uint[50] _quadraticVotes + uint[100] _tokenTotal, + uint[100] _quadraticVotes, + uint[100] _votersByBallot ) { require(_idPoll < _polls.length, "Invalid _idPoll"); @@ -273,6 +277,7 @@ contract PollManager is Controlled { for(uint8 i = 0; i < p.numBallots; i++){ _tokenTotal[i] = p.results[i]; _quadraticVotes[i] = p.qvResults[i]; + _votersByBallot[i] = p.votersByBallot[i]; } } @@ -303,7 +308,7 @@ contract PollManager is Controlled { function getVote(uint _idPoll, address _voter) public view - returns (uint[50] votes){ + returns (uint[100] votes){ require(_idPoll < _polls.length, "Invalid _idPoll"); Poll storage p = _polls[_idPoll]; for(uint8 i = 0; i < p.numBallots; i++){