|
|
- <!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>
|