-
Notifications
You must be signed in to change notification settings - Fork 12k
Fixes bug #5289: Bars do not appear at correct X axis position when specified in {x, y} format #5298
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixes bug #5289: Bars do not appear at correct X axis position when specified in {x, y} format #5298
Changes from 1 commit
7a4ba6b
d1809f7
e387285
98ec449
996c6af
740e0bb
5d9dc40
4ab606c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
- Loading branch information
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -694,7 +694,7 @@ module.exports = function(Chart) { | |
| if (!dataset.data) { | ||
| dataset.data = []; | ||
| } | ||
| // format the data if the data array is missing some point according to the labels | ||
| // Format the data if the data array is missing some point according to the labels | ||
| dataset.data = me.formatDataset(dataset.data); | ||
| var meta = dataset._meta[me.id]; | ||
| if (!meta) { | ||
|
|
@@ -939,19 +939,17 @@ module.exports = function(Chart) { | |
| return changed; | ||
| }, | ||
| /** | ||
| * format the data list if the data is missing some points in the datasets. | ||
| * Format the data list if the data is missing some points in the datasets. | ||
| * @private | ||
| * @param {array} dataArray array to format | ||
| * @return {array} the formated array | ||
| */ | ||
| formatDataset: function(dataArray) { | ||
| var labels = this.chart.data.labels; | ||
| var tmp = dataArray.slice(0); | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. there's no reason to create |
||
| var labelLen = labels.length; | ||
| var dataLen = dataArray.length; | ||
| var result = dataArray; | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this is where you should make the defensive copy. don't modify the input to the function. instead do |
||
| var match = this.dataInLabel(tmp, labels); | ||
| if (match && dataLen < labelLen) { | ||
| if (match && dataArray.length < labels.length) { | ||
| for (var i = 0; i < labels.length; i++) { | ||
| var label = labels[i]; | ||
| result[i] = {x: label, y: this.getY(label, tmp)}; | ||
|
|
@@ -960,12 +958,12 @@ module.exports = function(Chart) { | |
| return result; | ||
| }, | ||
| /** | ||
| * return the y data of the label, if no this label, return null | ||
| * @private | ||
| * @param {string} label the label in the labels array | ||
| * @param {array} dataArray the data in the datasets. | ||
| * @return {number} the y data according to the label | ||
| */ | ||
| * Return the y data of the label, if no this label, return null | ||
| * @private | ||
| * @param {string} label the label in the labels array | ||
| * @param {array} dataArray the data in the datasets. | ||
| * @return {number} the y data according to the label | ||
| */ | ||
| getY: function(label, dataArray) { | ||
|
||
| var y = null; | ||
| for (var i = 0; i < dataArray.length; i++) { | ||
|
|
@@ -977,24 +975,23 @@ module.exports = function(Chart) { | |
| return y; | ||
| }, | ||
| /** | ||
| * find if the data in datasets is existed in the labels | ||
| * @private | ||
| * @param {array} dataArray the data in the datasets | ||
| * @param {array} labelArray the label in the labels array | ||
| * @return {boolean} the match result, true is included | ||
| */ | ||
| * Find if the data in datasets exists in the labels | ||
| * @private | ||
| * @param {array} dataArray the data in the datasets | ||
| * @param {array} labelArray the label in the labels array | ||
| * @return {boolean} the match result, true is included | ||
| */ | ||
| dataInLabel: function(dataArray, labelArray) { | ||
|
||
| var result = false; | ||
| for (var i = 0; i < dataArray.length; i++) { | ||
| var item = dataArray[i]; | ||
| if (item === null || item === undefined || item.x === undefined) { | ||
| break; | ||
| } | ||
| if (labelArray.indexOf(item.x) > -1) { | ||
| result = true; | ||
| return true | ||
| } | ||
| } | ||
| return result; | ||
| return false | ||
| }, | ||
| }); | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
private functions should be prefixed with
_There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The prefixed is added.
Pls check.