import React from "react";
import PropTypes from "prop-types";
import numeral from "numeral";

const TruncatedNumber = ({
  absoluteValue,
  children,
  roundDecimals,
  shorterOption,
  showPercentSign,
}) => {
  let number = children;

  if (number === "-") {
    return <span>-</span>;
  }

  if (number < 0 && absoluteValue) {
    number *= -1;
  }

  let formattedNumber = number;

  if (roundDecimals) {
    formattedNumber = numeral(number).format("0");
  } else if (showPercentSign && number % 1 == 0) {
    formattedNumber = numeral(number).format("0");
  } else if (showPercentSign) {
    formattedNumber = numeral(number).format("0.00");
  } else if (number > 1000000) {
    formattedNumber = numeral(number).format("0.[00]a");
  } else if (shorterOption && number >= 100000) {
    formattedNumber = numeral(number).format("0a");
  } else if (number < 10 && number > 0 && showPercentSign) {
    formattedNumber = numeral(number).format("0.0");
  } else if (number < 1 && number > 0) {
    formattedNumber = numeral(number).format("0,0.0");
  } else {
    formattedNumber = numeral(number).format("0,0");
  }

  return (
    <span>
      {formattedNumber}
      {showPercentSign && "%"}
    </span>
  );
};

TruncatedNumber.defaultProps = {
  roundDecimals: false,
  absoluteValue: false,
  shorterOption: false,
  children: 0,
  showPercentSign: false,
};

TruncatedNumber.propTypes = {
  absoluteValue: PropTypes.bool,
  children: PropTypes.node,
  roundDecimals: PropTypes.bool,
  shorterOption: PropTypes.bool,
  showPercentSign: PropTypes.bool,
};

export default TruncatedNumber;
