diff --git a/kfet/static/kfet/js/kfet.api.js b/kfet/static/kfet/js/kfet.api.js
index cc499c57..6b1f8fe3 100644
--- a/kfet/static/kfet/js/kfet.api.js
+++ b/kfet/static/kfet/js/kfet.api.js
@@ -4,65 +4,6 @@
* @license MIT
*/
-/**
- * Get and store K-Psul config from API.
- *
- *
- * Config should be accessed statically only.
- */
-class Config {
-
- /**
- * Get or create config object.
- * @private
- * @return {object} object - config keys/values
- */
- static _get_or_create_config() {
- if (window.config === undefined)
- window.config = {};
- return window.config;
- }
-
- /**
- * Get config from API.
- * @param {jQueryAjaxComplete} [callback] - A function to be called when
- * the request finishes.
- */
- static reset(callback) {
- $.getJSON(Urls['kfet.kpsul.get_settings']())
- .done(function(data) {
- for (var key in data) {
- Config.set(key, data[key]);
- }
- })
- .always(callback);
- }
-
- /**
- * Get value for key in config.
- * @param {string} key
- */
- static get(key) {
- return this._get_or_create_config()[key];
- }
-
- /**
- * Set value for key in config.
- * @param {string} key
- * @param {*} value
- */
- static set(key, value) {
- // API currently returns string for Decimal type
- if (['addcost_amount', 'subvention_cof'].indexOf(key) > -1)
- value = floatCheck(value);
- this._get_or_create_config()[key] = value;
- }
-
-}
-
-
-/* ---------- ---------- */
-
/**
* Virtual namespace for models.
@@ -137,14 +78,23 @@ class ModelObject {
*/
from(data) {
// TODO: add restrict
- $.extend(this, this.constructor.default_data, data);
+ this.clear();
+ this.update(data);
+ }
+
+ /**
+ * Update properties of this instance from data ones.
+ * @param {Object} data
+ */
+ update(data) {
+ $.extend(this, data);
}
/**
* Clear properties to {@link Models.ModelObject.default_data|default_data}.
*/
clear() {
- this.from({});
+ $.extend(this, this.constructor.default_data);
}
@@ -155,10 +105,12 @@ class ModelObject {
* @param {Formatters.Formatter}
* [formatter={@link Models.ModelObject#formatter|this.formatter()}]
* Formatter class to use.
+ * @return {jQuery} The DOM element $container, allowing methods chaining.
*/
display($container, options, formatter) {
formatter = formatter || this.formatter();
formatter.render(this, $container, options);
+ return $container;
}
}
@@ -232,7 +184,7 @@ class APIModelObject extends ModelObject {
$.getJSON(this.url_object, api_options)
.done(function (json, textStatus, jqXHR) {
- that.from(json)
+ that.from(json);
on_success(json, textStatus, jqXHR);
})
.fail(on_error);
diff --git a/kfet/static/kfet/js/kfet.js b/kfet/static/kfet/js/kfet.js
index 844a5958..c80e760a 100644
--- a/kfet/static/kfet/js/kfet.js
+++ b/kfet/static/kfet/js/kfet.js
@@ -40,6 +40,63 @@ function booleanCheck(v) {
}
+/**
+ * Get and store K-Psul config from API.
+ *
+ *
+ * Config should be accessed statically only.
+ */
+class Config {
+
+ /**
+ * Get or create config object.
+ * @private
+ * @return {object} object - config keys/values
+ */
+ static _get_or_create_config() {
+ if (window.config === undefined)
+ window.config = {};
+ return window.config;
+ }
+
+ /**
+ * Get config from API.
+ * @param {jQueryAjaxComplete} [callback] - A function to be called when
+ * the request finishes.
+ */
+ static reset(callback) {
+ $.getJSON(Urls['kfet.kpsul.get_settings']())
+ .done(function(data) {
+ for (var key in data) {
+ Config.set(key, data[key]);
+ }
+ })
+ .always(callback);
+ }
+
+ /**
+ * Get value for key in config.
+ * @param {string} key
+ */
+ static get(key) {
+ return this._get_or_create_config()[key];
+ }
+
+ /**
+ * Set value for key in config.
+ * @param {string} key
+ * @param {*} value
+ */
+ static set(key, value) {
+ // API currently returns string for Decimal type
+ if (['addcost_amount', 'subvention_cof'].indexOf(key) > -1)
+ value = floatCheck(value);
+ this._get_or_create_config()[key] = value;
+ }
+
+}
+
+
$(document).ready(function() {
$(window).scroll(function() {
if ($(window).width() >= 768 && $(this).scrollTop() > 72.6) {