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 @@
// axis
axis_rotated: false,
axis_x_show: true,
axis_x_start: 0,
axis_x_type: 'indexed',
axis_x_localtime: true,
axis_x_categories: [],
......@@ -4650,6 +4651,7 @@
.style("text-anchor", $$.textAnchorForY2AxisLabel.bind($$));
};
c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) {
var $$ = this, config = $$.config,
axisParams = {
isCategory: $$.isCategorized(),
......@@ -4657,8 +4659,15 @@
tickMultiline: config.axis_x_tick_multiline,
tickWidth: config.axis_x_tick_width,
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) {
tickValues = tickValues.map(function (v) { return $$.parseDate(v); });
......@@ -4688,6 +4697,11 @@
if (config.axis_x_tick_fit || config.axis_x_tick_count) {
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) {
axis.tickValues(tickValues);
} else {
......@@ -8216,7 +8230,12 @@
return !(id%divisor);
}
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) {
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 () {
});
});
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(){
.style("text-anchor", $$.textAnchorForY2AxisLabel.bind($$));
};
c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues, withOuterTick, withoutTransition) {
var $$ = this, config = $$.config,
axisParams = {
isCategory: $$.isCategorized(),
......@@ -38,8 +39,15 @@ c3_chart_internal_fn.getXAxis = function (scale, orient, tickFormat, tickValues,
tickMultiline: config.axis_x_tick_multiline,
tickWidth: config.axis_x_tick_width,
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) {
tickValues = tickValues.map(function (v) { return $$.parseDate(v); });
......@@ -69,6 +77,11 @@ c3_chart_internal_fn.updateXAxisTickValues = function (targets, axis) {
if (config.axis_x_tick_fit || config.axis_x_tick_count) {
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) {
axis.tickValues(tickValues);
} else {
......
......@@ -57,7 +57,12 @@ function c3_axis(d3, params, $$) {
return !(id%divisor);
}
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) {
return scale.ticks.apply(scale, tickArguments);
}
......
......@@ -82,6 +82,7 @@ c3_chart_internal_fn.getDefaultConfig = function () {
// axis
axis_rotated: false,
axis_x_show: true,
axis_x_start: 0,
axis_x_type: 'indexed',
axis_x_localtime: true,
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