| <!DOCTYPE HTML> | |
| <html> | |
| 	<head> | |
| 		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | |
| 		<title>Highcharts Example</title> | |
| 
 | |
| 		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> | |
| 		<style type="text/css"> | |
| ${demo.css} | |
| 		</style> | |
| 		<script type="text/javascript"> | |
| $(function () { | |
| 
 | |
|     /** | |
|      * Get the current time | |
|      */ | |
|     function getNow() { | |
|         var now = new Date(); | |
| 
 | |
|         return { | |
|             hours: now.getHours() + now.getMinutes() / 60, | |
|             minutes: now.getMinutes() * 12 / 60 + now.getSeconds() * 12 / 3600, | |
|             seconds: now.getSeconds() * 12 / 60 | |
|         }; | |
|     } | |
| 
 | |
|     /** | |
|      * Pad numbers | |
|      */ | |
|     function pad(number, length) { | |
|         // Create an array of the remaining length + 1 and join it with 0's | |
|         return new Array((length || 2) + 1 - String(number).length).join(0) + number; | |
|     } | |
| 
 | |
|     var now = getNow(); | |
| 
 | |
|     // Create the chart | |
|     $('#container').highcharts({ | |
| 
 | |
|         chart: { | |
|             type: 'gauge', | |
|             plotBackgroundColor: null, | |
|             plotBackgroundImage: null, | |
|             plotBorderWidth: 0, | |
|             plotShadow: false, | |
|             height: 200 | |
|         }, | |
| 
 | |
|         credits: { | |
|             enabled: false | |
|         }, | |
| 
 | |
|         title: { | |
|             text: 'The Highcharts clock' | |
|         }, | |
| 
 | |
|         pane: { | |
|             background: [{ | |
|                 // default background | |
|             }, { | |
|                 // reflex for supported browsers | |
|                 backgroundColor: Highcharts.svg ? { | |
|                     radialGradient: { | |
|                         cx: 0.5, | |
|                         cy: -0.4, | |
|                         r: 1.9 | |
|                     }, | |
|                     stops: [ | |
|                         [0.5, 'rgba(255, 255, 255, 0.2)'], | |
|                         [0.5, 'rgba(200, 200, 200, 0.2)'] | |
|                     ] | |
|                 } : null | |
|             }] | |
|         }, | |
| 
 | |
|         yAxis: { | |
|             labels: { | |
|                 distance: -20 | |
|             }, | |
|             min: 0, | |
|             max: 12, | |
|             lineWidth: 0, | |
|             showFirstLabel: false, | |
| 
 | |
|             minorTickInterval: 'auto', | |
|             minorTickWidth: 1, | |
|             minorTickLength: 5, | |
|             minorTickPosition: 'inside', | |
|             minorGridLineWidth: 0, | |
|             minorTickColor: '#666', | |
| 
 | |
|             tickInterval: 1, | |
|             tickWidth: 2, | |
|             tickPosition: 'inside', | |
|             tickLength: 10, | |
|             tickColor: '#666', | |
|             title: { | |
|                 text: 'Powered by<br/>Highcharts', | |
|                 style: { | |
|                     color: '#BBB', | |
|                     fontWeight: 'normal', | |
|                     fontSize: '8px', | |
|                     lineHeight: '10px' | |
|                 }, | |
|                 y: 10 | |
|             } | |
|         }, | |
| 
 | |
|         tooltip: { | |
|             formatter: function () { | |
|                 return this.series.chart.tooltipText; | |
|             } | |
|         }, | |
| 
 | |
|         series: [{ | |
|             data: [{ | |
|                 id: 'hour', | |
|                 y: now.hours, | |
|                 dial: { | |
|                     radius: '60%', | |
|                     baseWidth: 4, | |
|                     baseLength: '95%', | |
|                     rearLength: 0 | |
|                 } | |
|             }, { | |
|                 id: 'minute', | |
|                 y: now.minutes, | |
|                 dial: { | |
|                     baseLength: '95%', | |
|                     rearLength: 0 | |
|                 } | |
|             }, { | |
|                 id: 'second', | |
|                 y: now.seconds, | |
|                 dial: { | |
|                     radius: '100%', | |
|                     baseWidth: 1, | |
|                     rearLength: '20%' | |
|                 } | |
|             }], | |
|             animation: false, | |
|             dataLabels: { | |
|                 enabled: false | |
|             } | |
|         }] | |
|     }, | |
| 
 | |
|         // Move | |
|         function (chart) { | |
|             setInterval(function () { | |
| 
 | |
|                 now = getNow(); | |
| 
 | |
|                 var hour = chart.get('hour'), | |
|                     minute = chart.get('minute'), | |
|                     second = chart.get('second'), | |
|                     // run animation unless we're wrapping around from 59 to 0 | |
|                     animation = now.seconds === 0 ? | |
|                             false : | |
|                             { | |
|                                 easing: 'easeOutElastic' | |
|                             }; | |
| 
 | |
|                 // Cache the tooltip text | |
|                 chart.tooltipText = | |
|                     pad(Math.floor(now.hours), 2) + ':' + | |
|                     pad(Math.floor(now.minutes * 5), 2) + ':' + | |
|                     pad(now.seconds * 5, 2); | |
| 
 | |
|                 hour.update(now.hours, true, animation); | |
|                 minute.update(now.minutes, true, animation); | |
|                 second.update(now.seconds, true, animation); | |
| 
 | |
|             }, 1000); | |
| 
 | |
|         }); | |
| }); | |
| 
 | |
| // Extend jQuery with some easing (copied from jQuery UI) | |
| $.extend($.easing, { | |
|     easeOutElastic: function (x, t, b, c, d) { | |
|         var s=1.70158;var p=0;var a=c; | |
|         if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3; | |
|         if (a < Math.abs(c)) { a=c; var s=p/4; } | |
|         else var s = p/(2*Math.PI) * Math.asin (c/a); | |
|         return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; | |
|     } | |
| }); | |
| 		</script> | |
| 	</head> | |
| 	<body> | |
| <script src="../../js/highcharts.js"></script> | |
| <script src="../../js/highcharts-more.js"></script> | |
| 
 | |
| <div id="container" style="width: 300px; height: 300px; margin: 0 auto"></div> | |
| 
 | |
| 	</body> | |
| </html>
 |