config.js
68 lines
| 1.9 KiB
| application/javascript
|
JavascriptLexer
Thomas Kluyver
|
r18866 | // Copyright (c) IPython Development Team. | ||
// Distributed under the terms of the Modified BSD License. | ||||
define([ | ||||
'jquery', | ||||
'base/js/utils', | ||||
], | ||||
function($, utils) { | ||||
Scott Sanderson
|
r19349 | "use strict"; | ||
Thomas Kluyver
|
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
|
r18878 | return utils.url_join_encode(this.base_url, 'api/config', this.section_name); | ||
Thomas Kluyver
|
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
|
r18878 | var that = this; | ||
Thomas Kluyver
|
r18868 | return utils.promising_ajax(this.api_url(), { | ||
cache: false, | ||||
type: "GET", | ||||
dataType: "json", | ||||
}).then(function(data) { | ||||
Thomas Kluyver
|
r18878 | that.data = data; | ||
that._load_done(); | ||||
Thomas Kluyver
|
r18868 | return data; | ||
Thomas Kluyver
|
r18866 | }); | ||
}; | ||||
ConfigSection.prototype.update = function(newdata) { | ||||
Thomas Kluyver
|
r18878 | var that = this; | ||
Thomas Kluyver
|
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
|
r18878 | that.data = data; | ||
that._load_done(); | ||||
Thomas Kluyver
|
r18868 | return data; | ||
Thomas Kluyver
|
r18866 | }); | ||
}; | ||||
Thomas Kluyver
|
r18876 | |||
return {ConfigSection: ConfigSection}; | ||||
Thomas Kluyver
|
r18866 | |||
}); | ||||