Skip to content

Commit ce58c0d

Browse files
authored
Update script.js
1 parent d60a3a2 commit ce58c0d

File tree

1 file changed

+19
-55
lines changed

1 file changed

+19
-55
lines changed

script.js

Lines changed: 19 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ form.addEventListener("submit", async (e) => {
4848

4949
const data = await response.json();
5050
threadId = data.thread_id;
51-
streamMessage("agent-message", data.reply);
51+
renderMessage("agent-message", data.reply);
5252
} catch (err) {
53-
streamMessage("agent-message", "Er ging iets mis.");
53+
renderMessage("agent-message", "Er ging iets mis.");
5454
console.error("Fout in fetch:", err);
5555
}
5656
});
@@ -71,74 +71,38 @@ function appendFormattedMessage(cssClass, htmlContent) {
7171
chat.scrollTop = chat.scrollHeight;
7272
}
7373

74-
function streamMessage(cssClass, text) {
74+
function renderMessage(cssClass, text) {
7575
const msg = document.createElement("div");
7676
msg.classList.add("message", cssClass);
7777
chat.appendChild(msg);
7878

79-
// Opschoning & HTML formatting
8079
let formattedText = text
81-
.replace(/\[\d+:\d+source\]/g, "") // bronverwijzingen weghalen
82-
.replace(/\*\*(.*?)\*\*/g, "<strong>$1</strong>") // **vet**
80+
.replace(/\[\d+:\d+source\]/g, "") // bronnen verwijderen
81+
.replace(/\*\*(.*?)\*\*/g, "<strong>$1</strong>") // **vetgedrukt**
8382
.replace(
8483
/(https?:\/\/[^\s<>]+)/g,
8584
'<a href="$1" target="_blank" rel="noopener noreferrer">$1</a>'
86-
); // Links klikbaar maken
85+
); // klikbare links
8786

8887
const lines = formattedText.split("\n").filter(line => line.trim() !== "");
8988
const isNumberedList = lines.length > 1 && lines.every(line => /^\d+\.\s+/.test(line));
9089
const isBulletedList = lines.length > 1 && lines.every(line => /^[-*]\s+/.test(line));
9190

9291
if (isNumberedList || isBulletedList) {
93-
const listElement = document.createElement(isNumberedList ? "ol" : "ul");
94-
msg.appendChild(listElement);
95-
let i = 0;
96-
const interval = setInterval(() => {
97-
if (i < lines.length) {
98-
const li = document.createElement("li");
99-
li.innerHTML = lines[i].replace(/^(\d+\.\s+|[-*]\s+)/, "").trim();
100-
listElement.appendChild(li);
101-
chat.scrollTop = chat.scrollHeight;
102-
i++;
103-
} else {
104-
clearInterval(interval);
105-
}
106-
}, 200);
107-
return;
108-
}
109-
110-
// Inline bulletlijst detectie: "- <strong>item</strong>"
111-
if (/\-\s+<strong>.*?<\/strong>/.test(formattedText)) {
112-
const parts = formattedText.split(/-\s+(?=<strong>)/g);
113-
if (parts.length > 2) {
114-
const intro = parts[0].trim();
115-
if (intro) {
116-
const p = document.createElement("p");
117-
p.innerHTML = intro;
118-
msg.appendChild(p);
119-
}
120-
121-
const ul = document.createElement("ul");
122-
parts.slice(1).forEach(item => {
123-
const li = document.createElement("li");
124-
li.innerHTML = item.trim();
125-
ul.appendChild(li);
126-
});
127-
msg.appendChild(ul);
128-
chat.scrollTop = chat.scrollHeight;
129-
return;
130-
}
92+
const list = document.createElement(isNumberedList ? "ol" : "ul");
93+
lines.forEach(line => {
94+
const li = document.createElement("li");
95+
li.innerHTML = line.replace(/^(\d+\.\s+|[-*]\s+)/, "").trim();
96+
list.appendChild(li);
97+
});
98+
msg.appendChild(list);
99+
} else {
100+
const p = document.createElement("p");
101+
p.innerHTML = formattedText.replace(/\n/g, "<br>");
102+
msg.appendChild(p);
131103
}
132104

133-
// Default: typ-animatie met inline HTML
134-
let index = 0;
135-
const interval = setInterval(() => {
136-
if (index < formattedText.length) {
137-
msg.innerHTML += formattedText.charAt(index++);
138-
chat.scrollTop = chat.scrollHeight;
139-
} else {
140-
clearInterval(interval);
141-
}
142-
}, 15);
105+
chat.scrollTop = chat.scrollHeight;
143106
}
144107

108+

0 commit comments

Comments
 (0)