Skip to content

Commit 17a8200

Browse files
authored
Update script.js
1 parent 1d0d37c commit 17a8200

File tree

1 file changed

+42
-88
lines changed

1 file changed

+42
-88
lines changed

script.js

Lines changed: 42 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -1,111 +1,65 @@
1-
const chat = document.getElementById("chat");
21
const form = document.getElementById("input-form");
32
const input = document.getElementById("user-input");
4-
5-
let threadId = null;
6-
7-
// Openingsbericht bij het laden van de pagina
8-
window.onload = () => {
9-
const welkomstHTML = `
10-
Welkom bij de <strong>AI Indicatiehulp</strong>!<br>
11-
Ik ben jouw digitale adviseur voor:<br>
12-
het stellen van de juiste indicatie en het opstellen van een conceptadvies voor de zorgexpert (Kim Brand).<br><br>
13-
14-
<strong>Kies een optie om te starten:</strong><br>
15-
1. In kaart brengen cliëntsituatie<br>
16-
2. Indicatiestelling extramuraal (zorg thuis)<br>
17-
3. Indicatiestelling intramuraal (verpleeghuis)<br><br>
18-
19-
Wil je direct een indicatieadvies laten opstellen? Dan heb ik meer informatie nodig over de cliënt.<br>
20-
Geef bij voorkeur ook je naam en een e-mailadres of telefoonnummer,<br>
21-
zodat we het conceptadvies voor beoordeling kunnen indienen.<br><br>
22-
23-
<em>Met welke optie wil je verder?</em>
3+
const messagesContainer = document.getElementById("messages");
4+
5+
// 🔸 Openingsbericht bij laden
6+
window.addEventListener("DOMContentLoaded", () => {
7+
const openingText = `
8+
**Hallo! Welkom bij de AI Indicatiehulp.** 😊<br><br>
9+
Mijn naam is Indi, en ik help je graag bij het stellen van de juiste indicatie voor je cliënt.<br><br>
10+
Waarmee kan ik je vandaag ondersteunen?<br><br>
11+
- **1.** In kaart brengen cliëntsituatie<br>
12+
- **2.** Indicatiestelling extramuraal (Zorg Thuis)<br>
13+
- **3.** Indicatiestelling intramuraal (verpleeghuis)<br><br>
14+
Kies een optie of stel gerust je vraag!
2415
`;
25-
appendFormattedMessage("agent-message", welkomstHTML);
26-
};
16+
appendMessage("assistant", openingText);
17+
});
2718

19+
// 🔸 Form submit handler
2820
form.addEventListener("submit", async (e) => {
2921
e.preventDefault();
30-
const message = input.value.trim();
31-
if (!message) return;
22+
const userMessage = input.value.trim();
23+
if (!userMessage) return;
3224

33-
appendMessage("user-message", message);
25+
appendMessage("user", userMessage);
3426
input.value = "";
3527

3628
try {
37-
const response = await fetch("https://chatproxy2-f5hygzgbckapejcu.francecentral-01.azurewebsites.net/api/chatproxy2", {
29+
const response = await fetch("https://chatproxy2-f5hygzgbckapejcu.francecentral-01.azurewebsites.net/api/chatproxy2, {
3830
method: "POST",
39-
headers: { "Content-Type": "application/json" },
40-
body: JSON.stringify({ message, thread_id: threadId })
31+
headers: {
32+
"Content-Type": "application/json"
33+
},
34+
body: JSON.stringify({ message: userMessage })
4135
});
4236

4337
if (!response.ok) {
44-
const errorText = await response.text();
45-
console.error("Responsetekst:", errorText);
46-
throw new Error(`Serverfout: ${response.status}`);
38+
throw new Error("Serverfout: " + response.status);
4739
}
4840

4941
const data = await response.json();
50-
threadId = data.thread_id;
51-
streamMessage("agent-message", data.reply);
52-
} catch (err) {
53-
streamMessage("agent-message", "Er ging iets mis.");
54-
console.error("Fout in fetch:", err);
42+
const formattedReply = formatReply(data.reply);
43+
appendMessage("assistant", formattedReply);
44+
} catch (error) {
45+
appendMessage("assistant", "Er is iets misgegaan. Probeer het later opnieuw.");
46+
console.error("Fout in fetch:", error);
5547
}
5648
});
5749

58-
function appendMessage(cssClass, text) {
59-
const msg = document.createElement("div");
60-
msg.classList.add("message", cssClass);
61-
msg.textContent = text;
62-
chat.appendChild(msg);
63-
chat.scrollTop = chat.scrollHeight;
50+
// 🔸 Bericht toevoegen aan chat
51+
function appendMessage(role, message) {
52+
const messageElement = document.createElement("div");
53+
messageElement.classList.add("message", role);
54+
messageElement.innerHTML = message;
55+
messagesContainer.appendChild(messageElement);
56+
messagesContainer.scrollTop = messagesContainer.scrollHeight;
6457
}
6558

66-
function appendFormattedMessage(cssClass, htmlContent) {
67-
const msg = document.createElement("div");
68-
msg.classList.add("message", cssClass);
69-
msg.innerHTML = htmlContent;
70-
chat.appendChild(msg);
71-
chat.scrollTop = chat.scrollHeight;
72-
}
73-
74-
function streamMessage(cssClass, text) {
75-
const msg = document.createElement("div");
76-
msg.classList.add("message", cssClass);
77-
chat.appendChild(msg);
78-
79-
const lines = text.split("\n").filter(line => line.trim() !== "");
80-
81-
const isNumberedList = lines.length > 1 && lines.every(line => /^\d+\.\s+/.test(line.trim()));
82-
const isBulletedList = lines.length > 1 && lines.every(line => /^[-*]\s+/.test(line.trim()));
83-
84-
if (isNumberedList || isBulletedList) {
85-
const listElement = document.createElement(isNumberedList ? "ol" : "ul");
86-
msg.appendChild(listElement);
87-
let i = 0;
88-
89-
const interval = setInterval(() => {
90-
if (i < lines.length) {
91-
const li = document.createElement("li");
92-
li.textContent = lines[i].replace(/^(\d+\.\s+|[-*]\s+)/, "").trim();
93-
listElement.appendChild(li);
94-
chat.scrollTop = chat.scrollHeight;
95-
i++;
96-
} else {
97-
clearInterval(interval);
98-
}
99-
}, 200);
100-
} else {
101-
let index = 0;
102-
const interval = setInterval(() => {
103-
if (index < text.length) {
104-
msg.textContent += text.charAt(index++);
105-
chat.scrollTop = chat.scrollHeight;
106-
} else {
107-
clearInterval(interval);
108-
}
109-
}, 15);
110-
}
59+
// 🔸 Formatter voor GPT-reacties (vet, bullets, witregels)
60+
function formatReply(rawText) {
61+
return rawText
62+
.replace(/\*\*(.*?)\*\*/g, '<strong>$1</strong>') // vet
63+
.replace(/\n\n/g, '<br><br>') // dubbele witregel
64+
.replace(/\n/g, '<br>'); // enkele witregel
11165
}

0 commit comments

Comments
 (0)