lollms-webui/static/js/main.js

132 lines
4.7 KiB
JavaScript
Raw Normal View History

2023-04-13 10:31:48 +00:00
function update_main(){
const chatWindow = document.getElementById('chat-window');
const chatForm = document.getElementById('chat-form');
const userInput = document.getElementById('user-input');
const stopGeneration = document.querySelector("#stop-generation")
stopGeneration.addEventListener('click', (event) =>{
event.preventDefault();
console.log("Stop clicked");
fetch('/stop')
.then(response => response.json())
.then(data => {
console.log(data);
});
})
2023-04-18 20:50:55 +00:00
userInput.addEventListener('keydown', function(event) {
if (event.shiftKey && event.key === 'Enter') {
event.preventDefault();
userInput.style.height = userInput.scrollHeight + 'px';
userInput.value += '\n';
}
});
2023-04-13 20:44:26 +00:00
2023-04-13 10:31:48 +00:00
chatForm.addEventListener('submit', event => {
event.preventDefault();
2023-04-13 20:44:26 +00:00
console.log("Submitting")
2023-04-13 10:31:48 +00:00
// get user input and clear input field
message = userInput.value;
userInput.value = '';
// add user message to chat window
const sendbtn = document.querySelector("#submit-input")
const waitAnimation = document.querySelector("#wait-animation")
const stopGeneration = document.querySelector("#stop-generation")
2023-04-13 10:31:48 +00:00
sendbtn.style.display="none";
waitAnimation.style.display="block";
stopGeneration.style.display = "block";
console.log("Sending message to bot")
2023-04-16 11:32:14 +00:00
user_msg = addMessage('',message, 0, 0, can_edit=true);
bot_msg = addMessage('', '', 0, 0, can_edit=true);
2023-04-13 10:31:48 +00:00
fetch('/bot', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({ message })
}).then(function(response) {
const stream = new ReadableStream({
start(controller) {
const reader = response.body.getReader();
function push() {
reader.read().then(function(result) {
if (result.done) {
sendbtn.style.display="block";
waitAnimation.style.display="none";
stopGeneration.style.display = "none";
2023-04-16 21:22:09 +00:00
console.log(result)
2023-04-13 10:31:48 +00:00
controller.close();
return;
}
controller.enqueue(result.value);
push();
})
}
push();
}
});
const textDecoder = new TextDecoder();
const readableStreamDefaultReader = stream.getReader();
let entry_counter = 0
function readStream() {
readableStreamDefaultReader.read().then(function(result) {
if (result.done) {
return;
}
text = textDecoder.decode(result.value);
// The server will first send a json containing information about the message just sent
if(entry_counter==0)
{
// We parse it and
2023-04-17 22:36:10 +00:00
infos = JSON.parse(text);
2023-04-17 21:38:08 +00:00
2023-04-17 22:36:10 +00:00
user_msg.setSender(infos.user);
user_msg.setMessage(infos.message);
user_msg.setID(infos.id);
bot_msg.setSender(infos.bot);
bot_msg.setID(infos.response_id);
2023-04-17 21:22:58 +00:00
2023-04-18 21:41:51 +00:00
bot_msg.messageTextElement;
bot_msg.hiddenElement;
2023-04-13 10:31:48 +00:00
entry_counter ++;
}
else{
2023-04-16 11:32:14 +00:00
entry_counter ++;
2023-04-17 10:54:48 +00:00
prefix = "FINAL:";
if(text.startsWith(prefix)){
text = text.substring(prefix.length);
2023-04-18 21:41:51 +00:00
bot_msg.hiddenElement.innerHTML = text
bot_msg.messageTextElement.innerHTML = text
2023-04-17 10:54:48 +00:00
}
else{
2023-04-13 10:31:48 +00:00
// For the other enrtries, these are just the text of the chatbot
for (const char of text) {
2023-04-20 17:30:03 +00:00
txt = bot_msg.hiddenElement.innerHTML;
2023-04-17 10:54:48 +00:00
if (char != '\f') {
2023-04-17 21:39:15 +00:00
txt += char
2023-04-18 21:41:51 +00:00
bot_msg.hiddenElement.innerHTML = txt;
bot_msg.messageTextElement.innerHTML = txt;
2023-04-17 10:54:48 +00:00
}
// scroll to bottom of chat window
chatWindow.scrollTop = chatWindow.scrollHeight;
}
2023-04-13 10:31:48 +00:00
}
}
readStream();
});
}
readStream();
});
2023-04-13 20:44:26 +00:00
});
}