in solr/webapp/solr/js/scripts/plugins.js [100:349]
var render_plugin_data = function( plugin_data, plugin_sort, types )
{
var frame_element = $( '#frame', content_element );
var navigation_element = $( '#navigation ul', content_element );
var navigation_content = [];
for( var i = 0; i < types.length; i++ )
{
var type_url = active_context.params.splat[0] + '/' + active_context.params.splat[1] + '/' + types[i].toLowerCase();
var navigation_markup = '<li class="' + types[i].toLowerCase().esc() + '">' +
'<a href="#/' + type_url + '" rel="' + types[i].esc() + '">' + types[i].esc();
if( changes.count[types[i]] )
{
navigation_markup += ' <span>' + changes.count[types[i]].esc() + '</span>';
}
navigation_markup += '</a>' +
'</li>';
navigation_content.push( navigation_markup );
}
navigation_content.push( '<li class="PLUGINCHANGES"><a href="#">Watch Changes</a></li>' );
navigation_content.push( '<li class="RELOAD"><a href="#" onClick="window.location.reload()">Refresh Values</a></li>' );
navigation_element
.html( navigation_content.join( "\n" ) );
$( '.PLUGINCHANGES a', navigation_element )
.die( 'click' )
.live
(
'click',
function( event )
{
load_reference_xml();
changes = { count : {}, list : {} }
$( 'a > span', navigation_element ).remove();
$( '.entry.changed', frame_element ).removeClass( 'changed' );
$.blockUI
(
{
message: $('#recording'),
css: { width: '450px' }
}
);
return false;
}
);
$( '#recording button' )
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
type: 'POST',
url: core_basepath + '/admin/mbeans',
dataType : 'json',
data: {
'stats': 'true',
'wt': 'json',
'diff': 'true',
'all': 'true',
'stream.body': reference_xml
},
success : function( response, text_status, xhr )
{
load_reference_xml();
app.plugin_data = compute_plugin_data( response );
render_plugin_data( app.plugin_data.plugin_data, app.plugin_data.sort_table, app.plugin_data.types );
}
}
);
$.unblockUI();
return false;
}
);
$( 'a[href="' + context_path + '"]', navigation_element )
.parent().addClass( 'current' );
var content = '<ul>';
for( var sort_key in plugin_sort[selected_type] )
{
plugin_sort[selected_type][sort_key].sort();
var plugin_type_length = plugin_sort[selected_type][sort_key].length;
for( var i = 0; i < plugin_type_length; i++ )
{
var bean = plugin_sort[selected_type][sort_key][i];
var classes = [ 'entry' ];
if( changes.list[selected_type] && changes.list[selected_type][bean] )
{
classes.push( 'changed' );
}
content += '<li class="' + classes.join( ' ' ) + '">' + "\n";
content += '<a href="' + context_path + '?entry=' + bean.esc() + '" data-bean="' + bean.esc() + '">';
content += '<span>' + bean.esc() + '</span>';
content += '</a>' + "\n";
content += '<ul class="detail">' + "\n";
var details = plugin_data[selected_type][ plugin_sort[selected_type][sort_key][i] ];
for( var detail_key in details )
{
if( 'stats' !== detail_key )
{
var detail_value = details[detail_key];
if( 'description' === detail_key )
{
// Link component list to their MBeans page
if(detail_value.match(/^Search using components: /)) {
var idx = detail_value.indexOf(':');
var url = '#/'+active_context.params.splat[0]+'/plugins/other?entry=';
var tmp = 'Search using components:<ul>';
$.each(detail_value.substr(idx+1).split(","), function(index, value) {
value = $.trim(value);
tmp += '<li><a href="'+url+value+'" class="linker">'+value+"</a></li>";
});
tmp += "</ul>";
detail_value = tmp;
}
}
content += '<li><dl class="clearfix">' + "\n";
content += '<dt>' + detail_key.esc() + ':</dt>' + "\n";
if($.isArray(detail_value)) {
$.each(detail_value, function(index, value) {
content += '<dd>' + value.esc() + '</dd>' + "\n";
});
}
else {
content += '<dd>' + new String( detail_value ).esc() + '</dd>' + "\n";
}
content += '</dl></li>' + "\n";
}
else if( 'stats' === detail_key && details[detail_key] )
{
content += '<li class="stats clearfix">' + "\n";
content += '<span>' + detail_key.esc() + ':</span>' + "\n";
content += '<ul>' + "\n";
for( var stats_key in details[detail_key] )
{
var stats_value = new String( details[detail_key][stats_key] );
stats_value = stats_value.replace( /([\(@])/g, '$1​' );
content += '<li><dl class="clearfix">' + "\n";
content += '<dt>' + stats_key.esc() + ':</dt>' + "\n";
content += '<dd>' + stats_value.esc() + '</dd>' + "\n";
content += '</dl></li>' + "\n";
}
content += '</ul></li>' + "\n";
}
}
content += '</ul>' + "\n";
}
}
content += '</ul>' + "\n";
frame_element
.html( content );
var path = active_context.path.split( '?entry=' );
var entries = ( path[1] || '' ).split( ',' );
var entry_count = entries.length;
for( var i = 0; i < entry_count; i++ )
{
$( 'a[data-bean="' + entries[i].esc() + '"]', frame_element )
.parent().addClass( 'expanded' );
}
$( 'a', frame_element )
.off( 'click' )
.on
(
'click',
function( event )
{
var self = $( this );
var bean = self.data( 'bean' );
var split = '?entry=';
var path = active_context.path.split( split );
var entry = ( path[1] || '' );
var regex = new RegExp( bean.replace( /\//g, '\\/' ) + '(,|$)' );
var match = regex.test( entry );
var url = path[0] + split;
url += match
? entry.replace( regex, '' )
: entry + ',' + bean;
url = url.replace( /=,/, '=' );
url = url.replace( /,$/, '' );
url = url.replace( /\?entry=$/, '' );
active_context.redirect( url );
return false;
}
);
// Try to make links for anything with http (but leave the rest alone)
$( '.detail dd' ).each(function(index) {
var txt = $(this).html();
if(txt.indexOf("http") >= 0) {
$(this).linker({
className : 'linker'
});
}
});
// Add invisible whitespace after each slash
$( '.detail a.linker' ).each(function(index) {
$(this).html( $(this).html().replace( /\//g, '/​' ) );
});
$( '.entry', frame_element )
.each
(
function( i, entry )
{
$( '.detail > li', entry ).not( '.stats' ).filter( ':even' )
.addClass( 'odd' );
$( '.stats li:odd', entry )
.addClass( 'odd' );
}
);
};