diff --git a/static/js/webterminal.js b/static/js/webterminal.js
new file mode 100644
index 000000000..8d6942d9b
--- /dev/null
+++ b/static/js/webterminal.js
@@ -0,0 +1,116 @@
+/**
+ * Created by liuzheng on 3/3/16.
+ */
+var rowHeight = 1;
+var colWidth = 1;
+function WSSHClient() {
+}
+WSSHClient.prototype._generateEndpoint = function (options) {
+ console.log(options);
+ if (window.location.protocol == 'https:') {
+ var protocol = 'wss://';
+ } else {
+ var protocol = 'ws://';
+ }
+
+ var endpoint = protocol + document.URL.match(RegExp('//(.*?)/'))[1] + '/ws/terminal' + document.URL.match(/(\?.*)/);
+ return endpoint;
+};
+WSSHClient.prototype.connect = function (options) {
+ var endpoint = this._generateEndpoint(options);
+
+ if (window.WebSocket) {
+ this._connection = new WebSocket(endpoint);
+ }
+ else if (window.MozWebSocket) {
+ this._connection = MozWebSocket(endpoint);
+ }
+ else {
+ options.onError('WebSocket Not Supported');
+ return;
+ }
+
+ this._connection.onopen = function () {
+ options.onConnect();
+ };
+
+ this._connection.onmessage = function (evt) {
+ var data = JSON.parse(evt.data.toString());
+ if (data.error !== undefined) {
+ options.onError(data.error);
+ }
+ else {
+ options.onData(data.data);
+ }
+ };
+
+ this._connection.onclose = function (evt) {
+ options.onClose();
+ };
+};
+
+WSSHClient.prototype.send = function (data) {
+ this._connection.send(JSON.stringify({'data': data}));
+};
+
+function openTerminal(options) {
+ var client = new WSSHClient();
+ var term = new Terminal({
+ rows: rowHeight,
+ cols: colWidth,
+ useStyle: true,
+ screenKeys: true
+ });
+ term.open();
+ term.on('data', function (data) {
+ client.send(data)
+ });
+ $('.terminal').detach().appendTo('#term');
+ term.resize(80, 24);
+ term.write('Connecting...');
+ client.connect($.extend(options, {
+ onError: function (error) {
+ term.write('Error: ' + error + '\r\n');
+ },
+ onConnect: function () {
+ // Erase our connecting message
+ term.write('\r');
+ },
+ onClose: function () {
+ term.write('Connection Reset By Peer');
+ },
+ onData: function (data) {
+ term.write(data);
+ }
+ }));
+ rowHeight = 0.0 + 1.00 * $('.terminal').height() / 24;
+ colWidth = 0.0 + 1.00 * $('.terminal').width() / 80;
+ return {'term': term, 'client': client};
+}
+
+function resize() {
+ $('.terminal').css('width', window.innerWidth - 25);
+ console.log(window.innerWidth);
+ console.log(window.innerWidth - 10);
+ var rows = Math.floor(window.innerHeight / rowHeight) - 2;
+ var cols = Math.floor(window.innerWidth / colWidth) - 1;
+
+ return {rows: rows, cols: cols};
+}
+
+$(document).ready(function () {
+ var options = {};
+
+ $('#ssh').show();
+ var term_client = openTerminal(options);
+ console.log(rowHeight);
+
+ window.onresize = function () {
+ var geom = resize();
+ console.log(geom);
+ term_client.term.resize(geom.cols, geom.rows);
+ term_client.client.send({'resize': {'rows': geom.rows, 'cols': geom.cols}});
+ $('#ssh').show();
+ }
+
+});
\ No newline at end of file
diff --git a/templates/jlog/web_terminal.html b/templates/jlog/web_terminal.html
index 7dec79102..deb9fb4c9 100644
--- a/templates/jlog/web_terminal.html
+++ b/templates/jlog/web_terminal.html
@@ -36,109 +36,6 @@
-
-
-
+