diff --git a/public/components/assistant.html b/public/components/assistant.html index 404a516..3c71aa5 100644 --- a/public/components/assistant.html +++ b/public/components/assistant.html @@ -64,7 +64,6 @@ - diff --git a/public/css/assistant.css b/public/css/assistant.css index 796bc6b..728bb3c 100644 --- a/public/css/assistant.css +++ b/public/css/assistant.css @@ -306,3 +306,5 @@ body.assistant-workspace .assistant-learning-view { min-height: 0; height: 100vh .assistant-model-pill[hidden] { display:none; } .assistant-model-control { border:1px solid var(--g200); background:white; border-radius:999px; padding:3px 10px; font-size:11px; color:var(--g600); cursor:pointer; max-width:220px; } .assistant-model-pick { display:block; } +/* Send button becomes a red stop while the assistant works */ +.btn-send.busy { background:var(--danger,#dc2626); } diff --git a/public/js/clinicalAssistant.js b/public/js/clinicalAssistant.js index a6e4439..95afb74 100644 --- a/public/js/clinicalAssistant.js +++ b/public/js/clinicalAssistant.js @@ -126,7 +126,7 @@ import { function bindEvents() { var form = document.getElementById('assistant-form'); var clearBtn = document.getElementById('btn-assistant-clear'); - var cancelBtn = document.getElementById('btn-assistant-cancel'); + var exportBtn = document.getElementById('btn-assistant-export-pdf'); var attachInput = document.getElementById('assistant-attach-input'); var input = document.getElementById('assistant-input'); @@ -144,6 +144,11 @@ import { }); if (form) form.addEventListener('submit', onAsk); + var sendBtn = document.getElementById('btn-assistant-send'); + if (sendBtn) sendBtn.addEventListener('click', function(e) { + // Open WebUI behavior: the send button becomes Stop while working. + if (assistantBusy) { e.preventDefault(); cancelAssistantSearch(); } + }); if (clearBtn) clearBtn.addEventListener('click', clearConversation); document.getElementById('btn-assistant-download-chat').addEventListener('click', downloadTranscript); if (goBackBtn) goBackBtn.addEventListener('click', goBackToMainMenu); @@ -151,7 +156,7 @@ import { input.addEventListener('input', updateConversationBudget); input.addEventListener('input', resizeAssistantInput); } - if (cancelBtn) cancelBtn.addEventListener('click', cancelAssistantSearch); + if (exportBtn) exportBtn.addEventListener('click', exportAnswerPdf); var takehomeBtn = document.getElementById('btn-assistant-takehome'); if (takehomeBtn) takehomeBtn.addEventListener('click', openPatientTakehome); @@ -1053,6 +1058,11 @@ import { resizeAssistantInput(); if (status) status.textContent = 'Asking…'; var send = document.getElementById('btn-assistant-send'); + if (send) { + send.classList.toggle('busy', !!isBusy); + var sendIcon = send.querySelector('i'); + if (sendIcon) sendIcon.className = isBusy ? 'fas fa-stop' : 'fas fa-arrow-up'; + } if (send) send.click(); } @@ -2001,7 +2011,6 @@ import { var status = document.getElementById('assistant-status'); var label = document.getElementById('assistant-status-text'); var send = document.getElementById('btn-assistant-send'); - var cancel = document.getElementById('btn-assistant-cancel'); var input = document.getElementById('assistant-input'); var attachInput = document.getElementById('assistant-attach-input'); if (status) { @@ -2013,13 +2022,6 @@ import { send.disabled = !!isBusy; send.innerHTML = isBusy ? ' Searching' : ' Ask'; } - if (cancel) { - var canCancel = !!isBusy && !!activeAssistantRequest; - if (canCancel) cancel.removeAttribute('hidden'); - else cancel.setAttribute('hidden', ''); - cancel.disabled = !canCancel; - cancel.style.display = canCancel ? 'inline-flex' : 'none'; - } if (input) input.disabled = !!isBusy; if (attachInput) attachInput.disabled = !!isBusy; }