/**
 * 自定义上报，可自定义上报通道和公共参数
 * @param {Object} options
 *  type: pv, click, appear 上报类型通道
 *  spm_info: 非必传 若传了，则以此段为准，不再取spm_id和c/d/e各段参数
 *  spm_id: 非必传 取meta中spmid
 *  c: c段 非必传 默认 0
 *  d: d段 非必传 默认 0
 *  e: e段 非必传
 * @param {Object} info
 */
function allCustomReport(options, info) {
  if (!options) options = {};
  if (!info) info = {};

  if (!options.type) {
    throw new Error('Report need type!');
  }

  var spmId = '';

  if (options.spm_info && (options.spm_info.match(/\./g) || []).length >= 3) {
    spmId = options.spm_info;
  } else {
    var meta = document.getElementsByTagName('meta');
    var spmIdAB = options.spm_id || meta && meta.spm_prefix && meta.spm_prefix.content || '0.0';
    var spmidC = options.c || '0';
    var spmidD = options.d || '0';
    var spmidE = options.e;
    spmId = spmidE ? "".concat(spmIdAB, ".").concat(spmidC, ".").concat(spmidD, ".").concat(spmidE) : "".concat(spmIdAB, ".").concat(spmidC, ".").concat(spmidD);
  }

  var rptInfo = Object.assign({}, info);
  rptInfo.spm_id = spmId;

  if (window.reportObserver && window.reportObserver.reportCustomData) {
    window.reportObserver.reportCustomData(options.type, rptInfo);
  }
}

export default allCustomReport;
