##// END OF EJS Templates
Smooth notebook scrolling on pager closing....
Smooth notebook scrolling on pager closing. avoid brutal jump of notebook on closing pager, when notebook is scroll to max

File last commit:

r19545:3a7bc354
r19944:6a3f889e
Show More
config.js
129 lines | 3.8 KiB | application/javascript | JavascriptLexer
Thomas Kluyver
Add JS config API
r18866 // Copyright (c) IPython Development Team.
// Distributed under the terms of the Modified BSD License.
define([
'jquery',
'base/js/utils',
],
function($, utils) {
Scott Sanderson
Minor cleanups in the contents API....
r19349 "use strict";
Thomas Kluyver
Add JS config API
r18866 var ConfigSection = function(section_name, options) {
this.section_name = section_name;
this.base_url = options.base_url;
this.data = {};
var that = this;
/* .loaded is a promise, fulfilled the first time the config is loaded
* from the server. Code can do:
* conf.loaded.then(function() { ... using conf.data ... });
*/
this._one_load_finished = false;
this.loaded = new Promise(function(resolve, reject) {
that._finish_firstload = resolve;
});
};
ConfigSection.prototype.api_url = function() {
Thomas Kluyver
Fix some other bugs
r18878 return utils.url_join_encode(this.base_url, 'api/config', this.section_name);
Thomas Kluyver
Add JS config API
r18866 };
ConfigSection.prototype._load_done = function() {
if (!this._one_load_finished) {
this._one_load_finished = true;
this._finish_firstload();
}
};
ConfigSection.prototype.load = function() {
Thomas Kluyver
Fix some other bugs
r18878 var that = this;
Thomas Kluyver
Use promising_ajax in config API
r18868 return utils.promising_ajax(this.api_url(), {
cache: false,
type: "GET",
dataType: "json",
}).then(function(data) {
Thomas Kluyver
Fix some other bugs
r18878 that.data = data;
that._load_done();
Thomas Kluyver
Use promising_ajax in config API
r18868 return data;
Thomas Kluyver
Add JS config API
r18866 });
};
Thomas Kluyver
Update test to modify class config for default_cell_type
r19545 /**
* Modify the config values stored. Update the local data immediately,
* send the change to the server, and use the updated data from the server
* when the reply comes.
*/
Thomas Kluyver
Add JS config API
r18866 ConfigSection.prototype.update = function(newdata) {
Thomas Kluyver
Update test to modify class config for default_cell_type
r19545 $.extend(true, this.data, newdata); // true -> recursive update
Thomas Kluyver
Fix some other bugs
r18878 var that = this;
Thomas Kluyver
Use promising_ajax in config API
r18868 return utils.promising_ajax(this.api_url(), {
processData: false,
type : "PATCH",
data: JSON.stringify(newdata),
dataType : "json",
contentType: 'application/json',
}).then(function(data) {
Thomas Kluyver
Fix some other bugs
r18878 that.data = data;
that._load_done();
Thomas Kluyver
Use promising_ajax in config API
r18868 return data;
Thomas Kluyver
Add JS config API
r18866 });
};
Thomas Kluyver
Actually define the module...
r18876
Thomas Kluyver
Remove user_config js module
r19529
var ConfigWithDefaults = function(section, defaults, classname) {
this.section = section;
this.defaults = defaults;
this.classname = classname;
};
ConfigWithDefaults.prototype._class_data = function() {
if (this.classname) {
return this.section.data[this.classname] || {};
} else {
return this.section.data
}
};
/**
* Wait for config to have loaded, then get a value or the default.
* Returns a promise.
*/
ConfigWithDefaults.prototype.get = function(key) {
var that = this;
return this.section.loaded.then(function() {
return this._class_data()[key] || this.defaults[key]
});
};
/**
* Return a config value. If config is not yet loaded, return the default
* instead of waiting for it to load.
*/
ConfigWithDefaults.prototype.get_sync = function(key) {
return this._class_data()[key] || this.defaults[key];
};
Thomas Kluyver
Update test to modify class config for default_cell_type
r19545 /**
* Set a config value. Send the update to the server, and change our
* local copy of the data immediately.
* Returns a promise which is fulfilled when the server replies to the
* change.
*/
ConfigWithDefaults.prototype.set = function(key, value) {
var d = {};
d[key] = value;
if (this.classname) {
var d2 = {};
d2[this.classname] = d;
return this.section.update(d2);
} else {
return this.section.update(d);
}
};
Thomas Kluyver
Remove user_config js module
r19529 return {ConfigSection: ConfigSection,
ConfigWithDefaults: ConfigWithDefaults,
};
Thomas Kluyver
Add JS config API
r18866
});