| 
									
										
										
										
											2010-07-23 20:43:35 +08:00
										 |  |  | UNKNOWN_REPR = '<span class="unknown">?</span>'; | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | function fmt_string(str) { | 
					
						
							| 
									
										
										
										
											2010-07-23 20:43:35 +08:00
										 |  |  |     if (str == undefined) return UNKNOWN_REPR; | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  |     return str; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-28 01:04:48 +08:00
										 |  |  | function fmt_num(num) { | 
					
						
							|  |  |  |     if (num == undefined) return UNKNOWN_REPR; | 
					
						
							|  |  |  |     return num.toFixed(0); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | function fmt_bytes(bytes) { | 
					
						
							| 
									
										
										
										
											2010-07-23 20:43:35 +08:00
										 |  |  |     if (bytes == undefined) return UNKNOWN_REPR; | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     function f(n, p) { | 
					
						
							|  |  |  |         if (n > 1024) return f(n / 1024, p + 1); | 
					
						
							|  |  |  |         else return [n, p]; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-01 00:56:33 +08:00
										 |  |  |     var num_power = f(bytes, 0); | 
					
						
							|  |  |  |     var num = num_power[0]; | 
					
						
							|  |  |  |     var power = num_power[1]; | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  |     var powers = ['B', 'kB', 'MB', 'GB', 'TB']; | 
					
						
							|  |  |  |     return (power == 0 ? num.toFixed(0) : num.toFixed(1)) + powers[power]; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_boolean(b) { | 
					
						
							| 
									
										
										
										
											2010-07-23 20:43:35 +08:00
										 |  |  |     if (b == undefined) return UNKNOWN_REPR; | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     return b ? "●" : "○"; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_color(r) { | 
					
						
							| 
									
										
										
										
											2010-07-23 20:43:35 +08:00
										 |  |  |     if (r == undefined) return ''; | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     if (r > 0.75) return 'red'; | 
					
						
							|  |  |  |     else if (r > 0.5) return 'yellow'; | 
					
						
							|  |  |  |     else return 'green'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-28 01:04:48 +08:00
										 |  |  | function fmt_rate(obj, name) { | 
					
						
							| 
									
										
										
										
											2010-09-02 19:58:34 +08:00
										 |  |  |     return fmt_rate0(obj, name, fmt_num); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_rate_bytes(obj, name) { | 
					
						
							|  |  |  |     return fmt_rate0(obj, name, fmt_bytes); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2010-07-28 01:04:48 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-02 19:58:34 +08:00
										 |  |  | function fmt_rate0(obj, name, fmt) { | 
					
						
							|  |  |  |     if (obj == undefined || obj[name] == undefined) return ''; | 
					
						
							|  |  |  |     var res = '<sub>(' + fmt(obj[name]) + ' total)</sub>'; | 
					
						
							|  |  |  |     if (obj[name + '_details'] != undefined) { | 
					
						
							|  |  |  |         res = fmt(obj[name + '_details'].rate) + '/s' + res; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return res; | 
					
						
							| 
									
										
										
										
											2010-07-28 01:04:48 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-27 00:42:03 +08:00
										 |  |  | function fmt_exchange(name) { | 
					
						
							|  |  |  |     return name == '' ? '<i>(AMQP default)</i>' : name; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_exchange_url(name) { | 
					
						
							|  |  |  |     return name == '' ? 'amq.default' : name; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-29 20:22:46 +08:00
										 |  |  | function fmt_download_filename(host) { | 
					
						
							|  |  |  |     var now = new Date(); | 
					
						
							| 
									
										
										
										
											2010-10-01 01:02:05 +08:00
										 |  |  |     return host.replace('@', '_') + "_" + now.getFullYear() + "-" + | 
					
						
							|  |  |  |         (now.getMonth() + 1) + "-" + now.getDate() + ".json"; | 
					
						
							| 
									
										
										
										
											2010-09-29 20:22:46 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | function alt_rows(i) { | 
					
						
							|  |  |  |     return (i % 2 == 0) ? ' class="alt"' : ''; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-24 18:37:54 +08:00
										 |  |  | function esc(str) { | 
					
						
							| 
									
										
										
										
											2010-09-14 22:46:19 +08:00
										 |  |  |     return encodeURIComponent(str); | 
					
						
							| 
									
										
										
										
											2010-08-25 19:24:34 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function link_conn(name) { | 
					
						
							|  |  |  |     return link_to(name, '#/connections/' + esc(name)) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-09-03 00:06:59 +08:00
										 |  |  | function link_channel(name) { | 
					
						
							|  |  |  |     return link_to(name, '#/channels/' + esc(name)) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-27 00:42:03 +08:00
										 |  |  | function link_exchange(vhost, name) { | 
					
						
							|  |  |  |     var url = esc(vhost) + '/' + (name == '' ? 'amq.default' : esc(name)); | 
					
						
							|  |  |  |     return link_to(fmt_exchange(name), '#/exchanges/' + url) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-27 17:55:32 +08:00
										 |  |  | function link_queue(vhost, name) { | 
					
						
							|  |  |  |     return link_to(name, '#/queues/' + esc(vhost) + '/' + esc(name)) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-26 01:18:31 +08:00
										 |  |  | function link_vhost(name) { | 
					
						
							|  |  |  |     return link_to(name, '#/vhosts/' + esc(name)) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function link_user(name) { | 
					
						
							| 
									
										
										
										
											2010-08-27 01:23:44 +08:00
										 |  |  |     return link_to(name, '#/users/' + esc(name)) | 
					
						
							| 
									
										
										
										
											2010-08-26 01:18:31 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-25 19:24:34 +08:00
										 |  |  | function link_to(name, url) { | 
					
						
							|  |  |  |     return '<a href="' + url + '">' + name + '</a>'; | 
					
						
							| 
									
										
										
										
											2010-09-03 00:06:59 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function message_rates(stats) { | 
					
						
							|  |  |  |     var res = ""; | 
					
						
							|  |  |  |     if (keys(stats).length > 0) { | 
					
						
							|  |  |  |         var items = [['Publish', 'publish'], ['Deliver', 'deliver'], | 
					
						
							|  |  |  |                      ['Acknowledge', 'ack'], ['Get', 'get'], | 
					
						
							|  |  |  |                      ['Deliver (noack)', 'deliver_no_ack'], | 
					
						
							|  |  |  |                      ['Get (noack)', 'get_no_ack']]; | 
					
						
							|  |  |  |         for (var i in items) { | 
					
						
							|  |  |  |             var name = items[i][0]; | 
					
						
							|  |  |  |             var key = items[i][1] + '_details'; | 
					
						
							|  |  |  |             if (key in stats) { | 
					
						
							|  |  |  |                 res += '<div class="highlight">' + name; | 
					
						
							|  |  |  |                 res += '<strong>' + Math.round(stats[key].rate) + '</strong>'; | 
					
						
							|  |  |  |                 res += 'msg/s</div>'; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							|  |  |  |         res = '<p>Currently idle</p>'; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return res; | 
					
						
							| 
									
										
										
										
											2010-09-29 21:45:40 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function maybe_truncate(items) { | 
					
						
							|  |  |  |     var maximum = 500; | 
					
						
							|  |  |  |     var str = ''; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (items.length > maximum) { | 
					
						
							|  |  |  |         str = '<p class="warning">Only ' + maximum + ' of ' + | 
					
						
							|  |  |  |             items.length + ' items are shown.</p>'; | 
					
						
							|  |  |  |         items.length = maximum; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return str; | 
					
						
							|  |  |  | } |