1.3.1 • Published 6 years ago
embed-bi v1.3.1
Embed-BI
嵌入应用控制模块
基本用法
安装
npm install embed-bi
or
yarn add embed-bi
初始化
new Embed(dom, options, created)
options
| 参数 | 说明 | 类型 | 必须 |
|---|---|---|---|
| groupId | 嵌入的项目Id | String | true |
| dashboardId | 嵌入的仪表盘Id | String | true |
| host | 嵌入的host,目前默认是alpha环境 http://alpha-dashboard.gridsumdissector.com | String | false |
| width | 嵌入窗口的宽度,不传则默认100% | Number | false |
| height | 嵌入窗口的高度,不传则默认100% | Number | false |
| token | 用于SSO权限验证的token | String | 与publishID二选一 |
| publishID | 发布仪表盘的ID, 使用publishID可以无需SSO的token | String | 与token二选一 |
| authParam | 需要第三方鉴权时传入的权限验证的参数 | Object | false |
import Embed from 'embed-bi';
let embed = new Embed(document.querySelector('#iframe-container0'), {
groupId: '12345',
dashboardId: '12345',
width: 1000,
height: 800,
publishId: 'string',
authParam: {}
}, () => {
embed.toggleNavbar(false);
});带第三方鉴权的流程
可用的API
| 方法名 | 说明 | 参数 |
|---|---|---|
| registerTokenHandle | 注册监听token是否过期的回调 | Function |
| setTheme | 设置主题 | String |
| toggleNavbar | 控制navbar的显示 | Boolean |
| setDashboardFilter | 设置仪表盘过滤 | [filterItem] |
| getDashboardFilter | 获取仪表盘过滤 | 无 |
| setWidgetFilter | 设置组件过滤 | [filterItem] |
| getWidgetFilter | 获取组件过滤 | 无 |
| getFrameHeight | 获取嵌入页面高度 | 无 |
| changeGridHeight | 当父页面的可视区下限改变时,通过该接口告知iframe内部进行懒加载 | Number 可视区下限Y坐标 |
filterItem结构见文档:FilterItem 类
权限监听回调
embed.registerTokenHandle((req, res) => {
let {isValid} = req.body;
console.log('页面token是否有效:', isValid);
return res
});设置主题
embed.setTheme('theme-dark').then(res => {
console.log(res);
}, err => {
console.log(err);
});显示/隐藏导航栏
embed.toggleNavbar(false)仪表盘级别过滤
embed.setDashboardFilter({
filterRules
});
embed.getDashboardFilter().then(res => {
console.log('获取返回的仪表盘过滤值: ', res);
}, err => {
console.log('获取失败', err);
});组件级别过滤
embed.setWidgetFilter({
widgetId: '3216aa14-3bb5-4695-4b8b-2cc91ca89a69',
filterRules
}).then(res => {
console.log('设置过滤值成功: ', res);
}).then(err => {
console.error('设置过滤失败: ', err);
}
embed.getWidgetFilter().then(res => {
console.log('获取返回的组件过滤值: ', res);
}).then(err => {
console.error('获取组件过滤值失败: ', err);
}
获取嵌入页面高度
embed.getFrameHeight().then(res => {
console.log(res.body);
});触发内部懒加载
window.addEventListener('scroll', () => {
embed.changeGridHeight(
window.pageYOffset + document.documentElement.clientHeight
);
});