API Docs for:
Show:

File: addon/mixins/graph-line-utils.js

  1. import Ember from 'ember';
  2.  
  3. /**
  4. @namespace mixins
  5. @class graph-line-utils
  6. @extends Ember.Mixin
  7. */
  8. export default Ember.Mixin.create({
  9.  
  10. /**
  11. Create a d3 line function from a given scales and interpolation
  12.  
  13. @method createLineFn
  14. @param xScale {Function} d3 scale function
  15. @param yScale {Function} d3 scale function
  16. @param interpolate {String} d3 interpolator name
  17. @return {Function} a d3 function that will create SVG path data from a given data set.
  18. */
  19. createLineFn: function(xScale, yScale, interpolate){
  20. var interp = interpolate || 'linear';
  21.  
  22. var xMod = xScale.rangeBand ? xScale.rangeBand() / 2 : 0;
  23. var yMod = yScale.rangeBand ? yScale.rangeBand() / 2 : 0;
  24.  
  25. return function(data) {
  26. if(!data || data.length === 0) {
  27. return 'M0,0';
  28. }
  29.  
  30. return d3.svg.line()
  31. .x(function (d) { return (xScale(d[0]) || 0) + xMod; })
  32. .y(function (d) { return (yScale(d[1]) || 0) + yMod; })
  33. .interpolate(interp)(data);
  34. };
  35. }
  36. });