在交互仪表盘中可以添加各式各样的组件,同时基础的配置有可以筛选、跳转、下钻等多种交互功能。而仪表盘宏可以在原本仪表盘的基础上进一步满足个性化的需求,提供了丰富的接口来适应不同的使用场景。
仪表盘宏入口:设置面板->交互->宏管理->设置
客户端宏
仪表盘
控制整个仪表盘页面上的组件、刷新、导出、工具栏等
组件
控制组件自身的加载、显示、刷新、导出等
不同的组件有不同的宏接口对象
仪表盘
onRender(每次渲染完成后)
组件
onBeforeRender(组件渲染前)
onAfterRender(组件渲染后)
执行顺序
仪表盘页面定义加载->仪表盘(每次渲染完成后)->组件加载->(组件渲染前)->渲染组件->(组件渲染后)->其他逻辑
main
函数funcation main(...)
main
函数是宏代码的入口函数,不允许删除
仪表盘:IPage
,组件:(IPage,组件对象)
仪表盘上画出了各个指标的时间趋势图和季度占比图,希望能够有一个按钮来统一进行切换趋势图和占比图,除去这个之外还希望有单独点击切换指标的趋势图和占比图的交互功能。
宏模块
类型 | 对象 | 事件 |
---|---|---|
ClientSide(客户端宏) | portlet(参数) | onBeforeRender(组件渲染前) |
示例代码
function main(page: IPage, portlet: IFilterPortlet) { let tabPortletNameArray: Array<string> = ["销售量tab","销售额tab"] // 获取当前参数值 portlet.setFilterValueChangeHandler((value) => { for (index in tabPortletNameArray) { changeTab(page,tabPortletNameArray[index],value) } }) } function changeTab(page: IPage, tabPortletName: string,value:Array<string>) { let tabPortletArray: Array<IStaticTabsPortlet> = page.getPortletsByTitle(tabPortletName); if (!tabPortletArray || !tabPortletArray[0]) { return; } let tabPortlet: IStaticTabsPortlet = tabPortletArray[0]; if (value && value[0]) { tabPortlet.setActiveTabName(value[0]); } } |
关键对象方法
设置筛选器参数监听器:portlet.setFilterValueChangeHandler
根据标题名称获取组件对象:page.getPortletsByTitle
切换指定tab页:tabPortlet.setActiveTabName
参考示例
仪表盘宏需要使用TypeScript进行编写,提供的均为TypeScript接口。TypeScript是JavaScript类型的超集,它可以编译成纯JavaScript。
:仪表盘页面接口,所有的组件都在仪表盘页面上
:是所有组件的父接口,提供了基本的通用接口给继承的组件
是仪表盘上内置的工具类接口,提供多种通用方法,包括base64转码、判等、日期格式化、获取Json属性等。
仪表盘宏入门:https://my.smartbi.com.cn/edu/course-127