##// END OF EJS Templates
Trigger app_initialized event *after* the 'global' IPython object is initialized
Jason Grout -
Show More
@@ -1,135 +1,137 b''
1 // Copyright (c) IPython Development Team.
1 // Copyright (c) IPython Development Team.
2 // Distributed under the terms of the Modified BSD License.
2 // Distributed under the terms of the Modified BSD License.
3
3
4 require([
4 require([
5 'base/js/namespace',
5 'base/js/namespace',
6 'jquery',
6 'jquery',
7 'notebook/js/notebook',
7 'notebook/js/notebook',
8 'base/js/utils',
8 'base/js/utils',
9 'base/js/page',
9 'base/js/page',
10 'notebook/js/layoutmanager',
10 'notebook/js/layoutmanager',
11 'base/js/events',
11 'base/js/events',
12 'auth/js/loginwidget',
12 'auth/js/loginwidget',
13 'notebook/js/maintoolbar',
13 'notebook/js/maintoolbar',
14 'notebook/js/pager',
14 'notebook/js/pager',
15 'notebook/js/quickhelp',
15 'notebook/js/quickhelp',
16 'notebook/js/menubar',
16 'notebook/js/menubar',
17 'notebook/js/notificationarea',
17 'notebook/js/notificationarea',
18 'notebook/js/savewidget',
18 'notebook/js/savewidget',
19 'notebook/js/keyboardmanager',
19 'notebook/js/keyboardmanager',
20 'notebook/js/config',
20 'notebook/js/config',
21 'custom/custom',
21 ], function(
22 ], function(
22 IPython,
23 IPython,
23 $,
24 $,
24 notebook,
25 notebook,
25 utils,
26 utils,
26 page,
27 page,
27 layoutmanager,
28 layoutmanager,
28 events,
29 events,
29 loginwidget,
30 loginwidget,
30 maintoolbar,
31 maintoolbar,
31 pager,
32 pager,
32 quickhelp,
33 quickhelp,
33 menubar,
34 menubar,
34 notificationarea,
35 notificationarea,
35 savewidget,
36 savewidget,
36 keyboardmanager,
37 keyboardmanager,
37 config
38 config
38 ) {
39 ) {
39 "use strict";
40 "use strict";
40
41
41 $('#ipython-main-app').addClass('border-box-sizing');
42 $('#ipython-main-app').addClass('border-box-sizing');
42 $('div#notebook_panel').addClass('border-box-sizing');
43 $('div#notebook_panel').addClass('border-box-sizing');
43
44
44 var common_options = {
45 var common_options = {
45 base_url : utils.get_body_data("baseUrl"),
46 base_url : utils.get_body_data("baseUrl"),
46 notebook_path : utils.get_body_data("notebookPath"),
47 notebook_path : utils.get_body_data("notebookPath"),
47 notebook_name : utils.get_body_data('notebookName')
48 notebook_name : utils.get_body_data('notebookName')
48 };
49 };
49
50
50 var user_config = $.extend({}, config.default_config);
51 var user_config = $.extend({}, config.default_config);
51 var page = new page.Page();
52 var page = new page.Page();
52 var layout_manager = new layoutmanager.LayoutManager();
53 var layout_manager = new layoutmanager.LayoutManager();
53 var pager = new pager.Pager('div#pager', 'div#pager_splitter', {
54 var pager = new pager.Pager('div#pager', 'div#pager_splitter', {
54 layout_manager: layout_manager,
55 layout_manager: layout_manager,
55 events: events});
56 events: events});
56 var keyboard_manager = new keyboardmanager.KeyboardManager({
57 var keyboard_manager = new keyboardmanager.KeyboardManager({
57 pager: pager,
58 pager: pager,
58 events: events});
59 events: events});
59 var save_widget = new savewidget.SaveWidget('span#save_widget', {
60 var save_widget = new savewidget.SaveWidget('span#save_widget', {
60 events: events,
61 events: events,
61 keyboard_manager: keyboard_manager});
62 keyboard_manager: keyboard_manager});
62 var notebook = new notebook.Notebook('div#notebook', $.extend({
63 var notebook = new notebook.Notebook('div#notebook', $.extend({
63 events: events,
64 events: events,
64 keyboard_manager: keyboard_manager,
65 keyboard_manager: keyboard_manager,
65 save_widget: save_widget,
66 save_widget: save_widget,
66 config: user_config},
67 config: user_config},
67 common_options));
68 common_options));
68 var login_widget = new loginwidget.LoginWidget('span#login_widget', common_options);
69 var login_widget = new loginwidget.LoginWidget('span#login_widget', common_options);
69 var toolbar = new maintoolbar.MainToolBar('#maintoolbar-container', {
70 var toolbar = new maintoolbar.MainToolBar('#maintoolbar-container', {
70 notebook: notebook,
71 notebook: notebook,
71 events: events});
72 events: events});
72 var quick_help = new quickhelp.QuickHelp({
73 var quick_help = new quickhelp.QuickHelp({
73 keyboard_manager: keyboard_manager,
74 keyboard_manager: keyboard_manager,
74 events: events,
75 events: events,
75 notebook: notebook});
76 notebook: notebook});
76 var menubar = new menubar.MenuBar('#menubar', $.extend({
77 var menubar = new menubar.MenuBar('#menubar', $.extend({
77 notebook: notebook,
78 notebook: notebook,
78 layout_manager: layout_manager,
79 layout_manager: layout_manager,
79 events: events,
80 events: events,
80 save_widget: save_widget,
81 save_widget: save_widget,
81 quick_help: quick_help},
82 quick_help: quick_help},
82 common_options));
83 common_options));
83 var notification_area = new notificationarea.NotificationArea(
84 var notification_area = new notificationarea.NotificationArea(
84 '#notification_area', {
85 '#notification_area', {
85 events: events,
86 events: events,
86 save_widget: save_widget,
87 save_widget: save_widget,
87 notebook: notebook,
88 notebook: notebook,
88 keyboard_manager: keyboard_manager});
89 keyboard_manager: keyboard_manager});
89 notification_area.init_notification_widgets();
90 notification_area.init_notification_widgets();
90
91
91 $('body').append('<div id="fonttest"><pre><span id="test1">x</span>'+
92 $('body').append('<div id="fonttest"><pre><span id="test1">x</span>'+
92 '<span id="test2" style="font-weight: bold;">x</span>'+
93 '<span id="test2" style="font-weight: bold;">x</span>'+
93 '<span id="test3" style="font-style: italic;">x</span></pre></div>');
94 '<span id="test3" style="font-style: italic;">x</span></pre></div>');
94 var nh = $('#test1').innerHeight();
95 var nh = $('#test1').innerHeight();
95 var bh = $('#test2').innerHeight();
96 var bh = $('#test2').innerHeight();
96 var ih = $('#test3').innerHeight();
97 var ih = $('#test3').innerHeight();
97 if(nh != bh || nh != ih) {
98 if(nh != bh || nh != ih) {
98 $('head').append('<style>.CodeMirror span { vertical-align: bottom; }</style>');
99 $('head').append('<style>.CodeMirror span { vertical-align: bottom; }</style>');
99 }
100 }
100 $('#fonttest').remove();
101 $('#fonttest').remove();
101
102
102 page.show();
103 page.show();
103
104
104 layout_manager.do_resize();
105 layout_manager.do_resize();
105 var first_load = function () {
106 var first_load = function () {
106 layout_manager.do_resize();
107 layout_manager.do_resize();
107 var hash = document.location.hash;
108 var hash = document.location.hash;
108 if (hash) {
109 if (hash) {
109 document.location.hash = '';
110 document.location.hash = '';
110 document.location.hash = hash;
111 document.location.hash = hash;
111 }
112 }
112 notebook.set_autosave_interval(notebook.minimum_autosave_interval);
113 notebook.set_autosave_interval(notebook.minimum_autosave_interval);
113 // only do this once
114 // only do this once
114 events.off('notebook_loaded.Notebook', first_load);
115 events.off('notebook_loaded.Notebook', first_load);
115 };
116 };
116
117 events.on('notebook_loaded.Notebook', first_load);
117 events.on('notebook_loaded.Notebook', first_load);
118 events.trigger('app_initialized.NotebookApp');
118
119 notebook.load_notebook(common_options.notebook_name, common_options.notebook_path);
120
121 IPython.page = page;
119 IPython.page = page;
122 IPython.layout_manager = layout_manager;
120 IPython.layout_manager = layout_manager;
123 IPython.notebook = notebook;
121 IPython.notebook = notebook;
124 IPython.pager = pager;
122 IPython.pager = pager;
125 IPython.quick_help = quick_help;
123 IPython.quick_help = quick_help;
126 IPython.login_widget = login_widget;
124 IPython.login_widget = login_widget;
127 IPython.menubar = menubar;
125 IPython.menubar = menubar;
128 IPython.toolbar = toolbar;
126 IPython.toolbar = toolbar;
129 IPython.notification_area = notification_area;
127 IPython.notification_area = notification_area;
130 IPython.events = events;
128 IPython.events = events;
131 IPython.keyboard_manager = keyboard_manager;
129 IPython.keyboard_manager = keyboard_manager;
132 IPython.save_widget = save_widget;
130 IPython.save_widget = save_widget;
133 IPython.config = user_config;
131 IPython.config = user_config;
134 IPython.tooltip = notebook.tooltip;
132 IPython.tooltip = notebook.tooltip;
133
134 events.trigger('app_initialized.NotebookApp');
135 notebook.load_notebook(common_options.notebook_name, common_options.notebook_path);
136
135 });
137 });
@@ -1,118 +1,121 b''
1 // Copyright (c) IPython Development Team.
1 // Copyright (c) IPython Development Team.
2 // Distributed under the terms of the Modified BSD License.
2 // Distributed under the terms of the Modified BSD License.
3
3
4 require([
4 require([
5 'base/js/namespace',
5 'base/js/namespace',
6 'jquery',
6 'jquery',
7 'base/js/events',
7 'base/js/events',
8 'base/js/page',
8 'base/js/page',
9 'base/js/utils',
9 'base/js/utils',
10 'tree/js/notebooklist',
10 'tree/js/notebooklist',
11 'tree/js/clusterlist',
11 'tree/js/clusterlist',
12 'tree/js/sessionlist',
12 'tree/js/sessionlist',
13 'tree/js/kernellist',
13 'tree/js/kernellist',
14 'auth/js/loginwidget',
14 'auth/js/loginwidget',
15 'jqueryui',
15 'jqueryui',
16 'bootstrap',
16 'bootstrap',
17 'custom/custom',
17 ], function(
18 ], function(
18 IPython,
19 IPython,
19 $,
20 $,
20 events,
21 events,
21 page,
22 page,
22 utils,
23 utils,
23 notebooklist,
24 notebooklist,
24 clusterlist,
25 clusterlist,
25 sesssionlist,
26 sesssionlist,
26 kernellist,
27 kernellist,
27 loginwidget){
28 loginwidget){
28
29
29 page = new page.Page();
30 page = new page.Page();
30
31
31 var common_options = {
32 var common_options = {
32 base_url: utils.get_body_data("baseUrl"),
33 base_url: utils.get_body_data("baseUrl"),
33 notebook_path: utils.get_body_data("notebookPath"),
34 notebook_path: utils.get_body_data("notebookPath"),
34 };
35 };
35 session_list = new sesssionlist.SesssionList($.extend({
36 session_list = new sesssionlist.SesssionList($.extend({
36 events: events},
37 events: events},
37 common_options));
38 common_options));
38 notebook_list = new notebooklist.NotebookList('#notebook_list', $.extend({
39 notebook_list = new notebooklist.NotebookList('#notebook_list', $.extend({
39 session_list: session_list},
40 session_list: session_list},
40 common_options));
41 common_options));
41 cluster_list = new clusterlist.ClusterList('#cluster_list', common_options);
42 cluster_list = new clusterlist.ClusterList('#cluster_list', common_options);
42 kernel_list = new kernellist.KernelList('#running_list', $.extend({
43 kernel_list = new kernellist.KernelList('#running_list', $.extend({
43 session_list: session_list},
44 session_list: session_list},
44 common_options));
45 common_options));
45 login_widget = new loginwidget.LoginWidget('#login_widget', common_options);
46 login_widget = new loginwidget.LoginWidget('#login_widget', common_options);
46
47
47 $('#new_notebook').button().click(function (e) {
48 $('#new_notebook').button().click(function (e) {
48 notebook_list.new_notebook();
49 notebook_list.new_notebook();
49 });
50 });
50
51
51 var interval_id=0;
52 var interval_id=0;
52 // auto refresh every xx secondes, no need to be fast,
53 // auto refresh every xx secondes, no need to be fast,
53 // update is done at least when page get focus
54 // update is done at least when page get focus
54 var time_refresh = 60; // in sec
55 var time_refresh = 60; // in sec
55
56
56 var enable_autorefresh = function(){
57 var enable_autorefresh = function(){
57 //refresh immediately , then start interval
58 //refresh immediately , then start interval
58 if($('.upload_button').length === 0)
59 if($('.upload_button').length === 0)
59 {
60 {
60 session_list.load_sessions();
61 session_list.load_sessions();
61 cluster_list.load_list();
62 cluster_list.load_list();
62 }
63 }
63 if (!interval_id){
64 if (!interval_id){
64 interval_id = setInterval(function(){
65 interval_id = setInterval(function(){
65 if($('.upload_button').length === 0)
66 if($('.upload_button').length === 0)
66 {
67 {
67 session_list.load_sessions();
68 session_list.load_sessions();
68 cluster_list.load_list();
69 cluster_list.load_list();
69 }
70 }
70 }, time_refresh*1000);
71 }, time_refresh*1000);
71 }
72 }
72 };
73 };
73
74
74 var disable_autorefresh = function(){
75 var disable_autorefresh = function(){
75 clearInterval(interval_id);
76 clearInterval(interval_id);
76 interval_id = 0;
77 interval_id = 0;
77 };
78 };
78
79
79 // stop autorefresh when page lose focus
80 // stop autorefresh when page lose focus
80 $(window).blur(function() {
81 $(window).blur(function() {
81 disable_autorefresh();
82 disable_autorefresh();
82 });
83 });
83
84
84 //re-enable when page get focus back
85 //re-enable when page get focus back
85 $(window).focus(function() {
86 $(window).focus(function() {
86 enable_autorefresh();
87 enable_autorefresh();
87 });
88 });
88
89
89 // finally start it, it will refresh immediately
90 // finally start it, it will refresh immediately
90 enable_autorefresh();
91 enable_autorefresh();
91
92
92 page.show();
93 page.show();
94
95 // For backwards compatability.
96 IPython.page = page;
97 IPython.notebook_list = notebook_list;
98 IPython.cluster_list = cluster_list;
99 IPython.session_list = session_list;
100 IPython.kernel_list = kernel_list;
101 IPython.login_widget = login_widget;
102 IPython.events = events;
103
93 events.trigger('app_initialized.DashboardApp');
104 events.trigger('app_initialized.DashboardApp');
94
105
95 // bound the upload method to the on change of the file select list
106 // bound the upload method to the on change of the file select list
96 $("#alternate_upload").change(function (event){
107 $("#alternate_upload").change(function (event){
97 notebook_list.handleFilesUpload(event,'form');
108 notebook_list.handleFilesUpload(event,'form');
98 });
109 });
99
110
100 // set hash on tab click
111 // set hash on tab click
101 $("#tabs").find("a").click(function() {
112 $("#tabs").find("a").click(function() {
102 window.location.hash = $(this).attr("href");
113 window.location.hash = $(this).attr("href");
103 });
114 });
104
115
105 // load tab if url hash
116 // load tab if url hash
106 if (window.location.hash) {
117 if (window.location.hash) {
107 $("#tabs").find("a[href=" + window.location.hash + "]").click();
118 $("#tabs").find("a[href=" + window.location.hash + "]").click();
108 }
119 }
109
120
110 // For backwards compatability.
111 IPython.page = page;
112 IPython.notebook_list = notebook_list;
113 IPython.cluster_list = cluster_list;
114 IPython.session_list = session_list;
115 IPython.kernel_list = kernel_list;
116 IPython.login_widget = login_widget;
117 IPython.events = events;
118 });
121 });
General Comments 0
You need to be logged in to leave comments. Login now