Guest User

Untitled

a guest
May 28th, 2025
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.29 KB | None | 0 0
  1. {% load static %}
  2.  
  3. <!DOCTYPE html>
  4.  
  5.  
  6.  
  7. <html lang="en">
  8.     <head>
  9.     <title>ArborHub messenger</title>
  10.         <link rel="icon" href="{% static 'favicon.ico' %}">
  11.     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css">
  12.     <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js"></script>
  13.  
  14.     <style>
  15.         #messageLog {
  16.             height: 300px;
  17.             background-color: #FFFFFF;
  18.             resize: none;
  19.         }
  20.  
  21.         #onlineArboristSelector {
  22.             height: 300px;
  23.         }
  24.     </style>
  25. </head>
  26. <body>
  27.  
  28.     <textarea id='chat-text' cols='80' rows='30'></textarea>
  29.  
  30.     <div id='hello-world'></div>
  31.  
  32.     <div class="container mt-3 p-5">
  33.         <h2>ArborHub messenger</h2>
  34.         <div class="row">
  35.             <div class="col-12 col-md-8">
  36.                 <div class="mb-2">
  37.                     <label for="messageLog">Room: #{{ room.name}}</label>
  38.                     <textarea class="form-control" id="messageLog" readOnly></textarea>
  39.                 </div>
  40.                 <div class="input-group">
  41.                     <input type="text" class="form-control" id="channelMessage" placeholder="Message here">
  42.                     <div class="input-group-append">
  43.                         <button class="btn btn-success" id="sendMessage" type="button">Send</button>
  44.                     </div>
  45.                 </div>
  46.             </div>
  47.             <div class="col-12 col-md-4">
  48.                <label for="onlineArboristSelector">Online arborists</label>
  49.                 <select multiple class="form-control" id="onlineArboristSelector">
  50.                 </select>
  51.             </div>
  52.         </div>
  53.     </div>
  54. {{ room_name|json_script:'room-name'}}
  55.     <script>
  56.         document.querySelector('#sendMessage').onclick = function (e) {
  57.             const messageInputDom = document.querySelector('#channelMessage');
  58.             const message = messageInputDom.value;
  59.             chatSocket.send(JSON.stringify({
  60.                 'message': message,
  61.             }));
  62.  
  63.             function editMessage(messageId, newMessage) {
  64.                 websocket.send(JSON.stringify({
  65.                     'type': 'edit_message',
  66.                     'message_id': messageId,
  67.                     'new_message': new Message
  68.                 }));
  69.             }
  70.  
  71.             websocket.onmessaage = function(event) {
  72.                 const data = JSON.parse(event.data);
  73.                 if (dataa.type === 'message_edited') {
  74.                     const messageId = data.message_id;
  75.                     const newMessage = data.new_message;
  76.  
  77.                 }
  78.             }
  79.             messageInputDom.value = '';
  80.         };
  81.         const roomName = JSON.parse(document.getElementById('room-name').textContent);
  82.  
  83.         const chatSocket = new WebSocket(
  84.             'ws://' +
  85.             location.host +
  86.             '/ws/arborchat/' +
  87.             roomName +
  88.             '/'
  89.         );
  90.  
  91.         chatSocket.onmessage = function (e) {
  92.             const data = JSON.parse(e.data);
  93.             console.log("Received message:", data);
  94.             const messageLog = document.querySelector('#messageLog');
  95.             messageLog.value += data.message + '\n';
  96.         }
  97.     </script>
  98. </body>
  99.  
  100. </html>
Advertisement
Add Comment
Please, Sign In to add comment