diff --git a/samples/scales/time/financial.html b/samples/scales/time/financial.html
index d5b5ac8d59b..00869e7a28f 100644
--- a/samples/scales/time/financial.html
+++ b/samples/scales/time/financial.html
@@ -69,7 +69,6 @@
var color = Chart.helpers.color;
var cfg = {
- type: 'bar',
data: {
datasets: [{
label: 'CHRT - Chart.js Corporation',
@@ -88,12 +87,16 @@
xAxes: [{
type: 'time',
distribution: 'series',
+ offset: true,
ticks: {
source: 'data',
autoSkip: true
}
}],
yAxes: [{
+ gridLines: {
+ drawBorder: false
+ },
scaleLabel: {
display: true,
labelString: 'Closing price ($)'
diff --git a/src/controllers/controller.bar.js b/src/controllers/controller.bar.js
index 55c6ab31baf..2794234f38c 100644
--- a/src/controllers/controller.bar.js
+++ b/src/controllers/controller.bar.js
@@ -69,10 +69,13 @@ function computeFitCategoryTraits(index, ruler, options) {
var thickness = options.barThickness;
var count = ruler.stackCount;
var curr = ruler.pixels[index];
+ var min = helpers.isNullOrUndef(options.barThickness)
+ ? computeMinSampleSize(ruler.scale, ruler.pixels)
+ : -1;
var size, ratio;
if (helpers.isNullOrUndef(thickness)) {
- size = ruler.min * options.categoryPercentage;
+ size = min * options.categoryPercentage;
ratio = options.barPercentage;
} else {
// When bar thickness is enforced, category and bar percentages are ignored.
@@ -135,7 +138,12 @@ module.exports = DatasetController.extend({
'backgroundColor',
'borderColor',
'borderSkipped',
- 'borderWidth'
+ 'borderWidth',
+ 'barPercentage',
+ 'barThickness',
+ 'categoryPercentage',
+ 'maxBarThickness',
+ 'minBarLength'
],
initialize: function() {
@@ -161,7 +169,6 @@ module.exports = DatasetController.extend({
var rects = me.getMeta().data;
var i, ilen;
- me._options = me._resolveControllerOptions(me.index);
me._ruler = me.getRuler();
for (i = 0, ilen = rects.length; i < ilen; ++i) {
@@ -188,7 +195,7 @@ module.exports = DatasetController.extend({
label: me.chart.data.labels[index]
};
- me._updateElementGeometry(rectangle, index, reset);
+ me._updateElementGeometry(rectangle, index, reset, options);
rectangle.pivot();
},
@@ -196,15 +203,15 @@ module.exports = DatasetController.extend({
/**
* @private
*/
- _updateElementGeometry: function(rectangle, index, reset) {
+ _updateElementGeometry: function(rectangle, index, reset, options) {
var me = this;
var model = rectangle._model;
var vscale = me._getValueScale();
var base = vscale.getBasePixel();
var horizontal = vscale.isHorizontal();
var ruler = me._ruler || me.getRuler();
- var vpixels = me.calculateBarValuePixels(me.index, index);
- var ipixels = me.calculateBarIndexPixels(me.index, index, ruler);
+ var vpixels = me.calculateBarValuePixels(me.index, index, options);
+ var ipixels = me.calculateBarIndexPixels(me.index, index, ruler, options);
model.horizontal = horizontal;
model.base = reset ? base : vpixels.base;
@@ -280,18 +287,13 @@ module.exports = DatasetController.extend({
var start = isHorizontal ? scale.left : scale.top;
var end = start + (isHorizontal ? scale.width : scale.height);
var pixels = [];
- var i, ilen, min;
+ var i, ilen;
for (i = 0, ilen = me.getMeta().data.length; i < ilen; ++i) {
pixels.push(scale.getPixelForValue(null, i, datasetIndex));
}
- min = helpers.isNullOrUndef(me._options.barThickness)
- ? computeMinSampleSize(scale, pixels)
- : -1;
-
return {
- min: min,
pixels: pixels,
start: start,
end: end,
@@ -304,7 +306,7 @@ module.exports = DatasetController.extend({
* Note: pixel values are not clamped to the scale area.
* @private
*/
- calculateBarValuePixels: function(datasetIndex, index) {
+ calculateBarValuePixels: function(datasetIndex, index, options) {
var me = this;
var chart = me.chart;
var meta = me.getMeta();
@@ -312,7 +314,7 @@ module.exports = DatasetController.extend({
var isHorizontal = scale.isHorizontal();
var datasets = chart.data.datasets;
var value = +scale.getRightValue(datasets[datasetIndex].data[index]);
- var minBarLength = me._options.minBarLength;
+ var minBarLength = options.minBarLength;
var stacked = scale.options.stacked;
var stack = meta.stack;
var start = 0;
@@ -359,9 +361,8 @@ module.exports = DatasetController.extend({
/**
* @private
*/
- calculateBarIndexPixels: function(datasetIndex, index, ruler) {
+ calculateBarIndexPixels: function(datasetIndex, index, ruler, options) {
var me = this;
- var options = me._options;
var range = options.barThickness === 'flex'
? computeFlexCategoryTraits(index, ruler, options)
: computeFitCategoryTraits(index, ruler, options);
@@ -403,29 +404,17 @@ module.exports = DatasetController.extend({
/**
* @private
*/
- _resolveControllerOptions: function() {
+ _resolveDataElementOptions: function() {
var me = this;
- var datasetOpts = me._config;
+ var values = DatasetController.prototype._resolveDataElementOptions.apply(me, arguments);
var indexOpts = me._getIndexScale().options;
var valueOpts = me._getValueScale().options;
- var values = {};
- var keys = [
- 'barPercentage',
- 'barThickness',
- 'categoryPercentage',
- 'maxBarThickness'
- ];
- var i, ilen, key;
-
- for (i = 0, ilen = keys.length; i < ilen; ++i) {
- key = keys[i];
- values[key] = valueOrDefault(
- indexOpts[key],
- datasetOpts[key]
- );
- }
- values.minBarLength = valueOrDefault(valueOpts.minBarLength, datasetOpts.minBarLength);
+ values.barPercentage = valueOrDefault(indexOpts.barPercentage, values.barPercentage);
+ values.barThickness = valueOrDefault(indexOpts.barThickness, values.barThickness);
+ values.categoryPercentage = valueOrDefault(indexOpts.categoryPercentage, values.categoryPercentage);
+ values.maxBarThickness = valueOrDefault(indexOpts.maxBarThickness, values.maxBarThickness);
+ values.minBarLength = valueOrDefault(valueOpts.minBarLength, values.minBarLength);
return values;
}