File size: 9,074 Bytes
7547860
 
 
 
 
5a1efb3
e748187
e68e6b9
 
 
 
 
 
 
01a053e
 
6928c0e
 
e748187
7547860
8fdce7e
5a1efb3
e748187
5a1efb3
e68e6b9
6928c0e
 
 
 
 
 
1674fe0
7547860
 
1674fe0
 
 
 
 
 
 
 
475e240
1674fe0
58a9391
1674fe0
 
 
 
 
475e240
1674fe0
 
8e787b4
6928c0e
e448584
d9059f7
 
 
 
 
5a1efb3
d9059f7
 
 
 
 
e448584
d9059f7
5a1efb3
d9059f7
 
 
 
5a1efb3
d9059f7
 
 
5a1efb3
d9059f7
e448584
 
6928c0e
 
 
 
 
 
 
d9059f7
6928c0e
 
e448584
 
 
fd2f5b6
5a1efb3
d9059f7
1674fe0
5a1efb3
 
1674fe0
5a1efb3
 
 
 
 
d9059f7
 
5a1efb3
6928c0e
 
 
 
 
 
 
 
 
a012c47
6928c0e
a012c47
 
1674fe0
 
 
 
 
 
 
 
 
 
 
 
5a1efb3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d9059f7
 
 
8fdce7e
7547860
 
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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Biryani Hub Menu</title>
    <style>
        body { font-family: Arial, sans-serif; background-color: #f8f8f8; margin: 0; padding: 0; }
        .menu-container { max-width: 1200px; margin: 0 auto; padding: 20px; background-color: #fff; border-radius: 8px; margin-top: 20px; }
        h1 { text-align: center; font-size: 2.5rem; color: #333; }
        .menu-item { margin-bottom: 20px; padding: 10px; border: 1px solid #ddd; border-radius: 5px; }
        .menu-item img { width: 100px; height: 100px; border-radius: 8px; margin-right: 10px; }
        .details { display: flex; align-items: center; }
        .text { margin-left: 10px; }
        .menu-option { margin: 20px; font-size: 1.5rem; text-align: center; }
        .menu-option button { font-size: 1.2rem; padding: 10px 20px; margin: 10px; cursor: pointer; }
        .cart-container { margin-top: 30px; padding: 10px; border: 1px solid #ddd; border-radius: 5px; background-color: #eaf3e1; }
        .cart-item { display: flex; justify-content: space-between; margin-bottom: 10px; }
    </style>
</head>
<body>

    <div class="menu-container">
        <h1>Welcome to the Menu</h1>
        <div id="menu-items"></div>
        <button onclick="viewCart()">View Cart</button>
    </div>

    <div class="cart-container" id="cart-container" style="display:none;">
        <h2>Your Cart</h2>
        <div id="cart-items"></div>
        <button onclick="placeOrder()">Place Final Order</button>
    </div>

    <script>
        const menuItems = {
            veg: [
                { name: 'Samosa', price: 9, ingredients: 'Potatoes, Peas, Flour, Spices', description: 'Crispy fried pastry filled with spiced potatoes and peas.', imageUrl: 'https://via.placeholder.com/100' },
                { name: 'Onion Pakoda', price: 10, ingredients: 'Onions, Gram Flour, Spices', description: 'Deep-fried onion fritters seasoned with herbs and spices.', imageUrl: 'https://via.placeholder.com/100' },
                { name: 'Chilli Gobi', price: 12, ingredients: 'Cauliflower, Chili Sauce, Spices', description: 'Cauliflower florets tossed in a spicy chili sauce.', imageUrl: 'https://via.placeholder.com/100' },
                { name: 'Paneer Butter Masala', price: 13, ingredients: 'Paneer, Tomato, Butter, Spices', description: 'Soft paneer cubes in a creamy, flavorful gravy.', imageUrl: 'https://via.placeholder.com/100' },
                { name: 'Aloo Gobi', price: 10, ingredients: 'Potatoes, Cauliflower, Spices', description: 'A traditional Indian curry with potatoes and cauliflower.', imageUrl: 'https://via.placeholder.com/100' },
                { name: 'Vegetable Biryani', price: 15, ingredients: 'Basmati Rice, Mixed Vegetables, Spices', description: 'Aromatic rice cooked with seasonal vegetables and spices.', imageUrl: 'https://via.placeholder.com/100' }
            ],

            nonVeg: [
                { name: 'Chicken Biryani', price: 14, ingredients: 'Chicken, Basmati Rice, Spices', description: 'Aromatic basmati rice cooked with tender chicken and spices.', imageUrl: 'https://via.placeholder.com/100' },
                { name: 'Mutton Biryani', price: 16, ingredients: 'Mutton, Basmati Rice, Spices', description: 'Flavorful rice dish made with succulent mutton and aromatic spices.', imageUrl: 'https://via.placeholder.com/100' },
                { name: 'Butter Chicken', price: 15, ingredients: 'Chicken, Tomato, Butter, Cream', description: 'Tender chicken cooked in a rich, creamy tomato sauce.', imageUrl: 'https://via.placeholder.com/100' },
                { name: 'Chicken Tikka', price: 12, ingredients: 'Chicken, Yogurt, Spices', description: 'Grilled chicken marinated in yogurt and spices.', imageUrl: 'https://via.placeholder.com/100' },
                { name: 'Prawn Masala', price: 20, ingredients: 'Prawns, Spices, Tomatoes', description: 'Juicy prawns cooked in a flavorful, spicy masala.', imageUrl: 'https://via.placeholder.com/100' }
            ]
        };

        const cart = [];

        const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)();
        recognition.lang = 'en-US';
        recognition.interimResults = false;
        recognition.maxAlternatives = 1;

        // Greeting the user
        function speak(text, callback) {
            const msg = new SpeechSynthesisUtterance(text);
            msg.onend = callback;
            window.speechSynthesis.speak(msg);
        }

        function askForVegOrNonVeg() {
            speak("Would you prefer vegetarian or non-vegetarian?", () => {
                recognition.start();
            });
        }

        // Function to display menu based on user's choice (veg/non-veg)
        function showMenu(type) {
            const menuContainer = document.getElementById('menu-items');
            menuContainer.innerHTML = ''; // Clear previous menu items

            menuItems[type].forEach(item => {
                const div = document.createElement('div');
                div.classList.add('menu-item');
                div.innerHTML = `<div class="details">
                                    <img src="${item.imageUrl}" alt="${item.name}">
                                    <div class="text">
                                        <h3>${item.name}</h3>
                                        <p>${item.description}</p>
                                        <p><strong>Ingredients:</strong> ${item.ingredients}</p>
                                        <p><strong>Price:</strong> $${item.price}</p>
                                        <button onclick="addToCart('${item.name}')">Add to Cart</button>
                                    </div>
                                  </div>`;
                menuContainer.appendChild(div);
            });
        }

        // Function to add items to the cart
        function addToCart(itemName) {
            const quantity = prompt(`How many ${itemName} would you like to add?`, 1);
            if (quantity && !isNaN(quantity) && quantity > 0) {
                const item = menuItems.veg.concat(menuItems.nonVeg).find(item => item.name === itemName);
                const cartItem = { ...item, quantity: parseInt(quantity) };
                cart.push(cartItem);
                speak(`${quantity} of ${itemName} added to your cart.`);
            } else {
                speak("Please enter a valid quantity.");
            }
        }

        // Function to view cart
        function viewCart() {
            const cartContainer = document.getElementById('cart-container');
            const cartItemsContainer = document.getElementById('cart-items');
            cartItemsContainer.innerHTML = '';
            cart.forEach(cartItem => {
                const div = document.createElement('div');
                div.classList.add('cart-item');
                div.innerHTML = `<span>${cartItem.name} (x${cartItem.quantity}) - $${cartItem.price * cartItem.quantity}</span>`;
                cartItemsContainer.appendChild(div);
            });
            cartContainer.style.display = 'block';
        }

        // Function to place the final order
        function placeOrder() {
            if (cart.length > 0) {
                speak("Your order has been placed successfully.", () => {
                    cart.length = 0; // Clear the cart after placing the order
                    viewCart(); // Optionally, update cart view
                });
            } else {
                speak("Your cart is empty. Please add items before placing the order.");
            }
        }

        // Speech recognition for handling the customer’s choice
        recognition.onresult = (event) => {
            const command = event.results[0][0].transcript.toLowerCase();
            if (command.includes('vegetarian')) {
                showMenu('veg');
                speak("Here are the vegetarian items.", () => askForItemsToAdd());
            } else if (command.includes('non-vegetarian')) {
                showMenu('nonVeg');
                speak("Here are the non-vegetarian items.", () => askForItemsToAdd());
            } else {
                speak("Please say vegetarian or non-vegetarian.", () => {
                    recognition.start();
                });
            }
        };

        recognition.onerror = (event) => {
            console.error("Speech recognition error:", event.error);
            speak("Sorry, I couldn't understand that. Please try again.", () => recognition.start());
        };

        function askForItemsToAdd() {
            speak("Please say the name of the item you'd like to add to the cart.", () => {
                recognition.start();
            });
        }

        // Initiating the process as soon as the page loads
        window.onload = () => {
            speak("Welcome to the Biryani Hub menu.", () => askForVegOrNonVeg());
        };
    </script>
</body>
</html>