Iframe 嵌入
Iframe 嵌入支持嵌入单个数据大屏、仪表板,图表资源。也支持数据集、数据源,仪表板,数据大屏等模块嵌入,提供一个模块的完整能力,可根据实际需要进行选择。
使用 postMessage 方式实现 DataEase 和嵌入系统的页面信息交互。
(postMessage 是挂载在 window下的一个方法,用于不同域名下的两个页面的信息交互,父子页面通过 postMessage()发送消息,再通过监听 message 事件接收信息。)Iframe 嵌入必须在监听触发后,再初始化图表。
注意:嵌入需要在 DataEase 的配置文件 /opt/dataease2.0/conf/application.yml 里增加 origin-list 配置,并重启服务。详细见常见问题 4.2。
1 仪表板嵌入¶
仪表板嵌入支持嵌入单个仪表板,并可浏览嵌入的仪表板。仪表板嵌入还支持外部参数设置。
#
一、公共链接嵌入(数据不敏感或内网环境可用,使用 ticket 的方式会较为安全)。
1、获取仪表板公共链接
2、定义一个 iframe 容器,并且设置好宽高。
3、设置 iframe 容器的 src 为仪表板公共链接。
二、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、获取仪表板 ID。
5、构建初始化参数。
6、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
双向传参应用场景:
一、第三方系统向 DataEase 传参,依赖于 DataEase 仪表板/数据大屏外部参数实现。
1、初始化看板时,由第三方系统向 DataEase 传参过滤数据。
a) 公共链接拼接 attachParams 过滤数据。
b) 公共链接使用 ticket 设置参数过滤数据。
b) DataEase 推荐的 iframe 嵌入方式前端传参过滤数据。
b) DataEase 推荐的 iframe 嵌入方式后端传参过滤数据。
2、查看看板时,可点击第三方系统的查询组件等,过滤 DataEase 的看板数据。
二、DataEase 向第三方系统传参
1、查看看板时,可点击 DataEase 里的各个组件,向第三方系统传递当前点击的内容。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-dashboard-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 仪表板 ID
let dvId = "";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
# 固定写法:dashboard 仪表板、dataV 数据大屏
busiFlag: "dashboard",
dvId: dvId,
# 固定写法
type: "Dashboard",
# JWT token 认证。
embeddedToken: "",
# 固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
1.1 仪表板双向参数传递¶
使用仪表板、数据大屏、图表嵌入,可以通过嵌入式外部参数进行系统的数据交互,具体使用如下,代码采用 Vue3 代码 ,仪表板、数据大屏、图表双向参数传递等场景参考示例代码中相应部分。
使用外部参数,需要在仪表板或者数据大屏设置好外部参数,具体见外部参数设置。
双向传参应用场景:
第三方系统向 DataEase 传参,依赖于 DataEase 仪表板/数据大屏外部参数实现。
1.初始化看板时,由第三方系统向 DataEase 传参过滤数据。 a) 公共链接拼接 attachParams 过滤数据。
#
一、公共链接嵌入(数据不敏感或内网环境可用,使用 ticket 的方式会较为安全)。
1、获取仪表板公共链接
2、定义一个 iframe 容器,并且设置好宽高。
3、设置 iframe 容器的 src 为仪表板公共链接。
#
<script setup lang="ts" name="dashboard">
import {Base64} from "js-base64";
import {nextTick} from "vue";
nextTick(()=>{
const params = {
参数名1: ["参数值1" , "参数值2"],
参数名2: "参数值2"
}
# 公共链接拼接 attachParams
let url = "https://embedded-bi-inner.dataease.cn/#/de-link/uY6HGgCD?attachParams="+Base64.encodeURL(JSON.stringify(params));
document.getElementById("iframe-dashboard-view").src = url;
})
</script>
#
一、公共链接嵌入(数据不敏感或内网环境可用,使用 ticket 的方式会较为安全)。
1、获取仪表板公共链接
2、定义一个 iframe 容器,并且设置好宽高。
3、设置 iframe 容器的 src 为仪表板公共链接。
#
<script setup lang="ts" name="dashboard">
import {Base64} from "js-base64";
import {nextTick} from "vue";
nextTick(()=>{
const params = {
参数名1: ["参数值1" , "参数值2"],
参数名2: "参数值2"
}
# 公共链接使用 ticket 设置参数
let url = "https://embedded-bi-inner.dataease.cn/#/de-link/uY6HGgCD?ticket=rGD7gNBN"
document.getElementById("iframe-dashboard-view").src = url;
})
</script>
#
二、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、获取仪表板 ID。
5、构建初始化参数。
6、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 仪表板 ID
let dvId = "";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
# 外部参数
const initParams = {
attachParams: {
"参数名":"参数值"
}
}
# 嵌入式参数
const params = {
busiFlag: "dashboard",
dvId: dvId,
type: "Dashboard",
embeddedToken: "",
"de-embedded": true,
outerParams: JSON.stringify(initParams)
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
@RestController
public class TokenApi {
#
## 获取 DataEase 嵌入式 Token
## DataEase 嵌入式 Token 使用的是 JWT 认证,由 appId、appSecret 以及 DataEase 用户名生成。
## Java 程序可直接引用 java-jwt (https://mvnrepository.com/artifact/com.auth0/java-jwt) 依赖,其它后端语言可自行百度加密代码。
## 注意,嵌入式 Token 的过期时间默认为 480 分钟,可通过修改 application.yml 进行调整
## 配置参数名称为 dataease.embedded-exp
#
@GetMapping("/token/{account}")
public String generate(@PathVariable("account") String account) throws JsonProcessingException {
SettingVO vo = SettingUtils.read();
# vo.getAppSecret() 实际为创建的嵌入式应用的 APP Secret 。
Algorithm algorithm = Algorithm.HMAC256(vo.getAppSecret());
JWTCreator.Builder builder = JWT.create();
List<String> ipList = new ArrayList<>();
ipList.add("192.168.1.10");
ipList.add("192.168.1.20");
ObjectMapper objectMapper = new ObjectMapper();
String json = objectMapper.writeValueAsString(ipList);
# vo.getAppId(): 实际为创建的嵌入式应用的 APP ID。account 用户账号。
# arg 参数,参数值多个使用 json 格式
builder.withClaim("account", account).withClaim("appId", vo.getAppId()).withClaim("arg1", "参数值1").withClaim("arg2", json);
# 设置令牌生成时间,
builder.withIssuedAt(new Date());
# 返回 token
return builder.sign(algorithm);
}
}
#
二、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、获取仪表板 ID。
5、构建初始化参数。
6、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<div style="float: right; cursor: pointer; margin-top: 0.5vh">
<el-dropdown trigger="click" @command="changeUser">
<span class="el-dropdown-link">
点我切换参数
</span>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item command="参数1">参数1</el-dropdown-item>
<el-dropdown-item command="参数2">参数2</el-dropdown-item>
<el-dropdown-item command="参数3">参数3</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</div>
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-dashboard-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 仪表板 ID
let dvId = "";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
busiFlag: "dashboard",
dvId: dvId,
type: "Dashboard",
embeddedToken: "",
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
const changeUser = function (command: String) {
postMsg(command);
}
const postMsg = function (user: String) {
const param = {
type: "attachParams",
targetSourceId: dvId,
params: {
参数名: 参数值
}
}
const contentWindow = iframe.contentWindow;
contentWindow.postMessage( JSON.parse(JSON.stringify(param)) , "*" );
}
</script>
DataEase 向第三方系统传参
查看看板时,可点击 DataEase 里的各个组件,向第三方系统传递当前点击的内容,具体内容可通过解析传递的 message,获取相应的信息。
以下为 DataEase 传递内部消息的解析后得到的参数例子,这些参数均可以在 DataEase 获取数据大屏的接口详情里得到。
1.完整 data json 如下。
{
"msgOrigin": "de-fit2cloud",
"type": "dataease-embedded-interactive",
"eventName": "de_inner_params",
"args": {
"sourceDvId": "1029081671057674240",
"sourceViewId": "7237349581229395968",
"message":
"eyJvcHRpb24iOiJwb2ludENsaWNrIiwibmFtZSI6IjE3MTQwOTczMjY2OTQiLCJ2aWV3SWQiOiI3MjM3MzQ5NTgxMjI5Mzk1OTY4IiwiZGltZW5zaW9uTGlzdCI6W3siaWQiOiIxNzE0MDk3MzI2NjkzIiwidmFsdWUiOjB9LHsiaWQiOiIxNzE0MDk3MzI2Njk0IiwidmFsdWUiOiJCb2IifV0sInF1b3RhTGlzdCI6W119"
}
}
2.message base64解码 json 如下。
{
"option": "pointClick",
"name": "1714097326694",
"viewId": "7237349581229395968",
"dimensionList": [
{
"id": "1714097326693",
"value": 0
},
{
"id": "1714097326694",
"value": "Bob"}
],
"quotaList": [ ]}
#
二、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、获取仪表板 ID。
5、构建初始化参数。
6、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
import {Base64} from "js-base64";
# 仪表板 ID
let dvId = "";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const initParams = {
callBackFlag: "yes"
}
const params = {
busiFlag: "dashboard",
dvId: dvId,
type: "Dashboard",
embeddedToken: "",
"de-embedded": true,
outerParams: JSON.stringify(initParams)
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.eventName === "de_inner_params") {
const dvId = event.data.args.sourceDvId;
const viewId = event.data.args.sourceViewId;
const message = event.data.args.message;
const messageDecode = Base64.decode(message);
alert("仪表板ID : "+ dvId + " ; 图表ID : " + viewId + " ; 点击详情 : " + messageDecode);
}
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
2 仪表板设计器嵌入¶
仪表板编辑嵌入支持嵌入整个仪表板设计器界面,用户不仅可以浏览嵌入的仪表板,还可以对其进行编辑:
#
一、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、获取仪表板 ID。
5、构建初始化参数。
6、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-dashboard-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 仪表板 ID
let dvId = "";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
# 固定写法:dashboard 仪表板、dataV 数据大屏
busiFlag: "dashboard",
resourceId: dvId,
# 固定写法
type: "DashboardEditor",
embeddedToken: "",
# 固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
3 数据大屏嵌入¶
数据大屏嵌入支持嵌入整个数据大屏,用户可以浏览嵌入的数据大屏,数据大屏嵌入还支持外部参数设置。
#
一、公共链接嵌入(数据不敏感或内网环境可用,使用 ticket 的方式会较为安全)。
1、获取数据大屏公共链接
2、定义一个 iframe 容器,并且设置好宽高。
3、设置 iframe 容器的 src 为数据大屏公共链接。
二、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、获取数据大屏 ID。
5、构建初始化参数。
6、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
双向传参应用场景:
一、第三方系统向 DataEase 传参,依赖于 DataEase 仪表板/数据大屏外部参数实现。
1、初始化看板时,由第三方系统向 DataEase 传参过滤数据。
a) 公共链接拼接 attachParams 过滤数据。
b) 公共链接使用 ticket 设置参数过滤数据。
b) DataEase 推荐的 iframe 嵌入方式前端传参过滤数据。
b) DataEase 推荐的 iframe 嵌入方式后端传参过滤数据。
2、查看看板时,可点击第三方系统的查询组件等,过滤 DataEase 的看板数据。
二、DataEase 向第三方系统传参
1、查看看板时,可点击 DataEase 里的各个组件,向第三方系统传递当前点击的内容。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-dashboard-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 数据大屏 ID
let dvId = "";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
# 固定写法:dashboard 仪表板、dataV 数据大屏
busiFlag: "dataV",
dvId: dvId,
# 固定写法
type: "Dashboard",
# JWT token 认证。
embeddedToken: "",
# 固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
3.1 数据大屏双向参数传递¶
参考 Ifram 仪表板双向参数传递以及 Iframe 数据大屏嵌入,将相应 busiFlag 修改对应。
4 数据大屏设计器嵌入¶
数据大屏设计器嵌入支持嵌入整个数据大屏设计器界面,用户不仅可以浏览嵌入的数据大屏,还可以对其进行编辑:
#
一、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、获取仪表板 ID。
5、构建初始化参数。
6、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-dashboard-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
let dvId = "967564651451781120";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "https://embedded-bi-inner.dataease.cn/#/chart-view";
const params = {
# 固定写法:dashboard 仪表板、dataV 数据大屏
busiFlag: "dataV",
dvId: dvId,
# 固定写法
type: "VisualizationEditor",
# JWT token 认证。
embeddedToken: "",
# 固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
5 图表嵌入¶
图表嵌入支持嵌入单个图表,并可浏览嵌入的图表。图表嵌入还支持外部参数设置。
#
一、、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、获取仪表板/数据大屏 ID 以及图表 ID。
5、构建初始化参数。
6、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
双向传参应用场景:
一、第三方系统向 DataEase 传参,依赖于 DataEase 仪表板/数据大屏外部参数实现。
1、初始化看板时,由第三方系统向 DataEase 传参过滤数据。
a) DataEase 推荐的 iframe 嵌入方式前端传参过滤数据。
b) DataEase 推荐的 iframe 嵌入方式后端传参过滤数据。
2、查看看板时,可点击第三方系统的查询组件等,过滤 DataEase 的看板数据。
二、DataEase 向第三方系统传参
1、查看看板时,可点击 DataEase 里的各个组件,向第三方系统传递当前点击的内容。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-dashboard-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 仪表板 ID / 数据大屏 ID
let dvId = "";
# 图表 ID
let chartId = "";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
#
## 仪表板图表 busiFlag:dashboard
## 数据大屏图表 busiFlag:dataV
const params = {
# 固定写法:dashboard 仪表板、dataV 数据大屏
busiFlag: "dashboard",
dvId: dvId,
chartId: chartId,
# JWT token 认证
embeddedToken: "",
# 固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
5.1 图表双向参数传递¶
参考 Iframe 仪表板双向参数传递以及 iframe 图表嵌入。
6 我的填报嵌入¶
支持我的填报嵌入,填报模块信息。
#
DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、构建初始化参数。
5、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-datafillinghandler-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="datafillinghandler">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
type: "DataFillingHandler",
embeddedToken: "",
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-datafillinghandler-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud" && event.data?.type !== 'dataease-embedded-interactive') {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
7 模块嵌入¶
7.1 仪表板模块¶
嵌入整个仪表板模块后,可以实现对仪表板模块的整体使用,包括新建、编辑和删除仪表板:
#
DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、构建初始化参数。
5、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-datafillinghandler-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="datafillinghandler">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
type: "DataFillingHandler",
embeddedToken: "",
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-datafillinghandler-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud" && event.data?.type !== 'dataease-embedded-interactive') {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
7.2 数据大屏模块¶
嵌入整个数据大屏模块后,可以实现对数据大屏模块的整体使用,包括新建、编辑和删除数据大屏。
#
一、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、构建初始化参数。
5、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-dashboard-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/char-view
let url = "";
const params = {
# 固定写法 ScreenPanel 数据大屏模块。
type: "ScreenPanel",
# JWT token 认证
embeddedToken: "",
# 固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
7.3 数据集模块¶
嵌入整个数据集模块,嵌入后可实现数据集模块的整体使用,包括新建数据集,编辑数据集,删除数集。
#
一、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、构建初始化参数。
5、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-dashboard-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
# 固定写法 Dataset 数据集模块。
type: "Dataset",
# JWT token 认证
embeddedToken: "",
#固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
7.4 数据源模块¶
嵌入整个数据源,嵌入后可实现数据源模块的整体使用,包括新建数据源,编辑数据源,删除数源。
#
一、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、构建初始化参数。
5、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-dashboard-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dashboard">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
# 固定写法 Datasource 数据集模块。
type: "Datasource",
# JWT token 认证
embeddedToken: "",
# 固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
7.5 数据填报模块¶
嵌入整个数据填报,嵌入后可实现数据填报模块的整体使用。
#
一、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、构建初始化参数。
5、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-datafilling-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="dataFilling">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
# 固定写法 DataFilling 数据填报模块。
type: "DataFilling",
//JWT token 认证
embeddedToken: "",
# 固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-datafilling-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
7.6 Copilot 模块¶
嵌入 Copilot 模块。
#
一、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、构建初始化参数。
5、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-copilot-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="copilot">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
# 固定写法 Copilot 模块。
type: "Copilot",
# JWT token 认证
embeddedToken: "",
# 固定写法
"de-embedded": true
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-dashboard-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>
7.7 模版管理模块¶
#
一、DataEase 嵌入式推荐的 iframe 嵌入
1、iframe 嵌入需要先在 application.yml 里添加 origin-list
2、定义一个 iframe 容器,并且设置好宽高。
3、调用嵌入式 Token 生成接口,获取嵌入式 Token。
4、构建初始化参数。
5、监听来自 DataEase 事件的 msgOrigin ,如果 msgOrigin 为 de-fit2cloud ,则通过 postMessage 发送初始化参数,渲染看板。
#
<template>
<div class="card-iframe content-box">
<iframe style="height: 100%; width: 100%; border: 0" src="" id="iframe-templatemanage-view" ></iframe>
</div>
</template>
<script setup lang="ts" name="templatemanage">
import {getToken} from "@/api/common";
import {nextTick , onUnmounted} from "vue";
# 固定写法,如 https://embedded-bi-inner.dataease.cn/#/chart-view
let url = "";
const params = {
# 固定写法 模版管理 模块。
type: "TemplateManage",
# JWT token 认证
embeddedToken: "",
# 固定写法
"de-embedded": true,
busiFlag: "dataV"
}
let iframe = null;
onUnmounted(()=>{
window.removeEventListener("message",onMessage,false);
})
nextTick(()=>{
iframe = document.getElementById("iframe-templatemanage-view");
getToken().then(result => {
params.embeddedToken = result;
iframe.src = url;
window.addEventListener("message" , onMessage , false);
})
})
const onMessage = function (event: any){
if (event.data?.msgOrigin === "de-fit2cloud") {
const contentWindow = iframe.contentWindow;
contentWindow.postMessage(params , "*")
}
}
</script>
<style scoped lang="scss">
@import "index";
</style>