计算字段¶
计算字段可扩展基本数据项的功能,而无需修改现有数据源。
这通过使用 Javascript 函数实现,这些函数将数据项中的原始值转换为计算字段值。在每个函数中,可以引用多个基本数据项。
语法¶
每个计算字段都是 Javascript 函数。
参数
名称 |
必需/可选 |
数据类型 |
说明 |
---|---|---|---|
行 |
必需 |
对象 |
包含某个数据项的所有数据行 |
行 |
必需 |
对象 |
当前行引用 |
rowIndex |
必需 |
编号 |
当前行的行号。第一行的 rowIndex 为 0。 |
全局 |
必需 |
对象 |
包含对所有页面参数的引用 |
备注
你不必使用 Javascript 函数中的所有参数。在下面的示例中,你将看到最常用的是 row 参数。
返回值
值 |
数据类型 |
说明 |
---|---|---|
值 |
数字/字符串(取决于配置) |
计算值 |
要使用参数或每行的任何单元格,如引用 Javascript 对象一样引用它。
var cell_score = row['score'];
var global_param_time = global.time;
为方便起见,你也可以使用 DTV 内置函数。
DTVFunc.sum(fieldId):返回数据项的所有值的总和
DTVFunc.average(fieldId):返回数据项的所有值的平均值
示例¶
转换时间戳¶
你可以使用计算字段将原始 Unix 时间戳转换为用户可读的值。下面的函数将原始时间戳转换为格式 yyyy/m/dd HH:MM:SS
。
function(rows, row, rowIndex, global){
var timestamp = row['timestamp'];
var date = new Date(timestamp); // Converts the timestamp into a Date object
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var minute = date.getMinutes();
var second = date.getSeconds();
if (isNaN(year)) {
return '';
} else {
return year + '/' + month + '/' + day + ' ' + hour + ':' + minute + ':' + second;
}
}
计算总计¶
DTV 仅支持按列聚合值。要按行聚合值,可以创建计算字段。例如,假设有 3 个数据项,每个数据项提供每种不同车型每年的汽车数量。你可以使用下面的函数返回每年的汽车总数。
function(rows, row, rowIndex, global){
return row['sedan'] + row['suv'] + row['other'];
}
格式值¶
你可以使用计算字段设置基本数据项的格式。例如,电流的值可以为正或负,具体取决于它的方向。但是,大多数时候只需要幅值。下面的函数返回电流的幅值。
function(rows, row, rowIndex, global){
var newCurrent = row['current'];
if (newCurrent < 0) { // If value is negative, convert it to positive
newCurrent *= -1;
}
return newCurrent;
}