File size: 2,291 Bytes
a691ebc
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import gradio as gr
import pandas as pd

# Menu data (simulate database)
menu_data = {
    "Veg Samosa": {"price": 9, "suggestions": ["Green Chutney", "Masala Tea"]},
    "Onion Pakoda": {"price": 10, "suggestions": ["Tamarind Sauce", "Hot Tea"]},
}

# Cart to store selected items
cart = []

def display_menu():
    """
    Display menu items in a user-friendly format.
    """
    menu_list = []
    for item, details in menu_data.items():
        menu_list.append(f"{item} - ${details['price']}")
    return "\n".join(menu_list)

def add_to_cart(food_item, quantity):
    """
    Add an item to the cart with quantity and suggestions.
    """
    if food_item not in menu_data:
        return "Error: Item not found in menu."
    
    quantity = int(quantity)
    cart.append({
        "foodItem": food_item,
        "quantity": quantity,
        "price": menu_data[food_item]['price'] * quantity,
        "suggestions": menu_data[food_item]['suggestions']
    })
    
    cart_summary = "\n".join([f"{item['foodItem']} (x{item['quantity']}) - ${item['price']}" for item in cart])
    return f"{food_item} added to cart!\n\nCart Summary:\n{cart_summary}"

def view_cart():
    """
    Display the current cart contents.
    """
    if not cart:
        return "Your cart is empty."
    cart_summary = "\n".join([f"{item['foodItem']} (x{item['quantity']}) - ${item['price']}" for item in cart])
    return f"Cart Summary:\n{cart_summary}"

# Gradio Interface
with gr.Blocks() as demo:
    gr.Markdown("# Dynamic Food Menu")
    
    # Display menu
    menu_output = gr.Textbox(label="Menu", value=display_menu(), interactive=False)
    
    # Input fields for adding to cart
    with gr.Row():
        food_item_input = gr.Textbox(label="Food Item", placeholder="Enter item name")
        quantity_input = gr.Number(label="Quantity", value=1, precision=0)
        add_button = gr.Button("Add to Cart")
    
    # Output field for cart actions
    cart_output = gr.Textbox(label="Cart", interactive=False)
    
    # View cart button
    view_cart_button = gr.Button("View Cart")
    
    # Actions
    add_button.click(add_to_cart, inputs=[food_item_input, quantity_input], outputs=cart_output)
    view_cart_button.click(view_cart, outputs=cart_output)

# Launch Gradio App
demo.launch()