API Docs for:
Show:

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

import Ember from 'ember';

/**
  Utility functions for drawing an area.
  
  @namespace mixins
  @class graph-area-utils
  @extends Ember.Mixin
*/
export default Ember.Mixin.create({

  /**
    Creates a d3 area function from a given set of scales and an interpolator

    @method createAreaFn
    @param xScale {Function} a d3 scale
    @param yScale {Function} a d3 scale
    @param interpolator {String} the name of the d3 interpolator to use.
    @return {Function} a function that when called will create SVG path data.
  */
  createAreaFn: function(xScale, yScale, interpolator) {
      var interp = interpolator || '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.area()
          .x(function (d) {
            return (xScale(d[0]) || 0) + xMod;
          })
          .y0(function (d) {
            return (yScale(d[1]) || 0) + yMod;
          })
          .y1(function (d) {
            return (yScale(d[2]) || 0) + yMod;
          })
          .interpolate(interp)(data);
      };
  }
});