import accounting from "accounting";

const setIntervalImmediately = (fn, duration) =>
  setInterval((() => (fn(), fn))(), duration);

function formatImgSrc(srcArr) {
  if (Array.isArray(srcArr) && srcArr.length > 0) {
    return srcArr[0] ?? "";
  }
  return "";
}

const isEmptyValue = (value) => {
    if (value == null) return true

    if (Array.isArray(value) && value.length === 0) return true

    if (typeof value === 'object' && Object.keys(value).length === 0) return true

    return false
}

const formatNumber = (n) => {
    let num = Number(n ?? '')

    // 如果数字大于或等于10,000万，则显示为9999w+
    if (num >= 10000 * 10000) {
        return '9999万+'
    }
    // 如果数字大于或等于1万，则转换为以“万”为单位，不四舍五入，最多保留两位小数
    else if (num >= 10000) {
        let w = Math.floor(num / 10000) // 取整，避免四舍五入
        let remainder = num % 10000

        // 计算小数部分并限制为最多两位
        let decimalPart = ''
        if (remainder > 0) {
            // 将余数转换为两位小数，但不进行四舍五入
            decimalPart = ('.' + Math.floor(remainder / 100)).slice(0, 2)
            // 移除结尾的0，如果有的话
            decimalPart = decimalPart.replace(/\.?0+$/, '')
        }

        return `${w}${decimalPart}万`
    }

    // 对于小于1万的数字直接输出
    else {
        return accounting.formatNumber(num)
    }
}

export { setIntervalImmediately, formatImgSrc, formatNumber, isEmptyValue };
