Spaces:
Sleeping
Sleeping
Create script.js
Browse files- static/script.js +101 -0
static/script.js
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
let conversation = [
|
2 |
+
{ role: 'bot', message: 'Hi there! I'm Chef Bot! May I know your name?' }
|
3 |
+
];
|
4 |
+
|
5 |
+
function addMessage(role, message) {
|
6 |
+
const chatMessages = document.getElementById('chatMessages');
|
7 |
+
const messageDiv = document.createElement('div');
|
8 |
+
messageDiv.className = role === 'bot' ? 'bot-message' : 'user-message';
|
9 |
+
messageDiv.textContent = message;
|
10 |
+
chatMessages.appendChild(messageDiv);
|
11 |
+
chatMessages.scrollTop = chatMessages.scrollHeight;
|
12 |
+
}
|
13 |
+
|
14 |
+
function sendMessage() {
|
15 |
+
const userInput = document.getElementById('userInput').value.trim();
|
16 |
+
if (userInput) {
|
17 |
+
addMessage('user', userInput);
|
18 |
+
conversation.push({ role: 'user', message: userInput });
|
19 |
+
document.getElementById('userInput').value = '';
|
20 |
+
|
21 |
+
setTimeout(() => {
|
22 |
+
handleResponse(userInput);
|
23 |
+
}, 500);
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
+
function handleResponse(userInput) {
|
28 |
+
const lastMessage = conversation[conversation.length - 1].message.toLowerCase();
|
29 |
+
let botResponse = '';
|
30 |
+
let options = [];
|
31 |
+
|
32 |
+
if (conversation.length === 2) { // After name input
|
33 |
+
botResponse = `Nice to meet you, ${userInput}! 😊 Let's create your perfect meal! What type of food would you prefer?`;
|
34 |
+
options = [
|
35 |
+
{ text: 'Vegetarian', class: 'green' },
|
36 |
+
{ text: 'Non-Vegetarian', class: 'red' }
|
37 |
+
];
|
38 |
+
} else if (lastMessage.includes('vegetarian')) {
|
39 |
+
botResponse = 'Great choice! 🍽️ We have some amazing vegetarian options! What\'s your dietary preference?';
|
40 |
+
options = [
|
41 |
+
{ text: 'Vegan', class: '' },
|
42 |
+
{ text: 'Gluten-Free', class: '' },
|
43 |
+
{ text: 'Vegetarian', class: '' },
|
44 |
+
{ text: 'Low Carb', class: '' },
|
45 |
+
{ text: 'Dairy-Free', class: '' },
|
46 |
+
{ text: 'Keto', class: '' },
|
47 |
+
{ text: 'Halal', class: '' }
|
48 |
+
];
|
49 |
+
} else if (lastMessage.includes('non-vegetarian')) {
|
50 |
+
botResponse = 'Great choice! 🍽️ We have some amazing non-vegetarian options! What\'s your dietary preference?';
|
51 |
+
options = [
|
52 |
+
{ text: 'Low Carb', class: '' },
|
53 |
+
{ text: 'Dairy-Free', class: '' },
|
54 |
+
{ text: 'Keto', class: '' },
|
55 |
+
{ text: 'Halal', class: '' }
|
56 |
+
];
|
57 |
+
} else if (lastMessage.includes('low carb') || lastMessage.includes('dairy-free') || lastMessage.includes('keto') || lastMessage.includes('halal') || lastMessage.includes('gluten-free') || lastMessage.includes('vegan')) {
|
58 |
+
botResponse = 'Wonderful choice! 😊 Let\'s pick your favorite ingredients:';
|
59 |
+
options = [
|
60 |
+
{ text: 'Potatoes', class: '' },
|
61 |
+
{ text: 'Tomatoes', class: '' },
|
62 |
+
{ text: 'Spinach', class: '' },
|
63 |
+
{ text: 'Cauliflower', class: '' },
|
64 |
+
{ text: 'Paneer', class: '' },
|
65 |
+
{ text: 'Tofu', class: '' }
|
66 |
+
];
|
67 |
+
}
|
68 |
+
|
69 |
+
addMessage('bot', botResponse);
|
70 |
+
if (options.length > 0) {
|
71 |
+
displayOptions(options);
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
function displayOptions(options) {
|
76 |
+
const chatMessages = document.getElementById('chatMessages');
|
77 |
+
options.forEach(opt => {
|
78 |
+
const button = document.createElement('button');
|
79 |
+
button.textContent = opt.text;
|
80 |
+
button.className = `option-button ${opt.class}`;
|
81 |
+
button.onclick = () => {
|
82 |
+
addMessage('user', opt.text);
|
83 |
+
conversation.push({ role: 'user', message: opt.text });
|
84 |
+
chatMessages.innerHTML = ''; // Clear previous messages
|
85 |
+
conversation.forEach(msg => addMessage(msg.role, msg.message));
|
86 |
+
setTimeout(() => handleResponse(opt.text), 500);
|
87 |
+
};
|
88 |
+
chatMessages.appendChild(button);
|
89 |
+
});
|
90 |
+
chatMessages.appendChild(document.createElement('br'));
|
91 |
+
const backButton = document.createElement('button');
|
92 |
+
backButton.textContent = 'Go Back';
|
93 |
+
backButton.className = 'option-button';
|
94 |
+
backButton.onclick = () => {
|
95 |
+
conversation.pop(); // Remove last user input
|
96 |
+
chatMessages.innerHTML = ''; // Clear previous messages
|
97 |
+
conversation.forEach(msg => addMessage(msg.role, msg.message));
|
98 |
+
setTimeout(() => handleResponse(conversation[conversation.length - 1].message), 500);
|
99 |
+
};
|
100 |
+
chatMessages.appendChild(backButton);
|
101 |
+
}
|