二开接口文档:https://smartbi.feishu.cn/docx/AdlLdoZDGo8ZNMxoX6wc71m8nGg
示例文档:https://smartbi.feishu.cn/docx/GqQrdOCyiodqAdxvfG3c1EVknhe
禁用切换数据集
需求:禁止数据面板的切换数据集,包括切换按钮,下拉菜单的编辑、切换菜单
代码实现:
import SmartBIExt from 'smartbi-ext-x'
let {
DetailedQueryModule: {
BaseDetailedQueryExtender,
DetailedQueryEventEnum: {
D_QUERY_DATA_PANEL_ON_INIT
}
}
} = SmartBIExt
class MyExtender extends BaseDetailedQueryExtender {
constructor() {
super()
}
install () {
// 监听界面初始化
this.on(D_QUERY_DATA_PANEL_ON_INIT, async (dataPanelImpl) => {
// 禁止切换数据集
if (!dataPanelImpl.getCurrentDatasetId()) {
dataPanelImpl.setSelectDatasetDisabled(true)
}
// 屏蔽数据面板下拉部分菜单
dataPanelImpl.setDropDownBtnsFilter(menu => {
// 屏蔽编辑和切换数据集菜单
return menu.id !== 'EDIT' && menu.id !== 'SWITCH_DATASET'
})
})
}
}
export default MyExtender
对数据来源选择进行限制
需求:设置选择数据集弹窗根节点为:公共空间,搜索时非公共空间下的资源不允许显示
代码:
import SmartBIExt from 'smartbi-ext-x'
let {
DetailedQueryModule: {
BaseDetailedQueryExtender,
DetailedQueryEventEnum: {
D_QUERY_DATASET_SELECTOR_ON_INIT
}
}
} = SmartBIExt
class DatasetSelectDlgExtender extends BaseDetailedQueryExtender {
constructor() {
super()
}
install () {
// 监听界面初始化
this.on(D_QUERY_DATASET_SELECTOR_ON_INIT, async (impl) => {
impl.setRootNodeId('DEFAULT_TREENODE')
// 搜索时过滤自定义节点
impl.setSearchNodeFilter(searchItem => {
return searchItem[0].id !=== 'DEFAULT_TREENODE'
})
})
}
}
export default DatasetSelectDlgExtender
效果
对保存弹窗进行限制
需求:保存资源时不允许保存到分析展现
代码:
import SmartBIExt from 'smartbi-ext-x'
let {
DetailedQueryModule: {
BaseDetailedQueryExtender,
DetailedQueryEventEnum: {
D_QUERY_SAVE_DIALOG_ON_INIT
}
}
} = SmartBIExt
class SaveDialogExtender extends BaseDetailedQueryExtender {
constructor() {
super()
}
install () {
// 监听界面初始化
this.on(D_QUERY_SAVE_DIALOG_ON_INIT, async (saveDialogImpl) => {
var ids = [
// 隐藏分析展现节点
'PUBLIC_ANALYSIS'
]
saveDialogImpl.setNodeFilter((node) => {
return ids.indexOf(node.id) === -1
})
})
}
}
export default SaveDialogExtender
效果:
对工具栏增加按钮
需求:工具栏添加自定义按钮,点击触发自定义监听
代码:
import SmartBIExt from 'smartbi-ext-x'
let {
DetailedQueryModule: {
BaseDetailedQueryExtender,
DetailedQueryEventEnum: {
D_QUERY_TOOLBAR_ON_INIT
}
}
} = SmartBIExt
class MyExtender extends BaseDetailedQueryExtender {
constructor() {
super()
}
install () {
// 监听界面初始化
this.on(D_QUERY_TOOLBAR_ON_INIT, async (toolbarImpl) => {
// 添加自定义按钮
toolbarImpl.addItem({
id: 'test',
label: '自定义按钮',
icon: 'sx-icon-data-panel-toggle',
handler: () => {
alert('点击自定义按钮')
},
ext: {
showPopoverOnClick: true, // 点击菜单项时否显示下拉菜单
expandorIcon: 'sx-icon-tree-expandor', // 下拉icon
showExpand: true // 是否显示下拉按钮// 是否显示下拉按钮
},
children: [{ // 若需要子菜单可以在children中添加工具栏item作为子项
id: 'SAVE',
label: lang.$t('common.save'),
icon: 'sx-icon-save'
}, {
id: 'SAVEAS',
label: lang.$t('common.saveAs2'),
icon: 'sx-icon-saveas'
}]
})
})
}
}
export default MyExtender
效果:
不显示导出弹窗
需求: 点击导出后直接导出
示例1
import SmartBIExt from 'smartbi-ext'
let {
DetailedQueryModule: {
DetailedQueryEventEnum: {
D_QUERY_ON_BEFORE_EXPORT_DIALOG
},
BaseDetailedQueryExtender
}
} = SmartBIExt
class DQueryInterfactExtension extends BaseDetailedQueryExtender {
install () {
this.on(D_QUERY_ON_BEFORE_EXPORT_DIALOG, (dQueryImpl, ext) => {
ext.openDialog = false; // 不显示导出弹窗
})
}
}
export default DQueryInterfactExtension
示例2
import SmartBIExt from 'smartbi-ext'
import * as Element from 'element-ui'
let {
Utils: {
ExtensionUtil: { documentLoadResource }
},
InterfaceObject: {
IGlobal
},
DetailedQueryModule: {
DetailedQueryEventEnum: {
D_QUERY_ON_BEFORE_EXPORT
},
BaseDetailedQueryExtender
}
} = SmartBIExt
class DQueryInterfactExtension extends BaseDetailedQueryExtender {
install () {
this.on(D_QUERY_ON_BEFORE_EXPORT, (dQueryImpl, { exportType }) => {
// 获取默认的导出设置
let setting = dQueryImpl.execGenerateExportSetting({ exportType })
// 调用系统导出
dQueryImpl.execExportWithSetting({ exportType, setting })
})
}
}
export default DQueryInterfactExtension
修改导出弹窗
需求: 导出名称设为"固定报表"且不允许修改, 导出模式是在线导出且不允许显示
代码
import SmartBIExt from 'smartbi-ext'
let {
DetailedQueryModule: {
DetailedQueryEventEnum: {
D_QUERY_ON_BEFORE_EXPORT_DIALOG
},
BaseDetailedQueryExtender
}
} = SmartBIExt
class DQueryInterfactExtension extends BaseDetailedQueryExtender {
install () {
this.on(D_QUERY_ON_BEFORE_EXPORT_DIALOG, (dQueryImpl, { props }) => {
props.defaultValue.fileName = '固定报表'; // 设置默认值: 文件名
props.disables.fileName = 'true'; // 设置可编辑性: 文件名不允许编辑
props.visibles.exportMode = 'false'; // 设置可见性: 导出渠道不可见
console.info(props); // 打印props以查看都有哪些选项可修改
})
}
}
export default DQueryInterfactExtension
定制导出弹窗
需求: 使用自定义的导出弹窗
代码
import SmartBIExt from 'smartbi-ext'
let {
DetailedQueryModule: {
DetailedQueryEventEnum: {
D_QUERY_ON_BEFORE_EXPORT
},
BaseDetailedQueryExtender
}
} = SmartBIExt
class DQueryInterfactExtension extends BaseDetailedQueryExtender {
install () {
this.on(D_QUERY_ON_BEFORE_EXPORT, (dQueryImpl, { exportType }) => {
// 获取默认的导出设置
let setting = dQueryImpl.execGenerateExportSetting({ exportType })
// 使用prompt弹窗询问文件名
// const layer = SmartBIExt.InterfaceObject.IGlobal.getLayer()
let fileName = prompt('请输入文件名', "定制组件导出弹窗");
if (fileName === null) {
// 取消导出
return;
}
if (fileName === '') {
// 不输入文件名
return;
}
setting.fileName = fileName;
// 调用系统导出
dQueryImpl.execExportWithSetting({ exportType, setting })
})
}
}
export default DQueryInterfactExtension
定制导出流程
需求: 导出需要审核, 且存放到固定位置
代码
import SmartBIExt from 'smartbi-ext'
let {
DetailedQueryModule: {
DetailedQueryEventEnum: {
D_QUERY_ON_BEFORE_EXPORT
},
BaseDetailedQueryExtender
}
} = SmartBIExt
class DQueryInterfactExtension extends BaseDetailedQueryExtender {
install () {
this.on(D_QUERY_ON_BEFORE_EXPORT, (dQueryImpl, { exportType }) => {
// 自定义导出流程
// 这里做审核之类的事情
let pass = true; // 审核是否通过
if (pass) {
// 使用系统的导出弹窗
dQueryImpl.execOpenExportSettingDialog({ exportType }, (setting) => {
// 获取导出接口入参
let exportOption = dQueryImpl.execGetExportSetting({ exportType, setting })
// 使用exportOption调用自定义导出接口
})
}
})
}
}
export default DQueryInterfactExtension