File: addon/mixins/graph-line-utils.js
- import Ember from 'ember';
-
- /**
- @namespace mixins
- @class graph-line-utils
- @extends Ember.Mixin
- */
- export default Ember.Mixin.create({
-
- /**
- Create a d3 line function from a given scales and interpolation
-
- @method createLineFn
- @param xScale {Function} d3 scale function
- @param yScale {Function} d3 scale function
- @param interpolate {String} d3 interpolator name
- @return {Function} a d3 function that will create SVG path data from a given data set.
- */
- createLineFn: function(xScale, yScale, interpolate){
- var interp = interpolate || 'linear';
-
- var xMod = xScale.rangeBand ? xScale.rangeBand() / 2 : 0;
- var yMod = yScale.rangeBand ? yScale.rangeBand() / 2 : 0;
-
- return function(data) {
- if(!data || data.length === 0) {
- return 'M0,0';
- }
-
- return d3.svg.line()
- .x(function (d) { return (xScale(d[0]) || 0) + xMod; })
- .y(function (d) { return (yScale(d[1]) || 0) + yMod; })
- .interpolate(interp)(data);
- };
- }
- });
-