114 lines
3.1 KiB
JavaScript
114 lines
3.1 KiB
JavaScript
|
// Copyright (c) Jupyter Development Team.
|
||
|
// Distributed under the terms of the Modified BSD License.
|
||
|
|
||
|
requirejs([
|
||
|
'jquery',
|
||
|
'contents',
|
||
|
'base/js/namespace',
|
||
|
'base/js/utils',
|
||
|
'base/js/page',
|
||
|
'base/js/events',
|
||
|
'services/config',
|
||
|
'edit/js/editor',
|
||
|
'edit/js/menubar',
|
||
|
'edit/js/savewidget',
|
||
|
'edit/js/notificationarea',
|
||
|
'bidi/bidi',
|
||
|
'auth/js/loginwidget',
|
||
|
], function(
|
||
|
$,
|
||
|
contents_service,
|
||
|
IPython,
|
||
|
utils,
|
||
|
page,
|
||
|
events,
|
||
|
configmod,
|
||
|
editmod,
|
||
|
menubar,
|
||
|
savewidget,
|
||
|
notificationarea,
|
||
|
bidi,
|
||
|
loginwidget,
|
||
|
){
|
||
|
"use strict";
|
||
|
|
||
|
try {
|
||
|
requirejs(['custom/custom'], function() {});
|
||
|
bidi.loadLocale();
|
||
|
} catch(err) {
|
||
|
console.log("Error loading custom.js from edition service. Continuing and logging");
|
||
|
console.warn(err);
|
||
|
}
|
||
|
|
||
|
page = new page.Page('div#header', 'div#site');
|
||
|
|
||
|
var base_url = utils.get_body_data('baseUrl');
|
||
|
var file_path = utils.get_body_data('filePath');
|
||
|
// This enables logout
|
||
|
var login_widget = new loginwidget.LoginWidget('#login_widget', {
|
||
|
base_url: base_url
|
||
|
});
|
||
|
var config = new configmod.ConfigSection('edit', {base_url: base_url});
|
||
|
config.load();
|
||
|
var common_config = new configmod.ConfigSection('common', {base_url: base_url});
|
||
|
common_config.load();
|
||
|
var contents = new contents_service.Contents({
|
||
|
base_url: base_url,
|
||
|
common_config: common_config
|
||
|
});
|
||
|
|
||
|
var editor = new editmod.Editor('#texteditor-container', {
|
||
|
base_url: base_url,
|
||
|
events: events,
|
||
|
contents: contents,
|
||
|
file_path: file_path,
|
||
|
config: config,
|
||
|
});
|
||
|
|
||
|
// Make it available for debugging
|
||
|
IPython.editor = editor;
|
||
|
|
||
|
var save_widget = new savewidget.SaveWidget('span#save_widget', {
|
||
|
editor: editor,
|
||
|
events: events,
|
||
|
});
|
||
|
|
||
|
var menus = new menubar.MenuBar('#menubar', {
|
||
|
base_url: base_url,
|
||
|
editor: editor,
|
||
|
events: events,
|
||
|
save_widget: save_widget,
|
||
|
});
|
||
|
|
||
|
var notification_area = new notificationarea.EditorNotificationArea(
|
||
|
'#notification_area', {
|
||
|
events: events,
|
||
|
});
|
||
|
editor.notification_area = notification_area;
|
||
|
notification_area.init_notification_widgets();
|
||
|
|
||
|
utils.load_extensions_from_config(config);
|
||
|
utils.load_extensions_from_config(common_config);
|
||
|
editor.load();
|
||
|
page.show();
|
||
|
|
||
|
window.onbeforeunload = function () {
|
||
|
if (editor.save_enabled && !editor.codemirror.isClean(editor.generation)) {
|
||
|
return "Unsaved changes will be lost. Close anyway?";
|
||
|
}
|
||
|
};
|
||
|
|
||
|
// Make sure the codemirror editor is sized appropriately.
|
||
|
var _handle_resize = function() {
|
||
|
var backdrop = $("#texteditor-backdrop");
|
||
|
|
||
|
// account for padding on the backdrop wrapper
|
||
|
var padding = backdrop.outerHeight(true) - backdrop.height();
|
||
|
$('div.CodeMirror').height($("#site").height() - padding);
|
||
|
};
|
||
|
$(window).resize(_handle_resize);
|
||
|
|
||
|
// On document ready, resize codemirror.
|
||
|
$(document).ready(_handle_resize);
|
||
|
});
|