2022-06-12 12:41:52 +02:00
|
|
|
"use strict";
|
|
|
|
function setareacontent(content) {
|
2022-06-12 09:38:38 +02:00
|
|
|
//this appends to the bottom of the console and scrolls to the bottom make sure we start typing at the bottom
|
|
|
|
var console = document.getElementById("console");
|
|
|
|
console.innerHTML = content;
|
2022-06-12 12:41:52 +02:00
|
|
|
console.scrollTop = console.scrollHeight;
|
2022-06-12 09:38:38 +02:00
|
|
|
}
|
2022-06-12 12:41:52 +02:00
|
|
|
function addareacontent(content) {
|
|
|
|
//this appends to the bottom of the console and scrolls to the bottom make sure we start typing at the bottom
|
|
|
|
var console = document.getElementById("console");
|
|
|
|
//replace the u+2800 and u+2588 with nothing in the console
|
|
|
|
console.innerHTML = console.innerHTML.replace("\u{2800}", "").replace("\u{2588}", "");
|
|
|
|
console.innerHTML += content;
|
|
|
|
console.scrollTop = console.scrollHeight;
|
|
|
|
}
|
|
|
|
function setlastline(content){
|
|
|
|
let console = document.getElementById("console");
|
|
|
|
//split by \n
|
|
|
|
let lines = console.innerHTML.split("\n");
|
|
|
|
//get the last line
|
|
|
|
lines[lines.length - 1] = content;
|
|
|
|
//join the lines back together
|
|
|
|
console.innerHTML = lines.join("\n")+'\u2588';
|
|
|
|
}
|
|
|
|
function resizeit() {
|
|
|
|
let con = $("#console");
|
|
|
|
let windowx = $(window);
|
|
|
|
let winheight = windowx.height();
|
|
|
|
let conoffset = con.offset();
|
|
|
|
con.css('height', winheight - 10);
|
|
|
|
$('#rows').val(winheight - conoffset.top - 10);
|
|
|
|
}
|
|
|
|
function revertcol(){
|
|
|
|
$("#console").css('background-color', '#000000');
|
|
|
|
$("#console").css('color', '#00FF00');
|
|
|
|
|
|
|
|
}
|
|
|
|
function bell(){
|
|
|
|
//plays a beep and inverts colors and they are reverted back after some time
|
|
|
|
$("#console").css('background-color', '#00AC00');
|
|
|
|
$("#console").css('color', '#000000');
|
|
|
|
setTimeout(revertcol, 25);
|
|
|
|
//generate a beep
|
|
|
|
var snd = new Audio("data:audio/wav;base64,//uQRAAAAWMSLwUIYAAsYkXgoQwAEaYLWfkWgAI0wWs/ItAAAGDgYtAgAyN+QWaAAihwMWm4G8QQRDiMcCBcH3Cc+CDv/7xA4Tvh9Rz/y8QADBwMWgQAZG/ILNAARQ4GLTcDeIIIhxGOBAuD7hOfBB3/94gcJ3w+o5/5eIAIAAAVwWgQAVQ2ORaIQwEMAJiDg95G4nQL7mQVWI6GwRcfsZAcsKkJvxgxEjzFUgfHoSQ9Qq7KNwqHwuB13MA4a1q/DmBrHgPcmjiGoh//EwC5nGPEmS4RcfkVKOhJf+WOgoxJclFz3kgn//dBA+ya1GhurNn8zb//9NNutNuhz31f////9vt///z+IdAEAAAK4LQIAKobHItEIYCGAExBwe8jcToF9zIKrEdDYIuP2MgOWFSE34wYiR5iqQPj0JIeoVdlG4VD4XA67mAcNa1fhzA1jwHuTRxDUQ//iYBczjHiTJcIuPyKlHQkv/LHQUYkuSi57yQT//uggfZNajQ3Vmz+Zt//+mm3Wm3Q576v////+32///5/EOgAAADVghQAAAAA//uQZAUAB1WI0PZugAAAAAoQwAAAEk3nRd2qAAAAACiDgAAAAAAABCqEEQRLCgwpBGMlJkIz8jKhGvj4k6jzRnqasNKIeoh5gI7BJaC1A1AoNBjJgbyApVS4IDlZgDU5WUAxEKDNmmALHzZp0Fkz1FMTmGFl1FMEyodIavcCAUHDWrKAIA4aa2oCgILEBupZgHvAhEBcZ6joQBxS76AgccrFlczBvKLC0QI2cBoCFvfTDAo7eoOQInqDPBtvrDEZBNYN5xwNwxQRfw8ZQ5wQVLvO8OYU+mHvFLlDh05Mdg7BT6YrRPpCBznMB2r//xKJjyyOh+cImr2/4doscwD6neZjuZR4AgAABYAAAABy1xcdQtxYBYYZdifkUDgzzXaXn98Z0oi9ILU5mBjFANmRwlVJ3/6jYDAmxaiDG3/6xjQQCCKkRb/6kg/wW+kSJ5//rLobkLSiKmqP/0ikJuDaSaSf/6JiLYLEYnW/+kXg1WRVJL/9EmQ1YZIsv/6Qzwy5qk7/+tEU0nkls3/zIUMPKNX/6yZLf+kFgAfgGyLFAUwY//uQZAUABcd5UiNPVXAAAApAAAAAE0VZQKw9ISAAACgAAAAAVQIygIElVrFkBS+Jhi+EAuu+lKAkYUEIsmEAEoMeDmCETMvfSHTGkF5RWH7kz/ESHWPAq/kcCRhqBtMdokPdM7vil7RG98A2sc7zO6ZvTdM7pmOUAZTnJW+NXxqmd41dqJ6mLTXxrPpnV8avaIf5SvL7pndPvPpndJR9Kuu8fePvuiuhorgWjp7Mf/PRjxcFCPDkW31srioCExivv9lcwKEaHsf/7ow2Fl1T/9RkXgEhYElAoCLFtMArxwivDJJ+bR1HTKJdlEoTELCIqgEwVGSQ+hIm0NbK8WXcTEI0UPoa2NbG4y2K00JEWbZavJXkYaqo9CRHS55FcZTjKEk3NKoCYUnSQ0rWxrZbFKbKIhOKPZe1cJKzZSaQrIyULHDZmV5K4xySsDRKWOruanGtjLJXFEmwaIbDLX0hIPBUQPVFVkQkDoUNfSoDgQGKPekoxeGzA4DUvnn4bxzcZrtJyipKfPNy5w+9lnXwgqsiyHNeSVpemw4bWb9psYeq//uQZBoABQt4yMVxYAIAAAkQoAAAHvYpL5m6AAgAACXDAAAAD59jblTirQe9upFsmZbpMudy7Lz1X1DYsxOOSWpfPqNX2WqktK0DMvuGwlbNj44TleLPQ+Gsfb+GOWOKJoIrWb3cIMeeON6lz2umTqMXV8Mj30yWPpjoSa9ujK8SyeJP5y5mOW1D6hvLepeveEAEDo0mgCRClOEgANv3B9a6fikgUSu/DmAMATrGx7nng5p5iimPNZsfQLYB2sDLIkzRKZOHGAaUyDcpFBSLG9MCQALgAIgQs2YunOszLSAyQYPVC2YdGGeHD2dTdJk1pAHGAWDjnkcLKFymS3RQZTInzySoBwMG0QueC3gMsCEYxUqlrcxK6k1LQQcsmyYeQPdC2YfuGPASCBkcVMQQqpVJshui1tkXQJQV0OXGAZMXSOEEBRirXbVRQW7ugq7IM7rPWSZyDlM3IuNEkxzCOJ0ny2ThNkyRai1b6ev//3dzNGzNb//4uAvHT5sURcZCFcuKLhOFs8mLAAEAt4UWAAIABAAAAAB4qbHo0tIjVkUU//uQZAwABfSFz3ZqQAAAAAngwAAAE1HjMp2qAAAAACZDgAAAD5UkTE1UgZEUExqYynN1qZvqIOREEFmBcJQkwdxiFtw0qEOkGYfRDifBui9MQg4QAHAqWtAWHoCxu1Yf4VfWLPIM2mHDFsbQEVGwyqQoQcwnfHeIkNt9YnkiaS1oizycqJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3ku
|
|
|
|
snd.play();
|
|
|
|
|
2022-06-12 09:38:38 +02:00
|
|
|
}
|
|
|
|
$(document).ready(function(){
|
|
|
|
//fit console to screen
|
|
|
|
//$('#console').css('height', $(window).height() - $('#console').offset().top - 10);
|
|
|
|
//account for the input box
|
2022-06-12 13:35:46 +02:00
|
|
|
$("#console").focus();
|
2022-06-12 13:29:46 +02:00
|
|
|
let host = 'wss://console.brn.systems:443';
|
2022-06-12 12:41:52 +02:00
|
|
|
var socket = io.connect(host);
|
2022-06-12 09:38:38 +02:00
|
|
|
resizeit();
|
|
|
|
//resize it on window resize
|
2022-06-12 12:41:52 +02:00
|
|
|
//$(window).resize(function(){
|
|
|
|
$(window).on('resize', function () {
|
2022-06-12 09:38:38 +02:00
|
|
|
resizeit();
|
|
|
|
});
|
|
|
|
//on key press on any part of html page
|
2022-06-12 12:41:52 +02:00
|
|
|
//$("#console").keyup(function(e){
|
|
|
|
$("#console").on('keyup', function (e) {
|
2022-06-12 09:38:38 +02:00
|
|
|
//if enter key is pressed
|
|
|
|
//get the input
|
|
|
|
e.preventDefault();
|
|
|
|
//resolve e.code to char
|
|
|
|
let key = e.which;
|
|
|
|
//send to server via socket if connected
|
2022-06-12 12:41:52 +02:00
|
|
|
if (key == 8) {
|
2022-06-12 09:38:38 +02:00
|
|
|
socket.emit('keypress', key);
|
|
|
|
}
|
|
|
|
});
|
2022-06-12 12:41:52 +02:00
|
|
|
// $("#console").keypress(function(e){
|
|
|
|
$("#console").on('keypress', function (e) {
|
2022-06-12 09:38:38 +02:00
|
|
|
//if enter key is pressed
|
|
|
|
//get the input
|
|
|
|
e.preventDefault();
|
|
|
|
//resolve e.code to char
|
|
|
|
let key = e.which;
|
|
|
|
//send to server via socket if connected
|
|
|
|
socket.emit('keypress', key);
|
|
|
|
});
|
|
|
|
//connect to the server
|
|
|
|
//on connect
|
2022-06-12 12:41:52 +02:00
|
|
|
socket.on('connect', function () {
|
|
|
|
setareacontent("Connected to server");
|
2022-06-12 09:38:38 +02:00
|
|
|
});
|
|
|
|
//on disconnect
|
2022-06-12 12:41:52 +02:00
|
|
|
socket.on('disconnect', function () {
|
|
|
|
setareacontent("Disconnected from server");
|
2022-06-12 09:38:38 +02:00
|
|
|
});
|
|
|
|
//on error
|
2022-06-12 12:41:52 +02:00
|
|
|
socket.on('error', function (err) {
|
|
|
|
setareacontent("Error: " + err);
|
2022-06-12 09:38:38 +02:00
|
|
|
});
|
|
|
|
//on message
|
2022-06-12 12:41:52 +02:00
|
|
|
socket.on('buffer', function (msg) {
|
|
|
|
setareacontent(msg);
|
|
|
|
});
|
|
|
|
socket.on('bufferx', function (msg) {
|
2022-06-12 09:38:38 +02:00
|
|
|
addareacontent(msg);
|
|
|
|
});
|
2022-06-12 12:41:52 +02:00
|
|
|
socket.on('lastline', function (msg) {
|
|
|
|
setlastline(msg);
|
|
|
|
});
|
|
|
|
socket.on('bell', bell);
|
|
|
|
});
|
|
|
|
function flash() {
|
2022-06-12 09:38:38 +02:00
|
|
|
//if u+2800 is present in the console then replace it with 2588
|
|
|
|
let console = document.getElementById("console");
|
2022-06-12 12:41:52 +02:00
|
|
|
if (console != null) {
|
|
|
|
if (console.innerHTML.indexOf("\u2800") > -1) {
|
|
|
|
console.innerHTML = console.innerHTML.replace("\u2800", "\u2588");
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
console.innerHTML = console.innerHTML.replace("\u2588", "\u2800");
|
|
|
|
}
|
2022-06-12 09:38:38 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
setInterval(flash, 500);
|