| async function submitQuery() { |
| const input = document.getElementById('queryInput'); |
| const btn = document.getElementById('submitBtn'); |
| const statusBar = document.getElementById('statusBar'); |
| const statusText = document.getElementById('statusText'); |
| const responseBox = document.getElementById('responseBox'); |
| const responseText = document.getElementById('responseText'); |
|
|
| const query = input.value.trim(); |
| if (!query) return; |
|
|
| btn.disabled = true; |
| responseBox.classList.add('hidden'); |
| statusBar.classList.remove('hidden'); |
| statusText.textContent = 'Retrieving PubMed literature...'; |
|
|
| try { |
| const res = await fetch('/query', { |
| method: 'POST', |
| headers: { 'Content-Type': 'application/json' }, |
| body: JSON.stringify({ query: query }) |
| }); |
|
|
| const data = await res.json(); |
| statusBar.classList.add('hidden'); |
|
|
| if (data.error) { |
| responseText.textContent = 'Error: ' + data.error; |
| } else { |
| responseText.textContent = data.response; |
| } |
|
|
| responseBox.classList.remove('hidden'); |
|
|
| } catch (err) { |
| statusBar.classList.add('hidden'); |
| responseText.textContent = 'Network error: ' + err.message; |
| responseBox.classList.remove('hidden'); |
| } finally { |
| btn.disabled = false; |
| } |
| } |
|
|
| document.addEventListener('keydown', function(e) { |
| if (e.key === 'Enter' && !e.shiftKey) { |
| e.preventDefault(); |
| submitQuery(); |
| } |
| }); |