#wip(ecma): Base parcial done.
This commit is contained in:
parent
223c355603
commit
f09499b641
@ -1,11 +1,39 @@
|
|||||||
Sizerboard = function(inputs){
|
Sizerboard = function(inputs){
|
||||||
|
|
||||||
const self = this,
|
const self = this,
|
||||||
default_settings = {},
|
default_settings = {
|
||||||
settings = {};
|
nulls : false,
|
||||||
let started = false;
|
default_value : null,
|
||||||
|
default_text : "",
|
||||||
|
autostart : true,
|
||||||
|
default_language : "english",
|
||||||
|
timeout : 2000
|
||||||
|
},
|
||||||
|
settings = {},
|
||||||
|
sentences = {};
|
||||||
|
let started = false,
|
||||||
|
language, default_language,
|
||||||
|
allow_settings_nulls, default_text, default_value,
|
||||||
|
ajax_timeout;
|
||||||
|
|
||||||
const construct = () => {};
|
const construct = () => {
|
||||||
|
|
||||||
|
basic_values();
|
||||||
|
|
||||||
|
self.settings("autostart") && self.start();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
const basic_values = () => {
|
||||||
|
|
||||||
|
default_value = self.settings("default_value", null, null, true);
|
||||||
|
default_text = self.settings("default_text");
|
||||||
|
allow_settings_nulls = self.settings("nulls", null, false, false);
|
||||||
|
language = self.settings(["language", "default_language"]);
|
||||||
|
default_language = self.settings(["default_language", "language"]);
|
||||||
|
ajax_timeout = self.settings(["ajax_timeout", "timeout"]);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
this.start = callback => {
|
this.start = callback => {
|
||||||
|
|
||||||
@ -17,14 +45,22 @@ Sizerboard = function(inputs){
|
|||||||
};
|
};
|
||||||
started = true;
|
started = true;
|
||||||
|
|
||||||
end(true);
|
self.execute_array_items(["default_settings_files", "settings_files"], (key, callback) => {
|
||||||
|
self.settings_add(self.settings(key), true, callback);
|
||||||
|
}, () => {
|
||||||
|
self.execute_array_items(["default_i18n_files", "i18n_files"], (key, callback) => {
|
||||||
|
self.i18n_add(self.settings(key), true, callback);
|
||||||
|
}, () => {
|
||||||
|
end(true);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.nulls = nulls => typeof nulls == "boolean" ? nulls : self.settings("nulls", null, false, false);
|
this.nulls = nulls => typeof nulls == "boolean" ? nulls : allow_settings_nulls;
|
||||||
|
|
||||||
this.default_value = (_default, nulls) => _default !== undefined && (_default !== null || self.nulls(nulls)) ? _default : self.settings("default_value", null, null, true);
|
this.default_value = (_default, nulls) => _default !== undefined && (_default !== null || self.nulls(nulls)) ? _default : default_value;
|
||||||
|
|
||||||
this.settings = (keys, inputs, _default, nulls) => {
|
this.settings = (keys, inputs, _default, nulls) => {
|
||||||
|
|
||||||
@ -54,7 +90,7 @@ Sizerboard = function(inputs){
|
|||||||
let ended = false;
|
let ended = false;
|
||||||
const ajax = new XMLHttpRequest(),
|
const ajax = new XMLHttpRequest(),
|
||||||
end = message => !ended && (ended = true) && typeof callback == "function" && callback(ajax.responseText, ajax.status, ajax.readyState, message, message == "OK");
|
end = message => !ended && (ended = true) && typeof callback == "function" && callback(ajax.responseText, ajax.status, ajax.readyState, message, message == "OK");
|
||||||
timeout = self.settings(["ajax_timeout", "timeout"]),
|
timeout = ajax_timeout,
|
||||||
date = Date.now();
|
date = Date.now();
|
||||||
|
|
||||||
ajax.send("get", url, true);
|
ajax.send("get", url, true);
|
||||||
@ -102,7 +138,7 @@ Sizerboard = function(inputs){
|
|||||||
|
|
||||||
let json;
|
let json;
|
||||||
|
|
||||||
if(/^(\{(.|[\r\n])*\}|\[(.|[\r\n])*)\])$/.test(inputs[i].trim()){
|
if(/^(\{(.|[\r\n])*\}|\[(.|[\r\n])*)\])$/.test(inputs[i].trim())){
|
||||||
try{
|
try{
|
||||||
json = JSON.parse(inputs[i]);
|
json = JSON.parse(inputs[i]);
|
||||||
}catch(exception){};
|
}catch(exception){};
|
||||||
@ -119,6 +155,23 @@ Sizerboard = function(inputs){
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.execute_array_items = (items, action, callback, i) => {
|
||||||
|
(typeof items != "object" || !(items instanceof Array)) && (items = [items]);
|
||||||
|
|
||||||
|
if(!items || i >= items.length){
|
||||||
|
typeof callback == "function" && callback();
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
const end = () => execute_array_items(items, action, callback, i + 1);
|
||||||
|
|
||||||
|
if(typeof action == "function")
|
||||||
|
action(items[i], end);
|
||||||
|
else
|
||||||
|
end();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
this.settings_add = (inputs, overwrite, callback) => {
|
this.settings_add = (inputs, overwrite, callback) => {
|
||||||
typeof overwrite != "boolean" && (overwrite = settings_overwrite);
|
typeof overwrite != "boolean" && (overwrite = settings_overwrite);
|
||||||
self.execute_array_dictionaries(inputs, data => {
|
self.execute_array_dictionaries(inputs, data => {
|
||||||
@ -128,6 +181,56 @@ Sizerboard = function(inputs){
|
|||||||
}, callback);
|
}, callback);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
this.i18n_add = (inputs, overwrite, callback) => {
|
||||||
|
typeof overwrite != "boolean" && (overwrite = i18n_overwrite);
|
||||||
|
self.execute_array_dictionaries(inputs, data => {
|
||||||
|
for(const language in data){
|
||||||
|
!sentences[language] && (sentences[language] = {});
|
||||||
|
if(typeof data[language] == "object")
|
||||||
|
for(const key in data[language])
|
||||||
|
(overwrite || sentences[language][key] === undefined) &&
|
||||||
|
(sentences[language][key] = data[language][key]);
|
||||||
|
};
|
||||||
|
}, callback);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.string_variables = (string, variables, _default) => {
|
||||||
|
|
||||||
|
const l = (variables = (
|
||||||
|
typeof variables == "object" && variables instanceof Array ? variables : [variables]
|
||||||
|
).filter(variables => typeof variables == "object")).length;
|
||||||
|
|
||||||
|
return string.replace(/\{([^\{\}]+)\}/g, (all, key) => {
|
||||||
|
for(let i = 0; i < l; i ++)
|
||||||
|
if(variables[i][key] !== undefined)
|
||||||
|
return variables[i][key];
|
||||||
|
return _default !== undefined ? _default : all;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
this.default_text = _default => _default !== undefined ? _default : default_text;
|
||||||
|
|
||||||
|
const i18n = (keys, _default) => {
|
||||||
|
|
||||||
|
const j = (keys = (typeof keys == "object" && keys instanceof Array ? keys : [keys]).filter(key => typeof key == "string").map(key => key.trim()).filter(key => key));
|
||||||
|
|
||||||
|
if(j){
|
||||||
|
|
||||||
|
const languages = [language, default_language].concat(Object.keys(sentences)),
|
||||||
|
l = languages.length;
|
||||||
|
|
||||||
|
for(let i = 0; i < l; i ++)
|
||||||
|
if(languages[i] && typeof languages[i] == "object")
|
||||||
|
for(let j = 0; j < l; j ++)
|
||||||
|
if(languages[i][keys[j]] !== undefined)
|
||||||
|
return languages[i][keys[j]];
|
||||||
|
return keys[0];
|
||||||
|
};
|
||||||
|
return self.default_text(_default);
|
||||||
|
};
|
||||||
|
|
||||||
|
this.i18n = (keys, variables, _default) => self.string_variables(i18n(keys, _default), variables, _default);
|
||||||
|
|
||||||
construct();
|
construct();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user