Commit a9219704 authored by Masayuki Tanaka's avatar Masayuki Tanaka

Separate clip for chart and grid - #502

parent a69f95ab
...@@ -76,9 +76,11 @@ ...@@ -76,9 +76,11 @@
$$.clipId = "c3-" + (+new Date()) + '-clip', $$.clipId = "c3-" + (+new Date()) + '-clip',
$$.clipIdForXAxis = $$.clipId + '-xaxis', $$.clipIdForXAxis = $$.clipId + '-xaxis',
$$.clipIdForYAxis = $$.clipId + '-yaxis', $$.clipIdForYAxis = $$.clipId + '-yaxis',
$$.clipIdForGrid = $$.clipId + '-grid',
$$.clipPath = $$.getClipPath($$.clipId), $$.clipPath = $$.getClipPath($$.clipId),
$$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis), $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis),
$$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis); $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);
$$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid),
$$.dragStart = null; $$.dragStart = null;
$$.dragging = false; $$.dragging = false;
...@@ -135,7 +137,7 @@ ...@@ -135,7 +137,7 @@
c3_chart_internal_fn.initWithData = function (data) { c3_chart_internal_fn.initWithData = function (data) {
var $$ = this, d3 = $$.d3, config = $$.config; var $$ = this, d3 = $$.d3, config = $$.config;
var main, binding = true; var defs, main, binding = true;
if ($$.initPie) { $$.initPie(); } if ($$.initPie) { $$.initPie(); }
if ($$.initBrush) { $$.initBrush(); } if ($$.initBrush) { $$.initBrush(); }
...@@ -195,10 +197,11 @@ ...@@ -195,10 +197,11 @@
.on('mouseleave', function () { return config.onmouseout.call($$); }); .on('mouseleave', function () { return config.onmouseout.call($$); });
// Define defs // Define defs
$$.defs = $$.svg.append("defs"); defs = $$.svg.append("defs");
$$.defs.append("clipPath").attr("id", $$.clipId).append("rect"); $$.clipChart = $$.appendClip(defs, $$.clipId);
$$.defs.append("clipPath").attr("id", $$.clipIdForXAxis).append("rect"); $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);
$$.defs.append("clipPath").attr("id", $$.clipIdForYAxis).append("rect"); $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);
$$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);
$$.updateSvgSize(); $$.updateSvgSize();
// Define regions // Define regions
...@@ -735,7 +738,7 @@ ...@@ -735,7 +738,7 @@
c3_chart_internal_fn.updateSvgSize = function () { c3_chart_internal_fn.updateSvgSize = function () {
var $$ = this; var $$ = this;
$$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight); $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);
$$.svg.select('#' + $$.clipId).select('rect') $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect')
.attr('width', $$.width) .attr('width', $$.width)
.attr('height', $$.height); .attr('height', $$.height);
$$.svg.select('#' + $$.clipIdForXAxis).select('rect') $$.svg.select('#' + $$.clipIdForXAxis).select('rect')
...@@ -3130,7 +3133,7 @@ ...@@ -3130,7 +3133,7 @@
c3_chart_internal_fn.initGrid = function () { c3_chart_internal_fn.initGrid = function () {
var $$ = this, config = $$.config, d3 = $$.d3; var $$ = this, config = $$.config, d3 = $$.d3;
$$.grid = $$.main.append('g') $$.grid = $$.main.append('g')
.attr("clip-path", $$.clipPath) .attr("clip-path", $$.clipPathForGrid)
.attr('class', CLASS.grid); .attr('class', CLASS.grid);
if (config.grid_x_show) { if (config.grid_x_show) {
$$.grid.append("g").attr("class", CLASS.xgrids); $$.grid.append("g").attr("class", CLASS.xgrids);
...@@ -3150,7 +3153,7 @@ ...@@ -3150,7 +3153,7 @@
c3_chart_internal_fn.initGridLines = function () { c3_chart_internal_fn.initGridLines = function () {
var $$ = this, d3 = $$.d3; var $$ = this, d3 = $$.d3;
$$.gridLines = $$.main.append('g') $$.gridLines = $$.main.append('g')
.attr("clip-path", $$.clipPath) .attr("clip-path", $$.clipPathForGrid)
.attr('class', CLASS.grid + ' ' + CLASS.gridLines); .attr('class', CLASS.grid + ' ' + CLASS.gridLines);
$$.gridLines.append('g').attr("class", CLASS.xgridLines); $$.gridLines.append('g').attr("class", CLASS.xgridLines);
$$.gridLines.append('g').attr('class', CLASS.ygridLines); $$.gridLines.append('g').attr('class', CLASS.ygridLines);
...@@ -4097,6 +4100,9 @@ ...@@ -4097,6 +4100,9 @@
var isIE9 = window.navigator.appVersion.toLowerCase().indexOf("msie 9.") >= 0; var isIE9 = window.navigator.appVersion.toLowerCase().indexOf("msie 9.") >= 0;
return "url(" + (isIE9 ? "" : document.URL.split('#')[0]) + "#" + id + ")"; return "url(" + (isIE9 ? "" : document.URL.split('#')[0]) + "#" + id + ")";
}; };
c3_chart_internal_fn.appendClip = function (parent, id) {
return parent.append("clipPath").attr("id", id).append("rect");
};
c3_chart_internal_fn.getAxisClipX = function (forHorizontal) { c3_chart_internal_fn.getAxisClipX = function (forHorizontal) {
// axis line width + padding for left // axis line width + padding for left
return forHorizontal ? -(1 + 30) : -(this.margin.left - 1); return forHorizontal ? -(1 + 30) : -(this.margin.left - 1);
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -2,6 +2,9 @@ c3_chart_internal_fn.getClipPath = function (id) { ...@@ -2,6 +2,9 @@ c3_chart_internal_fn.getClipPath = function (id) {
var isIE9 = window.navigator.appVersion.toLowerCase().indexOf("msie 9.") >= 0; var isIE9 = window.navigator.appVersion.toLowerCase().indexOf("msie 9.") >= 0;
return "url(" + (isIE9 ? "" : document.URL.split('#')[0]) + "#" + id + ")"; return "url(" + (isIE9 ? "" : document.URL.split('#')[0]) + "#" + id + ")";
}; };
c3_chart_internal_fn.appendClip = function (parent, id) {
return parent.append("clipPath").attr("id", id).append("rect");
};
c3_chart_internal_fn.getAxisClipX = function (forHorizontal) { c3_chart_internal_fn.getAxisClipX = function (forHorizontal) {
// axis line width + padding for left // axis line width + padding for left
return forHorizontal ? -(1 + 30) : -(this.margin.left - 1); return forHorizontal ? -(1 + 30) : -(this.margin.left - 1);
......
...@@ -71,9 +71,11 @@ c3_chart_internal_fn.initParams = function () { ...@@ -71,9 +71,11 @@ c3_chart_internal_fn.initParams = function () {
$$.clipId = "c3-" + (+new Date()) + '-clip', $$.clipId = "c3-" + (+new Date()) + '-clip',
$$.clipIdForXAxis = $$.clipId + '-xaxis', $$.clipIdForXAxis = $$.clipId + '-xaxis',
$$.clipIdForYAxis = $$.clipId + '-yaxis', $$.clipIdForYAxis = $$.clipId + '-yaxis',
$$.clipIdForGrid = $$.clipId + '-grid',
$$.clipPath = $$.getClipPath($$.clipId), $$.clipPath = $$.getClipPath($$.clipId),
$$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis), $$.clipPathForXAxis = $$.getClipPath($$.clipIdForXAxis),
$$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis); $$.clipPathForYAxis = $$.getClipPath($$.clipIdForYAxis);
$$.clipPathForGrid = $$.getClipPath($$.clipIdForGrid),
$$.dragStart = null; $$.dragStart = null;
$$.dragging = false; $$.dragging = false;
...@@ -130,7 +132,7 @@ c3_chart_internal_fn.initParams = function () { ...@@ -130,7 +132,7 @@ c3_chart_internal_fn.initParams = function () {
c3_chart_internal_fn.initWithData = function (data) { c3_chart_internal_fn.initWithData = function (data) {
var $$ = this, d3 = $$.d3, config = $$.config; var $$ = this, d3 = $$.d3, config = $$.config;
var main, binding = true; var defs, main, binding = true;
if ($$.initPie) { $$.initPie(); } if ($$.initPie) { $$.initPie(); }
if ($$.initBrush) { $$.initBrush(); } if ($$.initBrush) { $$.initBrush(); }
...@@ -190,10 +192,11 @@ c3_chart_internal_fn.initWithData = function (data) { ...@@ -190,10 +192,11 @@ c3_chart_internal_fn.initWithData = function (data) {
.on('mouseleave', function () { return config.onmouseout.call($$); }); .on('mouseleave', function () { return config.onmouseout.call($$); });
// Define defs // Define defs
$$.defs = $$.svg.append("defs"); defs = $$.svg.append("defs");
$$.defs.append("clipPath").attr("id", $$.clipId).append("rect"); $$.clipChart = $$.appendClip(defs, $$.clipId);
$$.defs.append("clipPath").attr("id", $$.clipIdForXAxis).append("rect"); $$.clipXAxis = $$.appendClip(defs, $$.clipIdForXAxis);
$$.defs.append("clipPath").attr("id", $$.clipIdForYAxis).append("rect"); $$.clipYAxis = $$.appendClip(defs, $$.clipIdForYAxis);
$$.clipGrid = $$.appendClip(defs, $$.clipIdForGrid);
$$.updateSvgSize(); $$.updateSvgSize();
// Define regions // Define regions
...@@ -730,7 +733,7 @@ c3_chart_internal_fn.transformAll = function (withTransition, transitions) { ...@@ -730,7 +733,7 @@ c3_chart_internal_fn.transformAll = function (withTransition, transitions) {
c3_chart_internal_fn.updateSvgSize = function () { c3_chart_internal_fn.updateSvgSize = function () {
var $$ = this; var $$ = this;
$$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight); $$.svg.attr('width', $$.currentWidth).attr('height', $$.currentHeight);
$$.svg.select('#' + $$.clipId).select('rect') $$.svg.selectAll(['#' + $$.clipId, '#' + $$.clipIdForGrid]).select('rect')
.attr('width', $$.width) .attr('width', $$.width)
.attr('height', $$.height); .attr('height', $$.height);
$$.svg.select('#' + $$.clipIdForXAxis).select('rect') $$.svg.select('#' + $$.clipIdForXAxis).select('rect')
......
c3_chart_internal_fn.initGrid = function () { c3_chart_internal_fn.initGrid = function () {
var $$ = this, config = $$.config, d3 = $$.d3; var $$ = this, config = $$.config, d3 = $$.d3;
$$.grid = $$.main.append('g') $$.grid = $$.main.append('g')
.attr("clip-path", $$.clipPath) .attr("clip-path", $$.clipPathForGrid)
.attr('class', CLASS.grid); .attr('class', CLASS.grid);
if (config.grid_x_show) { if (config.grid_x_show) {
$$.grid.append("g").attr("class", CLASS.xgrids); $$.grid.append("g").attr("class", CLASS.xgrids);
...@@ -21,7 +21,7 @@ c3_chart_internal_fn.initGrid = function () { ...@@ -21,7 +21,7 @@ c3_chart_internal_fn.initGrid = function () {
c3_chart_internal_fn.initGridLines = function () { c3_chart_internal_fn.initGridLines = function () {
var $$ = this, d3 = $$.d3; var $$ = this, d3 = $$.d3;
$$.gridLines = $$.main.append('g') $$.gridLines = $$.main.append('g')
.attr("clip-path", $$.clipPath) .attr("clip-path", $$.clipPathForGrid)
.attr('class', CLASS.grid + ' ' + CLASS.gridLines); .attr('class', CLASS.grid + ' ' + CLASS.gridLines);
$$.gridLines.append('g').attr("class", CLASS.xgridLines); $$.gridLines.append('g').attr("class", CLASS.xgridLines);
$$.gridLines.append('g').attr('class', CLASS.ygridLines); $$.gridLines.append('g').attr('class', CLASS.ygridLines);
......
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