diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index f5f33af85ef..528a896fb8d 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -137,6 +137,8 @@ New Features
* SOLR-7789: Introduce a ConfigSet management API (Gregory Chanan)
+* SOLR-4316: Add a collections dropdown to angular admin UI (Upayavira, Shalin Shekhar Mangar)
+
Bug Fixes
----------------------
diff --git a/solr/webapp/web/css/angular/dashboard.css b/solr/webapp/web/css/angular/dashboard.css
new file mode 100644
index 00000000000..c681bc862ae
--- /dev/null
+++ b/solr/webapp/web/css/angular/dashboard.css
@@ -0,0 +1,185 @@
+/*
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+*/
+
+#content #dashboard .block
+{
+ background-image: none;
+ width: 49%;
+}
+
+#content #dashboard .fieldlist
+{
+ float: left;
+}
+
+#content #dashboard .fieldlist dt,
+#content #dashboard .fieldlist dd
+{
+ display: block;
+ float: left;
+}
+
+#content #dashboard .fieldlist dt
+{
+ clear: left;
+ margin-right: 2%;
+ text-align: right;
+ width: 23%;
+}
+
+#content #dashboard .fieldlist dd
+{
+ width: 74%;
+}
+
+#content #dashboard .fieldlist .index_optimized
+{
+ margin-top: 10px;
+}
+
+#content #dashboard .fieldlist .ico
+{
+ background-image: url( ../../img/ico/slash.png );
+ height: 20px;
+}
+
+#content #dashboard .fieldlist .ico.ico-1
+{
+ background-image: url( ../../img/ico/tick.png );
+}
+
+#content #dashboard .fieldlist .ico span
+{
+ display: none;
+}
+
+#content #dashboard #statistics .index_optimized.value a
+{
+ display: none;
+}
+
+#content #dashboard #statistics .index_optimized.value.ico-0 a
+{
+ background-color: #f0f0f0;
+ background-image: url( ../../img/ico/hammer-screwdriver.png );
+ background-position: 5px 50%;
+ border: 1px solid #c0c0c0;
+ display: block;
+ float: left;
+ margin-left: 50px;
+ padding: 1px 5px;
+ padding-left: 26px;
+}
+
+#content #dashboard #statistics .index_has-deletions
+{
+ display: none;
+}
+
+#content #dashboard #statistics .index_has-deletions.value.ico-0
+{
+ background-image: url( ../../img/ico/tick-red.png );
+}
+
+#content #dashboard #replication
+{
+ float: left;
+}
+
+#content #dashboard #replication .is-replicating
+{
+ background-position: 99% 50%;
+ display: block;
+}
+
+#content #dashboard #replication #details table thead td span
+{
+ display: none;
+}
+
+#content #dashboard #instance
+{
+ float: right;
+}
+
+#content #dashboard #instance .dir_impl
+{
+ margin-top: 10px;
+}
+
+#content #dashboard #admin-extra
+{
+ float: left;
+}
+
+#content #dashboard #healthcheck
+{
+ float: right;
+}
+
+#content #dashboard #healthcheck .ico
+{
+ background-image: url( ../../img/ico/slash.png );
+ height: 20px;
+ padding-left: 20px;
+ width: 60%;
+}
+
+#content #dashboard #healthcheck .ico.ico-1
+{
+ background-image: url( ../../img/ico/tick.png );
+}
+
+#content #dashboard #system h2 { background-image: url( ../../img/ico/server.png ); }
+#content #dashboard #statistics h2 { background-image: url( ../../img/ico/chart.png ); }
+#content #dashboard #replication h2 { background-image: url( ../../img/ico/node.png ); }
+#content #dashboard #replication.master h2 { background-image: url( ../../img/ico/node-master.png ); }
+#content #dashboard #replication.slave h2 { background-image: url( ../../img/ico/node-slave.png ); }
+#content #dashboard #instance h2 { background-image: url( ../../img/ico/server.png ); }
+#content #dashboard #admin-extra h2 { background-image: url( ../../img/ico/plus-button.png ); }
+#content #dashboard #collection h2 { background-image: url( ../../img/ico/book-open-text.png ); }
+#content #dashboard #shards h2 { background-image: url( ../../img/ico/documents-stack.png ); }
+
+#content #dashboard #shards { margin-left: 20px;}
+
+#dashboard #shards .shard h3.shard-title {
+ display: block;
+ background-color: #c8c8c8;
+ font-weight: bold;
+ padding: 3px;
+ padding-left: 30px;
+ margin-left: 20px;
+ margin-top: 20px;
+ background-image: url( ../../img/ico/document-text.png );
+ background-position-x: 10px;
+ background-position-y: 3px;
+}
+
+#dashboard #shards .shard .shard-detail {
+ margin-bottom: 25px;
+ margin-top: 7px;
+}
+
+#dashboard #shards .shard .replica {
+ background-color: #e4e4e4;
+}
+
+#dashboard #shards .shard .replica.odd {
+ background-color: #fff;
+}
\ No newline at end of file
diff --git a/solr/webapp/web/css/angular/menu.css b/solr/webapp/web/css/angular/menu.css
index 3f5e5310b03..d72c4357410 100644
--- a/solr/webapp/web/css/angular/menu.css
+++ b/solr/webapp/web/css/angular/menu.css
@@ -43,29 +43,33 @@ limitations under the License.
text-overflow: ellipsis;
}
-#core-selector
+#core-selector,#collection-selector
{
margin-top: 20px;
padding-right: 10px;
}
-#core-selector a
+#core-selector a,
+#collection-selector a
{
padding: 0;
padding-left: 8px;
}
-#core-selector select
+#core-selector select,
+#collection-selector select
{
width: 100%;
}
-#core-selector #has-no-cores a
+#core-selector #has-no-cores a,
+#collection-selector #has-no-collections a
{
background-image: url( ../../img/ico/database--plus.png );
}
-#core-selector #has-no-cores span
+#core-selector #has-no-cores span,
+#collection-selector #has-no-collections span
{
color: #c0c0c0;
display: block;
@@ -172,34 +176,34 @@ limitations under the License.
{
}
-#core-menu p
+.sub-menu p
{
border-top: 1px solid #f0f0f0;
}
-#core-menu li:first-child p
+.sub-menu li:first-child p
{
border-top: 0;
}
-#core-menu p a
+.sub-menu p a
{
background-image: url( ../../img/ico/status-offline.png );
}
-#core-menu .active p a
+.sub-menu .active p a
{
background-image: url( ../../img/ico/box.png );
}
-#core-menu ul,
+.sub-menu ul,
#menu ul
{
padding-top: 5px;
padding-bottom: 10px;
}
-#core-menu .active ul,
+.sub-menu .active ul,
#menu .active ul
{
display: block;
@@ -211,6 +215,7 @@ limitations under the License.
}
#core-menu ul li a,
+#collection-menu ul li a,
#menu ul li a
{
background-position: 7px 50%;
@@ -220,20 +225,20 @@ limitations under the License.
padding-left: 26px;
}
-#core-menu ul li:last-child a,
+.sub-menu ul li:last-child a,
#menu ul li:last-child a
{
border-bottom: 0;
}
-#core-menu ul li a:hover,
+.sub-menu ul li a:hover,
#menu ul li a:hover
{
background-color: #f0f0f0;
color: #333;
}
-#core-menu ul li.active a,
+.sub-menu ul li.active a,
#menu ul li.active a
{
background-color: #d0d0d0;
@@ -258,7 +263,7 @@ limitations under the License.
#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 ); }
-#core-menu .ping.error a
+.sub-menu .ping.error a
{
background-color: #ffcccc;
@@ -267,19 +272,19 @@ limitations under the License.
cursor: help;
}
-#core-menu .overview a { background-image: url( ../../img/ico/home.png ); }
-#core-menu .query a { background-image: url( ../../img/ico/magnifier.png ); }
-#core-menu .analysis a { background-image: url( ../../img/ico/funnel.png ); }
-#core-menu .documents a { background-image: url( ../../img/ico/documents-stack.png ); }
-#core-menu .files a { background-image: url( ../../img/ico/folder.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 ); }
-#core-menu .segments a { background-image: url( ../../img/ico/construction.png ); }
+.sub-menu .overview a { background-image: url( ../../img/ico/home.png ); }
+.sub-menu .query a { background-image: url( ../../img/ico/magnifier.png ); }
+.sub-menu .analysis a { background-image: url( ../../img/ico/funnel.png ); }
+.sub-menu .documents a { background-image: url( ../../img/ico/documents-stack.png ); }
+.sub-menu .files a { background-image: url( ../../img/ico/folder.png ); }
+.sub-menu .schema-browser a { background-image: url( ../../img/ico/book-open-text.png ); }
+.sub-menu .replication a { background-image: url( ../../img/ico/node.png ); }
+.sub-menu .distribution a { background-image: url( ../../img/ico/node-select.png ); }
+.sub-menu .ping a { background-image: url( ../../img/ico/system-monitor.png ); }
+.sub-menu .logging a { background-image: url( ../../img/ico/inbox-document-text.png ); }
+.sub-menu .plugins a { background-image: url( ../../img/ico/block.png ); }
+.sub-menu .dataimport a { background-image: url( ../../img/ico/document-import.png ); }
+.sub-menu .segments a { background-image: url( ../../img/ico/construction.png ); }
#content #navigation
diff --git a/solr/webapp/web/index.html b/solr/webapp/web/index.html
index 2e210a4884b..7a44b56a634 100644
--- a/solr/webapp/web/index.html
+++ b/solr/webapp/web/index.html
@@ -27,7 +27,7 @@ limitations under the License.
-
+
@@ -64,6 +64,7 @@ limitations under the License.
+
@@ -155,11 +156,36 @@ limitations under the License.
+
+
-