export function isEmpty(v) {
    return !notEmpty(v)
}

export function notEmpty(v) {
    let res = v && v != undefined && v != 'undefined' && v != 'null';
    if (typeof v == 'string') {
        res = res && v.trim().length > 0;
    }
    return res;
}

export function dateFormat(fmt, date) {
    let ret;
    const opt = {
        "Y+": date.getFullYear().toString(),        // 年
        "m+": (date.getMonth() + 1).toString(),     // 月
        "d+": date.getDate().toString(),            // 日
        "H+": date.getHours().toString(),           // 时
        "M+": date.getMinutes().toString(),         // 分
        "S+": date.getSeconds().toString()          // 秒
        // 有其他格式化字符需求可以继续添加，必须转化成字符串
    };
    for (let k in opt) {
        ret = new RegExp("(" + k + ")").exec(fmt);
        if (ret) {
            fmt = fmt.replace(ret[1], (ret[1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, "0")))
        }
    }
    return fmt
}

export function formatDate(str, useDefault = false) {
    if (isEmpty(str)) {
        return ''
    }
    const date = new Date(str)
    if (date) {
        const fmt = useDefault ? 'YYYY-mm-dd HH:MM:SS' : 'YYYY-mm-dd HH:MM'
        return dateFormat(fmt, date)
    }
    else {
        return str
    }
}

export function formatYYYYMMDD(date, isStr = false) {
    if (date) {
        if (isStr) {
            return dateFormat('YYYY-mm-dd', new Date(date))
        }
        return dateFormat('YYYY-mm-dd', date)
    }
    return ''
}

export function dataURItoBlob(base64Data) {
    var byteString;

    if (base64Data.split(",")[0].indexOf("base64") >= 0)
      byteString = atob(base64Data.split(",")[1]);
    else byteString = unescape(base64Data.split(",")[1]);

    var mimeString = base64Data
      .split(",")[0]
      .split(":")[1]
      .split(";")[0];

    var ia = new Uint8Array(byteString.length);

    for (var i = 0; i < byteString.length; i++) {
      ia[i] = byteString.charCodeAt(i);
    }

    return new Blob([ia], {
      type: mimeString,
    });
}

export function isMobile(str) {
    if (notEmpty(str)) {
        return /^1\d{10}$/.test(str);
    }
    return false;
}

export function isCreditCode(str) {
    if (notEmpty(str)) {
        return /^[a-zA-Z0-9]{18}$/.test(str);
    }
    return false;
}

export function isSpecialSimple(data) {
    // data.job_type == 'SPECIAL' && 
    return data.check_type == 'EASY';
}

function formatNumber(arr, num) {
    const v = parseInt(num);
    if (num > 9) {
        arr.push(`${v}`);
    }
    else {
        arr.push(`0${v}`);
    }
}

export function formatDistanceDate(start, end) {
    if (start && end) {
        let dis = (end - start) / 1000;
        let h = dis / 3600;
        let arr = [];
        if (h > 0) {
            formatNumber(arr, h);
            dis = dis % 3600;
        }
        let m = dis / 60;
        formatNumber(arr, m);
        dis = dis % 60;
        formatNumber(arr, dis);
        return arr.join(':');
    }
    return null
}