DynamicMenu / app.py
dschandra's picture
Update app.py
9b46be7 verified
raw
history blame
3.46 kB
import gradio as gr
import pandas as pd
# Simulated menu data
menu_data = [
{"name": "Samosa", "price": 10, "description": "Crispy fried pastry filled with spiced potatoes and peas. Serves 1. [Energy: 200 kcal, Protein: 5g, Carbohydrates: 25g, Fiber: 3g, Fat: 10g, Sugar: 1g]", "image": "images/samosa.jpg"},
{"name": "Onion Pakoda", "price": 14, "description": "Deep-fried onion fritters seasoned with herbs and spices. Serves 2. [Energy: 250 kcal, Protein: 6g, Carbohydrates: 30g, Fiber: 4g, Fat: 12g, Sugar: 2g]", "image": "images/onion-pakoda.jpg"},
{"name": "Paneer Tikka", "price": 15, "description": "Grilled paneer cubes marinated in spices. Serves 1. [Energy: 300 kcal, Protein: 15g, Carbohydrates: 10g, Fiber: 2g, Fat: 20g, Sugar: 1g]", "image": "images/paneer-tikka.jpg"},
{"name": "Veg Biryani", "price": 12, "description": "Aromatic rice cooked with vegetables and spices. Serves 1. [Energy: 350 kcal, Protein: 8g, Carbohydrates: 50g, Fiber: 5g, Fat: 12g, Sugar: 2g]", "image": "images/veg-biryani.jpg"},
{"name": "Chicken Curry", "price": 16, "description": "Tender chicken pieces cooked in a spicy curry. Serves 1. [Energy: 400 kcal, Protein: 25g, Carbohydrates: 10g, Fiber: 2g, Fat: 25g, Sugar: 3g]", "image": "images/chicken-curry.jpg"},
{"name": "Masala Dosa", "price": 10, "description": "Thin rice crepe stuffed with spiced potato filling. Serves 1. [Energy: 300 kcal, Protein: 6g, Carbohydrates: 45g, Fiber: 4g, Fat: 8g, Sugar: 1g]", "image": "images/masala-dosa.jpg"}
]
cart = []
def display_menu():
"""
Function to display the menu in a formatted style with an 'Add' button for each item.
"""
menu_html = ""
for item in menu_data:
menu_html += f"""
<div style="display: flex; margin-bottom: 15px; align-items: center; border: 1px solid #ddd; padding: 10px; border-radius: 5px;">
<img src="{item['image']}" alt="{item['name']}" style="width: 100px; height: 100px; margin-right: 15px; border-radius: 5px;">
<div style="flex-grow: 1;">
<h4 style="margin: 0;">{item['name']} - ${item['price']}</h4>
<p style="margin: 5px 0; font-size: 12px;">{item['description']}</p>
</div>
<button style="background-color: #28a745; color: white; border: none; padding: 8px 12px; border-radius: 5px; cursor: pointer;" onclick="add_to_cart('{item['name']}', {item['price']})">Add</button>
</div>
"""
return menu_html
def add_to_cart(item_name, item_price):
"""
Add an item to the cart with its price.
"""
cart.append({"item": item_name, "price": item_price})
return f"Added {item_name} to the cart!"
def view_cart():
"""
View the cart items and calculate the total price.
"""
if not cart:
return "Your cart is empty."
cart_summary = "<h3>Cart Summary:</h3><ul>"
total_price = 0
for item in cart:
cart_summary += f"<li>{item['item']} - ${item['price']}</li>"
total_price += item["price"]
cart_summary += f"</ul><h4>Total Price: ${total_price}</h4>"
return cart_summary
with gr.Blocks() as demo:
gr.Markdown("# Dynamic Food Menu")
# Display menu
menu_display = gr.HTML(value=display_menu())
# Cart interactions
with gr.Row():
cart_button = gr.Button("View Cart")
cart_output = gr.HTML()
cart_button.click(view_cart, outputs=cart_output)
demo.launch()