add all zero special case: default 5 intervals
This commit is contained in:
parent
f09769c125
commit
cf834fde94
132
dist/frappe-charts.min.cjs.js
vendored
132
dist/frappe-charts.min.cjs.js
vendored
@ -694,12 +694,6 @@ function normalize(x) {
|
||||
return [sig * man, exp];
|
||||
}
|
||||
|
||||
// function get_commafied_or_powered_number(number) {}
|
||||
|
||||
function get_actual_pretty_num(number, exponent) {
|
||||
return number;
|
||||
}
|
||||
|
||||
function get_range_intervals(max) {
|
||||
var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
||||
|
||||
@ -710,6 +704,7 @@ function get_range_intervals(max) {
|
||||
var no_of_parts = range;
|
||||
var part_size = 1;
|
||||
|
||||
// To avoid too many partitions
|
||||
if (range > 5) {
|
||||
if (range % 2 !== 0) {
|
||||
upper_bound++;
|
||||
@ -720,11 +715,18 @@ function get_range_intervals(max) {
|
||||
part_size = 2;
|
||||
}
|
||||
|
||||
// Special case: 1 and 2
|
||||
if (range <= 2) {
|
||||
no_of_parts = 4;
|
||||
part_size = range / no_of_parts;
|
||||
}
|
||||
|
||||
// Special case: 0
|
||||
if (range === 0) {
|
||||
no_of_parts = 5;
|
||||
part_size = 1;
|
||||
}
|
||||
|
||||
var intervals = [];
|
||||
for (var i = 0; i <= no_of_parts; i++) {
|
||||
intervals.push(lower_bound + part_size * i);
|
||||
@ -763,8 +765,23 @@ function calc_intervals(values) {
|
||||
var max_value = Math.max.apply(Math, toConsumableArray(values));
|
||||
var min_value = Math.min.apply(Math, toConsumableArray(values));
|
||||
|
||||
// Exponent to be used for pretty print
|
||||
var exponent = 0,
|
||||
intervals = [];
|
||||
intervals = []; // eslint-disable-line no-unused-vars
|
||||
|
||||
function get_positive_first_intervals(max_value, abs_min_value) {
|
||||
var intervals = get_intervals(max_value);
|
||||
|
||||
var interval_size = intervals[1] - intervals[0];
|
||||
|
||||
// Then unshift the negative values
|
||||
var value = 0;
|
||||
for (var i = 1; value < abs_min_value; i++) {
|
||||
value += interval_size;
|
||||
intervals.unshift(-1 * value);
|
||||
}
|
||||
return intervals;
|
||||
}
|
||||
|
||||
// CASE I: Both non-negative
|
||||
|
||||
@ -779,66 +796,49 @@ function calc_intervals(values) {
|
||||
|
||||
// CASE II: Only min_value negative
|
||||
|
||||
if (max_value > 0 && min_value < 0) {
|
||||
// `with_minimum` irrelevant in this case,
|
||||
// We'll be handling both sides of zero separately
|
||||
// (both starting from zero)
|
||||
// Because ceil() and floor() behave differently
|
||||
// in those two regions
|
||||
else if (max_value > 0 && min_value < 0) {
|
||||
// `with_minimum` irrelevant in this case,
|
||||
// We'll be handling both sides of zero separately
|
||||
// (both starting from zero)
|
||||
// Because ceil() and floor() behave differently
|
||||
// in those two regions
|
||||
|
||||
var get_positive_first_intervals = function get_positive_first_intervals(max_value, abs_min_value) {
|
||||
var intervals = get_intervals(max_value);
|
||||
var abs_min_value = Math.abs(min_value);
|
||||
|
||||
var interval_size = intervals[1] - intervals[0];
|
||||
|
||||
// Then unshift the negative values
|
||||
var value = 0;
|
||||
for (var i = 1; value < abs_min_value; i++) {
|
||||
value += interval_size;
|
||||
intervals.unshift(-1 * value);
|
||||
if (max_value >= abs_min_value) {
|
||||
exponent = normalize(max_value)[1];
|
||||
intervals = get_positive_first_intervals(max_value, abs_min_value);
|
||||
} else {
|
||||
// Mirror: max_value => abs_min_value, then change sign
|
||||
exponent = normalize(abs_min_value)[1];
|
||||
var pos_intervals = get_positive_first_intervals(abs_min_value, max_value);
|
||||
intervals = pos_intervals.map(function (d) {
|
||||
return d * -1;
|
||||
});
|
||||
}
|
||||
return intervals;
|
||||
};
|
||||
|
||||
var abs_min_value = Math.abs(min_value);
|
||||
|
||||
if (max_value >= abs_min_value) {
|
||||
exponent = normalize(max_value)[1];
|
||||
intervals = get_positive_first_intervals(max_value, abs_min_value);
|
||||
} else {
|
||||
// Mirror: max_value => abs_min_value, then change sign
|
||||
exponent = normalize(abs_min_value)[1];
|
||||
var pos_intervals = get_positive_first_intervals(abs_min_value, max_value);
|
||||
intervals = pos_intervals.map(function (d) {
|
||||
return d * -1;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// CASE III: Both non-positive
|
||||
|
||||
if (max_value <= 0 && min_value <= 0) {
|
||||
// Mirrored Case I:
|
||||
// Work with positives, then reverse the sign and array
|
||||
|
||||
var pseudo_max_value = Math.abs(min_value);
|
||||
var pseudo_min_value = Math.abs(max_value);
|
||||
|
||||
exponent = normalize(pseudo_max_value)[1];
|
||||
if (!with_minimum) {
|
||||
intervals = get_intervals(pseudo_max_value);
|
||||
} else {
|
||||
intervals = get_intervals(pseudo_max_value, pseudo_min_value);
|
||||
}
|
||||
|
||||
intervals = intervals.reverse().map(function (d) {
|
||||
return d * -1;
|
||||
});
|
||||
}
|
||||
// CASE III: Both non-positive
|
||||
|
||||
else if (max_value <= 0 && min_value <= 0) {
|
||||
// Mirrored Case I:
|
||||
// Work with positives, then reverse the sign and array
|
||||
|
||||
var pseudo_max_value = Math.abs(min_value);
|
||||
var pseudo_min_value = Math.abs(max_value);
|
||||
|
||||
exponent = normalize(pseudo_max_value)[1];
|
||||
if (!with_minimum) {
|
||||
intervals = get_intervals(pseudo_max_value);
|
||||
} else {
|
||||
intervals = get_intervals(pseudo_max_value, pseudo_min_value);
|
||||
}
|
||||
|
||||
intervals = intervals.reverse().map(function (d) {
|
||||
return d * -1;
|
||||
});
|
||||
}
|
||||
|
||||
intervals = intervals.map(function (value) {
|
||||
return get_actual_pretty_num(value, exponent);
|
||||
});
|
||||
return intervals;
|
||||
}
|
||||
|
||||
@ -1132,9 +1132,13 @@ var BaseChart = function () {
|
||||
console.error("No parent element to render on was provided.");
|
||||
return;
|
||||
}
|
||||
this.validate_and_prepare_data();
|
||||
this.bind_window_events();
|
||||
this.refresh(true);
|
||||
}
|
||||
}, {
|
||||
key: 'validate_and_prepare_data',
|
||||
value: function validate_and_prepare_data() {}
|
||||
}, {
|
||||
key: 'bind_window_events',
|
||||
value: function bind_window_events() {
|
||||
@ -1436,11 +1440,17 @@ var AxisChart = function (_BaseChart) {
|
||||
var zero_index = void 0;
|
||||
|
||||
if (y_pts.indexOf(0) >= 0) {
|
||||
// the range has a given zero
|
||||
// zero-line on the chart
|
||||
zero_index = y_pts.indexOf(0);
|
||||
} else if (y_pts[0] > 0) {
|
||||
// Minimum value is positive
|
||||
// zero-line is off the chart: below
|
||||
var min = y_pts[0];
|
||||
zero_index = -1 * min / interval;
|
||||
} else {
|
||||
// Maximum value is negative
|
||||
// zero-line is off the chart: above
|
||||
var max = y_pts[y_pts.length - 1];
|
||||
zero_index = -1 * max / interval + (y_pts.length - 1);
|
||||
}
|
||||
|
||||
132
dist/frappe-charts.min.esm.js
vendored
132
dist/frappe-charts.min.esm.js
vendored
@ -692,12 +692,6 @@ function normalize(x) {
|
||||
return [sig * man, exp];
|
||||
}
|
||||
|
||||
// function get_commafied_or_powered_number(number) {}
|
||||
|
||||
function get_actual_pretty_num(number, exponent) {
|
||||
return number;
|
||||
}
|
||||
|
||||
function get_range_intervals(max) {
|
||||
var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
|
||||
|
||||
@ -708,6 +702,7 @@ function get_range_intervals(max) {
|
||||
var no_of_parts = range;
|
||||
var part_size = 1;
|
||||
|
||||
// To avoid too many partitions
|
||||
if (range > 5) {
|
||||
if (range % 2 !== 0) {
|
||||
upper_bound++;
|
||||
@ -718,11 +713,18 @@ function get_range_intervals(max) {
|
||||
part_size = 2;
|
||||
}
|
||||
|
||||
// Special case: 1 and 2
|
||||
if (range <= 2) {
|
||||
no_of_parts = 4;
|
||||
part_size = range / no_of_parts;
|
||||
}
|
||||
|
||||
// Special case: 0
|
||||
if (range === 0) {
|
||||
no_of_parts = 5;
|
||||
part_size = 1;
|
||||
}
|
||||
|
||||
var intervals = [];
|
||||
for (var i = 0; i <= no_of_parts; i++) {
|
||||
intervals.push(lower_bound + part_size * i);
|
||||
@ -761,8 +763,23 @@ function calc_intervals(values) {
|
||||
var max_value = Math.max.apply(Math, toConsumableArray(values));
|
||||
var min_value = Math.min.apply(Math, toConsumableArray(values));
|
||||
|
||||
// Exponent to be used for pretty print
|
||||
var exponent = 0,
|
||||
intervals = [];
|
||||
intervals = []; // eslint-disable-line no-unused-vars
|
||||
|
||||
function get_positive_first_intervals(max_value, abs_min_value) {
|
||||
var intervals = get_intervals(max_value);
|
||||
|
||||
var interval_size = intervals[1] - intervals[0];
|
||||
|
||||
// Then unshift the negative values
|
||||
var value = 0;
|
||||
for (var i = 1; value < abs_min_value; i++) {
|
||||
value += interval_size;
|
||||
intervals.unshift(-1 * value);
|
||||
}
|
||||
return intervals;
|
||||
}
|
||||
|
||||
// CASE I: Both non-negative
|
||||
|
||||
@ -777,66 +794,49 @@ function calc_intervals(values) {
|
||||
|
||||
// CASE II: Only min_value negative
|
||||
|
||||
if (max_value > 0 && min_value < 0) {
|
||||
// `with_minimum` irrelevant in this case,
|
||||
// We'll be handling both sides of zero separately
|
||||
// (both starting from zero)
|
||||
// Because ceil() and floor() behave differently
|
||||
// in those two regions
|
||||
else if (max_value > 0 && min_value < 0) {
|
||||
// `with_minimum` irrelevant in this case,
|
||||
// We'll be handling both sides of zero separately
|
||||
// (both starting from zero)
|
||||
// Because ceil() and floor() behave differently
|
||||
// in those two regions
|
||||
|
||||
var get_positive_first_intervals = function get_positive_first_intervals(max_value, abs_min_value) {
|
||||
var intervals = get_intervals(max_value);
|
||||
var abs_min_value = Math.abs(min_value);
|
||||
|
||||
var interval_size = intervals[1] - intervals[0];
|
||||
|
||||
// Then unshift the negative values
|
||||
var value = 0;
|
||||
for (var i = 1; value < abs_min_value; i++) {
|
||||
value += interval_size;
|
||||
intervals.unshift(-1 * value);
|
||||
if (max_value >= abs_min_value) {
|
||||
exponent = normalize(max_value)[1];
|
||||
intervals = get_positive_first_intervals(max_value, abs_min_value);
|
||||
} else {
|
||||
// Mirror: max_value => abs_min_value, then change sign
|
||||
exponent = normalize(abs_min_value)[1];
|
||||
var pos_intervals = get_positive_first_intervals(abs_min_value, max_value);
|
||||
intervals = pos_intervals.map(function (d) {
|
||||
return d * -1;
|
||||
});
|
||||
}
|
||||
return intervals;
|
||||
};
|
||||
|
||||
var abs_min_value = Math.abs(min_value);
|
||||
|
||||
if (max_value >= abs_min_value) {
|
||||
exponent = normalize(max_value)[1];
|
||||
intervals = get_positive_first_intervals(max_value, abs_min_value);
|
||||
} else {
|
||||
// Mirror: max_value => abs_min_value, then change sign
|
||||
exponent = normalize(abs_min_value)[1];
|
||||
var pos_intervals = get_positive_first_intervals(abs_min_value, max_value);
|
||||
intervals = pos_intervals.map(function (d) {
|
||||
return d * -1;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// CASE III: Both non-positive
|
||||
|
||||
if (max_value <= 0 && min_value <= 0) {
|
||||
// Mirrored Case I:
|
||||
// Work with positives, then reverse the sign and array
|
||||
|
||||
var pseudo_max_value = Math.abs(min_value);
|
||||
var pseudo_min_value = Math.abs(max_value);
|
||||
|
||||
exponent = normalize(pseudo_max_value)[1];
|
||||
if (!with_minimum) {
|
||||
intervals = get_intervals(pseudo_max_value);
|
||||
} else {
|
||||
intervals = get_intervals(pseudo_max_value, pseudo_min_value);
|
||||
}
|
||||
|
||||
intervals = intervals.reverse().map(function (d) {
|
||||
return d * -1;
|
||||
});
|
||||
}
|
||||
// CASE III: Both non-positive
|
||||
|
||||
else if (max_value <= 0 && min_value <= 0) {
|
||||
// Mirrored Case I:
|
||||
// Work with positives, then reverse the sign and array
|
||||
|
||||
var pseudo_max_value = Math.abs(min_value);
|
||||
var pseudo_min_value = Math.abs(max_value);
|
||||
|
||||
exponent = normalize(pseudo_max_value)[1];
|
||||
if (!with_minimum) {
|
||||
intervals = get_intervals(pseudo_max_value);
|
||||
} else {
|
||||
intervals = get_intervals(pseudo_max_value, pseudo_min_value);
|
||||
}
|
||||
|
||||
intervals = intervals.reverse().map(function (d) {
|
||||
return d * -1;
|
||||
});
|
||||
}
|
||||
|
||||
intervals = intervals.map(function (value) {
|
||||
return get_actual_pretty_num(value, exponent);
|
||||
});
|
||||
return intervals;
|
||||
}
|
||||
|
||||
@ -1130,9 +1130,13 @@ var BaseChart = function () {
|
||||
console.error("No parent element to render on was provided.");
|
||||
return;
|
||||
}
|
||||
this.validate_and_prepare_data();
|
||||
this.bind_window_events();
|
||||
this.refresh(true);
|
||||
}
|
||||
}, {
|
||||
key: 'validate_and_prepare_data',
|
||||
value: function validate_and_prepare_data() {}
|
||||
}, {
|
||||
key: 'bind_window_events',
|
||||
value: function bind_window_events() {
|
||||
@ -1434,11 +1438,17 @@ var AxisChart = function (_BaseChart) {
|
||||
var zero_index = void 0;
|
||||
|
||||
if (y_pts.indexOf(0) >= 0) {
|
||||
// the range has a given zero
|
||||
// zero-line on the chart
|
||||
zero_index = y_pts.indexOf(0);
|
||||
} else if (y_pts[0] > 0) {
|
||||
// Minimum value is positive
|
||||
// zero-line is off the chart: below
|
||||
var min = y_pts[0];
|
||||
zero_index = -1 * min / interval;
|
||||
} else {
|
||||
// Maximum value is negative
|
||||
// zero-line is off the chart: above
|
||||
var max = y_pts[y_pts.length - 1];
|
||||
zero_index = -1 * max / interval + (y_pts.length - 1);
|
||||
}
|
||||
|
||||
2
dist/frappe-charts.min.iife.js
vendored
2
dist/frappe-charts.min.iife.js
vendored
File diff suppressed because one or more lines are too long
2
docs/assets/js/frappe-charts.min.js
vendored
2
docs/assets/js/frappe-charts.min.js
vendored
File diff suppressed because one or more lines are too long
@ -26,7 +26,8 @@ let line_composite_data = {
|
||||
};
|
||||
|
||||
let more_line_data = {
|
||||
0: {values: [4, 0, 3, 1, 1, 2, 1, 2, 1, 0, 1, 1]},
|
||||
// 0: {values: [4, 0, 3, 1, 1, 2, 1, 2, 1, 0, 1, 1]},
|
||||
0: {values: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]},
|
||||
1: {values: [2, 3, 3, 2, 1, 4, 0, 1, 2, 7, 11, 4]},
|
||||
2: {values: [7, 7, 2, 4, 0, 1, 5, 3, 1, 2, 0, 1]},
|
||||
3: {values: [0, 2, 6, 2, 2, 1, 2, 3, 6, 3, 7, 10]},
|
||||
|
||||
46
package-lock.json
generated
46
package-lock.json
generated
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "frappe-charts",
|
||||
"version": "0.0.1",
|
||||
"version": "0.0.5",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
@ -2764,6 +2764,12 @@
|
||||
"integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=",
|
||||
"dev": true
|
||||
},
|
||||
"graceful-readlink": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
|
||||
"integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=",
|
||||
"dev": true
|
||||
},
|
||||
"has": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz",
|
||||
@ -5746,6 +5752,37 @@
|
||||
"uglify-js": "3.1.5"
|
||||
}
|
||||
},
|
||||
"rollup-plugin-uglify-es": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/rollup-plugin-uglify-es/-/rollup-plugin-uglify-es-0.0.1.tgz",
|
||||
"integrity": "sha1-5FZE8raFpZq9uTY0ByB6A6e1qbc=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"uglify-es": "3.0.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"commander": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
|
||||
"integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-readlink": "1.0.1"
|
||||
}
|
||||
},
|
||||
"uglify-es": {
|
||||
"version": "3.0.3",
|
||||
"resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.0.3.tgz",
|
||||
"integrity": "sha1-Y8yEqpRos0lzpIh3h8ZMAaiodXY=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"commander": "2.9.0",
|
||||
"source-map": "0.5.7",
|
||||
"uglify-to-browserify": "1.0.2"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"rollup-pluginutils": {
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz",
|
||||
@ -6195,6 +6232,13 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"uglify-to-browserify": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz",
|
||||
"integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"ultron": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz",
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
"directories": {
|
||||
"doc": "docs"
|
||||
},
|
||||
"files":[
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"scripts": {
|
||||
@ -48,6 +48,7 @@
|
||||
"rollup-plugin-postcss": "^0.5.5",
|
||||
"rollup-plugin-replace": "^2.0.0",
|
||||
"rollup-plugin-uglify": "^2.0.1",
|
||||
"rollup-plugin-uglify-es": "0.0.1",
|
||||
"rollup-watch": "^4.3.1"
|
||||
}
|
||||
}
|
||||
|
||||
@ -74,11 +74,17 @@ export default class AxisChart extends BaseChart {
|
||||
let zero_index;
|
||||
|
||||
if(y_pts.indexOf(0) >= 0) {
|
||||
// the range has a given zero
|
||||
// zero-line on the chart
|
||||
zero_index = y_pts.indexOf(0);
|
||||
} else if(y_pts[0] > 0) {
|
||||
// Minimum value is positive
|
||||
// zero-line is off the chart: below
|
||||
let min = y_pts[0];
|
||||
zero_index = (-1) * min / interval;
|
||||
} else {
|
||||
// Maximum value is negative
|
||||
// zero-line is off the chart: above
|
||||
let max = y_pts[y_pts.length - 1];
|
||||
zero_index = (-1) * max / interval + (y_pts.length - 1);
|
||||
}
|
||||
|
||||
@ -92,10 +92,13 @@ export default class BaseChart {
|
||||
console.error("No parent element to render on was provided.");
|
||||
return;
|
||||
}
|
||||
this.validate_and_prepare_data();
|
||||
this.bind_window_events();
|
||||
this.refresh(true);
|
||||
}
|
||||
|
||||
validate_and_prepare_data() {}
|
||||
|
||||
bind_window_events() {
|
||||
window.addEventListener('resize', () => this.refresh());
|
||||
window.addEventListener('orientationchange', () => this.refresh());
|
||||
|
||||
@ -21,12 +21,6 @@ function normalize(x) {
|
||||
return [sig * man, exp];
|
||||
}
|
||||
|
||||
// function get_commafied_or_powered_number(number) {}
|
||||
|
||||
function get_actual_pretty_num(number, exponent) {
|
||||
return number;
|
||||
}
|
||||
|
||||
function get_range_intervals(max, min=0) {
|
||||
let upper_bound = Math.ceil(max);
|
||||
let lower_bound = Math.floor(min);
|
||||
@ -35,6 +29,7 @@ function get_range_intervals(max, min=0) {
|
||||
let no_of_parts = range;
|
||||
let part_size = 1;
|
||||
|
||||
// To avoid too many partitions
|
||||
if(range > 5) {
|
||||
if(range % 2 !== 0) {
|
||||
upper_bound++;
|
||||
@ -45,11 +40,18 @@ function get_range_intervals(max, min=0) {
|
||||
part_size = 2;
|
||||
}
|
||||
|
||||
// Special case: 1 and 2
|
||||
if(range <= 2) {
|
||||
no_of_parts = 4;
|
||||
part_size = range/no_of_parts;
|
||||
}
|
||||
|
||||
// Special case: 0
|
||||
if(range === 0) {
|
||||
no_of_parts = 5;
|
||||
part_size = 1;
|
||||
}
|
||||
|
||||
let intervals = [];
|
||||
for(var i = 0; i <= no_of_parts; i++){
|
||||
intervals.push(lower_bound + part_size * i);
|
||||
@ -78,7 +80,22 @@ export function calc_intervals(values, with_minimum=false) {
|
||||
let max_value = Math.max(...values);
|
||||
let min_value = Math.min(...values);
|
||||
|
||||
let exponent = 0, intervals = [];
|
||||
// Exponent to be used for pretty print
|
||||
let exponent = 0, intervals = []; // eslint-disable-line no-unused-vars
|
||||
|
||||
function get_positive_first_intervals(max_value, abs_min_value) {
|
||||
let intervals = get_intervals(max_value);
|
||||
|
||||
let interval_size = intervals[1] - intervals[0];
|
||||
|
||||
// Then unshift the negative values
|
||||
let value = 0;
|
||||
for(var i = 1; value < abs_min_value; i++) {
|
||||
value += interval_size;
|
||||
intervals.unshift((-1) * value);
|
||||
}
|
||||
return intervals;
|
||||
}
|
||||
|
||||
// CASE I: Both non-negative
|
||||
|
||||
@ -93,27 +110,13 @@ export function calc_intervals(values, with_minimum=false) {
|
||||
|
||||
// CASE II: Only min_value negative
|
||||
|
||||
if(max_value > 0 && min_value < 0) {
|
||||
else if(max_value > 0 && min_value < 0) {
|
||||
// `with_minimum` irrelevant in this case,
|
||||
// We'll be handling both sides of zero separately
|
||||
// (both starting from zero)
|
||||
// Because ceil() and floor() behave differently
|
||||
// in those two regions
|
||||
|
||||
function get_positive_first_intervals(max_value, abs_min_value) {
|
||||
let intervals = get_intervals(max_value);
|
||||
|
||||
let interval_size = intervals[1] - intervals[0];
|
||||
|
||||
// Then unshift the negative values
|
||||
let value = 0;
|
||||
for(var i = 1; value < abs_min_value; i++) {
|
||||
value += interval_size;
|
||||
intervals.unshift((-1) * value)
|
||||
}
|
||||
return intervals;
|
||||
}
|
||||
|
||||
let abs_min_value = Math.abs(min_value);
|
||||
|
||||
if(max_value >= abs_min_value) {
|
||||
@ -130,7 +133,7 @@ export function calc_intervals(values, with_minimum=false) {
|
||||
|
||||
// CASE III: Both non-positive
|
||||
|
||||
if(max_value <= 0 && min_value <= 0) {
|
||||
else if(max_value <= 0 && min_value <= 0) {
|
||||
// Mirrored Case I:
|
||||
// Work with positives, then reverse the sign and array
|
||||
|
||||
@ -147,7 +150,6 @@ export function calc_intervals(values, with_minimum=false) {
|
||||
intervals = intervals.reverse().map(d => d * (-1));
|
||||
}
|
||||
|
||||
intervals = intervals.map(value => get_actual_pretty_num(value, exponent));
|
||||
return intervals;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user