diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 88e801600e2..45e099a3a4a 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -112,6 +112,9 @@ Optimizations
* SOLR-4306: Utilize indexInfo=false when gathering core names in UI
(steffkes)
+* SOLR-4284: Admin UI - make core list scrollable separate from the rest of
+ the UI (steffkes)
+
Other Changes
----------------------
diff --git a/solr/webapp/web/admin.html b/solr/webapp/web/admin.html
index 3634baf6470..5a073e09fa9 100644
--- a/solr/webapp/web/admin.html
+++ b/solr/webapp/web/admin.html
@@ -111,8 +111,12 @@ limitations under the License.
-
-
+
+
+
+
+
+
diff --git a/solr/webapp/web/css/styles/common.css b/solr/webapp/web/css/styles/common.css
index 47ee571b806..960834e8912 100644
--- a/solr/webapp/web/css/styles/common.css
+++ b/solr/webapp/web/css/styles/common.css
@@ -172,7 +172,7 @@ ul
#header
{
padding-bottom: 10px;
- position: absolute;
+ position: fixed;
z-index: 42;
}
@@ -340,12 +340,6 @@ ul
width: 100%;
}
-#content > pre
-{
- max-height: 600px;
- overflow: auto;
-}
-
#content .block
{
margin-bottom: 10px;
diff --git a/solr/webapp/web/css/styles/menu.css b/solr/webapp/web/css/styles/menu.css
index f77c54bf366..dfa54b296fe 100644
--- a/solr/webapp/web/css/styles/menu.css
+++ b/solr/webapp/web/css/styles/menu.css
@@ -1,13 +1,13 @@
#menu-wrapper
{
- position: absolute;
- top: 90px;
+ position: fixed;
+ top: 120px;
width: 150px;
}
.has-environment #menu-wrapper
{
- top: 130px;
+ top: 160px;
}
#menu-wrapper a
@@ -18,6 +18,23 @@
text-overflow: ellipsis;
}
+#core-selector
+{
+ margin-top: 20px;
+ padding-right: 10px;
+}
+
+#core-selector a
+{
+ padding: 0;
+ padding-left: 8px;
+}
+
+#core-selector select
+{
+ width: 100%;
+}
+
#menu-wrapper .active p
{
background-color: #fafafa;
@@ -121,32 +138,27 @@
display: none;
}
-#menu-selector
-{
- margin-top: 20px;
-}
-
-#menu-selector p
+#core-menu p
{
border-top: 1px solid #f0f0f0;
}
-#menu-selector li:first-child p
+#core-menu li:first-child p
{
border-top: 0;
}
-#menu-selector p a
+#core-menu p a
{
background-image: url( ../../img/ico/status-offline.png );
}
-#menu-selector .active p a
+#core-menu .active p a
{
background-image: url( ../../img/ico/box.png );
}
-#menu-selector ul,
+#core-menu ul,
#menu ul
{
display: none;
@@ -154,7 +166,7 @@
padding-bottom: 10px;
}
-#menu-selector .active ul,
+#core-menu .active ul,
#menu .active ul
{
display: block;
@@ -165,7 +177,7 @@
border-bottom: 0;
}
-#menu-selector ul li a,
+#core-menu ul li a,
#menu ul li a
{
background-position: 7px 50%;
@@ -175,20 +187,20 @@
padding-left: 26px;
}
-#menu-selector ul li:last-child a,
+#core-menu ul li:last-child a,
#menu ul li:last-child a
{
border-bottom: 0;
}
-#menu-selector ul li a:hover,
+#core-menu ul li a:hover,
#menu ul li a:hover
{
background-color: #f0f0f0;
color: #333;
}
-#menu-selector ul li.active a,
+#core-menu ul li.active a,
#menu ul li.active a
{
background-color: #d0d0d0;
@@ -213,7 +225,7 @@
#menu #cloud.global .rgraph a { background-image: url( ../../img/ico/asterisk.png ); }
#menu #cloud.global .dump a { background-image: url( ../../img/ico/download-cloud.png ); }
-#menu-selector .ping.error a
+#core-menu .ping.error a
{
background-color: #ffcccc;
@@ -222,17 +234,18 @@
cursor: help;
}
-#menu-selector .query a { background-image: url( ../../img/ico/magnifier.png ); }
-#menu-selector .schema a { background-image: url( ../../img/ico/table.png ); }
-#menu-selector .config a { background-image: url( ../../img/ico/gear.png ); }
-#menu-selector .analysis a { background-image: url( ../../img/ico/funnel.png ); }
-#menu-selector .schema-browser a { background-image: url( ../../img/ico/book-open-text.png ); }
-#menu-selector .replication a { background-image: url( ../../img/ico/node.png ); }
-#menu-selector .distribution a { background-image: url( ../../img/ico/node-select.png ); }
-#menu-selector .ping a { background-image: url( ../../img/ico/system-monitor.png ); }
-#menu-selector .logging a { background-image: url( ../../img/ico/inbox-document-text.png ); }
-#menu-selector .plugins a { background-image: url( ../../img/ico/block.png ); }
-#menu-selector .dataimport a { background-image: url( ../../img/ico/document-import.png ); }
+#core-menu .overview a { background-image: url( ../../img/ico/home.png ); }
+#core-menu .query a { background-image: url( ../../img/ico/magnifier.png ); }
+#core-menu .schema a { background-image: url( ../../img/ico/table.png ); }
+#core-menu .config a { background-image: url( ../../img/ico/gear.png ); }
+#core-menu .analysis a { background-image: url( ../../img/ico/funnel.png ); }
+#core-menu .schema-browser a { background-image: url( ../../img/ico/book-open-text.png ); }
+#core-menu .replication a { background-image: url( ../../img/ico/node.png ); }
+#core-menu .distribution a { background-image: url( ../../img/ico/node-select.png ); }
+#core-menu .ping a { background-image: url( ../../img/ico/system-monitor.png ); }
+#core-menu .logging a { background-image: url( ../../img/ico/inbox-document-text.png ); }
+#core-menu .plugins a { background-image: url( ../../img/ico/block.png ); }
+#core-menu .dataimport a { background-image: url( ../../img/ico/document-import.png ); }
#content #navigation
diff --git a/solr/webapp/web/img/ico/home.png b/solr/webapp/web/img/ico/home.png
new file mode 100755
index 00000000000..622a2b736d1
Binary files /dev/null and b/solr/webapp/web/img/ico/home.png differ
diff --git a/solr/webapp/web/js/scripts/app.js b/solr/webapp/web/js/scripts/app.js
index adbabadb366..7c2ad094527 100644
--- a/solr/webapp/web/js/scripts/app.js
+++ b/solr/webapp/web/js/scripts/app.js
@@ -92,20 +92,26 @@ var sammy = $.sammy
$( 'li.active', menu_wrapper )
.removeClass( 'active' );
- if( this.params.splat )
+ // global dashboard doesn't have params.splat
+ if( !this.params.splat )
{
- var selector = '~' === this.params.splat[0][0]
- ? '#' + this.params.splat[0].replace( /^~/, '' ) + '.global'
- : '#menu-selector #' + this.params.splat[0].replace( /\./g, '__' );
+ this.params.splat = [ '~index' ];
+ }
- var active_element = $( selector, menu_wrapper );
-
- if( 0 === active_element.size() )
- {
- this.app.error( 'There exists no core with name "' + this.params.splat[0] + '"' );
- return false;
- }
+ var selector = '~' === this.params.splat[0][0]
+ ? '#' + this.params.splat[0].replace( /^~/, '' ) + '.global'
+ : '#core-selector #' + this.params.splat[0].replace( /\./g, '__' );
+ var active_element = $( selector, menu_wrapper );
+
+ if( 0 === active_element.size() )
+ {
+ this.app.error( 'There exists no core with name "' + this.params.splat[0] + '"' );
+ return false;
+ }
+
+ if( active_element.hasClass( 'global' ) )
+ {
active_element
.addClass( 'active' );
@@ -115,10 +121,28 @@ var sammy = $.sammy
.addClass( 'active' );
}
- if( !active_element.hasClass( 'global' ) )
+ $( '#core-selector option[selected]' )
+ .removeAttr( 'selected' )
+ .trigger( 'liszt:updated' );
+
+ $( '#core-selector .chzn-container > a' )
+ .addClass( 'chzn-default' );
+ }
+ else
+ {
+ active_element
+ .attr( 'selected', 'selected' )
+ .trigger( 'liszt:updated' );
+
+ if( !this.params.splat[1] )
{
- this.active_core = active_element;
+ this.params.splat[1] = 'overview';
}
+
+ $( '#core-menu .' + this.params.splat[1] )
+ .addClass( 'active' );
+
+ this.active_core = active_element;
}
}
);
@@ -143,9 +167,10 @@ var solr_admin = function( app_config )
plugin_data = null,
- this.menu_element = $( '#menu-selector' );
- this.config = config;
+ this.menu_element = $( '#core-selector select' );
+ this.core_menu = $( '#core-menu ul' );
+ this.config = config;
this.timeout = null;
this.core_regex_base = '^#\\/([\\w\\d-\\.]+)';
@@ -197,6 +222,9 @@ var solr_admin = function( app_config )
that.menu_element
.empty();
+ var core_list = [];
+ core_list.push( '' );
+
var core_count = 0;
for( var core_name in that.cores_data )
{
@@ -214,32 +242,24 @@ var solr_admin = function( app_config )
classes.push( 'default' );
}
- var core_tpl = '