<?php 
 
include_once "../d3.classes.inc.php";
 
?>
 
<a href="http://mbostock.github.com/d3/tutorial/bar-1.html">
 
    A Bar Chart 1
 
</a>
 
 
<hr>
 
<script type="text/javascript" src="http://mbostock.github.com/d3/d3.js?2.7.2"></script>
 
<style>
 
.chart div {
 
   font: 10px sans-serif;
 
   background-color: steelblue;
 
   text-align: right;
 
   padding: 3px;
 
   margin: 1px;
 
   color: white;
 
}
 
.chart rect {
 
   stroke: white;
 
      fill: steelblue;
 
}
 
</style>
 
 
<script>
 
// definition
 
 
<?php
 
  # create data
 
  # hack, php has no literal object
 
  $data = d3::variable(
 
    f3()->add(d3::concat("return ", d3()->range(10)->map(
 
            f3("i")->add(d3::concat("return ", o3(array("x" => d3::concat("i","/", 9) , "y"=> d3::unescape(Math()->random())))))
 
    ))), "data"
 
  );
 
 
  echo $data;
 
?>
 
 
var d = data();
 
console.log(d);
 
 
<?php
 
  
 
  $data = d3::variable(
 
    array(4, 8, 15, 16, 23, 42)
 
                , 'data'
 
  );
 
  echo $data;
 
?>
 
 
<?php 
 
  # create x
 
  $x = d3::variable(
 
      d3()
 
        ->scale(d3::property)
 
        ->linear()
 
        ->domain(array(0, d3()->max($data->getVar())))
 
        ->range(array(0,420))
 
      , "x"
 
  );
 
  echo $x;
 
?>
 
 
<?php
 
  # create y
 
  $y = d3::variable(
 
    d3()
 
      ->scale(d3::property)
 
      ->ordinal()
 
      ->domain($data->getVar())
 
      ->rangeBands(array(0,120))
 
    , "y"
 
  );
 
  echo $y;
 
  
 
?>
 
 
 
<?php   
 
  # create hr element
 
   echo d3()->select("body")->append("hr");
 
?>
 
 
 
<?php 
 
  # first chart  
 
  $d = new d3();
 
  $d->select("body")
 
    ->append("div")
 
    ->attr("class", "chart")
 
    ->selectAll("div")
 
    ->data($data->getVar())
 
    ->enter()
 
    ->append("div")
 
    ->style("width", function ($d){ return $d * 10 + "px";})
 
    ->text(function($d){ return $d;})
 
    ;
 
   echo $d;
 
  
 
?>
 
 
<?php   
 
  # create hr element
 
   echo d3()->select("body")->append("hr");
 
?>
 
 
 
<?php 
 
  # second chart
 
  echo d3()->select("body")
 
    ->append("svg")
 
    ->attr("class", "chart")
 
    ->attr("width", 420)
 
    ->attr("height", d3::concat(20,'*', 'data.length'))
 
    ->selectAll("rect")->data($data->getVar())
 
    ->enter()->append("rect")
 
    ->attr("y", function ($d, $i){ return $i * 20;})
 
    ->attr("width", $x->getVar())
 
    ->attr("height", 20)
 
    ;
 
 
 
?>
 
 
 
<?php   
 
  # create hr element
 
   echo d3()->select("body")->append("hr");
 
?>
 
 
 
<?php 
 
  # third chart
 
  $chart = d3::variable(
 
          d3()->select("body")
 
            ->append("svg")
 
              ->attr("class", "chart")
 
              ->attr("width", 440)
 
              ->attr("height", 140)
 
              ->style("margin-left", "32px")
 
            
 
            ->append("g")
 
              ->attr("transform", "translate(10,15)")
 
          , "chart"
 
  );
 
  echo $chart;
 
 
?>
 
 
 
<?php
 
 
  echo d3($chart->getVar())
 
            ->selectAll("line")
 
              ->data( d3( $x->getVar() )->ticks(10))
 
              ->enter()->append("line")
 
                ->attr("x1", $x->getVar())
 
                ->attr("x2", $x->getVar())
 
                ->attr("y1", 0)
 
                ->attr("y2", 120)
 
                ->attr("stroke", "#ccc");
 
  
 
?>
 
 
 
<?php
 
               
 
  echo d3($chart->getVar())                
 
            ->selectAll(".rule")
 
              ->data( d3( $x->getVar() )->ticks(10))
 
              ->enter()->append("text")
 
              ->attr("x", $x->getVar())
 
              ->attr("y", 0)
 
              ->attr("dy", -3)
 
              ->attr("text-anchor", "middle")
 
              ->text(d3::variable("String"));
 
 
?>
 
 
 
<?php
 
              
 
  echo d3($chart->getVar())
 
            ->selectAll("rect")
 
              ->data($data->getVar())
 
              ->enter()->append("rect")
 
                ->attr("y", $y->getVar())
 
                ->attr("width", $x->getVar())
 
                ->attr("height", d3($y->getVar())->rangeBand() );
 
?>
 
 
 
<?php 
 
 
  echo d3($chart->getVar())
 
      ->selectAll(".bar")
 
        ->data($data->getVar())
 
      ->enter()->append("text")
 
        ->attr("class", "bar")
 
                ->attr("x", $x->getVar())
 
                ->attr("y", function($d) {return $y($d) + $y->rangeBand() / 2;})
 
                ->attr("dx", -3)
 
                ->attr("dy", ".35em")
 
                ->attr("text-anchor", "end")
 
                ->text(d3::variable("String"));
 
 
?>
 
 
 
<?php
 
 
echo d3($chart->getVar())                
 
              ->append("line")
 
              ->attr("y1", 0)
 
              ->attr("y2", 120)
 
              ->style("stroke", "#000")
 
            ;
 
 
 
?>
 
 
 
</script>
 
 
 |