该宏示例在 V10.5上 验证通过 本文档的示例代码仅适用于本文档中的示例报表/场景。若实际报表/场景与示例代码无法完全适配(如使用功能不一致,或多个宏代码冲突等),需根据实际需求开发代码。 |
仪表盘根据列表(单选)类型的筛选器备选值进行轮播,可以通过菜单工具栏中的“开始轮播”、“暂停轮播”以及“停止轮播”按钮控制轮播。
该宏示例需注意的事项如下:
|
① 选中筛选器组件“年份”,右键进入“宏管理”界面
② 新建宏,在弹出的新建模块对话框中输入名称,勾选对象为组件,组件为“年份”,事件为“onBeforeRender(组件渲染前)”
③ 该宏示例主要使用的是 IFilterPortlet 接口下的appendCss方法,把下面宏代码复制到代码区域:
function main(page: IPage, portlet: IFilterPortlet) { renderOptions(portlet) } function renderOptions(portlet: IFilterPortlet) { // 去掉产品内置的单选框背景颜色,设为透明 portlet.appendCss('.theme__filter-color .el-radio__inner::after', `{ background-color: transparent; }`) portlet.appendCss('.el-radio', `{ display: flex; flex-direction: column; height: 32px; }`) portlet.appendCss('.el-radio__inner', `{ background-color: #fff !important; z-index: 2; }`) portlet.appendCss('.el-radio__label', `{ padding-left: 0; }`) portlet.appendCss('.el-radio__input.is-checked .el-radio__inner', `{ border-color: red; width: 16px; height: 16px; }`) portlet.appendCss('.el-radio__input.is-checked .el-radio__inner::after', `{ background-color: red; width: 11px; height: 11px; }`) portlet.appendCss('.el-radio__input .el-radio__inner::after', `{ transition: 0; }`) portlet.appendCss('.filter-list__td', `{ padding: 0; }`) portlet.appendCss('.filter-list__td .el-radio::after', `{ content: " "; display: block; width: 100%; height: 2px; background-color: blue; position: relative; top: -24px; right: -50%; z-index: 1 }`) portlet.appendCss('.filter-list__td:last-child .el-radio::after', `{ display: none; }`) portlet.appendCss('.el-radio__input', `{ flex: 1 }`) } |
④ 保存宏代码,刷新仪表盘,可看到筛选器样式已进行重绘。
① 进入宏管理界面,新建宏,在弹出的新建模块对话框中输入名称,勾选对象为“仪表盘”,事件为“onRender(每次渲染完成后)”
② 宏示例“筛选器备选值轮播”主要使用的是
把下面宏代码复制到代码区域:
function main(page: IPage) { // 通过筛选器标题获取筛选器对象 const portlet: IFilterPortlet = page.getPortletsByTitle('年份')[0] as IFilterPortlet; // 浏览状态的菜单 let pageMenu = page.getPageToolbar() setTimeout(() => { pageMenu.addButton({ icon: 'sx-icon-liked icon-16', tooltip: '开启轮播', color: '#0f0', handler: function () { launchCarousel(portlet); } }, 1) pageMenu.addButton({ icon: 'sx-icon-liked icon-16', tooltip: '暂停轮播', color: 'yellow', handler: function () { portlet.pauseCarousel(); } }, 1) pageMenu.addButton({ icon: 'sx-icon-liked icon-16', tooltip: '停止轮播', color: 'red', handler: function () { portlet.turnOffCarousel(); } }, 1) launchCarousel(portlet) }, 1000) } /** * 启动筛选器轮播 */ function launchCarousel(portlet: IFilterPortlet) { // 轮播配置项 let options: ICarouselOptions = { timeout: 1.5, // 时间间隔1.5秒 infinite: true // 无限循环 }; portlet.turnOnCarousel(options); } |