/**
 * 根据数值排名自动分配颜色
 * @param {Array} data - 包含 name 和 value 的对象数组
 * @returns {Array} - 添加了 color 属性的新数组
 */
export const assignColorsByRank = (data: any) => {
  // 复制原数组避免修改
  const sortedData = [...data].sort((a, b) => b.value - a.value);
  const totalCount = sortedData.length;

  // 计算各区间边界（向上取整确保覆盖所有数据）
  const top20Percent = Math.ceil(totalCount * 0.2);
  const middle60Percent = Math.ceil(totalCount * 0.8);

  return sortedData.map((item, index) => {
    // 处理 value 为 0 的特殊情况
    if (item.value === 0) {
      return {
        ...item,
        itemStyle: {
          color: "#4D96FA",
          opacity: 0.5,
        },
      }; // 蓝色
    }

    // 根据排名分配颜色
    if (index < top20Percent) {
      return {
        ...item,
        itemStyle: {
          color: "#FF0000",
          opacity: 0.5,
        },
      }; // 红色 - 前20%
    } else if (index < middle60Percent) {
      return {
        ...item,
        itemStyle: {
          color: "#FF9800",
          opacity: 0.5,
        },
      }; // 橙色 - 中间60%
    } else {
      return {
        ...item,
        itemStyle: {
          color: "#4CAF50",
          opacity: 0.5,
        },
      }; // 绿色 - 后20%
    }
  });
};
