Commit 8707812a authored by Evgeny's avatar Evgeny

Add config.axis_x_start option to start x ticks with some value

parent cdae9823
...@@ -1200,6 +1200,7 @@ ...@@ -1200,6 +1200,7 @@
// axis // axis
axis_rotated: false, axis_rotated: false,
axis_x_show: true, axis_x_show: true,
axis_x_start: 0,
axis_x_type: 'indexed', axis_x_type: 'indexed',
axis_x_localtime: true, axis_x_localtime: true,
axis_x_categories: [], axis_x_categories: [],
...@@ -4650,6 +4651,7 @@ ...@@ -4650,6 +4651,7 @@
.style("text-anchor", $$.textAnchorForY2AxisLabel.bind($$)); .style("text-anchor", $$.textAnchorForY2AxisLabel.bind($$));
}; };
c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) { c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) {
var $$ = this, config = $$.config, var $$ = this, config = $$.config,
axisParams = { axisParams = {
isCategory: $$.isCategorized(), isCategory: $$.isCategorized(),
...@@ -4657,8 +4659,15 @@ ...@@ -4657,8 +4659,15 @@
tickMultiline: config.axis_x_tick_multiline, tickMultiline: config.axis_x_tick_multiline,
tickWidth: config.axis_x_tick_width, tickWidth: config.axis_x_tick_width,
withoutTransition: withoutTransition, withoutTransition: withoutTransition,
}, };
axis = c3_axis($$.d3, axisParams, $$).scale(scale).orient(orient);
if(tickValues && config.axis_x_start){
tickValues = tickValues.map(function(x) {
return x + config.axis_x_start;
});
}
var axis = c3_axis($$.d3, axisParams, $$).scale(scale).orient(orient);
if ($$.isTimeSeries() && tickValues) { if ($$.isTimeSeries() && tickValues) {
tickValues = tickValues.map(function (v) { return $$.parseDate(v); }); tickValues = tickValues.map(function (v) { return $$.parseDate(v); });
...@@ -4688,6 +4697,11 @@ ...@@ -4688,6 +4697,11 @@
if (config.axis_x_tick_fit || config.axis_x_tick_count) { if (config.axis_x_tick_fit || config.axis_x_tick_count) {
tickValues = $$.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries()); tickValues = $$.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());
} }
if(tickValues && config.axis_x_start){
tickValues = tickValues.map(function(x) {
return x + config.axis_x_start;
});
}
if (axis) { if (axis) {
axis.tickValues(tickValues); axis.tickValues(tickValues);
} else { } else {
...@@ -8216,7 +8230,12 @@ ...@@ -8216,7 +8230,12 @@
return !(id%divisor); return !(id%divisor);
} }
function generateTicks(scale) { function generateTicks(scale) {
var i, domain, ticks = []; var i, domain, ticks = [], startValue = 0;
if($$.isXAxis(orient) && $$.config.axis_x_start){
startValue = $$.config.axis_x_start;
}
if (scale.ticks) { if (scale.ticks) {
return scale.ticks.apply(scale, tickArguments); return scale.ticks.apply(scale, tickArguments);
} }
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -786,4 +786,47 @@ describe('c3 chart axis', function () { ...@@ -786,4 +786,47 @@ describe('c3 chart axis', function () {
}); });
}); });
describe('start with', function(){
it('should update args', function(){
args = {
data: {
columns: [
['data1', 0, 1, 2, 3]
]
},
axis: {
x: {
show: true,
start: 1
},
y: {
show: true
}
}
};
expect(true).toBeTruthy();
});
it('should start x ticks with axis_x_start', function(){
var xTickSpans = chart.internal.main.selectAll('.c3-axis-x g.tick text tspan')[0];
var yTickSpans = chart.internal.main.selectAll('.c3-axis-y g.tick text tspan')[0];
expect(xTickSpans[0].textContent).toBe('1');
expect(yTickSpans[0].textContent).toBe('0');
});
it('should work with load', function(){
chart.load({
columns: ['data2', 4, 5, 6]
});
var xTickSpans = chart.internal.main.selectAll('.c3-axis-x g.tick text tspan')[0];
var yTickSpans = chart.internal.main.selectAll('.c3-axis-y g.tick text tspan')[0];
expect(xTickSpans[0].textContent).toBe('1');
expect(yTickSpans[0].textContent).toBe('0');
});
});
}); });
...@@ -31,6 +31,7 @@ c3_chart_internal_fn.initAxis = function(){ ...@@ -31,6 +31,7 @@ c3_chart_internal_fn.initAxis = function(){
.style("text-anchor", $$.textAnchorForY2AxisLabel.bind($$)); .style("text-anchor", $$.textAnchorForY2AxisLabel.bind($$));
}; };
c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) { c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) {
var $$ = this, config = $$.config, var $$ = this, config = $$.config,
axisParams = { axisParams = {
isCategory: $$.isCategorized(), isCategory: $$.isCategorized(),
...@@ -38,8 +39,15 @@ c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues, ...@@ -38,8 +39,15 @@ c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues,
tickMultiline: config.axis_x_tick_multiline, tickMultiline: config.axis_x_tick_multiline,
tickWidth: config.axis_x_tick_width, tickWidth: config.axis_x_tick_width,
withoutTransition: withoutTransition, withoutTransition: withoutTransition,
}, };
axis = c3_axis($$.d3, axisParams, $$).scale(scale).orient(orient);
if(tickValues && config.axis_x_start){
tickValues = tickValues.map(function(x) {
return x + config.axis_x_start;
});
}
var axis = c3_axis($$.d3, axisParams, $$).scale(scale).orient(orient);
if ($$.isTimeSeries() && tickValues) { if ($$.isTimeSeries() && tickValues) {
tickValues = tickValues.map(function (v) { return $$.parseDate(v); }); tickValues = tickValues.map(function (v) { return $$.parseDate(v); });
...@@ -69,6 +77,11 @@ c3_chart_internal_fn.updateXAxisTickValues = function (targets, axis) { ...@@ -69,6 +77,11 @@ c3_chart_internal_fn.updateXAxisTickValues = function (targets, axis) {
if (config.axis_x_tick_fit || config.axis_x_tick_count) { if (config.axis_x_tick_fit || config.axis_x_tick_count) {
tickValues = $$.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries()); tickValues = $$.generateTickValues($$.mapTargetsToUniqueXs(targets), config.axis_x_tick_count, $$.isTimeSeries());
} }
if(tickValues && config.axis_x_start){
tickValues = tickValues.map(function(x) {
return x + config.axis_x_start;
});
}
if (axis) { if (axis) {
axis.tickValues(tickValues); axis.tickValues(tickValues);
} else { } else {
......
...@@ -57,7 +57,12 @@ function c3_axis(d3, params, $$) { ...@@ -57,7 +57,12 @@ function c3_axis(d3, params, $$) {
return !(id%divisor); return !(id%divisor);
} }
function generateTicks(scale) { function generateTicks(scale) {
var i, domain, ticks = []; var i, domain, ticks = [], startValue = 0;
if($$.isXAxis(orient) && $$.config.axis_x_start){
startValue = $$.config.axis_x_start;
}
if (scale.ticks) { if (scale.ticks) {
return scale.ticks.apply(scale, tickArguments); return scale.ticks.apply(scale, tickArguments);
} }
......
...@@ -82,6 +82,7 @@ c3_chart_internal_fn.getDefaultConfig = function () { ...@@ -82,6 +82,7 @@ c3_chart_internal_fn.getDefaultConfig = function () {
// axis // axis
axis_rotated: false, axis_rotated: false,
axis_x_show: true, axis_x_show: true,
axis_x_start: 0,
axis_x_type: 'indexed', axis_x_type: 'indexed',
axis_x_localtime: true, axis_x_localtime: true,
axis_x_categories: [], axis_x_categories: [],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment