11const chat = document . getElementById ( "chat" ) ;
22const form = document . getElementById ( "input-form" ) ;
33const input = document . getElementById ( "user-input" ) ;
4+ const streamOutput = document . getElementById ( "stream-output" ) ;
45
56let threadId = null ;
67
7- // Openingsbericht bij het laden van de pagina
88window . onload = ( ) => {
99 const welkomstHTML = `
1010 Welkom bij de <strong>AI Indicatiehulp</strong>!<br>
1111 Ik ben jouw digitale adviseur voor:<br>
1212 het stellen van de juiste indicatie en het opstellen van een conceptadvies voor de zorgexpert (Kim Brand).<br><br>
13-
1413 <strong>Kies een optie om te starten:</strong><br>
1514 1. In kaart brengen cliëntsituatie<br>
1615 2. Indicatiestelling extramuraal (zorg thuis)<br>
1716 3. Indicatiestelling intramuraal (verpleeghuis)<br><br>
18-
1917 Wil je direct een indicatieadvies laten opstellen? Dan heb ik meer informatie nodig over de cliënt.<br>
2018 Geef bij voorkeur ook je naam en een e-mailadres of telefoonnummer,<br>
2119 zodat we het conceptadvies voor beoordeling kunnen indienen.<br><br>
22-
2320 <em>Met welke optie wil je verder?</em>
2421 ` ;
2522 appendFormattedMessage ( "agent-message" , welkomstHTML ) ;
@@ -32,80 +29,4 @@ form.addEventListener("submit", async (e) => {
3229
3330 appendMessage ( "user-message" , message ) ;
3431 input . value = "" ;
35-
36- try {
37- const response = await fetch ( "https://chatproxy.azurewebsites.net/api/chatproxy" , {
38- method : "POST" ,
39- headers : { "Content-Type" : "application/json" } ,
40- body : JSON . stringify ( { message, thread_id : threadId } )
41- } ) ;
42-
43- if ( ! response . ok ) {
44- const errorText = await response . text ( ) ;
45- console . error ( "Responsetekst:" , errorText ) ;
46- throw new Error ( `Serverfout: ${ response . status } ` ) ;
47- }
48-
49- 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 ) ;
55- }
56- } ) ;
57-
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 ;
64- }
65-
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- }
111- }
32+ streamOutput . textContent =
0 commit comments