| 
									
										
										
										
											2010-07-23 20:43:35 +08:00
										 |  |  | UNKNOWN_REPR = '<span class="unknown">?</span>'; | 
					
						
							| 
									
										
										
										
											2011-02-04 22:38:26 +08:00
										 |  |  | FD_THRESHOLDS=[[0.95, 'red'], | 
					
						
							| 
									
										
										
										
											2011-02-18 22:26:12 +08:00
										 |  |  |                [0.8, 'yellow']]; | 
					
						
							| 
									
										
										
										
											2011-02-04 22:38:26 +08:00
										 |  |  | SOCKETS_THRESHOLDS=[[1.0, 'red'], | 
					
						
							| 
									
										
										
										
											2011-02-18 22:26:12 +08:00
										 |  |  |                     [0.8, 'yellow']]; | 
					
						
							| 
									
										
										
										
											2011-02-04 22:38:26 +08:00
										 |  |  | PROCESS_THRESHOLDS=[[0.75, 'red'], | 
					
						
							| 
									
										
										
										
											2011-02-18 22:26:12 +08:00
										 |  |  |                     [0.5, 'yellow']]; | 
					
						
							| 
									
										
										
										
											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 ? "●" : "○"; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-14 19:45:45 +08:00
										 |  |  | function fmt_date(d) { | 
					
						
							|  |  |  |     function f(i) { | 
					
						
							|  |  |  |         return i < 10 ? "0" + i : i; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     return d.getFullYear() + "-" + f(d.getMonth() + 1) + "-" + f(d.getDay()) + | 
					
						
							|  |  |  |         " " + f(d.getHours()) + ":" + f(d.getMinutes()) + ":" + | 
					
						
							|  |  |  |         f(d.getSeconds()); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-29 20:01:22 +08:00
										 |  |  | function fmt_parameters(obj) { | 
					
						
							|  |  |  |     var res = ''; | 
					
						
							|  |  |  |     if (obj.durable) { | 
					
						
							|  |  |  |         res += '<acronym title="Durable">D</acronym> '; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (obj.auto_delete) { | 
					
						
							|  |  |  |         res += '<acronym title="Auto-delete">AD</acronym> '; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-11-15 20:32:42 +08:00
										 |  |  |     if (obj.internal != undefined && obj.internal) { | 
					
						
							|  |  |  |         res += '<acronym title="Internal">I</acronym> '; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-10-29 20:01:22 +08:00
										 |  |  |     var args = fmt_table_short(obj.arguments); | 
					
						
							|  |  |  |     if (args != '') { | 
					
						
							| 
									
										
										
										
											2011-02-15 19:51:32 +08:00
										 |  |  |         res += args; | 
					
						
							| 
									
										
										
										
											2010-10-29 20:01:22 +08:00
										 |  |  |     } | 
					
						
							|  |  |  |     return res; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-01-21 21:17:41 +08:00
										 |  |  | function fmt_channel_mode(ch) { | 
					
						
							|  |  |  |     if (ch.transactional) { | 
					
						
							|  |  |  |         return '<acronym title="Transactional">T</acronym>'; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else if (ch.confirm) { | 
					
						
							|  |  |  |         return '<acronym title="Confirm">C</acronym>'; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							|  |  |  |         return ''; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-29 23:32:17 +08:00
										 |  |  | function fmt_color(r, thresholds) { | 
					
						
							| 
									
										
										
										
											2010-07-23 20:43:35 +08:00
										 |  |  |     if (r == undefined) return ''; | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-29 23:32:17 +08:00
										 |  |  |     for (var i in thresholds) { | 
					
						
							| 
									
										
										
										
											2011-02-18 22:26:12 +08:00
										 |  |  |         var threshold = thresholds[i][0]; | 
					
						
							|  |  |  |         var color = thresholds[i][1]; | 
					
						
							| 
									
										
										
										
											2010-10-29 23:32:17 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-18 22:26:12 +08:00
										 |  |  |         if (r >= threshold) { | 
					
						
							|  |  |  |             return color; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-10-29 23:32:17 +08:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-10-30 00:58:21 +08:00
										 |  |  |     return 'green'; | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-28 19:19:36 +08:00
										 |  |  | function fmt_rate(obj, name, show_total, cssClass) { | 
					
						
							|  |  |  |     var res = fmt_rate0(obj, name, fmt_num, show_total); | 
					
						
							|  |  |  |     if (cssClass == undefined || res == '') { | 
					
						
							|  |  |  |         return res; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else { | 
					
						
							|  |  |  |         return '<span class="' + cssClass + '">' + res + '</span>'; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2010-09-02 19:58:34 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_rate_bytes(obj, name) { | 
					
						
							| 
									
										
										
										
											2010-10-29 20:01:22 +08:00
										 |  |  |     return fmt_rate0(obj, name, fmt_bytes, true); | 
					
						
							| 
									
										
										
										
											2010-09-02 19:58:34 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2010-07-28 01:04:48 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-10-29 20:01:22 +08:00
										 |  |  | function fmt_rate0(obj, name, fmt, show_total) { | 
					
						
							| 
									
										
										
										
											2010-09-02 19:58:34 +08:00
										 |  |  |     if (obj == undefined || obj[name] == undefined) return ''; | 
					
						
							| 
									
										
										
										
											2010-10-29 20:01:22 +08:00
										 |  |  |     var res = ''; | 
					
						
							| 
									
										
										
										
											2010-09-02 19:58:34 +08:00
										 |  |  |     if (obj[name + '_details'] != undefined) { | 
					
						
							| 
									
										
										
										
											2010-10-29 20:01:22 +08:00
										 |  |  |         res = fmt(obj[name + '_details'].rate) + '/s'; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     if (show_total) { | 
					
						
							|  |  |  |         res += '<sub>(' + fmt(obj[name]) + ' total)</sub>'; | 
					
						
							| 
									
										
										
										
											2010-09-02 19:58:34 +08:00
										 |  |  |     } | 
					
						
							|  |  |  |     return res; | 
					
						
							| 
									
										
										
										
											2010-07-28 01:04:48 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-26 01:32:04 +08:00
										 |  |  | function is_stat_empty(obj, name) { | 
					
						
							| 
									
										
										
										
											2011-02-17 23:23:08 +08:00
										 |  |  |     if (obj == undefined | 
					
						
							| 
									
										
										
										
											2011-02-18 18:38:41 +08:00
										 |  |  |         || obj[name] == undefined | 
					
						
							|  |  |  |         || obj[name + '_details'] == undefined | 
					
						
							|  |  |  |         || obj[name + '_details'].rate < 0.00001) return true; | 
					
						
							| 
									
										
										
										
											2011-02-17 23:23:08 +08:00
										 |  |  |     return false; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-26 01:32:04 +08:00
										 |  |  | function is_col_empty(channels, name) { | 
					
						
							|  |  |  |     for (var i = 0; i < channels.length; i++) { | 
					
						
							|  |  |  |         var channel = channels[i]; | 
					
						
							|  |  |  |         if (!is_stat_empty(channel.message_stats, name)) { | 
					
						
							|  |  |  |             return false; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return true; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-27 00:42:03 +08:00
										 |  |  | function fmt_exchange(name) { | 
					
						
							| 
									
										
										
										
											2011-04-08 20:00:51 +08:00
										 |  |  |     return name == '' ? '(AMQP default)' : name; | 
					
						
							| 
									
										
										
										
											2010-08-27 00:42:03 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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-10-12 21:08:17 +08:00
										 |  |  | function fmt_table_short(table) { | 
					
						
							| 
									
										
										
										
											2011-02-12 02:04:05 +08:00
										 |  |  |     return '<table class="mini">' + fmt_table_body(table, ':') + '</table>'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_table_long(table) { | 
					
						
							|  |  |  |     return '<table class="facts">' + fmt_table_body(table, '') + | 
					
						
							|  |  |  |         '</table><span class="br"></span>'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_table_body(table, x) { | 
					
						
							| 
									
										
										
										
											2010-10-12 21:08:17 +08:00
										 |  |  |     var res = ''; | 
					
						
							|  |  |  |     for (k in table) { | 
					
						
							| 
									
										
										
										
											2011-02-12 02:04:05 +08:00
										 |  |  |         res += '<tr><th>' + k + x + '</th><td>' + fmt_amqp_value(table[k]) + | 
					
						
							|  |  |  |             '</td>'; | 
					
						
							| 
									
										
										
										
											2010-10-12 21:08:17 +08:00
										 |  |  |     } | 
					
						
							|  |  |  |     return res; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-12 02:04:05 +08:00
										 |  |  | function fmt_amqp_value(val) { | 
					
						
							| 
									
										
										
										
											2011-02-17 00:00:12 +08:00
										 |  |  |     if (val instanceof Array) { | 
					
						
							| 
									
										
										
										
											2011-03-03 00:49:00 +08:00
										 |  |  |         var val2 = new Array(); | 
					
						
							|  |  |  |         for (var i = 0; i < val.length; i++) { | 
					
						
							|  |  |  |             val2[i] = fmt_amqp_value(val[i]); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return val2.join("<br/>"); | 
					
						
							| 
									
										
										
										
											2011-02-17 00:00:12 +08:00
										 |  |  |     } else if (val instanceof Object) { | 
					
						
							| 
									
										
										
										
											2011-02-17 19:47:23 +08:00
										 |  |  |         return fmt_table_short(val); | 
					
						
							| 
									
										
										
										
											2011-03-10 00:26:25 +08:00
										 |  |  |     } else if (typeof(val) == 'string') { | 
					
						
							|  |  |  |         return fmt_escape_html(val); | 
					
						
							| 
									
										
										
										
											2011-02-12 02:04:05 +08:00
										 |  |  |     } else { | 
					
						
							|  |  |  |         return val; | 
					
						
							| 
									
										
										
										
											2010-10-28 22:30:32 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-09 18:49:47 +08:00
										 |  |  | function fmt_uptime(u) { | 
					
						
							|  |  |  |     var uptime = Math.floor(u / 1000); | 
					
						
							|  |  |  |     var sec = uptime % 60; | 
					
						
							|  |  |  |     var min = Math.floor(uptime / 60) % 60; | 
					
						
							|  |  |  |     var hour = Math.floor(uptime / 3600) % 24; | 
					
						
							|  |  |  |     var day = Math.floor(uptime / 86400); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     if (day > 0) | 
					
						
							|  |  |  |         return day + 'd ' + hour + 'h'; | 
					
						
							|  |  |  |     else if (hour > 0) | 
					
						
							|  |  |  |         return hour + 'h ' + min + 'm'; | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |         return min + 'm ' + sec + 's'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_rabbit_version(applications) { | 
					
						
							|  |  |  |     for (var i in applications) { | 
					
						
							|  |  |  |         if (applications[i].name == 'rabbit') { | 
					
						
							|  |  |  |             return applications[i].version; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return 'unknown'; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-11-16 23:41:17 +08:00
										 |  |  | function fmt_idle(obj) { | 
					
						
							|  |  |  |     if (obj.idle_since == undefined) { | 
					
						
							|  |  |  |         return 'Active'; | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         return '<acronym title="Idle since ' + obj.idle_since + | 
					
						
							|  |  |  |             '">Idle</acronym>'; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_idle_long(obj) { | 
					
						
							|  |  |  |     if (obj.idle_since == undefined) { | 
					
						
							|  |  |  |         return 'Active'; | 
					
						
							|  |  |  |     } else { | 
					
						
							|  |  |  |         return 'Idle since<br/>' + obj.idle_since; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-02-22 02:20:33 +08:00
										 |  |  | function fmt_escape_html(txt) { | 
					
						
							| 
									
										
										
										
											2011-03-17 00:22:59 +08:00
										 |  |  |     return txt.replace(/</g, '<') | 
					
						
							|  |  |  |         .replace(/>/g, '>') | 
					
						
							|  |  |  |         .replace(/\n/g, '<br/>'); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function fmt_maybe_wrap(txt, encoding) { | 
					
						
							|  |  |  |     if (encoding == 'string') return fmt_escape_html(txt); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     var WRAP = 120; | 
					
						
							|  |  |  |     var res = ''; | 
					
						
							|  |  |  |     while (txt != '') { | 
					
						
							|  |  |  |         var i = txt.indexOf('\n'); | 
					
						
							|  |  |  |         if (i == -1 || i > WRAP) { | 
					
						
							|  |  |  |             i = Math.min(WRAP, txt.length); | 
					
						
							|  |  |  |             res += txt.substring(0, i) + '\n'; | 
					
						
							|  |  |  |             txt = txt.substring(i); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         else { | 
					
						
							|  |  |  |             res += txt.substring(0, i + 1); | 
					
						
							|  |  |  |             txt = txt.substring(i + 1); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return fmt_escape_html(res); | 
					
						
							| 
									
										
										
										
											2011-02-22 02:20:33 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-03-16 01:03:44 +08:00
										 |  |  | function fmt_escape_html(txt) { | 
					
						
							|  |  |  |     return txt.replace(/</g, '<').replace(/>/g, '>'); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | function alt_rows(i) { | 
					
						
							| 
									
										
										
										
											2010-11-09 18:55:04 +08:00
										 |  |  |     return (i % 2 == 0) ? ' class="alt1"' : ' class="alt2"'; | 
					
						
							| 
									
										
										
										
											2010-07-22 23:29:19 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											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-11-03 01:19:14 +08:00
										 |  |  | function link_node(name) { | 
					
						
							|  |  |  |     return link_to(name, '#/nodes/' + esc(name)) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-08-25 19:24:34 +08:00
										 |  |  | function link_to(name, url) { | 
					
						
							| 
									
										
										
										
											2011-03-16 01:03:44 +08:00
										 |  |  |     return '<a href="' + url + '">' + fmt_escape_html(name) + '</a>'; | 
					
						
							| 
									
										
										
										
											2010-09-03 00:06:59 +08:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | function message_rates(stats) { | 
					
						
							|  |  |  |     var res = ""; | 
					
						
							|  |  |  |     if (keys(stats).length > 0) { | 
					
						
							| 
									
										
										
										
											2010-12-14 01:38:26 +08:00
										 |  |  |         var items = [['Publish', 'publish'], ['Confirm', 'confirm'], | 
					
						
							|  |  |  |                      ['Deliver', 'deliver'], ['Acknowledge', 'ack'], | 
					
						
							|  |  |  |                      ['Get', 'get'], ['Deliver (noack)', 'deliver_no_ack'], | 
					
						
							| 
									
										
										
										
											2010-12-08 17:59:43 +08:00
										 |  |  |                      ['Get (noack)', 'get_no_ack'], | 
					
						
							| 
									
										
										
										
											2011-02-04 21:40:15 +08:00
										 |  |  |                      ['Return (mandatory)', 'return_unroutable'], | 
					
						
							| 
									
										
										
										
											2011-02-04 21:46:02 +08:00
										 |  |  |                      ['Return (immediate)', 'return_not_delivered']]; | 
					
						
							| 
									
										
										
										
											2010-09-03 00:06:59 +08:00
										 |  |  |         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>'; | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-10-20 18:38:05 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (res == "") { | 
					
						
							|  |  |  |             res = '<p>Waiting for message rates...</p>'; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2010-09-03 00:06:59 +08:00
										 |  |  |     } | 
					
						
							|  |  |  |     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; | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2010-10-12 00:05:06 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | function fmt_sort(display, sort) { | 
					
						
							|  |  |  |     var prefix = ''; | 
					
						
							|  |  |  |     if (current_sort == sort) { | 
					
						
							|  |  |  |         prefix = '<span class="arrow">' + | 
					
						
							|  |  |  |             (current_sort_reverse ? '▲ ' : '▼ ') + | 
					
						
							|  |  |  |             '</span>'; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return '<a class="sort" sort="' + sort + '">' + prefix + display + '</a>'; | 
					
						
							| 
									
										
										
										
											2011-02-17 00:00:12 +08:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2011-03-30 20:14:24 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | function properties_size(obj) { | 
					
						
							|  |  |  |     var count = 0; | 
					
						
							|  |  |  |     for (k in obj) { | 
					
						
							|  |  |  |         if (obj.hasOwnProperty(k)) count++; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     return count; | 
					
						
							|  |  |  | } |