in solr/webapp/solr/js/scripts/schema-browser.js [716:1210]
trigger_params.callback = function( schema_browser_data, data_element )
{
var field = trigger_params.route_params.value;
var type = trigger_params.route_params.type;
var is_f = 'field' === type;
var is_df = 'dynamic-field' === type;
var is_t = 'type' === type;
var options_element = $( '.options', data_element );
var sammy_basepath = context.path.indexOf( '/', context.path.indexOf( '/', 2 ) + 1 );
data_element
.show();
// -- head
var head_element = $( '.head', data_element );
if( is_f )
{
$( '.type', head_element ).html( 'Field' );
}
else if( is_df )
{
$( '.type', head_element ).html( 'Dynamic Field' );
}
else if( is_t )
{
$( '.type', head_element ).html( 'Type' );
}
$( '.name', head_element ).html( field.esc() );
var partial_state = false;
if( is_f )
{
partial_state = !!schema_browser_data.fields[field].partial;
}
$( '.partial', data_element )
.toggle( partial_state );
// -- docs
var docs_element = $( 'dt.docs', options_element );
if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].docs )
{
$( 'dd.docs', options_element )
.remove();
var target = '#/' + current_core + '/query?q=' + field.esc() + ':[* TO *]';
docs_element
.show()
.after(
'<dd class="docs">'+
'<a href="'+target+'">' + schema_browser_data.fields[field].docs + '</a>' +
'</dd>' );
}
else
{
$( '.docs', options_element )
.hide();
}
// -- distinct
var distinct_element = $( 'dt.distinct', options_element );
if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].distinct )
{
$( 'dd.distinct', options_element )
.remove();
distinct_element
.show()
.after( '<dd class="distinct">' + schema_browser_data.fields[field].distinct + '</dd>' );
}
else
{
$( '.distinct', options_element )
.hide();
}
// -- position-increment-gap
var pig_element = $( 'dt.position-increment-gap', options_element );
if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].positionIncrementGap )
{
$( 'dd.position-increment-gap', options_element )
.remove();
pig_element
.show()
.after( '<dd class="position-increment-gap">' + schema_browser_data.fields[field].positionIncrementGap + '</dd>' );
}
else
{
$( '.position-increment-gap', options_element )
.hide();
}
var similarity_element = $( 'dt.similarity', options_element );
if ( is_t && schema_browser_data.types[field] && schema_browser_data.types[field].similarity ) {
var similarity = schema_browser_data.types[field].similarity
if (similarity.details && similarity.className) {
$( 'dd.similarity', options_element ).remove();
similarity_element
.show()
.after(['<dd class="similarity">', similarity.details.esc(), ' (', similarity.className.esc(), ') </dd>'].join(""));
}
} else {
$( '.similarity', options_element ).hide();
}
// -- flags table
var flags_table = $( 'table.flags', data_element );
var flags_arr = [];
for( var key in schema_browser_data.key )
{
flags_arr.push( '<th data-key="' + key + '">' + schema_browser_data.key[key] + '</th>' );
}
$( 'thead tr', flags_table )
.append( flags_arr.join( "\n" ) );
var flags_body = $( 'tbody', flags_table );
flags_body.empty();
var generate_flags_row = function generate_flags_row( flags_str, title )
{
var flags_arr = [ '<th>' + title.esc() + '</th>' ];
if( 0 === flags_str.indexOf( '(' ) )
{
flags_arr.push( '<td colspan="2" class="text">' + flags_str + '</td>' );
}
else
{
var i = 0;
for( var key in schema_browser_data.key )
{
var flag_match = key === flags_str[i];
var flag_cell = '<td '
+ ' data-key="' + key + '"'
+ ' class="' + ( flag_match ? 'check' : '' ) + '"'
+ '>'
+ ( flag_match ? '<span>√</span>' : ' ' )
+ '</td>';
flags_arr.push( flag_cell );
i++;
}
}
flags_body
.append( '<tr>' + flags_arr.join( "\n" ) + '</tr>' );
};
var flags = null;
if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].flags )
{
flags = schema_browser_data.fields[field].flags;
}
else if( is_df && schema_browser_data.dynamic_fields[field] && schema_browser_data.dynamic_fields[field].flags )
{
flags = schema_browser_data.dynamic_fields[field].flags;
}
if( flags )
{
generate_flags_row( flags, 'Properties' );
}
if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].schema )
{
generate_flags_row( schema_browser_data.fields[field].schema, 'Schema' );
}
if( is_f && schema_browser_data.fields[field] && schema_browser_data.fields[field].index )
{
generate_flags_row( schema_browser_data.fields[field].index, 'Index' );
}
if( 0 !== $( 'tr', flags_body ).size() )
{
var col_count = 0;
for( var key in schema_browser_data.key )
{
var cols = $( '[data-key="' + key + '"]', flags_table );
var col_used = 0 !== cols.filter( '.check' ).size();
col_count += col_used;
cols.toggle( col_used );
}
$( 'td[colspan]', flags_body )
.attr( 'colspan', col_count );
flags_table.show();
}
else
{
flags_table.hide();
}
var analyzer_element = $( '.analyzer', data_element );
var analyzer_data = null;
var analysis_link = false;
var analysis_link_elements = $( 'p a', analyzer_element );
var analysis_target = '#/' + current_core + '/analysis?';
if( is_f )
{
analyzer_data = schema_browser_data.types[schema_browser_data.relations.f_t[field]];
analysis_link = true;
analysis_target += 'analysis.fieldname=' + field;
}
else if( is_df )
{
analyzer_data = schema_browser_data.types[schema_browser_data.relations.df_t[field]];
}
else if( is_t )
{
analyzer_data = schema_browser_data.types[field];
analysis_link = true;
analysis_target += 'analysis.fieldtype=' + field;
}
if( analysis_link )
{
analysis_link_elements
.addClass( 'analysis' )
.attr( 'href', analysis_target );
}
else
{
analysis_link_elements
.removeClass( 'analysis' )
.removeAttr( 'href' );
}
if( analyzer_data )
{
var transform_analyzer_data_into_list = function( analyzer_data )
{
var args = [];
for( var key in analyzer_data.args )
{
var arg_class = '';
var arg_content = '';
if( 'true' === analyzer_data.args[key] || '1' === analyzer_data.args[key] )
{
arg_class = 'ico-1';
arg_content = key;
}
else if( 'false' === analyzer_data.args[key] || '0' === analyzer_data.args[key] )
{
arg_class = 'ico-0';
arg_content = key;
}
else
{
arg_content = key + ': ';
if( 'synonyms' === key || 'words' === key )
{
// @TODO: set link target for file
arg_content += '<a>' + analyzer_data.args[key] + '</a>';
}
else
{
arg_content += analyzer_data.args[key];
}
}
args.push( '<dd class="' + arg_class + '">' + arg_content + '</dd>' );
}
var list_content = '<dt>' + analyzer_data.className + '</dt>';
if( 0 !== args.length )
{
args.sort();
list_content += args.join( "\n" );
}
return list_content;
}
// -- field-type
var field_type_element = $( 'dt.field-type', options_element );
$( 'dd.field-type', options_element )
.remove();
field_type_element
.show()
.after( '<dd class="field-type">' + analyzer_data.className + '</dd>' );
$( '.toggle', analyzer_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).closest( 'li' )
.toggleClass( 'open' );
return false;
}
);
for( var key in analyzer_data )
{
var key_match = key.match( /^(.+)Analyzer$/ );
if( !key_match )
{
continue;
}
var analyzer_key_element = $( '.' + key_match[1], analyzer_element );
var analyzer_key_data = analyzer_data[key];
analyzer_element.show();
analyzer_key_element.show();
$( 'ul li', analyzer_key_element )
.removeClass( 'data' )
.hide();
for( var type in analyzer_key_data )
{
if( 'object' !== typeof analyzer_key_data[type] )
{
continue;
}
var type_element = $( '.' + type, analyzer_key_element );
var type_content = [];
type_element
.addClass( 'data' )
.show();
if( analyzer_key_data[type].className )
{
type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type] ) );
}
else
{
for( var entry in analyzer_key_data[type] )
{
type_content.push( transform_analyzer_data_into_list( analyzer_key_data[type][entry] ) );
}
}
$( 'dl', type_element )
.empty()
.append( type_content.join( "\n" ) );
}
var name_element = $( 'dl:first dt a', analyzer_key_element );
if( analyzer_key_data.className )
{
name_element
.html( analyzer_key_data.className );
}
0 === $( 'ul li.data', analyzer_key_element ).size()
? name_element.removeClass( 'toggle' )
: name_element.addClass( 'toggle' );
}
}
var terminfo_element = $( '.terminfo-holder', data_element );
terminfo_element
.removeClass( 'disabled' )
.removeClass( 'loaded' );
var trigger_element = $( '.trigger button', terminfo_element );
var form_element = $( 'form', terminfo_element );
trigger_element
.die( 'click' )
.live
(
'click',
function( event )
{
form_element
.trigger( 'submit' );
return false;
}
);
form_element
.clearForm()
.die( 'submit' )
.live
(
'submit',
function( event )
{
load_terminfo( trigger_element, core_basepath, field, data_element, terminfo_element );
terminfo_element
.addClass( 'loaded' );
return false;
}
);
$( '.max-holder', terminfo_element )
.die( 'click' )
.live
(
'click',
function( event )
{
var element = $( this );
$( 'input', element.closest( 'form' ) )
.val( $( '.max', element ).text() );
form_element
.trigger( 'submit' );
return false;
}
);
$( '.trigger .autoload', terminfo_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$.cookie( cookie_schema_browser_autoload, $.cookie( cookie_schema_browser_autoload ) ? null : true );
$( this ).trigger( 'state' );
return false;
}
)
.die( 'state' )
.live
(
'state',
function( event )
{
$.cookie( cookie_schema_browser_autoload )
? $( this ).addClass( 'on' )
: $( this ).removeClass( 'on' );
}
)
.die( 'init' )
.live
(
'init',
function( event )
{
if( !$.cookie( cookie_schema_browser_autoload ) )
{
return false;
}
$( this ).trigger( 'state' );
trigger_element.trigger( 'click' );
}
)
.trigger( 'init' );
$( 'div[class$="-holder"]', terminfo_element )
.hide();
if( !is_f )
{
terminfo_element
.hide();
}
else
{
terminfo_element
.show();
}
}