From 8930046d41841cba6cf368076b86e26088807848 Mon Sep 17 00:00:00 2001 From: ilyayudovin Date: Tue, 23 Jun 2020 19:41:43 +0300 Subject: feat:add percentage line --- src/components/PollCard/PollCard.tsx | 51 +++++++++++++++++++++++++++--------- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/src/components/PollCard/PollCard.tsx b/src/components/PollCard/PollCard.tsx index baf896f..190d001 100644 --- a/src/components/PollCard/PollCard.tsx +++ b/src/components/PollCard/PollCard.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, {useState} from 'react'; import { makeStyles } from '@material-ui/core/styles'; import { Card, @@ -9,6 +9,8 @@ import { } from '@material-ui/core/'; import { Poll } from '../../types'; import PercentageBar from './PercentageBar'; +import {post} from '../../requests'; +import teal from "@material-ui/core/colors/teal"; interface PropTypes { poll: Poll; @@ -18,32 +20,56 @@ interface PropTypes { const useStyles = makeStyles(theme => ({ root: { maxWidth: theme.spacing(75), - height: theme.spacing(63), - margin: '20px auto' + height: 488, + margin: '40px auto', }, images: { height: theme.spacing(50), - width: theme.spacing(38) + width: 300 }, imagesBlock: { display: 'flex' }, avatar: { cursor: 'pointer' - } + }, + rateLine: { + position:'relative', + margin: '0 auto', + width: '100%', + height:16, + backgroundColor: teal[100] + }, + fillRateLine: { + height:16, + backgroundColor: teal[800], + transitionDuration: '0.5s' + }, })); - const PollCard: React.FC = ({ poll, navigate }) => { const classes = useStyles(); const { author, contents } = poll; + const [rate, setRate] = useState<{left: number, right: number}>({left: contents.left.votes,right: contents.right.votes}); const handleNavigate = () => { navigate('profile', poll.author._id); }; - const leftPercentage = Math.round(100 * (contents.left.votes / (contents.left.votes + contents.right.votes))); - const rightPercentage = 100 - leftPercentage; + const vote = (which: 'left' | 'right') => { + post(`polls/${ poll._id }/votes/`,{ which }).then((response)=>{ + console.log(response.data); + const leftV = response.data.contents.left.votes; + const rightV = response.data.contents.right.votes; + setRate({left: leftV, right: rightV}); + }) + .catch(error => { + console.log(error.response) + }); + }; + + const leftPercentage = Math.round(100 * (rate.left / (rate.left + rate.right))); + const rightPercentage = 100 - leftPercentage; return ( @@ -60,14 +86,14 @@ const PollCard: React.FC = ({ poll, navigate }) => { title={author.name} />
- + vote('left')}> - + vote('right')}> = ({ poll, navigate }) => {
+
+
+
); }; - export default PollCard; - -- cgit v1.2.3