##// END OF EJS Templates
Post in person review...
Post in person review Removed logic for reverse ordered events Removed almost all of the log statements Removed list for should unfocus callbacks Removed all the logic in focus_editor Only call focus_editor if the keyboard was used to enter edit mode

File last commit:

r15483:6d01fb45
r15497:63e30968
Show More
savewidget.js
175 lines | 5.8 KiB | application/javascript | JavascriptLexer
Brian E. Granger
More review changes....
r4609 //----------------------------------------------------------------------------
// Copyright (C) 2008-2011 The IPython Development Team
//
// Distributed under the terms of the BSD License. The full license is in
// the file COPYING, distributed as part of this software.
//----------------------------------------------------------------------------
Brian E. Granger
Minors fixes and initial work on save widget....
r4369
//============================================================================
Brian E. Granger
More review changes....
r4609 // SaveWidget
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 //============================================================================
var IPython = (function (IPython) {
Matthias BUSSONNIER
"use strict" in most (if not all) our javascript...
r12103 "use strict";
Brian E. Granger
Minors fixes and initial work on save widget....
r4369
var utils = IPython.utils;
var SaveWidget = function (selector) {
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 this.selector = selector;
if (this.selector !== undefined) {
this.element = $(selector);
this.style();
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 this.bind_events();
}
};
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 SaveWidget.prototype.style = function () {
};
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 SaveWidget.prototype.bind_events = function () {
var that = this;
Brian Granger
Improved notebook renaming....
r5859 this.element.find('span#notebook_name').click(function () {
that.rename_notebook();
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372 });
Brian Granger
Improved notebook renaming....
r5859 this.element.find('span#notebook_name').hover(function () {
$(this).addClass("ui-state-hover");
}, function () {
$(this).removeClass("ui-state-hover");
Brian E. Granger
Save button becomes Rename when the notebook name changes.
r4630 });
Brian Granger
Major refactoring of saving, notification....
r6047 $([IPython.events]).on('notebook_loaded.Notebook', function () {
that.update_notebook_name();
that.update_document_title();
});
$([IPython.events]).on('notebook_saved.Notebook', function () {
that.update_notebook_name();
that.update_document_title();
});
Zachary Sailer
Add 'patch' to session & notebook, rename working
r12997 $([IPython.events]).on('notebook_renamed.Notebook', function () {
Zachary Sailer
allow spaces in notebook path
r13012 that.update_notebook_name();
that.update_document_title();
Zachary Sailer
redirect url after notebook rename
r13010 that.update_address_bar();
Zachary Sailer
Add 'patch' to session & notebook, rename working
r12997 });
Brian Granger
Major refactoring of saving, notification....
r6047 $([IPython.events]).on('notebook_save_failed.Notebook', function () {
MinRK
use dirty event to set autosaved/unsaved changes...
r10829 that.set_save_status('Autosave Failed!');
Brian Granger
Major refactoring of saving, notification....
r6047 });
MinRK
add checkpoint status to notebook header...
r10516 $([IPython.events]).on('checkpoints_listed.Notebook', function (event, data) {
MinRK
restore checkpoints in a sub-list...
r10520 that.set_last_checkpoint(data[0]);
MinRK
add checkpoint status to notebook header...
r10516 });
Kevin Burke
Select default title when renaming a notebook...
r12368
MinRK
add checkpoint status to notebook header...
r10516 $([IPython.events]).on('checkpoint_created.Notebook', function (event, data) {
that.set_last_checkpoint(data);
});
MinRK
use dirty event to set autosaved/unsaved changes...
r10829 $([IPython.events]).on('set_dirty.Notebook', function (event, data) {
that.set_autosaved(data.value);
});
Felix Werner
Update document title and last_saved_name only after a successful save.
r5006 };
Brian Granger
Improved notebook renaming....
r5859 SaveWidget.prototype.rename_notebook = function () {
var that = this;
MinRK
add break between prompt and input in Rename dialog
r10956 var dialog = $('<div/>').append(
$("<p/>").addClass("rename-message")
Matthias BUSSONNIER
some $.html( -> $.text(...
r14634 .text('Enter a new notebook name:')
MinRK
add break between prompt and input in Rename dialog
r10956 ).append(
$("<br/>")
).append(
Brian Granger
More minor theme/styling changes.
r5871 $('<input/>').attr('type','text').attr('size','25')
MinRK
bootstrap dialogs
r10895 .val(IPython.notebook.get_notebook_name())
Brian Granger
Improved notebook renaming....
r5859 );
MinRK
bootstrap dialogs
r10895 IPython.dialog.modal({
Brian Granger
Improved notebook renaming....
r5859 title: "Rename Notebook",
MinRK
bootstrap dialogs
r10895 body: dialog,
Brian Granger
Improved notebook renaming....
r5859 buttons : {
MinRK
bootstrap dialogs
r10895 "Cancel": {},
"OK": {
class: "btn-primary",
click: function () {
var new_name = $(this).find('input').val();
Brian Granger
Major refactoring of saving, notification....
r6047 if (!IPython.notebook.test_notebook_name(new_name)) {
Matthias BUSSONNIER
some $.html( -> $.text(...
r14634 $(this).find('.rename-message').text(
Brian Granger
Disallow empty notebook names.
r5955 "Invalid notebook name. Notebook names must "+
"have 1 or more characters and can contain any characters " +
Brian Granger
Make : invalid in filenames in the Notebook JS code.
r7229 "except :/\\. Please enter a new notebook name:"
Brian Granger
Improved notebook renaming....
r5859 );
Rick Lupton
Fix rename notebook - show error with invalid name...
r11551 return false;
Brian Granger
Improved notebook renaming....
r5859 } else {
MinRK
Cells shouldn't know about Sessions
r13133 IPython.notebook.rename(new_name);
Brian Granger
Improved notebook renaming....
r5859 }
MinRK
bootstrap dialogs
r10895 }}
Brian Granger
Improved notebook renaming....
r5859 },
Brian Granger
ENTER submits the rename notebook dialog.
r7246 open : function (event, ui) {
var that = $(this);
// Upon ENTER, click the OK button.
Brian Granger
Making the input text area watch for `ENTER` in nb renames.
r7247 that.find('input[type="text"]').keydown(function (event, ui) {
Brian Granger
Using IPython.utils.keycodes in the nb rename dialog.
r7248 if (event.which === utils.keycodes.ENTER) {
MinRK
bootstrap dialogs
r10895 that.find('.btn-primary').first().click();
MinRK
swallow enter event in rename dialog...
r12019 return false;
Brian Granger
ENTER submits the rename notebook dialog.
r7246 }
});
Kevin Burke
Select default title when renaming a notebook...
r12368 that.find('input[type="text"]').focus().select();
Brian Granger
Improved notebook renaming....
r5859 }
});
}
Brian E. Granger
Adding keyboard shortcuts.
r4645
Brian Granger
Major refactoring of saving, notification....
r6047 SaveWidget.prototype.update_notebook_name = function () {
var nbname = IPython.notebook.get_notebook_name();
Matthias BUSSONNIER
some $.html( -> $.text(...
r14634 this.element.find('span#notebook_name').text(nbname);
Stefan van der Walt
Clean up javascript based on js2-mode feedback.
r5479 };
Brian E. Granger
Work on save widget, kernel status widget and notebook section.
r4372
Brian E. Granger
Minors fixes and initial work on save widget....
r4369
Brian Granger
Major refactoring of saving, notification....
r6047 SaveWidget.prototype.update_document_title = function () {
var nbname = IPython.notebook.get_notebook_name();
Brian E. Granger
Misc changes to the notebook....
r5104 document.title = nbname;
Brian E. Granger
Browser window title follows the name of the notebook.
r4549 };
Zachary Sailer
redirect url after notebook rename
r13010
SaveWidget.prototype.update_address_bar = function(){
MinRK
don't forget base_url when updating address bar in rename
r15483 var base_url = IPython.notebook.base_url;
Zachary Sailer
redirect url after notebook rename
r13010 var nbname = IPython.notebook.notebook_name;
MinRK
various unicode fixes...
r15234 var path = IPython.notebook.notebook_path;
MinRK
don't forget base_url when updating address bar in rename
r15483 var state = {path : path, name: nbname};
MinRK
make sure to encode URL components for API requests...
r13693 window.history.replaceState(state, "", utils.url_join_encode(
MinRK
don't forget base_url when updating address bar in rename
r15483 base_url,
"notebooks",
MinRK
review pass on multidir js
r13103 path,
nbname)
);
MinRK
don't forget base_url when updating address bar in rename
r15483 };
Brian E. Granger
Massive work on the notebook document format....
r4484
Brian Granger
Major refactoring of saving, notification....
r6047 SaveWidget.prototype.set_save_status = function (msg) {
Matthias BUSSONNIER
some $.html( -> $.text(...
r14634 this.element.find('span#autosave_status').text(msg);
MinRK
add checkpoint status to notebook header...
r10516 }
SaveWidget.prototype.set_checkpoint_status = function (msg) {
Matthias BUSSONNIER
some $.html( -> $.text(...
r14634 this.element.find('span#checkpoint_status').text(msg);
Brian Granger
Major refactoring of saving, notification....
r6047 }
Brian E. Granger
Massive work on the notebook document format....
r4484
MinRK
add checkpoint status to notebook header...
r10516 SaveWidget.prototype.set_last_checkpoint = function (checkpoint) {
MinRK
fix set_last_checkpoint when no checkpoint...
r10532 if (!checkpoint) {
this.set_checkpoint_status("");
MinRK
add missing return...
r10547 return;
MinRK
fix set_last_checkpoint when no checkpoint...
r10532 }
MinRK
add checkpoint status to notebook header...
r10516 var d = new Date(checkpoint.last_modified);
this.set_checkpoint_status(
"Last Checkpoint: " + d.format('mmm dd HH:MM')
);
}
Brian E. Granger
Massive work on the notebook document format....
r4484
MinRK
use dirty event to set autosaved/unsaved changes...
r10829 SaveWidget.prototype.set_autosaved = function (dirty) {
if (dirty) {
this.set_save_status("(unsaved changes)");
} else {
this.set_save_status("(autosaved)");
}
Brian E. Granger
Save button becomes Rename when the notebook name changes.
r4630 };
Brian E. Granger
Minors fixes and initial work on save widget....
r4369 IPython.SaveWidget = SaveWidget;
return IPython;
}(IPython));