axis calc full

by alexbfree

JavaScript

function calculate_interval_size(top) {
  top = Math.abs(top);
  if (top>=5000) {
    return 500;
  } else if (top >= 1000) {
    return 500;
  } else if (top > 500) {
    return 100;
  } else if (top >=100) {
    return 50;
  } else if (top >50) {
    return 10;
  } else if (top >=10) {
    return 5;
  } else if (top >5) {
    return 1;
  } else if (top >=1) {
    return 0.5;
  } else if (top >0) {
    return 0.1;
  } else {
    return 0; // meaningless
  }
}


function calculate_axis_limit(top) {
  let sign = (top<0) ? -1: 1;
  top = Math.abs(top);
  if (top>=5000) {
    return 10000 * sign;
  } else if (top >= 1000) {
    let possible_ends = [2000,3000,4000,5000]; // take the smallest of these that exceeds top.
    let valid_ends = possible_ends.filter(end => end>=top);
    return valid_ends[0] * sign;
  } else if (top >500) {
    return 1000 * sign;
  } else if (top >=100) {
    let possible_ends = [200,300,400,500]; // take the smallest of these that exceeds top.
    let valid_ends = possible_ends.filter(end => end>=top);
    return valid_ends[0] * sign;
  } else if (top >50) {
    return 100 * sign;
  } else if (top >=10) {
    let possible_ends = [20,30,40,50]; // take the smallest of these that exceeds top.
    let valid_ends = possible_ends.filter(end => end>=top);
    return valid_ends[0] * sign;
  } else if (top >5) {
    return 10 * sign;
  } else if (top >=1) {
    let possible_ends = [2,3,4,5]; // take the smallest of these that exceeds top.
    let valid_ends = possible_ends.filter(end => end>=top);
    return valid_ends[0] * sign;
  } else if (top >0) {
    return sign;
  } else {
    return 0;
  }
}

function calculate_x_axis_for_histogram(data_object) {
  let returnObject = {
    min: null,
    max: null,
    interval: null
  };
  let highest_prize_value = Math.max(...data_object.prize_values);
  let lowest_prize_value = Math.min(...data_object.prize_values);
  if (lowest_prize_value<0) {
    if (highest_prize_value>0) {
      // negative...