// 防抖
export function _debounce(fn, delay) {
  var delay = delay || 200;
  var timer;
  // console.log(fn)
  return function() {
    var that = this;
    var args = arguments;
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(function() {
      timer = null;
      fn.apply(that, args);
    }, delay);
  };
}
// 节流
export function _throttle(fn, interval) {
  var last;
  var timer;
  var interval = interval || 200;
  return function() {
    var that = this;
    var args = arguments;
    var now = +new Date();
    if (last && now - last < interval) {
      clearTimeout(timer);
      timer = setTimeout(function() {
        last = now;
        fn.apply(that, args);
      }, interval);
    } else {
      last = now;
      fn.apply(that, args);
    }
  };
}

/**
 * 手机号格式化
 * @param {String} phone
 */
export function formatPhone(phone) {
  phone = phone.toString();
  return phone.substr(0, 3) + '****' + phone.substr(7, 11);
}

/**
 * 时间戳格式化
 */

function formatDig(num) {
  return num > 9 ? '' + num : '0' + num;
}
export function formatDate(time) {
  let now = new Date(time);
  let year = now.getFullYear();
  let month = now.getMonth() + 1;
  let date = now.getDate();
  let hour = now.getHours();
  let minute = now.getMinutes();
  let second = now.getSeconds();
  let data = year + '-' + formatDig(month) + '-' + formatDig(date) + ' ' + formatDig(hour) + ':' + formatDig(minute) + ':' + formatDig(second);
  return data;
}

/**
 *  千位分割
 */
export function formatNum(num) {
  let number = num.toString().split('.'); // 分隔小数点
  let dot = '0.' + (number[1] || 0);
  var reg = /\d{1,3}(?=(\d{3})+$)/g;
  return (
    (number[0] + '').replace(reg, '$&,') +
    '.' +
    Number(dot)
      .toFixed(2)
      .toString()
      .split('.')[1]
  );
}

/**
 * 重复判断
 */
export function isRepeat(arr) {
  let hash = {};
  for (let i in arr) {
    if (hash[arr[i]]) {
      return true;
    }
    hash[arr[i]] = true;
  }
  return false;
}

// json <---> jsonSchema
// 如果传入的是对象，处理对象，返回结果
export function processObject(object, output, nested) {
  let arr = [];
  for (let key in object.properties) {
    let value = object.properties[key]; // 拿到相当于数组的一列数据
    // 如果这一行数据的 type 是 object
    if (value.type == 'object' && Object.keys(value.properties).length) {
      value.children = [];
      value.children = processObject(value);
      arr.push(value);
      continue;
    }
    // 如果这一行数据的 type 是 array
    if (value.type == 'array' && Object.keys(value.items.properties).length) {
      value.children = [];
      value.children = processObject(value.items);
      arr.push(value);
      continue;
    }
    arr.push(value);
  }
  return arr;
}
