194 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			194 lines
		
	
	
	
		
			6.6 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | |
| <html lang="en">
 | |
|   <head>
 | |
|     <meta charset="UTF-8" />
 | |
|     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
 | |
|     <link rel="stylesheet" href="/static/styles.css" />
 | |
|     <title>AI Assistant</title>
 | |
|   </head>
 | |
| 
 | |
|   <body>
 | |
|     <header>
 | |
|       <div class="header-menu">
 | |
|         <ul>
 | |
|           <li>
 | |
|             <a href="/">
 | |
|               <img src="/static/img/logo.png" alt="logo" />
 | |
|             </a>
 | |
|           </li>
 | |
|           <li>
 | |
|             <a href="/documentation">Documentation</a>
 | |
|           </li>
 | |
|           <li>
 | |
|             <a href="/faq">FAQ</a>
 | |
|           </li>
 | |
|           <li>
 | |
|             <button id="toggleButton">Show Divs</button>
 | |
|           </li>
 | |
|         </ul>
 | |
|       </div>
 | |
|     </header>
 | |
| 
 | |
|     <!-- Main container for the layout -->
 | |
|     <div class="container">
 | |
|       <!-- History section -->
 | |
|       <div class="history-background hidden">
 | |
|         <div class="history">
 | |
|           <ul>
 | |
|             <!-- Populate with history items -->
 | |
|             <li><a href="#">history1</a></li>
 | |
|             <li><a href="#">history2</a></li>
 | |
|             <li><a href="#">history3</a></li>
 | |
|             <li><a href="#">history4</a></li>
 | |
|             <li><a href="#">history5</a></li>
 | |
|             <li><a href="#">history6</a></li>
 | |
|             <li><a href="#">history7</a></li>
 | |
|             <li><a href="#">history8</a></li>
 | |
|             <li><a href="#">history9</a></li>
 | |
|             <li><a href="#">history10</a></li>
 | |
|             <li><a href="#">history11</a></li>
 | |
|             <li><a href="#">history12</a></li>
 | |
|             <li><a href="#">history13</a></li>
 | |
|             <li><a href="#">history14</a></li>
 | |
|             <li><a href="#">history15</a></li>
 | |
|             <li><a href="#">history16</a></li>
 | |
|             <li><a href="#">history17</a></li>
 | |
|             <li><a href="#">history18</a></li>
 | |
|             <li><a href="#">history19</a></li>
 | |
|             <li><a href="#">history20</a></li>
 | |
|           </ul>
 | |
|         </div>
 | |
|       </div>
 | |
| 
 | |
|       <!-- Models section -->
 | |
|       <div class="model-background hidden">
 | |
|         <div class="models">
 | |
|           <div class="titel">
 | |
|             <h1>Different AI models</h1>
 | |
|           </div>
 | |
|           <form action="">
 | |
|             <div class="grid">
 | |
|               <button class="code-model model-box">
 | |
|                 <div class="overlay">
 | |
|                   <h3>Code</h3>
 | |
|                   <img src="/static/img/wifi.svg" alt="Wi-Fi" />
 | |
|                 </div>
 | |
|               </button>
 | |
|               <button class="math-model model-box">
 | |
|                 <div class="overlay">
 | |
|                   <h3>Math</h3>
 | |
|                   <img src="/static/img/nowifi.svg" alt="No Wi-Fi" />
 | |
|                 </div>
 | |
|               </button>
 | |
|               <button class="language-model model-box">
 | |
|                 <div class="overlay">
 | |
|                   <h3>Language</h3>
 | |
|                 </div>
 | |
|               </button>
 | |
|               <button class="default-model model-box">
 | |
|                 <div class="overlay">
 | |
|                   <h3>Default</h3>
 | |
|                 </div>
 | |
|               </button>
 | |
|               <button class="default-model model-box">
 | |
|                 <div class="overlay">
 | |
|                   <h3>Default</h3>
 | |
|                 </div>
 | |
|               </button>
 | |
|               <button class="default-model model-box">
 | |
|                 <div class="overlay">
 | |
|                   <h3>Default</h3>
 | |
|                 </div>
 | |
|               </button>
 | |
|               <button class="default-model model-box">
 | |
|                 <div class="overlay">
 | |
|                   <h3>Default</h3>
 | |
|                 </div>
 | |
|               </button>
 | |
|             </div>
 | |
|           </form>
 | |
|         </div>
 | |
|       </div>
 | |
| 
 | |
|       <!-- Output section -->
 | |
|       <!-- Output section -->
 | |
|       <div class="output">
 | |
|         <div class="conversation resize" id="conversation">
 | |
|           {% for message in messages %} {% if message.startswith('User:') %}
 | |
|           <div class="user-message">{{ message }}</div>
 | |
|           {% else %}
 | |
|           <div class="ai-message">{{ message }}</div>
 | |
|           {% endif %} {% endfor %}
 | |
|           <form method="POST" action="" id="buttonForm">
 | |
|             <button type="button" name="option" value="chat">
 | |
|               <img src="/static/img/resend.svg" alt="resend" />
 | |
|             </button>
 | |
|             <button type="button" name="option" value="chat">
 | |
|               <img src="/static/img/edit.svg" alt="edit" />
 | |
|             </button>
 | |
|             <button type="button" name="option" value="answer">
 | |
|               <img src="/static/img/copy.svg" alt="copy" />
 | |
|             </button>
 | |
|           </form>
 | |
|         </div>
 | |
|       </div>
 | |
| 
 | |
|       <!-- Input section -->
 | |
|       <form class="input" method="POST" action="" id="inputForm">
 | |
|         <input
 | |
|           type="text"
 | |
|           name="user_message"
 | |
|           placeholder="Type your message here..."
 | |
|         />
 | |
|         <button type="submit" name="option" value="chat">
 | |
|           <img src="/static/img/send.svg" alt="send" />
 | |
|         </button>
 | |
|         <button type="submit" name="option" value="voice">
 | |
|           <img src="/static/img/microphone.svg" alt="microphone" />
 | |
|         </button>
 | |
|       </form>
 | |
|     </div>
 | |
| 
 | |
|     <script>
 | |
|       function scrollToBottom() {
 | |
|           const conversation = document.getElementById("conversation");
 | |
|           conversation.scrollTop = conversation.scrollHeight;
 | |
|       }
 | |
| 
 | |
|       document.addEventListener("DOMContentLoaded", function () {
 | |
|           scrollToBottom(); // Scroll to the bottom when the page loads
 | |
| 
 | |
|           const conversation = document.getElementById("conversation");
 | |
| 
 | |
|           // Use MutationObserver to efficiently observe changes in the conversation element
 | |
|           const observer = new MutationObserver(() => {
 | |
|               scrollToBottom(); // Scroll to the bottom when a new message is added
 | |
|           });
 | |
| 
 | |
|           observer.observe(conversation, {
 | |
|               childList: true,
 | |
|               subtree: true,
 | |
|           });
 | |
| 
 | |
|           const button = document.getElementById("toggleButton");
 | |
| 
 | |
|           button.addEventListener("click", function () {
 | |
|               const hiddenDivs = document.querySelectorAll("div.hidden");
 | |
|               const areDivsHidden = Array.from(hiddenDivs).every(div =>
 | |
|                   getComputedStyle(div).display === "none" || getComputedStyle(div).display === ""
 | |
|               );
 | |
| 
 | |
|               hiddenDivs.forEach((div) => {
 | |
|                   if (getComputedStyle(div).display === "none" || getComputedStyle(div).display === "") {
 | |
|                       div.style.display = "block"; // Show the div
 | |
|                       div.style.width = ""; // Reset width to default
 | |
|                   } else {
 | |
|                       div.style.display = "none"; // Hide the div
 | |
|                       div.style.width = ""; // Reset width to default
 | |
|                   }
 | |
|               });
 | |
|           });
 | |
|       });
 | |
|     </script>
 | |
|   </body>
 | |
| </html>
 |