61 lines
2.1 KiB
HTML
61 lines
2.1 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html>
|
||
|
<head>
|
||
|
<title>{{ questName }}</title>
|
||
|
<script type="text/javascript" src="/static/socket.io.slim.js"></script>
|
||
|
<script>
|
||
|
var socket;
|
||
|
var tid = setInterval( function () {
|
||
|
if ( document.readyState !== 'complete' ) return;
|
||
|
clearInterval( tid );
|
||
|
|
||
|
socket = io.connect('https://' + document.domain + ':' + location.port + '/chat');
|
||
|
socket.on('connect', function() {
|
||
|
socket.emit('joined', {room: '{{ questName }}' });
|
||
|
});
|
||
|
socket.on('message', function(data) {
|
||
|
date = new Date(data.date * 1000);
|
||
|
date_str = date.getFullYear() + '-' + padToTwo(date.getMonth()) + '-' + padToTwo(date.getDay()) + ' ';
|
||
|
date_str += padToTwo(date.getHours()) + ':' + padToTwo(date.getMinutes()) + ':' + padToTwo(date.getSeconds());
|
||
|
|
||
|
msg_str = '<div class="messageHeader">\n<span class="messageName">' + data.name + '</span> ';
|
||
|
msg_str += '<span class="messageDate">' + date_str + '</span>\n</div>\n';
|
||
|
msg_str += '<div class="message">' + data.message + '</div>\n';
|
||
|
|
||
|
mbox = document.getElementById('messageBox');
|
||
|
mbox.innerHTML = mbox.innerHTML + msg_str;
|
||
|
mbox.scrollTop = mbox.scrollHeight;
|
||
|
});
|
||
|
document.getElementById('text').addEventListener('keypress', function(event) {
|
||
|
if (event.key == 'Enter') {
|
||
|
text = document.getElementById('text').value;
|
||
|
document.getElementById('text').value = '';
|
||
|
socket.emit('message', {message: text, name: 'Anonymous', room: '{{ questName }}'});
|
||
|
}
|
||
|
});
|
||
|
}, 100 );
|
||
|
|
||
|
function padToTwo(number) {
|
||
|
if (number<=99) { number = ("0"+number).slice(-2); }
|
||
|
return number;
|
||
|
}
|
||
|
</script>
|
||
|
</head>
|
||
|
<body>
|
||
|
<div id="document">
|
||
|
<h1>Chat</h1>
|
||
|
</div>
|
||
|
<div id="messageBox" style="height:120px; width:320px; border:1px solid #ccc; overflow:auto;">
|
||
|
{% for message in messages %}
|
||
|
<div class="message">
|
||
|
<div class="messageHeader">
|
||
|
<span class="messageName">{{ message["name"] }}</span> <span class="messageDate">{{ message["date"] | strftime }}</span>
|
||
|
</div>
|
||
|
<div class="messageMessage">{{ message["message"] }}</div>
|
||
|
</div>
|
||
|
{% endfor %}
|
||
|
</div>
|
||
|
<textarea id="text" rows="3" cols="43" style="resize:none"></textarea>
|
||
|
</body>
|
||
|
</html>
|