summaryrefslogtreecommitdiff
path: root/schall/static/RGraph/docs/context.html
diff options
context:
space:
mode:
authorYves Fischer <yvesf-git@xapek.org>2011-10-23 21:14:40 +0200
committerYves Fischer <yvesf-git@xapek.org>2011-10-30 11:33:54 +0100
commit770ba5201f5c60b2bb36602ff9d359f641e33125 (patch)
tree2200757f04efbc281c4b3714bfe2e4fe911193b6 /schall/static/RGraph/docs/context.html
parent77f5e686612898974e13f2a5df57c20e4e529363 (diff)
downloadmini-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.html371
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&notes=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&amp;href=http%3A%2F%2Fwww.rgraph.net&amp;send=false&amp;layout=button_count&amp;width=450&amp;show_faces=false&amp;action=like&amp;colorscheme=light&amp;font=arial&amp;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 />&nbsp;<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 />&nbsp;<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">
+&lt;style type="text/css"&gt;
+ .RGraph_contextmenu {
+ }
+
+ .RGraph_contextmenu_item {
+ }
+
+ .RGraph_contextmenu_background {
+ }
+&lt;/style&gt;</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 />&nbsp;<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 />&nbsp;<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 />&nbsp;<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 />&nbsp;<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 />&nbsp;<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">
+&lt;script&gt;
+ function myListener (obj)
+ {
+ p(RGraph.Registry.Get('chart.contextmenu').__shape__)
+ }
+ RGraph.AddCustomEventListener(myBar, 'oncontextmenu', myListener);
+&lt;/script&gt;
+</pre>
+
+
+ <a name="use"></a>
+ <br />&nbsp;<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 />&nbsp;<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 />&nbsp;<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