页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 3 下一个 »


install 初始化接口

触发时机:数据模型创建时。

作用:此时数据模型刚进行创建,此时开发者可以在此接口中通过on方法添加对数据模型事件的监听,并进行一些数据准备等初始化操作。

示例代码

import SmartBIExt from 'smartbi-ext'

let {
作用:根据属性获取菜单项/菜单子项
AugmentModule: {

AugmentEventEmum: {

AUGMENTEDDATASET_ON_SAVE_DIALOG_INIT

},

BaseAugmentExtender

}

Utils: {

ExtensionUtil: { rmi }

}

} = SmartBIExt

class AugmentExtentor extends BaseAugmentExtender{

async install () {

// 通过RMI获取当前用户信息,供后续使用

let resp = await rmi('UserService', 'getCurrentUser')

let userInfo = resp.result

this.on(AUGMENTEDDATASET_ON_SAVE_DIALOG_INIT, (iSaveDialog) => {

})

}

}

扩展接口

扩展接口是数据模型中提供的外部对系统进行修改的接口,这些接口会在对应的生命周期执行。

开发者实现相关接口时,只需在install方法中,通过on方法监听对应的事件,并实现对应的回调方法,以下示例代码均在install方法中编写。

AugmentedDataSet 数据模型接口

AUGMENTEDDATASET_ON_SAVE_DIALOG_INIT

触发时机:首次打开保存弹窗时

作用:指定用户的可保存的目录

名称类型说明
输入参数iSaveDialogISaveDialog保存弹窗对象(见下文接口对象)
返回值-

示例代码

this.on(AUGMENTEDDATASET_ON_SAVE_DIALOG_INIT, async (iSaveDialog) => {

// 删除所有操作按钮

iSaveDialog.setOperateButtonFilter(item => {

return false

})

// 设置根节点为我的空间中的分析报表

let resp = await rmi('UserService', 'getCurrentUser')

iSaveDialog.setRootNodeId(`SELF_ANALYSIS_${resp.result.id}`)

})

AUGMENTEDDATASET_ON_CREATE_RESOURCE

触发时机:点击新建的子菜单时

作用:自定义新建点击的处理

说明:可以在点击新建即席查询、交互式仪表盘(自由布局、自适应布局)时,定制自己的处理逻辑

名称类型说明
输入参数iAugmentDatasetIAugmentDataset数据模型对象
输入参数argsJson对象restype:资源类型,SMARTBIX_PAGE、COMBINED_QUERY分别代表仪表盘、即席查询 action:动作, SMARTBIX_CRAETE_LARGESCREEN_DASHBOARD_WITH_DATASETID、 SMARTBIX_CRAETE_DASHBOARD_WITH_DATASETID、 SMARTBIX_CREATE_MODEL_QUERY_WITH_DATASETID分别代表:创建自由布局、创建自适应布局、创建即席查询 dataSetId:数据模型id 示例,如下: { restype: 'SMARTBIX_PAGE', action: 'SMARTBIX_CRAETE_LARGESCREEN_DASHBOARD_WITH_DATASETID', dataSetId: 'I8a8a9fb6018210a510a51735018210a517350000' }
返回值-

示例代码

class AugmentExtentor extends BaseAugmentExtender{

async install () {

let resp = await rmi('UserService', 'getCurrentUser');

this.on(AUGMENTEDDATASET_ON_CREATE_RESOURCE, (iAugmentDatasetImpl, args) => {

console.log(resp)

if (resp.result.name === 'admin') {

// 禁止原创建的逻辑

iAugmentDatasetImpl.setCreateResource(false);

}

})

}

}

AUGMENTEDDATASET_ON_TOOLBAR_INIT

触发时机:工具类初始化

作用:配置工具栏按钮是否显示

名称类型说明
输入参数iToolbarToolbarImpl工具类对象(见下文接口对象)
返回值-

说明

iToolbar的getButtons()方法,返回一个按钮数组,通过改变数组的个数,达到显示或隐藏按钮;

示例代码

this.on(AUGMENTEDDATASET_ON_TOOLBAR_INIT, (iToolbar) => {

// 获取按钮配置

let btns = iToolbar.getButtons();

for (let i = 0; i < btns.length; i++) {

if (btns[i].action === 'SAVE') {

// 移除save的子菜单

btns[i].children = [];

// 去掉下拉图标

btns[i].type = 'icon';

}

}

// 设置按钮配置

// iToolbar.setButtons(btns);

})

AUGMENTEDDATASET_ON_VIEWENTRY_CLICK

*触发时机:*私有查询新建按钮点击

作用:屏蔽新建私有查询的菜单项

名称类型说明
输入参数iViewEntryImplIViewEntryImpl私有查询新建按钮对象(见下文接口对象)
返回值-

示例代码

this.on(AUGMENTEDDATASET_ON_VIEWENTRY_CLICK, (iViewEntryImpl) => {

// 屏蔽数据源表、日期维表

iViewEntryImpl.hideMenus(['BASIC_TABLE', 'TIME_TABLE']);

/*

TIME_TABLE、ETL_VIEW、PROC_VIEW、JS_VIEW、JAVA_VIEW、COMBINEDQUERY_VIEW、SQL_VIEW、EXCEL_VIEW、BASIC_TABLE,分别代表:生成日期表、ETL高级查询、存储过程查询、脚本查询、Java查询、即席查询、SQL查询、导入文件、数据源表

*/

})

AUGMENTEDDATASET_ON_VIEW_ADD

触发时机:添加私有查询后,处理字段时

作用:添加私有查询后对私有查询对象操作

名称类型说明
输入参数DatasetViewIDatasetView私有查询对象(见下文接口对象)
返回值-

AUGMENTEDDATASET_ON_MASK_RULE_SELECT_OPEN

接口对象:IMaskingRuleSelect

时机:打开脱敏规则设置弹窗时

名称类型说明
输入参数iMaskingRuleSelectIMaskingRuleSelect脱敏下拉框对象(见下文接口对象)
返回值-

AUGMENTEDDATASET_ON_DATASET_INIT

时机:数据模型完全初始化完成

接口对象:IAugmentDatasetView

名称类型说明
输入参数iAugmentDatasetViewIAugmentDatasetView数据模型视图对象(见下文接口对象)
返回值-

接口对象

ISaveDialog

资源保存弹窗对象,可删除操作按钮(上一级和创建文件夹)或指定可保存的目录

img

setOperateButtonFilter

作用:过滤右上角的操作按钮

名称类型说明
输入参数filterFuncfunction过滤方法,第一个参数为操作按钮信息
返回值-

示例代码

iSaveDialog.setOperateButtonFilter(item => {

// 移除返回上一级按钮

return item.id !== 'DRILL_UP'

})

setRootNodeId

作用:设置资源树中的根节点id,设置后只可查看或查找该节点下的文件或资源

名称类型说明
输入参数idstring节点id
返回值-

示例代码

let resp = await rmi('UserService', 'getCurrentUser')

// 设置根节点为我的空间下

iSaveDialog.setRootNodeId(`SELF_${resp.result.id}`)

setNodeFilter

作用:根据自定义的白名单或黑名单对显示节点进行过滤

名称类型说明
输入参数filterFuncfunction过滤方法,第一个参数为NodeItem
返回值-

示例代码

let whiteList = ['I8a8a9f0b017f6c946c94975c017f6d7fe0d7029f']

// 在我的空间下只显示资源及指定文件夹

iSaveDialog.setNodeFilter(item => {

if (item.type !== 'SELF_TREENODE') {

return true

}

return whiteList.some(id => item.id === id)

})

IAugmentDataset

setCreateResource

作用:是否执行创建资源处理

名称类型说明
输入参数isCreateboolean是否执行创建资源处理
返回值-

IToolbar

菜单项说明:

  1. 接口添加的可执行项需要一个唯一的action,工具栏组件根据action寻找被点击的菜单项
  2. 接口添加的可执行项需要一个handler作为回调,哪怕为空。因为我们认为有handler的为二开菜单项
  3. 修改原本的菜单项时,不可以修改action属性,因为它被用于确定菜单原本的处理逻辑,除非你想修改原来的处理逻辑(加一个handler)

菜单项参考

// 单项 + 下拉 (参考:设置)

{

type: 'operate',

name: lang.$t('common.save'),

icon: 'sx-icon-save',

click: true,

action: 'SAVE',

customClass: 'augment-operate-btn-bar',

qtp: 'AugmentedToolbar-save',

expendQtp: 'AugmentedToolbar-save-more',

handler: () => {},

children: [{

maskId: 'save',

id: 'SAVE',

icon: 'sx-icon-save',

title: lang.$t('common.save'),

type: 'button',

qtp: 'AugmentedToolbar-save-save',

handler: () => {}

}]

}



// 单个图标(参考:检测)

{

name: lang.$t('common.check'),

action: 'VALIDATE',

icon: 'sx-icon-check',

type: 'icon',

handler: () => {},

children: []

}



// TODO 下拉面板 (参考设置)



{

type: 'multDrop',

name: lang.$t('common.setting'),

icon: 'sx-icon-setting',

action: 'setting',

qtp: 'AugmentedToolbar-setting',

children: [{

maskId: 'autoDetectedRelationships',

action: 'relationCheck',

name: lang.$t('augmenteddataset.autoDetectedRelationships'),

leftWidth: '108px',

activeAction: 'SYSTEMCHECK',

comLabel: 'sx-item-select',

type: 'button',

qtp: 'AugmentedToolbar-setting-autoDetectedRelationships',

children: [{

value: true,

action: 'AUTOCHECK',

icon: 'sx-icon-auto-check',

title: lang.$t('augmenteddataset.detect'),

qtp: 'AugmentedToolbar-setting-autoDetectedRelationships-autoCheck',

handler: () => {}

}, {

value: false,

icon: 'sx-icon-uncheck',

action: 'FORBIDCHECK',

title: lang.$t('augmenteddataset.doNotDetect'),

qtp: 'AugmentedToolbar-setting-autoDetectedRelationships-unCheck',

handler: () => {}

}, {

value: false,

action: 'SYSTEMCHECK',

icon: 'sx-icon-system-cache',

title: lang.$t('dataset.systemCache'),

qtp: 'AugmentedToolbar-setting-autoDetectedRelationships-systemCache',

handler: () => {}

}]

}]

}



// TODO 伸缩菜单 (参考新建分析)

{

maskId: 'createResource',

name: lang.$t('augmenteddataset.createAnalysis'),

icon: 'sx-icon-add-smartbix-page',

type: 'cascaderMenus',

qtp: 'AugmentedToolbar-createResource',

children: [{

name: lang.$t('dashboard.interactiveDashboard'),

icon: 'sx-icon-smartbix-page',

action: 'CREATE_LARGESCREEN_DASHBOARD',

qtp: 'AugmentedToolbar-createResource-interactiveDashboard',

license: 'XDashboard',

handler: () => {}

}]

}

getAction()

作用:获取打开模型的动作

名称类型说明
输入参数---
返回值Action'EDIT' /'CREATE'新建还是编辑数据模型

getDataSetId()

作用:获取模型id,新建时返回空串

名称类型说明
输入参数---
返回值ActionString数据模型ID

addItem (item)

作用:在末尾添加一个菜单项目

名称类型说明
输入参数item菜单项
返回值---

removeItem (index)

作用:根据下标删除一个菜单项

名称类型说明
输入参数---
返回值---

insertItem (index, item)

作用:根据下标插入一个菜单项

名称类型说明
输入参数indexnumber插入位置的下标
item菜单项
返回值---

getItemNodesByProps (val, props)

作用:根据属性获取菜单项/菜单子项

名称类型说明
输入参数valString属性值
propsString属性名
返回值NodesList[Node]查找到的节点列表: [{ node: 找到的节点 index: 找到的节点Index parent: 该节点的父节点 }]

示例:

this.on(AUGMENTEDDATASET_ON_TOOLBAR_INIT, async (ToolbarImpl) => {

// 查找到缓存菜单项

let settings = ToolbarImpl.getItemNodesByProps('cache', 'action')[0]

let item = {

type: 'icon',

action: 'TESTA',

name: 'name',

icon: 'sx-icon-preview',

title: 'no',

handler: (button, action) => {

console.log("TESTA")

}

}

// 加一个子项

settings.node.children.push(item)

})

img

destroy()

作用:销毁

名称类型说明
输入参数---
返回值---

getButtons

作用获取按钮的配置信息

名称类型说明
输入参数getButtons获取按钮的配置信息
返回值

setButtons

名称类型说明
输入参数setButtonsjson对象设置按钮的配置信息
返回值-

内置菜单项

暂时无法在文档外展示此内容

IViewEntry

hideMenus

作用:隐藏菜单项

名称类型说明
输入参数idsArray菜单项的id数组,说明如下: TIME_TABLE、ETL_VIEW、PROC_VIEW、JS_VIEW、JAVA_VIEW、COMBINEDQUERY_VIEW、SQL_VIEW、EXCEL_VIEW、BASIC_TABLE,分别代表:生成日期表、ETL高级查询、存储过程查询、脚本查询、Java查询、即席查询、SQL查询、导入文件、数据源表
返回值-

IDatasetView

getFields()

名称类型说明
输入参数---
返回值fieldsArray当前私有查询字段数组

getFieldOriginIdByField(field)

名称类型说明
输入参数fieldField要获取originId的 字段
返回值originIdString / null字段的originId,若获取不成功会返回null

setFieldMasingRule(field, maskingRuleObject)

名称类型说明
输入参数fieldField要设置脱敏的字段(从getFields结果中取)
输入参数maskingRuleObjectObject由定制取得需要设置的脱敏规则信息后设置 脱敏规则对象,用于设置字段的maskingRule, maskingRuleId, maskingRuleAlias 覆盖设置,需保证不会影响已设置的,即先获取原来的(Field中有)再在原来的后面添加 { maskingRule: "id1,id2", maskingRuleId: ["id1", "id2"], maskingRuleAlias: "alias1, alias2" } maskingRule:字段当前所有脱敏id 以,分割生成的字符串 maskingRuleId:字段当前所有脱敏id数组 maskingRuleAlias: 字段当前所有脱敏别名 以,分割生成的字符串

实例代码:

this.on(AUGMENTEDDATASET_ON_VIEW_ADDED, (iDatasetView) => {

let fields = iDatasetView.getFields()

let field = fields[2]

iDatasetView.setFieldMaskingRule(field , {

maskingRule: "I8a8aa02b018b1d461d46bb6b018b1d76bac70044",

maskingRuleId: ["I8a8aa02b018b1d461d46bb6b018b1d76bac70044"],

maskingRuleAlias: "1"

})

iDatasetView.destroy()

})


IMaskingRuleSelect

getField()

名称类型说明
输入参数---
返回值fieldObject包含当前打开字段信息的对象

setDisableNodeList(nodeList)

名称类型说明
输入参数nodeListArray由定制取得需要设置的脱敏规则信息后设置,按理说和上面设置时的ID是一样的 要禁用的节点ID脱敏规则ID)列表
返回值

示例代码:

this.on(AUGMENTEDDATASET_ON_MASK_RULE_SELECT_OPEN, (iMaskingRuleSelect) => {

let field = iMaskingRuleSelect.getField()

// field用于不同字段强制设置不同默认脱敏时判断字段

// 也可以实现判断当前字段有哪些脱敏,已有需要设置的,则禁用, 否则不禁用

iMaskingRuleSelect.setDisableNodeList(["I8a8aa02b018b1d461d46bb6b018b1d76bac70044"])

iMaskingRuleSelect.destroy()

})

IAugmentDatasetView

getAugmentDatasetView()

名称类型说明
输入参数---
返回值AugmentDatasetViewobject返回AugmentDatasetView Vue示例,不建议直接使用

getAction() 获取打开模型的操作类型

名称类型说明
输入参数---
返回值Action'EDIT' /'CREATE'新建还是编辑数据模型

setLoading(loading) 设置Loading状态

名称类型说明
输入参数loadingBoolean设置Loading状态
返回值--

getViews() 获取模型所有私有查询定义

名称类型说明
输入参数---
返回值viewsArray模型私有查询数据。可根据Viewdefine.type判断私有查询类型 如 数据源表为 ‘BASIC_TABLE’

getFields()

名称类型说明
输入参数---
返回值fieldsArray模型所有字段数组

getFieldsByView()

名称类型说明
输入参数viewviewDefine要获取字段的私有查询
返回值fieldsArray模型所有字段数组

getFieldOriginIdByField(field, view) 目前view只能为‘数据源表’

用法参见 AUGMENTEDDATASET_ON_VIEW_ADD章节的同名方法

名称类型说明
输入参数fieldField要获取originId的 字段
viewviewDefine当前field所属view
返回值originIdString / null字段的originId,若获取不成功会返回null

setFieldMasingRule(field, maskingRuleObject)

用法参见 AUGMENTEDDATASET_ON_VIEW_ADD章节的同名方法

名称类型说明
输入参数fieldField要设置脱敏的字段(从getFields结果中取)
输入参数maskingRuleObjectObject由定制取得需要设置的脱敏规则信息后设置 脱敏规则对象,用于设置字段的maskingRule, maskingRuleId, maskingRuleAlias 覆盖设置,需保证不会影响已设置的,即先获取原来的(Field中有)再在原来的后面添加 { maskingRule: "id1,id2", maskingRuleId: ["id1", "id2"], maskingRuleAlias: "alias1, alias2" } maskingRule:字段当前所有脱敏id 以,分割生成的字符串 maskingRuleId:字段当前所有脱敏id数组 maskingRuleAlias: 字段当前所有脱敏别名 以,分割生成的字符串

createViewEditor (viewType)

创建私有查询编辑器

名称类型说明
输入参数viewTypeString要创建的查询类型,输入错误会抛异常,可选值: 'BASIC_TABLE', 'EXCEL_VIEW', 'SQL_VIEW', 'COMBINEDQUERY_VIEW', 'JAVA_VIEW', 'JS_VIEW', 'PROC_VIEW', 'ETL_VIEW', 'TIME_TABLE'
返回值

createViewEditorWithDataSource (viewType, datasourceId)

创建私有查询编辑器并设置数据源

名称类型说明
输入参数viewTypeString要创建查询类型,输入错误会抛异常,目前仅支持SQL_VIEW 可选值: 'SQL_VIEW',
datasourceIdString数据源ID
返回值

示例代码:

this.on(AUGMENTEDDATASET_ON_DATASET_INIT, (IAugmentDatasetView) => {

let action = IAugmentDatasetView.getAction()

if (action === 'CREATE') {

IAugmentDatasetView.createViewEditorWithDataSource('SQL_VIEW', 'DS.FoodmartCN')

}

})

editorView(view)

编辑私有查询

名称类型说明
输入参数viewString要编辑的私有查询定义,通过上面的getViews获取,view.type 为私有查询类型。若私有查询不支持编辑,则抛出异常。
返回值

示例代码:

this.on(AUGMENTEDDATASET_ON_DATASET_INIT, (IAugmentDatasetView) => {

let action = IAugmentDatasetView.getAction()

if (action === 'EDIT') {
let view = IAugmentDatasetView.getViews()[0]

IAugmentDatasetView.editorView(view)

}

})
  • 无标签