/**
* 报表公式,常用函数
* @author cls
* @date 2021-01-19
*/
// 获取转换数值值
export function getNumberVal(val) {
if (typeof val == "number") {
return val;
} else if (typeof val == "string") {
return val.indexOf(".") == -1 ? parseInt(val) : parseFloat(val);
} else if (typeof val == "boolean") {
return val ? 1 : 0;
}
}
/**
* showdoc
* @catalog JS工具类/FormclaBasic
* @title 求合
* @description 根据传入对象数组,参数列表求合
* @method static
* @url import { sum } from '@birt/funclib/FormclaBasic.js'
* @param number 必选 int|string|array 动态数值参数
* @return number 求合值
* @remark 测试用例
* sum(1,2,3) => 6 或 sum([1,2,3]) => 6
*/
export function sum() {
if (arguments.length == 0) {
console.error("sum函数必须传入相应数值参数 num1,num2,[num3,num4],...");
return;
}
let sumVal = 0;
for (let i = 0, l = arguments.length; i < l; i++) {
let p = arguments[i];
if (Array.isArray(p)) {
p.forEach(pi => {
sumVal += getNumberVal(pi);
})
} else {
sumVal += getNumberVal(p);
}
}
return sumVal;
}