Files
butterfly/app/static/javascripts/main.js
Florian Mounier 0a377c92cc Okay okay
2014-01-24 11:53:13 +01:00

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);
});
});