<< Click to Display Table of Contents >> iframe集成报告API复制链接 |
1.概述
外部系统通过iframe集成了永洪的页面,并内外通过postMessage进行通信和交互;可以实现打开报告,刷新,关闭的动作。可以实现较为复杂的集成场景。
iframe url 为查看报告复制的报告链接;例如:http://ip:port/bi/Viewer?proc=1&action=viewer ,默认不会打开任何报告页面,通过外部逻辑驱动对报告的打开。或者指定报告路径:http://ip:port/bi/Viewer?proc=1&action=viewer&db=test.db,默认打开一个报告。
打开、刷新、关闭都是通过postmessage发送消息给http://ip:port/bi/Viewer?proc=1&action=viewer外部控制它做具体的动作,获取打开报告的id为一个监听事件,获取报告id的目的是为打开报告,并在刷新、关闭时使用。
通过监听iframe message事件,获取打开报告的id。
请求示例
_iframe.contentWindow.addEventListener("message", (event) => {
const data = event.data ? JSON.parse(event.data) : null;
if(data && data.action == "OpenedDBID") {
console.log('Opened DB id: ', data.id);
}
});
➢注意:
message 事件需要在打开报告执行前监听。
3.打开报告
允许用户通过此接口打开报告。
请求参数
参数 |
类型 |
约束 |
---|---|---|
action |
String |
常量:‘OpenDB' |
db |
String |
报表路径 |
saveDynamicPerfCheck |
Bool |
用于在打开报告时记录动态性能检测的数据,true为打开,false为关闭。 |
➢注意:
所有传参最终使用JSON格式封装。
_iframe.contentWindow.postMessage(
JSON.stringify({
action: "OpenDB",
db: "xxx",
saveDynamicPerfCheck: true
}),
"*",
);
➢注意:
xxx替换为报告path。
成功响应
iframe内打开db指定的路径对应的报告。
错误响应
iframe内显示错误页面。
注意事项
无权限则iframe显示无权限提示或者跳转到登录页面。
4.刷新报告
允许用户通过此接口刷新报告。
参数 |
类型 |
约束 |
---|---|---|
action |
String |
常量:‘RefreshDB' |
id |
String |
必须指定报告 id |
➢注意:
所有传参最终使用JSON格式封装。
_iframe.contentWindow.postMessage(
JSON.stringify({
action: "RefreshDB",
id: "xxx"
}),
"*",
);
➢注意:
xxx替换为报告id;报告id获取,参考获取打开报告id。
成功响应
iframe内刷新对应的报告。
错误响应
iframe内显示错误信息。
5.关闭报告
允许用户通过此接口关闭服务器端报告。
请求参数
参数 |
类型 |
约束 |
---|---|---|
action |
String |
常量:‘CloseDB' |
params |
String |
{id: xxx},必须指定报告id |
➢注意:
所有传参最终使用JSON格式封装。
请求示例
_iframe.contentWindow.postMessage(
JSON.stringify({
action: "CloseDB",
params: {
id: "xxx"
}
}),
"*",
);
➢注意:
xxx替换为报告id;报告id获取,参考获取打开报告id。
成功响应
iframe内打开db无变化,再操作报告将不再响应。
错误响应
iframe内显示错误提示信息。