Spaces:
Sleeping
Sleeping
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1"> | |
| <title>PDF Q&A Chatbot</title> | |
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"> | |
| <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> | |
| <style> | |
| /* Full-Screen Styling */ | |
| html, body { | |
| height: 100%; | |
| margin: 0; | |
| padding: 0; | |
| font-family: 'Arial', sans-serif; | |
| background-image: url('https://source.unsplash.com/1920x1080/?technology,abstract'); /* Change Background */ | |
| background-size: cover; | |
| background-position: center; | |
| } | |
| .chat-container { | |
| display: flex; | |
| flex-direction: column; | |
| height: 100vh; | |
| justify-content: center; | |
| align-items: center; | |
| } | |
| .chat-box { | |
| width: 80%; | |
| max-width: 800px; | |
| height: 70vh; | |
| overflow-y: auto; | |
| background: rgba(255, 255, 255, 0.9); | |
| border-radius: 10px; | |
| padding: 20px; | |
| box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2); | |
| } | |
| .chat-header { | |
| text-align: center; | |
| font-size: 22px; | |
| font-weight: bold; | |
| color: #007bff; | |
| padding-bottom: 10px; | |
| border-bottom: 2px solid #007bff; | |
| margin-bottom: 10px; | |
| } | |
| .message-container { | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .user-message, .bot-message { | |
| margin: 10px 0; | |
| padding: 12px; | |
| border-radius: 10px; | |
| max-width: 80%; | |
| } | |
| .user-message { | |
| background-color: #007bff; | |
| color: white; | |
| align-self: flex-end; | |
| text-align: right; | |
| } | |
| .bot-message { | |
| background-color: #f1f1f1; | |
| align-self: flex-start; | |
| text-align: left; | |
| } | |
| .image-container img { | |
| max-width: 100%; | |
| border-radius: 5px; | |
| margin-top: 5px; | |
| } | |
| .input-group { | |
| position: fixed; | |
| bottom: 20px; | |
| width: 80%; | |
| max-width: 800px; | |
| } | |
| .form-control { | |
| height: 50px; | |
| font-size: 16px; | |
| } | |
| .btn { | |
| height: 50px; | |
| font-size: 16px; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div class="chat-container"> | |
| <div class="chat-box" id="chat-box"> | |
| <div class="chat-header">π PDF Q&A Chatbot</div> | |
| <div class="message-container"></div> | |
| </div> | |
| <div class="input-group"> | |
| <input type="text" id="query" class="form-control" placeholder="Ask a question..."> | |
| <button class="btn btn-primary" onclick="fetchAnswer()">Ask</button> | |
| </div> | |
| </div> | |
| <script> | |
| function fetchAnswer() { | |
| let query = $("#query").val(); | |
| if (!query) return; | |
| let userMessage = `<div class="user-message">π€ ${query}</div>`; | |
| $("#chat-box .message-container").append(userMessage); | |
| $("#query").val(""); | |
| $.ajax({ | |
| url: "/query", | |
| type: "POST", | |
| contentType: "application/json", | |
| data: JSON.stringify({ query: query }), | |
| success: function(response) { | |
| let botMessage = `<div class="bot-message">π€ ${response.text || "No answer found."}</div>`; | |
| $("#chat-box .message-container").append(botMessage); | |
| if (response.images) { | |
| let imageContainer = `<div class="image-container">`; | |
| response.images.forEach(img => { | |
| imageContainer += `<img src="${img}" class="img-fluid">`; | |
| }); | |
| imageContainer += `</div>`; | |
| $("#chat-box .message-container").append(imageContainer); | |
| } | |
| $("#chat-box").scrollTop($("#chat-box")[0].scrollHeight); | |
| } | |
| }); | |
| } | |
| </script> | |
| </body> | |
| </html> | |