source: frontend/src/Dashboard/Review.js@ 13f1472

Last change on this file since 13f1472 was 63f5ced, checked in by Danilo <danilo.najkov@…>, 23 months ago

reviews pagination

  • Property mode set to 100644
File size: 3.6 KB
RevLine 
[899b19d]1import React, {useEffect, useState} from 'react'
[63f5ced]2import {Button, Card, Input, List, notification, Pagination, Rate, Spin, Tooltip} from "antd";
[899b19d]3import axios from "axios";
4import env from "../env";
5import moment from "moment";
6
7const Review = props => {
[63f5ced]8 const [reviews, setReviews] = useState([]);
9 const [restaurant, setRestaurant] = useState({})
[899b19d]10 const [loading, setLoading] = useState(true);
[63f5ced]11 const [reviewSize, setReviewSize] = useState(0)
12
[899b19d]13
14 useEffect(()=> {
15 setLoading(true);
16 getRestaurant()
[a26f6a1]17 console.log(props.user)
[899b19d]18 },[])
19 useEffect(()=> {
20 getRestaurant()
21 },[props.refresh])
22
[63f5ced]23
24 const getRestaurant = (pg = 1, size = 5) => {
25 axios.get(env.api + 'Reviews/count',).then(res=>{
26 setReviewSize(res.data);
27 });
[899b19d]28 axios.get(env.api + 'Restaurants').then(res=>{
29 setRestaurant(res.data);
[63f5ced]30 console.log(pg, size)
31 axios.get(env.api + 'Reviews',{params:{page:pg-1, pageSize: size}}).then(res=>{
32 setReviews(res.data);
33 setLoading(false);
34 });
[899b19d]35 });
36 }
37
38 return(
39 <div style={{padding: props.front ? 0 : '20px',textAlign:'start'}}>
40 <div style={{
41 width: '100%',
42 backgroundColor: 'white',
43 padding: '20px',
44 height:'75px',
45 border: '1px solid lightgray'
46 }} id={'expandMain'}>
47 <h2 style={{float: 'left'}}>Оценки</h2>
48 {props.front ?
49 (props.user?
[a26f6a1]50 <Button style={{float:'right'}} type={'primary'} onClick={()=>props.user.isConfirmed ? props.setVisible(true) : notification['error']({message: <p>Мора да го потврдите вашиот мејл за да оставите оценка. <a href={'/confirm-email'}>Потврдете го тука</a></p>})}>Внеси оценка</Button>
[899b19d]51 : <Tooltip title={'Мора да се најавите за да оставите оценка'}><Button style={{float:'right'}} disabled type={'primary'} onClick={()=>props.setVisible(true)}>Внеси оценка</Button></Tooltip>)
52 : ''
53 }
54 </div>
55 {loading ? <Spin style={{margin: '20px'}}/> :
56 <div>
57 <div style={{backgroundColor: 'white',padding:'10px', border:'1px solid lightgray', borderTop: 'none'}}>
[63f5ced]58 <h3>Средна оценка: <Rate disabled allowHalf value={restaurant.averageReview}/> од вкупно {reviewSize} оценки</h3>
[899b19d]59 </div>
[63f5ced]60 <List dataSource={reviews} itemLayout={'horizontal'} locale={{emptyText:'Нема оставени оценки за овој ресторан'}}
[899b19d]61 renderItem={item => (
62 <Card title={item.title} style={{width:'98%',backgroundColor:'white',margin:'1%'}}>
63 <p>{item.description}</p>
64 <Rate disabled value={item.stars}/>
65 <p style={{color:'gray'}}>{item.username} / {moment(item.createdAt).format("DD.MM.yyyy")}</p>
66 </Card>
67 )}/>
[63f5ced]68 <div style={{paddingBottom:'20px', textAlign:'center'}}>
69 <Pagination defaultPageSize={5} total={reviewSize} onChange={(pg,size)=>getRestaurant(pg,size)} showSizeChanger pageSizeOptions={[5,10,20,50]}/>
70 </div>
[899b19d]71 </div>
72 }
73 </div>
74 )
75}
76
77export default Review;
Note: See TracBrowser for help on using the repository browser.