import { val } from "../methods/methods";

/** 雷达图 */
export class Radar {
  /**
   * 获取雷达图数据
   * @param name 名称
   * @param indicatorName 指示器名称
   * @param max 指示器最大值
   * @param range 数据范围
   * @returns obj
   */
  static getRadarData(name: string[], indicatorName: string[], max: number[], range?: number[]) {
    const obj = {
      indicator: [] as any[],
      data: [] as any[],
    };
    const r = range ? range : [10, 100];
    let n: number[] = [];

    // series
    name.forEach((e) => {
      n = [];
      indicatorName.forEach(() => {
        n.push(Math.round(Math.random() * (r[1] - r[0]) + r[0]));
      });
      obj.data.push({
        value: n,
        name: e,
      });
    });

    // indicator
    indicatorName.forEach((e, index) => {
      obj.indicator.push({
        name: e,
        max: max[index] ? max[index] : max[0],
      });
    });

    return obj;
  }
  /**
   * 雷达图0
   * @param obj 数据
   * @param colorArr 颜色组
   * @param areaColor 区域颜色
   * @returns option
   */
  static radar0(obj: any, colorArr?: any, areaColor?: any) {
    const _colorArr = colorArr ? colorArr : val("colorData");
    const _areaColor = areaColor ? areaColor : val("colorData")[0];
    const option = {
      backgroundColor: val("backgroundColor"),
      color: _colorArr,
      grid: val("grid"),
      tooltip: {
        trigger: "axis",
      },
      radar: {
        indicator: obj.indicator,
      },
      series: [
        {
          type: "radar",
          areaStyle: {
            color: _areaColor,
          },
          data: obj.data,
        },
      ],
    };
    return option;
  }
  /**
   * 雷达图1
   * @param obj 数据
   * @param areaColor 区域颜色
   * @param shadowColor 阴影颜色
   * @returns option
   */
  static radar1(obj: any, areaColor?: any, shadowColor?: any) {
    const _areaColor = areaColor ? areaColor : val("colorData")[0];
    const shadow_color = shadowColor ? shadowColor : val("colorData")[1];
    const option: any = {
      backgroundColor: val("backgroundColor"),
      grid: val("grid"),
      tooltip: {
        trigger: "axis",
      },
      radar: {
        indicator: obj.indicator,
      },
      series: [
        {
          type: "radar",
          areaStyle: {
            shadowOffsetX: 10,
            color: _areaColor,
            shadowColor: shadow_color,
          },
          lineStyle: {
            width: 0,
          },
          itemStyle: {
            opacity: 0,
          },
          tooltip: {
            trigger: "item",
          },
          data: obj.data,
        },
      ],
    };
    return option;
  }
}
