Migrate UI cleanup phase 4 from MIPS into ARM
[tomato.git] / release / src-rt-6.x.4708 / router / www / bwm-weekly.asp
blob57d9801ec091ae77e91f1e39cfcbc5f06709750d
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 <meta name="viewport" content="width=device-width">
15 <title>[<% ident(); %>] Bandwidth: Weekly</title>
16 <link rel='stylesheet' type='text/css' href='tomato.css'>
17 <link rel='stylesheet' type='text/css' href='color.css'>
18 <script type='text/javascript' src='tomato.js'></script>
20 <!-- / / / -->
22 <script type='text/javascript' src='debug.js'></script>
23 <script type='text/javascript' src='bwm-hist.js'></script>
25 <script type='text/javascript'>
27 // <% nvram("wan_ifname,lan_ifname,rstats_enable"); %>
28 try {
29 // <% bandwidth("daily"); %>
31 catch (ex) {
32 daily_history = [];
34 rstats_busy = 0;
35 if (typeof(daily_history) == 'undefined') {
36 daily_history = [];
37 rstats_busy = 1;
40 var weeks = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
41 var weeksShort = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
42 var startwk = 0;
43 var summary = 1;
45 function save()
47 cookie.set('weekly', scale + ',' + startwk + ',' + summary, 31);
50 function changeStart(e)
52 startwk = e.value * 1;
53 redraw();
54 save();
57 function changeMode(e)
59 summary = e.value * 1;
60 redraw();
61 save();
64 function nth(n)
66 n += '';
67 switch (n.substr(n.length - 1, 1)) {
68 case '1':
69 return n + 'st';
70 case '2':
71 return n + 'nd';
72 case '3':
73 return n + 'rd';
75 return n + 'th';
78 function redraw()
80 var h;
81 var grid;
82 var block;
83 var rows;
84 var dend;
85 var dbeg;
86 var dl, ul;
87 var d, diff, ds;
88 var tick, lastSplit;
89 var yr, mo, da, wk;
90 var gn;
91 var swk;
93 rows = 0;
94 block = [];
95 gn = 0;
96 w = 0;
97 lastSplit = 0;
98 ul = dl = 0;
99 dend = dbeg = '';
101 swk = startwk - 1;
102 if (swk < 0) swk = 6;
104 if (summary) {
105 grid = '<table class="bwmg" cellspacing="1">';
106 grid += makeRow('header', 'Date', 'Download', 'Upload', 'Total');
108 else {
109 grid = '';
112 function flush_block()
114 grid += '<b>' + dbeg + ' to ' + dend + '</b>' +
115 '<table class="bwmg" cellspacing="1">' +
116 makeRow('header', 'Date', 'Download', 'Upload', 'Total') +
117 block.join('') +
118 makeRow('footer', 'Total', rescale(dl), rescale(ul), rescale(dl + ul)) +
119 '</table><br>';
122 for (i = 0; i < daily_history.length; ++i) {
123 h = daily_history[i];
124 yr = (((h[0] >> 16) & 0xFF) + 1900);
125 mo = ((h[0] >>> 8) & 0xFF);
126 da = (h[0] & 0xFF);
127 d = new Date(yr, mo, da);
128 wk = d.getDay();
130 tick = d.getTime();
131 diff = lastSplit - tick;
133 ds = ymdText(yr, mo, da) + ' <small>(' + weeksShort[wk] + ')</small>';
135 /* REMOVE-BEGIN
137 Jan 2007
138 SU MO TU WE TH FR SA
139 01 02 03 04 05 06
140 07 08 09 10 11 12 13
141 14 15 16 17 18 19 20
142 21 22 23 24 25 26 27
143 28 29 30 31
145 Feb 2007
146 SU MO TU WE TH FR SA
147 01 02 03
148 04 05 06 07 08 09 10
149 11 12 13 14 15 16 17
150 18 19 20 21 22 23 24
151 25 26 27 28
153 Mar 2007
154 SU MO TU WE TH FR SA
155 01 02 03
156 04 05 06 07 08 09 10
157 11 12 13 14 15 16 17
158 18 19 20 21 22 23 24
159 25 26 27 28 29 30 31
161 REMOVE-END */
163 if ((wk == swk) || (diff >= (7 * 86400000)) || (lastSplit == 0)) {
164 if (summary) {
165 if (i > 0) {
166 grid += makeRow(((rows & 1) ? 'odd' : 'even'),
167 dend + '<br>' + dbeg, rescale(dl), rescale(ul), rescale(dl + ul));
168 ++rows;
169 ++gn;
172 else {
173 if (rows) {
174 flush_block();
175 ++gn;
177 block = [];
178 rows = 0;
180 dl = ul = 0;
181 dend = ds;
182 lastSplit = tick;
185 dl += h[1];
186 ul += h[2];
187 if (!summary) {
188 block.unshift(makeRow(((rows & 1) ? 'odd' : 'even'), weeks[wk] + ' <small>' + (mo + 1) + '-' + da + '</small>', rescale(h[1]), rescale(h[2]), rescale(h[1] + h[2])))
189 ++rows;
192 dbeg = ds;
195 if (summary) {
196 if (gn < 9) {
197 grid += makeRow(((rows & 1) ? 'odd' : 'even'),
198 dend + '<br>' + dbeg, rescale(dl), rescale(ul), rescale(dl + ul));
200 grid += '</table>';
202 else {
203 if ((rows) && (gn < 9)) {
204 flush_block();
207 E('bwm-weekly-grid').innerHTML = grid;
210 function init()
212 var s;
214 if (nvram.rstats_enable != '1') return;
216 if ((s = cookie.get('weekly')) != null) {
217 if (s.match(/^([0-2]),([0-6]),([0-1])$/)) {
218 E('scale').value = scale = RegExp.$1 * 1;
219 E('startwk').value = startwk = RegExp.$2 * 1
220 E('shmode').value = summary = RegExp.$3 * 1;
224 initDate('ymd');
225 daily_history.sort(cmpHist);
226 redraw();
228 </script>
230 </head>
231 <body onload='init()'>
232 <form>
233 <table id='container' cellspacing=0>
234 <tr><td colspan=2 id='header'>
235 <div class='title'>Tomato</div>
236 <div class='version'>Version <% version(); %></div>
237 </td></tr>
238 <tr id='body'><td id='navi'><script type='text/javascript'>navi()</script></td>
239 <td id='content'>
240 <div id='ident'><% ident(); %></div>
242 <!-- / / / -->
244 <div class='section-title'>WAN Bandwidth - Weekly</div>
245 <div id='bwm-weekly-grid' style='float:left'></div>
246 <div style="float:right;text-align:right">
247 <b>Show</b> <select onchange='changeMode(this)' id='shmode'><option value=1 selected>Summary<option value=0>Full</select><br>
248 <b>Date</b> <select onchange='changeDate(this, "ymd")' id='dafm'><option value=0>yyyy-mm-dd</option><option value=1>mm-dd-yyyy</option><option value=2>mmm dd, yyyy</option><option value=3>dd.mm.yyyy</option></select><br>
249 <b>Start</b> <select onchange='changeStart(this)' id='startwk'><option value=0 selected>Sun<option value=1>Mon<option value=2>Tue<option value=3>Wed<option value=4>Thu<option value=5>Fri<option value=6>Sat</select><br>
250 <b>Scale</b> <select onchange='changeScale(this)' id='scale'><option value=0>KB</option><option value=1>MB</option><option value=2 selected>GB</option></select><br>
251 <br>
252 &raquo; <a href="admin-bwm.asp">Configure</a>
253 <br><br><br>
254 </div>
255 <br>
257 <script type='text/javascript'>checkRstats();</script>
259 <!-- / / / -->
261 </td></tr>
262 <tr><td id='footer' colspan=2>
263 <input type='button' value='Refresh' onclick='reloadPage()'>
264 </td></tr>
265 </table>
266 </form>
267 </body>
268 </html>