You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

82 lines
2.4 KiB

define([
'jquery',
'base/js/namespace',
'base/js/events'
], function(
$,
IPython,
events
) {
"use strict";
// define default values for config parameters
var params = {
autosavetime_set_starting_interval : false,
autosavetime_starting_interval : 2,
autosavetime_show_selector : true
};
// update params with any specified in the server's config file
var update_params = function() {
var config = IPython.notebook.config;
for (var key in params) {
if (config.data.hasOwnProperty(key))
params[key] = config.data[key];
}
};
var initialize = function () {
update_params();
var si = params.autosavetime_starting_interval;
var set_si = params.autosavetime_set_starting_interval;
if (params.autosavetime_show_selector) {
var select = $('<select class="ui-widget-content"/>');
select.change(function() {
var interval = parseInt($(this).val(), 10) * 60 * 1000;
IPython.notebook.set_autosave_interval(interval);
});
var thresholds = [0,2,5,10,15,20,30,60];
if (set_si && thresholds.indexOf(si) < 0) thresholds.push(si);
thresholds.sort(function(a, b) { return a-b; });
for (var i in thresholds) {
var thr = thresholds[i];
select.append($('<option/>').attr('value', thr).text(thr));
}
select.find('option[value="2"]').text('2 (default)');
select.find('option[value="0"]').text('off');
if (set_si) select.val(si);
IPython.toolbar.element.append(
$('<label class="navbar-text"/>').text('Autosave interval (min):')
).append(select);
}
events.on("autosave_enabled.Notebook", function(event, value) {
if (set_si) {
IPython.notebook.set_autosave_interval(si * 60 * 1000);
}
else {
if (params.autosavetime_show_selector) {
select.val(parseInt(value, 10) / 60 / 1000);
}
}
});
};
var load_ipython_extension = function() {
return IPython.notebook.config.loaded.then(initialize);
};
return {
load_ipython_extension : load_ipython_extension
};
});