[Glitch] Show user what options they have voted
Port front-end changes from b359974d9b356bb723fe046466b178328cf9bbaf to glitch-soc Signed-off-by: Thibaut Girka <thib@sitedethib.com>
This commit is contained in:
		
							parent
							
								
									2441d07cd5
								
							
						
					
					
						commit
						e25b7feb72
					
				@ -71,8 +71,9 @@ export function normalizePoll(poll) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  const emojiMap = makeEmojiMap(normalPoll);
 | 
					  const emojiMap = makeEmojiMap(normalPoll);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  normalPoll.options = poll.options.map(option => ({
 | 
					  normalPoll.options = poll.options.map((option, index) => ({
 | 
				
			||||||
    ...option,
 | 
					    ...option,
 | 
				
			||||||
 | 
					    voted: poll.own_votes && poll.own_votes.includes(index),
 | 
				
			||||||
    title_emojified: emojify(escapeTextContentForBrowser(option.title), emojiMap),
 | 
					    title_emojified: emojify(escapeTextContentForBrowser(option.title), emojiMap),
 | 
				
			||||||
  }));
 | 
					  }));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -10,6 +10,7 @@ import spring from 'react-motion/lib/spring';
 | 
				
			|||||||
import escapeTextContentForBrowser from 'escape-html';
 | 
					import escapeTextContentForBrowser from 'escape-html';
 | 
				
			||||||
import emojify from 'flavours/glitch/util/emoji';
 | 
					import emojify from 'flavours/glitch/util/emoji';
 | 
				
			||||||
import RelativeTimestamp from './relative_timestamp';
 | 
					import RelativeTimestamp from './relative_timestamp';
 | 
				
			||||||
 | 
					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' },
 | 
				
			||||||
@ -103,6 +104,7 @@ class Poll extends ImmutablePureComponent {
 | 
				
			|||||||
    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));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    let titleEmojified = option.get('title_emojified');
 | 
					    let titleEmojified = option.get('title_emojified');
 | 
				
			||||||
    if (!titleEmojified) {
 | 
					    if (!titleEmojified) {
 | 
				
			||||||
@ -131,7 +133,10 @@ 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'>{Math.round(percent)}%</span>}
 | 
					          {showResults && <span className='poll__number'>
 | 
				
			||||||
 | 
					            {!!voted && <Icon id='check' className='poll__vote__mark' />}
 | 
				
			||||||
 | 
					            {Math.round(percent)}%
 | 
				
			||||||
 | 
					          </span>}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          <span dangerouslySetInnerHTML={{ __html: titleEmojified }} />
 | 
					          <span dangerouslySetInnerHTML={{ __html: titleEmojified }} />
 | 
				
			||||||
        </label>
 | 
					        </label>
 | 
				
			||||||
 | 
				
			|||||||
@ -102,13 +102,19 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  &__number {
 | 
					  &__number {
 | 
				
			||||||
    display: inline-block;
 | 
					    display: inline-block;
 | 
				
			||||||
    width: 36px;
 | 
					    width: 48px;
 | 
				
			||||||
    font-weight: 700;
 | 
					    font-weight: 700;
 | 
				
			||||||
    padding: 0 10px;
 | 
					    padding: 0 10px;
 | 
				
			||||||
    text-align: right;
 | 
					    text-align: right;
 | 
				
			||||||
    margin-top: auto;
 | 
					    margin-top: auto;
 | 
				
			||||||
    margin-bottom: auto;
 | 
					    margin-bottom: auto;
 | 
				
			||||||
    flex: 0 0 36px;
 | 
					    flex: 0 0 48px;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  &__vote__mark {
 | 
				
			||||||
 | 
					    float: left;
 | 
				
			||||||
 | 
					    color: $valid-value-color;
 | 
				
			||||||
 | 
					    line-height: 18px;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  &__footer {
 | 
					  &__footer {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user