import * as dateUtil from '@/utils/dateUtil'

/**
 * 时间格式化
 * @param {Number|String} date 传入的时间
 * @param {String} fmt 格式化表达式
 * @param {String} defaultValue 为空时显示内容
 **/
export const dateFormat = (date, fmt = "yyyy-MM-dd HH:mm:ss", defaultValue = '/') => {
    return dateUtil.dateFormat(fmt, date, defaultValue);
}

// getDay() 获取星期
// new Date(timeStamp); 通过时间戳创建日期
// new Date(year, month, date, hours, minutes, second); 通过年月日时分秒创建日期   2020,0,32 => 为2020年2月1日

// 获取00:00格式的时间
export const audioTime = (timestamp) => {
    let second = Math.floor(timestamp % 60);
    let minute = Math.floor(timestamp / 60);
    if (second < 10) {
        second = "0" + second;
    }
    if (minute < 10) {
        minute = "0" + minute;
    }
    return minute + ":" + second;
}

export const parseGender = (gender) => {
    return gender === 1 ? "男" : gender === 2 ? "女" : "未知";
}

export const parseBoolean = (value) => {
    return value ? "是" : "否";
}

/**
 * Number formatting
 * like 10000 => 10k
 * @param {number} num
 * @param {number} digits
 */
export function numberFormatter(num, digits) {
    const si = [
        {value: 1E18, symbol: 'E'},
        {value: 1E15, symbol: 'P'},
        {value: 1E12, symbol: 'T'},
        {value: 1E9, symbol: 'G'},
        {value: 1E6, symbol: 'M'},
        {value: 1E3, symbol: 'k'}
    ]
    for (let i = 0; i < si.length; i++) {
        if (num >= si[i].value) {
            return (num / si[i].value).toFixed(digits).replace(/\.0+$|(\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol
        }
    }
    return num.toString()
}

/**
 * 10000 => "10,000"
 * @param {number} num
 */
export function toThousandFilter(num) {
    return (+num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
}

/**
 * Upper case first char
 * @param {String} string
 */
export function uppercaseFirst(string) {
    return string.charAt(0).toUpperCase() + string.slice(1)
}


/**
 * filters 使用
 *   <!-- 在双花括号中 -->
 *   {{ message | filter }}
 *
 *   <!-- 在 `v-bind` 中 -->
 *   <div v-bind:id="rawId | filter"></div>
 *
 *   <!-- 过滤器可以串联  -->
 *   {{ message | filterA | filterB }}
 *
 *   <!-- 过滤器传参  -->
 *   {{ message | filterA('arg1', arg2) }}
 */

// 组件内部定义局部过滤器
// filters: {
//     capitalize: function (value) {
//         if (!value) return ''
//         value = value.toString()
//         return value.charAt(0).toUpperCase() + value.slice(1)
//     }
// }
