diff options
Diffstat (limited to '')
| -rw-r--r-- | inc/html.inc.php | 17 | ||||
| -rw-r--r-- | js/CGP-async.js | 21 | ||||
| -rw-r--r-- | js/CGP-sync.js | 21 | ||||
| -rw-r--r-- | js/CGP.js | 227 |
4 files changed, 136 insertions, 150 deletions
diff --git a/inc/html.inc.php b/inc/html.inc.php index c8cfbaf..117d61d 100644 --- a/inc/html.inc.php +++ b/inc/html.inc.php | |||
| @@ -99,21 +99,18 @@ function html_end() { | |||
| 99 | EOT; | 99 | EOT; |
| 100 | 100 | ||
| 101 | if ($CONFIG['graph_type'] == 'canvas') { | 101 | if ($CONFIG['graph_type'] == 'canvas') { |
| 102 | echo <<<EOT | ||
| 103 | <script type="text/javascript" src="{$html_weburl}js/CGP.js"></script> | ||
| 104 | |||
| 105 | EOT; | ||
| 106 | if ($CONFIG['rrd_fetch_method'] == 'async') { | 102 | if ($CONFIG['rrd_fetch_method'] == 'async') { |
| 107 | echo <<<EOT | 103 | $js_async = 'true'; |
| 108 | <script type="text/javascript" src="{$html_weburl}js/CGP-async.js"></script> | ||
| 109 | |||
| 110 | EOT; | ||
| 111 | } else { | 104 | } else { |
| 105 | $js_async = 'false'; | ||
| 106 | } | ||
| 112 | echo <<<EOT | 107 | echo <<<EOT |
| 113 | <script type="text/javascript" src="{$html_weburl}js/CGP-sync.js"></script> | 108 | <script src="{$html_weburl}js/CGP.js"></script> |
| 109 | <script> | ||
| 110 | CGP.drawAll($js_async); | ||
| 111 | </script> | ||
| 114 | 112 | ||
| 115 | EOT; | 113 | EOT; |
| 116 | } | ||
| 117 | } | 114 | } |
| 118 | 115 | ||
| 119 | echo <<<EOT | 116 | echo <<<EOT |
diff --git a/js/CGP-async.js b/js/CGP-async.js deleted file mode 100644 index 4976509..0000000 --- a/js/CGP-async.js +++ /dev/null | |||
| @@ -1,21 +0,0 @@ | |||
| 1 | function draw(id) { | ||
| 2 | var rrdgraph = prepare_draw(id); | ||
| 3 | |||
| 4 | try { | ||
| 5 | rrdgraph.graph_paint_async(); | ||
| 6 | } catch (e) { | ||
| 7 | alert(e+"\n"+e.stack); | ||
| 8 | } | ||
| 9 | } | ||
| 10 | |||
| 11 | function drawAll() | ||
| 12 | { | ||
| 13 | var list=[]; | ||
| 14 | var a=document.getElementsByClassName('rrd'); | ||
| 15 | for (var i=0,l=a.length;i<l;i++) | ||
| 16 | { | ||
| 17 | draw(a[i].getAttribute('id')) | ||
| 18 | } | ||
| 19 | } | ||
| 20 | |||
| 21 | window.onload = drawAll() | ||
diff --git a/js/CGP-sync.js b/js/CGP-sync.js deleted file mode 100644 index 01f6b19..0000000 --- a/js/CGP-sync.js +++ /dev/null | |||
| @@ -1,21 +0,0 @@ | |||
| 1 | function draw(id) { | ||
| 2 | var rrdgraph = prepare_draw(id); | ||
| 3 | |||
| 4 | try { | ||
| 5 | rrdgraph.graph_paint(); | ||
| 6 | } catch (e) { | ||
| 7 | alert(e+"\n"+e.stack); | ||
| 8 | } | ||
| 9 | } | ||
| 10 | |||
| 11 | function drawAll() | ||
| 12 | { | ||
| 13 | var list=[]; | ||
| 14 | var a=document.getElementsByClassName('rrd'); | ||
| 15 | for (var i=0,l=a.length;i<l;i++) | ||
| 16 | { | ||
| 17 | draw(a[i].getAttribute('id')) | ||
| 18 | } | ||
| 19 | } | ||
| 20 | |||
| 21 | window.onload = drawAll() | ||
| @@ -1,108 +1,139 @@ | |||
| 1 | var mouse_move = function (e) { | 1 | var CGP = (function() { |
| 2 | if (this.rrdgraph.mousedown) { | 2 | 'use strict'; |
| 3 | var factor = (this.rrdgraph.end - this.rrdgraph.start) / this.rrdgraph.xsize; | ||
| 4 | var x = e.pageX - this.offsetLeft; | ||
| 5 | var diff = x - this.rrdgraph.mousex; | ||
| 6 | var difffactor = Math.abs(Math.round(diff*factor)); | ||
| 7 | if (diff > 0) { | ||
| 8 | this.rrdgraph.end -= difffactor; | ||
| 9 | this.rrdgraph.start -= difffactor; | ||
| 10 | } else { | ||
| 11 | this.rrdgraph.end += difffactor; | ||
| 12 | this.rrdgraph.start += difffactor; | ||
| 13 | } | ||
| 14 | this.rrdgraph.mousex = x; | ||
| 15 | try { | ||
| 16 | this.rrdgraph.graph_paint(); | ||
| 17 | } catch (e) { | ||
| 18 | alert(e+"\n"+e.stack); | ||
| 19 | } | ||
| 20 | } | ||
| 21 | }; | ||
| 22 | var mouse_up = function (e) { | ||
| 23 | this.rrdgraph.mousedown = false; | ||
| 24 | this.style.cursor="default"; | ||
| 25 | }; | ||
| 26 | var mouse_down = function (e) { | ||
| 27 | var x = e.pageX - this.offsetLeft; | ||
| 28 | this.rrdgraph.mousedown = true; | ||
| 29 | this.rrdgraph.mousex = x; | ||
| 30 | this.style.cursor="move"; | ||
| 31 | }; | ||
| 32 | var mouse_scroll = function (e) { | ||
| 33 | e = e ? e : window.event; | ||
| 34 | var wheel = e.detail ? e.detail * -1 : e.wheelDelta / 40; | ||
| 35 | var cstime = this.stime[this.stidx]; | ||
| 36 | if (wheel < 0) { | ||
| 37 | this.stidx++; | ||
| 38 | if (this.stidx >= this.stlen) this.stidx = this.stlen-1; | ||
| 39 | } else { | ||
| 40 | this.stidx--; | ||
| 41 | if (this.stidx < 0) this.stidx = 0; | ||
| 42 | } | ||
| 43 | if (cstime !== this.stime[this.stidx]) { | ||
| 44 | var middle = this.rrdgraph.start + Math.abs(Math.round((this.rrdgraph.end - this.rrdgraph.start)/2)); | ||
| 45 | this.rrdgraph.start = Math.round(middle - this.stime[this.stidx]/2); | ||
| 46 | this.rrdgraph.end = this.rrdgraph.start + this.stime[this.stidx]; | ||
| 47 | 3 | ||
| 48 | try { | 4 | var mouse_move = function(e) { |
| 49 | this.rrdgraph.graph_paint(); | 5 | if (this.rrdgraph.mousedown) { |
| 50 | } catch (e) { | 6 | var factor = (this.rrdgraph.end - this.rrdgraph.start) / this.rrdgraph.xsize; |
| 51 | alert(e+"\n"+e.stack); | 7 | var x = e.pageX - this.offsetLeft; |
| 52 | } | 8 | var diff = x - this.rrdgraph.mousex; |
| 53 | } | 9 | var difffactor = Math.abs(Math.round(diff * factor)); |
| 10 | if (diff > 0) { | ||
| 11 | this.rrdgraph.end -= difffactor; | ||
| 12 | this.rrdgraph.start -= difffactor; | ||
| 13 | } else { | ||
| 14 | this.rrdgraph.end += difffactor; | ||
| 15 | this.rrdgraph.start += difffactor; | ||
| 16 | } | ||
| 17 | this.rrdgraph.mousex = x; | ||
| 18 | try { | ||
| 19 | this.rrdgraph.graph_paint(); | ||
| 20 | } catch (ex) { | ||
| 21 | console.error('mouse_move:', ex, ex.stack); | ||
| 22 | } | ||
| 23 | } | ||
| 24 | }; | ||
| 25 | var mouse_up = function(e) { | ||
| 26 | this.rrdgraph.mousedown = false; | ||
| 27 | this.style.cursor = 'default'; | ||
| 28 | }; | ||
| 29 | var mouse_down = function(e) { | ||
| 30 | var x = e.pageX - this.offsetLeft; | ||
| 31 | this.rrdgraph.mousedown = true; | ||
| 32 | this.rrdgraph.mousex = x; | ||
| 33 | this.style.cursor = 'move'; | ||
| 34 | }; | ||
| 35 | var mouse_scroll = function(e) { | ||
| 36 | e = e ? e : window.event; | ||
| 37 | var wheel = e.detail ? e.detail * -1 : e.wheelDelta / 40; | ||
| 38 | var cstime = this.stime[this.stidx]; | ||
| 39 | if (wheel < 0) { | ||
| 40 | this.stidx++; | ||
| 41 | if (this.stidx >= this.stlen) this.stidx = this.stlen - 1; | ||
| 42 | } else { | ||
| 43 | this.stidx--; | ||
| 44 | if (this.stidx < 0) this.stidx = 0; | ||
| 45 | } | ||
| 46 | if (cstime !== this.stime[this.stidx]) { | ||
| 47 | var middle = this.rrdgraph.start + Math.abs(Math.round((this.rrdgraph.end - this.rrdgraph.start) / 2)); | ||
| 48 | this.rrdgraph.start = Math.round(middle - this.stime[this.stidx] / 2); | ||
| 49 | this.rrdgraph.end = this.rrdgraph.start + this.stime[this.stidx]; | ||
| 54 | 50 | ||
| 55 | if(e.stopPropagation) | 51 | try { |
| 56 | e.stopPropagation(); | 52 | this.rrdgraph.graph_paint(); |
| 57 | if(e.preventDefault) | 53 | } catch (ex) { |
| 58 | e.preventDefault(); | 54 | console.error('mouse_scroll:', ex, ex.stack); |
| 59 | e.cancelBubble = true; | 55 | } |
| 60 | e.cancel = true; | 56 | } |
| 61 | e.returnValue = false; | ||
| 62 | return false; | ||
| 63 | }; | ||
| 64 | 57 | ||
| 65 | function prepare_draw(id) { | 58 | if (e.stopPropagation) |
| 66 | RrdGraph.prototype.mousex = 0; | 59 | e.stopPropagation(); |
| 67 | RrdGraph.prototype.mousedown = false; | 60 | if (e.preventDefault) |
| 61 | e.preventDefault(); | ||
| 62 | e.cancelBubble = true; | ||
| 63 | e.cancel = true; | ||
| 64 | e.returnValue = false; | ||
| 65 | return false; | ||
| 66 | }; | ||
| 68 | 67 | ||
| 69 | var cmdline = document.getElementById(id).textContent; | 68 | function prepare_draw(id) { |
| 70 | var gfx = new RrdGfxCanvas(id); | 69 | RrdGraph.prototype.mousex = 0; |
| 71 | var fetch = new RrdDataFile(); | 70 | RrdGraph.prototype.mousedown = false; |
| 72 | var rrdcmdline = null; | ||
| 73 | 71 | ||
| 74 | try { | 72 | var cmdline = document.getElementById(id).textContent; |
| 75 | rrdcmdline = new RrdCmdLine(gfx, fetch, cmdline); | 73 | var gfx = new RrdGfxCanvas(id); |
| 76 | } catch (e) { | 74 | var fetch = new RrdDataFile(); |
| 77 | alert(e+"\n"+e.stack); | 75 | var rrdcmdline = null; |
| 78 | } | ||
| 79 | 76 | ||
| 80 | var rrdgraph = rrdcmdline.graph; | 77 | try { |
| 78 | rrdcmdline = new RrdCmdLine(gfx, fetch, cmdline); | ||
| 79 | } catch (e) { | ||
| 80 | console.error('prepare_draw:', e, e.stack); | ||
| 81 | } | ||
| 81 | 82 | ||
| 82 | gfx.canvas.stime = [ 300, 600, 900, 1200, 1800, 3600, 7200, 21600, 43200, 86400, 172800, 604800, 2592000, 5184000, 15768000, 31536000 ]; | 83 | var rrdgraph = rrdcmdline.graph; |
| 83 | gfx.canvas.stlen = gfx.canvas.stime.length; | ||
| 84 | gfx.canvas.stidx = 0; | ||
| 85 | 84 | ||
| 86 | gfx.canvas.rrdgraph = rrdgraph; | 85 | gfx.canvas.stime = [300, 600, 900, 1200, 1800, 3600, 7200, 21600, 43200, 86400, 172800, 604800, 2592000, 5184000, 15768000, 31536000]; |
| 87 | gfx.canvas.removeEventListener('mousemove', mouse_move, false); | 86 | gfx.canvas.stlen = gfx.canvas.stime.length; |
| 88 | gfx.canvas.addEventListener('mousemove', mouse_move, false); | 87 | gfx.canvas.stidx = 0; |
| 89 | gfx.canvas.removeEventListener('mouseup', mouse_up, false); | ||
| 90 | gfx.canvas.addEventListener('mouseup', mouse_up, false); | ||
| 91 | gfx.canvas.removeEventListener('mousedown', mouse_down, false); | ||
| 92 | gfx.canvas.addEventListener('mousedown', mouse_down, false); | ||
| 93 | gfx.canvas.removeEventListener('mouseout', mouse_up, false); | ||
| 94 | gfx.canvas.addEventListener('mouseout', mouse_up, false); | ||
| 95 | gfx.canvas.removeEventListener('DOMMouseScroll', mouse_scroll, false); | ||
| 96 | gfx.canvas.addEventListener('DOMMouseScroll', mouse_scroll, false); | ||
| 97 | gfx.canvas.removeEventListener('mousewheel', mouse_scroll, false); | ||
| 98 | gfx.canvas.addEventListener('mousewheel', mouse_scroll, false); | ||
| 99 | 88 | ||
| 100 | var diff = rrdgraph.end - rrdgraph.start; | 89 | gfx.canvas.rrdgraph = rrdgraph; |
| 101 | for (var i=0; i < gfx.canvas.stlen; i++) { | 90 | gfx.canvas.removeEventListener('mousemove', mouse_move, false); |
| 102 | if (gfx.canvas.stime[i] >= diff) break; | 91 | gfx.canvas.addEventListener('mousemove', mouse_move, false); |
| 103 | } | 92 | gfx.canvas.removeEventListener('mouseup', mouse_up, false); |
| 104 | if (i === gfx.canvas.stlen) gfx.canvas.stidx = gfx.canvas.stlen-1; | 93 | gfx.canvas.addEventListener('mouseup', mouse_up, false); |
| 105 | else gfx.canvas.stidx = i; | 94 | gfx.canvas.removeEventListener('mousedown', mouse_down, false); |
| 95 | gfx.canvas.addEventListener('mousedown', mouse_down, false); | ||
| 96 | gfx.canvas.removeEventListener('mouseout', mouse_up, false); | ||
| 97 | gfx.canvas.addEventListener('mouseout', mouse_up, false); | ||
| 98 | gfx.canvas.removeEventListener('DOMMouseScroll', mouse_scroll, false); | ||
| 99 | gfx.canvas.addEventListener('DOMMouseScroll', mouse_scroll, false); | ||
| 100 | gfx.canvas.removeEventListener('mousewheel', mouse_scroll, false); | ||
| 101 | gfx.canvas.addEventListener('mousewheel', mouse_scroll, false); | ||
| 106 | 102 | ||
| 107 | return rrdgraph; | 103 | var diff = rrdgraph.end - rrdgraph.start; |
| 108 | } | 104 | for (var i = 0; i < gfx.canvas.stlen; i++) { |
| 105 | if (gfx.canvas.stime[i] >= diff) break; | ||
| 106 | } | ||
| 107 | if (i === gfx.canvas.stlen) gfx.canvas.stidx = gfx.canvas.stlen - 1; | ||
| 108 | else gfx.canvas.stidx = i; | ||
| 109 | |||
| 110 | return rrdgraph; | ||
| 111 | } | ||
| 112 | |||
| 113 | function draw(id, async) { | ||
| 114 | var rrdgraph = prepare_draw(id); | ||
| 115 | try { | ||
| 116 | if (async) { | ||
| 117 | rrdgraph.graph_paint_async(); | ||
| 118 | } else { | ||
| 119 | rrdgraph.graph_paint(); | ||
| 120 | } | ||
| 121 | } catch (e) { | ||
| 122 | console.error('draw(' + id + '):', e, e.stack); | ||
| 123 | } | ||
| 124 | } | ||
| 125 | |||
| 126 | /** | ||
| 127 | * For each canvas.rrd element, initialize a draggable graph. | ||
| 128 | */ | ||
| 129 | function drawAll(async) { | ||
| 130 | var canvases = document.getElementsByClassName('rrd'); | ||
| 131 | for (var i = 0; i < canvases.length; i++) { | ||
| 132 | draw(canvases[i].id, async); | ||
| 133 | } | ||
| 134 | } | ||
| 135 | |||
| 136 | return { | ||
| 137 | drawAll: drawAll | ||
| 138 | }; | ||
| 139 | }()); | ||
