前端SDK工具包
2025-4-10 About 35 min
# 前端SDK工具包
# 数据服务/cboard-common
cboard-common 依赖包含:
- 所有restful请求服务接口
- 数据转换服务
- 工具包
- 部分业务对象BO定义
包含下列模块:
名称 | 说明 |
---|---|
_axios | HTTP 请求单例 |
commonService | 基础服务 |
loginService | 登录认证服务 |
adminService | 用户角色管理服务 |
datasourceService | 数据源管理服务 |
datasetService | 数据集管理服务 |
widgetService | 组件管理服务 |
boardService | 仪表板管理服务 |
dashboardService | 仪表盘服务 |
dataService | 数据处理服务 |
jobService | 任务管理服务 |
metaService | 元数据管理服务 |
folderService | 文件夹管理服务 |
chartConf | 图表配置 |
DateUtil | 日期工具 |
Business Object
名称 | 说明 |
---|---|
Widget | 图表BO |
# CommonService
CommonService 包含一些基础服务方法, 对外主要包含以下两个方法
方法名 | 说明 | 参数 | 返回值 |
---|---|---|---|
getBaseServerUrl() | 获取基础服务器 URL | 无 | String |
setBaseServerUrl(url) | 设置基础服务器 URL | BI服务器地址, 确保Restful服务请求之前设置一次 | 无 |
export declare class CommonService {
getBaseServerUrl()
setBaseServerUrl(url)
}
1
2
3
4
2
3
4
import {commonService} from 'cboard-common';
commonService.setBaseServerUrl('http://localhost:8026/cboard');
1
2
3
2
3
# LoginService
登陆认证服务
export declare class loginService {
isSDK: Boolean
getTokenInfo(key)
getToken()
getUserName()
getUserId()
auth(username, password)
authDigest(username, password)
authByJwtToken(token)
authByShareId(shareId)
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
方法名/属性 | 说明 | 参数 | 返回值 |
---|---|---|---|
isSDK | 属性: 是否为 SDK 模式 | 默认: false, 设置为 true 防止登录失败跳转 BI 登录页面 | boolean |
getTokenInfo(key) | 获取指定 Token 信息 | key - Token 键名 | Token 信息对象 |
getToken() | 获取当前 Token | 无 | string(Token 字符串) |
getUserName() | 获取当前用户名 | 无 | string(用户名) |
getUserId() | 获取当前用户 ID | 无 | string(用户ID) |
auth(username, password) | 后端服务请求,进行用户名密码认证 | username - 用户名,password - 密码 | Promise(AuthResult) |
authDigest(username, password) | 进行 MD5 加密密码认证 | username - 用户名,password - 密码 | Promise(AuthResult) |
authByJwtToken(token) | 使用 JWT Token 认证 | token - JWT 令牌 | Promise(AuthResult) |
authByShareId(shareId) | 使用看板分享 ID 认证 | shareId - 分享 ID | Promise(AuthResult) |
import { loginService } from 'cboard-common';
loginService.isSDK = true;
loginService.auth('admin', 'root123').then(res => {
console.log(res)
const {valid, token} = res.data;
if (valid) {
console.log(res)
this.token = token;
}
});
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# AuthResult
public class AuthResult {
boolean valid;
String token;
User user;
String msg;
}
1
2
3
4
5
6
2
3
4
5
6
# WidgetBO
export class Widget {
constructor(args) {
let {name} = args || {};
Object.assign(this, {
name,
data: {
datasetId: null,
datasource: null,
query: {
_sid: randomId(),
},
config: {
chart_type: 'table',
selects: [],
keys: [],
groups: [],
values: [
{series_type: null, name: '', cols: []}
],
filters: [],
option: {},
calColumns: [],// 图表级计算字段
},
expressions: [], // 图表级表达式
filterGroups: [], // 图表级过滤组合
variables: [], // 图表级变量
}
});
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
属性 | 说明 | 后续简称 |
---|---|---|
data | widget的配置数据 | WidgetConfig |
data.config | 多维查询配置/图表配置 | ChartConfig |
import { Widget } from 'cboard-common';
new Widget();
1
2
2
# WidgetConfig
class WidgetConfig {
// 数据源查询配置
datasetId: null;
datasource: null;
query: { _sid: randomId, };
// 多维查询配置/图表配置
config: ChartConfig
// 图表级表达式
expressions: [];
// 图表级过滤组合
filterGroups: [];
// 图表级变量
variables: [];
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# ChartConfig
多维查询配置/图表配置
class ChartConfig {
String chart_type;
List<Dim> keys;
List<Dim> groups;
List<Dim> filters;
List<Value> values;
Object option = new Object();
calColumns: [];// 图表级计算字段
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
// 维度
class Dim {
//String sid; // 在DSL中唯一id
//如果需要使用层级下钻功能,id必须与维度层级下面的维度相对应
String id; // 数据集节点id
String rawDataType; // 原始数据类型
String alias; // 字段别名
@required
String column; // 字段
String dateFormat; // 日期字段格式化, 与Java中日期格式化对应
FilterType type; // 过滤类型 3.1中 <filterType> 类型
List<Object> values; // 比较值 参照3.1 过滤之数组 <filterValues>
String sort = "asc"; // 维度值排序 ['asc', 'desc']
}
// 指标栏
class Value {
String sort = "asc"; // 维度值排序 ['asc', 'desc']
// 双轴图: 'line', 'arealine', 'stackline', 'percentline', 'bar', 'stackbar', 'percentbar';
// 饼图: 'pie', 'coxcomb', 'doughnut'
String series_type;
List<Metric> cols; // 指标列
}
// 与SQL中的聚合函数类似 `aggregate_type(col)`
class Metric {
String sid; // 在DSL中唯一id
String id; // 数据集节点id
String alias; // 数据集节点.a 可以修改为新的名称
AggType aggregate_type; // 汇总类型, 聚合函数
@required
String col; // 数据集节点.column
String f_type; // 过滤类型 枚举 只能选择3.1中 <filterType> 类型
ValueType valueType; // 值显示方式
List<Object> f_values;
@required
String type; // 数据集节点.t
String exp; // 非必须, String, 汇总表达式, measure 的 exp 属性
}
/**
- <filterValues>: 过滤值数组,与<filterType>组合形成过滤条件,数组中多余的值会被忽略,如
- <dateFormat>: String, 日期格式化, 当 字段 为 'date' 类型时,可以对字段进行格式化 Pattern列表:
- yyyy,年,2025
- Q,季度, 1-4
- MM,月,01-12
- dd,日,01-31
**/
enum FilterType {
// 等值与不等值 相当于sql中的`in`与`not in`
'=', '≠'
// 开区间
'≥', '≤',
// 闭区间
'[a,b]', // 相当于sql中的between
'like', 'not like'
}
enum AggType {
sum, min, max, avg, distinct
}
enum ValueType {
value, //原始值
percentByColumn, // 列占比, 行维度方向上计算占比
percentByRow, // 行占比, 列维度方向上计算占比
percentByTotal, // 总占比
row_number, // 序号
cum_cum, // 累加
cum_sum_% // 累加占比
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# DataService
方法名/属性 | 说明 | 返回值 |
---|---|---|
newChartConfig() | 新建组件配置 | 图表组件配置对象 |
linkDataset(args) | 关联数据集更新图表配置 | Promise() |
replaceWgtCfgVariable(widgetConfig) | 替换组件配置变量 | Promise(replacedWgtCfg) |
setEnvVariables(variables, clean) | 设置环境变量 | 无 |
deleteEnvVariables(envArr) | 删除环境变量 | 无 |
getVariables(args) | 获取变量列表 | 变量列表 |
getDimMembers(args) | 获取维度成员 | Promise(维度成员数据) |
getColumnStat(args) | 获取列统计信息 | Promise(统计数据) |
directQuery(datasourceId, query, opt) | 直接查询数据 | Promise(查询结果) |
getDetailData(args) | 获取明细数据 | Promise(明细数据) |
downloadDetailData(args) | 导出明细数据到Excel | Promise() |
queryDefer(chartConfig) | 查询检查配置是否符合图表配置要求 | Boolean |
queryBasicAggData(args) | 查询基本二维聚合数据表格 | Promise(二维聚合数据) |
getDataSeries(args) | 获取多维数据序列 | Promise(数据序列) |
viewQuery(args) | 预览生成的查询脚本 | Promise(String[]) |
getColumns(args) | 获取查询字段 | Promise(字段列表) |
export declare class DataService {
newWidgetConfig()
// @ts-ignore
linkDataset(args)
replaceWgtCfgVariable(widgetConfig)
// 环境变量设置
setEnvVariables(variables: Object, clean: boolean)
getVariables(chartConfig)
// 获取维度成员信息
getDimMembers(args)
getColumnStat(args)
// @ts-ignore
directQuery(datasourceId, query, opt)
queryForList(args)
getDetailData(args)
downloadDetailData(args)
queryDefer(chartConfig)
queryAggData(args)
queryBasicAggData(args)
getDataSeries(widgetConfig)
viewQuery(args)
getColumns(args)
getColumnsByWidgetId(widgetId)
castRawData2Series(aggData, chartConfig, sortCfg)
getAllDimensions(datasetId, datasourceId, query)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# replaceWgtCfgVariable
替换widgetConfig中的keys、groups、values中的环境变量模板
dataService.replaceWgtCfgVariable({
// 省略其他属性
keys: [{
column: 'month',
type: '=',
values: ['${cdt.now(), "yyyy-MM-dd"}']
}]
}).then(res => {
});
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
res = { column: 'month', type: '=', values: ['2025-04-02'] }
1
# setEnvVariables
// 设置环境变量
dataService.setEnvVariables({foo: 'bar', key: 1, dateRange: ['2025-01-01', '2025-04-05']});
1
2
2
# getVariables
/** 获取环境变量
* @param vars 赋值优先级最高变量
* @param objectResult 是否以对象形式返回,默认返回字符串
* @returns {{}|string}
*/
function getVariables(vars, objectResult = false) { }
1
2
3
4
5
6
2
3
4
5
6
// 设置环境变量
dataService.setEnvVariables({foo: 'bar', key: 1, dateRange: ['2025-01-01', '2025-04-05']});
// 返回对象 {foo: 'bar', key: 3, dateRange: ['2025-01-01', '2025-04-05']}
dataService.getVariables({key: 3}, true);
// 返回对象字符串 "{foo: 'bar', key: 2, dateRange: ['2025-01-01', '2025-04-05']}"
dataService.getVariables({key: 2});
1
2
3
4
5
6
2
3
4
5
6
# getDataSeries
dataService.getDataSeries({
widgetConfig: {
datasetId: 1,
// chartConfig
config: {
chart_type: 'table',
keys: [{
column: 'the_year',
}],
groups: [{
column: 'sales_country'
}],
filters: [],
values: [{
cols: [{
aggregate_type: 'sum',
col: 'store_sales',
}]
}],
option: {},
}
}
}).then(seriresData => {
this.jsonData = seriresData;
}).catch(e => {
this.jsonData = e;
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Series 返回数据结构描述
{
"keys": [...],
"groups": [...],
"metrics": [...],
"series": [...],
"data": [...],
"seriesConfig": {...},
"chartConfig": {...},
"pivotModel": {...},
"keyInfos": [...],
"groupInfos": [...],
"aggData": {...},
"drill": {...}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
字段名 | 类型 | 描述 | 示例值/结构 |
---|---|---|---|
keys | 二维数组 | 年份维度数据,每个子数组为行维对应的一行数据 | [[2021],[2022],[2024],[2023],[2020],[2025]] |
groups | 二维数组 | 国家/地区分组,每个子数组列维对应的一列数据 | [["USA"],["Mexico"],["Canada"]...] |
metrics | string[] | 指标名称 | ["store_sales","store_sales",...] |
series | 二维数组 | 系列名称 groups + series | [["USA","store_sales"], ["Mexico","store_sales"], ...] |
data | 二维数组 | 列结构的数据, 每个子数组为一列数据可与series对应 | [[123,132,...], [771,827,...], ...] |
keyInfos | 二维数组 | keys的对象数组 | [[{"col":"the_year","value":2021}], ...] |
groupInfos | 二维数组 | groups的对象数组 | [[{"col":"sales_country","value":"USA"}], ...] |
aggData | object | 聚合后的原始数据 | 见下方详细结构 |
seriesConfig | object | 系列配置对象,key为系列名 | 见下方详细结构 |
chartConfig | object | 返回最终图表基础配置, 必要时SDK会对用户传入ChartConfig调整与加工 | |
pivotModel | object | 数据透视表模型(包含与根对象重复的 keys/data/seriesConfig 等字段) | 结构同根对象对应字段 |
# aggData 原始聚合数据
字段名 | 类型 | 描述 | 示例值/结构 |
---|---|---|---|
columnList | Object[] | 字段描述数组对象 | |
data | 二维数组 | 行结构二维数组 | [[ "Canada", "F", 2021, 60237.11 ],...] |
subData | 子集 | 行列汇总、小计下推数据源时产生 |
# seriesConfig 系列对象
{
[系列名]: {
seriesName: '',
seriesIdx: 0,
data: [], // 系列数据
valueConfig: {}, // 指标配置
groupInfos: [], // 列维信息数组
},
...
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# viewQuery
dataService.viewQuery({
widgetConfig
}).then(res => {
// res为查询脚本数组
// ['sql1', 'sql2']
})
1
2
3
4
5
6
2
3
4
5
6
# getDetailData
dataService.getDetailData({
widgetConfig,
resultLimit, // 查询结果集大小限制,默认: 2000
}).then(res => {
}).catch(e => {
// 异常处理
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
res 返回数据结构
{
data: {
columnList: [{}, ...], // 字段对象
data: [["United States of America", "F", 2021, "#NULL"], ...], // 二维数据
count: 55264, // 总记录数
detail: true,
},
chartConfig: {...},
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# getDimMembers
维度成员查询
dataService.getDimMembers({
datasetId: 1,
dimCfg: { column: 'sales_country' }, // dimCfg可以是对象或者字段字符串
// dimCfg:'sales_country',
keywords: 'a' // 关键词限定,模糊查询值中包含字母a的成员
}).then(res => {
// 返回 [{value: 'Canada'}, {value: 'Mexico'}]
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 其他字段限定/级联限定
查询 'sales_country' 下面 'sales_region' 成员
dataService.getDimMembers({
datasetId: 1,
dimCfg: { column: 'sales_region' }, // dimCfg可以是对象或者字段字符串
chartConfig: {
keys: [{
id: '8clz4jnwc',
column: 'sales_country',
type: '=',
values: ['Canada']
}],
}
}).then(res => {
// 当前返回值为Ajax原始的Response对象,后续版本迭代可能会做解构操作
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# getColumnStat
获取指标字段的最小值、最大值、平均值、记录数信息
dataService.getColumnStat({
datasetId: 1,
dimCfg: { column: 'store_sales' }, // dimCfg可以是对象或者字段字符串
}).then(res => {
this.jsonData = res.data;
})
1
2
3
4
5
6
2
3
4
5
6
返回
{
"min": 0.5,
"max": 49.99,
"avg": 8.31538858,
"count": 55265
}
1
2
3
4
5
6
2
3
4
5
6
# directQuery
位置参数 | 参数类型 | 说明 | 样例 |
---|---|---|---|
datasourceId | Long | 数据源ID | 1 |
query | String | 查询脚本 | 查询对象需要与数据源匹配 |
opt | Object | 其他参数 | { resultLimit = 2000, variables } |
dataService.directQuery(1,
'select * from department',
{
resultLimit: 5,
variables: {foo: 'bar'}, // 环境变量
}
).then(res => {
res.data;
});
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
{
"data": [
[ 1, "HQ General Management" ],
[ 2, "HQ Information Systems" ],
...
],
"columns": [
{
"columnName": "DEPARTMENT_ID",
"remarks": null,
"dataType": null,
"typeCategory": null,
"innerTypeName": null,
"type": "INT",
"ordinalPosition": null
},
{
"columnName": "DEPARTMENT_DESCRIPTION",
"remarks": null,
"dataType": null,
"typeCategory": null,
"innerTypeName": null,
"type": "STRING",
"ordinalPosition": null
}
],
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# AdminService
方法名/属性 | 说明 | 参数 | 返回值 |
---|---|---|---|
changePwd(user) | 修改用户密码 | user: object | Promise(ServiceStatus) |
getUserDetails() | 获取用户详情 | 无 | Promise(用户详情对象) |
getUserList() | 获取用户列表 | 无 | Promise(用户列表) |
getUserRoleList() | 获取用户角色列表 | 无 | Promise(角色列表) |
getRoleList() | 获取角色列表 | 无 | Promise(角色列表) |
getRoleResList() | 获取角色资源列表 | 无 | Promise(资源列表) |
grantUserRoles(userIds, roleIds) | 授予用户角色 | userIds: string[], roleIds: string[] | Promise(ServiceStatus) |
revokeRoleOfUser(userIds, roleIds) | 撤销用户角色 | userIds: string[], roleIds: string[] | Promise(ServiceStatus) |
shareResources(roleIds, resIds) | 共享资源 | roleIds: string[], resIds: string[] | Promise(ServiceStatus) |
updateRoleRes(roleIds, resIds) | 更新角色资源 | roleIds: string[], resIds: string[] | Promise(ServiceStatus) |
isAdmin() | 当前用户是否为Admin | 无 | Promise(boolean) |
newUser(user) | 新建用户 | user | Promise(ServiceStatus) |
updateUser(user) | 更新用户 | user | Promise(ServiceStatus) |
deleteUser(userId) | 删除用户 | userId | Promise(ServiceStatus) |
handoverAcl(srcUserId, toUserId) | 权限交接 | srcUserId, toUserId | Promise(JSONObject) |
export declare class AdminService {
changePwd(user)
getUserDetails()
getUserList()
getUserRoleList()
getRoleList()
getRoleResList()
grantUserRoles(userIds, roleIds)
revokeRoleOfUser(userIds, roleIds)
shareResources(roleIds, resIds)
updateRoleRes(roleIds, resIds)
grantRoleRes(roleIds, resources)
revokeRoleRes(roleIds, resources)
updateUserRes(userIds, resIds)
grantUserRes(userIds, resIds)
revokeUserRes(userIds, resIds)
getAllUserResList()
newUser(user)
updateUser(user)
deleteUser(userId)
newRole(role)
updateRole(role)
deleteRole(roleId)
isAdmin()
getJobList()
handoverAcl(srcUserId, toUserId)
getResUserList(resType, resId)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# DatasourceService
数据源相关API
specFolderId 选填参数,获取指定目录下面的资源
方法名/属性 | 说明 | 返回值 |
---|---|---|
getById(id) | 获取数据源 | Promise(数据源对象) |
getDatasourceList(lite, specFolderId?) | 获取数据源列表 | Promise(数据源列表) |
getDatasourceTreeData(specFolderId?) | 获取数据源树形数据 | Promise(树形数据) |
new(datasource) | 新建数据源 | Promise(ServiceStatus) |
update(datasource) | 更新数据源 | Promise(ServiceStatus) |
delete(id) | 删除数据源 | Promise(ServiceStatus) |
getDatasourceParams(dpType) | 获取数据源连接参数 | Promise(Object) |
getQueryParams(sourceType, pageType) | 获取数据源查询参数 | Promise(Object) |
listDatabases(datasourceId) | 获取数据库列表 | Promise(数据库列表) |
listSchemas(datasourceId, databaseName) | 获取数据库模式列表 | Promise(模式列表) |
listTables(datasourceId, databaseName, schemaName) | 获取数据表列表 | Promise(数据表列表) |
listColumns(datasourceId, databaseName, schemaName, tableName) | 获取数据表字段列表 | Promise(字段列表) |
export declare class DatasourceService {
getById(id)
getDatasourceList(lite = true, specFolderId?)
getDatasourceTreeData(specFolderId?)
new(datasource)
update(datasource)
delete(id)
getDatasourceParams(dpType)
getQueryParams(sourceType, pageType)
testQuery(datasource, queryObj)
listDatabases(datasourceId)
listSchemas(datasourceId, databaseName)
listTables(datasourceId, databaseName, schemaName)
listColumns(datasourceId, databaseName, schemaName, tableName)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# DatasetService
数据集相关API
specFolderId 选填参数,获取指定目录下面的资源
方法名/属性 | 说明 | 参数 | 返回值 |
---|---|---|---|
getById(datasetId) | 获取数据集 | datasetId: string | Promise(数据集对象) |
getByIds(ids) | 批量获取数据集 | ids: string[] | Promise(数据集列表) |
getDatasetList(specFolderId?) | 获取数据集列表 | specFolderId?: string | Promise(数据集列表) |
new(dataset) | 新建数据集 | dataset: object | Promise(ServiceStatus) |
update(dataset) | 更新数据集 | dataset: object | Promise(ServiceStatus) |
delete(datasetId) | 删除数据集 | datasetId: string | Promise(ServiceStatus) |
export declare class DatasetService {
getById(datasetId)
getByIds(ids)
getDatasetList(specFolderId?)
getDatasetTreeData(specFolderId?)
getDatasetListByDsr(datasourceId)
new(dataset)
update(dataset)
delete(datasetId)
getDimByIdFromDataset(nodeId, dataset)
testTemplateRuleMatch(input, regex)
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# WidgetService
图表资源相关API
specFolderId 选填参数,获取指定目录下面的资源
方法名/属性 | 说明 | 参数 | 返回值 |
---|---|---|---|
getById(widgetId) | 获取组件 | widgetId: string | Promise(组件对象) |
getWidgetList(specFolderId?) | 获取组件列表 | specFolderId?: string | Promise(组件列表) |
getWidgetListByDsr(datasourceId) | 按数据源ID获取图表组件 | datasourceId: string | Promise(组件列表) |
new(widget) | 新建组件 | widget: object | Promise(ServiceStatus) |
update(widget) | 更新组件 | widget: object | Promise(ServiceStatus) |
delete(widgetId) | 删除组件 | widgetId: string | Promise(ServiceStatus) |
export declare class WidgetService {
getById(widgetId)
getWidgetList(specFolderId?)
getWidgetListByDsr(datasourceId)
getWidgetListByDst(datasetId)
getWidgetTreeData(datasetList, datasourceList, specFolderId?)
new(widget)
update(widget)
delete(widgetId)
checkWidget(widgetId)
compileChartConfig(chartConfig)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# BoardService
方法名/属性 | 说明 | 参数 | 返回值 |
---|---|---|---|
getBoardData(boardId) | 获取看板数据 | boardId: string | Promise(看板数据对象) |
getBoardList(specFolderId) | 获取看板列表 | specFolderId: string | Promise(看板列表) |
getBoardTreeData(layoutType, specFolderId) | 获取看板树形结构数据 | layoutType: string, specFolderId: string | Promise(树形结构数据) |
new(board) | 新建看板 | board: object | Promise(ServiceStatus) |
update(board) | 更新看板 | board: object | Promise(ServiceStatus) |
delete(boardId) | 删除看板 | boardId: string | Promise(ServiceStatus) |
cacheParams(boardId, filters) | 缓存看板参数 | boardId: string, filters: object | |
getCachedParams(key) | 获取缓存参数 | key: string | 参数对象 |
export declare class BoardService {
getBoardData(boardId)
getBoardList(specFolderId)
getBoardTreeData(layoutType, specFolderId)
getBoardNestLoopTreeData2(layoutType, specFolderId)
new(board)
update(board)
delete(boardId)
cacheParams(boardId, filters)
getCachedParams(key)
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 图表服务/chart-services
图表服务库,渲染dom为图表
# drawChart
import { chartService } from 'chart-services'
this.drawChart(containerDom, widgetConfig, options = {}) { ... }
1
2
3
2
3
this.chartDom = this.$el.querySelector('.view-div');
try {
chartService.drawChart($(this.chartDom), {
widgetName: '去年的总销售额',
datasetId: 240820113813950,
config: {
chart_type: 'line',
keys: [
{
column: '订单日期',
dateFormat: 'yyyy',
}
],
groups: [],
filters: [],
values: [{
cols: [
{
sid: 'v1',
// id: 'qjjm6fjtuq',
col: '销售额',
aggregate_type: 'sum'
}
]
}],
option: {
title: {
show: true,
},
drillConfig: {
allow: true,
freeMode: true,
},
devTool: {
beforeRender(option) {
console.log(JSON.stringify(option));
_.merge(option, {
title: {
text: '名称改变',
},
})
},
}
}
}
}).then(response => {
let {
//updater,
render
} = response;
this.render = render;
})
} catch (e) {
console.log(e)
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55