db update
[scannr.git] / js / flotr2 / examples / old_examples / mouse-zoom-preview.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
        <head>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
                <title>Flotr: Mouse Zoom With Preview Example</title>
                <link rel="stylesheet" href="style.css" type="text/css" />
                <script type="text/javascript" src="../lib/yepnope.js"></script>
        </head>
        <body>
                
                <!-- ad -->
                
                <div id="wrapper">
                        <h1></h1>
                        <div id="overview" style="width:200px;height:100px;float:right;"></div>
                  <div id="container" style="width:500px;height:250px;"></div>
                        <h2>Example</h2>
                        <p>This example show an enhancement of the mouse-zoom example. It displays an overview of the graph. By selecting an area in the graph or in the overview, the graph is zoomed. Read more about the <a href="http://www.solutoire.com/flotr/docs/eventhooks/" title="Flotr Event Hooks">event hooks</a>.</p>
                        <p>Finished? Go to the example <a href="index.html" title="Flotr Example Index Page">index page</a>, play with the <a href="../../playground/index.html" title="Flotr playground">playground</a> or read the <a href="http://www.solutoire.com/flotr/docs/" title="Flotr Documentation Pages">Flotr Documentation Pages</a>.</p>
                        <p><button id="reset-btn">Reset</button></p>
                        <h2>The Code</h2>
                        <pre id="code-view"><code class="javascript"></code></pre>
                        <div id="footer">Copyright &copy; 2008 Bas Wenneker, <a href="http://www.solutoire.com">solutoire.com</a></div>
                </div>
                
                <!-- ad -->
                
                <script type="text/javascript">
                        function example(){
 
                var container = document.getElementById('container'),
                                    overviewContainer = document.getElementById('overview');
 
                                /**
                                 * Fill series d1 and d2.
                                 */
                                var d1 = [];
                                var d2 = [];
                                var d3 = [];
                            for(var i = 0; i < 40; i += 0.5){
                                d1.push([i, Math.sin(i)+3*Math.cos(i)]);
                                        d2.push([i, Math.pow(1.1, i)]);
                                        d3.push([i, 40 - i+Math.random()*10]);
                                }
                            
                                /**
                                 * Global options object.
                                 */
                                var options = {
                                        selection: { mode:'xy', fps:30 }
                                };
                                
                                // setup overview
                                var overviewOptions = {
                                        lines: { show: true, lineWidth: 1 },
                                        shadowSize: 0,
                                        grid: { color: '#999', outlineWidth: 1 },
                                        selection: { mode: 'xy' }
                                };
                                
                                /**
                                 * Function displays a graph in the 'container' element, extending
                                 * the global options object with the optionally passed options.
                                 */
                                function drawGraph(opts){
                                        /**
                                         * Clone the options, so the 'options' variable always keeps intact.
                                         */
                                        var o = _.extend(_.clone(options), opts || {});
                                        /**
                                         * Return a new graph.
                                         */
                                        return Flotr.draw(
                                                container,
                                                [ d1, d2, d3 ],
                                                o
                                        );
                                }       
                                
                                /**
                                 * Function displays a graph in the 'overview' element.
                                 */
                                function drawOverview(){
                                        return Flotr.draw(
                        overviewContainer,
                                                [ d1, d2, d3 ],
                                                overviewOptions
                                        );
                                }       
                                
                                /**
                                 * Actually draw the graphs.
                                 */
                                var f = drawGraph();
                                var overview = drawOverview();
                        
                                /**
                                 * Hook into the 'flotr:select' event.
                                 */
                Flotr.EventAdapter.observe(container, 'flotr:select', function(area){
                                        /**
                                         * Do the zooming.
                                         */
                                        f = drawGraph({
                                                xaxis: {min:area.x1, max:area.x2},
                                                yaxis: {min:area.y1, max:area.y2}
                                        });
                                        
                                        // don't fire event on the overview to prevent eternal loop
                                        overview.setSelection(area, true);
                                });
                                
                                /**
                                 * Hook into the 'flotr:select' event from overview.
                                 */
                Flotr.EventAdapter.observe(overview, 'flotr:select', function(evt){
                                        f.setSelection(evt.memo[0]);
                                });
                                
                                /**
                                 * Observe click event on the reset-btn. Reset the graph when clicked.
                                 * The drawGraph function wrapped in another function otherwise it get's 
                                 * an Event object passed as first argument, while it expects an options
                                 * object.
                                 */
                                document.getElementById('reset-btn').onclick = function(){
                                        drawGraph();
                                        drawOverview();
                                };
                        };                      
                </script>
                
                <!-- analytics -->
                
        </body>
        <script type="text/javascript" src="includes.js"></script>
</html>