in solr/webapp/solr/js/scripts/app.js [154:597]
var solr_admin = function( app_config )
{
that = this,
menu_element = null,
is_multicore = null,
cores_data = null,
active_core = null,
config = app_config,
params = null,
dashboard_values = null,
schema_browser_data = null,
plugin_data = null,
this.menu_element = $( '#core-selector select' );
this.core_menu = $( '#core-menu ul' );
this.config = config;
this.timeout = null;
this.core_regex_base = '^#\\/([\\w\\d-\\.]+)';
browser = {
locale : null,
language : null,
country : null
};
show_global_error = function( error )
{
var main = $( '#main' );
$( 'div[id$="-wrapper"]', main )
.remove();
main
.addClass( 'error' )
.append( error );
var pre_tags = $( 'pre', main );
if( 0 !== pre_tags.size() )
{
hljs.highlightBlock( pre_tags.get(0) );
}
};
sort_cores_data = function sort_cores_data( cores_status )
{
// build array of core-names for sorting
var core_names = [];
for( var core_name in cores_status )
{
core_names.push( core_name );
}
core_names.sort();
var core_count = core_names.length;
var cores = {};
for( var i = 0; i < core_count; i++ )
{
var core_name = core_names[i];
cores[core_name] = cores_status[core_name];
}
return cores;
};
this.set_cores_data = function set_cores_data( cores )
{
that.cores_data = sort_cores_data( cores.status );
that.menu_element
.empty();
var core_list = [];
core_list.push( '<option></option>' );
var core_count = 0;
for( var core_name in that.cores_data )
{
core_count++;
var core_path = config.solr_path + '/' + core_name;
var classes = [];
if( cores.status[core_name]['isDefaultCore'] )
{
classes.push( 'default' );
}
var core_tpl = '<option '
+ ' id="' + core_name.replace( /\./g, '__' ) + '" '
+ ' class="' + classes.join( ' ' ) + '"'
+ ' data-basepath="' + core_path + '"'
+ ' schema="' + cores.status[core_name]['schema'] + '"'
+ ' config="' + cores.status[core_name]['config'] + '"'
+ ' value="#/' + core_name + '"'
+ ' title="' + core_name + '"'
+ '>'
+ core_name
+ '</option>';
core_list.push( core_tpl );
}
var has_cores = 0 !== core_count;
if( has_cores )
{
that.menu_element
.append( core_list.join( "\n" ) )
.trigger( 'liszt:updated' );
}
var core_selector = $( '#core-selector' );
core_selector.find( '#has-cores' ).toggle( has_cores );
core_selector.find( '#has-no-cores' ).toggle( !has_cores );
if( has_cores )
{
var cores_element = core_selector.find( '#has-cores' );
var selector_width = cores_element.width();
cores_element.find( '.chzn-container' )
.css( 'width', selector_width + 'px' );
cores_element.find( '.chzn-drop' )
.css( 'width', ( selector_width - 2 ) + 'px' );
}
this.check_for_init_failures( cores );
};
this.remove_init_failures = function remove_init_failures()
{
$( '#init-failures' )
.hide()
.find( 'ul' )
.empty();
}
this.check_for_init_failures = function check_for_init_failures( cores )
{
if( !cores.initFailures )
{
this.remove_init_failures();
return false;
}
var failures = [];
for( var core_name in cores.initFailures )
{
failures.push
(
'<li>' +
'<strong>' + core_name.esc() + ':</strong>' + "\n" +
cores.initFailures[core_name].esc() + "\n" +
'</li>'
);
}
if( 0 === failures.length )
{
this.remove_init_failures();
return false;
}
$( '#init-failures' )
.show()
.find( 'ul' )
.html( failures.join( "\n" ) );
}
this.run = function()
{
var navigator_language = navigator.userLanguage || navigator.language;
var language_match = navigator_language.match( /^(\w{2})([-_](\w{2}))?$/ );
if( language_match )
{
if( language_match[1] )
{
browser.language = language_match[1].toLowerCase();
}
if( language_match[3] )
{
browser.country = language_match[3].toUpperCase();
}
if( language_match[1] && language_match[3] )
{
browser.locale = browser.language + '_' + browser.country
}
}
$.ajax
(
{
url : config.solr_path + config.core_admin_path + '?wt=json&indexInfo=false',
dataType : 'json',
beforeSend : function( arr, form, options )
{
$( '#content' )
.html( '<div id="index"><div class="loader">Loading ...</div></div>' );
},
success : function( response )
{
that.set_cores_data( response );
that.menu_element
.chosen()
.off( 'change' )
.on
(
'change',
function( event )
{
location.href = $( 'option:selected', this ).val();
return false;
}
)
.on
(
'liszt:updated',
function( event )
{
var core_name = $( 'option:selected', this ).text();
that.core_menu
.html
(
//Keep this in alphabetical order after the overview
'<li class="overview"><a href="#/' + core_name + '"><span>Overview</span></a></li>' + "\n" +
'<li class="analysis"><a href="#/' + core_name + '/analysis"><span>Analysis</span></a></li>' + "\n" +
'<li class="dataimport"><a href="#/' + core_name + '/dataimport"><span>Dataimport</span></a></li>' + "\n" +
'<li class="documents"><a href="#/' + core_name + '/documents"><span>Documents</span></a></li>' + "\n" +
'<li class="files"><a href="#/' + core_name + '/files"><span>Files</span></a></li>' + "\n" +
'<li class="ping"><a rel="' + that.config.solr_path + '/' + core_name + '/admin/ping"><span>Ping</span></a></li>' + "\n" +
'<li class="plugins"><a href="#/' + core_name + '/plugins"><span>Plugins / Stats</span></a></li>' + "\n" +
'<li class="query"><a href="#/' + core_name + '/query"><span>Query</span></a></li>' + "\n" +
'<li class="replication"><a href="#/' + core_name + '/replication"><span>Replication</span></a></li>' + "\n" +
'<li class="schema-browser"><a href="#/' + core_name + '/schema-browser"><span>Schema Browser</span></a></li>' +
'<li class="segments"><a href="#/' + core_name + '/segments"><span>Segments info</span></a></li>'
)
.show();
if( !core_name )
{
that.core_menu
.hide()
.empty();
}
}
);
check_fixed_menu();
$( window ).resize( check_fixed_menu );
var system_url = config.solr_path + '/admin/info/system?wt=json';
$.ajax
(
{
url : system_url,
dataType : 'json',
beforeSend : function( arr, form, options )
{
},
success : function( response )
{
that.dashboard_values = response;
var environment_args = null;
var cloud_args = null;
if( response.jvm && response.jvm.jmx && response.jvm.jmx.commandLineArgs )
{
var command_line_args = response.jvm.jmx.commandLineArgs.join( ' | ' );
environment_args = command_line_args.match( /-Dsolr.environment=((dev|test|prod)?[\w\d]*)/i );
}
if( response.mode )
{
cloud_args = response.mode.match( /solrcloud/i );
}
// environment
var wrapper = $( '#wrapper' );
var environment_element = $( '#environment' );
if( environment_args )
{
wrapper
.addClass( 'has-environment' );
if( environment_args[1] )
{
environment_element
.html( environment_args[1] );
}
if( environment_args[2] )
{
environment_element
.addClass( environment_args[2] );
}
}
else
{
wrapper
.removeClass( 'has-environment' );
}
// cloud
var cloud_nav_element = $( '#menu #cloud' );
if( cloud_args )
{
cloud_nav_element
.show();
}
// sammy
sammy.run( location.hash );
},
error : function()
{
},
complete : function()
{
loader.hide( this );
}
}
);
},
error : function()
{
},
complete : function()
{
}
}
);
};
this.convert_duration_to_seconds = function convert_duration_to_seconds( str )
{
var seconds = 0;
var arr = new String( str || '' ).split( '.' );
var parts = arr[0].split( ':' ).reverse();
var parts_count = parts.length;
for( var i = 0; i < parts_count; i++ )
{
seconds += ( parseInt( parts[i], 10 ) || 0 ) * Math.pow( 60, i );
}
// treat more or equal than .5 as additional second
if( arr[1] && 5 <= parseInt( arr[1][0], 10 ) )
{
seconds++;
}
return seconds;
};
this.convert_seconds_to_readable_time = function convert_seconds_to_readable_time( seconds )
{
seconds = parseInt( seconds || 0, 10 );
var minutes = Math.floor( seconds / 60 );
var hours = Math.floor( minutes / 60 );
var text = [];
if( 0 !== hours )
{
text.push( hours + 'h' );
seconds -= hours * 60 * 60;
minutes -= hours * 60;
}
if( 0 !== minutes )
{
text.push( minutes + 'm' );
seconds -= minutes * 60;
}
if( 0 !== seconds )
{
text.push( ( '0' + seconds ).substr( -2 ) + 's' );
}
return text.join( ' ' );
};
this.clear_timeout = function clear_timeout()
{
if( !app.timeout )
{
return false;
}
console.debug( 'Clearing Timeout #' + this.timeout );
clearTimeout( this.timeout );
this.timeout = null;
};
this.format_json = function format_json( json_str )
{
if( JSON.stringify && JSON.parse )
{
json_str = JSON.stringify( JSON.parse( json_str ), undefined, 2 );
}
return json_str.esc();
};
this.format_number = function format_number( number )
{
var sep = {
'de_CH' : '\'',
'de' : '.',
'en' : ',',
'es' : '.',
'it' : '.',
'ja' : ',',
'sv' : ' ',
'tr' : '.',
'_' : '' // fallback
};
return ( number || 0 ).toString().replace
(
/\B(?=(\d{3})+(?!\d))/g,
sep[ browser.locale ] || sep[ browser.language ] || sep['_']
);
};
check_fixed_menu = function check_fixed_menu()
{
$( '#wrapper' ).toggleClass( 'scroll', $( window ).height() < $( '#menu-wrapper' ).height() + $( '#header' ).height() + 40 );
}
};