@@ -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 | |||
// CASE III: Both non-positive | |||
if (max_value <= 0 && min_value <= 0) { | |||
// Mirrored Case I: | |||
// Work with positives, then reverse the sign and array | |||
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); | |||
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); | |||
} | |||
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.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); | |||
} | |||
@@ -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 | |||
// CASE III: Both non-positive | |||
if (max_value <= 0 && min_value <= 0) { | |||
// Mirrored Case I: | |||
// Work with positives, then reverse the sign and array | |||
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); | |||
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); | |||
} | |||
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.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); | |||
} | |||
@@ -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]}, | |||
@@ -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; | |||
} | |||