Advertisement
Guest User

Untitled

a guest
Jul 12th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.36 KB | None | 0 0
  1. <script type = "text/javascript">
  2. // Set the dimensions of the canvas / graph
  3. var margin = {top: 30, right: 20, bottom: 30, left: 50},
  4. width = 400 - margin.left - margin.right,
  5. height = 400 - margin.top - margin.bottom;
  6.  
  7. // Parse the date / time
  8. //var parseDate = d3.time.format("%d-%b-%y").parse;
  9. // Set the ranges
  10. var x = d3.scale.linear()
  11. .domain([0,width])
  12. .range([0, width]);
  13. var y = d3.scale.linear()
  14. .domain([height,0])
  15. .range([height, 0]);
  16.  
  17. // Define the axes
  18. var xAxis = d3.svg.axis().scale(x)
  19. .orient("bottom").ticks(0);
  20.  
  21. var yAxis = d3.svg.axis().scale(y)
  22. .orient("left").ticks(0);
  23.  
  24. // Define the line
  25. var valueline = d3.svg.line()
  26. .x(function(d) { return x(d.x); })
  27. .y(function(d) { return y(d.y); });
  28.  
  29. // Adds the svg canvas
  30. var svg = d3.select("body")
  31. .append("svg")
  32. .attr("width", width + margin.left + margin.right)
  33. .attr("height", height + margin.top + margin.bottom)
  34. .style("border", "1px solid black")
  35. .append("g")
  36. .attr("transform",
  37. "translate(" + margin.left + "," + margin.top + ")");
  38.  
  39.  
  40. var path;
  41. var circle;
  42. var text;
  43.  
  44. // Get the initial data
  45. d3.json("homewalkdatafromdb.php", function(error, data) {
  46.  
  47. console.log("Beginning database call");
  48. data.forEach(function(d) {
  49. d.x = +d.x;
  50. d.y = +d.y;
  51. });
  52.  
  53. // Scale the range of the data
  54. x.domain(d3.extent(data, function(d) { return d.x; }));
  55. y.domain([0, d3.max(data, function(d) { return d.y; })]);
  56.  
  57. // Add the valueline path.
  58. path =svg.append("path")
  59. .attr("class", "line")
  60. .attr("d", valueline(data))
  61. .transition()
  62. .duration(data.length*100)
  63. .attrTween("d", pathTween);
  64. // console.log(path);
  65. function pathTween() {
  66. var interpolate = d3.scale.quantile()
  67. .domain([0,1])
  68. .range(d3.range(1, data.length + 1));
  69. //console.log(t);
  70. return function(t) {
  71.  
  72. return valueline(data.slice(0, interpolate(t)));
  73. };
  74. }
  75.  
  76. //add circle
  77. circle = svg.append("circle")
  78. .data(data.slice(0,1))
  79. .attr("r", 7)
  80. .style("fill","red");
  81. //.attr("transform", "translate(" + data[0] + ")");
  82.  
  83. transition();
  84.  
  85. function transition() {
  86. circle.transition()
  87. .duration(data.length*100)
  88. .attrTween("transform", translateAlong(path.node()))
  89. .each("end", runNewData);
  90.  
  91. }
  92.  
  93. function translateAlong(path) {
  94. // var l = path.getTotalLength();
  95. //console.log("l = " + l + " data.length*100 = " + data.length*100);
  96. //console.log(pastDataRunning);
  97. return function(d, i, a) {
  98. return function(t) {
  99. var p = path.getPointAtLength(t*data.length*100);
  100. return "translate(" + p.x + "," + p.y + ")";
  101. };
  102. };
  103. }
  104.  
  105. text = svg.append("text")
  106. .data(data)
  107. .style("fill","red");
  108. transition1();
  109. function transition1(){
  110. text.transition()
  111. .duration(data.length*100)
  112. .attrTween("transform",translateAlong1())
  113. .each("end", runNewData);
  114. }
  115. function translateAlong1(path){
  116. return function(d,i,a){
  117. return function(t){
  118. var p1 = path.getPointAtLength(t*data.length*100);
  119. return "X is " +p1.x+ "Y is "+p1.y+;
  120. };
  121. };
  122. }
  123.  
  124.  
  125.  
  126. //to complete the room
  127. svg.append("g")
  128. .attr("class", "x axis")
  129. .attr("transform", "translate(0," + (height) + ")")
  130. .call(xAxis);
  131.  
  132. // to complete the room
  133. svg.append("g")
  134. .attr("class", "x axis")
  135. .attr("transform", "translate(0," + 0 + ")")
  136. .call(xAxis);
  137.  
  138. // Add the Y Axis
  139. svg.append("g")
  140. .attr("class", "y axis")
  141. .call(yAxis);
  142.  
  143. // to complete room
  144. svg.append("g")
  145. .attr("class", "y axis")
  146. .attr("transform", "translate("+ width +",0)")
  147. .call(yAxis);
  148.  
  149.  
  150. // update(function(d){return "X: "+ d.x+", Y: "+d.y + ". Activity: "+d.z+". T: "+d.t+". V:"+d.v;});
  151. /*setInterval(function()
  152. {
  153. update(function(d){return "X: "+ d.x+", Y: "+d.y + ". Z: "+d.z+". T: "+d.t+". V:"+d.v;});
  154.  
  155. },100);*/
  156.  
  157. /*text = svg.append("text").data(data).transition().duration(1000)
  158. .text(function(d){return "X position: "+ d.x+", Y position: "+d.y + ". Activity: "+d.z;})
  159. .attr("font-family", "sans-serif")
  160. .attr("x", 10)
  161. .attr("y", height+20);*/
  162.  
  163.  
  164. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement