...
代码块 |
---|
importPackage(Packages.java.net)
importPackage(Packages.java.util)
importPackage(Packages.smartbi.util)
var returnDesc = [{
id: 'userId', //字段ID
name: 'userId', //字段名称
alias: '用户编号', //字段别名
desc: '用户编号', //字段描述
valueType: 'INTEGER' //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME
}, {
id: 'id', //字段ID
name: 'id', //字段名称
alias: '编号', //字段别名
desc: '编号', //字段描述
valueType: 'INTEGER' //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME
}, {
id: 'title', //字段ID
name: 'title', //字段名称
alias: '标题', //字段别名
desc: '标题', //字段描述
valueType: 'STRING' //字段数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME
}]
/**
服务器先调用init初始化,获取参数与输出字段
返回参数与输出字段的声明对象
*/
function init() {
return {
//参数列表
params: [{
id: 'PostId', //参数ID
name: 'PostId', //参数名称
alias: '帖子编号', //参数别名
desc: '帖子编号', //参数描述
nullable: true, //参数是否允许是空
valueType: 'STRING' //参数数据类型:INTEGER | DOUBLE | LONG | STRING | DATETIME
}],
//输出字段
fields: returnDesc
};
}
/**
获取数据,以二维数组返回。每个元素包含value属性
也可以返回smartbi.freequery.querydata.GridData对象
@param paramValues 参数值
@param from 开始行
@param count 返回的行数
@result 返回数据
*/
function getGridData(paramValues, from, count) {
//通过 paramValues.get("参数ID") 获取参数值对象(包含value与displayValue属性)
var val = paramValues.get("PostId");
var url = new URL('https://jsonplaceholder.typicode.com/posts/' + val.value)
var conn = url.openConnection();
var json;
try {
json = StringUtil.readFromStream(conn.getInputStream(), "UTF-8");
} finally {
conn.disconnect();
}
// eval动态执行结果,将字符串转成json、数组等类型
json = eval('(' + json + ')');
// 返回结果必须是一个二维数组
var result = []
if (Array.isArray(json)) {
// 如果接口返回是一个数组,那直接赋值给data,如果不是,从json中获取对应数组,赋值给data,如var data = json['data'];
var data = json;
for (var k = 0; k < data.length; k++) {
var row = [];
for (var i = 0; i < returnDesc.length; i++) {
row.push({
value: data[k][returnDesc[i].id],
displayValue: data[k][returnDesc[i].id]
})
}
result.push(row);
}
} else {
var row = [];
for (var i = 0; i < returnDesc.length; i++) {
row.push({
value: json[returnDesc[i].id],
displayValue: json[returnDesc[i].id]
})
}
result.push(row);
}
return result;
}
/**
获取总行数,只在usePaging=true时会被调用,若无法获取总行数则不要定义这个方法
*/
function getRowCount() {
return 1;
}
/**
关闭查询对象
*/
function close() {} |
...