Spaces:
Running
Running
Update index.html
Browse files- index.html +10 -70
index.html
CHANGED
@@ -275,17 +275,6 @@
|
|
275 |
</button>
|
276 |
</div>
|
277 |
</div>
|
278 |
-
|
279 |
-
<div class="flex-grow overflow-y-auto px-4 sidebar-content">
|
280 |
-
<h3 class="text-sm font-semibold text-gray-400 mb-2">Saved Chats</h3>
|
281 |
-
<div id="chatsList" class="space-y-2">
|
282 |
-
{% for chat in chat_files %}
|
283 |
-
<div class="chat-file hover:bg-gray-700 p-2 rounded-lg cursor-pointer transition" data-file="{{ chat }}">
|
284 |
-
<i class="fas fa-comment-alt mr-2"></i>{{ chat }}
|
285 |
-
</div>
|
286 |
-
{% endfor %}
|
287 |
-
</div>
|
288 |
-
</div>
|
289 |
</div>
|
290 |
|
291 |
<!-- Main Content -->
|
@@ -343,7 +332,6 @@
|
|
343 |
</div>
|
344 |
|
345 |
<script>
|
346 |
-
let currentSessionId = '{{ session_id }}';
|
347 |
let conversationHistory = [];
|
348 |
let currentAudio = null;
|
349 |
let currentEventSource = null;
|
@@ -398,19 +386,6 @@
|
|
398 |
chatArea.scrollTop = chatArea.scrollHeight;
|
399 |
}
|
400 |
|
401 |
-
function loadChat(sessionId) {
|
402 |
-
fetch(`/api/load_chat/${sessionId}`)
|
403 |
-
.then(response => response.json())
|
404 |
-
.then(data => {
|
405 |
-
currentSessionId = sessionId;
|
406 |
-
conversationHistory = data.messages;
|
407 |
-
document.getElementById('chatArea').innerHTML = '';
|
408 |
-
conversationHistory.forEach((message, index) => {
|
409 |
-
addMessage(message.content, message.role === 'user', index);
|
410 |
-
});
|
411 |
-
});
|
412 |
-
}
|
413 |
-
|
414 |
function showContextMenu(e) {
|
415 |
e.preventDefault();
|
416 |
const contextMenu = document.getElementById('contextMenu');
|
@@ -445,37 +420,16 @@
|
|
445 |
const newContent = document.getElementById('editMessageInput').value;
|
446 |
const isUserMessage = conversationHistory[editingMessageIndex].role === 'user';
|
447 |
|
448 |
-
|
449 |
-
|
450 |
-
|
451 |
-
|
452 |
-
|
453 |
-
|
454 |
-
body: JSON.stringify({
|
455 |
-
session_id: currentSessionId,
|
456 |
-
message_index: editingMessageIndex,
|
457 |
-
content: newContent,
|
458 |
-
is_user: isUserMessage
|
459 |
-
})
|
460 |
-
});
|
461 |
-
|
462 |
-
const data = await response.json();
|
463 |
-
if (data.success) {
|
464 |
-
// Update conversation history and UI
|
465 |
-
conversationHistory = data.messages;
|
466 |
-
document.getElementById('chatArea').innerHTML = '';
|
467 |
-
conversationHistory.forEach((message, index) => {
|
468 |
-
addMessage(message.content, message.role === 'user', index);
|
469 |
-
});
|
470 |
|
471 |
-
|
472 |
-
|
473 |
-
|
474 |
-
}
|
475 |
-
}
|
476 |
-
} catch (error) {
|
477 |
-
console.error('Error saving edited message:', error);
|
478 |
-
alert('Failed to save the edited message');
|
479 |
}
|
480 |
|
481 |
hideEditModal();
|
@@ -487,7 +441,6 @@
|
|
487 |
document.getElementById('listModelsBtn').disabled = true;
|
488 |
document.getElementById('messageInput').disabled = true;
|
489 |
document.getElementById('sidebar').classList.add('disabled');
|
490 |
-
document.getElementById('chatsList').classList.add('disabled');
|
491 |
document.getElementById('stopBtn').style.display = 'block';
|
492 |
}
|
493 |
|
@@ -497,7 +450,6 @@
|
|
497 |
document.getElementById('listModelsBtn').disabled = false;
|
498 |
document.getElementById('messageInput').disabled = false;
|
499 |
document.getElementById('sidebar').classList.remove('disabled');
|
500 |
-
document.getElementById('chatsList').classList.remove('disabled');
|
501 |
document.getElementById('stopBtn').style.display = 'none';
|
502 |
}
|
503 |
|
@@ -543,8 +495,7 @@
|
|
543 |
body: JSON.stringify({
|
544 |
base_host: baseHost,
|
545 |
model: model,
|
546 |
-
messages: conversationHistory
|
547 |
-
session_id: currentSessionId
|
548 |
}),
|
549 |
signal: abortController.signal
|
550 |
});
|
@@ -645,7 +596,6 @@
|
|
645 |
});
|
646 |
|
647 |
document.getElementById('newChatBtn').addEventListener('click', () => {
|
648 |
-
currentSessionId = '{{ session_id }}';
|
649 |
conversationHistory = [];
|
650 |
document.getElementById('chatArea').innerHTML = '';
|
651 |
// Restore selected models
|
@@ -692,13 +642,6 @@
|
|
692 |
}
|
693 |
});
|
694 |
|
695 |
-
document.getElementById('chatsList').addEventListener('click', (e) => {
|
696 |
-
const sessionId = e.target.dataset.file;
|
697 |
-
if (sessionId) {
|
698 |
-
loadChat(sessionId);
|
699 |
-
}
|
700 |
-
});
|
701 |
-
|
702 |
// Store selected models
|
703 |
document.getElementById('ollamaModel').addEventListener('change', (e) => {
|
704 |
selectedOllamaModel = e.target.value;
|
@@ -735,12 +678,10 @@
|
|
735 |
sidebar.classList.remove('sidebar-expanded');
|
736 |
sidebar.classList.add('sidebar-collapsed');
|
737 |
sidebarTitle.style.display = 'none';
|
738 |
-
document.querySelectorAll('.chat-file span').forEach(span => span.style.display = 'none');
|
739 |
} else {
|
740 |
sidebar.classList.remove('sidebar-collapsed');
|
741 |
sidebar.classList.add('sidebar-expanded');
|
742 |
sidebarTitle.style.display = 'block';
|
743 |
-
document.querySelectorAll('.chat-file span').forEach(span => span.style.display = 'inline');
|
744 |
}
|
745 |
});
|
746 |
|
@@ -751,7 +692,6 @@
|
|
751 |
sidebar.classList.remove('sidebar-expanded');
|
752 |
sidebar.classList.add('sidebar-collapsed');
|
753 |
document.getElementById('sidebarTitle').style.display = 'none';
|
754 |
-
document.querySelectorAll('.chat-file span').forEach(span => span.style.display = 'none');
|
755 |
}
|
756 |
}
|
757 |
|
|
|
275 |
</button>
|
276 |
</div>
|
277 |
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
</div>
|
279 |
|
280 |
<!-- Main Content -->
|
|
|
332 |
</div>
|
333 |
|
334 |
<script>
|
|
|
335 |
let conversationHistory = [];
|
336 |
let currentAudio = null;
|
337 |
let currentEventSource = null;
|
|
|
386 |
chatArea.scrollTop = chatArea.scrollHeight;
|
387 |
}
|
388 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
389 |
function showContextMenu(e) {
|
390 |
e.preventDefault();
|
391 |
const contextMenu = document.getElementById('contextMenu');
|
|
|
420 |
const newContent = document.getElementById('editMessageInput').value;
|
421 |
const isUserMessage = conversationHistory[editingMessageIndex].role === 'user';
|
422 |
|
423 |
+
// Update conversation history and UI
|
424 |
+
conversationHistory[editingMessageIndex].content = newContent;
|
425 |
+
document.getElementById('chatArea').innerHTML = '';
|
426 |
+
conversationHistory.forEach((message, index) => {
|
427 |
+
addMessage(message.content, message.role === 'user', index);
|
428 |
+
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
429 |
|
430 |
+
// If it was a user message, regenerate the response
|
431 |
+
if (isUserMessage) {
|
432 |
+
await sendMessage(false);
|
|
|
|
|
|
|
|
|
|
|
433 |
}
|
434 |
|
435 |
hideEditModal();
|
|
|
441 |
document.getElementById('listModelsBtn').disabled = true;
|
442 |
document.getElementById('messageInput').disabled = true;
|
443 |
document.getElementById('sidebar').classList.add('disabled');
|
|
|
444 |
document.getElementById('stopBtn').style.display = 'block';
|
445 |
}
|
446 |
|
|
|
450 |
document.getElementById('listModelsBtn').disabled = false;
|
451 |
document.getElementById('messageInput').disabled = false;
|
452 |
document.getElementById('sidebar').classList.remove('disabled');
|
|
|
453 |
document.getElementById('stopBtn').style.display = 'none';
|
454 |
}
|
455 |
|
|
|
495 |
body: JSON.stringify({
|
496 |
base_host: baseHost,
|
497 |
model: model,
|
498 |
+
messages: conversationHistory
|
|
|
499 |
}),
|
500 |
signal: abortController.signal
|
501 |
});
|
|
|
596 |
});
|
597 |
|
598 |
document.getElementById('newChatBtn').addEventListener('click', () => {
|
|
|
599 |
conversationHistory = [];
|
600 |
document.getElementById('chatArea').innerHTML = '';
|
601 |
// Restore selected models
|
|
|
642 |
}
|
643 |
});
|
644 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
645 |
// Store selected models
|
646 |
document.getElementById('ollamaModel').addEventListener('change', (e) => {
|
647 |
selectedOllamaModel = e.target.value;
|
|
|
678 |
sidebar.classList.remove('sidebar-expanded');
|
679 |
sidebar.classList.add('sidebar-collapsed');
|
680 |
sidebarTitle.style.display = 'none';
|
|
|
681 |
} else {
|
682 |
sidebar.classList.remove('sidebar-collapsed');
|
683 |
sidebar.classList.add('sidebar-expanded');
|
684 |
sidebarTitle.style.display = 'block';
|
|
|
685 |
}
|
686 |
});
|
687 |
|
|
|
692 |
sidebar.classList.remove('sidebar-expanded');
|
693 |
sidebar.classList.add('sidebar-collapsed');
|
694 |
document.getElementById('sidebarTitle').style.display = 'none';
|
|
|
695 |
}
|
696 |
}
|
697 |
|