This commit is contained in:
yumoqing 2025-12-28 13:35:58 +08:00
parent 08a8e143dc
commit c67593298f
4 changed files with 72 additions and 24 deletions

View File

@ -40,7 +40,7 @@ bricks.ChartBar = class extends bricks.EchartsExt {
trigger:'axis' trigger:'axis'
}, },
legend:{ legend:{
data:n_data data:this.valueFields
}, },
xAxis:{ xAxis:{
type:'category', type:'category',

View File

@ -701,7 +701,10 @@ bricks.App = class extends bricks.Layout {
let params = {'lang':this.lang}; let params = {'lang':this.lang};
var jc = new bricks.HttpJson(); var jc = new bricks.HttpJson();
d = await jc.httpcall(desc.url, { d = await jc.httpcall(desc.url, {
"method":desc.method||'GET', params:params}); "method":desc.method||'GET',
params:params
}
);
this.i18n.setup_dict(d); this.i18n.setup_dict(d);
} }
async build(){ async build(){

View File

@ -1,53 +1,81 @@
var bricks = window.bricks || {}; var bricks = window.bricks || {};
bricks.I18n = class { bricks.I18n = class {
constructor(url, default_lang){ /*
opts={
i18n
lang
}
*/
constructor(opts){
/* /*
{ {
url: url:
method: method:
default_lang lang:
i18n_path:
} }
*/ */
this.url = opts.url; this.url = opts.url || '/i18n'
this.default_lang = opts.default_lang||'en'; htis.i18n_path = opts.i18n_path;
this.lang = opts.lang;
this.method = opts.method || 'GET'; this.method = opts.method || 'GET';
this.lang_msgs = {}; this.lang_msgs = {};
this.msgs = {}; this.msgs = {};
this.uni18n = {};
} }
_(txt, obj){ _(txt, obj){
if (this.msgs.hasOwnProperty(txt)){ var outt, mt;
itxt = this.msgs[txt]; var msgs = this.lang_msgs[this.lang].msgs;
if (msgs.hasOwnProperty(txt)){
mt = msgs[txt] || txt;
} }
if (obj instanceof Object){ if (obj instanceof Object){
return obj_fmtstr(obj, itxt); outt = obj_fmtstr(obj, mt);
} else {
outt = mt;
}
if (mt == txt) {
this.uni18n(txt);
} }
return txt; return txt;
} }
uni18n(txt){
var d = this.lang_msgs[this.lang].unmsgs;
if (! d[txt]){
d[txt] = 1;
}
}
is_loaded(lang){ is_loaded(lang){
if (objget(this.lang_msgs, lang)) return true; if (objget(this.lang_msgs, lang)) return true;
return false; return false;
} }
setup_dict(dic, lang){ setup_dict(dic, lang){
this.cur_lang = lang; this.lang = lang;
bricks.extend(this.lang_msgs, {lang:dic}); this.lang_msgs[lang] = {
this.msgs = dic; msgs:dic,
unmsgs:{}
} }
async change_lang(lang){
if (objget(this.lang_msgs, lang)){
this.msgs = objget(this.lang_msgs, lang);
return;
} }
async get_lang_dic(lang){
if (! this.url) return; let params = {
lang:lang,
let params = {'lang':lang}; i18n: this.i18n_path
};
var jc = new bricks.HttpJson(); var jc = new bricks.HttpJson();
d = await jc.httpcall(desc.url, { d = await jc.httpcall(this.url, {
"method":this.method || 'GET', "method":this.method || 'GET',
params:params params:params
}); });
this.setup_dict(d, lang); this.setup_dict(d, lang);
}
async change_lang(lang){
if (this.lang_msgs[lang]){
return;
}
await this.get_lang_dic(lang);
} }
} }

View File

@ -101,3 +101,20 @@ binds数组定义用户交互行为每个绑定bind描述符包含以下结
| `params` | Object | 携带的数据 | | `params` | Object | 携带的数据 |
--- ---
### bricks 控件注册机制
bricks使用控件注册机制来实现识别源码中widgettype的值对应bricks的哪个控件。
注册实现
bricks.Factory.register(控件名, bricks实现的控件对象)完成注册
### bricks的已实现控件清单
已实现的[控件清单](widgets.md)
### 控件扩展要求
* javascript class类
* 继承自JsWidget或其子类
* 为控件命名,并注册此控件