import gradio as gr import json # Global Cart State to Save Selected Items cart = {"selected_items": [], "customizations": []} # Menu Items menu = { "Breads": ["Roti", "Butter Naan", "Plain Naan", "Garlic Naan", "Chilly Naan"], "Veg Curries": ["Paneer Butter Masala", "Kadai Paneer", "Dum Ka Paneer", "Mixed Veg Curry", "Dal Makhani"], "Non-Veg Curries": ["Chicken Curry", "Mutton Curry", "Fish Curry", "Prawns Curry"], "Biryanis": ["Veg Biryani", "Paneer Biryani", "Chicken Biryani", "Mutton Biryani", "Fish Biryani", "Prawns Biryani"] } # Dynamic Suggestions Based on Selection def get_suggestions(selected_items): suggestions = set() for item in selected_items: if item in menu["Breads"]: suggestions.update(menu["Veg Curries"] + menu["Non-Veg Curries"] + menu["Biryanis"]) elif item in menu["Veg Curries"] or item in menu["Non-Veg Curries"]: suggestions.update(menu["Breads"] + menu["Biryanis"]) elif item in menu["Biryanis"]: suggestions.update(menu["Breads"] + menu["Veg Curries"] + menu["Non-Veg Curries"]) # Exclude already selected items return list(suggestions - set(selected_items)) # Add Items to Cart def add_to_cart(selected_items, suggestions_selected, customizations, custom_text): cart["selected_items"].extend(selected_items + suggestions_selected) cart["customizations"].append({ "ingredients": customizations, "custom_text": custom_text }) return f"Items added to cart: {', '.join(cart['selected_items'])}", gr.update(visible=True) # Show Cart Summary def show_cart(): summary = "**Your Order Summary:**\n" summary += f"**Selected Items:** {', '.join(cart['selected_items'])}\n" for idx, customization in enumerate(cart["customizations"]): summary += f"\n**Customization {idx+1}:**\n" summary += f"Ingredients: {', '.join(customization['ingredients'])}\n" summary += f"Custom Dish Preference: {customization['custom_text']}\n" return summary # Gradio App with gr.Blocks() as app: gr.Markdown("# Restaurant Ordering System") # Section for Dropdown Menus with gr.Row(): breads = gr.CheckboxGroup(menu["Breads"], label="Select Breads") curries = gr.CheckboxGroup(menu["Veg Curries"] + menu["Non-Veg Curries"], label="Select Curries") biryanis = gr.CheckboxGroup(menu["Biryanis"], label="Select Biryanis") # Submit Button for Items submit_btn = gr.Button("Proceed with Selection") suggestion_box = gr.CheckboxGroup([], label="Suggestions", interactive=True) custom_ingredients = gr.CheckboxGroup(["Extra Cheese", "Extra Spicy", "Less Oil", "No Onions", "No Garlic"], label="Customize Your Dish") custom_text = gr.Textbox(label="Write Your Custom Dish Preference") # Cart and Final Order Section cart_output = gr.Textbox(label="Cart Status", interactive=False) final_order_btn = gr.Button("Show Final Order") order_summary = gr.Markdown() # Actions submit_btn.click( get_suggestions, inputs=[breads, curries, biryanis], outputs=[suggestion_box] ) suggestion_box.change( add_to_cart, inputs=[breads, suggestion_box, custom_ingredients, custom_text], outputs=[cart_output] ) final_order_btn.click( show_cart, inputs=[], outputs=[order_summary] ) app.launch()