Spaces:
Sleeping
Sleeping
| 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() | |