mirror of
https://github.com/paradoxxxzero/butterfly.git
synced 2026-05-26 15:13:36 +00:00
67 lines
1.8 KiB
JavaScript
67 lines
1.8 KiB
JavaScript
// Generated by CoffeeScript 1.6.3
|
|
var cols, rows, term, ws;
|
|
|
|
term = ws = null;
|
|
|
|
cols = rows = null;
|
|
|
|
$(function() {
|
|
var ws_url;
|
|
ws_url = 'ws://' + document.location.host + '/ws';
|
|
if (location.pathname.indexOf('/wd') === 0) {
|
|
ws_url += location.pathname.slice(3);
|
|
}
|
|
ws = new WebSocket(ws_url);
|
|
ws.onopen = function() {
|
|
console.log("WebSocket open", arguments);
|
|
term = new Terminal({
|
|
visualBell: true,
|
|
screenKeys: true,
|
|
scrollback: -1
|
|
});
|
|
term.on("data", function(data) {
|
|
return ws.send('SH|' + data);
|
|
});
|
|
term.on("title", function(title) {
|
|
return document.title = title;
|
|
});
|
|
term.open($('main').get(0));
|
|
$('.terminal').attr('style', '');
|
|
return $(window).trigger('resize');
|
|
};
|
|
ws.onclose = function() {
|
|
if (term) {
|
|
term.destroy();
|
|
}
|
|
console.log("WebSocket closed", arguments);
|
|
return open('', '_self').close();
|
|
};
|
|
ws.onerror = function() {
|
|
return console.log("WebSocket error", arguments);
|
|
};
|
|
ws.onmessage = function(event) {
|
|
return term.write(event.data);
|
|
};
|
|
return $(window).resize(function() {
|
|
var $main, $termtest, $test, eh, ew, h, w;
|
|
$main = $('main');
|
|
$termtest = $('<div>').addClass('terminal');
|
|
$test = $('<div>').text('0123456789');
|
|
$termtest.append($test);
|
|
$main.append($termtest);
|
|
eh = $test.outerHeight();
|
|
$test.css({
|
|
display: 'inline-block'
|
|
});
|
|
ew = $test.outerWidth() / 10;
|
|
$termtest.remove();
|
|
w = $main.outerWidth();
|
|
h = $main.outerHeight();
|
|
cols = Math.floor(w / ew) - 1;
|
|
rows = Math.floor(h / eh);
|
|
console.log("Computed " + cols + " cols and " + rows + " rows from main size " + w + ", " + h + " and div " + ew + ", " + eh);
|
|
term.resize(cols, rows);
|
|
return ws.send("RS|" + cols + "," + rows);
|
|
});
|
|
});
|