|
define([ |
|
'jquery', |
|
'base/js/namespace', |
|
'base/js/events' |
|
], function( |
|
$, |
|
IPython, |
|
events |
|
) { |
|
"use strict"; |
|
|
|
|
|
var params = { |
|
autosavetime_set_starting_interval : false, |
|
autosavetime_starting_interval : 2, |
|
autosavetime_show_selector : true |
|
}; |
|
|
|
|
|
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 |
|
}; |
|
}); |
|
|