[Glitch] Fix vote checkmark in poll results

Port b0cda7a504 to glitch-soc

Signed-off-by: Thibaut Girka <thib@sitedethib.com>
This commit is contained in:
ThibG 2019-09-28 19:41:36 +02:00 committed by Thibaut Girka
parent 8a63d659ac
commit 98cc81c0e2
2 changed files with 10 additions and 9 deletions

View file

@ -14,6 +14,7 @@ import Icon from 'flavours/glitch/components/icon';
const messages = defineMessages({ const messages = defineMessages({
closed: { id: 'poll.closed', defaultMessage: 'Closed' }, closed: { id: 'poll.closed', defaultMessage: 'Closed' },
voted: { id: 'poll.voted', defaultMessage: 'You voted for this answer', description: 'Tooltip of the "voted" checkmark in polls' },
}); });
const makeEmojiMap = record => record.get('emojis').reduce((obj, emoji) => { const makeEmojiMap = record => record.get('emojis').reduce((obj, emoji) => {
@ -100,11 +101,11 @@ class Poll extends ImmutablePureComponent {
}; };
renderOption (option, optionIndex, showResults) { renderOption (option, optionIndex, showResults) {
const { poll, disabled } = this.props; const { poll, disabled, intl } = this.props;
const percent = poll.get('votes_count') === 0 ? 0 : (option.get('votes_count') / poll.get('votes_count')) * 100; const percent = poll.get('votes_count') === 0 ? 0 : (option.get('votes_count') / poll.get('votes_count')) * 100;
const leading = poll.get('options').filterNot(other => other.get('title') === option.get('title')).every(other => option.get('votes_count') > other.get('votes_count')); const leading = poll.get('options').filterNot(other => other.get('title') === option.get('title')).every(other => option.get('votes_count') > other.get('votes_count'));
const active = !!this.state.selected[`${optionIndex}`]; const active = !!this.state.selected[`${optionIndex}`];
const voted = option.get('voted') || (poll.get('own_votes') && poll.get('own_votes').includes(optionIndex)); const voted = option.get('voted') || (poll.get('own_votes') && poll.get('own_votes').includes(optionIndex));
let titleEmojified = option.get('title_emojified'); let titleEmojified = option.get('title_emojified');
if (!titleEmojified) { if (!titleEmojified) {
@ -134,7 +135,7 @@ class Poll extends ImmutablePureComponent {
{!showResults && <span className={classNames('poll__input', { checkbox: poll.get('multiple'), active })} />} {!showResults && <span className={classNames('poll__input', { checkbox: poll.get('multiple'), active })} />}
{showResults && <span className='poll__number'> {showResults && <span className='poll__number'>
{!!voted && <Icon id='check' className='poll__vote__mark' />} {!!voted && <Icon id='check' className='poll__vote__mark' title={intl.formatMessage(messages.voted)} />}
{Math.round(percent)}% {Math.round(percent)}%
</span>} </span>}

View file

@ -102,18 +102,18 @@
&__number { &__number {
display: inline-block; display: inline-block;
width: 48px; width: 52px;
font-weight: 700; font-weight: 700;
padding: 0 10px; padding: 0 10px;
padding-left: 8px;
text-align: right; text-align: right;
margin-top: auto; margin-top: auto;
margin-bottom: auto; margin-bottom: auto;
flex: 0 0 48px; flex: 0 0 52px;
} }
&__vote__mark { &__vote__mark {
float: left; float: left;
color: $valid-value-color;
line-height: 18px; line-height: 18px;
} }