Skip to content
Snippets Groups Projects
Select Git revision
  • e25b66f4b0d049e4d9084feb2ad48cebfd37101d
  • master default protected
2 results

ui.js

Blame
  • Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    ui.js 4.75 KiB
    import { submitFeedback } from "./feedback.js";
    
    /** handle what needs to be displayed in chat container */
    export function appendMessage(content, className, linkId = null, akkordeonId = null, bestToken = null, query = null, answer = null) {
      const messageContainer = document.createElement('div');
      
      if (className === 'user-message') {
        const messageDiv = document.createElement('div');
        messageDiv.textContent = content;
        messageDiv.className = className;
        messageContainer.appendChild(messageDiv);
    
      } else {
        
        messageContainer.className = 'bot-message-container';
    
        const numberBox = document.createElement('div');
        numberBox.className = 'number-box';
        
        const messageDiv = document.createElement('div');
        messageDiv.textContent = content;
        messageDiv.className = className;
        
        const panelDiv = document.createElement('div');
        panelDiv.innerHTML = '<i class="fa-solid fa-down-long"></i>';
        panelDiv.className = 'info-panel';
        panelDiv.setAttribute('data-question', encodeURIComponent(content));
        
        messageDiv.onclick = function(event) {
          event.stopPropagation();
          panelDiv.click();
        }
        
        panelDiv.onclick = function (event) {
          event.stopPropagation();
          let nextElem = messageContainer.nextElementSibling;
          if (nextElem && nextElem.classList.contains('answer-container')) {
            nextElem.remove();
            panelDiv.innerHTML = '<i class="fa-solid fa-down-long"></i>';
            panelDiv.classList.remove('active');
            return;
          }
          panelDiv.innerHTML = '<i class="fa-solid fa-up-long"></i>';
          
          let highlightToken = answer.replace(bestToken, `<span class="highlight">${bestToken}</span>`);
          
          const answerContainer = document.createElement('div');
          answerContainer.className = 'answer-container';
          answerContainer.innerHTML = highlightToken;
          
          messageContainer.parentNode.insertBefore(answerContainer, messageContainer.nextSibling);
          panelDiv.classList.add('active');
        }
    
        messageContainer.appendChild(numberBox);
        messageContainer.appendChild(messageDiv);
        messageContainer.appendChild(panelDiv);
      }
    
      const messagesDiv = document.getElementById('messages');
      messagesDiv.appendChild(messageContainer);
      messagesDiv.scrollTop = messagesDiv.scrollHeight;
    }
    
    /** gets query from input field and performs search */
    export function sendMessage(worker) {
      const userInput = document.getElementById('user-input');
      const message = userInput.value.trim();