bugfix
This commit is contained in:
parent
688e751091
commit
9bc17fe7ec
@ -218,18 +218,24 @@ bricks.universal_handler = async function(from_widget, widget, desc, event){
|
||||
'desc=', desc,
|
||||
event);
|
||||
}
|
||||
bricks.default_popup = function(opts){
|
||||
var popts = bricks.get_popup_default_options();
|
||||
bricks.extend(popts, opts);
|
||||
return new bricks.Popup(popts);
|
||||
}
|
||||
bricks.default_popupwindow = function(opts){
|
||||
var popts = bricks.get_popupwindow_default_options();
|
||||
bricks.extend(popts, opts);
|
||||
return new bricks.PopupWindow(popts);
|
||||
}
|
||||
bricks.buildEventHandler = async function(w, desc, event){
|
||||
var target;
|
||||
if (desc.target == 'Popup'){
|
||||
var popts = bricks.get_popup_default_options();
|
||||
var opt1 = desc.popup_options || {};
|
||||
bricks.extend(popts, opt1);
|
||||
target = new bricks.Popup(popts);
|
||||
target = bricks.default_popup(desc.popup_options || {});
|
||||
} else if (desc.target == 'PopupWindow') {
|
||||
var popts = bricks.get_popupwindow_default_options();
|
||||
var opt1 = desc.popup_options || {};
|
||||
bricks.extend(popts, opt1);
|
||||
target = new bricks.PopupWindow(popts);
|
||||
target = bricks.default_popupwindow(desc.popup_options || {});
|
||||
} else if ( desc.target instanceof bricks.JsWidget ) {
|
||||
target = desc.target;
|
||||
} else {
|
||||
target = bricks.getWidgetById(desc.target, w);
|
||||
}
|
||||
@ -349,6 +355,9 @@ bricks.buildUrlwidgetHandler = function(w, target, rtdata, desc){
|
||||
} else {
|
||||
rtdata = bricks.extend(rtdata, desc.event_params);
|
||||
options = bricks.apply_data(options, rtdata);
|
||||
if (desc.params_mapping){
|
||||
rtdata = bricks.map(rtdata, desc.params_mapping.mapping, desc.params_mapping.need_others);
|
||||
}
|
||||
options.params = bricks.extend(params, rtdata);
|
||||
}
|
||||
|
||||
@ -361,6 +370,9 @@ bricks.buildUrlwidgetHandler = function(w, target, rtdata, desc){
|
||||
bricks.buildBricksHandler = function(w, target, rtdata, desc){
|
||||
var options = objcopy(desc.options||{});
|
||||
rtdata = bricks.extend(rtdata, inputdata2dic(desc.event_params));
|
||||
if (desc.params_mapping){
|
||||
rtdata = bricks.map(rtdata, desc.params_mapping.mapping, desc.params_mapping.need_others);
|
||||
}
|
||||
options = bricks.apply_data(options, rtdata);
|
||||
return _buildWidget.bind(w, target, target, desc.mode || 'replace', options, desc);
|
||||
}
|
||||
@ -370,6 +382,9 @@ bricks.buildRegisterFunctionHandler = function(w, target, rtdata, desc){
|
||||
bricks.debug('rfname:', desc.rfname, 'not registed', desc);
|
||||
return null;
|
||||
}
|
||||
if (desc.params_mapping){
|
||||
rtdata = bricks.map(rtdata, desc.params_mapping.mapping, desc.params_mapping.need_others);
|
||||
}
|
||||
var params = {};
|
||||
if (desc.params){
|
||||
bricks.extend(params, desc.params);
|
||||
@ -391,6 +406,9 @@ bricks.buildMethodHandler = function(w, target, rtdata, desc){
|
||||
bricks.extend(params, desc.params)
|
||||
bricks.extend(params, rtdata);
|
||||
bricks.extend(params, inputdata2dic(desc.event_params));
|
||||
if (desc.params_mapping){
|
||||
rtdata = bricks.map(rtdata, desc.params_mapping.mapping, desc.params_mapping.need_others);
|
||||
}
|
||||
params = bricks.apply_data(params, rtdata);
|
||||
return f.bind(target, params);
|
||||
}
|
||||
@ -399,6 +417,9 @@ bricks.buildScriptHandler = function(w, target, rtdata, desc){
|
||||
bricks.extend(params, desc.params)
|
||||
bricks.extend(params, rtdata);
|
||||
bricks.extend(params, inputdata2dic(desc.event_params));
|
||||
if (desc.params_mapping){
|
||||
rtdata = bricks.map(rtdata, desc.params_mapping.mapping, desc.params_mapping.need_others);
|
||||
}
|
||||
params = bricks.apply_data(params, rtdata);
|
||||
var AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;
|
||||
var f = new AsyncFunction('params', 'event', desc.script);
|
||||
|
102
bricks/input.js
102
bricks/input.js
@ -249,6 +249,105 @@ bricks.UiStr =class extends bricks.UiType {
|
||||
}
|
||||
}
|
||||
|
||||
bricks.UiSearch = class extends bricks.HBox {
|
||||
/*
|
||||
search_url:
|
||||
valueField
|
||||
textField
|
||||
select_event
|
||||
popup_options
|
||||
value,
|
||||
text
|
||||
*/
|
||||
constructor(opts){
|
||||
super(opts);
|
||||
this.uitype = 'search';
|
||||
var inputdesc = {
|
||||
name:this.name,
|
||||
value:this.text,
|
||||
readonly:true
|
||||
}
|
||||
this.str_in = new bricks.UiStr(inputdesc);
|
||||
this.search_icon = new bricks.Icon({
|
||||
url:bricks_resource('imgs/search.png'),
|
||||
rate:1.5
|
||||
});
|
||||
this.str_in.set_css('filler');
|
||||
this.search_icon.set_css('clickable');
|
||||
this.search_icon.bind('click', this.open_search_window.bind(this));
|
||||
this.add_widget(this.str_in);
|
||||
this.add_widget(this.search_icon);
|
||||
}
|
||||
async open_search_window(event){
|
||||
var desc = {
|
||||
"widgettype":"urlwidget",
|
||||
"options":{
|
||||
"url":this.search_url
|
||||
}
|
||||
}
|
||||
var w = await bricks.widgetBuild(desc, this);
|
||||
var tabular = null;
|
||||
for (var i=0;i<w.children.length;i++){
|
||||
if (w.children[i] instanceof bricks.Tabular){
|
||||
tabular = w.children[i];
|
||||
}
|
||||
}
|
||||
if (!tabular){
|
||||
console.log('tubular not found is w');
|
||||
return;
|
||||
}
|
||||
var win = bricks.default_popupwindow(this.popup_options||{});
|
||||
win.add_widget(w);
|
||||
win.open();
|
||||
tabular.bind(this.search_event, this.set_data.bind(this));
|
||||
tabular.bind(this.search_event, win.dismiss.bind(win));
|
||||
}
|
||||
set_data(event){
|
||||
var d = event.params;
|
||||
this.value = d[this.valueField];
|
||||
this.str_in.setValue(d[this.textField])
|
||||
}
|
||||
getValue(){
|
||||
var o = {}
|
||||
o[this.name] = this.resultValue();
|
||||
var d = this.getUserData();
|
||||
if (d){
|
||||
o = bricks.extend(o, d);
|
||||
}
|
||||
return o;
|
||||
}
|
||||
set_formdata(formdata){
|
||||
formdata.append(this.name, this.resultValue());
|
||||
}
|
||||
resultValue(){
|
||||
return this.value;
|
||||
}
|
||||
focus(){
|
||||
this.str_in.dom_element.focus();
|
||||
}
|
||||
reset(){
|
||||
var v = this.opts.value||this.opts.defaultvalue|| '';
|
||||
this.setValue(v);
|
||||
this.str_in.setValue(this.opts.text||'');
|
||||
}
|
||||
setValue(v, t){
|
||||
if (! v)
|
||||
v = '';
|
||||
this.vlaue = v;
|
||||
this.str_in.setValue(t);
|
||||
}
|
||||
set_disabled(f){
|
||||
this.dom_element.disabled = f;
|
||||
}
|
||||
set_readonly(f){
|
||||
this.dom_element.readOnly = f;
|
||||
}
|
||||
set_required(f){
|
||||
this.dom_element.required = f;
|
||||
this.required = f;
|
||||
}
|
||||
|
||||
}
|
||||
bricks.UiPassword =class extends bricks.UiStr {
|
||||
/*
|
||||
{
|
||||
@ -808,7 +907,7 @@ bricks.UiCode =class extends bricks.UiType {
|
||||
e.removeChild(e.firstChild);
|
||||
}
|
||||
var v = this.opts.value || this.opts.defaultvalue || null;
|
||||
if (!v && ! this.opts.nullable){
|
||||
if (!v && ! this.opts.nullable && data.length > 0){
|
||||
v = data[0][this.opts.valueField]
|
||||
}
|
||||
if (this.opts.nullable){
|
||||
@ -969,3 +1068,4 @@ Input.register('UiPassword', 'password', bricks.UiPassword);
|
||||
Input.register('UiAudio', 'audio', bricks.UiAudio);
|
||||
Input.register('UiVideo', 'video', bricks.UiVideo);
|
||||
Input.register('UiAudioText', 'audiotext', bricks.UiAudioText);
|
||||
Input.register('UiSearch', 'search', bricks.UiSearch);
|
||||
|
@ -66,7 +66,9 @@ bricks.Tabular = class extends bricks.DataViewer {
|
||||
if (flag){
|
||||
row.content_widget.show();
|
||||
row.content_widget.clear_widgets();
|
||||
var w = await bricks.widgetBuild(this.content_view, row.content_widget, row.user_data);
|
||||
var desc = objcopy(this.content_view);
|
||||
desc = bricks.apply_data(desc, row.user_data);
|
||||
var w = await bricks.widgetBuild(desc, row.content_widget);
|
||||
if (w){
|
||||
row.content_widget.add_widget(w);
|
||||
}
|
||||
|
@ -210,14 +210,14 @@ bricks.Tree = class extends bricks.VScrollPanel {
|
||||
create_toolbar(){
|
||||
var toolbar = bricks.extend({}, this.toolbar);
|
||||
var tools = [];
|
||||
if (toolbar.tools){
|
||||
toolbar.tools.forEach(f => tools.push(f));
|
||||
}
|
||||
if (this.editable){
|
||||
tools.push({icon:bricks_resource('imgs/add.png'), name:'add'});
|
||||
tools.push({icon:bricks_resource('imgs/update.png'), name:'update'});
|
||||
tools.push({icon:bricks_resource('imgs/delete.png'), name:'delete'});
|
||||
}
|
||||
if (toolbar.tools){
|
||||
toolbar.tools.forEach(f => tools.push(f));
|
||||
}
|
||||
if (tools.length == 0){
|
||||
return;
|
||||
}
|
||||
@ -239,16 +239,17 @@ bricks.Tree = class extends bricks.VScrollPanel {
|
||||
this.update_node();
|
||||
break;
|
||||
default:
|
||||
if ((opts.selected_data || opts.checked_data) && ! this.selected_node){
|
||||
w = new bricks.Error({title:'Error', message:'No selected node found'});
|
||||
w.open();
|
||||
return;
|
||||
}
|
||||
console.log('opts=', opts);
|
||||
var d = null;
|
||||
if (opts.checked_data){
|
||||
d = {
|
||||
checked_data:JSON.stringify(this.checked_data)
|
||||
}
|
||||
} else if (opts.selected_node){
|
||||
d = {
|
||||
selected_data:JSON.stringify(this.selected_node.user_data)
|
||||
}
|
||||
d = this.checked_data
|
||||
} else if (opts.selected_data){
|
||||
d = this.selected_node.user_data
|
||||
}
|
||||
this.dispatch(opts.name, d);
|
||||
break;
|
||||
|
@ -1,6 +1,18 @@
|
||||
var bricks = window.bricks || {};
|
||||
bricks.bug = false;
|
||||
|
||||
bricks.map = function(data_source, mapping, need_others){
|
||||
ret = {};
|
||||
Object.entries(data_source).forEach(([key, value]) => {
|
||||
if (mapping.hasOwnProperty(key)){
|
||||
ret[mapping[key]] = data_source[key];
|
||||
} else if (need_others){
|
||||
ret[key] = data_source[key];
|
||||
}
|
||||
});
|
||||
return ret;
|
||||
}
|
||||
|
||||
bricks.relocate_by_eventpos = function(event, widget){
|
||||
var ex,ey;
|
||||
var x,y;
|
||||
@ -390,13 +402,8 @@ var set_max_height = function(w1, w2){
|
||||
}
|
||||
}
|
||||
var objcopy = function(obj){
|
||||
var o = {}
|
||||
for ( k in obj){
|
||||
if (obj.hasOwnProperty(k)){
|
||||
o[k] = obj[k];
|
||||
}
|
||||
}
|
||||
return o;
|
||||
var s = JSON.stringify(obj);
|
||||
return JSON.parse(s);
|
||||
}
|
||||
|
||||
bricks.set_stream_source = async function(target, url, params){
|
||||
|
Loading…
Reference in New Issue
Block a user