From 650e93b9a29347dcb9ef1d5495bb93f6ff160b5c Mon Sep 17 00:00:00 2001 From: Tushar Karkera <104358692+TusharKarkera22@users.noreply.github.com> Date: Mon, 19 Feb 2024 16:08:13 +0530 Subject: [PATCH] Voters list requires page reload #295 --- .../ballots/components/BallotListItem.vue | 17 +++++- src/pages/trails/ballots/view/BallotView.vue | 57 ++++++++++++------- 2 files changed, 52 insertions(+), 22 deletions(-) diff --git a/src/pages/trails/ballots/components/BallotListItem.vue b/src/pages/trails/ballots/components/BallotListItem.vue index 1df76679..f89ac41a 100644 --- a/src/pages/trails/ballots/components/BallotListItem.vue +++ b/src/pages/trails/ballots/components/BallotListItem.vue @@ -79,6 +79,14 @@ export default { 100; return this.trunc(total, 2); }, + updateVotedChipVisibility() { + this.$nextTick(() => { + const votedChip = this.$refs.votedChip; + if (votedChip) { + votedChip.style.display = this.userVotes[this.ballot.ballot_name] ? 'flex' : 'none'; + } + }); + }, async onCastVote({ options, option, ballotName }) { this.voting = true; await this.castVote({ @@ -109,9 +117,12 @@ div img(:src="`statics/app-icons/inactive-bgr-icon2.png`").bgr-icon2 div.column.items-start.absolute-top-left ballot-chip(:type="ballot.category", :isBallotOpened="isBallotOpened") - ballot-chip(:type="'voted'", - :isBallotOpened="isBallotOpened", - :class="userVotes[ballot.ballot_name] ? '' : 'hidden'") + ballot-chip( + :type="'voted'" + :isBallotOpened="isBallotOpened" + :class="userVotes[ballot.ballot_name] ? '' : 'hidden'" + v-if="isBallotOpened" + ) q-separator.card-separator-vertical(vertical inset) diff --git a/src/pages/trails/ballots/view/BallotView.vue b/src/pages/trails/ballots/view/BallotView.vue index 080fc707..28a4413b 100644 --- a/src/pages/trails/ballots/view/BallotView.vue +++ b/src/pages/trails/ballots/view/BallotView.vue @@ -35,6 +35,7 @@ export default { scrollPosition: null, notice: false, showDetails: false, + showVotedChip: false, }; }, async mounted() { @@ -268,6 +269,14 @@ export default { options: options || [option], }); this.voting = false; + console.log('vote',ballotName) + // Check if the voting was successful, then update voted chip visibility + if (this.userVotes[ballotName]) { + this.updateVotedChipVisibility(); + + + + } }, showAlert(message) { this.$q.notify({ @@ -279,13 +288,13 @@ export default { showNotification() { this.$q.notify({ icon: this.notifications[0].icon, - message: - this.notifications[0].status === 'success' - ? this.$t('notifications.trails.successSigning') - : this.$t('notifications.trails.errorSigning'), - color: - this.notifications[0].status === 'success' ? 'positive' : 'negative', + message:this.notifications[0].status === 'success'?this.$t('notifications.trails.successSigning'): this.$t('notifications.trails.errorSigning'), + color:this.notifications[0].status === 'success' ? 'positive' : 'negative', + }); + if (this.notifications[0].status === 'success') { + this.userVotes[this.ballot.ballot_name] = true; + } }, async showVoters() { this.showDetails = this.voters.length > 0; @@ -316,10 +325,12 @@ export default { if (this.isPositiveVotePower) { if (this.isUserRegisteredInTreasury) { register = false; - } else { + } + else { if (this.ballot.treasury.access === 'public') { register = true; - } else { + } + else { // redirect to treasuties page with filter this.$router.push({ path: '/trails/treasuries', @@ -328,15 +339,18 @@ export default { return; // Do not Cast Vote } } - } else { + } + else { if (this.isOfficialSymbol) { this.showAlert('pages.trails.ballots.stakeBeforeVotingLong'); - } else { + } + else { this.showAlert( - 'pages.trails.ballots.needPositiveVoteLong.' + - this.votingPowerComesFrom + 'pages.trails.ballots.needPositiveVoteLong.' + + this.votingPowerComesFrom ); } + return; } @@ -349,6 +363,11 @@ export default { await this.resetUserVotes(); this.showNotification(); + this.userVotes[this.ballot.ballot_name] = true; + }, + + updateVotedChipVisibility() { + this.showVotedChip = true; }, async cancel() { await this.cancelBallot(this.ballot); @@ -383,10 +402,10 @@ export default { shouldDisableCheckbox(key) { return ( !this.isAuthenticated || - !this.isBallotOpened(this.ballot) || - (this.votes.length === this.ballot.max_options && - !this.votes.includes(key)) - ); + !this.isBallotOpened(this.ballot) || + (this.votes.length === this.ballot.max_options && + !this.votes.includes(key)) + ); }, displayBallotSelectionText() { if (this.votes.length === 0) { @@ -407,8 +426,8 @@ export default { }, canUserVote() { this.userCanVote = - this.votes.length >= this.ballot.min_options && - this.votes.length <= this.ballot.max_options; + this.votes.length >= this.ballot.min_options && + this.votes.length <= this.ballot.max_options; return this.userCanVote; }, shouldDisableVoteButton() { @@ -485,7 +504,7 @@ export default { ballot-chip(:type="ballot.category", :isBallotOpened="isBallotOpened(ballot)") ballot-chip(:type="'voted'", :isBallotOpened="isBallotOpened(ballot)", - :class="userVotes[ballot.ballot_name] ? '' : 'hidden'") + :class="{ 'hidden': !userVotes[ballot.ballot_name] }") ballot-status( :ballot="ballot" :isBallotOpened="isBallotOpened(ballot)"