export function runDataRules()

in src/rule/dataRules.ts [4:52]


export function runDataRules(data: any, config: any) {
  const sourceData = cloneDeep(data);

  if (Array.isArray(sourceData)) {
    const dataList = sourceData?.map((el: any) => el.y || el?.y0 || el?.y1);
    let maxDecimals = 0;
    let minDecimals = 4;

    dataList?.forEach((number: number) => {
      if (number && number?.toString()?.includes('.')) {
        // 将数字转换为字符串,然后查找小数点后的字符长度
        const decimals = number.toString().split('.')[1]
          ? number.toString().split('.')[1].length
          : 0;
        // 更新最大小数位数
        if (decimals > maxDecimals) {
          maxDecimals = decimals;
        }
        if (decimals < minDecimals) {
          minDecimals = decimals;
        }
      }
    });

    // 兜底6位
    if (maxDecimals > 6) {
      maxDecimals = 6;
    }

    if (!config.yAxis?.decimal && !config?.closeDataRules && maxDecimals !== 0) {
      config.decimal = maxDecimals;

      if (!Array.isArray(config.yAxis)) {
        if (config.yAxis) {
          config.yAxis.decimal = maxDecimals;
        } else {
          config.yAxis = {
            decimal: maxDecimals,
          };
        }
      }
    }
  }

  return {
    data,
    config,
  };
}