Mercurial Hosting > lang
comparison src/site.js @ 1:1c87f785eb42
start chat
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 08 Jul 2025 14:18:25 -0600 |
parents | |
children | 78708fa556a0 |
comparison
equal
deleted
inserted
replaced
0:9845dcb9f5fc | 1:1c87f785eb42 |
---|---|
1 'use strict'; | |
2 | |
3 function ajax(url,postData) { | |
4 let request = new XMLHttpRequest(); | |
5 let method = postData ? "POST" : "GET"; | |
6 request.open( method, url ); | |
7 if( typeof(postData)==='string' ) | |
8 request.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); | |
9 request.onload = function() { | |
10 if( request.status !== 200 ) { | |
11 let err = 'sr_ajax failed: ' + request.status; | |
12 if( request.responseText ) { | |
13 err += '\n' + request.responseText; | |
14 document.write('<pre>'+request.responseText+'</pre>'); | |
15 } | |
16 err += '\npage = ' + window.location; | |
17 ajax( '/error_log.js', 'err='+encodeURIComponent(err) ); | |
18 return; | |
19 } | |
20 try { | |
21 //console.log(request.responseText); | |
22 eval( request.responseText ); | |
23 } catch(e) { | |
24 window.sr_err = '\najax-url = ' + url; | |
25 //window.sr_err += '\n'+('ajax-response =\n' + request.responseText).trim(); | |
26 throw e; | |
27 } | |
28 }; | |
29 request.send(postData); | |
30 } | |
31 | |
32 function showWaitingAiIcon() { | |
33 document.querySelector('[waiting-ai-icon]').style.display = 'block'; | |
34 } | |
35 | |
36 const isMobile = 'ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0; | |
37 | |
38 function textareaKey(aiKey,event) { | |
39 if( event.keyCode===13 && !event.shiftKey && !event.ctrlKey && !isMobile ) { | |
40 event.preventDefault(); | |
41 askAi(aiKey); | |
42 } | |
43 } | |
44 | |
45 function fixTextarea(event) { | |
46 let textarea = event.target; | |
47 textarea.style.height = 'initial'; | |
48 textarea.style.height = (textarea.scrollHeight+2) + 'px'; | |
49 textarea.scrollIntoViewIfNeeded(false); | |
50 } | |
51 | |
52 function askAi(aiKey) { | |
53 let aiDiv = document.querySelector(`[ai_container="${aiKey}"]`); | |
54 let input = aiDiv.querySelector('textarea'); | |
55 let url = `ai_ask.js?key=${aiKey}&input=${encodeURIComponent(input.value)}`; | |
56 ajax(url); | |
57 input.value = ''; | |
58 showWaitingAiIcon(); | |
59 } |