You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ry...@apache.org on 2012/04/23 02:23:28 UTC

svn commit: r1329005 - /lucene/dev/trunk/solr/webapp/web/js/scripts/plugins.js

Author: ryan
Date: Mon Apr 23 00:23:27 2012
New Revision: 1329005

URL: http://svn.apache.org/viewvc?rev=1329005&view=rev
Log:
SOLR-3330: show plugin values changes across multiple requests

Modified:
    lucene/dev/trunk/solr/webapp/web/js/scripts/plugins.js

Modified: lucene/dev/trunk/solr/webapp/web/js/scripts/plugins.js
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/webapp/web/js/scripts/plugins.js?rev=1329005&r1=1329004&r2=1329005&view=diff
==============================================================================
--- lucene/dev/trunk/solr/webapp/web/js/scripts/plugins.js (original)
+++ lucene/dev/trunk/solr/webapp/web/js/scripts/plugins.js Mon Apr 23 00:23:27 2012
@@ -20,7 +20,8 @@ var content_element = null;
 var selected_type = null;
 var context_path = null;
 var active_context = null;
-var changes = { count : {}, list : {} };
+var changes = null;
+var reference_xml = null;
 
 var compute_plugin_data = function( response, changeset )
 {
@@ -31,6 +32,8 @@ var compute_plugin_data = function( resp
   var types_obj = {};
   var plugin_key = null;
 
+  changes = { count : {}, list : {} }
+
   for( var i = 0; i < response['solr-mbeans'].length; i++ )
   {
     if( !( i % 2 ) )
@@ -52,6 +55,17 @@ var compute_plugin_data = function( resp
     };
     for( var part_key in plugin_data[key] )
     {
+      if( plugin_data[key][part_key]['_changed_'] )
+      {
+        delete plugin_data[key][part_key]['_changed_'];
+
+        changes.count[key] = changes.count[key] || 0;
+        changes.count[key]++;
+
+        changes.list[key] = changes.list[key] || {};
+        changes.list[key][part_key] = true;
+      }
+
       if( 0 < part_key.indexOf( '.' ) )
       {
         types_obj[key] = true;
@@ -75,25 +89,18 @@ var compute_plugin_data = function( resp
     types.push( type );
   }
   types.sort();
-            
-  var result = {
-    'plugin_data' : plugin_data
-  };
-
-  if( !changeset )
-  {
-    result['sort_table'] = sort_table;
-    result['types'] = types;
-  }
 
-  return result;
+  return {
+    'plugin_data' : plugin_data,
+    'sort_table' : sort_table,
+    'types' : types
+  };
 };
 
 var render_plugin_data = function( plugin_data, plugin_sort, types )
 {
   var frame_element = $( '#frame', content_element );
   var navigation_element = $( '#navigation ul', content_element );
-  var saved_xml = null;
 
   var navigation_content = [];
   for( var i = 0; i < types.length; i++ )
@@ -120,62 +127,64 @@ var render_plugin_data = function( plugi
   navigation_element
     .html( navigation_content.join( "\n" ) );
     
-  $('.PLUGINCHANGES a').die( 'click' ).live( 'click', function(event) { 
-
-    event.preventDefault();
+  $( '.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' );
 
-    changes = { count : {}, list : {} }
-    $( 'a > span', navigation_element ).remove();
-    $( '.entry.changed', frame_element ).removeClass( 'changed' );
+        $.blockUI
+        (
+          {
+            message: $('#recording'),
+            css: { width: '450px' }
+          }
+        );
 
-    $.blockUI({ message: $('#recording'), css: { width: '450px' } }); 
-    
-    $.ajax({
-      type: 'GET',
-      url: core_basepath + '/admin/mbeans?stats=true&wt=xml',
-      dataType : 'text',
-      success: function(data) {
-        saved_xml = data;
+        return false;
       }
-    }).error(function() {
-      $.unblockUI(); 
-      alert("error getting current status"); 
-    });
-  }); 
-
-  $('#recording button').die( 'click' ).live( 'click', function() { 
-    var data = { 
-      'stats': "true", 
-      'wt':    "json", 
-      'diff':  "true", 
-      'stream.body': saved_xml 
-    };
-    
-    $.ajax({
-      type: 'POST',
-      url: core_basepath + '/admin/mbeans',
-      dataType : 'json',
-      data: data,
-      success : function( response, text_status, xhr )
-      {
-        var beans = response['solr-mbeans'];
-        for( var i = 0; i < beans.length; i += 2 )
-        {
-          var c = 0; var l = {}; 
-          for( var j in beans[i+1] ) { c++; l[j] = true; }
-          changes.count[beans[i]] = c;
-          changes.list[beans[i]] = l;
-        }
-        console.debug( changes );
+    ); 
 
-        var changed_data = compute_plugin_data( response, true );
-        app.plugin_data = $.extend( true, {}, app.plugin_data, changed_data );
-        
-        render_plugin_data( app.plugin_data.plugin_data, app.plugin_data.sort_table, app.plugin_data.types );
+  $( '#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;
       }
-    });
-    $.unblockUI(); 
-  }); 
+    ); 
               
   $( 'a[href="' + context_path + '"]', navigation_element )
     .parent().addClass( 'current' );
@@ -303,6 +312,22 @@ var render_plugin_data = function( plugi
     );
 };
 
+var load_reference_xml = function()
+{
+  $.ajax
+  (
+    {
+      type: 'GET',
+      url: core_basepath + '/admin/mbeans?stats=true&wt=xml',
+      dataType : 'text',
+      success: function( data )
+      {
+        reference_xml = data;
+      }
+    }
+  );
+}
+
 sammy.bind
 (
   'plugins_load',
@@ -319,7 +344,6 @@ sammy.bind
       return true;
     }
 
-    var core_basepath = params.active_core.attr( 'data-basepath' );
     $.ajax
     (
       {
@@ -384,6 +408,7 @@ sammy.get
   /^#\/([\w\d-]+)\/(plugins)$/,
   function( context )
   {
+    core_basepath = this.active_core.attr( 'data-basepath' );
     delete app.plugin_data;
 
     sammy.trigger