Repository: incubator-blur
Updated Branches:
  refs/heads/console-v2 1a3b2660b -> 899e47d2c


Final round of code cleanup


Project: http://git-wip-us.apache.org/repos/asf/incubator-blur/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-blur/commit/899e47d2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-blur/tree/899e47d2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-blur/diff/899e47d2

Branch: refs/heads/console-v2
Commit: 899e47d2c63876306b54f8fb54cd9ec9e20b5cf0
Parents: 1a3b266
Author: chrisrohr <[email protected]>
Authored: Fri May 30 16:30:54 2014 +0000
Committer: chrisrohr <[email protected]>
Committed: Fri May 30 16:30:54 2014 +0000

----------------------------------------------------------------------
 .../blur-console/src/main/webapp/Gruntfile.js   |   2 +-
 .../src/main/webapp/js/blurconsole.queries.js   | 347 ++++++++++---------
 .../src/main/webapp/js/blurconsole.schema.js    |  70 ++--
 .../src/main/webapp/js/blurconsole.search.js    | 172 +++++----
 .../src/main/webapp/js/blurconsole.shell.js     | 132 ++++---
 .../src/main/webapp/js/blurconsole.tables.js    | 172 ++++-----
 .../src/main/webapp/js/blurconsole.utils.js     |  28 +-
 7 files changed, 463 insertions(+), 460 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/899e47d2/contrib/blur-console/src/main/webapp/Gruntfile.js
----------------------------------------------------------------------
diff --git a/contrib/blur-console/src/main/webapp/Gruntfile.js 
b/contrib/blur-console/src/main/webapp/Gruntfile.js
index 801082d..551762c 100644
--- a/contrib/blur-console/src/main/webapp/Gruntfile.js
+++ b/contrib/blur-console/src/main/webapp/Gruntfile.js
@@ -81,7 +81,7 @@ module.exports = function (grunt) {
                 jshintrc: true,
             },
             development: {
-                src: ['js/**/*\.js']
+                src: ['js/**/*\.js', '!js/utils/**/*\.js']
             },
             ci: {
                 src: ['js/**/*\.js'],

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/899e47d2/contrib/blur-console/src/main/webapp/js/blurconsole.queries.js
----------------------------------------------------------------------
diff --git a/contrib/blur-console/src/main/webapp/js/blurconsole.queries.js 
b/contrib/blur-console/src/main/webapp/js/blurconsole.queries.js
index cfda508..9b3d6b0 100644
--- a/contrib/blur-console/src/main/webapp/js/blurconsole.queries.js
+++ b/contrib/blur-console/src/main/webapp/js/blurconsole.queries.js
@@ -18,174 +18,181 @@ under the License.
 */
 /*jshint laxbreak: true */
 /*global blurconsole:false */
-blurconsole.queries = (function () {
-       'use strict';
-       var configMap = {
-               view : 'views/queries.tpl.html',
-               states : ['Running', 'Interrupted', 'Complete', 'Back Pressure 
Interrupted'],
-               queryDef : [
-                       {label:'User', key:'user'},
-                       {label:'Query', key: 'query'},
-                       {label:'Time Started', key: function(row){
-                               var start = new Date(row.startTime);
-                               return start.toTimeString(); //start.getHours() 
+ ':' + start.getMinutes() + ':' + start.getSeconds();
-                       }},
-                       {label:'State', key: function(row) {
-                               var stateInfo = configMap.states[row.state];
-
-                               if (row.state === 0) {
-                                       stateInfo += ' <div class="badge 
badge-info">' + row.percent + '%</div>';
-                               }
-                               return stateInfo;
-                       }},
-                       {label:'Actions', key: function(row) {
-                               var actions = '';
-                               if (row.state === 0) {
-                                       actions += '<a href="#" 
class="cancelTrigger btn btn-danger" data-uuid="' + row.uuid + '" data-query="' 
+ row.query + '" data-table="' + row.table + '"><i class="glyphicon 
glyphicon-ban-circle"></i> Cancel</a> ';
-                               }
-                               return actions;
-                       }}
-               ],
-       },
-       stateMap = {
-               $container : null,
-               currentTable : null,
-               currentFilter : null,
-               currentSort : null
-       },
-       jqueryMap = {},
-       setJqueryMap, initModule, unloadModule, drawTableList, drawQueries, 
registerPageEvents, unregisterPageEvents, waitForData;
-
-       setJqueryMap = function() {
-               var $container = stateMap.$container;
-               jqueryMap = {
-                       $container : $container,
-                       $tableHolder : $('#tableHolder'),
-                       $queryHolder : $('#queryHolder'),
-                       $filterHolder : $('#filterOptions'),
-                       $filterText : $('#filterOptions .filterText')
-               };
-       };
-
-       registerPageEvents = function() {
-               jqueryMap.$tableHolder.on('click', '.list-group-item', 
function(){
-                       stateMap.currentTable = $(this).attr('href');
-
-                       $('.list-group-item', 
jqueryMap.$tableHolder).removeClass('active');
-                       $('.list-group-item[href="' + stateMap.currentTable + 
'"]', jqueryMap.$tableHolder).addClass('active');
-                       drawQueries();
-                       return false;
-               });
-               jqueryMap.$queryHolder.on('click', 'a.cancelTrigger', 
function(){
-                       var uuid = $(this).data('uuid'), query = 
$(this).data('query'), table = $(this).data('table');
-                       var modalContent = 
blurconsole.browserUtils.modal('confirmDelete', 'Confirm Query Cancel', 'You 
are about to cancel the query [' + query + '].  Are you sure you want to do 
this?', [
-                               {classes: 'btn-primary killQuery', label: 'Stop 
Query'},
-                               {classes: 'btn-default cancel', label: 
'Cancel', data: {dismiss:'modal'}}
-                       ], 'medium');
-
-                       var modal = 
$(modalContent).modal().on('shown.bs.modal', function(e){
-                               $(e.currentTarget).on('click', '.killQuery', 
function() {
-                                       
blurconsole.model.queries.cancelQuery(table, uuid);
-                                       modal.modal('hide');
-                               });
-                       }).on('hidden.bs.modal', function(e) {
-                               $(e.currentTarget).remove();
-                       });
-                       return false;
-               });
-
-               jqueryMap.$filterHolder.on('click', '.filterTrigger', 
function() {
-                       var filterVal = jqueryMap.$filterText.val();
-
-                       stateMap.currentFilter = filterVal;
-                       drawQueries();
-               });
-       };
-
-       unregisterPageEvents = function() {
-               if (jqueryMap.$tableHolder) {
-                       jqueryMap.$tableHolder.off();
-               }
-       };
-
-       drawTableList = function() {
-               var clusters = blurconsole.model.tables.getClusters();
-
-               if (clusters) {
-                       jqueryMap.$tableHolder.html('');
-                       clusters.sort();
-                       $.each(clusters, function(i, cluster){
-                               var panelContent, tables = 
blurconsole.model.tables.getEnabledTables(cluster);
-
-                               panelContent =
-                                       '<div class="panel panel-default">'
-                                               + '<div class="panel-heading">'
-                                                       + '<h3 
class="panel-title">' + cluster + '</h3>'
-                                               + '</div>'
-                                               + '<div class="panel-body">';
-                               if (tables.length > 0) {
-                                       tables.sort(function(a, b){ return 
a.name > b.name; });
-                                       panelContent += '<div 
class="list-group">';
-
-                                       $.each(tables, function(i, table){
-                                               panelContent += '<a href="' + 
table.name + '" class="list-group-item';
-                                               if (table.name === 
stateMap.currentTable) {
-                                                       panelContent += ' 
active';
-                                                       drawQueries();
-                                               }
-                                               panelContent += '">' + 
table.name + '</a>';
-                                       });
-
-                                       panelContent += '</div>';
-                               } else {
-                                       panelContent += '<div class="alert 
alert-warning">There are not any enabled tables!</div>';
-                               }
-                               panelContent += '</div></div>';
-                               jqueryMap.$tableHolder.append(panelContent);
-                       });
-               } else {
-                       jqueryMap.$tableHolder.html('<div class="alert 
alert-warning">There are no clusters of tables!</div>');
-               }
-       };
-
-       drawQueries = function() {
-               if (stateMap.currentTable){
-                       
jqueryMap.$queryHolder.html(blurconsole.browserUtils.table(configMap.queryDef, 
blurconsole.model.queries.queriesForTable(stateMap.currentTable, 
stateMap.currentSort, stateMap.currentFilter)));
-               } else {
-                       jqueryMap.$queryHolder.html('<div class="alert 
alert-info">Select a table on the left to see the current queries</div>');
-               }
-       };
-
-       waitForData = function() {
-               var clusters = blurconsole.model.tables.getClusters();
-               if (clusters && clusters.length > 0) {
-                       drawTableList();
-                       drawQueries();
-               } else {
-                       setTimeout(waitForData, 100);
-               }
-       };
-
-       initModule = function($container) {
-               $container.load(configMap.view, function() {
-                       stateMap.$container = $container;
-                       setJqueryMap();
-                       $.gevent.subscribe(jqueryMap.$container, 
'queries-updated', drawQueries);
-                       $.gevent.subscribe(jqueryMap.$container, 
'tables-updated', drawTableList);
-                       registerPageEvents();
-                       waitForData();
-               });
-               return true;
-       };
-
-       unloadModule = function() {
-               $.gevent.unsubscribe(jqueryMap.$container, 'queries-updated');
-               $.gevent.unsubscribe(jqueryMap.$container, 'tables-updated');
-               unregisterPageEvents();
-       };
-
-       return {
-               initModule : initModule,
-               unloadModule : unloadModule
-       };
+blurconsole.queries = (function() {
+    'use strict';
+  
+    //------------------------ Configuration and State --------------------
+    var configMap = {
+        view: 'views/queries.tpl.html',
+        states: ['Running', 'Interrupted', 'Complete', 'Back Pressure 
Interrupted'],
+        queryDef: [
+            { label: 'User', key: 'user' },
+            { label: 'Query', key: 'query' },
+            { label: 'Time Started', key: function(row) {
+                var start = new Date(row.startTime);
+                return start.toTimeString(); //start.getHours() + ':' + 
start.getMinutes() + ':' + start.getSeconds();
+            } },
+            { label: 'State', key: function(row) {
+                var stateInfo = configMap.states[row.state];
+                if(row.state === 0) {
+                    stateInfo += ' <div class="badge badge-info">' + 
row.percent + '%</div>';
+                }
+                return stateInfo;
+            } },
+            { label: 'Actions', key: function(row) {
+                var actions = '';
+                if(row.state === 0) {
+                    actions += '<a href="#" class="cancelTrigger btn 
btn-danger" data-uuid="' + row.uuid + '" data-query="' + row.query + '" 
data-table="' + row.table + '"><i class="glyphicon glyphicon-ban-circle"></i> 
Cancel</a> ';
+                }
+                return actions;
+            } }
+        ],
+    },
+    stateMap = {
+        $container: null,
+        currentTable: null,
+        currentFilter: null,
+        currentSort: null
+    },
+    jqueryMap = {};
+  
+    //----------------------------------- Private methods 
----------------------------
+
+    function _setJqueryMap() {
+        var $container = stateMap.$container;
+        jqueryMap = {
+            $container: $container,
+            $tableHolder: $('#tableHolder'),
+            $queryHolder: $('#queryHolder'),
+            $filterHolder: $('#filterOptions'),
+            $filterText: $('#filterOptions .filterText')
+        };
+    }
+
+    function _registerPageEvents() {
+        jqueryMap.$tableHolder.on('click', '.list-group-item', 
_showQueriesForTable);
+        jqueryMap.$queryHolder.on('click', 'a.cancelTrigger', 
_cancelSelectedQuery);
+        jqueryMap.$filterHolder.on('click', '.filterTrigger', _filterQueries);
+    }
+
+    function _unregisterPageEvents() {
+        if(jqueryMap.$tableHolder) {
+            jqueryMap.$tableHolder.off();
+        }
+    }
+
+    function _waitForData() {
+        var clusters = blurconsole.model.tables.getClusters();
+        if(clusters && clusters.length > 0) {
+            _drawTableList();
+            _drawQueries();
+        } else {
+            setTimeout(_waitForData, 100);
+        }
+    }
+    //----------------------------- Event Handlers and DOM Methods 
-----------------------------
+
+    function _showQueriesForTable(evt) {
+        stateMap.currentTable = $(evt.currentTarget).attr('href');
+        $('.list-group-item', jqueryMap.$tableHolder).removeClass('active');
+        $('.list-group-item[href="' + stateMap.currentTable + '"]', 
jqueryMap.$tableHolder).addClass('active');
+        _drawQueries();
+        return false;
+    }
+
+    function _cancelSelectedQuery(evt) {
+        var uuid = $(evt.currentTarget).data('uuid'),
+          query = $(evt.currentTarget).data('query'),
+          table = $(evt.currentTarget).data('table');
+        var modalContent = blurconsole.browserUtils.modal('confirmDelete', 
'Confirm Query Cancel', 'You are about to cancel the query [' + query + '].  
Are you sure you want to do this?', [{
+            classes: 'btn-primary killQuery',
+            label: 'Stop Query'
+        }, {
+            classes: 'btn-default cancel',
+            label: 'Cancel',
+            data: {
+                dismiss: 'modal'
+            }
+        }], 'medium');
+        var modal = $(modalContent).modal().on('shown.bs.modal', function(e) {
+            $(e.currentTarget).on('click', '.killQuery', function() {
+                blurconsole.model.queries.cancelQuery(table, uuid);
+                modal.modal('hide');
+            });
+        }).on('hidden.bs.modal', function(e) {
+            $(e.currentTarget).remove();
+        });
+        return false;
+    }
+
+    function _filterQueries() {
+        var filterVal = jqueryMap.$filterText.val();
+        stateMap.currentFilter = filterVal;
+        _drawQueries();
+    }
+
+    function _drawTableList() {
+        var clusters = blurconsole.model.tables.getClusters();
+        if(clusters) {
+            jqueryMap.$tableHolder.html('');
+            clusters.sort();
+            $.each(clusters, function(i, cluster) {
+                var panelContent, tables = 
blurconsole.model.tables.getEnabledTables(cluster);
+                panelContent = '<div class="panel panel-default">' + '<div 
class="panel-heading">' + '<h3 class="panel-title">' + cluster + '</h3>' + 
'</div>' + '<div class="panel-body">';
+                if(tables.length > 0) {
+                    tables.sort(function(a, b) {
+                        return a.name > b.name;
+                    });
+                    panelContent += '<div class="list-group">';
+                    $.each(tables, function(i, table) {
+                        panelContent += '<a href="' + table.name + '" 
class="list-group-item';
+                        if(table.name === stateMap.currentTable) {
+                            panelContent += ' active';
+                            _drawQueries();
+                        }
+                        panelContent += '">' + table.name + '</a>';
+                    });
+                    panelContent += '</div>';
+                } else {
+                    panelContent += '<div class="alert alert-warning">There 
are not any enabled tables!</div>';
+                }
+                panelContent += '</div></div>';
+                jqueryMap.$tableHolder.append(panelContent);
+            });
+        } else {
+            jqueryMap.$tableHolder.html('<div class="alert 
alert-warning">There are no clusters of tables!</div>');
+        }
+    }
+
+    function _drawQueries() {
+        if(stateMap.currentTable) {
+            
jqueryMap.$queryHolder.html(blurconsole.browserUtils.table(configMap.queryDef, 
blurconsole.model.queries.queriesForTable(stateMap.currentTable, 
stateMap.currentSort, stateMap.currentFilter)));
+        } else {
+            jqueryMap.$queryHolder.html('<div class="alert alert-info">Select 
a table on the left to see the current queries</div>');
+        }
+    }
+  
+    //-------------------------- Public API ---------------------------------
+
+    function initModule($container) {
+        $container.load(configMap.view, function() {
+            stateMap.$container = $container;
+            _setJqueryMap();
+            $.gevent.subscribe(jqueryMap.$container, 'queries-updated', 
_drawQueries);
+            $.gevent.subscribe(jqueryMap.$container, 'tables-updated', 
_drawTableList);
+            _registerPageEvents();
+            _waitForData();
+        });
+        return true;
+    }
+
+    function unloadModule() {
+        $.gevent.unsubscribe(jqueryMap.$container, 'queries-updated');
+        $.gevent.unsubscribe(jqueryMap.$container, 'tables-updated');
+        _unregisterPageEvents();
+    }
+    return {
+        initModule: initModule,
+        unloadModule: unloadModule
+    };
 }());
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/899e47d2/contrib/blur-console/src/main/webapp/js/blurconsole.schema.js
----------------------------------------------------------------------
diff --git a/contrib/blur-console/src/main/webapp/js/blurconsole.schema.js 
b/contrib/blur-console/src/main/webapp/js/blurconsole.schema.js
index bb6116b..3006cf0 100644
--- a/contrib/blur-console/src/main/webapp/js/blurconsole.schema.js
+++ b/contrib/blur-console/src/main/webapp/js/blurconsole.schema.js
@@ -21,6 +21,8 @@ under the License.
 /*global blurconsole:false */
 blurconsole.schema = (function () {
        'use strict';
+    
+    //----------------------------- Configuration and State 
-------------------------
        var
                configMap = {
                        mainHtml: String()
@@ -54,20 +56,25 @@ blurconsole.schema = (function () {
                                + '</div>'
                },
                stateMap = {},
-               jqueryMap = {},
-               initModule, showSchema, popupSchemaView, buildTreeSection, 
buildInfoSection, viewTerms, findTerms, loadTerms, switchToSearch;
+               jqueryMap = {};
 
-       showSchema = function(event, table) {
+    //------------------------------ Private Methods 
-----------------------------------------------------
+    function _findTerms() {
+               blurconsole.model.tables.findTerms(stateMap.table, 
stateMap.termFamily, stateMap.termColumn, jqueryMap.termSearch.val());
+       }
+    
+    //------------------------------ Event Handling and DOM Methods 
--------------------------------------
+       function _showSchema(event, table) {
                stateMap.table = table;
                stateMap.modalId = stateMap.table + '_modal';
-               blurconsole.model.tables.getSchema(stateMap.table, 
popupSchemaView);
-       };
+               blurconsole.model.tables.getSchema(stateMap.table, 
_popupSchemaView);
+       }
 
-       popupSchemaView = function(schema) {
+       function _popupSchemaView(schema) {
                stateMap.schema = schema;
                jqueryMap.contentHolder = $(configMap.mainHtml);
-               
jqueryMap.contentHolder.find('.schemaList').html(buildTreeSection());
-               
jqueryMap.contentHolder.find('.schemaColumnInfo').append(buildInfoSection());
+               
jqueryMap.contentHolder.find('.schemaList').html(_buildTreeSection());
+               
jqueryMap.contentHolder.find('.schemaColumnInfo').append(_buildInfoSection());
 
                jqueryMap.modal = 
$(blurconsole.browserUtils.modal(stateMap.modalId, 'Schema Definition for ' + 
stateMap.table, jqueryMap.contentHolder, null, 'large'));
                jqueryMap.modal.modal()
@@ -91,12 +98,12 @@ blurconsole.schema = (function () {
                        jqueryMap.columnTermsSection.hide();
                        return false;
                })
-               .on('click', 'a.termsTrigger', viewTerms)
-               .on('click', '.schemaColumnTerms button', findTerms)
-               .on('click', '.searchTrigger', switchToSearch);
-       };
+               .on('click', 'a.termsTrigger', _viewTerms)
+               .on('click', '.schemaColumnTerms button', _findTerms)
+               .on('click', '.searchTrigger', _switchToSearch);
+       }
 
-       buildTreeSection = function() {
+       function _buildTreeSection() {
                var tree = '';
                $.each(stateMap.schema, function(family, cols){
                        var famId = blurconsole.browserUtils.cleanId(family);
@@ -115,9 +122,9 @@ blurconsole.schema = (function () {
                        tree += '</ul></div></div></div>';
                });
                return tree;
-       };
+       }
 
-       buildInfoSection = function() {
+       function _buildInfoSection() {
                var info = '';
                $.each(stateMap.schema, function(family, cols){
                        var famId = blurconsole.browserUtils.cleanId(family);
@@ -139,48 +146,45 @@ blurconsole.schema = (function () {
                        });
                });
                return info;
-       };
+       }
 
-       viewTerms = function() {
+       function _viewTerms(evt) {
                jqueryMap.termList.html('<div class="center-block"><img 
src="img/ajax-loader.gif"></div>');
                jqueryMap.termSearch.val('');
                jqueryMap.columnTermsSection.show();
-               var $this = $(this);
+               var $this = $(evt.currentTarget);
 
                stateMap.termFamily = $this.data('fam');
                stateMap.termColumn = $this.data('col');
 
                jqueryMap.termSearchButton.trigger('click');
-       };
+       }
 
-       findTerms = function() {
-               blurconsole.model.tables.findTerms(stateMap.table, 
stateMap.termFamily, stateMap.termColumn, jqueryMap.termSearch.val());
-       };
-
-       loadTerms = function() {
+       function _loadTerms() {
                var terms = Array.prototype.slice.call(arguments, 1);
                jqueryMap.termList.html('');
                $.each(terms, function(i, term){
                        jqueryMap.termList.append('<li 
class="list-group-item">' + term + ' <span class="badge badge-success 
searchTrigger" title="Search for this value" data-value="' + term + '" 
data-table="' + stateMap.table + '"><i class="glyphicon 
glyphicon-search"></i></span></li>');
                });
-       };
+       }
 
-       switchToSearch = function(){
+       function _switchToSearch(evt){
                blurconsole.shell.changeAnchorPart({
                        tab: 'search',
                        _tab: {
-                               query: encodeURIComponent(stateMap.termFamily + 
'.' + stateMap.termColumn + ':' + $(this).data('value')),
-                               table: $(this).data('table'),
+                               query: encodeURIComponent(stateMap.termFamily + 
'.' + stateMap.termColumn + ':' + $(evt.currentTarget).data('value')),
+                               table: $(evt.currentTarget).data('table'),
                                rr: 'rowrow'
                        }
                });
                jqueryMap.modal.modal('hide');
-       };
+       }
 
-       initModule = function() {
-               $.gevent.subscribe($(document), 'schema-show', showSchema);
-               $.gevent.subscribe($(document), 'terms-updated', loadTerms);
-       };
+    //----------------------------- Public API ----------------------------
+       function initModule() {
+               $.gevent.subscribe($(document), 'schema-show', _showSchema);
+               $.gevent.subscribe($(document), 'terms-updated', _loadTerms);
+       }
 
        return {
                initModule : initModule

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/899e47d2/contrib/blur-console/src/main/webapp/js/blurconsole.search.js
----------------------------------------------------------------------
diff --git a/contrib/blur-console/src/main/webapp/js/blurconsole.search.js 
b/contrib/blur-console/src/main/webapp/js/blurconsole.search.js
index 212ac02..fb2b03d 100644
--- a/contrib/blur-console/src/main/webapp/js/blurconsole.search.js
+++ b/contrib/blur-console/src/main/webapp/js/blurconsole.search.js
@@ -19,6 +19,8 @@ under the License.
 /*global blurconsole:false, confirm:false */
 blurconsole.search = (function () {
        'use strict';
+    
+    //----------------------------- Configuration and State 
--------------------------------
        var configMap = {
                view : 'views/search.tpl.html',
                superQueryMap: {
@@ -44,12 +46,10 @@ blurconsole.search = (function () {
                $filter : null,
                $rowRecordOption : 'rowrow'
        },
-       jqueryMap = {},
-       setJqueryMap, initModule, unloadModule, drawResultHolders, drawResults, 
registerPageEvents, unregisterPageEvents,
-       sendSearch, showOptions, reviewTables, loadTableList, getMoreData, 
fixPanelWidths, updateOptionPopover, updateOptionDisplay,
-       persistOptions, getColList, popupFacetDialog;
-
-       setJqueryMap = function() {
+       jqueryMap = {};
+    
+    //----------------- Private Methods ----------------------------------
+       function _setJqueryMap() {
                var $container = stateMap.$container;
                jqueryMap = {
                        $container : $container,
@@ -62,12 +62,12 @@ blurconsole.search = (function () {
                        $countHolder : $('#resultCount'),
                        $facetTrigger : $('#facetTrigger')
                };
-       };
+       }
 
-       registerPageEvents = function() {
-               $('#searchTrigger').on('click', sendSearch);
-               $('#results').on('shown.bs.collapse', 
'.panel-collapse:not(.loaded)', getMoreData);
-               $('#results').on('click', '.nextPage', getMoreData);
+       function _registerPageEvents() {
+               $('#searchTrigger').on('click', _sendSearch);
+               $('#results').on('shown.bs.collapse', 
'.panel-collapse:not(.loaded)', _getMoreData);
+               $('#results').on('click', '.nextPage', _getMoreData);
                $('#searchOptionsTrigger').popover({
                        html: true,
                        placement: 'bottom',
@@ -75,12 +75,12 @@ blurconsole.search = (function () {
                        container: 'body',
                        content: configMap.optionsHtml
                });
-               $('#searchOptionsTrigger').on('shown.bs.popover', 
updateOptionPopover);
-               $(document).on('change', '.popover select', persistOptions);
-               jqueryMap.$facetTrigger.on('click', popupFacetDialog);
-       };
+               $('#searchOptionsTrigger').on('shown.bs.popover', 
_updateOptionPopover);
+               $(document).on('change', '.popover select', _persistOptions);
+               jqueryMap.$facetTrigger.on('click', _popupFacetDialog);
+       }
 
-       unregisterPageEvents = function() {
+       function _unregisterPageEvents() {
                $('#searchTrigger').off('click');
                $('#results').off('shown.bs.collapse');
                $('#results').off('click');
@@ -88,23 +88,37 @@ blurconsole.search = (function () {
                $('#searchOptionsTrigger').off('shown.bs.popover');
                $(document).off('change');
                //jqueryMap.$facetTrigger.off('click');
-       };
+       }
+    
+    function _getColList(row) {
+               var cols = 
blurconsole.utils.reject(blurconsole.utils.keys(row), function(i) {
+                       return i === 'recordid';
+               });
 
-       updateOptionDisplay = function() {
-               var displayText = '';
+               if (cols.length === 0) {
+                       return [];
+               }
 
-               displayText += 
configMap.superQueryMap[stateMap.$rowRecordOption];
+               cols.sort();
 
+               cols = ['recordid'].concat(cols);
+               return cols;
+       }
+    
+    //------------------------------ Event Handlers and DOM Methods 
---------------------
+       function _updateOptionDisplay() {
+               var displayText = '';
+               displayText += 
configMap.superQueryMap[stateMap.$rowRecordOption];
                jqueryMap.$optionsDisplay.html(displayText);
-       };
+       }
 
-       updateOptionPopover = function() {
+       function _updateOptionPopover() {
                if ($('#superQuery').length > 0) {
                        $('#superQuery').val(stateMap.$rowRecordOption);
                }
-       };
+       }
 
-       persistOptions = function() {
+       function _persistOptions() {
                var resendSearch = false;
                if (jqueryMap.$resultsHolder.children().length > 0) {
                        if (confirm('You have existing results on the screen, 
changing the search options will erase your results.  Continue?')) {
@@ -116,13 +130,13 @@ blurconsole.search = (function () {
                }
                stateMap.$rowRecordOption = $('#superQuery').val();
                if (resendSearch) {
-                       sendSearch();
+                       _sendSearch();
                }
-               updateOptionDisplay();
+               _updateOptionDisplay();
                $('#searchOptionsTrigger').popover('hide');
-       };
+       }
 
-       sendSearch = function() {
+       function _sendSearch() {
                stateMap.$currentTable = jqueryMap.$tableField.val();
                stateMap.$currentQuery = jqueryMap.$queryField.val();
 
@@ -134,27 +148,21 @@ blurconsole.search = (function () {
                                rr: stateMap.$rowRecordOption
                        }
                });
-
-               drawResultHolders();
-
+               _drawResultHolders();
                blurconsole.model.search.runSearch(stateMap.$currentQuery, 
stateMap.$currentTable, {start: 0, fetch: 10, rowRecordOption: 
stateMap.$rowRecordOption});
-       };
+       }
 
-       getMoreData = function() {
-               var family = $(this).attr('href') ? 
$(this).attr('href').substring(1) : $(this).attr('id');
+       function _getMoreData(evt) {
+               var family = $(evt.currentTarget).attr('href') ? 
$(evt.currentTarget).attr('href').substring(1) : 
$(evt.currentTarget).attr('id');
                blurconsole.model.search.loadMoreResults(family);
                return false;
-       };
+       }
 
-       showOptions = function() {
-
-       };
-
-       reviewTables = function() {
-               var tableFound = false, tableMap;
+       function _reviewTables() {
+               var tableFound = false;
 
                if (stateMap.$currentTable) {
-                       tableMap = 
blurconsole.model.tables.getAllEnabledTables();
+                       var tableMap = 
blurconsole.model.tables.getAllEnabledTables();
                        $.each(tableMap, function(cluster, tables){
                                var tableList = $.map(tables, function(t){ 
return t.name; });
                                if (tableList.indexOf(stateMap.$currentTable) > 
-1) {
@@ -165,27 +173,27 @@ blurconsole.search = (function () {
 
                if (tableFound) {
                        jqueryMap.$tableWarning.hide();
-                       loadTableList();
+                       _loadTableList();
                } else if (stateMap.$currentTable) {
                        jqueryMap.$tableWarning.show();
                } else {
-                       loadTableList();
+                       _loadTableList();
                }
-       };
+       }
 
-       drawResultHolders = function() {
-               var familyMarkup = '', allFamilies, extraFamilies = [], 
parsedFamilies = blurconsole.utils.findFamilies(stateMap.$currentQuery), 
sortedFamilies;
+       function _drawResultHolders() {
+               var familyMarkup = '', parsedFamilies = 
blurconsole.utils.findFamilies(stateMap.$currentQuery);
 
                jqueryMap.$resultsHolder.html('');
 
                // Redraw families
-               allFamilies = 
blurconsole.model.tables.getFamilies(stateMap.$currentTable);
-               extraFamilies = blurconsole.utils.reject(allFamilies, 
function(fam){ return parsedFamilies.indexOf(fam) >= 0; });
+               var allFamilies = 
blurconsole.model.tables.getFamilies(stateMap.$currentTable);
+               var extraFamilies = blurconsole.utils.reject(allFamilies, 
function(fam){ return parsedFamilies.indexOf(fam) >= 0; });
 
                parsedFamilies.sort();
                extraFamilies.sort();
 
-               sortedFamilies = parsedFamilies.concat(extraFamilies);
+               var sortedFamilies = parsedFamilies.concat(extraFamilies);
 
                $.each(sortedFamilies, function(i, fam) {
                        var famId = blurconsole.browserUtils.cleanId(fam);
@@ -196,18 +204,18 @@ blurconsole.search = (function () {
                });
 
                jqueryMap.$resultsHolder.html(familyMarkup);
-               fixPanelWidths();
-       };
+               _fixPanelWidths();
+       }
 
-       fixPanelWidths = function() {
+       function _fixPanelWidths() {
                var allPanels = 
jqueryMap.$resultsHolder.find('.panel-collapse');
                if (allPanels.length > 0) {
                        var width = $(allPanels[0]).parent().width() - 30;
                        allPanels.width(width);
                }
-       };
+       }
 
-       drawResults = function(evt, families) {
+       function _drawResults(evt, families) {
                var results = blurconsole.model.search.getResults();
                jqueryMap.$countHolder.html('<small>Found ' + 
blurconsole.model.search.getTotal() + ' total results</small>');
                //jqueryMap.$facetTrigger.show();
@@ -225,7 +233,7 @@ blurconsole.search = (function () {
                                } else {
                                        if 
(blurconsole.utils.keys(famResults[0]).indexOf('rowid') === -1 ) {
                                                // Record results
-                                               cols = 
getColList(famResults[0]);
+                                               cols = 
_getColList(famResults[0]);
 
                                                $.each(cols, function(i, col) {
                                                        table += '<th>' + col + 
'</th>';
@@ -242,7 +250,7 @@ blurconsole.search = (function () {
                                                // Row results
                                                $.each(famResults, function(i, 
row){
                                                        if (row.records.length 
> 0) {
-                                                               var tmpCols = 
getColList(row.records[0]);
+                                                               var tmpCols = 
_getColList(row.records[0]);
                                                                if 
(tmpCols.length > 0) {
                                                                        cols = 
tmpCols;
                                                                        return 
false;
@@ -284,26 +292,11 @@ blurconsole.search = (function () {
                                        $(famId).addClass('loaded');
                                }
                        });
-                       fixPanelWidths();
-               }
-       };
-
-       getColList = function(row) {
-               var cols = 
blurconsole.utils.reject(blurconsole.utils.keys(row), function(i) {
-                       return i === 'recordid';
-               });
-
-               if (cols.length === 0) {
-                       return [];
+                       _fixPanelWidths();
                }
+       }
 
-               cols.sort();
-
-               cols = ['recordid'].concat(cols);
-               return cols;
-       };
-
-       loadTableList = function() {
+       function _loadTableList() {
                var tableMap = blurconsole.model.tables.getAllEnabledTables();
 
                jqueryMap.$tableSelectorStatusOption.html('Loading Tables...');
@@ -323,21 +316,22 @@ blurconsole.search = (function () {
                });
 
                jqueryMap.$tableSelectorStatusOption.html('Choose Table');
-       };
+       }
 
-       popupFacetDialog = function() {
+       function _popupFacetDialog() {
                jqueryMap.facetModal = 
$(blurconsole.browserUtils.modal('facetDialog', 'Facets for Current Search', 
'TBD', null, 'large'));
                jqueryMap.facetModal.modal();
-       };
+       }
 
-       initModule = function($container) {
+    //--------------------------------- Public API 
------------------------------------------
+       function initModule($container) {
                $container.load(configMap.view, function() {
                        stateMap.$container = $container;
-                       setJqueryMap();
-                       $.gevent.subscribe(jqueryMap.$container, 
'tables-updated', reviewTables);
-                       $.gevent.subscribe(jqueryMap.$container, 
'results-updated', drawResults);
-                       registerPageEvents();
-                       loadTableList();
+                       _setJqueryMap();
+                       $.gevent.subscribe(jqueryMap.$container, 
'tables-updated', _reviewTables);
+                       $.gevent.subscribe(jqueryMap.$container, 
'results-updated', _drawResults);
+                       _registerPageEvents();
+                       _loadTableList();
 
                        var startupMap = $.uriAnchor.makeAnchorMap();
 
@@ -349,16 +343,16 @@ blurconsole.search = (function () {
                                stateMap.$rowRecordOption = startupMap._tab.rr;
                        }
 
-                       updateOptionDisplay();
+                       _updateOptionDisplay();
                        stateMap.loaded = true;
                });
                return true;
-       };
+       }
 
-       unloadModule = function() {
+       function unloadModule() {
                $.gevent.unsubscribe(jqueryMap.$container, 'tables-updated');
-               unregisterPageEvents();
-       };
+               _unregisterPageEvents();
+       }
 
        return {
                initModule : initModule,

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/899e47d2/contrib/blur-console/src/main/webapp/js/blurconsole.shell.js
----------------------------------------------------------------------
diff --git a/contrib/blur-console/src/main/webapp/js/blurconsole.shell.js 
b/contrib/blur-console/src/main/webapp/js/blurconsole.shell.js
index f1b450d..23ce5f4 100644
--- a/contrib/blur-console/src/main/webapp/js/blurconsole.shell.js
+++ b/contrib/blur-console/src/main/webapp/js/blurconsole.shell.js
@@ -25,6 +25,8 @@ under the License.
 /* global blurconsole:false, $:false */
 blurconsole.shell = (function () {
        'use strict';
+    
+    //---------------------------- Configuration and State 
----------------------------
        var configMap = {
                anchorSchemaMap : {
                        tab : { dashboard : true, tables : true, queries : 
true, search : true },
@@ -38,28 +40,24 @@ blurconsole.shell = (function () {
                currentTab : null,
                anchorMap  : {}
        },
-       jqueryMap = {},
-       copyAnchorMap, setJqueryMap, switchView,
-       changeAnchorPart, onHashChange,
-       onClickTab, initModule;
-
-       copyAnchorMap = function () {
-               return $.extend( true, {}, stateMap.anchorMap );
-       };
-
-       setJqueryMap = function () {
+       jqueryMap = {};
+    
+    //---------------------------- Private Methods -------------------------
+    function _setJqueryMap() {
                var $container = stateMap.$container;
                jqueryMap = {
                        $container   : $container,
                        $sideNavTabs : $('.side-nav a')
                };
-       };
-
-       switchView = function ( tab ) {
-               var i;
-
+       }
+    
+    function _copyAnchorMap() {
+               return $.extend( true, {}, stateMap.anchorMap );
+       }
+    
+    function _switchView( tab ) {
                if (stateMap.currentTab !== tab) {
-                       for ( i = 0; i < configMap.allTabs.length; i++ ) {
+                       for ( var i = 0; i < configMap.allTabs.length; i++ ) {
                                if (blurconsole[configMap.allTabs[i]]) {
                                        
blurconsole[configMap.allTabs[i]].unloadModule();
                                }
@@ -74,63 +72,32 @@ blurconsole.shell = (function () {
                }
 
                return true;
-       };
-
-       changeAnchorPart = function ( argMap ) {
-               var anchorMapRevise = copyAnchorMap(),
-                       boolReturn = true,
-                       keyName, keyNameDep;
-
-               KEYVAL:
-               for ( keyName in argMap ) {
-                       if ( argMap.hasOwnProperty( keyName ) ) {
-                               if ( keyName.indexOf( '_' ) === 0 ) { continue 
KEYVAL; }
-                               anchorMapRevise[keyName] = argMap[keyName];
-                               keyNameDep = '_' + keyName;
-                               if ( argMap[keyNameDep] ) {
-                                       anchorMapRevise[keyNameDep] = 
argMap[keyNameDep];
-                               } else {
-                                       delete anchorMapRevise[keyNameDep];
-                                       delete anchorMapRevise['_s' + 
keyNameDep];
-                               }
-                       }
-               }
+       }
+    
+    //---------------------------- Event Handlers and DOM Methods ----------
+    function _onHashChange() {
+               var anchorMapPrevious = _copyAnchorMap(), anchorMapProposed;
 
                try {
-                       $.uriAnchor.setAnchor( anchorMapRevise );
-               } catch ( error ) {
-                       $.uriAnchor.setAnchor( stateMap.anchorMap, null, true );
-                       boolReturn = false;
-               }
-
-               return boolReturn;
-       };
-
-       onHashChange = function () {
-               var anchorMapPrevious = copyAnchorMap(),
-                       anchorMapProposed,
-                       _sTabPrevious, _sTabProposed,
-                       sTabProposed;
-
-               try { anchorMapProposed = $.uriAnchor.makeAnchorMap(); }
-               catch ( error ) {
+            anchorMapProposed = $.uriAnchor.makeAnchorMap();
+        } catch ( error ) {
                        $.uriAnchor.setAnchor( anchorMapPrevious, null, true );
                        return false;
                }
 
                stateMap.anchorMap = anchorMapProposed;
 
-               _sTabPrevious = anchorMapPrevious._s_tab; // jshint ignore:line
-               _sTabProposed = anchorMapProposed._s_tab; // jshint ignore:line
+               var _sTabPrevious = anchorMapPrevious._s_tab; // jshint 
ignore:line
+               var _sTabProposed = anchorMapProposed._s_tab; // jshint 
ignore:line
 
                if ( ! anchorMapPrevious || _sTabPrevious !== _sTabProposed ){
-                       sTabProposed = anchorMapProposed.tab;
+                       var sTabProposed = anchorMapProposed.tab;
                        switch ( sTabProposed ) {
                                case 'dashboard':
                                case 'tables':
                                case 'queries':
                                case 'search':
-                                       switchView( sTabProposed );
+                                       _switchView( sTabProposed );
                                        break;
                                default:
                                        $.uriAnchor.setAnchor( 
anchorMapPrevious, null, true );
@@ -138,19 +105,48 @@ blurconsole.shell = (function () {
                }
 
                return false;
-       };
-
-       onClickTab = function ( ) {
-               var target = $(this);
+       }
+    
+    function _onClickTab(evt) {
+               var target = $(evt.currentTarget);
                changeAnchorPart({
                        tab : target.attr('href').split('=')[1]
                });
                return false;
-       };
+       }
+    
+    //---------------------------- Public API ------------------------------
+       function changeAnchorPart( argMap ) {
+               var anchorMapRevise = _copyAnchorMap(), boolReturn = true;
 
-       initModule = function( $container ) {
+               KEYVAL:
+               for ( var keyName in argMap ) {
+                       if ( argMap.hasOwnProperty( keyName ) ) {
+                               if ( keyName.indexOf( '_' ) === 0 ) { continue 
KEYVAL; }
+                               anchorMapRevise[keyName] = argMap[keyName];
+                               var keyNameDep = '_' + keyName;
+                               if ( argMap[keyNameDep] ) {
+                                       anchorMapRevise[keyNameDep] = 
argMap[keyNameDep];
+                               } else {
+                                       delete anchorMapRevise[keyNameDep];
+                                       delete anchorMapRevise['_s' + 
keyNameDep];
+                               }
+                       }
+               }
+
+               try {
+                       $.uriAnchor.setAnchor( anchorMapRevise );
+               } catch ( error ) {
+                       $.uriAnchor.setAnchor( stateMap.anchorMap, null, true );
+                       boolReturn = false;
+               }
+
+               return boolReturn;
+       }
+
+       function initModule( $container ) {
                stateMap.$container = $container;
-               setJqueryMap();
+               _setJqueryMap();
 
                blurconsole.schema.initModule();
                blurconsole.logging.initModule();
@@ -161,13 +157,13 @@ blurconsole.shell = (function () {
 
                $('.side-nav li').tooltip();
 
-               jqueryMap.$sideNavTabs.click( onClickTab );
+               jqueryMap.$sideNavTabs.click( _onClickTab );
 
                $.uriAnchor.configModule({
                        schema_map : configMap.anchorSchemaMap // jshint 
ignore:line
                });
 
-               $(window).bind('hashchange', 
onHashChange).trigger('hashchange');
+               $(window).bind('hashchange', 
_onHashChange).trigger('hashchange');
 
                var startupMap = $.uriAnchor.makeAnchorMap();
 
@@ -185,7 +181,7 @@ blurconsole.shell = (function () {
                                $('#view_logging_trigger 
.badge').html(errors.length);
                        }
                });
-       };
+       }
 
        return {
                initModule: initModule,

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/899e47d2/contrib/blur-console/src/main/webapp/js/blurconsole.tables.js
----------------------------------------------------------------------
diff --git a/contrib/blur-console/src/main/webapp/js/blurconsole.tables.js 
b/contrib/blur-console/src/main/webapp/js/blurconsole.tables.js
index cb2a6f4..2803e4c 100644
--- a/contrib/blur-console/src/main/webapp/js/blurconsole.tables.js
+++ b/contrib/blur-console/src/main/webapp/js/blurconsole.tables.js
@@ -21,6 +21,8 @@ under the License.
 /*global blurconsole:false */
 blurconsole.tables = (function () {
        'use strict';
+    
+    //------------------------ Configuration and State ----------------------
        var configMap = {
                view : 'views/tables.tpl.html',
                enabledDef : [
@@ -47,97 +49,27 @@ blurconsole.tables = (function () {
                ]
        },
        stateMap = { $container : null },
-       jqueryMap = {},
-       setJqueryMap, initModule, unloadModule, updateTableList, buildTabs, 
waitForData, registerPageEvents, unregisterPageEvents, updateActivityIndicators;
+       jqueryMap = {};
 
-       setJqueryMap = function() {
+    //----------------------------- Private Methods 
----------------------------
+       function _setJqueryMap() {
                var $container = stateMap.$container;
                jqueryMap = {
                        $container : $container,
                        $tableInfoHolder : $('#tableInfoHolder'),
                        $tables : {}
                };
-       };
-
-       unloadModule = function() {
-               $.gevent.unsubscribe(jqueryMap.$container, 'tables-updated');
-               $.gevent.unsubscribe(jqueryMap.$container, 'queries-updated');
-               unregisterPageEvents();
-       };
-
-       initModule = function($container) {
-               $container.load(configMap.view, function() {
-                       stateMap.$container = $container;
-                       setJqueryMap();
-                       $.gevent.subscribe(jqueryMap.$container, 
'tables-updated', updateTableList);
-                       $.gevent.subscribe(jqueryMap.$container, 
'queries-updated', updateActivityIndicators);
-                       waitForData();
-                       registerPageEvents();
-               });
-               return true;
-       };
+       }
 
-       waitForData = function() {
+       function _waitForData() {
                if (blurconsole.model.tables.getClusters().length > 0) {
-                       buildTabs();
+                       _buildTabs();
                } else {
-                       setTimeout(waitForData, 100);
-               }
-       };
-
-       buildTabs = function() {
-               var clusters, tabMarkup, paneMarkup, needsTabs;
-
-               clusters = blurconsole.model.tables.getClusters();
-               needsTabs = clusters.length > 1;
-
-               if (needsTabs) {
-                       tabMarkup = '<ul class="nav nav-tabs">';
-                       tabMarkup += $.map(clusters, function(cluster, idx) {
-                               return '<li class="' + (idx === 0 ? 'active' : 
'') + '"><a href="#' + cluster + '_pane" data-toggle="tab">' + cluster + ' <i 
class="glyphicon glyphicon-exclamation-sign" style="display:none" 
title="Activity detected"></i></a></li>';
-                       }).join('');
-                       tabMarkup += '</ul>';
-
-                       jqueryMap.$tableInfoHolder.html($(tabMarkup));
+                       setTimeout(_waitForData, 100);
                }
-
-               paneMarkup = needsTabs ? '<div class="tab-content">' : '';
-               paneMarkup += $.map(clusters, function(cluster, idx) {
-                       return '<div id="' + cluster + '_pane" class="tab-pane' 
+ (idx === 0 ? ' active' : '') + '"><h3>Enabled Tables</h3><div 
class="enabledSection"></div><h3>Disabled Tables</h3><div 
class="disabledSection"></div></div>';
-               }).join('');
-               paneMarkup += needsTabs ? '</div>' : '';
-
-               if (needsTabs) {
-                       jqueryMap.$tableInfoHolder.append(paneMarkup);
-               } else {
-                       jqueryMap.$tableInfoHolder.html(paneMarkup);
-               }
-
-               $.each(clusters, function(idx, cluster){
-                       var clusterPane = $('#' + cluster + '_pane');
-                       
clusterPane.find('.enabledSection').html(blurconsole.browserUtils.table(configMap.enabledDef,
 blurconsole.model.tables.getEnabledTables(cluster)));
-                       
clusterPane.find('.disabledSection').html(blurconsole.browserUtils.table(configMap.disabledDef,
 blurconsole.model.tables.getDisabledTables(cluster)));
-               });
-       };
-
-       updateTableList = function() {
-               var clusters = blurconsole.model.tables.getClusters();
-
-               $.each(clusters, function(idx, cluster) {
-                       var clusterPane = $('#' + cluster + '_pane'), 
enabledSection, disabledSection;
-                       enabledSection = clusterPane.find('.enabledSection');
-                       disabledSection = clusterPane.find('.disabledSection');
-
-                       if (enabledSection.length > 0) {
-                               
enabledSection.html(blurconsole.browserUtils.table(configMap.enabledDef, 
blurconsole.model.tables.getEnabledTables(cluster)));
-                       }
-                       if (disabledSection.length > 0) {
-                               
disabledSection.html(blurconsole.browserUtils.table(configMap.disabledDef, 
blurconsole.model.tables.getDisabledTables(cluster)));
-                       }
-               });
-       };
-
-       registerPageEvents = function() {
+       }
+    
+    function _registerPageEvents() {
                // Tab control
                jqueryMap.$tableInfoHolder.on('click', 'ul.nav a', function(e) {
                        e.preventDefault();
@@ -184,15 +116,66 @@ blurconsole.tables = (function () {
                        });
                        return false;
                });
-       };
+       }
 
-       unregisterPageEvents = function() {
+       function _unregisterPageEvents() {
                if (jqueryMap.$tableInfoHolder) {
                        jqueryMap.$tableInfoHolder.off();
                }
-       };
+       }
+    
+    //------------------------- Event Handling and DOM Methods 
---------------------------
+       function _buildTabs() {
+               var clusters = blurconsole.model.tables.getClusters();
+               var needsTabs = clusters.length > 1;
+
+               if (needsTabs) {
+                       var tabMarkup = '<ul class="nav nav-tabs">';
+                       tabMarkup += $.map(clusters, function(cluster, idx) {
+                               return '<li class="' + (idx === 0 ? 'active' : 
'') + '"><a href="#' + cluster + '_pane" data-toggle="tab">' + cluster + ' <i 
class="glyphicon glyphicon-exclamation-sign" style="display:none" 
title="Activity detected"></i></a></li>';
+                       }).join('');
+                       tabMarkup += '</ul>';
+
+                       jqueryMap.$tableInfoHolder.html($(tabMarkup));
+               }
+
+               var paneMarkup = needsTabs ? '<div class="tab-content">' : '';
+               paneMarkup += $.map(clusters, function(cluster, idx) {
+                       return '<div id="' + cluster + '_pane" class="tab-pane' 
+ (idx === 0 ? ' active' : '') + '"><h3>Enabled Tables</h3><div 
class="enabledSection"></div><h3>Disabled Tables</h3><div 
class="disabledSection"></div></div>';
+               }).join('');
+               paneMarkup += needsTabs ? '</div>' : '';
+
+               if (needsTabs) {
+                       jqueryMap.$tableInfoHolder.append(paneMarkup);
+               } else {
+                       jqueryMap.$tableInfoHolder.html(paneMarkup);
+               }
+
+               $.each(clusters, function(idx, cluster){
+                       var clusterPane = $('#' + cluster + '_pane');
+                       
clusterPane.find('.enabledSection').html(blurconsole.browserUtils.table(configMap.enabledDef,
 blurconsole.model.tables.getEnabledTables(cluster)));
+                       
clusterPane.find('.disabledSection').html(blurconsole.browserUtils.table(configMap.disabledDef,
 blurconsole.model.tables.getDisabledTables(cluster)));
+               });
+       }
 
-       updateActivityIndicators = function() {
+       function _updateTableList() {
+               var clusters = blurconsole.model.tables.getClusters();
+
+               $.each(clusters, function(idx, cluster) {
+                       var clusterPane = $('#' + cluster + '_pane'), 
enabledSection, disabledSection;
+                       enabledSection = clusterPane.find('.enabledSection');
+                       disabledSection = clusterPane.find('.disabledSection');
+
+                       if (enabledSection.length > 0) {
+                               
enabledSection.html(blurconsole.browserUtils.table(configMap.enabledDef, 
blurconsole.model.tables.getEnabledTables(cluster)));
+                       }
+                       if (disabledSection.length > 0) {
+                               
disabledSection.html(blurconsole.browserUtils.table(configMap.disabledDef, 
blurconsole.model.tables.getDisabledTables(cluster)));
+                       }
+               });
+       }
+       
+       function _updateActivityIndicators() {
                var clusters = blurconsole.model.tables.getClusters();
 
                $.each(clusters, function(i, cluster) {
@@ -214,7 +197,26 @@ blurconsole.tables = (function () {
                                $('a[href="#' + cluster +'_pane"] i').hide();
                        }
                });
-       };
+       }
+    
+    //-------------------------- Public API ------------------------------
+    function unloadModule() {
+               $.gevent.unsubscribe(jqueryMap.$container, 'tables-updated');
+               $.gevent.unsubscribe(jqueryMap.$container, 'queries-updated');
+               _unregisterPageEvents();
+       }
+
+       function initModule($container) {
+               $container.load(configMap.view, function() {
+                       stateMap.$container = $container;
+                       _setJqueryMap();
+                       $.gevent.subscribe(jqueryMap.$container, 
'tables-updated', _updateTableList);
+                       $.gevent.subscribe(jqueryMap.$container, 
'queries-updated', _updateActivityIndicators);
+                       _waitForData();
+                       _registerPageEvents();
+               });
+               return true;
+       }
 
        return {
                initModule : initModule,

http://git-wip-us.apache.org/repos/asf/incubator-blur/blob/899e47d2/contrib/blur-console/src/main/webapp/js/blurconsole.utils.js
----------------------------------------------------------------------
diff --git a/contrib/blur-console/src/main/webapp/js/blurconsole.utils.js 
b/contrib/blur-console/src/main/webapp/js/blurconsole.utils.js
index f98939f..b2eeff8 100644
--- a/contrib/blur-console/src/main/webapp/js/blurconsole.utils.js
+++ b/contrib/blur-console/src/main/webapp/js/blurconsole.utils.js
@@ -20,9 +20,9 @@ under the License.
 /*global blurconsole:false */
 blurconsole.utils = (function(){
        'use strict';
-       var inject, unique, equals, keys, findFamilies, reject;
-
-       inject = function(collection, initial, block) {
+    
+    //-------------------------- Public API ----------------------------
+       function inject(collection, initial, block) {
                if (collection === null || collection.length === 0) {
                        return initial;
                }
@@ -33,9 +33,9 @@ blurconsole.utils = (function(){
                });
 
                return accumulator;
-       };
+       }
 
-       unique = function(collection, sort) {
+       function unique(collection, sort) {
                var uniqueList = [];
 
                $.each(collection, function(idx, item){
@@ -49,17 +49,17 @@ blurconsole.utils = (function(){
                }
 
                return uniqueList;
-       };
+       }
 
-       equals = function(obj1, obj2) {
+       function equals(obj1, obj2) {
                return JSON.stringify(obj1) === JSON.stringify(obj2);
-       };
+       }
 
-       keys = function(map) {
+       function keys(map) {
                return $.map(map, function(v, key){ return key; });
-       };
+       }
 
-       findFamilies = function(query) {
+       function findFamilies(query) {
                // Determine regex to find column families in lucene query
                var matches = query.match(/[^ \(\)\+\-]+(\w+)\.\w+:/g);
 
@@ -72,9 +72,9 @@ blurconsole.utils = (function(){
                        families.push(match.split('.')[0]);
                });
                return families;
-       };
+       }
 
-       reject = function(collection, block) {
+       function reject(collection, block) {
                var newArray = [];
                $.each(collection, function(i, item){
                        if (!block(item)) {
@@ -82,7 +82,7 @@ blurconsole.utils = (function(){
                        }
                });
                return newArray;
-       };
+       }
 
        return {
                inject: inject,

Reply via email to