Skip to content

Simple angular.js encapsulation of D3.js to allow drawing in individual html elements.

License

Notifications You must be signed in to change notification settings

brillozon-code/angular-bz-d3-panel

Repository files navigation

angular-bz-d3-panel

Version 1.0.0

Simple encapsulation of D3 to allow drawing within a defined panel in an HTML page.

Usage

Start by installing the built JavaScript module:

  bash> bower install angular-bz-d3-panel

Then add the module to the HTML file:

  ...
  <script src="bower_modules/angular-bz-d3-panel/bzD3Panel.min.js" type="text/javascript"></script>
  ...

Then use the HTML panel wherever you want to add a drawing:

  ...
  <body ng-app="application">
  ...
    <div ng-controller="PanelController">
      <bz-d3-panel data-content="panelData" data-render="renderPanel" data-redraw="redrawPanel">
        <p>
          This panel includes a drawing that has this caption.
        </p>
      </bz-d3-panel>
    </div>
  ...
  </body>
  ...

Where the panel controller scope includes the 'panelData' variable containing the data to be drawn, and the 'renderPanel' function that uses D3.js to draw that data.

  module("application",["bzD3"])
    .controller("PanelController",[ function() {
      $scope.panelData = { data: [ 15, 25, 35 ] };

      $scope.renderPanel = function(d3,svg,data) {
        svg.style('background-color','ivory');
      }

      $scope.redrawPanel = function(d3,svg,data) {
        var circles = svg.selectAll("circle")
                         .data(data)
                         .enter();
        circles.append("circle")
               .style("fill", "red")
               .style("stroke", "black")
               .style("stroke-width", "2")
               .attr("cx",function(d,i) {return 2*40*(i+1) + d;})
               .attr("cy",40)
               .attr("r",function(d) {return d;});
      }
    }])

Examples

Develop

  bash> grunt serve

Testing

  bash> grunt test

Deploy

  bash> grunt bower
  bash> git push origin master