diff options
author | Yves Fischer <yvesf-git@xapek.org> | 2011-10-23 21:14:40 +0200 |
---|---|---|
committer | Yves Fischer <yvesf-git@xapek.org> | 2011-10-30 11:33:54 +0100 |
commit | 770ba5201f5c60b2bb36602ff9d359f641e33125 (patch) | |
tree | 2200757f04efbc281c4b3714bfe2e4fe911193b6 /schall/static/RGraph/docs/context.html | |
parent | 77f5e686612898974e13f2a5df57c20e4e529363 (diff) | |
download | mini-octopus-770ba5201f5c60b2bb36602ff9d359f641e33125.tar.gz mini-octopus-770ba5201f5c60b2bb36602ff9d359f641e33125.zip |
Charting with flask, rgraph and custom "timeseries database"
Diffstat (limited to 'schall/static/RGraph/docs/context.html')
-rw-r--r-- | schall/static/RGraph/docs/context.html | 371 |
1 files changed, 371 insertions, 0 deletions
diff --git a/schall/static/RGraph/docs/context.html b/schall/static/RGraph/docs/context.html new file mode 100644 index 0000000..413b463 --- /dev/null +++ b/schall/static/RGraph/docs/context.html @@ -0,0 +1,371 @@ +<!DOCTYPE html > +<html> +<head> + <meta http-equiv="X-UA-Compatible" content="chrome=1"> + <!-- + /** + * o------------------------------------------------------------------------------o + * | This file is part of the RGraph package - you can learn more at: | + * | | + * | http://www.rgraph.net | + * | | + * | This package is licensed under the RGraph license. For all kinds of business | + * | purposes there is a small one-time licensing fee to pay and for non | + * | commercial purposes it is free to use. You can read the full license here: | + * | | + * | http://www.rgraph.net/LICENSE.txt | + * o------------------------------------------------------------------------------o + */ + --> + <title>RGraph: HTML5 Javascript charts library - Context menus</title> + + <meta name="keywords" content="rgraph html5 canvas chart docs context menus" /> + <meta name="description" content="RGraph: HTML5 Javascript charts library - Documentation about context menus" /> + + <meta property="og:title" content="RGraph: HTML5 Javascript charts library" /> + <meta property="og:description" content="A chart library based on the HTML5 canvas tag" /> + <meta property="og:image" content="http://www.rgraph.net/images/logo.png"/> + + <link rel="stylesheet" href="../css/website.css" type="text/css" media="screen" /> + <link rel="icon" type="image/png" href="../images/favicon.png"> + + <!-- Place this tag in your head or just before your close body tag --> + <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> + + <script src="../libraries/RGraph.common.core.js" ></script> + <script src="../libraries/RGraph.common.context.js" ></script> + <script src="../libraries/RGraph.common.zoom.js" ></script> + <script src="../libraries/RGraph.bar.js" ></script> + <script src="../libraries/RGraph.line.js" ></script> + <!--[if IE 8]><script src="../excanvas/excanvas.original.js"></script><![endif]--> + + <!-- Contextmenu CSS classes --> + <style> + .RGraph_contextmenu { + } + + .RGraph_contextmenu_background { + } + + .RGraph_contextmenu_item { + } + </style> + + + + <script> + var _gaq = _gaq || []; + _gaq.push(['_setAccount', 'UA-54706-2']); + _gaq.push(['_trackPageview']); + + (function() { + var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; + ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; + var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); + })(); + </script> +</head> +<body> + + + <!-- Social networking buttons --> + <div id="social_icons" class="warning" style="border-radius: 10px; top: 1px; position: fixed; width: 120px; height: 20px"> + <!-- <a title="Bookmark with delicious" href="http://delicious.com/save?jump=close&v=4&noui&jump=close&url=http://www.rgraph.net¬es=RGraph%20is%20a%20HTML5%20based%20javascript%20charts%20library%20supporting%20a%20wide%20range%20of%20different%20chart%20types&title=RGraph:%20Javascript%20charts%20%26%20graph%20library" target="_blank"><img src="../images/delicious.png" alt="Bookmark with delicious" width="22" height="22" border="0" style="position: relative; top: 1px" /></a> --> + <a href="http://twitter.com/home/?status=RGraph%3A%20Javascript+charts+library+http%3A%2F%2Fwww.rgraph.net+%23rgraph+%23html5+%23canvas+%23javascript+%23charts+@_rgraph" target="_blank" title="Mention RGraph on Twitter"><img src="../images/twitter.png" alt="Mention RGraph on Twitter"/></a> + <iframe src="http://www.facebook.com/plugins/like.php?app_id=253862424642173&href=http%3A%2F%2Fwww.rgraph.net&send=false&layout=button_count&width=450&show_faces=false&action=like&colorscheme=light&font=arial&height=21" scrolling="no" frameborder="0" style="width: 80px; height:21px; position: relative; top: 1px"></iframe> + </div> + + <script> + // Opera fix + if (navigator.userAgent.indexOf('Opera') == -1) { + document.getElementById("social_icons").style.position = 'fixed'; + } + </script> + + <div id="google_plusone"> + <!-- Place this tag where you want the +1 button to render --> + <g:plusone href="http://www.rgraph.net"></g:plusone> + </div> + <!-- Social networking buttons --> + + <div id="breadcrumb"> + <a href="../index.html">RGraph: HTML5 Javascript charts library</a> + > + <a href="index.html">Documentation</a> + > + Context menus + </div> + + <h1>RGraph: <span>HTML5 Javascript charts library</span> - Context menus</h1> + + + <script> + if (RGraph.isIE8()) { + document.write('<div style="background-color: #fee; border: 2px dashed red; padding: 5px"><b>Important</b><br /><br /> Internet Explorer 8 does not natively support the HTML5 canvas tag, so if you want to see the charts, you can either:<ul><li>Install <a href="http://code.google.com/chrome/chromeframe/">Google Chrome Frame</a></li><li>Use ExCanvas. This is provided in the RGraph Archive.</li><li>Use another browser entirely. Your choices are Firefox 3.5+, Chrome 2+, Safari 4+ or Opera 10.5+. </li></ul> <b>Note:</b> Internet Explorer 9 fully supports the canvas tag.</div>'); + } + </script> + + + + <div style="text-align: center; float: right"> + <canvas id="myCanvas" width="500" height="200">[No canvas support]</canvas><br /> + <small>(<a href="#mac">some browsers use a double left click</a>)</small> + </div> + + <ul> + <li><a href="#what">What are context menus?</a></li> + <li><a href="#look">What do they look like?</a></li> + <li><a href="#multiple">Can I have multiple levels of menus?</a></li> + <li><a href="#define">How do I define context menus?</a></li> + <li><a href="#seperators">Can I have "separators"?</a></li> + <li><a href="#bypass">How do I bypass them?</a></li> + <li><a href="#getshape">How do I get the underlying shape that was clicked on?</a></li> + <li><a href="#use">What can I use them for?</a></li> + <li><a href="#mac">Context menus, Macs, Safari, Opera and MSIE 9</a></li> + <li><a href="#events">Related events</a></li> + </ul> + + <a name="what"></a> + <br /> <br /> + <h3>What are context menus?</h3> + + <p> + Context menus are what you see when you click your right mouse button. With RGraph, you can specify custom menus + for your charts if you wish. This way you can define custom actions to be associated with menu items. Context menus are a + very easy way to extend the functionality of your charts, allowing you to associate presentation style functionality + with them. + </p> + + <p> + <b>Important:</b> Opera does not allow you to customise the context menu, so with this browser you + should use the left mouse button on the chart, instead of the right. + </p> + + <a name="look"></a> + <br /> <br /> + <h3>What do they look like?</h3> + + <img src="../images/context.png" width="148" height="90" alt="An RGraph context menu" style="float: right; margin-right: 200px; border: 2px dashed gray; margin-right: 280px" /> + + <p> + Context menus look like the image on the right. You can of course customise their look by using stylesheets. The CSS classes + you need to use are <b>RGraph_contextmenu_background</b>, <b>RGraph_contextmenu</b> and <b>RGraph_contextmenu_item</b>. Eg: + </p> + + <br clear="all" /> + + <pre class="code"> +<style type="text/css"> + .RGraph_contextmenu { + } + + .RGraph_contextmenu_item { + } + + .RGraph_contextmenu_background { + } +</style></pre> + + <p> + The "! important" is not necessary if you're not overriding a style that is set by the chart script. If you're having trouble, + it's a good idea to use it though. + </p> + + <a name="multiple"></a> + <br /> <br /> + <h3>Can I have multiple levels of menus?</h3> + + <p> + Yes, as of 24th April 2010 you can have a dual level context menu, which can reduce "option overload" in your user interface. + This example defines a simple context menu: + </p> + + <pre class="code"> +bar.Set('chart.contextmenu', [ + ['Zoom', RGraph.Zoom], + ['Application', <span style="color: green">[['Login...', function () {ModalDialog.Show('modaldialog_login', 300);}]]</span> ], + null, + ['Cancel', function () {}] + ]); +</pre> + + <p> + As you can see there could easily get to be a lot of arrays, so it may help you during development to structure your code by using + indentation. + </p> + + <a name="define"></a> + <br /> <br /> + <h3>How do I define context menus?</h3> + + <p> + Defining a context menu is quite a simple affair. Eg: + </p> + + <pre class="code"> +myBar.Set('chart.contextmenu', [ + ['Menu item 1', Callback1], + ['Menu item 2', Callback2] + ]);</pre> + + <p> + As you can see, the value is a two dimension array. The second being an array consisting of a string which is used as the name of the + menu item, and a function object (NOT the function name as a string). The function object is the function called when the menu item is selected. + </p> + + <a name="seperators"></a> + <br /> <br /> + <h3>Can I have "separators"?</h3> + + <p> + Yes. Simply pass null instead of an array as your menu item. Eg: + </p> + + <pre class="code"> +myBar.Set('chart.contextmenu', [ + ['Menu item 1', Callback1], + null, + ['Menu item 2', Callback2] + ]);</pre> + + <a name="bypass"></a> + <br /> <br /> + <h3>How do I bypass them?</h3> + + <p> + If for any reason you wish to access the browsers own context menu, you can hold down your CTRL key on your keyboard when you + click, and the canvas context menu will be bypassed. Try it on the chart below by holding your CTRL key whilst right clicking. + </p> + + + + + <a name="getshape"></a> + <br /> <br /> + + <canvas id="cvs" width="600" height="250" style="float: right">[No canvas support]</canvas> + + <h3>How do I get the underlying shape that was clicked on?</h3> + + <p> + In some circumstances you may want to know which bar/point/segment was right-clicked on when showing the context menu (if any). + In these cases you will find the pertinent information (the same as what you get from the various .get*() methods) on the + context menu object - which is held in the registry: <i>RGraph.Registry.Get('chart.contextmenu').__shape__</i>. The example bar chart + shows it in action. + </p> + + <pre class="code"> +<script> + function myListener (obj) + { + p(RGraph.Registry.Get('chart.contextmenu').__shape__) + } + RGraph.AddCustomEventListener(myBar, 'oncontextmenu', myListener); +</script> +</pre> + + + <a name="use"></a> + <br /> <br /> + <h3>What can I use them for?</h3> + + <p> + Since the context menu items run Javascript functions when selected, you can use them for pretty much + anything you want. For example you could make a presentation system, with the context menu controlling which + chart is shown on the canvas, like the example above. + </p> + + <a name="mac"></a> + <br /> <br /> + <h3>Context menus, Macs, Safari, Opera and MSIE 9</h3> + <p> + Mac Safari, Mac Firefox, Windows Safari and MSIE 9 (beta 1) can have trouble displaying the context menu. So for this reason, for these browsers, + the context menu is attached to a double click of the left mouse button. Opera doesn't support customising the context menu so + this browser also uses a left mouse button double click to trigger the context menu. + </p> + + <a name="events"></a> + <br /> <br /> + <h3>Related events</h3> + <p> + There are two context menu related events which you can utilise: + </p> + + <ul> + <li><i>onbeforecontextmenu</i></li> + <li><i>oncontextmenu</i></li> + </ul> + + <p> + As their names suggest, one fires before the contextmenu is shown, and one after. <b>Important:</b> Because of the + fading effect, it may seem that both events fire before the contextmenu is shown, however this is just due to the nature + of Javascript timers and the fact that alert()s will block them (pause them in effect). + </p> + + <script> + /** + * Shows the bar chart + */ + function ShowGraphOne () + { + RGraph.Clear(document.getElementById('myCanvas')); + + var bar = new RGraph.Bar('myCanvas', [[45,15],[16,23],[52,12],[33,64],[34,54],[62,33],[66,23],[12,23],[12,53],[16,45],[26,43],[46,42],[41,41],[32,46]]); + bar.Set('chart.colors', ['#66f', '#f66']); + bar.Set('chart.title', 'Data represented on a bar chart (with context menu)'); + bar.Set('chart.labels', ['1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th', '10th', '11th', '12th', '13th', '14th']); + bar.Set('chart.contextmenu', [['Zoom in', RGraph.Zoom], null, ['Chart', [['Bar chart', ShowGraphOne], ['Line chart', ShowGraphTwo]]], null, ['Cancel', function () {}]]); + bar.Set('chart.grouping', 'grouped'); + bar.Set('chart.zoom.hdir', 'left'); + bar.Set('chart.zoom.vdir', 'center'); + bar.Draw(); + } + + /** + * Show the line chart + */ + function ShowGraphTwo() + { + RGraph.Clear(document.getElementById('myCanvas')); + + var line = new RGraph.Line('myCanvas', [15,23,12,64,54,33,23,23,53,45,43,42,41,46], [45,16,52,33,34,62,66,12,12,16,26,46,41,32]); + line.Set('chart.title', 'Data represented on a line chart (context menu)'); + line.Set('chart.colors', ['#f66', '#66f']); + line.Set('chart.background.barcolor1', 'white'); + line.Set('chart.background.barcolor2', 'white'); + line.Set('chart.tickmarks', null); + line.Set('chart.linewidth', 3); + line.Set('chart.hmargin', 550 / 26); + line.Set('chart.labels', ['1st', '2nd', '3rd', '4th', '5th', '6th', '7th', '8th', '9th', '10th', '11th', '12th', '13th', '14th']); + + line.Set('chart.contextmenu', [['Zoom in', RGraph.Zoom], null, ['Chart', [['Bar chart', ShowGraphOne],['Line chart', ShowGraphTwo]]], null,['Cancel', function () {}]]); + line.Set('chart.zoom.hdir', 'left'); + line.Set('chart.zoom.vdir', 'center'); + + line.Draw(); + } + + /** + * Show the first chart + */ + window.onload = function () + { + ShowGraphOne(); + + var myBar = new RGraph.Bar('cvs', [54,52,64,84,72,65]); + myBar.Set('chart.labels', ['Fred','Rich','Dave','John','Kev','Lou']); + myBar.Set('chart.title', 'A chart showing the context menu .__shape__ property (context)'); + myBar.Set('chart.contextmenu', [['A sample context menu item', function () {}]]); + myBar.Draw(); + + function myListener (obj) + { + p(RGraph.Registry.Get('chart.contextmenu').__shape__) + } + RGraph.AddCustomEventListener(myBar, 'oncontextmenu', myListener); + } + + </script> + +</body> +</html>
\ No newline at end of file |