main.js
63 lines
| 2.1 KiB
| application/javascript
|
JavascriptLexer
Thomas Kluyver
|
r18480 | // Copyright (c) IPython Development Team. | ||
// Distributed under the terms of the Modified BSD License. | ||||
require([ | ||||
'jquery', | ||||
'termjs', | ||||
Thomas Kluyver
|
r18481 | 'base/js/utils', | ||
'base/js/page', | ||||
Thomas Kluyver
|
r19633 | 'services/config', | ||
Thomas Kluyver
|
r18481 | 'terminal/js/terminado', | ||
Thomas Kluyver
|
r18480 | 'custom/custom', | ||
], function( | ||||
$, | ||||
Thomas Kluyver
|
r18481 | termjs, | ||
utils, | ||||
page, | ||||
Thomas Kluyver
|
r19633 | configmod, | ||
Thomas Kluyver
|
r18481 | terminado | ||
){ | ||||
Matthias Bussonnier
|
r19739 | "use strict"; | ||
Thomas Kluyver
|
r18481 | page = new page.Page(); | ||
Thomas Kluyver
|
r19633 | |||
Thomas Kluyver
|
r19635 | var common_config = new configmod.ConfigSection('common', | ||
{base_url: utils.get_body_data('baseUrl')}); | ||||
Thomas Kluyver
|
r19633 | common_config.load(); | ||
Thomas Kluyver
|
r18481 | // Test size: 25x80 | ||
Bussonnier Matthias
|
r18489 | var termRowHeight = function(){ return 1.00 * $("#dummy-screen")[0].offsetHeight / 25;}; | ||
Thomas Kluyver
|
r18492 | // 1.02 here arrived at by trial and error to make the spacing look right | ||
Bussonnier Matthias
|
r18489 | var termColWidth = function() { return 1.02 * $("#dummy-screen-rows")[0].offsetWidth / 80;}; | ||
Thomas Kluyver
|
r18481 | |||
var base_url = utils.get_body_data('baseUrl'); | ||||
Thomas Kluyver
|
r18482 | var ws_path = utils.get_body_data('wsPath'); | ||
Thomas Kluyver
|
r18481 | var ws_url = location.protocol.replace('http', 'ws') + "//" + location.host | ||
Thomas Kluyver
|
r18482 | + base_url + ws_path; | ||
Thomas Kluyver
|
r18481 | |||
var header = $("#header")[0] | ||||
function calculate_size() { | ||||
Matthias Bussonnier
|
r19739 | var height = window.innerHeight - header.offsetHeight; | ||
var width = $('#terminado-container').width(); | ||||
Bussonnier Matthias
|
r18489 | var rows = Math.min(1000, Math.max(20, Math.floor(height/termRowHeight())-1)); | ||
var cols = Math.min(1000, Math.max(40, Math.floor(width/termColWidth())-1)); | ||||
console.log("resize to :", rows , 'rows by ', cols, 'columns'); | ||||
Thomas Kluyver
|
r18481 | return {rows: rows, cols: cols}; | ||
} | ||||
page.show_header(); | ||||
Matthias Bussonnier
|
r19739 | var size = calculate_size(); | ||
Thomas Kluyver
|
r18481 | var terminal = terminado.make_terminal($("#terminado-container")[0], size, ws_url); | ||
page.show_site(); | ||||
Thomas Kluyver
|
r19633 | utils.load_extensions_from_config(common_config); | ||
Thomas Kluyver
|
r18481 | window.onresize = function() { | ||
var geom = calculate_size(); | ||||
terminal.term.resize(geom.cols, geom.rows); | ||||
terminal.socket.send(JSON.stringify(["set_size", geom.rows, geom.cols, | ||||
window.innerHeight, window.innerWidth])); | ||||
}; | ||||
Thomas Kluyver
|
r18480 | |||
}); | ||||