function formatNumber()

in frontend/src/services/TickFormatter.ts [64:116]


function formatNumber(
  num: number,
  largestTick: number,
  significantDigitLabels: boolean,
  columnMetadata?: ColumnMetadata,
  percentage?: string,
  currency?: string
): string {
  if (isNaN(num)) {
    return "";
  }

  if (columnMetadata && columnMetadata.numberType === NumberDataType.Currency) {
    currency = columnMetadata.currencyType;
  }

  if (
    columnMetadata &&
    columnMetadata.numberType === NumberDataType.Percentage
  ) {
    percentage = NumberDataType.Percentage;
  }

  let formattedNum = formatSignificantDigits(
    num,
    largestTick,
    significantDigitLabels
  );

  if (!percentage && !currency) {
    if (formattedNum !== num.toLocaleString()) {
      return formattedNum;
    } else {
      return num.toLocaleString();
    }
  }

  if (percentage === NumberDataType.Percentage) {
    return formattedNum + `%`;
  }

  if (currency) {
    if (currency === CurrencyDataType["Dollar $"] || currency === "$") {
      return `$` + formattedNum;
    } else if (currency === CurrencyDataType["Euro €"] || currency === "€") {
      return `€` + formattedNum;
    } else if (currency === CurrencyDataType["Pound £"] || currency === "£") {
      return `£` + formattedNum;
    }
  }

  return num.toLocaleString();
}