From e117f31645c28e43c28a8692c7e81c7882e8f5ed 2014-07-10 20:47:23 From: Jonathan Frederic <jdfreder@calpoly.edu> Date: 2014-07-10 20:47:23 Subject: [PATCH] Some JS test fixes --- diff --git a/IPython/html/static/base/js/dialog.js b/IPython/html/static/base/js/dialog.js index c4d6c11..c3ea0fc 100644 --- a/IPython/html/static/base/js/dialog.js +++ b/IPython/html/static/base/js/dialog.js @@ -7,7 +7,8 @@ define([ ], function(IPython, $) { "use strict"; - var modal = function (options, keyboard_manager, notebook) { + var modal = function (options) { + var modal = $("<div/>") .addClass("modal") .addClass("fade") @@ -72,16 +73,18 @@ define([ }); } modal.on("hidden.bs.modal", function () { - if (notebook) { - var cell = notebook.get_selected_cell(); + if (options.notebook) { + var cell = options.notebook.get_selected_cell(); if (cell) cell.select(); - keyboard_manager.enable(); - keyboard_manager.command_mode(); + if (options.keyboard_manager) { + options.keyboard_manager.enable(); + options.keyboard_manager.command_mode(); + } } }); - if (keyboard_manager) { - keyboard_manager.disable(); + if (options.keyboard_manager) { + options.keyboard_manager.disable(); } return modal.modal(options); diff --git a/IPython/html/static/base/js/security.js b/IPython/html/static/base/js/security.js index 97121f7..c8301f1 100644 --- a/IPython/html/static/base/js/security.js +++ b/IPython/html/static/base/js/security.js @@ -110,8 +110,12 @@ define([ return sanitized; }; - return { + var security = { caja: caja, sanitize_html: sanitize_html }; + + IPython.security = security; + + return security; }); diff --git a/IPython/html/static/notebook/js/main.js b/IPython/html/static/notebook/js/main.js index 6f7a2b8..0824a06 100644 --- a/IPython/html/static/notebook/js/main.js +++ b/IPython/html/static/notebook/js/main.js @@ -1,12 +1,12 @@ // Copyright (c) IPython Development Team. // Distributed under the terms of the Modified BSD License. -var ipython = ipython || {}; require([ 'base/js/namespace', 'jquery', 'notebook/js/notebook', 'base/js/utils', + 'base/js/keyboard', 'base/js/page', 'notebook/js/layoutmanager', 'base/js/events', @@ -24,6 +24,7 @@ require([ $, notebook, utils, + keyboard, page, layoutmanager, events, @@ -71,7 +72,8 @@ require([ events: events}); var quick_help = new quickhelp.QuickHelp({ keyboard_manager: keyboard_manager, - events: events}); + events: events, + notebook: notebook}); var menubar = new menubar.MenuBar('#menubar', $.extend({ notebook: notebook, layout_manager: layout_manager, @@ -83,7 +85,8 @@ require([ '#notification_area', { events: events, save_widget: save_widget, - notebook: notebook}); + notebook: notebook, + keyboard_manager: keyboard_manager}); notification_area.init_notification_widgets(); $('body').append('<div id="fonttest"><pre><span id="test1">x</span>'+ @@ -116,17 +119,18 @@ require([ events.trigger('app_initialized.NotebookApp'); notebook.load_notebook(common_options.notebook_name, common_options.notebook_path); - ipython.page = page; - ipython.layout_manager = layout_manager; - ipython.notebook = notebook; - ipython.pager = pager; - ipython.quick_help = quick_help; - ipython.login_widget = login_widget; - ipython.menubar = menubar; - ipython.toolbar = toolbar; - ipython.notification_area = notification_area; - ipython.events = events; - ipython.keyboard_manager = keyboard_manager; - ipython.save_widget = save_widget; - ipython.config = user_config; + IPython.page = page; + IPython.layout_manager = layout_manager; + IPython.notebook = notebook; + IPython.pager = pager; + IPython.quick_help = quick_help; + IPython.login_widget = login_widget; + IPython.menubar = menubar; + IPython.toolbar = toolbar; + IPython.notification_area = notification_area; + IPython.events = events; + IPython.keyboard_manager = keyboard_manager; + IPython.save_widget = save_widget; + IPython.config = user_config; + IPython.keyboard = keyboard; }); diff --git a/IPython/html/static/notebook/js/notebook.js b/IPython/html/static/notebook/js/notebook.js index f7aaee5..b6251e2 100644 --- a/IPython/html/static/notebook/js/notebook.js +++ b/IPython/html/static/notebook/js/notebook.js @@ -190,6 +190,8 @@ define([ this.events.on('status_autorestarting.Kernel', function () { dialog.modal({ + notebook: that, + keyboard_manager: that.keyboard_manager, title: "Kernel Restarting", body: "The kernel appears to have died. It will restart automatically.", buttons: { @@ -1476,10 +1478,10 @@ define([ * @method start_session */ Notebook.prototype.start_session = function () { - this.session = new session.Session(this, { - base_url: base_url, - notebook_path: notebook_path, - notebook_name: notebook_name, + this.session = new session.Session({ + base_url: this.base_url, + notebook_path: this.notebook_path, + notebook_name: this.notebook_name, notebook: this}); this.session.start($.proxy(this._session_started, this)); }; @@ -1509,6 +1511,8 @@ define([ Notebook.prototype.restart_kernel = function () { var that = this; dialog.modal({ + notebook: this, + keyboard_manager: this.keyboard_manager, title : "Restart kernel or continue running?", body : $("<p/>").text( 'Do you want to restart the current kernel? You will lose all variables defined in it.' @@ -1732,6 +1736,8 @@ define([ } if (content.worksheets.length > 1) { dialog.modal({ + notebook: this, + keyboard_manager: this.keyboard_manager, title : "Multiple worksheets", body : "This notebook has " + data.worksheets.length + " worksheets, " + "but this version of IPython can only handle the first. " + @@ -1920,6 +1926,8 @@ define([ var nb = this; dialog.modal({ + notebook: this, + keyboard_manager: this.keyboard_manager, title: "Trust this notebook?", body: body, @@ -2065,6 +2073,8 @@ define([ ); this.events.trigger('notebook_rename_failed.Notebook', [xhr, status, error]); dialog.modal({ + notebook: this, + keyboard_manager: this.keyboard_manager, title: "Notebook Rename Error!", body: dialog_body, buttons : { @@ -2146,6 +2156,8 @@ define([ "may not be able to read it. To keep the older version, close the " + "notebook without saving it."; dialog.modal({ + notebook: this, + keyboard_manager: this.keyboard_manager, title : "Notebook converted", body : msg, buttons : { @@ -2163,6 +2175,8 @@ define([ "introduced in later notebook versions may not be available."; dialog.modal({ + notebook: this, + keyboard_manager: this.keyboard_manager, title : "Newer Notebook", body : msg, buttons : { @@ -2214,6 +2228,8 @@ define([ "v" + this.nbformat + " or earlier."; } dialog.modal({ + notebook: this, + keyboard_manager: this.keyboard_manager, title: "Error loading notebook", body : msg, buttons : { @@ -2378,6 +2394,8 @@ define([ ); dialog.modal({ + notebook: this, + keyboard_manager: this.keyboard_manager, title : "Revert notebook to checkpoint", body : body, buttons : { diff --git a/IPython/html/static/notebook/js/notificationarea.js b/IPython/html/static/notebook/js/notificationarea.js index 11d03bd..0fad72b 100644 --- a/IPython/html/static/notebook/js/notificationarea.js +++ b/IPython/html/static/notebook/js/notificationarea.js @@ -24,6 +24,7 @@ define([ this.events = options.events; this.save_widget = options.save_widget; this.notebook = options.notebook; + this.keyboard_manager = options.keyboard_manager; if (this.selector !== undefined) { this.element = $(selector); } @@ -135,6 +136,8 @@ define([ dialog.modal({ title: "Dead kernel", body : msg, + keyboard_manager: that.keyboard_manager, + notebook: that.notebook, buttons : { "Manual Restart": { class: "btn-danger", @@ -167,6 +170,8 @@ define([ dialog.modal({ title: "WebSocket connection failed", body: msg, + keyboard_manager: that.keyboard_manager, + notebook: that.notebook, buttons : { "OK": {}, "Reconnect": { diff --git a/IPython/html/static/notebook/js/quickhelp.js b/IPython/html/static/notebook/js/quickhelp.js index fff4f35..4bc179a 100644 --- a/IPython/html/static/notebook/js/quickhelp.js +++ b/IPython/html/static/notebook/js/quickhelp.js @@ -18,7 +18,9 @@ define([ // Dictionary of keyword arguments. // events: $(Events) instance // keyboard_manager: KeyboardManager instance + // notebook: Notebook instance this.keyboard_manager = options.keyboard_manager; + this.notebook = options.notebook; this.keyboard_manager.quick_help = this; this.events = options.events; }; @@ -112,7 +114,9 @@ define([ destroy : false, buttons : { Close : {} - } + }, + notebook: this.notebook, + keyboard_manager: this.keyboard_manager, }); this.shortcut_dialog.addClass("modal_stretch"); diff --git a/IPython/html/static/notebook/js/textcell.js b/IPython/html/static/notebook/js/textcell.js index 8f2755c..393a9fb 100644 --- a/IPython/html/static/notebook/js/textcell.js +++ b/IPython/html/static/notebook/js/textcell.js @@ -44,7 +44,7 @@ define([ Cell.apply(this, [{ config: config, keyboard_manager: options.keyboard_manager, - events: events}]); + events: this.events}]); this.cell_type = this.cell_type || 'text'; mathjaxutils = mathjaxutils; diff --git a/IPython/html/static/notebook/js/tour.js b/IPython/html/static/notebook/js/tour.js index 0059319..dcd4e34 100644 --- a/IPython/html/static/notebook/js/tour.js +++ b/IPython/html/static/notebook/js/tour.js @@ -4,7 +4,7 @@ define([ 'base/js/namespace', 'jquery', - 'components/bootstrap-tour/build/js/bootstrap-tour.min', + 'bootstraptour', ], function(IPython, $, Tour) { "use strict"; diff --git a/IPython/html/static/services/sessions/js/session.js b/IPython/html/static/services/sessions/js/session.js index 9d53d00..1cfb1a9 100644 --- a/IPython/html/static/services/sessions/js/session.js +++ b/IPython/html/static/services/sessions/js/session.js @@ -13,9 +13,9 @@ define([ this.kernel = null; this.id = null; this.notebook = options.notebook; - this.name = notebook.notebook_name; - this.path = notebook.notebook_path; - this.base_url = notebook.base_url; + this.name = options.notebook_name; + this.path = options.notebook_path; + this.base_url = options.base_url; }; Session.prototype.start = function(callback) { diff --git a/IPython/html/templates/page.html b/IPython/html/templates/page.html index 9321b14..a693ac0 100644 --- a/IPython/html/templates/page.html +++ b/IPython/html/templates/page.html @@ -23,6 +23,7 @@ underscore : 'components/underscore/underscore-min', backbone : 'components/backbone/backbone-min', jquery: 'components/jquery/jquery.min', + bootstraptour: 'components/bootstrap-tour/build/js/bootstrap-tour.min', }, shim: { underscore: { @@ -31,6 +32,9 @@ backbone: { deps: ["underscore", "jquery"], exports: "Backbone" + }, + bootstraptour: { + exports: "Tour" } } }); diff --git a/IPython/html/tests/util.js b/IPython/html/tests/util.js index 8523496..a184bc8 100644 --- a/IPython/html/tests/util.js +++ b/IPython/html/tests/util.js @@ -12,6 +12,7 @@ casper.open_new_notebook = function () { // Create and open a new notebook. var baseUrl = this.get_notebook_server(); this.start(baseUrl); + this.waitFor(this.page_loaded); this.thenClick('button#new_notebook'); this.waitForPopup(''); @@ -19,11 +20,13 @@ casper.open_new_notebook = function () { this.then(function () { this.open(this.popups[0].url); }); + this.waitFor(this.page_loaded); // Make sure the kernel has started - this.waitFor( this.kernel_running ); + this.waitFor(this.kernel_running); // track the IPython busy/idle state this.thenEvaluate(function () { + IPython._status = 'idle'; $([IPython.events]).on('status_idle.Kernel',function () { IPython._status = 'idle'; }); @@ -42,9 +45,18 @@ casper.open_new_notebook = function () { }); }; -casper.kernel_running = function kernel_running() { +casper.page_loaded = function() { // Return whether or not the kernel is running. - return this.evaluate(function kernel_running() { + return this.evaluate(function() { + return IPython !== undefined && + IPython.page !== undefined && + IPython.events !== undefined; + }); +}; + +casper.kernel_running = function() { + // Return whether or not the kernel is running. + return this.evaluate(function() { return IPython.notebook.kernel.running; }); }; @@ -503,6 +515,7 @@ casper.open_dashboard = function () { // Start casper by opening the dashboard page. var baseUrl = this.get_notebook_server(); this.start(baseUrl); + this.waitFor(this.page_loaded); this.wait_for_dashboard(); };