1 | Mon Oct 4 00:25:09 CEST 2010 freestorm77@gmail.com |
---|
2 | * status_web_pages_review.darcs.patch |
---|
3 | |
---|
4 | I make some changes on status web pages |
---|
5 | |
---|
6 | status.xhtml: |
---|
7 | - Delete unused webform_css link |
---|
8 | - Align tables on the left |
---|
9 | |
---|
10 | tahoe-css: |
---|
11 | - Do some minor changes on code synthax |
---|
12 | - changes table.status-download-events style to look like other tables |
---|
13 | |
---|
14 | status.py: |
---|
15 | - Align table on the left |
---|
16 | - Changes table header |
---|
17 | - Add heading tags |
---|
18 | - Modify google api graph: add image border, calculate height to feet data |
---|
19 | |
---|
20 | |
---|
21 | New patches: |
---|
22 | |
---|
23 | [status_web_pages_review.darcs.patch |
---|
24 | freestorm77@gmail.com**20101003222509 |
---|
25 | Ignore-this: f8a97000361430cde53431ed9e6eb913 |
---|
26 | |
---|
27 | I make some changes on status web pages |
---|
28 | |
---|
29 | status.xhtml: |
---|
30 | - Delete unused webform_css link |
---|
31 | - Align tables on the left |
---|
32 | |
---|
33 | tahoe-css: |
---|
34 | - Do some minor changes on code synthax |
---|
35 | - changes table.status-download-events style to look like other tables |
---|
36 | |
---|
37 | status.py: |
---|
38 | - Align table on the left |
---|
39 | - Changes table header |
---|
40 | - Add heading tags |
---|
41 | - Modify google api graph: add image border, calculate height to feet data |
---|
42 | |
---|
43 | ] { |
---|
44 | hunk ./src/allmydata/web/status.py 386 |
---|
45 | if not self.download_status.storage_index: |
---|
46 | return |
---|
47 | srt = self.short_relative_time |
---|
48 | - l = T.ul() |
---|
49 | - |
---|
50 | - t = T.table(class_="status-download-events") |
---|
51 | - t[T.tr[T.td["serverid"], T.td["sent"], T.td["received"], |
---|
52 | - T.td["shnums"], T.td["RTT"]]] |
---|
53 | + l = T.div() |
---|
54 | + |
---|
55 | + t = T.table(align="left", class_="status-download-events") |
---|
56 | + t[T.tr[T.th["serverid"], T.th["sent"], T.th["received"], |
---|
57 | + T.th["shnums"], T.th["RTT"]]] |
---|
58 | dyhb_events = [] |
---|
59 | for serverid,requests in self.download_status.dyhb_requests.iteritems(): |
---|
60 | for req in requests: |
---|
61 | hunk ./src/allmydata/web/status.py 403 |
---|
62 | if received is not None: |
---|
63 | rtt = received - sent |
---|
64 | if not shnums: |
---|
65 | - shnums = [] |
---|
66 | + shnums = ["-"] |
---|
67 | t[T.tr(style="background: %s" % self.color(serverid))[ |
---|
68 | [T.td[serverid_s], T.td[srt(sent)], T.td[srt(received)], |
---|
69 | T.td[",".join([str(shnum) for shnum in shnums])], |
---|
70 | hunk ./src/allmydata/web/status.py 409 |
---|
71 | T.td[self.render_time(None, rtt)], |
---|
72 | ]]] |
---|
73 | - l["DYHB Requests:", t] |
---|
74 | - |
---|
75 | - t = T.table(class_="status-download-events") |
---|
76 | - t[T.tr[T.td["range"], T.td["start"], T.td["finish"], T.td["got"], |
---|
77 | - T.td["time"], T.td["decrypttime"], T.td["pausedtime"], |
---|
78 | - T.td["speed"]]] |
---|
79 | + |
---|
80 | + l[T.h2["DYHB Requests:"], t] |
---|
81 | + l[T.br(clear="all")] |
---|
82 | + |
---|
83 | + t = T.table(align="left",class_="status-download-events") |
---|
84 | + t[T.tr[T.th["range"], T.th["start"], T.th["finish"], T.th["got"], |
---|
85 | + T.th["time"], T.th["decrypttime"], T.th["pausedtime"], |
---|
86 | + T.th["speed"]]] |
---|
87 | for r_ev in self.download_status.read_events: |
---|
88 | (start, length, requesttime, finishtime, bytes, decrypt, paused) = r_ev |
---|
89 | if finishtime is not None: |
---|
90 | hunk ./src/allmydata/web/status.py 432 |
---|
91 | T.td[bytes], T.td[rtt], T.td[decrypt], T.td[paused], |
---|
92 | T.td[speed], |
---|
93 | ]] |
---|
94 | - l["Read Events:", t] |
---|
95 | - |
---|
96 | - t = T.table(class_="status-download-events") |
---|
97 | - t[T.tr[T.td["type"], T.td["segnum"], T.td["when"], T.td["range"], |
---|
98 | - T.td["decodetime"], T.td["segtime"], T.td["speed"]]] |
---|
99 | + |
---|
100 | + l[T.h2["Read Events:"], t] |
---|
101 | + l[T.br(clear="all")] |
---|
102 | + |
---|
103 | + t = T.table(align="left",class_="status-download-events") |
---|
104 | + t[T.tr[T.th["type"], T.th["segnum"], T.th["when"], T.th["range"], |
---|
105 | + T.th["decodetime"], T.th["segtime"], T.th["speed"]]] |
---|
106 | reqtime = (None, None) |
---|
107 | for s_ev in self.download_status.segment_events: |
---|
108 | (etype, segnum, when, segstart, seglen, decodetime) = s_ev |
---|
109 | hunk ./src/allmydata/web/status.py 443 |
---|
110 | if etype == "request": |
---|
111 | - t[T.tr[T.td["request"], T.td["seg%d" % segnum], |
---|
112 | - T.td[srt(when)]]] |
---|
113 | + t[T.tr[T.td["request"], |
---|
114 | + T.td["seg%d" % segnum], |
---|
115 | + T.td[srt(when)], |
---|
116 | + T.td["-"], |
---|
117 | + T.td["-"], |
---|
118 | + T.td["-"], |
---|
119 | + T.td["-"]]] |
---|
120 | + |
---|
121 | reqtime = (segnum, when) |
---|
122 | elif etype == "delivery": |
---|
123 | if reqtime[0] == segnum: |
---|
124 | hunk ./src/allmydata/web/status.py 466 |
---|
125 | T.td[segtime], T.td[speed]]] |
---|
126 | elif etype == "error": |
---|
127 | t[T.tr[T.td["error"], T.td["seg%d" % segnum]]] |
---|
128 | - l["Segment Events:", t] |
---|
129 | + |
---|
130 | + l[T.h2["Segment Events:"], t] |
---|
131 | + l[T.br(clear="all")] |
---|
132 | |
---|
133 | hunk ./src/allmydata/web/status.py 470 |
---|
134 | - t = T.table(border="1") |
---|
135 | - t[T.tr[T.td["serverid"], T.td["shnum"], T.td["range"], |
---|
136 | - T.td["txtime"], T.td["rxtime"], T.td["received"], T.td["RTT"]]] |
---|
137 | + t = T.table(align="left",class_="status-download-events") |
---|
138 | + t[T.tr[T.th["serverid"], T.th["shnum"], T.th["range"], |
---|
139 | + T.th["txtime"], T.th["rxtime"], T.th["received"], T.th["RTT"]]] |
---|
140 | reqtime = (None, None) |
---|
141 | request_events = [] |
---|
142 | for serverid,requests in self.download_status.requests.iteritems(): |
---|
143 | hunk ./src/allmydata/web/status.py 491 |
---|
144 | T.td[srt(sent)], T.td[srt(received)], T.td[receivedlen], |
---|
145 | T.td[self.render_time(None, rtt)], |
---|
146 | ]] |
---|
147 | - l["Requests:", t] |
---|
148 | + |
---|
149 | + l[T.h2["Requests:"], t] |
---|
150 | + l[T.br(clear="all")] |
---|
151 | |
---|
152 | return l |
---|
153 | |
---|
154 | hunk ./src/allmydata/web/status.py 839 |
---|
155 | total = self.update_status.timings.get("total") |
---|
156 | per_server = self.update_status.timings.get("per_server") |
---|
157 | base = "http://chart.apis.google.com/chart?" |
---|
158 | - pieces = ["cht=bhs", "chs=400x300"] |
---|
159 | + pieces = ["cht=bhs"] |
---|
160 | pieces.append("chco=ffffff,4d89f9,c6d9fd") # colors |
---|
161 | data0 = [] |
---|
162 | data1 = [] |
---|
163 | hunk ./src/allmydata/web/status.py 844 |
---|
164 | data2 = [] |
---|
165 | + nb_nodes = 0 |
---|
166 | + graph_botom_margin= 21 |
---|
167 | + graph_top_margin = 5 |
---|
168 | peerids_s = [] |
---|
169 | top_abs = started |
---|
170 | # we sort the queries by the time at which we sent the first request |
---|
171 | hunk ./src/allmydata/web/status.py 856 |
---|
172 | peerids = [t[1] for t in sorttable] |
---|
173 | |
---|
174 | for peerid in peerids: |
---|
175 | + nb_nodes += 1 |
---|
176 | times = per_server[peerid] |
---|
177 | peerid_s = idlib.shortnodeid_b2a(peerid) |
---|
178 | peerids_s.append(peerid_s) |
---|
179 | hunk ./src/allmydata/web/status.py 876 |
---|
180 | if finished: |
---|
181 | top_abs = max(top_abs, finished) |
---|
182 | top_rel = top_abs - started |
---|
183 | + chs ="chs=400x%d" % ( (nb_nodes*28) + graph_top_margin + graph_botom_margin ) |
---|
184 | chd = "chd=t:" + "|".join([",".join(data0), |
---|
185 | ",".join(data1), |
---|
186 | ",".join(data2)]) |
---|
187 | hunk ./src/allmydata/web/status.py 881 |
---|
188 | pieces.append(chd) |
---|
189 | + pieces.append(chs) |
---|
190 | chds = "chds=0,%0.3f" % top_rel |
---|
191 | pieces.append(chds) |
---|
192 | pieces.append("chxt=x,y") |
---|
193 | hunk ./src/allmydata/web/status.py 897 |
---|
194 | pieces.append("chm=r,FF0000,0,%0.3f,%0.3f" % (finished_f, |
---|
195 | finished_f+0.01)) |
---|
196 | url = base + "&".join(pieces) |
---|
197 | - return T.img(src=url, align="right", float="right") |
---|
198 | + return T.img(src=url,border="1",align="right", float="right") |
---|
199 | |
---|
200 | |
---|
201 | class Status(rend.Page): |
---|
202 | hunk ./src/allmydata/web/status.xhtml 4 |
---|
203 | <html xmlns:n="http://nevow.com/ns/nevow/0.1"> |
---|
204 | <head> |
---|
205 | <title>Tahoe-LAFS - Current Uploads/Downloads</title> |
---|
206 | - <link href="/webform_css" rel="stylesheet" type="text/css"/> |
---|
207 | <link href="/tahoe_css" rel="stylesheet" type="text/css"/> |
---|
208 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
---|
209 | </head> |
---|
210 | hunk ./src/allmydata/web/status.xhtml 13 |
---|
211 | |
---|
212 | |
---|
213 | <h2>Active Operations:</h2> |
---|
214 | -<table class="table-headings-top" n:render="sequence" n:data="active_operations"> |
---|
215 | +<table align="left" class="table-headings-top" n:render="sequence" n:data="active_operations"> |
---|
216 | <tr n:pattern="header"> |
---|
217 | <th>Type</th> |
---|
218 | <th>Storage Index</th> |
---|
219 | hunk ./src/allmydata/web/status.xhtml 32 |
---|
220 | </tr> |
---|
221 | <tr n:pattern="empty"><td>No active operations!</td></tr> |
---|
222 | </table> |
---|
223 | - |
---|
224 | +<br clear="all" /> |
---|
225 | |
---|
226 | <h2>Recent Operations:</h2> |
---|
227 | hunk ./src/allmydata/web/status.xhtml 35 |
---|
228 | -<table class="table-headings-top" n:render="sequence" n:data="recent_operations"> |
---|
229 | +<table align="left" class="table-headings-top" n:render="sequence" n:data="recent_operations"> |
---|
230 | <tr n:pattern="header"> |
---|
231 | <th>Started</th> |
---|
232 | <th>Type</th> |
---|
233 | hunk ./src/allmydata/web/status.xhtml 56 |
---|
234 | </tr> |
---|
235 | <tr n:pattern="empty"><td>No recent operations!</td></tr> |
---|
236 | </table> |
---|
237 | +<br clear="all" /> |
---|
238 | |
---|
239 | <div>Return to the <a href="/">Welcome Page</a></div> |
---|
240 | |
---|
241 | hunk ./src/allmydata/web/tahoe.css 27 |
---|
242 | color: white; |
---|
243 | background-color: #58a1c3; |
---|
244 | } |
---|
245 | -td { padding: .3em .3em; } |
---|
246 | -th { padding: .3em .3em; } |
---|
247 | -.table-headings-top th { text-align: center; } |
---|
248 | -.table-headings-left th { text-align: right; vertical-align: top; } |
---|
249 | +td { |
---|
250 | + padding: .3em .3em; |
---|
251 | +} |
---|
252 | + |
---|
253 | +th { |
---|
254 | + padding: .3em .3em; |
---|
255 | +} |
---|
256 | + |
---|
257 | +.table-headings-top th { |
---|
258 | + text-align: center; |
---|
259 | + |
---|
260 | +} |
---|
261 | +.table-headings-left th { |
---|
262 | + text-align: right; |
---|
263 | + vertical-align: top; |
---|
264 | +} |
---|
265 | legend { |
---|
266 | font-weight: bold; |
---|
267 | } |
---|
268 | hunk ./src/allmydata/web/tahoe.css 155 |
---|
269 | /* recent upload/download status pages */ |
---|
270 | |
---|
271 | table.status-download-events { |
---|
272 | - border: 1px solid #aaa; |
---|
273 | + #border: 1px solid #aaa; |
---|
274 | + margin: 1em auto; |
---|
275 | + border: .2em solid #3289b4; |
---|
276 | + border-spacing: 1px; |
---|
277 | } |
---|
278 | table.status-download-events td { |
---|
279 | border: 1px solid #a00; |
---|
280 | } |
---|
281 | |
---|
282 | Context: |
---|
283 | |
---|
284 | [setup: use execfile to access _auto_deps.py in its proper location of src/allmydata/ instead of copying it into place when setup.py is executed |
---|
285 | zooko@zooko.com**20100906055714 |
---|
286 | Ignore-this: c179b42672d775580afad40121f86812 |
---|
287 | ] |
---|
288 | [trivial: M-x whitespace-cleanup |
---|
289 | zooko@zooko.com**20100903144712 |
---|
290 | Ignore-this: 1bb764d11ac69b4a35ea091cfb13158a |
---|
291 | ] |
---|
292 | [minor: remove unused interface declaration, change allmydata.org to tahoe-lafs.org in email address, fix wording in relnotes.txt |
---|
293 | zooko@zooko.com**20100930153708 |
---|
294 | Ignore-this: a452969228afed2774de375e29fa3048 |
---|
295 | ] |
---|
296 | [immutable/repairer.py: don't use the default happiness setting when repairing |
---|
297 | Kevan Carstensen <kevan@isnotajoke.com>**20100927200102 |
---|
298 | Ignore-this: bd704d9744b970849da8d46a16b8089a |
---|
299 | ] |
---|
300 | [NEWS: note dependency updates to pycryptopp and pycrypto. |
---|
301 | david-sarah@jacaranda.org**20100924191207 |
---|
302 | Ignore-this: eeaf5c9c9104f24c450c2ec4482ac1ee |
---|
303 | ] |
---|
304 | [TAG allmydata-tahoe-1.8.0 |
---|
305 | zooko@zooko.com**20100924021631 |
---|
306 | Ignore-this: 494ca0a885c5e20c883845fc53e7ab5d |
---|
307 | ] |
---|
308 | Patch bundle hash: |
---|
309 | b66367217ad59e92777d68540c1bb0d2f667bfb5 |
---|