// 格式化比特率
export function FormatBitrate(bitsPerSecond: number) {
  if (bitsPerSecond >= 1_000_000) {
    // 大于等于1,000,000 bps时，用 Mbps 表示
    return (bitsPerSecond / 1_000_000).toFixed(2) + ' Mbps';
  } else if (bitsPerSecond >= 1_000) {
    // 大于等于1,000 bps时，用 Kbps 表示
    return (bitsPerSecond / 1_000).toFixed(2) + ' Kbps';
  } else {
    // 小于1,000 bps时，用 bps 表示
    return bitsPerSecond + ' bps';
  }
}

// 将bit 转 Mbps
export function ConvertBitsToMbps(bits: number) {
  return Math.round((bits / 1_000_000) * 100) / 100;
}

//将 bit 转成 GB
export function ConvertBitsToGB(bits: number) {
  const GB = bits / (1024 * 1024 * 1024);
  const data = Number(GB.toFixed(1));
  return data;
}

/**
 * 根据1024的倍数，返回对应的单位 FormatFileSize
 * @param sizeInBytes number 文件大小默认是byte
 */
export function FormatFileSize(sizeInBytes: number, isSlice = false) {
  const units = ['B', 'KB', 'MB', 'GB', 'TB'];
  let size = sizeInBytes;
  let unitIndex = 0;

  while (size >= 1024 && unitIndex < units.length - 1) {
    size /= 1024;
    unitIndex++;
  }
  return { size: size.toFixed(2), unit: units[unitIndex] };
}

export function FormatFileSizeToString(sizeInBytes: number, isSlice = false) {
  const units = ['B', 'KB', 'MB', 'GB', 'TB'];
  let size = sizeInBytes;
  let unitIndex = 0;

  while (size >= 1024 && unitIndex < units.length - 1) {
    size /= 1024;
    unitIndex++;
  }
  return `${size.toFixed(2)} ${units[unitIndex]}`;
}

/**
 * 计算使用百分比
 * @param used 已使用量
 * @param total 总量
 * @param fixed 保留小数位，默认 1
 * @returns number 百分比 (0 ~ 100)
 */
export function GetUsagePercent(used: number, total: number, fixed: number = 1): number {
  if (total <= 0) return 0;
  const percent = (used / total) * 100;
  return Number(percent.toFixed(fixed));
}

