UNPKG

epoch-charting

Version:

A general purpose real-time charting library for building beautiful, smooth, and high performance visualizations.

299 lines (269 loc) 10.6 kB
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="../css/tests.css"> <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> <script src="../../../dist/js/epoch.js"></script> <script src="../js/data.js"></script> <link rel="stylesheet" type="text/css" href="../../../dist/css/epoch.css"> <style> body { background: #333; color: #d0d0d0; } a:link, a:visited { color: white; color: white; } </style> </head> <body class="epoch-theme-dark"> <h1>Real-time Chart Options and Events</h1> <p class="breadcrumbs"><a href="../index.html">Epoch Chart Tests</a> &raquo; Real-time Options and Events</p> <ol> <li><a href="#test-1">Resize</a></li> <li><a href="#test-2">Axes</a></li> <li><a href="#test-3">Ticks</a></li> <li><a href="#test-4">Tick Formats</a></li> <li><a href="#test-5">Margins</a></li> </ol> <!-- Test 1 --> <div id="test-1" class="test"> <h2>1. Resize</h2> <p>Correctly Resize a Real-time Chart.</p> <div class="epoch"></div> <p> <button class="playback">Play</button> | <button class="size" data-index="0">Size: Small</button> <button class="size" data-index="1">Size: Medium</button> <button class="size" data-index="2">Size: Large</button> </p> </div> <script> $(function() { var step = Math.PI / 30, data = time().add(function(x) { return Math.cos(x) + 1; }), interval = null; var sizes = [ { width: 400, height: 100 }, { width: 800, height: 150 }, { width: $('#test-1 .epoch').width(), height: $('#test-1 .epoch').height() } ]; var chart = $('#test-1 .epoch').epoch({ type: 'time.line', data: data.get([0, 2*Math.PI], step) }) function pushPoint() { chart.push(data.next(step)); } $('#test-1 .playback').click(function(e) { if (!interval) { interval = setInterval(function() { pushPoint() }, 1000); pushPoint(); $('#test-1 .playback').text('Pause'); } else { clearInterval(interval); interval = null; $('#test-1 .playback').text('Play'); } }); $('#test-1 .size').click(function(e) { var size = sizes[parseInt($(e.target).attr('data-index'))]; chart.option('width', size.width); chart.option('height', size.height); }); }); </script> <!-- Test 2 --> <div id="test-2" class="test"> <h2>2. Axes</h2> <div class="epoch"></div> <div class="controls"> <button class="playback">Play</button> | <button class="axes" data-index="0">All</button> <button class="axes" data-index="1">[left, right]</button> <button class="axes" data-index="2">[top, bottom]</button> <button class="axes" data-index="3">[left, bottom]</button> <button class="axes" data-index="4">[top, right]</button> <button class="axes" data-index="5">None</button> </div> </div> <script> $(function() { var step = Math.PI / 30, data = time().add(function(x) { return Math.sin(x) + 1; }), interval = null; var axes = [ ['top', 'left', 'bottom', 'right'], ['left', 'right'], ['top', 'bottom'], ['left', 'bottom'], ['top', 'right'], [] ]; var chart = $('#test-2 .epoch').epoch({ type: 'time.line', data: data.get([0, 2*Math.PI], step) }) function pushPoint() { chart.push(data.next(step)); } $('#test-2 .playback').click(function(e) { if (!interval) { interval = setInterval(function() { pushPoint() }, 1000); pushPoint(); $('#test-2 .playback').text('Pause'); } else { clearInterval(interval); interval = null; $('#test-2 .playback').text('Play'); } }); $('#test-2 button.axes').click(function(e) { chart.option('axes', axes[parseInt($(e.target).attr('data-index'))]); }); }); </script> <!-- Test 3 --> <div id="test-3" class="test"> <h2>3. Ticks</h2> <div class="epoch"></div> <p> <button class="playback">Play</button> | <button class="ticks" data-index="0">Normal</button> <button class="ticks" data-index="1">Many</button> </p> </div> <script> $(function() { var step = Math.PI / 30, data = time().add(function(x) { return Math.sqrt(x) * Math.sin(x) + 1; }), interval = null; var ticks = [ {time: 15, left: 5, right: 5}, {time: 5, left: 15, right: 15} ]; var chart = $('#test-3 .epoch').epoch({ type: 'time.line', data: data.get([0, 2*Math.PI], step), axes: ['top', 'left', 'bottom', 'right'] }) function pushPoint() { chart.push(data.next(step)); } $('#test-3 .playback').click(function(e) { if (!interval) { interval = setInterval(function() { pushPoint() }, 1000); pushPoint(); $('#test-3 .playback').text('Pause'); } else { clearInterval(interval); interval = null; $('#test-3 .playback').text('Play'); } }); $('#test-3 .ticks').click(function(e) { chart.option('ticks', ticks[parseInt($(e.target).attr('data-index'))]); }); }); </script> <!-- Test 4 --> <div id="test-4" class="test"> <h2>4. Tick Formats</h2> <div class="epoch"></div> <p> <button class="playback">Play</button> | <button class="tickFormats" data-index="0">Normal</button> <button class="tickFormats" data-index="1">Different</button> </p> </div> <script> $(function() { var step = Math.PI / 30, data = time().add(function(x) { return Math.abs(Math.sin(x)); }), interval = null; var tickFormats = [ { top: Epoch.Formats.seconds, bottom: Epoch.Formats.seconds, left: Epoch.Formats.si, right: Epoch.Formats.si }, { top: Epoch.Formats.si, bottom: Epoch.Formats.si, left: Epoch.Formats.percent, right: Epoch.Formats.percent } ]; var chart = $('#test-4 .epoch').epoch({ type: 'time.area', data: data.get([0, 2*Math.PI], step), axes: ['top', 'left', 'bottom', 'right'] }) function pushPoint() { chart.push(data.next(step)); } $('#test-4 .playback').click(function(e) { if (!interval) { interval = setInterval(function() { pushPoint() }, 1000); pushPoint(); $('#test-4 .playback').text('Pause'); } else { clearInterval(interval); interval = null; $('#test-4 .playback').text('Play'); } }); $('#test-4 .tickFormats').click(function(e) { chart.option('tickFormats', tickFormats[parseInt($(e.target).attr('data-index'))]); }); }); </script> <!-- Test 5 --> <div id="test-5" class="test"> <h2>5. Margins</h2> <div class="epoch"></div> <p> <button class="playback">Play</button> | <button class="margins" data-index="0">None</button> <button class="margins" data-index="1">Small</button> <button class="margins" data-index="2">Big</button> </p> </div> <script> $(function() { var step = Math.PI / 30, data = time().add(function(x) { return 1 - Math.abs(Math.cos(x)); }), interval = null; var margins = [ { top: 6, bottom: 6, left: 6, right: 6 }, { top: 20, bottom: 20, left: 20, right: 20 }, { top: 100, bottom: 50, left: 50, right: 50 } ]; var chart = $('#test-5 .epoch').epoch({ type: 'time.area', data: data.get([0, 2*Math.PI], step), axes: [] }) function pushPoint() { chart.push(data.next(step)); } $('#test-5 .playback').click(function(e) { if (!interval) { interval = setInterval(function() { pushPoint() }, 1000); pushPoint(); $('#test-5 .playback').text('Pause'); } else { clearInterval(interval); interval = null; $('#test-5 .playback').text('Play'); } }); $('#test-5 .margins').click(function(e) { chart.option('margins', margins[parseInt($(e.target).attr('data-index'))]); }); }); </script> </body> </html>