Spaces:
Sleeping
Sleeping
File size: 8,385 Bytes
f4fc2c6 5c2ec7c 9172822 8ce46dc 3986c73 9172822 e8866d5 3986c73 9172822 e8866d5 3986c73 9172822 33b57be 9172822 33b57be 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 9172822 30db2e0 8ce46dc e329245 9172822 670a97d 99afd50 670a97d a25ae0f 3d2cf5e 0528a69 f4fc2c6 a25ae0f 3d2cf5e e913a04 a25ae0f e913a04 0528a69 5780ca2 81aba32 8f297a1 59e6c65 f597f53 99afd50 670a97d 0528a69 f597f53 99afd50 87744f3 f0577e5 87744f3 f597f53 f4fc2c6 99afd50 3d2cf5e 99afd50 f4fc2c6 f597f53 3d2cf5e f4fc2c6 99afd50 670a97d f597f53 758e6db 3d2cf5e |
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 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
import gradio as gr
menu_data = [
{"name": "Veg Burger", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/veg_burger.jpg",
"description": "A delicious vegan burger with plant-based patty, lettuce, and tomato."},
{"name": "Chicken Biryani", "category": "HALAL",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/chicken_biryani.jpg",
"description": "Spicy chicken biryani with aromatic basmati rice and tender chicken pieces."},
{"name": "Paneer Butter Masala", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/paneer_butter_masala.jpg",
"description": "Paneer cooked in a rich and creamy tomato-based gravy."},
{"name": "Beef Steak", "category": "HALAL",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/beef_steak.jpg",
"description": "Juicy beef steak served with mashed potatoes and grilled vegetables."},
{"name": "Mushroom Soup", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/mushroom_soup.jpg",
"description": "Creamy mushroom soup with fresh herbs."},
{"name": "Tandoori Chicken", "category": "HALAL",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/tandoori_chicken.jpg",
"description": "Grilled chicken marinated in yogurt and spices, cooked in a tandoor."},
{"name": "Grilled Veggies", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/grilled_veggies.jpg",
"description": "A healthy mix of grilled seasonal vegetables with olive oil."},
{"name": "Butter Naan", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/butter_naan.jpg",
"description": "Soft and buttery flatbread, perfect to pair with any curry."},
{"name": "Fish Curry", "category": "HALAL",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/fish_curry.jpg",
"description": "Fresh fish cooked in a spicy and tangy curry."},
{"name": "Vegetable Salad", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/vegetable_salad.jpg",
"description": "A mix of fresh greens, tomatoes, cucumbers, and a light dressing."},
{"name": "Veg Spring Rolls", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/veg_spring_rolls.jpg",
"description": "Crispy spring rolls filled with fresh vegetables."},
{"name": "Chicken Kebab", "category": "HALAL",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/chicken_kebab.jpg",
"description": "Juicy chicken kebabs grilled to perfection with a mix of spices."},
{"name": "Dal Makhani", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/dal_makhani.jpg",
"description": "Rich and creamy black lentils slow-cooked with spices."},
{"name": "Lamb Curry", "category": "HALAL",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/lamb_curry.jpg",
"description": "Tender lamb pieces cooked in a flavorful curry sauce."},
{"name": "Mixed Veg Curry", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/mixed_veg_curry.jpg",
"description": "A medley of fresh vegetables cooked in a lightly spiced curry."},
{"name": "Chicken Wings", "category": "HALAL",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/chicken_wings.jpg",
"description": "Crispy chicken wings tossed in a tangy sauce."},
{"name": "Aloo Paratha", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/aloo_paratha.jpg",
"description": "Indian flatbread stuffed with spiced mashed potatoes."},
{"name": "Egg Curry", "category": "HALAL",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/egg_curry.jpg",
"description": "Boiled eggs cooked in a spiced tomato gravy."},
{"name": "Chickpea Salad", "category": "VEGAN",
"image": "https://huggingface.co/spaces/Rammohan0504/dynamic_menu/resolve/main/images/chickpea_salad.jpg",
"description": "A refreshing salad made with chickpeas, fresh vegetables, and herbs."}
]
# The rest of the code remains unchanged
def filter_dishes(category):
if category == "ALL":
return menu_data
return [dish for dish in menu_data if dish["category"] == category]
# Function to generate dish cards
def display_dishes(category):
filtered_dishes = filter_dishes(category)
html_content = "<div style='display: flex; flex-direction: column; align-items: center; width: 100%;'>"
for dish in filtered_dishes:
html_content += f"""
<div style='margin: 10px; display: flex; align-items: center; justify-content: space-between;
width: 80%; padding: 10px; border: 1px solid #ddd; border-radius: 10px;
background-color: #f9f9f9; cursor: pointer;'
onclick="showPopup('{dish['image']}', '{dish['name']}', '{dish['description']}')">
<div style='flex: 1; margin-right: 20px;'>
<h4 style='font-size: 18px; color: #444; margin: 0;'>{dish['name']}</h4>
<p style='font-size: 14px; color: #666; margin: 5px 0;'>{dish['description']}</p>
</div>
<img src='{dish['image']}' alt='{dish['name']}'
style='width: 120px; height: 80px; object-fit: cover; border-radius: 10px;'>
</div>
"""
html_content += "</div>"
return html_content
# Main Gradio App
with gr.Blocks() as demo:
gr.HTML("<h1 style='text-align: center; color: #333;'>π Biryani Hub Menu π</h1>")
# Buttons for category selection
with gr.Row():
btn_all = gr.Button("ALL")
btn_vegan = gr.Button("VEGAN")
btn_halal = gr.Button("HALAL")
# Dish display
dish_display = gr.HTML(value=display_dishes("ALL"))
# JavaScript for managing the pop-up
gr.HTML("""
<div id="popup" style="display: none; position: fixed;cursor: pointer;-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; left: 50%; transform: translate(-50%, 100%);
background-color: white; padding: 20px; border-radius: 10px; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
z-index: 1000; text-align: center; width: 300px;">
<img id="popup-image" src="" alt="" style="width: 100%; height: auto; border-radius: 10px;">
<h2 id="popup-title" style="margin-top: 20px; color: #444;"></h2>
<p id="popup-description" style="margin-top: 10px; font-size: 16px; color: #666;"></p>
<button onclick="closePopup()" style="margin-top: 10px; padding: 10px 20px; background-color: #28a745;
color: white; border: none; border-radius: 5px; cursor: pointer;">Close</button>
</div>
<script>
function showPopup(image, title, description) {
document.getElementById('popup-image').src = image;
document.getElementById('popup-title').textContent = title;
document.getElementById('popup-description').textContent = description;
// Adjust the popup to always appear at the top of the viewport
const popup = document.getElementById('popup');
popup.style.top = window.pageYOffset + 'px';
popup.style.display = 'block';
}
function closePopup() {
document.getElementById('popup').style.display = 'none';
}
</script>
""")
# Button click events
btn_all.click(lambda: gr.update(value=display_dishes("ALL")), outputs=dish_display)
btn_vegan.click(lambda: gr.update(value=display_dishes("VEGAN")), outputs=dish_display)
btn_halal.click(lambda: gr.update(value=display_dishes("HALAL")), outputs=dish_display)
demo.launch() |