-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
91 lines (76 loc) · 3.21 KB
/
Copy pathscript.js
File metadata and controls
91 lines (76 loc) · 3.21 KB
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
document.addEventListener('DOMContentLoaded', () => {
const dietForm = document.getElementById('dietForm');
const planResult = document.getElementById('planResult');
dietForm.addEventListener('submit', async (e) => {
e.preventDefault();
const btn = e.target.querySelector('button');
btn.disabled = true;
try {
const response = await fetch('/api/generate-plan', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
username: document.getElementById('username').value,
condition: document.getElementById('condition').value,
weight: document.getElementById('weight').value
})
});
const data = await response.json();
if (data.error) throw new Error(data.error);
document.getElementById('planOutput').textContent = data.diet_plan;
document.getElementById('mealsOutput').textContent = data.meals.join('\n');
const shoppingList = document.getElementById('shoppingOutput');
shoppingList.innerHTML = '';
data.shopping_list.forEach(item => {
const li = document.createElement('li');
li.textContent = item;
shoppingList.appendChild(li);
});
planResult.classList.remove('hidden');
} catch (error) {
alert('Error: ' + error.message);
} finally {
btn.disabled = false;
}
});
// Chat functionality
const chatInput = document.getElementById('userMessage');
const sendBtn = document.getElementById('sendBtn');
const chatMessages = document.getElementById('chatMessages');
function addMessage(text, isUser) {
const div = document.createElement('div');
div.className = isUser ? 'user-message' : 'bot-message';
div.textContent = text;
chatMessages.appendChild(div);
chatMessages.scrollTop = chatMessages.scrollHeight;
}
sendBtn.addEventListener('click', async () => {
const message = chatInput.value.trim();
if (!message) return;
addMessage(message, true);
chatInput.value = '';
sendBtn.disabled = true;
try {
const response = await fetch('/api/chat', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
message: message
})
});
const data = await response.json();
addMessage(data.response, false);
} catch (error) {
addMessage("Sorry, I'm having trouble responding.", false);
} finally {
sendBtn.disabled = false;
}
});
chatInput.addEventListener('keypress', (e) => {
if (e.key === 'Enter') sendBtn.click();
});
});