import React, {useEffect, useState, useCallback} from 'react';
import MenuItem from './MenuItem';
import settings from '../../Helpers/Url';
import axios from 'axios';
import { css } from "@emotion/react";
import ClipLoader from "react-spinners/ClipLoader";
import OrderMap from '../../Helpers/OrderMap';
import Modal from 'react-modal';
import "bootstrap/dist/css/bootstrap.min.css"
import './Menu.css';
export default function Menu() {
const [pizzaData, setPizzaData] = useState([]);
let [loading, setLoading] = useState(false);
let [color, setColor] = useState("#ffffff");
let [getLatitude, setLatitude] = useState("");
let [getLongitude, setLongitude] = useState("");
const [recordData, setMapData] = useState({});
const [modalIsOpen, setIsOpen] = useState(false);
const [responseMessage, setResponseMessage] = useState("");
const customStyles = {
content: {
top: '50%',
left: '50%',
right: 'auto',
bottom: 'auto',
marginRight: '-50%',
transform: 'translate(-50%, -50%)',
}
};
const override = css`
display: block;
margin: 0 auto;
border-color: red;
`;
function setRecordData(data){
setMapData(data);
}
function openModal() {
setIsOpen(true);
}
function closeModal() {
setIsOpen(false);
}
function getPosition(){
console.log("Im here");
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(loc){
console.log("getCurrentPosition");
console.log('The location in lat lon format is: [', loc.coords.latitude, ',', loc.coords.longitude, ']');
setLatitude(loc.coords.latitude);
setLongitude(loc.coords.longitude);
},function(error) {
console.log(error)
},{timeout:150000, enableHighAccuracy:true})
} else {
console.log("Geolocation is not supported by this browser.");
}
}
const fetchPizzaData = useCallback(() => {
setLoading(true);
const baseurl = `${settings.baseUrl}/pizza_type`
axios.get(baseurl, {headers:settings.headers})
.then((response) => {
setLoading(false);
if(response.data.responseCode === '200'){
setPizzaData(response.data.data.data)
}else{
}
})
}, [])
useEffect(() => {
fetchPizzaData()
getPosition()
}, [])
return (
<div className='menu'>
<h1 className='menuTitle'>Our Menu</h1>
<div className='menuList'>
{pizzaData.map((menuItem, key) =>{
return <div className="menuItem" key={key}>
<MenuItem menuData={menuItem}/>
<p> <button className="order-modal-button" onClick={(event) => { openModal(); setRecordData(menuItem);}}>Order</button> </p>
</div>
})}
</div>
<div className="sweet-loading">
<ClipLoader color={color} loading={loading} css={override} size={150} />
</div>
<Modal
isOpen={modalIsOpen}
onRequestClose={closeModal}
style={customStyles}
>
<h2>{responseMessage}</h2>
<button className="modal-close-button" onClick={closeModal}>close</button>
<form>
<OrderMap
google={"google"}
center={{ lat: getLatitude ?? '52.1579' , lng: getLongitude ?? '106.6702' }}
height="300px"
pizza={recordData}
zoom={15}
/>
</form>
</Modal>
</div>
)
}
|