1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
///////////////////////
// //
// Genuine constants //
// //
///////////////////////
// Just used below
function map(list) {
var res = {};
for (i in list) {
res[list[i]] = '';
}
return res;
}
// Which queries need to have the current vhost appended (if there is one)?
var VHOST_QUERIES = map(['/queues', '/exchanges']);
// Which queries need to have the current sort appended (if there is one)?
var SORT_QUERIES = map(['/connections', '/channels', '/vhosts', '/users',
'/queues', '/exchanges']);
// Extension arguments that we know about and present specially in the UI.
var KNOWN_ARGS = {'alternate-exchange': {'short': 'AE', 'type': 'string'},
'x-message-ttl': {'short': 'TTL', 'type': 'int'},
'x-expires': {'short': 'Exp', 'type': 'int'},
'x-ha-policy': {'short': 'HA', 'type': 'string'},
'x-dead-letter-exchange': {'short': 'DLX', 'type': 'string'},
'x-dead-letter-routing-key': {'short': 'DLK', 'type': 'string'}};
// Things that are like arguments that we format the same way in listings.
var IMPLICIT_ARGS = {'durable': {'short': 'D', 'type': 'boolean'},
'auto-delete': {'short': 'AD', 'type': 'boolean'},
'internal': {'short': 'I', 'type': 'boolean'}};
// Both the above
var ALL_ARGS = {};
for (var k in KNOWN_ARGS) ALL_ARGS[k] = KNOWN_ARGS[k];
for (var k in IMPLICIT_ARGS) ALL_ARGS[k] = IMPLICIT_ARGS[k];
///////////////////////////////////////////////////////////////////////////
// //
// Mostly constant, typically get set once at startup (or rarely anyway) //
// //
///////////////////////////////////////////////////////////////////////////
// All these are to do with hiding UI elements if
var statistics_level; // ...there are no fine stats
var user_administrator; // ...user is not an admin
var user_monitor; // ...user cannot monitor
var nodes_interesting; // ...we are not in a cluster
var vhosts_interesting; // ...there is only one vhost
// Extensions write to this, the dispatcher maker reads it
var dispatcher_modules = [];
// We need to know when all extension script files have loaded
var extension_count;
// The dispatcher needs access to the Sammy app
var app;
var exchange_types;
// Set up the above vars
function setup_global_vars() {
var overview = JSON.parse(sync_get('/overview'));
statistics_level = overview.statistics_level;
var user = JSON.parse(sync_get('/whoami'));
replace_content('login', '<p>User: <b>' + user.name + '</b></p>');
var tags = user.tags.split(",");
user_administrator = jQuery.inArray("administrator", tags) != -1;
user_monitor = user_administrator ||
jQuery.inArray("monitoring", tags) != -1;
nodes_interesting = user_monitor &&
JSON.parse(sync_get('/nodes')).length > 1;
vhosts_interesting = JSON.parse(sync_get('/vhosts')).length > 1;
current_vhost = get_pref('vhost');
exchange_types = overview.exchange_types;
}
////////////////////////////////////////////////////
// //
// Change frequently (typically every "new page") //
// //
////////////////////////////////////////////////////
// Which top level template we're showing
var current_template;
// Which JSON requests do we need to populate it
var current_reqs;
// Which tab is highlighted
var current_highlight;
// Which vhost are we looking at
var current_vhost = '';
// What is our current sort order
var current_sort;
var current_sort_reverse = false;
// The timer object for auto-updates, and how often it goes off
var timer;
var timer_interval;
// When did we last connect successfully (for the "could not connect" error)
var last_successful_connect;
// Every 200 updates without user interaction we do a full refresh, to
// work around memory leaks in browser DOM implementations.
// TODO: maybe we don't need this any more?
var update_counter = 0;
|