diff --git a/c3.css b/c3.css index 5d63a1e..c5d23cb 100644 --- a/c3.css +++ b/c3.css @@ -33,7 +33,7 @@ text { } /*-- Point --*/ -.-circle._e_ { +.-circle._expanded_ { stroke-width: 1px; stroke: white; } @@ -44,12 +44,12 @@ text { /*-- Bar --*/ -.-bar._e_ { +.-bar._expanded_ { stroke-width: 1px; fill-opacity: 0.6; } /* TODO: use this*/ -.-bar._s_ { +.-bar._selected_ { stroke-width: 1px; fill-opacity: 0.3; } diff --git a/c3.js b/c3.js index b0389c8..a01c203 100644 --- a/c3.js +++ b/c3.js @@ -10,6 +10,8 @@ var c3 = { data : {} }, cache = {}; + var EXPANDED = '_expanded_', SELECTED = '_selected_', INCLUDED = '_included_'; + /*-- Handle Config --*/ function checkConfig (key, message) { @@ -867,13 +869,13 @@ // Expand circles if needed if (__point_focus_expand_enabled) { main.selectAll('.-circle-'+i) - .classed("_e_", true) + .classed(EXPANDED, true) .attr('r', __point_focus_expand_r); } // Expand bars main.selectAll(".-bar-"+i) - .classed("_e_", true); + .classed(EXPANDED, true); // Show xgrid focus line main.selectAll('line.xgrid-focus') @@ -893,12 +895,12 @@ tooltip.style("visibility", "hidden"); // Undo expanded circles main.selectAll('.-circle-'+i) - .filter(function(){ return d3.select(this).classed('_e_'); }) - .classed("_e_", false) + .filter(function(){ return d3.select(this).classed(EXPANDED); }) + .classed(EXPANDED, false) .attr('r', __point_r); // Undo expanded bar main.selectAll(".-bar-"+i) - .classed("_e_", false); + .classed(EXPANDED, false); }) .on('mousemove', function(d,i){ if ( ! __data_selection_enabled || dragging) return; @@ -907,7 +909,7 @@ main.selectAll('.-shape-'+i) .filter(function(d){ return __data_selection_isselectable(d); }) .each(function(d){ - var _this = d3.select(this).classed('_e_', true); + var _this = d3.select(this).classed(EXPANDED, true); if (this.nodeName === 'circle') _this.attr('r', __point_focus_expand_r); d3.select('.event-rect-'+i).style('cursor', null); }) @@ -922,8 +924,8 @@ }) .each(function(d){ var _this = d3.select(this); - if ( ! _this.classed('_e_')) { - _this.classed('_e_', true); + if ( ! _this.classed(EXPANDED)) { + _this.classed(EXPANDED, true); if (this.nodeName === 'circle') _this.attr('r', __point_select_r); } d3.select('.event-rect-'+i).style('cursor', 'pointer'); @@ -932,7 +934,7 @@ .on('click', function(d,i) { main.selectAll('.-shape-'+i).each(function(d){ var _this = d3.select(this), - isSelected = _this.classed('_s_'); + isSelected = _this.classed(SELECTED); var isWithin = false, toggle; if (this.nodeName === 'circle') { isWithin = isWithinCircle(this, __point_select_r*1.5); @@ -944,7 +946,7 @@ } if (__data_selection_grouped || isWithin) { if (__data_selection_enabled && __data_selection_isselectable(d)) { - _this.classed('_s_', !isSelected); + _this.classed(SELECTED, !isSelected); toggle(!isSelected, _this, d, i); } __point_onclick(d, _this); // TODO: should be __data_onclick @@ -972,8 +974,8 @@ .filter(function(d){ return __data_selection_isselectable(d); }) .each(function(d,i){ var _this = d3.select(this), - isSelected = _this.classed('_s_'), - isIncluded = _this.classed('_i_'), + isSelected = _this.classed(SELECTED), + isIncluded = _this.classed(INCLUDED), _x, _y, _w, toggle, isWithin = false; if (this.nodeName === 'circle') { _x = _this.attr("cx")*1; @@ -989,9 +991,9 @@ isWithin = minX < _x+_w && _x < maxX && _y < maxY; } if (isWithin ^ isIncluded) { - _this.classed('_i_', !isIncluded); + _this.classed(INCLUDED, !isIncluded); // TODO: included/unincluded callback here - _this.classed('_s_', !isSelected); + _this.classed(SELECTED, !isSelected); toggle(!isSelected, _this, d, i); } }); @@ -1012,7 +1014,7 @@ .style('opacity', 0) .remove(); main.selectAll('.-shape') - .classed('_i_', false); + .classed(INCLUDED, false); dragging = false; // TODO: add callback here }) @@ -1557,7 +1559,7 @@ var suffix = isDefined(target) ? '-' + target : ''; return d3.merge( main.selectAll('.-shapes' + suffix).selectAll('.-shape') - .filter(function(){ return d3.select(this).classed('_s_'); }) + .filter(function(){ return d3.select(this).classed(SELECTED); }) .map(function(d){ return d.map(function(_d){ return _d.__data__; }); }) ); }; @@ -1569,10 +1571,10 @@ unselectShape = (this.nodeName === 'circle') ? unselectPoint : unselectBar; if (indices.indexOf(i) >= 0) { if (__data_selection_isselectable(d) && (__data_selection_grouped || isUndefined(ids) || ids.indexOf(d.id) >= 0)) { - selectShape(d3.select(this).classed('_s_',true), d, i); + selectShape(d3.select(this).classed(SELECTED,true), d, i); } } else if (isDefined(resetOther) && resetOther) { - unselectShape(d3.select(this).classed('_s_',false), d, i); + unselectShape(d3.select(this).classed(SELECTED,false), d, i); } }); }; @@ -1583,7 +1585,7 @@ var unselectShape = (this.nodeName === 'circle') ? unselectPoint : unselectBar; if (isUndefined(indices) || indices.indexOf(i) >= 0) { if (__data_selection_isselectable(d) && (__data_selection_grouped || isUndefined(ids) || ids.indexOf(d.id) >= 0)) { - unselectShape(d3.select(this).classed('_s_',false), d, i); + unselectShape(d3.select(this).classed(SELECTED,false), d, i); } } });