/**
 * 报表公式，常用函数
 * @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;
}

export const FormulaBasics = {
    sum: sum
}
