rjack-solr 4.0.0.0-java → 4.1.0.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.rdoc +5 -0
- data/Manifest.txt +5 -4
- data/README.rdoc +1 -1
- data/init/rjack-solr +1 -1
- data/lib/rjack-solr/base.rb +1 -1
- data/lib/rjack-solr/solr-core-4.1.0.jar +0 -0
- data/lib/rjack-solr/solr-solrj-4.1.0.jar +0 -0
- data/pom.xml +2 -2
- data/webapp/META-INF/MANIFEST.MF +3 -3
- data/webapp/META-INF/NOTICE.txt +2 -2
- data/webapp/admin.html +1 -0
- data/webapp/css/styles/cloud.css +8 -1
- data/webapp/css/styles/common.css +21 -0
- data/webapp/css/styles/dashboard.css +2 -2
- data/webapp/css/styles/dataimport.css +183 -21
- data/webapp/css/styles/menu.css +2 -0
- data/webapp/css/styles/query.css +9 -3
- data/webapp/css/styles/schema-browser.css +12 -0
- data/webapp/img/ico/cross-button.png +0 -0
- data/webapp/img/ico/hammer.png +0 -0
- data/webapp/js/lib/console.js +11 -9
- data/webapp/js/lib/highlight.js +1 -1
- data/webapp/js/lib/jquery.autogrow.js +132 -0
- data/webapp/js/main.js +1 -0
- data/webapp/js/require.js +3 -1
- data/webapp/js/scripts/analysis.js +2 -2
- data/webapp/js/scripts/app.js +183 -78
- data/webapp/js/scripts/cloud.js +41 -20
- data/webapp/js/scripts/cores.js +5 -2
- data/webapp/js/scripts/dashboard.js +2 -1
- data/webapp/js/scripts/dataimport.js +415 -162
- data/webapp/js/scripts/file.js +1 -1
- data/webapp/js/scripts/index.js +3 -5
- data/webapp/js/scripts/logging.js +8 -0
- data/webapp/js/scripts/plugins.js +47 -7
- data/webapp/js/scripts/query.js +75 -49
- data/webapp/js/scripts/replication.js +4 -47
- data/webapp/js/scripts/schema-browser.js +46 -23
- data/webapp/tpl/cores.html +5 -0
- data/webapp/tpl/dashboard.html +4 -1
- data/webapp/tpl/dataimport.html +72 -12
- data/webapp/tpl/query.html +38 -3
- data/webapp/tpl/schema-browser.html +6 -0
- metadata +15 -12
- data/lib/rjack-solr/solr-core-4.0.0.jar +0 -0
- data/lib/rjack-solr/solr-solrj-4.0.0.jar +0 -0
    
        data/webapp/js/scripts/file.js
    CHANGED
    
    
    
        data/webapp/js/scripts/index.js
    CHANGED
    
    | @@ -36,15 +36,13 @@ var generate_bar = function( bar_container, bar_data, convert_label_values ) | |
| 36 36 | 
             
              $( '.bar-max.val', bar_holder ).text( bar_data['max'] );
         | 
| 37 37 |  | 
| 38 38 | 
             
              bar_level++;
         | 
| 39 | 
            -
               | 
| 40 | 
            -
              $( '.bar-total.bar', bar_holder ).width( Math.max( total_width, 1 ) );
         | 
| 39 | 
            +
              $( '.bar-total.bar', bar_holder ).width( new String( (bar_data['total']/bar_data['max'])*100 ) + '%' );
         | 
| 41 40 | 
             
              $( '.bar-total.val', bar_holder ).text( bar_data['total'] );
         | 
| 42 41 |  | 
| 43 42 | 
             
              if( bar_data['used'] )
         | 
| 44 43 | 
             
              {
         | 
| 45 44 | 
             
                bar_level++;
         | 
| 46 | 
            -
                 | 
| 47 | 
            -
                $( '.bar-used.bar', bar_holder ).width( Math.min( used_width, total_width - 1 ) );
         | 
| 45 | 
            +
                $( '.bar-used.bar', bar_holder ).width( new String( (bar_data['used']/bar_data['total'])*100 ) + '%' );
         | 
| 48 46 | 
             
                $( '.bar-used.val', bar_holder ).text( bar_data['used'] );
         | 
| 49 47 | 
             
              }
         | 
| 50 48 |  | 
| @@ -233,7 +231,7 @@ sammy.get | |
| 233 231 |  | 
| 234 232 | 
             
                      var data = {
         | 
| 235 233 | 
             
                        'start_time' : app.dashboard_values['jvm']['jmx']['startTime'],
         | 
| 236 | 
            -
                        'host' : app.dashboard_values['core']['host'],
         | 
| 234 | 
            +
                        'host' : app.dashboard_values['core']['host'] || '-',
         | 
| 237 235 | 
             
                        'dir_instance' : app.dashboard_values['core']['directory']['instance'],
         | 
| 238 236 | 
             
                        'dir_data' : app.dashboard_values['core']['directory']['data'],
         | 
| 239 237 | 
             
                        'dir_index' : app.dashboard_values['core']['directory']['index'],
         | 
| @@ -318,6 +318,14 @@ var load_logging_viewer = function() | |
| 318 318 | 
             
                    {
         | 
| 319 319 | 
             
                      var doc = docs[i];
         | 
| 320 320 |  | 
| 321 | 
            +
                      if( 1 === doc.time.length )
         | 
| 322 | 
            +
                      {
         | 
| 323 | 
            +
                        for( var key in doc )
         | 
| 324 | 
            +
                        {
         | 
| 325 | 
            +
                          doc[key] = doc[key][0];
         | 
| 326 | 
            +
                        }
         | 
| 327 | 
            +
                      }
         | 
| 328 | 
            +
             | 
| 321 329 | 
             
                      if( !doc.trace )
         | 
| 322 330 | 
             
                      {
         | 
| 323 331 | 
             
                        var lines = doc.message.split( "\n" );
         | 
| @@ -206,7 +206,7 @@ var render_plugin_data = function( plugin_data, plugin_sort, types ) | |
| 206 206 | 
             
                  }
         | 
| 207 207 |  | 
| 208 208 | 
             
                  content += '<li class="' + classes.join( ' ' ) + '">' + "\n";
         | 
| 209 | 
            -
                  content += '<a href="' + context_path + '?entry=' + bean.esc() + '">';
         | 
| 209 | 
            +
                  content += '<a href="' + context_path + '?entry=' + bean.esc() + '" data-bean="' + bean.esc() + '">';
         | 
| 210 210 | 
             
                  content += '<span>' + bean.esc() + '</span>';
         | 
| 211 211 | 
             
                  content += '</a>' + "\n";
         | 
| 212 212 | 
             
                  content += '<ul class="detail">' + "\n";
         | 
| @@ -279,15 +279,55 @@ var render_plugin_data = function( plugin_data, plugin_sort, types ) | |
| 279 279 | 
             
              frame_element
         | 
| 280 280 | 
             
                .html( content );
         | 
| 281 281 |  | 
| 282 | 
            -
               | 
| 283 | 
            -
             | 
| 282 | 
            +
              
         | 
| 283 | 
            +
              var path = active_context.path.split( '?entry=' );
         | 
| 284 | 
            +
              var entries = ( path[1] || '' ).split( ',' );
         | 
| 285 | 
            +
              
         | 
| 286 | 
            +
              var entry_count = entries.length;
         | 
| 287 | 
            +
              for( var i = 0; i < entry_count; i++ )
         | 
| 288 | 
            +
              {
         | 
| 289 | 
            +
                $( 'a[data-bean="' + entries[i] + '"]', frame_element )
         | 
| 290 | 
            +
                  .parent().addClass( 'expanded' );
         | 
| 291 | 
            +
              }
         | 
| 292 | 
            +
             | 
| 293 | 
            +
              $( 'a', frame_element )
         | 
| 294 | 
            +
                .off( 'click' )
         | 
| 295 | 
            +
                .on
         | 
| 296 | 
            +
                (
         | 
| 297 | 
            +
                  'click',
         | 
| 298 | 
            +
                  function( event )
         | 
| 299 | 
            +
                  { 
         | 
| 300 | 
            +
                    var self = $( this );
         | 
| 301 | 
            +
                    var bean = self.data( 'bean' );
         | 
| 302 | 
            +
             | 
| 303 | 
            +
                    var split = '?entry=';
         | 
| 304 | 
            +
                    var path = active_context.path.split( split );
         | 
| 305 | 
            +
                    var entry = ( path[1] || '' );
         | 
| 306 | 
            +
             | 
| 307 | 
            +
                    var regex = new RegExp( bean.replace( /\//g, '\\/' ) + '(,|$)' );
         | 
| 308 | 
            +
                    var match = regex.test( entry );
         | 
| 309 | 
            +
             | 
| 310 | 
            +
                    var url = path[0] + split;
         | 
| 311 | 
            +
             | 
| 312 | 
            +
                    url += match
         | 
| 313 | 
            +
                         ? entry.replace( regex, '' )
         | 
| 314 | 
            +
                         : entry + ',' + bean;
         | 
| 315 | 
            +
             | 
| 316 | 
            +
                    url = url.replace( /=,/, '=' );
         | 
| 317 | 
            +
                    url = url.replace( /,$/, '' );
         | 
| 318 | 
            +
                    url = url.replace( /\?entry=$/, '' );
         | 
| 319 | 
            +
             | 
| 320 | 
            +
                    active_context.redirect( url );
         | 
| 321 | 
            +
                    return false;
         | 
| 322 | 
            +
                  }
         | 
| 323 | 
            +
                );
         | 
| 284 324 |  | 
| 285 325 | 
             
              // Try to make links for anything with http (but leave the rest alone)
         | 
| 286 326 | 
             
              $( '.detail dd' ).each(function(index) {
         | 
| 287 327 | 
             
                var txt = $(this).html();
         | 
| 288 328 | 
             
                if(txt.indexOf("http") >= 0) {
         | 
| 289 329 | 
             
                  $(this).linker({
         | 
| 290 | 
            -
                     className : 'linker' | 
| 330 | 
            +
                     className : 'linker'
         | 
| 291 331 | 
             
                  });
         | 
| 292 332 | 
             
                }
         | 
| 293 333 | 
             
              });
         | 
| @@ -382,7 +422,7 @@ sammy.bind | |
| 382 422 | 
             
            // #/:core/plugins/$type
         | 
| 383 423 | 
             
            sammy.get
         | 
| 384 424 | 
             
            (
         | 
| 385 | 
            -
               | 
| 425 | 
            +
              new RegExp( app.core_regex_base + '\\/(plugins)\\/(\\w+)$' ),
         | 
| 386 426 | 
             
              function( context )
         | 
| 387 427 | 
             
              {
         | 
| 388 428 | 
             
                core_basepath = this.active_core.attr( 'data-basepath' );
         | 
| @@ -405,7 +445,7 @@ sammy.get | |
| 405 445 | 
             
            // #/:core/plugins
         | 
| 406 446 | 
             
            sammy.get
         | 
| 407 447 | 
             
            (
         | 
| 408 | 
            -
               | 
| 448 | 
            +
              new RegExp( app.core_regex_base + '\\/(plugins)$' ),
         | 
| 409 449 | 
             
              function( context )
         | 
| 410 450 | 
             
              {
         | 
| 411 451 | 
             
                core_basepath = this.active_core.attr( 'data-basepath' );
         | 
| @@ -423,4 +463,4 @@ sammy.get | |
| 423 463 | 
             
                  }
         | 
| 424 464 | 
             
                );
         | 
| 425 465 | 
             
              }
         | 
| 426 | 
            -
            );
         | 
| 466 | 
            +
            );
         | 
    
        data/webapp/js/scripts/query.js
    CHANGED
    
    | @@ -18,7 +18,7 @@ | |
| 18 18 | 
             
            // #/:core/query
         | 
| 19 19 | 
             
            sammy.get
         | 
| 20 20 | 
             
            (
         | 
| 21 | 
            -
               | 
| 21 | 
            +
              new RegExp( app.core_regex_base + '\\/(query)$' ),
         | 
| 22 22 | 
             
              function( context )
         | 
| 23 23 | 
             
              {
         | 
| 24 24 | 
             
                var core_basepath = this.active_core.attr( 'data-basepath' );
         | 
| @@ -36,7 +36,7 @@ sammy.get | |
| 36 36 | 
             
                    var query_form = $( '#form form', query_element );
         | 
| 37 37 | 
             
                    var url_element = $( '#url', query_element );
         | 
| 38 38 | 
             
                    var result_element = $( '#result', query_element );
         | 
| 39 | 
            -
                    var response_element = $( '#response | 
| 39 | 
            +
                    var response_element = $( '#response', result_element );
         | 
| 40 40 |  | 
| 41 41 | 
             
                    url_element
         | 
| 42 42 | 
             
                      .die( 'change' )
         | 
| @@ -45,40 +45,49 @@ sammy.get | |
| 45 45 | 
             
                        'change',
         | 
| 46 46 | 
             
                        function( event )
         | 
| 47 47 | 
             
                        {
         | 
| 48 | 
            -
                          var  | 
| 49 | 
            -
                          {
         | 
| 50 | 
            -
                            var iframe_element = response_element.get(0).contentWindow.document || response_element.get(0).document;
         | 
| 48 | 
            +
                          var wt = $( '[name="wt"]', query_form ).val();
         | 
| 51 49 |  | 
| 52 | 
            -
             | 
| 53 | 
            -
                            {
         | 
| 54 | 
            -
                              console.debug( 'no iframe_element found', response_element );
         | 
| 55 | 
            -
                              return false;
         | 
| 56 | 
            -
                            }
         | 
| 50 | 
            +
                          var content_generator = {
         | 
| 57 51 |  | 
| 58 | 
            -
                             | 
| 59 | 
            -
             | 
| 52 | 
            +
                            _default : function( xhr )
         | 
| 53 | 
            +
                            {
         | 
| 54 | 
            +
                              return xhr.responseText.esc();
         | 
| 55 | 
            +
                            },
         | 
| 60 56 |  | 
| 61 | 
            -
                             | 
| 57 | 
            +
                            json : function( xhr )
         | 
| 62 58 | 
             
                            {
         | 
| 63 | 
            -
                               | 
| 64 | 
            -
                                .removeClass( 'loader' );
         | 
| 59 | 
            +
                              return app.format_json( xhr.responseText );
         | 
| 65 60 | 
             
                            }
         | 
| 66 | 
            -
             | 
| 61 | 
            +
             | 
| 62 | 
            +
                          };
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                          $.ajax
         | 
| 65 | 
            +
                          (
         | 
| 67 66 | 
             
                            {
         | 
| 68 | 
            -
                               | 
| 67 | 
            +
                              url : this.href,
         | 
| 68 | 
            +
                              dataType : wt,
         | 
| 69 | 
            +
                              context : response_element,
         | 
| 70 | 
            +
                              beforeSend : function( xhr, settings )
         | 
| 71 | 
            +
                              {
         | 
| 72 | 
            +
                                this
         | 
| 73 | 
            +
                                 .html( '<div class="loader">Loading ...</div>' );
         | 
| 74 | 
            +
                              },
         | 
| 75 | 
            +
                              complete : function( xhr, text_status )
         | 
| 76 | 
            +
                              {
         | 
| 77 | 
            +
                                var code = $(
         | 
| 78 | 
            +
                                  '<pre class="syntax language-' + wt + '"><code>' +
         | 
| 79 | 
            +
                                  ( content_generator[wt] || content_generator['_default'] )( xhr ) +
         | 
| 80 | 
            +
                                  '</code></pre>'
         | 
| 81 | 
            +
                                );
         | 
| 82 | 
            +
                                this.html( code );
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                                if( 'success' === text_status )
         | 
| 85 | 
            +
                                {
         | 
| 86 | 
            +
                                  hljs.highlightBlock( code.get(0) );
         | 
| 87 | 
            +
                                }
         | 
| 88 | 
            +
                              }
         | 
| 69 89 | 
             
                            }
         | 
| 70 | 
            -
                           | 
| 71 | 
            -
                          check_iframe_ready_state();
         | 
| 72 | 
            -
             | 
| 73 | 
            -
                          response_element
         | 
| 74 | 
            -
                            .attr( 'src', this.href );
         | 
| 75 | 
            -
                                        
         | 
| 76 | 
            -
                          if( !response_element.hasClass( 'resized' ) )
         | 
| 77 | 
            -
                          {
         | 
| 78 | 
            -
                            response_element
         | 
| 79 | 
            -
                              .addClass( 'resized' )
         | 
| 80 | 
            -
                              .css( 'height', $( '#main' ).height() - 60 );
         | 
| 81 | 
            -
                          }
         | 
| 90 | 
            +
                          );
         | 
| 82 91 | 
             
                        }
         | 
| 83 92 | 
             
                      )
         | 
| 84 93 |  | 
| @@ -104,27 +113,38 @@ sammy.get | |
| 104 113 | 
             
                        'submit',
         | 
| 105 114 | 
             
                        function( event )
         | 
| 106 115 | 
             
                        {
         | 
| 107 | 
            -
                          var form_map = {};
         | 
| 108 116 | 
             
                          var form_values = [];
         | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 111 | 
            -
                          for( var i = 0; i < all_form_values.length; i++ )
         | 
| 117 | 
            +
             
         | 
| 118 | 
            +
                          var add_to_form_values = function add_to_form_values( fields )
         | 
| 112 119 | 
             
                          {
         | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
                               | 
| 116 | 
            -
             | 
| 117 | 
            -
             | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 122 | 
            -
             | 
| 123 | 
            -
             | 
| 124 | 
            -
             | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 127 | 
            -
                           | 
| 120 | 
            +
                             for( var i in fields )
         | 
| 121 | 
            +
                             {
         | 
| 122 | 
            +
                              if( !fields[i].value || 0 === fields[i].value.length )
         | 
| 123 | 
            +
                              {
         | 
| 124 | 
            +
                                continue;
         | 
| 125 | 
            +
                              }
         | 
| 126 | 
            +
             
         | 
| 127 | 
            +
                              form_values.push( fields[i] );
         | 
| 128 | 
            +
                             }
         | 
| 129 | 
            +
                          };
         | 
| 130 | 
            +
             
         | 
| 131 | 
            +
                          var fieldsets = $( '> fieldset', query_form );
         | 
| 132 | 
            +
             
         | 
| 133 | 
            +
                          var fields = fieldsets.first().formToArray();
         | 
| 134 | 
            +
                          add_to_form_values( fields );
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                          fieldsets.not( '.common' )
         | 
| 137 | 
            +
                            .each
         | 
| 138 | 
            +
                            (
         | 
| 139 | 
            +
                              function( i, set )
         | 
| 140 | 
            +
                              {
         | 
| 141 | 
            +
                                if( $( 'legend input', set ).is( ':checked' ) )
         | 
| 142 | 
            +
                                {
         | 
| 143 | 
            +
                                  var fields = $( set ).formToArray();
         | 
| 144 | 
            +
                                  add_to_form_values( fields );
         | 
| 145 | 
            +
                                }
         | 
| 146 | 
            +
                              }
         | 
| 147 | 
            +
                            );
         | 
| 128 148 |  | 
| 129 149 | 
             
                          var handler_path = $( '#qt', query_form ).val();
         | 
| 130 150 | 
             
                          if( '/' !== handler_path[0] )
         | 
| @@ -135,7 +155,13 @@ sammy.get | |
| 135 155 |  | 
| 136 156 | 
             
                          var query_url = window.location.protocol + '//' + window.location.host
         | 
| 137 157 | 
             
                                        + core_basepath + handler_path + '?' + $.param( form_values );
         | 
| 138 | 
            -
             | 
| 158 | 
            +
             | 
| 159 | 
            +
                          var custom_parameters = $( '#custom_parameters', query_form ).val();
         | 
| 160 | 
            +
                          if( custom_parameters && 0 !== custom_parameters.length )
         | 
| 161 | 
            +
                          {
         | 
| 162 | 
            +
                            query_url += '&' + custom_parameters.replace( /^&/, '' ); 
         | 
| 163 | 
            +
                          }
         | 
| 164 | 
            +
             | 
| 139 165 | 
             
                          url_element
         | 
| 140 166 | 
             
                            .attr( 'href', query_url )
         | 
| 141 167 | 
             
                            .text( query_url )
         | 
| @@ -22,49 +22,6 @@ var core_basepath = null; | |
| 22 22 | 
             
            var navigation_element = null;
         | 
| 23 23 | 
             
            var replication_element = null;
         | 
| 24 24 |  | 
| 25 | 
            -
            var convert_duration_to_seconds = function( str )
         | 
| 26 | 
            -
            {
         | 
| 27 | 
            -
              var ret = 0;
         | 
| 28 | 
            -
              var parts = new String( str ).split( ':' ).reverse();
         | 
| 29 | 
            -
              var parts_count = parts.length;
         | 
| 30 | 
            -
                
         | 
| 31 | 
            -
              for( var i = 0; i < parts_count; i++ )
         | 
| 32 | 
            -
              {
         | 
| 33 | 
            -
                ret += parseInt( parts[i], 10 ) * Math.pow( 60, i );
         | 
| 34 | 
            -
              }
         | 
| 35 | 
            -
             | 
| 36 | 
            -
              return ret;
         | 
| 37 | 
            -
            }
         | 
| 38 | 
            -
             | 
| 39 | 
            -
            var convert_seconds_to_readable_time = function( value )
         | 
| 40 | 
            -
            {
         | 
| 41 | 
            -
              var text = [];
         | 
| 42 | 
            -
              value = parseInt( value );
         | 
| 43 | 
            -
             | 
| 44 | 
            -
              var minutes = Math.floor( value / 60 );
         | 
| 45 | 
            -
              var hours = Math.floor( minutes / 60 );
         | 
| 46 | 
            -
             | 
| 47 | 
            -
              if( 0 !== hours )
         | 
| 48 | 
            -
              {
         | 
| 49 | 
            -
                text.push( hours + 'h' );
         | 
| 50 | 
            -
                value -= hours * 60 * 60;
         | 
| 51 | 
            -
                minutes -= hours * 60;
         | 
| 52 | 
            -
              }
         | 
| 53 | 
            -
             | 
| 54 | 
            -
              if( 0 !== minutes )
         | 
| 55 | 
            -
              {
         | 
| 56 | 
            -
                text.push( minutes + 'm' );
         | 
| 57 | 
            -
                value -= minutes * 60;
         | 
| 58 | 
            -
              }
         | 
| 59 | 
            -
             | 
| 60 | 
            -
              if( 0 !== value )
         | 
| 61 | 
            -
              {
         | 
| 62 | 
            -
                text.push( value + 's' );
         | 
| 63 | 
            -
              }
         | 
| 64 | 
            -
             | 
| 65 | 
            -
              return text.join( ' ' );
         | 
| 66 | 
            -
            }
         | 
| 67 | 
            -
             | 
| 68 25 | 
             
            var init_timer = function( next_tick )
         | 
| 69 26 | 
             
            {
         | 
| 70 27 | 
             
              if( timer_timeout )
         | 
| @@ -83,7 +40,7 @@ var update_timer = function( next_tick ) | |
| 83 40 | 
             
              }
         | 
| 84 41 |  | 
| 85 42 | 
             
              $( 'p .tick', timer_element )
         | 
| 86 | 
            -
                .text( convert_seconds_to_readable_time( next_tick ) );
         | 
| 43 | 
            +
                .text( app.convert_seconds_to_readable_time( next_tick ) );
         | 
| 87 44 |  | 
| 88 45 | 
             
              timer_timeout = window.setTimeout
         | 
| 89 46 | 
             
              (
         | 
| @@ -151,7 +108,7 @@ var replication_fetch_status = function() | |
| 151 108 |  | 
| 152 109 | 
             
                      var eta_element = $( '#eta', progress_element );
         | 
| 153 110 | 
             
                      $( 'span', eta_element )
         | 
| 154 | 
            -
                        .text( convert_seconds_to_readable_time( data.slave.timeRemaining ) );
         | 
| 111 | 
            +
                        .text( app.convert_seconds_to_readable_time( data.slave.timeRemaining ) );
         | 
| 155 112 |  | 
| 156 113 | 
             
                      var bar_element = $( '#bar', progress_element );
         | 
| 157 114 | 
             
                      $( '.files span', bar_element )
         | 
| @@ -394,7 +351,7 @@ var replication_fetch_status = function() | |
| 394 351 | 
             
                          timer_element = $( '.timer', navigation_element );
         | 
| 395 352 | 
             
                          approx_element = $( '.approx', timer_element );
         | 
| 396 353 |  | 
| 397 | 
            -
                          var next_tick = convert_duration_to_seconds( data.slave.pollInterval );
         | 
| 354 | 
            +
                          var next_tick = app.convert_duration_to_seconds( data.slave.pollInterval );
         | 
| 398 355 | 
             
                          approx_element.show();
         | 
| 399 356 |  | 
| 400 357 | 
             
                          if( data.slave.nextExecutionAt )
         | 
| @@ -490,7 +447,7 @@ var replication_fetch_status = function() | |
| 490 447 | 
             
            // #/:core/replication
         | 
| 491 448 | 
             
            sammy.get
         | 
| 492 449 | 
             
            (
         | 
| 493 | 
            -
               | 
| 450 | 
            +
              new RegExp( app.core_regex_base + '\\/(replication)$' ),
         | 
| 494 451 | 
             
              function( context )
         | 
| 495 452 | 
             
              {
         | 
| 496 453 | 
             
                core_basepath = this.active_core.attr( 'data-basepath' );
         | 
| @@ -115,7 +115,7 @@ var load_terminfo = function( trigger_element, core_basepath, field, data_elemen | |
| 115 115 | 
             
                                           +  '<ul>' + "\n";
         | 
| 116 116 | 
             
                        }
         | 
| 117 117 |  | 
| 118 | 
            -
                        var target = '#/' + current_core + '/query?q=' + field.esc() + ':' + encodeURIComponent( topterms[i] );
         | 
| 118 | 
            +
                        var target = '#/' + current_core + '/query?q=' + field.esc() + ':' + encodeURIComponent( '"' + topterms[i] + '"' );
         | 
| 119 119 | 
             
                        topterms_content += '<li><a href="' + target + '">' + topterms[i].esc() + '</a></li>' + "\n";
         | 
| 120 120 | 
             
                      }
         | 
| 121 121 |  | 
| @@ -267,19 +267,23 @@ sammy.bind | |
| 267 267 | 
             
                  if( 'field' === type )
         | 
| 268 268 | 
             
                  {
         | 
| 269 269 | 
             
                    navigation_data.fields.push( value );
         | 
| 270 | 
            -
             | 
| 270 | 
            +
             | 
| 271 | 
            +
                    if( app.schema_browser_data.relations.f_t[value] )
         | 
| 272 | 
            +
                    {
         | 
| 273 | 
            +
                      navigation_data.types.push( app.schema_browser_data.relations.f_t[value] );
         | 
| 274 | 
            +
                    }
         | 
| 271 275 |  | 
| 272 276 | 
             
                    if( app.schema_browser_data.relations.f_df[value] )
         | 
| 273 277 | 
             
                    {
         | 
| 274 278 | 
             
                      navigation_data.dynamic_fields.push( app.schema_browser_data.relations.f_df[value] );
         | 
| 275 279 | 
             
                    }
         | 
| 276 280 |  | 
| 277 | 
            -
                    if( 0 !== app.schema_browser_data.fields[value].copySources.length )
         | 
| 281 | 
            +
                    if( app.schema_browser_data.fields[value].copySources && 0 !== app.schema_browser_data.fields[value].copySources.length )
         | 
| 278 282 | 
             
                    {
         | 
| 279 283 | 
             
                      navigation_data.copyfield_source = app.schema_browser_data.fields[value].copySources;
         | 
| 280 284 | 
             
                    }
         | 
| 281 285 |  | 
| 282 | 
            -
                    if( 0 !== app.schema_browser_data.fields[value].copyDests.length )
         | 
| 286 | 
            +
                    if( app.schema_browser_data.fields[value].copyDests && 0 !== app.schema_browser_data.fields[value].copyDests.length )
         | 
| 283 287 | 
             
                    {
         | 
| 284 288 | 
             
                      navigation_data.copyfield_dest = app.schema_browser_data.fields[value].copyDests;
         | 
| 285 289 | 
             
                    }
         | 
| @@ -490,30 +494,39 @@ sammy.bind | |
| 490 494 |  | 
| 491 495 | 
             
                            for( var field in app.schema_browser_data.fields )
         | 
| 492 496 | 
             
                            {
         | 
| 493 | 
            -
                              app.schema_browser_data.fields[field]. | 
| 494 | 
            -
             | 
| 495 | 
            -
                              if( app.schema_browser_data.fields[field].copySources &&
         | 
| 496 | 
            -
                                0 !== app.schema_browser_data.fields[field].copySources.length )
         | 
| 497 | 
            +
                              var copy_dests = app.schema_browser_data.fields[field].copyDests;
         | 
| 498 | 
            +
                              for( var i in copy_dests )
         | 
| 497 499 | 
             
                              {
         | 
| 498 | 
            -
                                 | 
| 499 | 
            -
             | 
| 500 | 
            +
                                var copy_dest = copy_dests[i];
         | 
| 501 | 
            +
                                if( !app.schema_browser_data.fields[copy_dest] )
         | 
| 502 | 
            +
                                {
         | 
| 503 | 
            +
                                  app.schema_browser_data.fields[copy_dest] = {
         | 
| 504 | 
            +
                                    partial : true,
         | 
| 505 | 
            +
                                    copySources : []
         | 
| 506 | 
            +
                                  };
         | 
| 507 | 
            +
                                }
         | 
| 508 | 
            +
             | 
| 509 | 
            +
                                if( app.schema_browser_data.fields[copy_dest].partial )
         | 
| 510 | 
            +
                                {
         | 
| 511 | 
            +
                                  app.schema_browser_data.fields[copy_dest].copySources.push( field );
         | 
| 512 | 
            +
                                }
         | 
| 500 513 | 
             
                              }
         | 
| 501 | 
            -
                                                    
         | 
| 502 | 
            -
                              app.schema_browser_data.fields[field].copyDests = [];
         | 
| 503 | 
            -
                              app.schema_browser_data.fields[field].copySources = [];
         | 
| 504 | 
            -
                            }
         | 
| 505 514 |  | 
| 506 | 
            -
             | 
| 507 | 
            -
             | 
| 508 | 
            -
                              if( app.schema_browser_data.fields[field].copySourcesRaw )
         | 
| 515 | 
            +
                              var copy_sources = app.schema_browser_data.fields[field].copySources;
         | 
| 516 | 
            +
                              for( var i in copy_sources )
         | 
| 509 517 | 
             
                              {
         | 
| 510 | 
            -
                                var  | 
| 511 | 
            -
                                 | 
| 518 | 
            +
                                var copy_source = copy_sources[i];
         | 
| 519 | 
            +
                                if( !app.schema_browser_data.fields[copy_source] )
         | 
| 512 520 | 
             
                                {
         | 
| 513 | 
            -
                                   | 
| 521 | 
            +
                                  app.schema_browser_data.fields[copy_source] = {
         | 
| 522 | 
            +
                                    partial : true,
         | 
| 523 | 
            +
                                    copyDests : []
         | 
| 524 | 
            +
                                  };
         | 
| 525 | 
            +
                                }
         | 
| 514 526 |  | 
| 515 | 
            -
             | 
| 516 | 
            -
             | 
| 527 | 
            +
                                if( app.schema_browser_data.fields[copy_source].partial )
         | 
| 528 | 
            +
                                {
         | 
| 529 | 
            +
                                  app.schema_browser_data.fields[copy_source].copyDests.push( field );
         | 
| 517 530 | 
             
                                }
         | 
| 518 531 | 
             
                              }
         | 
| 519 532 |  | 
| @@ -665,7 +678,7 @@ sammy.bind | |
| 665 678 | 
             
            // #/:core/schema-browser
         | 
| 666 679 | 
             
            sammy.get
         | 
| 667 680 | 
             
            (
         | 
| 668 | 
            -
               | 
| 681 | 
            +
              new RegExp( app.core_regex_base + '\\/(schema-browser)$' ),
         | 
| 669 682 | 
             
              function( context )
         | 
| 670 683 | 
             
              {
         | 
| 671 684 | 
             
                var core_basepath = this.active_core.attr( 'data-basepath' );
         | 
| @@ -763,6 +776,16 @@ sammy.get | |
| 763 776 | 
             
                    }
         | 
| 764 777 | 
             
                    $( '.name', head_element ).html( field.esc() );
         | 
| 765 778 |  | 
| 779 | 
            +
             | 
| 780 | 
            +
                    var partial_state = false;
         | 
| 781 | 
            +
                    if( is_f )
         | 
| 782 | 
            +
                    {
         | 
| 783 | 
            +
                      partial_state = !!schema_browser_data.fields[field].partial;
         | 
| 784 | 
            +
                    }
         | 
| 785 | 
            +
             | 
| 786 | 
            +
                    $( '.partial', data_element )
         | 
| 787 | 
            +
                      .toggle( partial_state );
         | 
| 788 | 
            +
             | 
| 766 789 | 
             
                    // -- properties
         | 
| 767 790 | 
             
                    var properties_element = $( 'dt.properties', options_element );
         | 
| 768 791 | 
             
                    if( flags )
         |