function()

in solr/webapp/solr/js/scripts/schema-browser.js [224:428]


  function( event, params )
  {
    var related_navigation_element = $( '#related dl#f-df-t', params.schema_browser_element );
    var related_navigation_meta = $( '#related dl.ukf-dsf', params.schema_browser_element );
    var related_select_element = $( '#related select', params.schema_browser_element )
    var type = 'index';

    var sammy_basepath = app.core_menu.find( '.active a' ).attr( 'href' );
        
    if( !related_navigation_meta.hasClass( 'done' ) )
    {
      if( app.schema_browser_data.unique_key_field )
      {
        $( '.unique-key-field', related_navigation_meta )
          .show()
          .after
          (
            '<dd class="unique-key-field"><a href="' + sammy_basepath + '?field=' +
            app.schema_browser_data.unique_key_field + '">' +
            app.schema_browser_data.unique_key_field + '</a></dd>'
          );
      }

      if( app.schema_browser_data.default_search_field )
      {
        $( '.default-search-field', related_navigation_meta )
          .show()
          .after
          (
            '<dd class="default-search-field"><a href="' + sammy_basepath + '?field=' +
            app.schema_browser_data.default_search_field + '">' +
            app.schema_browser_data.default_search_field + '</a></dd>'
          );
      }

      related_navigation_meta
        .addClass( 'done' );
    }

    if( params.route_params )
    {
      var type = params.route_params.type;
      var value = params.route_params.value;

      var navigation_data = {
        'fields' : [],
        'copyfield_source' : [],
        'copyfield_dest' : [],
        'dynamic_fields' : [],
        'types' : []
      }

      $( 'option[value="' + params.route_params.path.esc() + '"]', related_select_element )
        .attr( 'selected', 'selected' );

      related_select_element
        .trigger( 'liszt:updated' );

      if( 'field' === type )
      {
        navigation_data.fields.push( value );

        if( app.schema_browser_data.relations.f_t[value] )
        {
          navigation_data.types.push( app.schema_browser_data.relations.f_t[value] );
        }

        if( app.schema_browser_data.relations.f_df[value] )
        {
          navigation_data.dynamic_fields.push( app.schema_browser_data.relations.f_df[value] );
        }

        if( app.schema_browser_data.fields[value].copySources && 0 !== app.schema_browser_data.fields[value].copySources.length )
        {
          navigation_data.copyfield_source = app.schema_browser_data.fields[value].copySources;
        }

        if( app.schema_browser_data.fields[value].copyDests && 0 !== app.schema_browser_data.fields[value].copyDests.length )
        {
          navigation_data.copyfield_dest = app.schema_browser_data.fields[value].copyDests;
        }
      }
      else if( 'dynamic-field' === type )
      {
        navigation_data.dynamic_fields.push( value );
        navigation_data.types.push( app.schema_browser_data.relations.df_t[value] );

        if( app.schema_browser_data.relations.df_f[value] )
        {
          navigation_data.fields = app.schema_browser_data.relations.df_f[value];
        }
      }
      else if( 'type' === type )
      {
        navigation_data.types.push( value );
                
        if( app.schema_browser_data.relations.t_f[value] )
        {
          navigation_data.fields = app.schema_browser_data.relations.t_f[value];
        }
                
        if( app.schema_browser_data.relations.t_df[value] )
        {
          navigation_data.dynamic_fields = app.schema_browser_data.relations.t_df[value];
        }
      }

      var navigation_content = '';

      if( 0 !== navigation_data.fields.length )
      {
        navigation_data.fields.sort();
        navigation_content += '<dt class="field">Field</dt>' + "\n";
        for( var i in navigation_data.fields )
        {
          var href = sammy_basepath + '?field=' + navigation_data.fields[i];
          navigation_content += '<dd class="field"><a href="' + href + '">' + navigation_data.fields[i] + '</a></dd>' + "\n";
        }
      }

      if( 0 !== navigation_data.copyfield_source.length )
      {
        navigation_data.copyfield_source.sort();
        navigation_content += '<dt class="copyfield">Copied from</dt>' + "\n";
        for( var i in navigation_data.copyfield_source )
        {
          var href = sammy_basepath + '?field=' + navigation_data.copyfield_source[i];
          navigation_content += '<dd class="copyfield"><a href="' + href + '">' + navigation_data.copyfield_source[i] + '</a></dd>' + "\n";
        }
      }

      if( 0 !== navigation_data.copyfield_dest.length )
      {
        navigation_data.copyfield_dest.sort();
        navigation_content += '<dt class="copyfield">Copied to</dt>' + "\n";
        for( var i in navigation_data.copyfield_dest )
        {
          var href = sammy_basepath + '?field=' + navigation_data.copyfield_dest[i];
          navigation_content += '<dd class="copyfield"><a href="' + href + '">' + navigation_data.copyfield_dest[i] + '</a></dd>' + "\n";
        }
      }

      if( 0 !== navigation_data.dynamic_fields.length )
      {
        navigation_data.dynamic_fields.sort();
        navigation_content += '<dt class="dynamic-field">Dynamic Field</dt>' + "\n";
        for( var i in navigation_data.dynamic_fields )
        {
          var href = sammy_basepath + '?dynamic-field=' + navigation_data.dynamic_fields[i];
          navigation_content += '<dd class="dynamic-field"><a href="' + href + '">' + navigation_data.dynamic_fields[i] + '</a></dd>' + "\n";
        }
      }

      if( 0 !== navigation_data.types.length )
      {
        navigation_data.types.sort();
        navigation_content += '<dt class="type">Type</dt>' + "\n";
        for( var i in navigation_data.types )
        {
          var href = sammy_basepath + '?type=' + navigation_data.types[i];
          navigation_content += '<dd class="type"><a href="' + href + '">' + navigation_data.types[i] + '</a></dd>' + "\n";
        }
      }

      related_navigation_element
        .show()
        .attr( 'class', type )
        .html( navigation_content );
    }
    else
    {
      related_navigation_element
        .hide();
            
      $( 'option:selected', related_select_element )
        .removeAttr( 'selected' );
    }

    if( 'field' === type && value === app.schema_browser_data.unique_key_field )
    {
      $( '.unique-key-field', related_navigation_meta )
        .addClass( 'active' );
    }
    else
    {
      $( '.unique-key-field', related_navigation_meta )
        .removeClass( 'active' );
    }

    if( 'field' === type && value === app.schema_browser_data.default_search_field )
    {
      $( '.default-search-field', related_navigation_meta )
        .addClass( 'active' );
    }
    else
    {
      $( '.default-search-field', related_navigation_meta )
        .removeClass( 'active' );
    }

    if( params.callback )
    {
      params.callback( app.schema_browser_data, $( '#data', params.schema_browser_element ) );
    }
  }