diff --git a/client/src/components/admin-customer/Banner.jsx b/client/src/components/admin-customer/Banner.jsx
new file mode 100644
index 0000000..75a60ea
--- /dev/null
+++ b/client/src/components/admin-customer/Banner.jsx
@@ -0,0 +1,16 @@
+import React from 'react';
+import { AiOutlineClose } from 'react-icons/ai'
+
+const Banner = ({message, onClose}) => {
+ return (
+
+ )
+};
+export default Banner;
\ No newline at end of file
diff --git a/client/src/components/admin-customer/BroadcastModal.jsx b/client/src/components/admin-customer/BroadcastModal.jsx
new file mode 100644
index 0000000..de4958e
--- /dev/null
+++ b/client/src/components/admin-customer/BroadcastModal.jsx
@@ -0,0 +1,37 @@
+import React, {useState} from 'react';
+import { AiOutlineClose } from 'react-icons/ai'
+
+const BroadcastModal = ({ isOpen, onClose}) => {
+ //State for storing the message
+ const [announcement, setAnnouncement] = useState('');
+ const [displayAnnouncement, setDisplayAnnouncement] = useState(true);
+ //set announcement to whatever user inputs in the text area
+ const handleChange = (e) => {
+ setAnnouncement(e.target.value)
+ }
+ if (!isOpen) return null;
+ return (
+
+
+
+ {/*Button to close the modal*/}
+
+
+ {/*Text Area for Admin to input the announcement*/}
+
+ {/*Button for Admin to release the announcement*/}
+
+
+
+ )
+}
+export default BroadcastModal;
\ No newline at end of file
diff --git a/client/src/components/admin-customer/BroadcastingSystem.jsx b/client/src/components/admin-customer/BroadcastingSystem.jsx
new file mode 100644
index 0000000..3d8667d
--- /dev/null
+++ b/client/src/components/admin-customer/BroadcastingSystem.jsx
@@ -0,0 +1,21 @@
+import React, {useState} from 'react';
+import BroadcastModal from './BroadcastModal';
+const BroadcastingSystem = () => {
+ const [displayModal, setDisplayModal] = useState(false);
+ const openModal = () => {
+ setDisplayModal(true);
+ }
+ const closeModal = () => {
+ setDisplayModal(false);
+ }
+ return (
+
+ );
+};
+
+export default BroadcastingSystem;
\ No newline at end of file
diff --git a/client/src/components/shoppingCart.jsx b/client/src/components/shoppingCart.jsx
index 70d6174..a310c58 100644
--- a/client/src/components/shoppingCart.jsx
+++ b/client/src/components/shoppingCart.jsx
@@ -35,6 +35,7 @@ const ShoppingCart = ({ orderNum, tableNum, date, cartItems, setCartItems, WebSo
const [subTotal, setSubTotal] = useState(0);
const [total, setTotal] = useState(0);
const [tax, setTax] = useState(0);
+ const [help, setHelp] = useState(true);
useEffect(() => {
const sum = cartItems.reduce((accu, cartItem) => {
return accu + cartItem.itemPrice * cartItem.itemCount;
diff --git a/client/src/pages/admin-customer.js b/client/src/pages/admin-customer.js
index 9e5a78d..b39557b 100644
--- a/client/src/pages/admin-customer.js
+++ b/client/src/pages/admin-customer.js
@@ -1,5 +1,6 @@
import React from 'react'
import AdminNavbar from '../components/adminNavbar'
+import BroadcastingSystem from '../components/admin-customer/BroadcastingSystem';
const Admin_customer = (props) => {
const { WebSocketService, setPage } = props;
@@ -10,7 +11,7 @@ const Admin_customer = (props) => {
Customer
-
{/* Component */}
+
diff --git a/client/src/pages/admin-dashboard.js b/client/src/pages/admin-dashboard.js
index 2bd4f89..42a9f32 100644
--- a/client/src/pages/admin-dashboard.js
+++ b/client/src/pages/admin-dashboard.js
@@ -6,18 +6,35 @@ import Admin_analytics from './admin-analytics';
import Admin_customer from './admin-customer';
import Admin_table from './admin-table';
import Admin_orders from './admin-orders';
+import Banner from '../components/admin-customer/Banner';
const Admin_dashboard = (props) => {
const [page, setPage] = useState("Dashboard");
-
+ const [help, setHelp] = useState(true);
+ const [tableNum, setTableNum] = useState('12');
+ const [helpMessage, setHelpMessage] = useState('');
const {WebSocketService} = props;
+ const [displayBanner, setDisplayBanner] = useState(false);
+
+ const checkHelp = () => {
+ if (help) {
+ setHelpMessage('Customer at table number ' + tableNum + ' requires assistance');
+ setDisplayBanner(true);
+ }
+ }
+
+ const closeBanner = () => {
+ setDisplayBanner(false);
+ setHelp(false);
+ }
useEffect(() => {
if (!WebSocketService.socket){
WebSocketService.connect('127.0.0.1', '8080', true)
.then(alert("Connected!"));
}
+ checkHelp();
}, []);
if (page === "Dashboard"){
@@ -28,6 +45,11 @@ const Admin_dashboard = (props) => {
Dashboard
+
+ {displayBanner && (
+
+ )}
+
{/* Component */}
diff --git a/client/src/pages/menu.js b/client/src/pages/menu.js
index b362974..516fb86 100644
--- a/client/src/pages/menu.js
+++ b/client/src/pages/menu.js
@@ -5,18 +5,19 @@ import ItemModal from '../components/itemModal';
import ShoppingCart from '../components/shoppingCart';
import LpNavBar from '../components/landing-page/lpNavBar';
import WebSocketService from '../WebSocketService';
+import Banner from '../components/admin-customer/Banner';
const Menu = (props) => {
// Testing
- // let admin = true;
- let admin = false;
-
+ let admin = true;
+ //let admin = false;
+ const [announcement, setAnnouncement] = useState('Restaurant is closing soon');
const [items, setItems] = useState([]); // used to save data states
const [isLoading, setIsLoading] = useState(true); // used to save whether data is loading
-
const [menuItems, setMenuItems] = useState([]);
+ const [displayBanner, setDisplayBanner] = useState(false);
const menuSet = false;
@@ -68,6 +69,10 @@ const Menu = (props) => {
const [selectedItem, setSelectedItem] = useState(null);
+ const closeBanner = () => {
+ setDisplayBanner(false);
+ }
+
const openModal = (item) => {
setSelectedItem(item);
};
@@ -83,6 +88,10 @@ const Menu = (props) => {
else {
return (
+
+ {admin && displayBanner && (
+
+ )}
{admin ? (
<>
@@ -143,6 +152,7 @@ const Menu = (props) => {
>
)}
+
);
}
};