cosmetics changes to various pages
[tomato.git] / release / src / router / www / bwm-realtime.asp
blob9b9216a00700d673100e2a5c224e6232e20dd0ce
1 <!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0//EN'>
2 <!--
3 Tomato GUI
4 Copyright (C) 2006-2010 Jonathan Zarate
5 http://www.polarcloud.com/tomato/
7 For use with Tomato Firmware only.
8 No part of this file may be used without permission.
9 -->
10 <html>
11 <head>
12 <meta http-equiv='content-type' content='text/html;charset=utf-8'>
13 <meta name='robots' content='noindex,nofollow'>
14 <title>[<% ident(); %>] Bandwidth: Real-Time</title>
15 <link rel='stylesheet' type='text/css' href='tomato.css'>
16 <link rel='stylesheet' type='text/css' href='color.css'>
17 <script type='text/javascript' src='tomato.js'></script>
19 <!-- / / / -->
21 <style type='text/css'>
22 #txt {
23 width: 550px;
24 white-space: nowrap;
26 #bwm-controls {
27 text-align: right;
28 margin-right: 5px;
29 margin-top: 5px;
30 float: right;
31 visibility: hidden;
33 </style>
35 <script type='text/javascript' src='debug.js'></script>
37 <script type='text/javascript' src='wireless.jsx?_http_id=<% nv(http_id); %>'></script>
38 <script type='text/javascript' src='bwm-common.js'></script>
41 <script type="text/javascript">
42 function stopRKey(evt) {
43 var evt = (evt) ? evt : ((event) ? event : null);
44 var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
45 if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
47 document.onkeypress = stopRKey;
48 </script>
51 <script type='text/javascript'>
52 // <% nvram("cmon_enable,cmon_ipaddr,wan_ifname,lan_ifname,wl_ifname,wan_proto,wan_iface,web_svg,rstats_colors"); %>
54 var cprefix = 'bw_r';
55 var updateInt = 2;
56 var updateDiv = updateInt;
57 var updateMaxL = 300;
58 var updateReTotal = 1;
59 var prev = [];
60 var debugTime = 0;
61 var avgMode = 0;
62 var wdog = null;
63 var wdogWarn = null;
66 var ref = new TomatoRefresh('update.cgi', 'exec=netdev', 2);
68 ref.stop = function() {
69 this.timer.start(1000);
72 ref.refresh = function(text) {
73 var c, i, h, n, j, k;
75 watchdogReset();
77 ++updating;
78 try {
79 netdev = null;
80 eval(text);
82 n = (new Date()).getTime();
83 if (this.timeExpect) {
84 if (debugTime) E('dtime').innerHTML = (this.timeExpect - n) + ' ' + ((this.timeExpect + 2000) - n);
85 this.timeExpect += 2000;
86 this.refreshTime = MAX(this.timeExpect - n, 500);
88 else {
89 this.timeExpect = n + 2000;
92 for (i in netdev) {
93 c = netdev[i];
94 if ((p = prev[i]) != null) {
95 h = speed_history[i];
97 h.rx.splice(0, 1);
98 h.rx.push((c.rx < p.rx) ? (c.rx + (0xFFFFFFFF - p.rx)) : (c.rx - p.rx));
100 h.tx.splice(0, 1);
101 h.tx.push((c.tx < p.tx) ? (c.tx + (0xFFFFFFFF - p.tx)) : (c.tx - p.tx));
103 else if (!speed_history[i]) {
104 speed_history[i] = {};
105 h = speed_history[i];
106 h.rx = [];
107 h.tx = [];
108 for (j = 300; j > 0; --j) {
109 h.rx.push(0);
110 h.tx.push(0);
112 h.count = 0;
114 prev[i] = c;
116 loadData();
118 catch (ex) {
120 --updating;
123 function watchdog()
125 watchdogReset();
126 ref.stop();
127 wdogWarn.style.display = '';
130 function watchdogReset()
132 if (wdog) clearTimeout(wdog)
133 wdog = setTimeout(watchdog, 10000);
134 wdogWarn.style.display = 'none';
137 function init()
139 speed_history = [];
141 initCommon(2, 1, 1);
143 wdogWarn = E('warnwd');
144 watchdogReset();
146 ref.start();
150 function toggleFiltersVisibility(){
151 if(E('clientmonitor').style.display=='')
152 E('clientmonitor').style.display='none';
153 else
154 E('clientmonitor').style.display='';
158 function verifyFields(focused, quiet)
162 var a = !E('_f_cmon_enable').checked;
163 E('_cmon_ipaddr').enabled = a;
164 elem.display(PR('_cmon_ipaddr'), !a);
166 return 1
169 function save()
172 var fom = E('_fom');
173 fom.cmon_enable.value = E('_f_cmon_enable').checked ? 1 : 0;
174 form.submit(fom, 0);
180 </script>
181 </head>
182 <body onload='init()'>
183 <form id='_fom' method='post' action='tomato.cgi'>
184 <table id='container' cellspacing=0>
185 <tr><td colspan=2 id='header'>
186 <div class='title'>Tomato</div>
187 <div class='version'>Version <% version(); %></div>
188 </td></tr>
189 <tr id='body'><td id='navi'><script type='text/javascript'>navi()</script></td>
190 <td id='content'>
191 <div id='ident'><% ident(); %></div>
193 <!-- / / / -->
195 <div id='rstats'>
196 <div id='tab-area'></div>
198 <script type='text/javascript'>
199 if (nvram.web_svg != '0') {
200 // without a div, Opera 9 moves svgdoc several pixels outside of <embed> (?)
201 W("<div style='border-top:1px solid #f0f0f0;border-bottom:1px solid #f0f0f0;visibility:hidden;padding:0;margin:0' id='graph'><embed src='bwm-graph.svg?<% version(); %>' style='width:760px;height:300px;margin:0;padding:0' type='image/svg+xml' pluginspage='http://www.adobe.com/svg/viewer/install/'></embed></div>");
203 </script>
205 <div id='bwm-controls'>
206 <small>(10 minute window, 2 second interval)</small><br>
207 <br>
208 Avg:&nbsp;
209 <a href='javascript:switchAvg(1)' id='avg1'>Off</a>,
210 <a href='javascript:switchAvg(2)' id='avg2'>2x</a>,
211 <a href='javascript:switchAvg(4)' id='avg4'>4x</a>,
212 <a href='javascript:switchAvg(6)' id='avg6'>6x</a>,
213 <a href='javascript:switchAvg(8)' id='avg8'>8x</a><br>
214 Max:&nbsp;
215 <a href='javascript:switchScale(0)' id='scale0'>Uniform</a>,
216 <a href='javascript:switchScale(1)' id='scale1'>Per IF</a><br>
217 Display:&nbsp;
218 <a href='javascript:switchDraw(0)' id='draw0'>Solid</a>,
219 <a href='javascript:switchDraw(1)' id='draw1'>Line</a><br>
220 Color:&nbsp; <a href='javascript:switchColor()' id='drawcolor'>-</a><br>
221 <small><a href='javascript:switchColor(1)' id='drawrev'>[reverse]</a></small><br>
223 <br><br>
224 &nbsp; &raquo; <a href="admin-bwm.asp">Configure</a>
227 </div>
229 <br><br>
230 <table border=0 cellspacing=2 id='txt'>
231 <tr>
232 <td width='8%' align='right' valign='top'><b style='border-bottom:blue 1px solid' id='rx-name'>RX</b></td>
233 <td width='15%' align='right' valign='top'><span id='rx-current'></span></td>
234 <td width='8%' align='right' valign='top'><b>Avg</b></td>
235 <td width='15%' align='right' valign='top' id='rx-avg'></td>
236 <td width='8%' align='right' valign='top'><b>Peak</b></td>
237 <td width='15%' align='right' valign='top' id='rx-max'></td>
238 <td width='8%' align='right' valign='top'><b>Total</b></td>
239 <td width='14%' align='right' valign='top' id='rx-total'></td>
240 <td>&nbsp;</td>
241 </tr>
242 <tr>
243 <td width='8%' align='right' valign='top'><b style='border-bottom:blue 1px solid' id='tx-name'>TX</b></td>
244 <td width='15%' align='right' valign='top'><span id='tx-current'></span></td>
245 <td width='8%' align='right' valign='top'><b>Avg</b></td>
246 <td width='15%' align='right' valign='top' id='tx-avg'></td>
247 <td width='8%' align='right' valign='top'><b>Peak</b></td>
248 <td width='15%' align='right' valign='top' id='tx-max'></td>
249 <td width='8%' align='right' valign='top'><b>Total</b></td>
250 <td width='14%' align='right' valign='top' id='tx-total'></td>
251 <td>&nbsp;</td>
252 </tr>
253 </table>
254 </div>
255 <br>
256 <br>
259 <input type='hidden' name='cmon_enable'>
260 <input type='hidden' name='cmon_ipaddr'>
261 <input type='hidden' name='_nextpage' value='bwm-realtime.asp'>
262 <input type='hidden' name='_service' value='bwm-restart'>
263 <input type='hidden' name='_service' value='cmon-restart'>
266 <br>
267 <br>
269 <div class='section-title'>Client Monitor <small><i><a href='javascript:toggleFiltersVisibility();'>(Toggle Visibility)</a></i></small></div>
270 <div class='section' id='clientmonitor' style='display:none'>
271 <script type='text/javascript'>
273 createFieldTable('', [
274 { title: 'Enable Monitor', name: 'f_cmon_enable', type: 'checkbox', value: nvram.cmon_enable != '0'},
275 { title: 'Monitoring IP Address', name: 'cmon_ipaddr', type: 'text', maxlen: 15, size: 17, value: nvram.cmon_ipaddr }
278 </script>
279 </div>
281 <div>
282 <ul>
283 <br>
284 <br>
285 <li><b>Note:</b> The monitored client is isolated from the BW/Limiter graphs and details.
286 </ul>
287 </div>
291 </td></tr>
294 <tr><td id='footer' colspan=2>
295 <span id='warnwd' style='display:none'>Warning: 10 second session timeout, restarting...&nbsp;</span>
296 <span id='footer-msg'></span>
297 <input type='button' value='Save' id='save-button' onclick='save()'>
298 <input type='button' value='Refresh' onclick='reloadPage()'>
299 <span id='dtime'></span>
300 <img src='spin.gif' id='refresh-spinner' onclick='javascript:debugTime=1'>
301 </td></tr>
302 </table>
303 </form>
304 <script type='text/javascript'>verifyFields(null, 1);</script>
305 </body>
306 </html>