source: frontend/src/FrontPage.js@ cc4db18

Last change on this file since cc4db18 was cc4db18, checked in by Danilo <danilo.najkov@…>, 2 years ago

reservation module changes + contact module + menu module

  • Property mode set to 100644
File size: 4.3 KB
Line 
1import React, {useState, useEffect} from 'react'
2import {Header} from "./Header";
3import {useNavigate} from "react-router-dom";
4import {Button, Card, Image, Modal, Spin} from "antd";
5import placeholderImage from '../src/Assets/placeholder.png'
6import AddNewReservation from "./Dashboard/AddNewReservation";
7import axios from "axios";
8import env from "./env";
9
10const FrontPage = ({}) => {
11 const [restaurant, setRestaurant] = useState({name:'Sample Restaurant name', address: 'Sample street 1', city:'Sample'});
12 const [newReservationModal, setNewReservationModal] = useState(false);
13 const [saveModalLoading, setSaveModalLoading] = useState(false);
14 const [loading, setLoading] = useState(true);
15 const history = useNavigate();
16
17 useEffect(()=>{
18 setLoading(true);
19 axios.get(env.api + 'Restaurants').then(res=>{
20 setRestaurant(res.data);
21 setLoading(false);
22 });
23 },[])
24
25 return(
26 <div>
27 <Header onClickButton={()=>history('/login')} buttonText={'Логирај се'}/>
28 {loading ? <Spin style={{margin: 20}}/> :
29 <div style={{
30 height: '400px',
31 width: '100%',
32 borderTop: '1px solid gray',
33 padding: '20px'
34 }}>
35 <div id={'businessFrontImage'}>
36 <Image
37 src={restaurant.base64Image}
38 id={'businessFrontInsideImage'}
39 placeholder={
40 <img
41 src={placeholderImage}
42 alt={'place'}
43 style={{width: '100%', height: '100%'}}
44 />
45 }
46 wrapperStyle={{overflow: 'hidden', width: '100%'}}
47 style={{width: '100%', height: '100%', margin: 'auto', objectFit: 'cover'}}>
48 </Image>
49 </div>
50 <div id={'businessFrontInfo'}>
51 <div style={{
52 width: '100%',
53 height: '100%',
54 display: 'flex',
55 flexDirection: 'column',
56 justifyContent: 'space-between'
57 }}>
58 <div style={{flexGrow: 1, fontSize: '20px', fontWeight: '500', textAlign: 'start'}}>
59 {restaurant.name}
60 <div style={{
61 color: 'gray',
62 fontSize: '10px'
63 }}>{restaurant.address}, {restaurant.phone}</div>
64 </div>
65 <Button onClick={() => setNewReservationModal(true)}
66 style={{width: '100%', marginTop: '5px'}} type={'primary'}>Резервирај</Button>
67 </div>
68
69 </div>
70 <div style={{textAlign: 'start', backgroundColor: '#F2F2F2'}}>
71 <h2 style={{textAlign:'center',paddingTop:'20px'}}>Мени</h2>
72 {restaurant.menu.map(el =>
73 <Card title={el.title} style={{ width: 280, display:'inline-block', margin:'10px' }} size="small">
74 <p>{el.description}</p>
75 <b>{el.price} ден.</b>
76 </Card>
77 )}
78 </div>
79 </div>
80 }
81 <Modal
82 style={{top: 20}}
83 width={'700px'}
84 title="Нова Резервација"
85 footer={[
86 <Button form="newResForm" key="submit" htmlType="submit" type={'primary'} loading={saveModalLoading}>
87 Прати
88 </Button>
89 ]}
90 onCancel={()=>setNewReservationModal(false)}
91 visible={newReservationModal}>
92 <AddNewReservation setModalSaveLoading={setSaveModalLoading} setModalVisible={setNewReservationModal} />
93 </Modal>
94 </div>
95
96 )
97}
98
99export default FrontPage;
Note: See TracBrowser for help on using the repository browser.