bugfix
This commit is contained in:
parent
17e7e2f912
commit
89e77567e9
@ -267,6 +267,11 @@ bricks.buildEventHandler = async function(w, desc, event){
|
|||||||
rtdata = await bricks.getRealtimeData(w, data_desc);
|
rtdata = await bricks.getRealtimeData(w, data_desc);
|
||||||
}
|
}
|
||||||
switch (desc.actiontype){
|
switch (desc.actiontype){
|
||||||
|
caae 'newwindow':
|
||||||
|
return bricks.buildNewWindowHandler(w, target, rtdata, desc);
|
||||||
|
break;
|
||||||
|
case 'iframe':
|
||||||
|
break;
|
||||||
case 'urlwidget':
|
case 'urlwidget':
|
||||||
return bricks.buildUrlwidgetHandler(w, target, rtdata, desc);
|
return bricks.buildUrlwidgetHandler(w, target, rtdata, desc);
|
||||||
break;
|
break;
|
||||||
@ -348,6 +353,31 @@ var _buildWidget = async function(from_widget, target, mode, options, desc){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bricks.buildNewWindowHandler = function(w, target, rtdata, desc){
|
||||||
|
var options = objcopy(desc.options||{});
|
||||||
|
var url = options.url;
|
||||||
|
var params = options.params;
|
||||||
|
if (desc.event_params instanceof FormData){
|
||||||
|
console.log('can not send Formdata');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
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);
|
||||||
|
var url = options.url;
|
||||||
|
url = addParamsToUrl(url, options.params, w);
|
||||||
|
var opts = {
|
||||||
|
"widgettype":"NewWindow",
|
||||||
|
"options":{
|
||||||
|
"name":"options.name || '_blank';
|
||||||
|
"url": url
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return _buildWidget.bind(null, w, target, desc.mode || 'replace', opts, desc);
|
||||||
|
}
|
||||||
bricks.buildUrlwidgetHandler = function(w, target, rtdata, desc){
|
bricks.buildUrlwidgetHandler = function(w, target, rtdata, desc){
|
||||||
var options = objcopy(desc.options||{});
|
var options = objcopy(desc.options||{});
|
||||||
var params = options.params || {};
|
var params = options.params || {};
|
||||||
@ -370,7 +400,6 @@ bricks.buildUrlwidgetHandler = function(w, target, rtdata, desc){
|
|||||||
}
|
}
|
||||||
options.params = bricks.extend(params, rtdata);
|
options.params = bricks.extend(params, rtdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
var opts = {
|
var opts = {
|
||||||
"widgettype":"urlwidget",
|
"widgettype":"urlwidget",
|
||||||
"options":options
|
"options":options
|
||||||
|
|||||||
@ -13,7 +13,7 @@ bricks.Iframe = class extends bricks.Layout {
|
|||||||
bricks.NewWindow = class extends bricks.JsWidget {
|
bricks.NewWindow = class extends bricks.JsWidget {
|
||||||
constructor(opts){
|
constructor(opts){
|
||||||
super(opts);
|
super(opts);
|
||||||
window.open(opts.url);
|
window.open(opts.url, target=opts.name || '_blank');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,13 @@
|
|||||||
var bricks = window.bricks || {};
|
var bricks = window.bricks || {};
|
||||||
bricks.bug = false;
|
bricks.bug = false;
|
||||||
|
|
||||||
|
function addParamsToUrl(url, params, widget) {
|
||||||
|
const urlObj = new URL(url, window.baseURI); // 处理相对和绝对路径
|
||||||
|
Object.keys(params).forEach(key => {
|
||||||
|
urlObj.searchParams.set(key, params[key]);
|
||||||
|
});
|
||||||
|
return urlObj.toString();
|
||||||
|
}
|
||||||
function isString(value) {
|
function isString(value) {
|
||||||
return typeof value === 'string' || value instanceof String;
|
return typeof value === 'string' || value instanceof String;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user