Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 8th, 2012  |  syntax: None  |  size: 1.66 KB  |  hits: 24  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <script src="http://raphaeljs.com/raphael.js" type="text/javascript" charset="utf-8"></script>
  2.  
  3. <style type="text/css" media="screen">
  4.   body {
  5.     background-color: black;
  6.     color: white;
  7.     font-family: helvetica;
  8.   }
  9.  
  10.   #display {
  11.     font-size:2em;
  12.   }
  13. </style>
  14.  
  15. <div id="display">Hover to see value</div>
  16. <div id="graph"></div>
  17.  
  18. <script>
  19.   var graph = Raphael("graph", 300, 300)
  20.  
  21.   graph.customAttributes.arc = function (xloc, yloc, value, total, R) {
  22.     var alpha = 360 / total * value,
  23.       a = (90 - alpha) * Math.PI / 180,
  24.       x = xloc + R * Math.cos(a),
  25.       y = yloc - R * Math.sin(a),
  26.       path;
  27.     if (total == value) {
  28.       path = [["M", xloc, yloc - R], ["A", R, R, 0, 1, 1, xloc - .01, yloc - R]];
  29.     } else {
  30.       path = [["M", xloc, yloc - R], ["A", R, R, 0, +(alpha > 180), 1, x, y]];
  31.     }
  32.     return {path: path};
  33.   };
  34.  
  35.   var makeArc = (function () {
  36.     var width = 10,
  37.         count = 0,
  38.         duration = 800,
  39.         ease = ">",
  40.         xpos = 100,
  41.         ypos = 100,
  42.         resetDisplay = function () {
  43.           display.innerHTML = "Hover to see value"
  44.         }
  45.  
  46.     return function (value, color, hoverCallback) {
  47.       var radius = (++count * 9.5) + 20
  48.       var arc = graph.path().attr({"stroke": color, "stroke-width": 10, arc: [xpos, ypos, 0, 100, radius]});
  49.  
  50.       arc.animate({arc: [xpos, ypos, value, 100, radius]}, duration, ease);
  51.       arc.hover(function () {
  52.         display.innerHTML = "current value = " + value
  53.       }, resetDisplay)
  54.     }
  55.   })()
  56.  
  57.   var colors = ["#005CFF", "#004BCC", "#003DA6", "#002F7F", "#002159"]
  58.  
  59.   for (var i=0; i < 5; i++) {
  60.     var val = Math.floor(Math.random() * 100)
  61.     makeArc(val, colors[i])
  62.   };
  63. </script>