Viewers update
3 columns boxes for interval and precision less debug info smaller font compact name of tabs
Showing
3 changed files
with
144 additions
and
32 deletions
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html> | 2 | <html> |
3 | <head> | 3 | <head> |
4 | <title>LIL JMX Monitor</title> | 4 | <title>JMX Monitor</title> |
5 | <script type="text/javascript" src="https://www.google.com/jsapi"></script> | 5 | <script type="text/javascript" src="https://www.google.com/jsapi"></script> |
6 | <style> | ||
7 | .ac_div { | ||
8 | width: 33%; | ||
9 | display: inline-block; | ||
10 | height: 18%; | ||
11 | margin: 0; | ||
12 | padding: 0; | ||
13 | } | ||
14 | .top_left_div { | ||
15 | width: 33%; | ||
16 | display: inline-block; | ||
17 | margin: 0; | ||
18 | padding: 0; | ||
19 | line-height:1em; | ||
20 | min-height:3em; | ||
21 | font-family:sans-serif; | ||
22 | } | ||
23 | .top_middle_div { | ||
24 | width: 33%; | ||
25 | display: inline-block; | ||
26 | margin: 0; | ||
27 | padding: 0; | ||
28 | line-height:1em; | ||
29 | min-height:3em; | ||
30 | font-family:sans-serif; | ||
31 | text-align: center; | ||
32 | } | ||
33 | .top_right_div { | ||
34 | width: 33%; | ||
35 | display: inline-block; | ||
36 | margin: 0; | ||
37 | padding: 0; | ||
38 | line-height:1em; | ||
39 | min-height:3em; | ||
40 | font-family:sans-serif; | ||
41 | text-align: right; | ||
42 | } | ||
43 | </style> | ||
6 | </head> | 44 | </head> |
7 | <body> | 45 | <body> |
8 | <h1 id="main_title">LIL JMX Monitor</h1> | 46 | <div class="top_left_div"><h3 id="main_title">JMX Monitor</h3></div> |
9 | <div style="background-color: lightgrey; line-height:1em; min-height:3em;"><p id="statusP">Nothing loaded</p></div> | 47 | <div class="top_middle_div"> |
48 | <p> | ||
49 | Interval (s): <input type="text" id="updateTextBox" size="3" value="15"> | ||
50 | Precision: <input type="text" id="precisionTextBox" size="3" value="6"> | ||
51 | </p> | ||
52 | </div> | ||
53 | <div class="top_right_div"><p id="statusP">Nothing loaded</p></div> | ||
10 | <div id="main_div"></div> | 54 | <div id="main_div"></div> |
11 | <script type="text/javascript"> | 55 | <script type="text/javascript"> |
12 | var ac_data = []; | 56 | var ac_data = []; |
... | @@ -31,6 +75,7 @@ | ... | @@ -31,6 +75,7 @@ |
31 | ac_data[i].addColumn('number', nvarray[i].name); | 75 | ac_data[i].addColumn('number', nvarray[i].name); |
32 | var newdiv = document.createElement('div'); | 76 | var newdiv = document.createElement('div'); |
33 | newdiv.id = 'ac_div' + i; | 77 | newdiv.id = 'ac_div' + i; |
78 | newdiv.className = 'ac_div'; | ||
34 | main_div.appendChild(newdiv); | 79 | main_div.appendChild(newdiv); |
35 | ac_chart[i] = new google.visualization.LineChart(newdiv); | 80 | ac_chart[i] = new google.visualization.LineChart(newdiv); |
36 | } | 81 | } |
... | @@ -42,7 +87,7 @@ | ... | @@ -42,7 +87,7 @@ |
42 | if(location.search != '') | 87 | if(location.search != '') |
43 | { | 88 | { |
44 | // Update the data | 89 | // Update the data |
45 | statusP.innerHTML = "Calling getData..."; | 90 | statusP.innerHTML = "Updating..."; |
46 | var client1 = new XMLHttpRequest(); | 91 | var client1 = new XMLHttpRequest(); |
47 | client1.onreadystatechange = handler1; | 92 | client1.onreadystatechange = handler1; |
48 | client1.open("GET", "/JmxMonREST/getData?age=14&connectionString=" + location.search.substring(1)); | 93 | client1.open("GET", "/JmxMonREST/getData?age=14&connectionString=" + location.search.substring(1)); |
... | @@ -59,7 +104,6 @@ | ... | @@ -59,7 +104,6 @@ |
59 | if(location.search != '') | 104 | if(location.search != '') |
60 | { | 105 | { |
61 | // Get the metrics | 106 | // Get the metrics |
62 | statusP.innerHTML += "<br>Calling getMetrics..."; | ||
63 | var client2 = new XMLHttpRequest(); | 107 | var client2 = new XMLHttpRequest(); |
64 | client2.onreadystatechange = handler2; | 108 | client2.onreadystatechange = handler2; |
65 | client2.open("GET", "/JmxMonREST/getMetrics?connectionString=" + location.search.substring(1)); | 109 | client2.open("GET", "/JmxMonREST/getMetrics?connectionString=" + location.search.substring(1)); |
... | @@ -77,10 +121,10 @@ | ... | @@ -77,10 +121,10 @@ |
77 | if ((this.status == 200 || this.status == 202) && | 121 | if ((this.status == 200 || this.status == 202) && |
78 | this.responseText != null) { | 122 | this.responseText != null) { |
79 | var res = eval('(' + this.responseText + ')'); | 123 | var res = eval('(' + this.responseText + ')'); |
80 | statusP.innerHTML += " Received 200 OK (ms:" + res.ms + " age:" + res.age + ")<br>" + res.msg; | 124 | statusP.innerHTML = " Received 200 OK (in " + (res.ms ? res.ms : 0) + "ms with age " + (res.age ? res.age : 0) + "ms)"; |
81 | getMetrics(); | 125 | getMetrics(); |
82 | } else { | 126 | } else { |
83 | statusP.innerHTML += " Received responsecode " + this.status; | 127 | statusP.innerHTML += " getData code " + this.status + " msg: " + res.msg; |
84 | } | 128 | } |
85 | } | 129 | } |
86 | } | 130 | } |
... | @@ -89,11 +133,10 @@ | ... | @@ -89,11 +133,10 @@ |
89 | if (this.readyState == 4) { | 133 | if (this.readyState == 4) { |
90 | if (this.status == 200 && | 134 | if (this.status == 200 && |
91 | this.responseText != null) { | 135 | this.responseText != null) { |
92 | statusP.innerHTML += " Received 200 OK"; | ||
93 | var res = eval('(' + this.responseText + ')'); | 136 | var res = eval('(' + this.responseText + ')'); |
94 | addData(res); | 137 | addData(res); |
95 | } else { | 138 | } else { |
96 | statusP.innerHTML += " Received responsecode " + this.status; | 139 | statusP.innerHTML += " getMetrics code " + this.status + " msg: " + res.msg; |
97 | } | 140 | } |
98 | } | 141 | } |
99 | } | 142 | } |
... | @@ -101,25 +144,38 @@ | ... | @@ -101,25 +144,38 @@ |
101 | function addData(res) { | 144 | function addData(res) { |
102 | if(res.error == false && res.nvarray.length > 0) { | 145 | if(res.error == false && res.nvarray.length > 0) { |
103 | main_title.innerHTML = res.name + " JMX Monitor"; | 146 | main_title.innerHTML = res.name + " JMX Monitor"; |
104 | document.title = "JmxMon " + res.name; | 147 | document.title = res.name; |
105 | if (created == false) { | 148 | if (created == false) { |
106 | createChart(res.nvarray); | 149 | createChart(res.nvarray); |
107 | } | 150 | } |
108 | 151 | var precision = parseInt(precisionTextBox.value); | |
152 | if(isNaN(precision)) { | ||
153 | precision = 6; | ||
154 | precisionTextBox.value = "6"; | ||
155 | } | ||
109 | for(var i=0; i < res.nvarray.length; i++) { | 156 | for(var i=0; i < res.nvarray.length; i++) { |
110 | var dataRow = []; | 157 | var dataRow = []; |
111 | dataRow[0] = new Date(); | 158 | dataRow[0] = new Date(); |
112 | dataRow[1] = res.nvarray[i].value; | 159 | dataRow[1] = res.nvarray[i].value; |
113 | ac_data[i].addRow(dataRow); | 160 | ac_data[i].addRow(dataRow); |
114 | if (ac_data[i].getNumberOfRows() > 100) ac_data[i].removeRow(0); | 161 | if (ac_data[i].getNumberOfRows() > 100) ac_data[i].removeRow(0); |
115 | ac_options.title = res.nvarray[i].name + ": " + res.nvarray[i].value; | 162 | if (Math.floor(res.nvarray[i].value) === res.nvarray[i].value) { |
163 | ac_options.title = res.nvarray[i].name + ": " + res.nvarray[i].value; | ||
164 | } else { | ||
165 | ac_options.title = res.nvarray[i].name + ": " + res.nvarray[i].value.toPrecision(precision); | ||
166 | } | ||
167 | |||
116 | ac_chart[i].draw(ac_data[i], ac_options); | 168 | ac_chart[i].draw(ac_data[i], ac_options); |
117 | } | 169 | } |
118 | } | 170 | } |
119 | 171 | var updateTime = parseInt(updateTextBox.value); | |
120 | window.setTimeout('getData()', 15000); | 172 | if(isNaN(updateTime)) { |
173 | updateTime = 15000; | ||
174 | updateTextBox.value = "15"; | ||
175 | } | ||
176 | else updateTime = updateTime * 1000; | ||
177 | window.setTimeout('getData()', updateTime); | ||
121 | } | 178 | } |
122 | |||
123 | </script> | 179 | </script> |
124 | </body> | 180 | </body> |
125 | </html> | 181 | </html> | ... | ... |
1 | <!DOCTYPE html> | 1 | <!DOCTYPE html> |
2 | <html> | 2 | <html> |
3 | <head> | 3 | <head> |
4 | <title>LIL JMX Monitor</title> | 4 | <title>DB Monitor</title> |
5 | <script type="text/javascript" src="https://www.google.com/jsapi"></script> | 5 | <script type="text/javascript" src="https://www.google.com/jsapi"></script> |
6 | <style> | ||
7 | .ac_div { | ||
8 | width: 33%; | ||
9 | display: inline-block; | ||
10 | height: 18%; | ||
11 | margin: 0; | ||
12 | padding: 0; | ||
13 | } | ||
14 | .top_left_div { | ||
15 | width: 33%; | ||
16 | display: inline-block; | ||
17 | margin: 0; | ||
18 | padding: 0; | ||
19 | line-height:1em; | ||
20 | min-height:3em; | ||
21 | font-family:sans-serif; | ||
22 | } | ||
23 | .top_middle_div { | ||
24 | width: 33%; | ||
25 | display: inline-block; | ||
26 | margin: 0; | ||
27 | padding: 0; | ||
28 | line-height:1em; | ||
29 | min-height:3em; | ||
30 | font-family:sans-serif; | ||
31 | text-align: center; | ||
32 | } | ||
33 | .top_right_div { | ||
34 | width: 33%; | ||
35 | display: inline-block; | ||
36 | margin: 0; | ||
37 | padding: 0; | ||
38 | line-height:1em; | ||
39 | min-height:3em; | ||
40 | font-family:sans-serif; | ||
41 | text-align: right; | ||
42 | } | ||
43 | </style> | ||
6 | </head> | 44 | </head> |
7 | <body> | 45 | <body> |
8 | <h1 id="main_title">LIL ORA Monitor</h1> | 46 | <div class="top_left_div"><h3 id="main_title">DB Monitor</h3></div> |
9 | <div style="background-color: lightgrey; line-height:1em; min-height:3em;"><p id="statusP">Nothing loaded</p></div> | 47 | <div class="top_middle_div"> |
48 | <p> | ||
49 | Interval (s): <input type="text" id="updateTextBox" size="3" value="15"> | ||
50 | Precision: <input type="text" id="precisionTextBox" size="3" value="6"> | ||
51 | </p> | ||
52 | </div> | ||
53 | <div class="top_right_div"><p id="statusP">Nothing loaded</p></div> | ||
10 | <div id="main_div"></div> | 54 | <div id="main_div"></div> |
11 | <script type="text/javascript"> | 55 | <script type="text/javascript"> |
12 | var ac_data = []; | 56 | var ac_data = []; |
... | @@ -31,6 +75,7 @@ | ... | @@ -31,6 +75,7 @@ |
31 | ac_data[i].addColumn('number', nvarray[i].name); | 75 | ac_data[i].addColumn('number', nvarray[i].name); |
32 | var newdiv = document.createElement('div'); | 76 | var newdiv = document.createElement('div'); |
33 | newdiv.id = 'ac_div' + i; | 77 | newdiv.id = 'ac_div' + i; |
78 | newdiv.className = 'ac_div'; | ||
34 | main_div.appendChild(newdiv); | 79 | main_div.appendChild(newdiv); |
35 | ac_chart[i] = new google.visualization.LineChart(newdiv); | 80 | ac_chart[i] = new google.visualization.LineChart(newdiv); |
36 | } | 81 | } |
... | @@ -42,7 +87,7 @@ | ... | @@ -42,7 +87,7 @@ |
42 | if(location.search != '') | 87 | if(location.search != '') |
43 | { | 88 | { |
44 | // Update the data | 89 | // Update the data |
45 | statusP.innerHTML = "Calling getData..."; | 90 | statusP.innerHTML = "Updating..."; |
46 | var client1 = new XMLHttpRequest(); | 91 | var client1 = new XMLHttpRequest(); |
47 | client1.onreadystatechange = handler1; | 92 | client1.onreadystatechange = handler1; |
48 | client1.open("GET", "/OraMonREST/getData?age=14&connectionString=" + location.search.substring(1)); | 93 | client1.open("GET", "/OraMonREST/getData?age=14&connectionString=" + location.search.substring(1)); |
... | @@ -59,7 +104,6 @@ | ... | @@ -59,7 +104,6 @@ |
59 | if(location.search != '') | 104 | if(location.search != '') |
60 | { | 105 | { |
61 | // Get the metrics | 106 | // Get the metrics |
62 | statusP.innerHTML += "<br>Calling getMetrics..."; | ||
63 | var client2 = new XMLHttpRequest(); | 107 | var client2 = new XMLHttpRequest(); |
64 | client2.onreadystatechange = handler2; | 108 | client2.onreadystatechange = handler2; |
65 | client2.open("GET", "/OraMonREST/getMetrics?connectionString=" + location.search.substring(1)); | 109 | client2.open("GET", "/OraMonREST/getMetrics?connectionString=" + location.search.substring(1)); |
... | @@ -75,12 +119,12 @@ | ... | @@ -75,12 +119,12 @@ |
75 | function handler1() { | 119 | function handler1() { |
76 | if (this.readyState == 4) { | 120 | if (this.readyState == 4) { |
77 | if ((this.status == 200 || this.status == 202) && | 121 | if ((this.status == 200 || this.status == 202) && |
78 | this.responseText != null) { | 122 | this.responseText != null) { |
79 | var res = eval('(' + this.responseText + ')'); | 123 | var res = eval('(' + this.responseText + ')'); |
80 | statusP.innerHTML += " Received 200 OK (ms:" + res.ms + " age:" + res.age + ")<br>" + res.msg; | 124 | statusP.innerHTML = " Received 200 OK (in " + (res.ms ? res.ms : 0) + "ms with age " + (res.age ? res.age : 0) + "ms)"; |
81 | getMetrics(); | 125 | getMetrics(); |
82 | } else { | 126 | } else { |
83 | statusP.innerHTML += " Received responsecode " + this.status; | 127 | statusP.innerHTML += " getData code " + this.status + " msg: " + res.msg; |
84 | } | 128 | } |
85 | } | 129 | } |
86 | } | 130 | } |
... | @@ -89,37 +133,49 @@ | ... | @@ -89,37 +133,49 @@ |
89 | if (this.readyState == 4) { | 133 | if (this.readyState == 4) { |
90 | if (this.status == 200 && | 134 | if (this.status == 200 && |
91 | this.responseText != null) { | 135 | this.responseText != null) { |
92 | statusP.innerHTML += " Received 200 OK"; | ||
93 | var res = eval('(' + this.responseText + ')'); | 136 | var res = eval('(' + this.responseText + ')'); |
94 | addData(res); | 137 | addData(res); |
95 | } else { | 138 | } else { |
96 | statusP.innerHTML += " Received responsecode " + this.status; | 139 | statusP.innerHTML += " getMetrics code " + this.status + " msg: " + res.msg; |
97 | } | 140 | } |
98 | } | 141 | } |
99 | } | 142 | } |
100 | 143 | ||
101 | function addData(res) { | 144 | function addData(res) { |
102 | if(res.error == false && res.nvarray.length > 0) { | 145 | if(res.error == false && res.nvarray.length > 0) { |
103 | main_title.innerHTML = res.name + " ORA Monitor"; | 146 | main_title.innerHTML = res.name + " DB Monitor"; |
104 | document.title = "OraMon " + res.name; | 147 | document.title = res.name; |
105 | if (created == false) { | 148 | if (created == false) { |
106 | createChart(res.nvarray); | 149 | createChart(res.nvarray); |
107 | } | 150 | } |
108 | 151 | var precision = parseInt(precisionTextBox.value); | |
152 | if(isNaN(precision)) { | ||
153 | precision = 6; | ||
154 | precisionTextBox.value = "6"; | ||
155 | } | ||
109 | for(var i=0; i < res.nvarray.length; i++) { | 156 | for(var i=0; i < res.nvarray.length; i++) { |
110 | var dataRow = []; | 157 | var dataRow = []; |
111 | dataRow[0] = new Date(); | 158 | dataRow[0] = new Date(); |
112 | dataRow[1] = res.nvarray[i].value; | 159 | dataRow[1] = res.nvarray[i].value; |
113 | ac_data[i].addRow(dataRow); | 160 | ac_data[i].addRow(dataRow); |
114 | if (ac_data[i].getNumberOfRows() > 100) ac_data[i].removeRow(0); | 161 | if (ac_data[i].getNumberOfRows() > 100) ac_data[i].removeRow(0); |
115 | ac_options.title = res.nvarray[i].name + ": " + res.nvarray[i].value; | 162 | if (Math.floor(res.nvarray[i].value) === res.nvarray[i].value) { |
163 | ac_options.title = res.nvarray[i].name + ": " + res.nvarray[i].value; | ||
164 | } else { | ||
165 | ac_options.title = res.nvarray[i].name + ": " + res.nvarray[i].value.toPrecision(precision); | ||
166 | } | ||
167 | |||
116 | ac_chart[i].draw(ac_data[i], ac_options); | 168 | ac_chart[i].draw(ac_data[i], ac_options); |
117 | } | 169 | } |
118 | } | 170 | } |
119 | 171 | var updateTime = parseInt(updateTextBox.value); | |
120 | window.setTimeout('getData()', 15000); | 172 | if(isNaN(updateTime)) { |
173 | updateTime = 15000; | ||
174 | updateTextBox.value = "15"; | ||
175 | } | ||
176 | else updateTime = updateTime * 1000; | ||
177 | window.setTimeout('getData()', updateTime); | ||
121 | } | 178 | } |
122 | |||
123 | </script> | 179 | </script> |
124 | </body> | 180 | </body> |
125 | </html> | 181 | </html> | ... | ... |
No preview for this file type
-
Please register or sign in to post a comment