API Docs for:
Show:

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);
      };
    }
  });