| <!DOCTYPE html> |
| <html> |
| <head> |
| <title>Trustworthy LLMs for Table QA</title> |
| <style> |
| body { |
| font-family: 'Roboto', sans-serif; |
| background: url('/static/images/background.jpg') no-repeat center center fixed; |
| background-size: cover; |
| display: flex; |
| justify-content: center; |
| align-items: center; |
| height: 100vh; |
| margin: 0; |
| } |
| .container { |
| text-align: center; |
| background-color: #ffffff; |
| padding: 60px; |
| border-radius: 10px; |
| box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); |
| width: 60%; |
| } |
| h1 { |
| color: #000000; |
| font-size: 48px; |
| margin-bottom: 30px; |
| } |
| label { |
| display: block; |
| margin: 20px 0 10px; |
| color: #000000; |
| font-size: 24px; |
| } |
| input[type="text"], input[type="number"] { |
| width: 80%; |
| padding: 15px; |
| margin-bottom: 20px; |
| border: 1px solid #ddd; |
| border-radius: 5px; |
| font-size: 18px; |
| } |
| .method-buttons { |
| display: flex; |
| flex-wrap: wrap; |
| justify-content: center; |
| margin-bottom: 20px; |
| gap: 20px; |
| } |
| .method-button { |
| width: calc(45% - 10px); |
| padding: 15px; |
| font-size: 20px; |
| border-radius: 10px; |
| cursor: pointer; |
| transition: all 0.3s ease; |
| border: 2px solid transparent; |
| font-weight: bold; |
| text-align: center; |
| } |
| .method-button.Chain-of-Table { |
| background-color: #ffcc80; |
| color: #1e90ff; |
| } |
| .method-button.Plan-of-SQLs { |
| background-color: #ffcc80; |
| color: #e65100; |
| } |
| .method-button.Text2SQL { |
| background-color: #ffcc80; |
| color: #7b1fa2; |
| } |
| .method-button.Dater { |
| background-color: #ffcc80; |
| color: #4caf50; |
| } |
| .method-button.No-XAI { |
| background-color: #ffcc80; |
| color: #ff9800; |
| } |
| .task-instruction { |
| background-color: #f0f8ff; |
| border-left: 5px solid #4CAF50; |
| padding: 20px; |
| margin-bottom: 30px; |
| border-radius: 5px; |
| text-align: left; |
| } |
| .task-instruction h2 { |
| color: #4CAF50; |
| margin-top: 0; |
| } |
| .task-step { |
| display: flex; |
| align-items: center; |
| margin-bottom: 15px; |
| } |
| .task-icon { |
| font-size: 24px; |
| margin-right: 15px; |
| color: #4CAF50; |
| } |
| .task-text { |
| font-size: 18px; |
| color: #333; |
| } |
| .method-button:hover { |
| opacity: 0.8; |
| } |
| .method-button.selected { |
| border-color: #000000; |
| box-shadow: 0 0 15px rgba(0, 0, 0, 0.3); |
| transform: scale(1.05); |
| animation: borderPulse 0.5s ease-in-out; |
| } |
| @keyframes borderPulse { |
| 0% { border-color: transparent; } |
| 50% { border-color: #000000; } |
| 100% { border-color: #000000; } |
| } |
| button { |
| background-color: #4CAF50; |
| color: white; |
| padding: 15px 30px; |
| border: none; |
| border-radius: 5px; |
| cursor: pointer; |
| font-size: 24px; |
| transition: background-color 0.3s ease; |
| margin-top: 20px; |
| } |
| button:hover { |
| background-color: #45a049; |
| } |
| .error-message { |
| color: red; |
| margin-bottom: 10px; |
| font-size: 18px; |
| } |
| </style> |
| <script> |
| function shuffleArray(array) { |
| for (let i = array.length - 1; i > 0; i--) { |
| const j = Math.floor(Math.random() * (i + 1)); |
| [array[i], array[j]] = [array[j], array[i]]; |
| } |
| return array; |
| } |
| |
| function createMethodButtons() { |
| const methods = [ |
| { name: 'Chain-of-Table', color: '#1e90ff' }, |
| { name: 'Plan-of-SQLs', color: '#e65100' }, |
| { name: 'Text2SQL', color: '#7b1fa2' }, |
| { name: 'Dater', color: '#4caf50' }, |
| { name: 'No-XAI', color: '#ff9800' } |
| ]; |
| |
| const shuffledMethods = shuffleArray(methods); |
| const container = document.querySelector('.method-buttons'); |
| container.innerHTML = ''; |
| |
| shuffledMethods.forEach(method => { |
| if (method.name === 'No-XAI' && !{{ show_no_xai|tojson }}) { |
| return; |
| } |
| const button = document.createElement('div'); |
| button.className = `method-button ${method.name}`; |
| button.onclick = () => selectMethod(method.name); |
| button.textContent = method.name; |
| container.appendChild(button); |
| }); |
| } |
| |
| function selectMethod(method) { |
| document.getElementById('method').value = method; |
| |
| var buttons = document.getElementsByClassName('method-button'); |
| for (var i = 0; i < buttons.length; i++) { |
| buttons[i].classList.remove('selected'); |
| } |
| |
| var selectedButton = document.querySelector(`.method-button.${method}`); |
| if (selectedButton) { |
| selectedButton.classList.add('selected'); |
| } |
| } |
| |
| function validateForm() { |
| var username = document.getElementById('username').value; |
| var seed = document.getElementById('seed').value; |
| var method = document.getElementById('method').value; |
| if (!username || !seed || !method) { |
| alert("Please fill in all fields and select a method."); |
| return false; |
| } |
| return true; |
| } |
| |
| |
| window.onload = function() { |
| createMethodButtons(); |
| }; |
| </script> |
| <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet"> |
| </head> |
| <body> |
| <div class="container"> |
| <div class="task-instruction"> |
| <h2>Let's Get Started! π</h2> |
| <div class="task-step"> |
| <span class="task-icon">π€</span> |
| <span class="task-text">Enter your name</span> |
| </div> |
| <div class="task-step"> |
| <span class="task-icon">π’</span> |
| <span class="task-text">Choose a lucky number</span> |
| </div> |
| <div class="task-step"> |
| <span class="task-icon">π</span> |
| <span class="task-text">Select an explanation method</span> |
| </div> |
| <div class="task-step"> |
| <span class="task-icon">π―</span> |
| <span class="task-text">Complete 10 samples in the experiment</span> |
| </div> |
| </div> |
|
|
| {% if error %} |
| <div class="error-message"> |
| {{ error }} |
| </div> |
| {% endif %} |
|
|
| <form id="method-form" action="{{ url_for('index') }}" method="post" onsubmit="return validateForm();"> |
| <label for="username">Hi there πππ ! What is your name?</label> |
| <input type="text" id="username" name="username" required> |
| <label for="seed">What is your lucky number? πππ </label> |
| <input type="number" id="seed" name="seed" required> |
|
|
| <input type="hidden" id="method" name="method" required> |
|
|
| <h2 style="color: #333; margin-top: 30px; margin-bottom: 20px;">Explanation Methods</h2> |
|
|
| <div class="method-buttons"> |
| |
| </div> |
|
|
| <button type="submit">Next</button> |
| </form> |
| </div> |
| </body> |
| </html> |