Fixes for SOLR-3162 and SOLR-3181, continuing improvements to the new Solr admin UI.

git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1298010 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Erick Erickson 2012-03-07 16:30:20 +00:00
parent 6d372fc611
commit 82f53daeb4
51 changed files with 7915 additions and 9587 deletions

View File

@ -642,6 +642,7 @@ public class ReplicationHandler extends RequestHandlerBase implements SolrCoreAw
addVal(slave, SnapPuller.REPLICATION_FAILED_AT, props, Date.class);
addVal(slave, SnapPuller.PREVIOUS_CYCLE_TIME_TAKEN, props, Long.class);
slave.add("currentDate", new Date().toString());
slave.add("isPollingDisabled", String.valueOf(isPollingDisabled()));
boolean isReplicating = isReplicating();
slave.add("isReplicating", String.valueOf(isReplicating));

View File

@ -17,11 +17,11 @@
package org.apache.solr.servlet;
import org.apache.lucene.util.BytesRef;
import org.apache.noggit.CharArr;
import org.apache.noggit.JSONWriter;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.CoreContainer;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.data.Stat;
@ -34,7 +34,6 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Date;
import java.util.List;
@ -72,11 +71,16 @@ public final class ZookeeperInfoServlet extends HttpServlet {
String detailS = request.getParameter("detail");
boolean detail = detailS != null && detailS.equals("true");
String dumpS = request.getParameter("dump");
boolean dump = dumpS != null && dumpS.equals("true");
PrintWriter out = response.getWriter();
ZKPrinter printer = new ZKPrinter(response, out, cores.getZkController(), addr);
printer.detail = detail;
printer.dump = dump;
try {
printer.print(path);
@ -103,6 +107,7 @@ public final class ZookeeperInfoServlet extends HttpServlet {
boolean indent = true;
boolean fullpath = FULLPATH_DEFAULT;
boolean detail = false;
boolean dump = false;
String addr; // the address passed to us
String keeperAddr; // the address we're connected to
@ -260,6 +265,7 @@ public final class ZookeeperInfoServlet extends HttpServlet {
Stat stat = new Stat();
try {
// Trickily, the call to zkClient.getData fills in the stat variable
byte[] data = zkClient.getData(path, null, stat, true);
if (stat.getEphemeralOwner() != 0) {
@ -267,6 +273,11 @@ public final class ZookeeperInfoServlet extends HttpServlet {
writeKeyValue(json, "version", stat.getVersion(), false);
}
if (dump) {
json.writeValueSeparator();
printZnode(json, path);
}
/*
if (stat.getNumChildren() != 0)
{
@ -275,32 +286,12 @@ public final class ZookeeperInfoServlet extends HttpServlet {
}
*/
//if (data != null)
if (stat.getDataLength() != 0) {
String str;
try {
str = new String(data, "UTF-8");
str = str.replaceAll("\\\"", "\\\\\"");
//writeKeyValue(json, "content", str, false );
} catch (UnsupportedEncodingException e) {
// not UTF8
StringBuilder sb = new StringBuilder("BIN(");
sb.append("len=" + data.length);
sb.append("hex=");
int limit = Math.min(data.length, maxData / 2);
for (int i = 0; i < limit; i++) {
byte b = data[i];
sb.append(StrUtils.HEX_DIGITS[(b >> 4) & 0xf]);
sb.append(StrUtils.HEX_DIGITS[b & 0xf]);
}
if (limit != data.length) {
sb.append("...");
}
sb.append(")");
str = sb.toString();
//?? writeKeyValue(json, "content", str, false );
}
//if (stat.getDataLength() != 0)
if (data != null) {
String str = new BytesRef(data).utf8ToString();
//?? writeKeyValue(json, "content", str, false );
// Does nothing now, but on the assumption this will be used later we'll leave it in. If it comes out
// the catches below need to be restructured.
}
} catch (IllegalArgumentException e) {
// path doesn't exist (must have been removed)
@ -375,6 +366,7 @@ public final class ZookeeperInfoServlet extends HttpServlet {
boolean printZnode(JSONWriter json, String path) throws IOException {
try {
Stat stat = new Stat();
// Trickily, the call to zkClient.getData fills in the stat variable
byte[] data = zkClient.getData(path, null, stat, true);
json.writeString("znode");
@ -400,28 +392,8 @@ public final class ZookeeperInfoServlet extends HttpServlet {
writeKeyValue(json, "pzxid", stat.getPzxid(), false);
json.endObject();
if (stat.getDataLength() != 0) {
String str;
try {
str = new String(data, "UTF-8");
} catch (UnsupportedEncodingException e) {
// The results are unspecified
// when the bytes are not properly encoded.
// not UTF8
StringBuilder sb = new StringBuilder(data.length * 2);
for (int i = 0; i < data.length; i++) {
byte b = data[i];
sb.append(StrUtils.HEX_DIGITS[(b >> 4) & 0xf]);
sb.append(StrUtils.HEX_DIGITS[b & 0xf]);
if ((i & 0x3f) == 0x3f) {
sb.append("\n");
}
}
str = sb.toString();
}
str = str.replaceAll("\\\"", "\\\\\"");
writeKeyValue(json, "data", str, false);
if (data != null) {
writeKeyValue(json, "data", new BytesRef(data).utf8ToString(), false);
}
json.endObject();
} catch (KeeperException e) {

View File

@ -19,104 +19,101 @@ limitations under the License.
<head>
<title>solr-admin</title>
<title>Solr Admin</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
<link rel="icon" type="image/ico" href="img/favicon.ico">
<link rel="icon" type="image/ico" href="img/favicon.ico">
<link rel="stylesheet" type="text/css" href="css/styles/common.css">
<link rel="stylesheet" type="text/css" href="css/styles/analysis.css">
<link rel="stylesheet" type="text/css" href="css/styles/cloud.css">
<link rel="stylesheet" type="text/css" href="css/styles/cores.css">
<link rel="stylesheet" type="text/css" href="css/styles/dashboard.css">
<link rel="stylesheet" type="text/css" href="css/styles/dataimport.css">
<link rel="stylesheet" type="text/css" href="css/styles/index.css">
<link rel="stylesheet" type="text/css" href="css/styles/java-properties.css">
<link rel="stylesheet" type="text/css" href="css/styles/logging.css">
<link rel="stylesheet" type="text/css" href="css/styles/menu.css">
<link rel="stylesheet" type="text/css" href="css/styles/plugins.css">
<link rel="stylesheet" type="text/css" href="css/styles/query.css">
<link rel="stylesheet" type="text/css" href="css/styles/replication.css">
<link rel="stylesheet" type="text/css" href="css/styles/schema-browser.css">
<link rel="stylesheet" type="text/css" href="css/styles/threads.css">
<script type="text/javascript">
<script type="text/javascript">
var app_config = {};
var app_config = {};
app_config.solr_path = '${contextPath}';
app_config.core_admin_path = '${adminPath}';
app_config.zookeeper_path = 'zookeeper';
app_config.schema_path = '/admin/file?file=schema.xml&contentType=text/xml;charset=utf-8';
app_config.config_path = '/admin/file?file=solrconfig.xml&contentType=text/xml;charset=utf-8';
app_config.solr_path = '${contextPath}';
app_config.core_admin_path = '${adminPath}';
app_config.schema_path = '/admin/file?file=schema.xml&contentType=text/xml;charset=utf-8';
app_config.config_path = '/admin/file?file=solrconfig.xml&contentType=text/xml;charset=utf-8';
</script>
</script>
</head>
<body>
<div id="wrapper">
<div id="wrapper">
<div id="header">
<div id="header">
<a href="./" id="solr"><span>Apache SOLR</span></a>
<a href="./" id="solr"><span>Apache SOLR</span></a>
<div id="wip-notice">
<p>This interface is work in progress.</p>
<p>Please report any <a href="https://issues.apache.org/jira/browse/SOLR-2667">Bugs/Requests/Suggestions: <span>SOLR-2667</span></a></p>
</div>
<div id="wip-notice">
<p>This interface is work in progress.</p>
<p><a href="https://issues.apache.org/jira/browse/SOLR-3162">Please report any Bugs/Requests/Suggestions: <span>SOLR-3162</span></a></p>
</div>
<p id="environment">&nbsp;</p>
<p id="environment">&nbsp;</p>
</div>
</div>
<div id="main" class="clearfix">
<div id="main" class="clearfix">
<div id="content-wrapper">
<div id="content">
&nbsp;
</div>
</div>
<div id="menu-wrapper">
<div id="menu">
<ul>
<li id="index" class="global">
<p><a href="#/">Dashboard</a></p>
</li>
<li id="logging" class="global">
<p><a href="#/logging">Logging</a></p>
</li>
<li id="cloud" class="global optional">
<p><a href="#/cloud">Cloud</a></p>
</li>
<li id="cores" class="global optional">
<p><a href="#/cores">Core Admin</a></p>
</li>
<li id="java-properties" class="global">
<p><a href="#/java-properties">Java Properties</a>
</li>
<li id="threads" class="global">
<p><a href="#/threads">Thread Dump</a></p>
</li>
</ul>
</div>
</div>
<div id="meta">
<ul>
<li class="documentation"><a href="http://lucene.apache.org/solr/"><span>Documentation</span></a></li>
<li class="issues"><a href="http://issues.apache.org/jira/browse/SOLR"><span>Issue Tracker</span></a></li>
<li class="irc"><a href="http://webchat.freenode.net/?channels=#solr"><span>IRC Channel</span></a></li>
<li class="mailinglist"><a href="http://wiki.apache.org/solr/UsingMailingLists"><span>Community forum</span></a></li>
<li class="wiki-query-syntax"><a href="http://wiki.apache.org/solr/SolrQuerySyntax"><span>Solr Query Syntax</span></a></li>
</ul>
</div>
<div id="content-wrapper">
<div id="content">
&nbsp;
</div>
</div>
<div id="menu-wrapper">
<div id="menu">
<ul>
<li id="index" class="global"><p><a href="#/">Dashboard</a></p></li>
<li id="logging" class="global"><p><a href="#/logging">Logging</a></p></li>
<li id="cloud" class="global optional"><p><a href="#/cloud">Cloud</a></p></li>
<li id="cores" class="global optional"><p><a href="#/cores">Core Admin</a></p></li>
<li id="java-properties" class="global"><p><a href="#/java-properties">Java Properties</a></li>
<li id="threads" class="global"><p><a href="#/threads">Thread Dump</a></p></li>
</ul>
</div>
</div>
<div id="meta">
<ul>
<li class="documentation"><a href="http://lucene.apache.org/solr/"><span>Documentation</span></a></li>
<li class="issues"><a href="http://issues.apache.org/jira/browse/SOLR"><span>Issue Tracker</span></a></li>
<li class="irc"><a href="http://webchat.freenode.net/?channels=#solr"><span>IRC Channel</span></a></li>
<li class="mailinglist"><a href="http://wiki.apache.org/solr/UsingMailingLists"><span>Community forum</span></a></li>
<li class="wiki-query-syntax"><a href="http://wiki.apache.org/solr/SolrQuerySyntax"><span>Solr Query Syntax</span></a></li>
</ul>
</div>
</div>
<script src="js/require.js" data-main="js/main"></script>
</div>
<script src="js/require.js" data-main="js/main"></script>
</body>
</html>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,263 +1,269 @@
#content #analysis-holder
{
background-image: url( ../../img/div.gif );
background-position: 50% 0;
background-repeat: repeat-y;
background-image: url( ../../img/div.gif );
background-position: 50% 0;
background-repeat: repeat-y;
}
#content #analysis #field-analysis
{
margin-bottom: 0;
margin-bottom: 0;
}
#content #analysis #field-analysis .content
{
padding-bottom: 0;
padding-bottom: 0;
}
#content #analysis .settings-holder
{
clear: both;
padding-top: 15px;
clear: both;
padding-top: 15px;
}
#content #analysis .settings
{
background-color: #fff;
border-top: 1px solid #fafafa;
border-bottom: 1px solid #fafafa;
padding-top: 10px;
padding-bottom: 10px;
background-color: #fff;
border-top: 1px solid #fafafa;
border-bottom: 1px solid #fafafa;
padding-top: 10px;
padding-bottom: 10px;
}
#content #analysis .settings select.loader
{
background-position: 3px 50%;
padding-left: 21px;
background-position: 3px 50%;
padding-left: 21px;
}
#content #analysis .settings select optgroup
{
font-style: normal;
padding: 5px;
font-style: normal;
padding: 5px;
}
#content #analysis .settings select option
{
padding-left: 10px;
padding-left: 10px;
}
#content #analysis .settings div
{
float: right;
width: 47%;
float: right;
width: 47%;
}
#content #analysis .settings button
{
float: right;
float: right;
}
#content #analysis .settings button.loader
{
background-position: 2px 50%;
padding-left: 21px;
background-position: 2px 50%;
padding-left: 21px;
}
#content #analysis .settings .verbose_output
{
float: left;
width: auto;
float: left;
width: auto;
}
#content #analysis .settings .verbose_output a
{
background-image: url( ../../img/ico/ui-check-box-uncheck.png );
background-position: 0 50%;
color: #999;
display: block;
padding-left: 21px;
background-image: url( ../../img/ico/ui-check-box-uncheck.png );
background-position: 0 50%;
color: #999;
display: block;
padding-left: 21px;
}
#content #analysis .settings .verbose_output.active a
{
background-image: url( ../../img/ico/ui-check-box.png );
background-image: url( ../../img/ico/ui-check-box.png );
}
#content #analysis .index label,
#content #analysis .query label
{
display: block;
display: block;
}
#content #analysis .index textarea,
#content #analysis .query textarea
{
display: block;
width: 100%;
display: block;
width: 100%;
}
#content #analysis .index
{
float: left;
margin-right: 0.5%;
min-width: 47%;
max-width: 99%;
float: left;
margin-right: 0.5%;
min-width: 47%;
max-width: 99%;
}
#content #analysis .query
{
float: right;
margin-left: 0.5%;
min-width: 47%;
max-width: 99%;
float: right;
margin-left: 0.5%;
min-width: 47%;
max-width: 99%;
}
#content #analysis .analysis-error
{
background-color: #f00;
background-image: url( ../../img/ico/construction.png );
background-position: 10px 50%;
color: #fff;
display: none;
font-weight: bold;
margin-bottom: 20px;
padding: 10px;
padding-left: 35px;
background-color: #f00;
background-image: url( ../../img/ico/construction.png );
background-position: 10px 50%;
color: #fff;
display: none;
font-weight: bold;
margin-bottom: 20px;
padding: 10px;
padding-left: 35px;
}
#content #analysis .analysis-error .head a
{
color: #fff;
cursor: auto;
}
#content #analysis #analysis-result
{
overflow: auto;
overflow: auto;
}
#content #analysis #analysis-result .index,
#content #analysis #analysis-result .query
{
background-color: #fff;
padding-top: 20px;
background-color: #fff;
padding-top: 20px;
}
#content #analysis #analysis-result table
{
border-collapse: collapse;
border-collapse: collapse;
}
#content #analysis #analysis-result td
{
vertical-align: top;
white-space: nowrap;
vertical-align: top;
white-space: nowrap;
}
#content #analysis #analysis-result td.part.analyzer div,
#content #analysis #analysis-result td.part.spacer .holder,
#content #analysis #analysis-result td td td
{
padding-top: 1px;
padding-bottom: 1px;
padding-top: 1px;
padding-bottom: 1px;
}
#content #analysis #analysis-result td.legend,
#content #analysis #analysis-result td.data tr.verbose_output
{
display: none;
display: none;
}
#content #analysis #analysis-result.verbose_output td.legend
{
display: table-cell;
display: table-cell;
}
#content #analysis #analysis-result.verbose_output td.data tr.verbose_output
{
display: table-row;
display: table-row;
}
#content #analysis #analysis-result .match
{
background-color: #e9eff7;
background-color: #f2f2ff;
background-color: #e9eff7;
background-color: #f2f2ff;
}
#content #analysis #analysis-result td.part
{
padding-bottom: 10px;
padding-bottom: 10px;
}
#content #analysis #analysis-result td.part.analyzer div
{
border-right: 1px solid #f0f0f0;
padding-right: 10px;
border-right: 1px solid #f0f0f0;
padding-right: 10px;
}
#content #analysis #analysis-result td.part.analyzer abbr
{
color: #c0c0c0;
color: #c0c0c0;
}
#content #analysis #analysis-result td.part.legend .holder,
#content #analysis #analysis-result td.part.data .holder
{
padding-left: 10px;
padding-right: 10px;
border-right: 1px solid #c0c0c0;
padding-left: 10px;
padding-right: 10px;
border-right: 1px solid #c0c0c0;
}
#content #analysis #analysis-result td.part.legend td
{
color: #c0c0c0;
color: #c0c0c0;
}
#content #analysis #analysis-result td.part.legend .holder
{
border-right-color: #f0f0f0;
border-right-color: #f0f0f0;
}
#content #analysis #analysis-result td.part.data:last-child .holder
{
padding-right: 0;
border-right: 0;
padding-right: 0;
border-right: 0;
}
#content #analysis #analysis-result td.details
{
padding-left: 10px;
padding-right: 10px;
border-left: 1px solid #f0f0f0;
border-right: 1px solid #f0f0f0;
padding-left: 10px;
padding-right: 10px;
border-left: 1px solid #f0f0f0;
border-right: 1px solid #f0f0f0;
}
#content #analysis #analysis-result td.details:first-child
{
padding-left: 0;
border-left: 0;
padding-left: 0;
border-left: 0;
}
#content #analysis #analysis-result td.details:last-child
{
padding-right: 0;
border-right: 0;
padding-right: 0;
border-right: 0;
}
#content #analysis #analysis-result td.details tr.empty td
{
color: #f0f0f0;
color: #f0f0f0;
}
#content #analysis #analysis-result td.details tr.raw_bytes td
{
letter-spacing: -1px;
letter-spacing: -1px;
}
#content #analysis #analysis-result .part table table td
{
border-top: 1px solid #f0f0f0;
border-top: 1px solid #f0f0f0;
}
#content #analysis #analysis-result .part table table tr:first-child td
{
border-top: 0;
border-top: 0;
}
#content #analysis #field-analysis h2 { background-image: url( ../../img/ico/receipt.png ); }
#content #analysis .analysis-result h2 { background-image: url( ../../img/ico/receipt-invoice.png ); }
#content #analysis .analysis-result h2 { background-image: url( ../../img/ico/receipt-invoice.png ); }

View File

@ -1,100 +1,208 @@
#content #cloud .loader
{
background-position: 0 50%;
padding-left: 21px;
background-position: 0 50%;
padding-left: 21px;
}
#content #cloud #error
{
background-color: #f00;
background-image: url( ../../img/ico/construction.png );
background-position: 10px 50%;
color: #fff;
font-weight: bold;
margin-bottom: 20px;
padding: 10px;
padding-left: 35px;
background-color: #f00;
background-image: url( ../../img/ico/construction.png );
background-position: 10px 50%;
color: #fff;
font-weight: bold;
margin-bottom: 20px;
padding: 10px;
padding-left: 35px;
}
#content #cloud h2 { background-image: url( ../../img/ico/sitemap.png ); }
#content #cloud
{
position: relative;
}
#content #cloud a.debug
{
background-color: #c0c0c0;
background-image: url( ../../img/ico/exclamation-button.png );
background-position: 5px 50%;
border-radius: 5px;
display: block;
padding: 2px 5px;
padding-left: 26px;
position: absolute;
left: 150px;
top: 3px;
}
#content #cloud a.debug:hover
{
background-color: #fff;
color: #00f;
}
#content #cloud #debug
{
background-color: #fff;
box-shadow: 5px 5px 10px #c0c0c0;
-moz-box-shadow: 5px 5px 10px #c0c0c0;
-webkit-box-shadow: 5px 5px 10px #c0c0c0;
display: none;
padding: 20px;
position: absolute;
left: 50px;
top: 50px;
}
#content #cloud #debug ul
{
margin-bottom: 5px;
}
#content #cloud #debug ul a
{
background-position: 4px 50%;
display: block;
padding: 2px 4px;
padding-left: 25px;
}
#content #cloud #debug ul a:hover,
#content #cloud #debug ul a.hover
{
background-color: #f0f0f0;
}
#content #cloud #debug .clipboard
{
float: left;
position: relative;
}
#content #cloud #debug .clipboard a
{
background-image: url( ../../img/ico/clipboard-paste.png );
z-index: 98;
}
#content #cloud #debug .clipboard a:hover,
#content #cloud #debug .clipboard a.hover,
#content #cloud #debug .clipboard.copied a
{
background-image: url( ../../img/ico/clipboard-paste-document-text.png );
}
#content #cloud #debug .close
{
float: right;
}
#content #cloud #debug .close a
{
background-image: url( ../../img/ico/cross-0.png );
padding-left: 21px;
}
#content #cloud #debug .close a:hover
{
background-image: url( ../../img/ico/cross-1.png );
}
#content #cloud #debug .debug
{
border: 1px solid #f0f0f0;
max-height: 400px;
overflow: auto;
padding: 5px;
width: 500px;
}
#content #cloud #debug .debug .loader
{
background-position: 5px 50%;
display: block;
padding: 10px 26px;
}
#content #cloud .content
{
padding-left: 0;
padding-right: 0;
padding-left: 0;
padding-right: 0;
}
#content #cloud .content.show
{
background-image: url( ../../img/div.gif );
background-repeat: repeat-y;
background-position: 31% 0;
background-image: url( ../../img/div.gif );
background-repeat: repeat-y;
background-position: 31% 0;
}
#content #cloud #tree
{
float: left;
width: 30%;
float: left;
width: 30%;
}
#content #cloud .show #tree
{
overflow: hidden;
overflow: hidden;
}
#content #cloud #file-content
{
display: none;
float: right;
position: relative;
width: 68%;
min-height: 100px
display: none;
float: right;
position: relative;
width: 68%;
min-height: 100px
}
#content #cloud .show #file-content
{
display: block;
display: block;
}
#content #cloud #file-content .close
{
background-image: url( ../../img/ico/cross-0.png );
background-position: 50% 50%;
display: block;
height: 20px;
position: absolute;
right: 0;
top: 0;
width: 20px;
background-image: url( ../../img/ico/cross-0.png );
background-position: 50% 50%;
display: block;
height: 20px;
position: absolute;
right: 0;
top: 0;
width: 20px;
}
#content #cloud #file-content .close:hover
{
background-image: url( ../../img/ico/cross-1.png );
background-image: url( ../../img/ico/cross-1.png );
}
#content #cloud #file-content .close span
{
display: none;
display: none;
}
#content #cloud #file-content #data
{
border-top: 1px solid #c0c0c0;
margin-top: 10px;
padding-top: 10px;
border-top: 1px solid #c0c0c0;
margin-top: 10px;
padding-top: 10px;
}
#content #cloud #file-content #data pre
{
display: block;
max-height: 600px;
overflow: auto;
display: block;
max-height: 600px;
overflow: auto;
}
#content #cloud #file-content #data em
{
color: #c0c0c0;
color: #c0c0c0;
}
#content #cloud #file-content #prop
@ -103,31 +211,31 @@
#content #cloud #file-content li
{
padding-top: 3px;
padding-bottom: 3px;
padding-top: 3px;
padding-bottom: 3px;
}
#content #cloud #file-content li.odd
{
background-color: #F8F8F8;
background-color: #F8F8F8;
}
#content #cloud #file-content li dt
{
float: left;
width: 19%;
float: left;
width: 19%;
}
#content #cloud #file-content li dd
{
float: right;
width: 80%;
float: right;
width: 80%;
}
/* tree */
#content #cloud .tree a.active
{
background-color: #f0f0f0;
color: #00f;
background-color: #f0f0f0;
color: #00f;
}

View File

@ -1,52 +1,52 @@
*
{
background-repeat: no-repeat;
margin: 0;
padding: 0;
background-repeat: no-repeat;
margin: 0;
padding: 0;
}
body, h1, h2, h3, h4, h5, h6, a, button, input, select, option, textarea, th, td
{
color: #333;
font: 12px/1.6em "Lucida Grande", "DejaVu Sans", "Bitstream Vera Sans", Verdana, Arial, sans-serif;
color: #333;
font: 12px/1.6em "Lucida Grande", "DejaVu Sans", "Bitstream Vera Sans", Verdana, Arial, sans-serif;
}
body
{
padding: 30px;
text-align: center;
padding: 30px;
text-align: center;
}
a, button
{
cursor: pointer;
cursor: pointer;
}
button, input, select, textarea
{
border: 1px solid #c0c0c0;
padding: 2px;
border: 1px solid #c0c0c0;
padding: 2px;
}
a
{
text-decoration: none;
text-decoration: none;
}
pre
{
color: #333;
text-align: left;
color: #333;
text-align: left;
}
abbr
{
cursor: help;
cursor: help;
}
ul
{
list-style: none;
list-style: none;
}
.clearfix:after { clear: both; content: "."; display: block; font-size: 0; height: 0; visibility: hidden; }
@ -54,96 +54,121 @@ ul
.loader
{
background-image: url( ../../img/loader.gif ) !important;
background-image: url( ../../img/loader.gif ) !important;
}
.loader-light
{
background-image: url( ../../img/loader-light.gif ) !important;
background-image: url( ../../img/loader-light.gif ) !important;
}
#wrapper
{
margin: 0 auto;
margin-bottom: 30px;
text-align: left;
margin: 0 auto;
margin-bottom: 30px;
text-align: left;
}
#header
{
padding-bottom: 10px;
position: relative;
padding-bottom: 10px;
position: relative;
}
#header #solr
{
background-image: url( ../../img/solr.png );
display: block;
height: 78px;
width: 200px;
background-image: url( ../../img/solr.png );
display: block;
height: 78px;
width: 200px;
}
#header #solr span
{
display: none;
display: none;
}
#header #wip-notice
{
background-color: #eceffa;
background-image: url( ../../img/ico/information-button.png );
background-position: 8px 7px;
border: 1px solid #4465cb;
padding: 5px 10px;
padding-left: 31px;
left: 212px;
position: absolute;
top: 0;
background-color: #eceffa;
background-image: url( ../../img/ico/information-button.png );
background-position: 8px 7px;
border: 1px solid #4465cb;
padding: 5px 10px;
padding-left: 31px;
left: 212px;
position: absolute;
top: 0;
}
#header #wip-notice a
{
display: block;
display: block;
}
#header #wip-notice span
{
border-bottom: 1px solid #c0c0c0;
border-bottom: 1px solid #c0c0c0;
}
#main
{
border: 1px solid #c0c0c0;
min-height: 600px;
min-width: 750px;
position: relative;
border: 1px solid #c0c0c0;
min-height: 600px;
min-width: 750px;
position: relative;
}
#main.error
{
border: 0;
min-height: 0;
padding-top: 20px;
}
#main.error .message
{
background-color: #f00;
background-image: url( ../../img/ico/construction.png );
background-position: 10px 50%;
color: #fff;
font-weight: bold;
margin-bottom: 20px;
padding: 10px;
padding-left: 35px;
}
#main.error .code
{
border: 1px solid #c0c0c0;
padding: 5px;
}
#meta
{
position: absolute;
bottom: -26px;
right: 0;
position: absolute;
bottom: -26px;
right: 0;
}
#meta li
{
float: left;
float: left;
}
#meta li a
{
background-position: 10px 50%;
display: block;
height: 25px;
line-height: 25px;
padding-left: 31px;
padding-right: 10px;
background-position: 10px 50%;
display: block;
height: 25px;
line-height: 25px;
padding-left: 31px;
padding-right: 10px;
}
#meta li a:hover
{
background-color: #f0f0f0;
background-color: #f0f0f0;
}
#meta .documentation a { background-image: url( ../../img/ico/document-text.png ); }
@ -154,112 +179,112 @@ ul
#environment
{
background-image: url( ../../img/ico/box.png );
background-position: 10px 50%;
border: 1px solid #c0c0c0;
display: none;
font-weight: bold;
padding: 5px 10px;
padding-left: 31px;
position: absolute;
top: 0;
right: 0;
background-image: url( ../../img/ico/box.png );
background-position: 10px 50%;
border: 1px solid #c0c0c0;
display: none;
font-weight: bold;
padding: 5px 10px;
padding-left: 31px;
position: absolute;
top: 0;
right: 0;
}
#environment.prod
{
background-color: #c37f7f;
border-color: #b15757;
color: #fff;
background-color: #c37f7f;
border-color: #b15757;
color: #fff;
}
#environment.test
{
background-color: #f5f5b2;
border-color: #e4e433;
background-color: #f5f5b2;
border-color: #e4e433;
}
#environment.dev
{
background-color: #cce7cc;
border-color: #66b866;
background-color: #cce7cc;
border-color: #66b866;
}
#content-wrapper
{
float: right;
width: 80%;
float: right;
width: 80%;
}
#content
{
padding: 10px;
padding: 10px;
}
#content > .loader
{
background-position: 0 50%;
padding-left: 21px;
background-position: 0 50%;
padding-left: 21px;
}
#content iframe
{
border: 0;
display: block;
min-height: 400px;
width: 100%;
border: 0;
display: block;
min-height: 400px;
width: 100%;
}
#content > pre
{
max-height: 600px;
overflow: auto;
max-height: 600px;
overflow: auto;
}
#content .block
{
margin-bottom: 10px;
margin-bottom: 10px;
}
#content .block h2
{
background-color: #fafafa;
background-position: 5px 50%;
border-bottom: 1px solid #f0f0f0;
font-weight: bold;
padding: 5px;
padding-left: 26px;
background-color: #fafafa;
background-position: 5px 50%;
border-bottom: 1px solid #f0f0f0;
font-weight: bold;
padding: 5px;
padding-left: 26px;
}
#content .block.disabled,
#content .block.disabled h2
{
color: #c0c0c0;
color: #c0c0c0;
}
#content .block .message,
#content .block .content
{
padding: 5px;
padding: 5px;
}
#content .block .message
{
display: none;
display: none;
}
/* syntax */
pre.syntax
{
overflow: auto;
overflow: auto;
}
pre.syntax code
{
display: block;
color: #000;
display: block;
color: #000;
}
pre.syntax .comment,
@ -267,8 +292,8 @@ pre.syntax .template_comment,
pre.syntax .diff .header,
pre.syntax .javadoc
{
color: #998;
font-style: italic;
color: #998;
font-style: italic;
}
pre.syntax .keyword,
@ -278,14 +303,14 @@ pre.syntax .javascript .title,
pre.syntax .lisp .title,
pre.syntax .subst
{
color: #000;
font-weight: bold;
color: #000;
font-weight: bold;
}
pre.syntax .number,
pre.syntax .hexcolor
{
color: #40a070;
color: #40a070;
}
pre.syntax .string,
@ -293,28 +318,28 @@ pre.syntax .tag .value,
pre.syntax .phpdoc,
pre.syntax .tex .formula
{
color: #d14;
color: #d14;
}
pre.syntax .title,
pre.syntax .id
{
color: #900;
font-weight: bold;
color: #900;
font-weight: bold;
}
pre.syntax .javascript .title,
pre.syntax .lisp .title,
pre.syntax .subst
{
font-weight: normal;
font-weight: normal;
}
pre.syntax .class .title,
pre.syntax .tex .command
{
color: #458;
font-weight: bold;
color: #458;
font-weight: bold;
}
pre.syntax .tag,
@ -323,8 +348,8 @@ pre.syntax .html .keyword,
pre.syntax .tag .title,
pre.syntax .django .tag .keyword
{
color: #000080;
font-weight: normal;
color: #000080;
font-weight: normal;
}
pre.syntax .attribute,
@ -332,18 +357,18 @@ pre.syntax .variable,
pre.syntax .instancevar,
pre.syntax .lisp .body
{
color: #008080;
color: #008080;
}
pre.syntax .regexp
{
color: #009926;
color: #009926;
}
pre.syntax .class
{
color: #458;
font-weight: bold;
color: #458;
font-weight: bold;
}
pre.syntax .symbol,
@ -353,14 +378,14 @@ pre.syntax .ruby .symbol .keymethods,
pre.syntax .lisp .keyword,
pre.syntax .tex .special
{
color: #990073;
color: #990073;
}
pre.syntax .builtin,
pre.syntax .built_in,
pre.syntax .lisp .title
{
color: #0086b3;
color: #0086b3;
}
pre.syntax .preprocessor,
@ -369,96 +394,96 @@ pre.syntax .doctype,
pre.syntax .shebang,
pre.syntax .cdata
{
color: #999;
font-weight: bold;
color: #999;
font-weight: bold;
}
pre.syntax .deletion
{
background: #fdd;
background: #fdd;
}
pre.syntax .addition
{
background: #dfd;
background: #dfd;
}
pre.syntax .diff .change
{
background: #0086b3;
background: #0086b3;
}
pre.syntax .chunk
{
color: #aaa;
color: #aaa;
}
pre.syntax .tex .formula
{
opacity: 0.5;
opacity: 0.5;
}
#content .tree li,
#content .tree ins
{
background-color: transparent;
background-image: url( ../../img/tree.png );
background-repeat: no-repeat;
background-color: transparent;
background-image: url( ../../img/tree.png );
background-repeat: no-repeat;
}
#content .tree li
{
background-position: -54px 0;
background-repeat: repeat-y;
line-height: 22px;
background-position: -54px 0;
background-repeat: repeat-y;
line-height: 22px;
}
#content .tree li.jstree-last
{
background:transparent;
background:transparent;
}
#content .tree .jstree-open > ins
{
background-position: -36px 0;
background-position: -36px 0;
}
#content .tree .jstree-closed > ins
{
background-position: -18px 0;
background-position: -18px 0;
}
#content .tree .jstree-leaf > ins
{
background-position: 0 0;
background-position: 0 0;
}
#content .tree .jstree-hovered
{
background:#e7f4f9; border:1px solid #d8f0fa; padding:0 2px 0 1px;
background:#e7f4f9; border:1px solid #d8f0fa; padding:0 2px 0 1px;
}
#content .tree .jstree-clicked
{
background:#beebff; border:1px solid #99defd; padding:0 2px 0 1px;
background:#beebff; border:1px solid #99defd; padding:0 2px 0 1px;
}
#content .tree a .jstree-icon
{
background-image: url( ../../img/ico/folder.png );
background-image: url( ../../img/ico/folder.png );
}
#content .tree .jstree-leaf a .jstree-icon
{
background-image: url( ../../img/ico/document-text.png );
background-image: url( ../../img/ico/document-text.png );
}
#content .tree .jstree-search
{
font-style:italic;
font-style:italic;
}
#content .tree a.jstree-search
{
color:aqua;
color:aqua;
}

View File

@ -4,224 +4,224 @@
#content #cores #frame
{
float: right;
width: 78%;
float: right;
width: 78%;
}
#content #cores #navigation
{
background-image: url( ../../img/div.gif );
background-position: 100% 0;
background-repeat: repeat-y;
width: 20%;
background-image: url( ../../img/div.gif );
background-position: 100% 0;
background-repeat: repeat-y;
width: 20%;
}
#content #cores #list
{
float: left;
padding-top: 15px;
width: 100%;
float: left;
padding-top: 15px;
width: 100%;
}
#content #cores #list a
{
border-right: 1px solid #f0f0f0;
display: block;
margin-left: 1px;
padding: 3px 0;
border-right: 1px solid #f0f0f0;
display: block;
margin-left: 1px;
padding: 3px 0;
}
#content #cores #list a:hover
{
background-color: #fafafa;
background-color: #fafafa;
}
#content #cores #list .current a
{
background-color: #fff;
border-right-color: #fff;
border-top: 1px solid #f0f0f0;
border-bottom: 1px solid #f0f0f0;
font-weight: bold;
background-color: #fff;
border-right-color: #fff;
border-top: 1px solid #f0f0f0;
border-bottom: 1px solid #f0f0f0;
font-weight: bold;
}
#content #cores #frame .actions
{
margin-bottom: 20px;
margin-bottom: 20px;
}
#content #cores .actions form .buttons
{
padding-left: 40px;
padding-left: 40px;
}
#content #cores .actions form a
{
display: block;
float: left;
height: 20px;
margin-right: 5px;
padding-left: 21px;
display: block;
float: left;
height: 20px;
margin-right: 5px;
padding-left: 21px;
}
#content #cores .actions form a span
{
display: none;
display: none;
}
#content #cores .actions form a.submit
{
background-image: url( ../../img/ico/tick.png );
background-position: 50% 50%;
background-image: url( ../../img/ico/tick.png );
background-position: 50% 50%;
}
#content #cores .actions form a.submit:hover
{
background-color: #e6f3e6;
background-color: #e6f3e6;
}
#content #cores .actions form a.reset
{
background-image: url( ../../img/ico/cross.png );
background-position: 50% 50%;
background-image: url( ../../img/ico/cross.png );
background-position: 50% 50%;
}
#content #cores .actions form a.reset:hover
{
background-color: #f3e6e6;
background-color: #f3e6e6;
}
#content #cores .actions form p
{
padding-bottom: 3px;
padding-bottom: 3px;
}
#content #cores .actions form label
{
float: left;
width: 40px;
float: left;
width: 40px;
}
#content #cores .actions form input,
#content #cores .actions form select
{
width: 100px;
width: 100px;
}
#content #cores .actions form select option.disabled
{
color: #c0c0c0;
color: #c0c0c0;
}
#content #cores .actions .button-holder
{
float: left;
margin-right: 10px;
margin-bottom: 5px;
float: left;
margin-right: 10px;
margin-bottom: 5px;
}
#content #cores .actions .button-holder.active
{
margin-bottom: 0;
margin-bottom: 0;
}
#content #cores .actions .button-holder .button
{
background-color: #f5f5f5;
border: 1px solid #c0c0c0;
position: relative;
z-index: 100;
background-color: #f5f5f5;
border: 1px solid #c0c0c0;
position: relative;
z-index: 100;
}
#content #cores .actions .button-holder.active .button
{
background-color: #fff;
border-bottom-color: #fff;
padding-bottom: 5px;
background-color: #fff;
border-bottom-color: #fff;
padding-bottom: 5px;
}
#content #cores .actions .button-holder .button a
{
background-position: 5px 50%;
display: block;
padding: 1px 5px;
padding-left: 24px;
background-position: 5px 50%;
display: block;
padding: 1px 5px;
padding-left: 24px;
}
#content #cores .actions .button-holder .button a.success
{
background-image: url( ../../img/ico/tick.png );
background-image: url( ../../img/ico/tick.png );
}
#content #cores .actions .button-holder.active .button a
{
cursor: auto;
cursor: auto;
}
#content #cores .actions .button-holder .button-content
{
background-color: #fff;
border: 1px solid #c0c0c0;
box-shadow: 5px 5px 10px #c0c0c0;
-moz-box-shadow: 5px 5px 10px #c0c0c0;
-webkit-box-shadow: 5px 5px 10px #c0c0c0;
display: none;
margin-top: -1px;
padding: 5px;
padding-top: 15px;
position: absolute;
z-index: 99;
background-color: #fff;
border: 1px solid #c0c0c0;
box-shadow: 5px 5px 10px #c0c0c0;
-moz-box-shadow: 5px 5px 10px #c0c0c0;
-webkit-box-shadow: 5px 5px 10px #c0c0c0;
display: none;
margin-top: -1px;
padding: 5px;
padding-top: 15px;
position: absolute;
z-index: 99;
}
#content #cores .actions .button-holder.active .button-content
{
display: block;
display: block;
}
#content #cores .actions .button .reload
{
background-image: url( ../../img/ico/arrow-circle.png );
background-image: url( ../../img/ico/arrow-circle.png );
}
#content #cores .actions .button .rename
{
background-image: url( ../../img/ico/ui-text-field-select.png );
background-image: url( ../../img/ico/ui-text-field-select.png );
}
#content #cores .actions .button .swap
{
background-image: url( ../../img/ico/arrow-switch.png );
background-image: url( ../../img/ico/arrow-switch.png );
}
#content #cores .actions .button .unload
{
background-image: url( ../../img/ico/cross.png );
background-image: url( ../../img/ico/cross.png );
}
#content #cores .actions .button .optimize
{
background-image: url( ../../img/ico/hammer-screwdriver.png );
display: none;
background-image: url( ../../img/ico/hammer-screwdriver.png );
display: none;
}
#content #cores #navigation .add
{
background-image: url( ../../img/ico/plus-button.png );
background-image: url( ../../img/ico/plus-button.png );
}
#content #cores #navigation .add label
{
width: 85px;
width: 85px;
}
#content #cores #navigation .add input
{
width: 155px;
width: 155px;
}
#content #cores #navigation .add .buttons
{
padding-left: 85px;
padding-left: 85px;
}
#content #cores #data #core-data h2 { background-image: url( ../../img/ico/database.png ); }
@ -229,44 +229,44 @@
#content #cores #data #index-data
{
margin-top: 10px;
margin-top: 10px;
}
#content #cores #data li
{
padding-bottom: 3px;
padding-top: 3px;
padding-bottom: 3px;
padding-top: 3px;
}
#content #cores #data li.odd
{
background-color: #f8f8f8;
background-color: #f8f8f8;
}
#content #cores #data li dt
{
float: left;
width: 17%;
float: left;
width: 17%;
}
#content #cores #data li dd
{
float: right;
width: 82%;
float: right;
width: 82%;
}
#content #cores #data li dd.ico
{
background-image: url( ../../img/ico/slash.png );
height: 20px;
background-image: url( ../../img/ico/slash.png );
height: 20px;
}
#content #cores #data li dd.ico.ico-1
{
background-image: url( ../../img/ico/tick.png );
background-image: url( ../../img/ico/tick.png );
}
#content #cores #data li dd.ico span
{
display: none;
display: none;
}

View File

@ -1,108 +1,108 @@
#content #dashboard .block
{
background-image: none;
width: 49%;
background-image: none;
width: 49%;
}
#content #dashboard #statistics
{
float: left;
float: left;
}
#content #dashboard #statistics dt,
#content #dashboard #statistics dd
{
display: block;
float: left;
display: block;
float: left;
}
#content #dashboard #statistics dt
{
clear: left;
margin-right: 2%;
text-align: right;
width: 23%;
clear: left;
margin-right: 2%;
text-align: right;
width: 23%;
}
#content #dashboard #statistics dd
{
width: 74%;
width: 74%;
}
#content #dashboard #statistics .index_optimized
{
margin-top: 10px;
margin-top: 10px;
}
#content #dashboard #statistics .ico
{
background-image: url( ../../img/ico/slash.png );
height: 20px;
background-image: url( ../../img/ico/slash.png );
height: 20px;
}
#content #dashboard #statistics .ico.ico-1
{
background-image: url( ../../img/ico/tick.png );
background-image: url( ../../img/ico/tick.png );
}
#content #dashboard #statistics .ico span
{
display: none;
display: none;
}
#content #dashboard #statistics .index_optimized.value a
{
display: none;
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;
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;
display: none;
}
#content #dashboard #statistics .index_has-deletions.value.ico-0
{
background-image: url( ../../img/ico/tick-red.png );
background-image: url( ../../img/ico/tick-red.png );
}
#content #dashboard #replication
{
float: left;
float: left;
}
#content #dashboard #replication .is-replicating
{
background-position: 99% 50%;
display: block;
background-position: 99% 50%;
display: block;
}
#content #dashboard #replication #details table thead td span
{
display: none;
display: none;
}
#content #dashboard #dataimport
{
float: right;
float: right;
}
#content #dashboard #admin-extra
{
float: right;
float: right;
}
#content #dashboard #system h2 { background-image: url( ../../img/ico/server.png ); }
@ -111,4 +111,4 @@
#content #dashboard #replication.is-master h2 { background-image: url( ../../img/ico/node-master.png ); }
#content #dashboard #replication.is-slave h2 { background-image: url( ../../img/ico/node-slave.png ); }
#content #dashboard #dataimport h2 { background-image: url( ../../img/ico/document-import.png ); }
#content #dashboard #admin-extra h2 { background-image: url( ../../img/ico/plus-button.png ); }
#content #dashboard #admin-extra h2 { background-image: url( ../../img/ico/plus-button.png ); }

View File

@ -1,232 +1,232 @@
#content #dataimport
{
background-image: url( ../../img/div.gif );
background-position: 21% 0;
background-repeat: repeat-y;
background-image: url( ../../img/div.gif );
background-position: 21% 0;
background-repeat: repeat-y;
}
#content #dataimport #frame
{
float: right;
width: 78%;
float: right;
width: 78%;
}
#content #dataimport #form
{
float: left;
width: 20%;
float: left;
width: 20%;
}
#content #dataimport.error #form form
{
display: none !important;
display: none !important;
}
#content #dataimport #form label
{
cursor: pointer;
display: block;
margin-top: 5px;
cursor: pointer;
display: block;
margin-top: 5px;
}
#content #dataimport #form input,
#content #dataimport #form select,
#content #dataimport #form textarea
{
margin-bottom: 2px;
width: 100%;
margin-bottom: 2px;
width: 100%;
}
#content #dataimport #form #start
{
float: left;
margin-right: 2%;
width: 49%;
float: left;
margin-right: 2%;
width: 49%;
}
#content #dataimport #form #rows
{
width: 49%;
width: 49%;
}
#content #dataimport #form .checkbox input
{
margin-bottom: 0;
width: auto;
margin-bottom: 0;
width: auto;
}
#content #dataimport #form fieldset,
#content #dataimport #form .optional.expanded
{
border: 1px solid #fff;
border-top: 1px solid #c0c0c0;
margin-bottom: 10px;
border: 1px solid #fff;
border-top: 1px solid #c0c0c0;
margin-bottom: 10px;
}
#content #dataimport #form fieldset legend,
#content #dataimport #form .optional.expanded legend
{
display: block;
margin-left: 10px;
padding: 0px 5px;
display: block;
margin-left: 10px;
padding: 0px 5px;
}
#content #dataimport #form fieldset legend label
{
margin-top: 0;
margin-top: 0;
}
#content #dataimport #form .handler
{
display: none;
display: none;
}
#content #dataimport #form .handler ul
{
list-style: disc;
margin-left: 0.7em;
padding-left: 0.7em;
list-style: disc;
margin-left: 0.7em;
padding-left: 0.7em;
}
#content #dataimport #form .handler ul li a
{
color: #c0c0c0;
display: block;
color: #c0c0c0;
display: block;
}
#content #dataimport #form .handler ul li.active a
{
color: #333;
color: #333;
}
#content #dataimport #current_state
{
display: none;
padding: 10px;
margin-bottom: 20px;
display: none;
padding: 10px;
margin-bottom: 20px;
}
#content #dataimport.error #current_state
{
display: none !important;
display: none !important;
}
#content #dataimport #current_state .time,
#content #dataimport #current_state .info
{
display: block;
padding-left: 21px;
display: block;
padding-left: 21px;
}
#content #dataimport #current_state .time
{
color: #c0c0c0;
font-size: 11px;
color: #c0c0c0;
font-size: 11px;
}
#content #dataimport #current_state .info
{
background-position: 0 1px;
background-position: 0 1px;
}
#content #dataimport #current_state.indexing
{
background-color: #f9f9f9;
background-color: #f9f9f9;
}
#content #dataimport #current_state.success
{
background-color: #e6f3e6;
background-color: #e6f3e6;
}
#content #dataimport #current_state.success .info
{
background-image: url( ../../img/ico/tick-circle.png );
background-image: url( ../../img/ico/tick-circle.png );
}
#content #dataimport #current_state.success .info strong
{
color: #080;
color: #080;
}
#content #dataimport #current_state.failure
{
background-color: #f3e6e6;
background-color: #f3e6e6;
}
#content #dataimport #current_state.failure .info
{
background-image: url( ../../img/ico/slash.png );
background-image: url( ../../img/ico/slash.png );
}
#content #dataimport #current_state.failure .info strong
{
color: #800;
color: #800;
}
#content #dataimport #config-error
{
background-color: #f00;
background-image: url( ../../img/ico/construction.png );
background-position: 10px 50%;
color: #fff;
display: none;
font-weight: bold;
margin-bottom: 20px;
padding: 10px;
padding-left: 35px;
background-color: #f00;
background-image: url( ../../img/ico/construction.png );
background-position: 10px 50%;
color: #fff;
display: none;
font-weight: bold;
margin-bottom: 20px;
padding: 10px;
padding-left: 35px;
}
#content #dataimport #config h2
{
border-color: #c0c0c0;
padding-left: 5px;
position: relative;
border-color: #c0c0c0;
padding-left: 5px;
position: relative;
}
#content #dataimport #config.hidden h2
{
border-color: #fafafa;
border-color: #fafafa;
}
#content #dataimport #config h2 a.toggle
{
background-image: url( ../../img/ico/toggle-small.png );
background-position: 0 50%;
padding-left: 21px;
background-image: url( ../../img/ico/toggle-small.png );
background-position: 0 50%;
padding-left: 21px;
}
#content #dataimport #config.hidden h2 a.toggle
{
background-image: url( ../../img/ico/toggle-small-expand.png );
background-image: url( ../../img/ico/toggle-small-expand.png );
}
#content #dataimport #config h2 a.reload_config
{
background-image: url( ../../img/ico/arrow-circle.png );
padding-left: 21px;
position: absolute;
right: 5px;
top: 5px;
background-image: url( ../../img/ico/arrow-circle.png );
padding-left: 21px;
position: absolute;
right: 5px;
top: 5px;
}
#content #dataimport #config h2 a.reload_config.success
{
background-image: url( ../../img/ico/tick.png );
background-image: url( ../../img/ico/tick.png );
}
#content #dataimport #config h2 a.reload_config.error
{
background-image: url( ../../img/ico/slash.png );
background-image: url( ../../img/ico/slash.png );
}
#content #dataimport #config.hidden .content
{
display: none;
display: none;
}
#content #dataimport #dataimport_config .loader
{
background-position: 0 50%;
padding-left: 21px;
background-position: 0 50%;
padding-left: 21px;
}

View File

@ -1,158 +1,195 @@
#content #index .bar-desc
{
color: #c0c0c0;
font-weight: normal;
margin-left: 10px;
white-space: pre;
}
#content #index .bar-holder
{
box-shadow: 5px 5px 10px #c0c0c0;
-moz-box-shadow: 5px 5px 10px #c0c0c0;
-webkit-box-shadow: 5px 5px 10px #c0c0c0;
height: 35px;
}
#content #index .bar-holder .bar
{
height: 100%;
position: relative;
}
#content #index .bar-holder div .val
{
border-right: 1px solid #f00;
display: block;
padding-right: 5px;
position: absolute;
right: 0;
top: 35px;
white-space: nowrap;
}
#content #index .bar-holder .bar-max.bar
{
background-color: #f0f0f0;
}
#content #index .bar-holder .bar-max.val
{
border-color: #f0f0f0;
color: #d6d6d6;
}
#content #index .bar-holder .bar-total.bar
{
background-color: #c0c0c0;
}
#content #index .bar-holder .bar-total.val
{
border-color: #c0c0c0;
color: #c0c0c0;
}
#content #index .bar-holder .bar-used.bar
{
background-color: #969696;
}
#content #index .bar-holder .bar-used.val
{
border-color: #969696;
color: #969696;
}
#content #index .bar-holder.bar-lvl-2 .bar-max.val { padding-top: 25px; }
#content #index .bar-holder.bar-lvl-2 .bar-total.val { padding-top: 5px; }
#content #index .bar-holder.bar-lvl-2 { margin-bottom: 45px; }
#content #index .bar-holder.bar-lvl-3 .bar-max.val { padding-top: 45px; }
#content #index .bar-holder.bar-lvl-3 .bar-total.val { padding-top: 25px; }
#content #index .bar-holder.bar-lvl-3 .bar-used.val { padding-top: 5px; }
#content #index .bar-holder.bar-lvl-3 { margin-bottom: 65px; }
#content #index .loader
{
background-position: 0 50%;
padding-left: 21px;
background-position: 0 50%;
padding-left: 21px;
}
#content #index #data
#content #index .index-left
{
float: left;
width: 74%;
float: left;
width: 55%;
}
#content #index #memory
#content #index .index-right
{
float: right;
width: 24%;
float: right;
width: 40%;
}
#content #index #data h2 { background-image: url( ../../img/ico/server.png ); }
#content #index #memory h2 { background-image: url( ../../img/ico/battery.png ); }
#content #index #data li
#content #index .data li
{
display: none;
padding-top: 3px;
padding-bottom: 3px;
display: none;
padding-top: 3px;
padding-bottom: 3px;
}
#content #index #data li.odd
#content #index .data li.odd
{
background-color: #f8f8f8;
color: #c0c0c0;
}
#content #index #data li dt
#content #index .data li dt
{
float: left;
width: 27%;
float: left;
white-space: nowrap;
width: 20%;
}
#content #index #data li dd
#content #index .data li dd
{
float: right;
width: 72%
float: right;
text-overflow: ellipsis;
overflow: hidden;
white-space: nowrap;
width: 80%
}
#content #index #data li dd.odd
#content #index .data li dd.odd
{
color: #999;
color: #999;
}
#content #index #data dt span
#content #index .data dt span
{
background-position: 0 50%;
display: block;
padding-left: 21px;
background-position: 1px 50%;
display: block;
padding-left: 22px;
}
#content #index #data .start_time dt span
#content #index #instance h2 { background-image: url( ../../img/ico/server.png ); }
#content #index #instance .start_time dt span { background-image: url( ../../img/ico/clock-select.png ); }
#content #index #instance .host dt span { background-image: url( ../../img/ico/globe.png ); }
#content #index #instance .dir dt span { background-image: url( ../../img/ico/folder.png ); }
#content #index #versions h2 { background-image: url( ../../img/ico/property.png ); }
#content #index #versions .solr span { background-image: url( ../../img/solr-ico.png ); }
#content #index #versions .lucene span { background-image: url( ../../img/lucene-ico.png ); }
#content #index #jvm h2 { background-image: url( ../../img/ico/jar.png ); }
#content #index #jvm .jvm_version dt span { background-image: url( ../../img/ico/jar.png ); }
#content #index #jvm .processors dt span { background-image: url( ../../img/ico/processor.png ); }
#content #index #jvm .command_line_args dt span { background-image: url( ../../img/ico/terminal.png ); }
#content #index #system h2 { background-image: url( ../../img/ico/system-monitor.png ); }
#content #index #system
{
background-image: url( ../../img/ico/clock-select.png );
position: relative;
}
#content #index #data .host dt span
#content #index #system .reload
{
background-image: url( ../../img/ico/globe.png );
background-image: url( ../../img/ico/arrow-circle.png );
background-position: 50% 50%;
display: block;
height: 30px;
position: absolute;
right: 0;
top: 0;
width: 30px;
}
#content #index #data .cwd dt span
#content #index #system .reload.loader
{
background-image: url( ../../img/ico/folder-export.png );
padding-left: 0;
}
#content #index #data .jvm dt span
#content #index #system .reload span
{
background-image: url( ../../img/ico/jar.png );
display: none;
}
#content #index #data .command_line_args dt span
#content #index #system .content p
{
background-image: url( ../../img/ico/terminal.png );
margin-top: 10px;
margin-bottom: 5px;
}
#content #index #data .lucene dt span
#content #index #system .content .no-info
{
background-image: url( ../../img/lucene-ico.png );
color: #c0c0c0;
display: none;
font-style: italic;
}
#content #index #memory #memory-bar
{
background-color: #00f;
box-shadow: 5px 5px 10px #c0c0c0;
-moz-box-shadow: 5px 5px 10px #c0c0c0;
-webkit-box-shadow: 5px 5px 10px #c0c0c0;
margin-top: 20px;
width: 100px;
}
#content #index #jvm-memory h2 { background-image: url( ../../img/ico/memory.png ); }
#content #index #memory .bar
#content #index #jvm-memory-bar
{
bottom: 0;
position: absolute;
width: 100%;
}
#content #index #memory div .value
{
border-top: 1px solid #f00;
display: block;
font-size: 10px;
line-height: 12px;
padding-left: 10px;
padding-right: 2px;
position: absolute;
margin-left: 100px;
white-space: nowrap;
}
#content #index #memory div .value.upper
{
border-top-width: 0;
border-bottom-width: 1px;
border-bottom-style: solid;
}
#content #index #memory #memory-bar-max
{
background-color: #f0f0f0;
height: 200px;
position: relative;
}
#content #index #memory #memory-bar-max .value
{
border-color: #f0f0f0;
color: #d6d6d6;
}
#content #index #memory #memory-bar-total
{
background-color: #c0c0c0;
}
#content #index #memory #memory-bar-total .value
{
border-color: #c0c0c0;
color: #c0c0c0;
}
#content #index #memory #memory-bar-used
{
background-color: #969696;
}
#content #index #memory #memory-bar-used .value
{
border-color: #969696;
color: #969696;
margin-top: 20px;
}

View File

@ -1,33 +1,33 @@
#content #java-properties .loader
{
background-position: 0 50%;
padding-left: 21px;
background-position: 0 50%;
padding-left: 21px;
}
#content #java-properties li
{
padding-top: 3px;
padding-bottom: 3px;
padding-top: 3px;
padding-bottom: 3px;
}
#content #java-properties li.odd
{
background-color: #f8f8f8;
background-color: #f8f8f8;
}
#content #java-properties li dt
{
float: left;
width: 29%;
float: left;
width: 29%;
}
#content #java-properties li dd
{
float: right;
width: 70%
float: right;
width: 70%
}
#content #java-properties li dd.odd
{
color: #999;
color: #999;
}

View File

@ -1,150 +1,185 @@
#content #logging .loader
{
background-position: 0 50%;
padding-left: 21px;
}
#content #logging .jstree
{
position: relative;
}
#content #logging .jstree a
{
cursor: auto;
}
#content #logging .jstree .trigger span
{
background-position: 100% 50%;
cursor: pointer;
padding-right: 21px;
}
#content #logging .jstree a.trigger:hover span
{
background-image: url( ../../img/ico/pencil-small.png );
}
#content #logging .jstree .inactive,
#content #logging .jstree .inactive .effective_level
{
color: #c0c0c0;
background-position: 0 50%;
padding-left: 21px;
}
#content #logging .jstree li
{
position: relative;
position: relative;
}
#content #logging .jstree .odd
#content #logging .jstree a
{
background-color: #f8f8f8;
color: #c0c0c0;
height: 17px;
line-height: 17px;
padding: 0;
width: 90%;
}
#content #logging .jstree .loglevel
#content #logging .jstree a.set
{
position: absolute;
margin-top: 3px;
top: 0;
color: #333;
}
#content #logging .jstree li .loglevel { left: 340px; }
#content #logging .jstree li li .loglevel { left: 322px; }
#content #logging .jstree li li li .loglevel { left: 304px; }
#content #logging .jstree li li li li .loglevel { left: 286px; }
#content #logging .jstree li li li li li .loglevel { left: 268px; }
#content #logging .jstree li li li li li li .loglevel { left: 250px; }
#content #logging .jstree .loglevel a
#content #logging .jstree a.null
{
display: block;
color: #f0f0f0;
}
#content #logging .jstree .loglevel .effective_level
#content #logging .jstree a:hover,
#content #logging .jstree a.open
{
height: 22px;
line-height: 22px;
padding-left: 5px;
width: 150px;
background-color: #f0f0f0;
}
#content #logging .jstree .loglevel.open .effective_level
#content #logging .jstree a:hover
{
background-color: #f0f0f0;
color: #008;
}
#content #logging .jstree .loglevel.open .effective_level
#content #logging .jstree a span.ns
{
background-image: url( ../../img/ico/arrow-000-small.png );
background-position: 75px 50%;
display: none;
}
#content #logging .jstree .loglevel.open .effective_level span
#content #logging.ns .jstree a span.ns
{
background-image: none;
display: inline;
}
#content #logging .jstree .loglevel ul
#content #logging .jstree a span.name
{
background-color: #fff;
border: 1px solid #f0f0f0;
display: none;
position: absolute;
left: 100px;
top: 0;
background-position: 100% 50%;
cursor: pointer;
padding-right: 21px;
}
#content #logging .jstree .loglevel.open ul
#content #logging .jstree a:hover span.name
{
display: block;
background-image: url( ../../img/ico/pencil-small.png );
}
#content #logging .jstree .loglevel ul li
#content #logging .jstree .selector-holder
{
background-image: none;
line-height: auto;
margin-left: 0;
position: absolute;
top: -2px;
z-index: 700;
}
#content #logging .jstree .loglevel ul li a
#content #logging .jstree .selector-holder.open
{
background-image: url( ../../img/ico/ui-radio-button-uncheck.png );
background-position: 2px 50%;
cursor: pointer;
display: block;
height: 22px;
line-height: 22px;
padding-left: 21px;
padding-right: 5px;
background-color: #fff;
margin-left: -19px;
z-index: 800;
}
#content #logging .jstree .loglevel ul li.selected a
#content #logging .jstree li .selector-holder { left: 440px; }
#content #logging .jstree li li .selector-holder { left: 422px; }
#content #logging .jstree li li li .selector-holder { left: 404px; }
#content #logging .jstree li li li li .selector-holder { left: 386px; }
#content #logging .jstree li li li li li .selector-holder { left: 368px; }
#content #logging .jstree li li li li li li .selector-holder { left: 350px; }
#content #logging .jstree .selector
{
background-image: url( ../../img/ico/ui-radio-button.png );
border: 1px solid #fff;
position: relative;
}
#content #logging .jstree .loglevel ul li a:hover
#content #logging .jstree .open .selector
{
background-color: #f8f8f8;
color: #008;
border-color: #f0f0f0;
box-shadow: 5px 5px 10px #c0c0c0;
-moz-box-shadow: 5px 5px 10px #c0c0c0;
-webkit-box-shadow: 5px 5px 10px #c0c0c0;
}
#content #logging .jstree .loglevel ul li.unset
#content #logging .jstree .selector a
{
border-top: 1px solid #f0f0f0;
display: block;
padding: 2px;
width: auto;
}
#content #logging .jstree .loglevel ul li.unset a
#content #logging .jstree .selector .close
{
background-image: url( ../../img/ico/cross-0.png );
background-position: 4px 50%;
padding-top: 3px;
padding-bottom: 3px;
display: none;
}
#content #logging .jstree .loglevel ul li.unset a:hover
#content #logging .jstree .open .selector .close
{
background-image: url( ../../img/ico/cross-1.png );
color: #800;
background-image: url( ../../img/ico/cross-0.png );
background-position: 50% 50%;
display: block;
position: absolute;
right: -25px;
top: 0;
width: 20px;
}
#content #logging .jstree .open .selector .close:hover
{
background-image: url( ../../img/ico/cross-1.png );
}
#content #logging .jstree .open .selector .close span
{
display: none;
}
#content #logging .jstree .open .selector a.trigger
{
display: none;
}
#content #logging .jstree .selector ul
{
display: none;
}
#content #logging .jstree .open .selector ul
{
display: block;
}
#content #logging .jstree .selector ul li
{
background: none;
margin-left: 0;
}
#content #logging .jstree .selector ul li a
{
background-image: url( ../../img/ico/ui-radio-button-uncheck.png );
background-position: 2px 50%;
padding-left: 21px;
}
#content #logging .jstree .selector ul li a.level
{
background-color: #f0f0f0;
}
#content #logging .jstree .selector ul li a:hover
{
background-image: url( ../../img/ico/ui-radio-button.png );
}
#content #logging .jstree .selector li.unset
{
border-top: 1px solid #f0f0f0;
}
#content #logging .jstree .selector li.unset a
{
background-image: url( ../../img/ico/cross-0.png );
background-position: 4px 50%;
}
#content #logging .jstree .selector li.unset a:hover
{
background-image: url( ../../img/ico/cross-1.png );
color: #800;
}

View File

@ -1,219 +1,219 @@
#menu-wrapper
{
float: left;
width: 20%;
float: left;
width: 20%;
}
#menu p.loader
{
background-position: 5px 50%;
color: #c0c0c0;
margin-top: 5px;
padding-left: 26px;
background-position: 5px 50%;
color: #c0c0c0;
margin-top: 5px;
padding-left: 26px;
}
#menu a
{
display: block;
padding: 4px 2px;
display: block;
padding: 4px 2px;
}
#menu .active
{
background-color: #fafafa;
background-color: #fafafa;
}
#menu p a
{
background-position: 97% 50%;
background-image: url( ../../img/ico/status-offline.png );
padding-left: 5px;
padding-top: 5px;
padding-bottom: 5px;
background-position: 97% 50%;
background-image: url( ../../img/ico/status-offline.png );
padding-left: 5px;
padding-top: 5px;
padding-bottom: 5px;
}
#menu p a:hover
{
background-color: #f0f0f0;
background-color: #f0f0f0;
}
#menu .active p a
{
background-color: #c0c0c0; /* #a5a5a6 */
font-weight: bold;
background-color: #c0c0c0; /* #a5a5a6 */
font-weight: bold;
}
#menu p a small
{
color: #b5b5b5;
font-weight: normal;
color: #b5b5b5;
font-weight: normal;
}
#menu p a small span.txt
{
display: none;
display: none;
}
#menu p a small:hover span.txt
{
display: inline;
display: inline;
}
#menu .busy
{
border-right-color: #f6f5d9;
border-right-color: #f6f5d9;
}
#menu .busy p a
{
background-color: #f6f5d9;
background-image: url( ../../img/ico/status-away.png );
background-color: #f6f5d9;
background-image: url( ../../img/ico/status-away.png );
}
#menu .offline
{
border-right-color: #eccfcf;
border-right-color: #eccfcf;
}
#menu .offline p a
{
background-color: #eccfcf;
background-image: url( ../../img/ico/status-busy.png );
background-color: #eccfcf;
background-image: url( ../../img/ico/status-busy.png );
}
#menu .online
{
border-right-color: #cfecd3;
border-right-color: #cfecd3;
}
#menu .online p a
{
background-color: #cfecd3;
background-image: url( ../../img/ico/status.png );
background-color: #cfecd3;
background-image: url( ../../img/ico/status.png );
}
#menu .ping small
{
color: #000
color: #000
}
#menu li
{
border-bottom: 1px solid #c0c0c0;
border-bottom: 1px solid #c0c0c0;
}
#menu li p
{
border-right: 1px solid #c0c0c0;
border-right: 1px solid #c0c0c0;
}
#menu li.optional
{
display: none;
display: none;
}
#menu li.active:last-child
{
border-bottom: 0;
border-bottom: 0;
}
#menu ul ul
{
background-image: url( ../../img/div.gif );
background-position: 100% 0;
background-repeat: repeat-y;
display: none;
padding-top: 5px;
padding-bottom: 10px;
background-image: url( ../../img/div.gif );
background-position: 100% 0;
background-repeat: repeat-y;
display: none;
padding-top: 5px;
padding-bottom: 10px;
}
#menu ul .active ul
{
display: block;
display: block;
}
#menu ul li.active:last-child ul
{
border-bottom: 1px solid #f0f0f0;
border-bottom: 1px solid #f0f0f0;
}
#menu ul ul li
{
border-bottom: 0;
/*border-right: 0;*/
border-right: 1px solid #f0f0f0;
border-bottom: 0;
/*border-right: 0;*/
border-right: 1px solid #f0f0f0;
}
#menu ul ul li a
{
background-position: 7px 50%;
border-bottom: 1px solid #f0f0f0;
color: #bbb;
margin-left: 15px;
padding-left: 26px;
background-position: 7px 50%;
border-bottom: 1px solid #f0f0f0;
color: #bbb;
margin-left: 15px;
padding-left: 26px;
}
#menu ul ul li:last-child a
{
border-bottom: 0;
border-bottom: 0;
}
#menu ul ul li a:hover
{
background-color: #f0f0f0;
color: #333;
background-color: #f0f0f0;
color: #333;
}
#menu ul ul li.active
{
background-color: #fff;
border-right-color: #fff;
background-color: #fff;
border-right-color: #fff;
}
#menu ul ul li.active a
{
color: #333;
color: #333;
}
#menu ul ul li.active a:hover
{
background-color: transparent;
background-color: transparent;
}
#menu .global p a
{
background-position: 5px 50%;
padding-left: 26px;
background-position: 5px 50%;
padding-left: 26px;
}
#menu #index p a
{
background-image: url( ../../img/ico/dashboard.png );
background-image: url( ../../img/ico/dashboard.png );
}
#menu #logging p a
{
background-image: url( ../../img/ico/inbox-document-text.png );
background-image: url( ../../img/ico/inbox-document-text.png );
}
#menu #java-properties p a
{
background-image: url( ../../img/ico/jar.png );
background-image: url( ../../img/ico/jar.png );
}
#menu #threads p a
{
background-image: url( ../../img/ico/ui-accordion.png );
background-image: url( ../../img/ico/ui-accordion.png );
}
#menu #cores p a
{
background-image: url( ../../img/ico/databases.png );
background-image: url( ../../img/ico/databases.png );
}
#menu #cloud p a
{
background-image: url( ../../img/ico/network-cloud.png );
background-image: url( ../../img/ico/network-cloud.png );
}
#menu .query a { background-image: url( ../../img/ico/magnifier.png ); }
@ -230,13 +230,13 @@
#menu .ping.error
{
background-color: #f7f7e9;
background-color: #ffcccc;
background-color: #f7f7e9;
background-color: #ffcccc;
}
#menu .ping.error a
{
background-color: transparent;
background-image: url( ../../img/ico/system-monitor--exclamation.png );
cursor: help;
background-color: transparent;
background-image: url( ../../img/ico/system-monitor--exclamation.png );
cursor: help;
}

View File

@ -1,19 +1,19 @@
#content #plugins #navigation
{
background-image: url( ../../img/div.gif );
background-position: 100% 0;
background-repeat: repeat-y;
width: 20%;
background-image: url( ../../img/div.gif );
background-position: 100% 0;
background-repeat: repeat-y;
width: 20%;
}
#content #plugins #navigation a
{
background-position: 0 50%;
border-right: 1px solid #f0f0f0;
display: block;
margin-left: 1px;
padding: 3px 0;
padding-left: 21px;
background-position: 0 50%;
border-right: 1px solid #f0f0f0;
display: block;
margin-left: 1px;
padding: 3px 0;
padding-left: 21px;
}
#content #plugins #navigation .cache a { background-image: url( ../../img/ico/disk-black.png ); }
@ -25,104 +25,104 @@
#content #plugins #navigation a:hover
{
background-color: #fafafa;
background-color: #fafafa;
}
#content #plugins #navigation .current a
{
background-color: #fff;
border-right-color: #fff;
border-top: 1px solid #f0f0f0;
border-bottom: 1px solid #f0f0f0;
font-weight: bold;
background-color: #fff;
border-right-color: #fff;
border-top: 1px solid #f0f0f0;
border-bottom: 1px solid #f0f0f0;
font-weight: bold;
}
#content #plugins #frame
{
float: right;
width: 78%;
float: right;
width: 78%;
}
#content #plugins #frame .entry
{
margin-bottom: 10px;
margin-bottom: 10px;
}
#content #plugins #frame .entry:last-child
{
margin-bottom: 0;
margin-bottom: 0;
}
#content #plugins #frame .entry a
{
background-image: url( ../../img/ico/chevron-small-expand.png );
background-position: 0 50%;
display: block;
font-weight: bold;
padding-left: 21px;
background-image: url( ../../img/ico/chevron-small-expand.png );
background-position: 0 50%;
display: block;
font-weight: bold;
padding-left: 21px;
}
#content #plugins #frame .entry.expanded a
{
background-image: url( ../../img/ico/chevron-small.png );
background-image: url( ../../img/ico/chevron-small.png );
}
#content #plugins #frame .entry.expanded ul
{
display: block;
display: block;
}
#content #plugins #frame .entry ul
{
display: none;
padding-top: 5px;
margin-left: 21px;
display: none;
padding-top: 5px;
margin-left: 21px;
}
#content #plugins #frame .entry li
{
padding-top: 2px;
padding-bottom: 2px;
padding-top: 2px;
padding-bottom: 2px;
}
#content #plugins #frame .entry li.stats
{
border-top: 1px solid #c0c0c0;
margin-top: 5px;
padding-top: 5px;
border-top: 1px solid #c0c0c0;
margin-top: 5px;
padding-top: 5px;
}
#content #plugins #frame .entry li.odd
{
background-color: #f8f8f8;
background-color: #f8f8f8;
}
#content #plugins #frame .entry dt,
#content #plugins #frame .entry .stats span
{
float: left;
width: 11%;
float: left;
width: 11%;
}
#content #plugins #frame .entry dd,
#content #plugins #frame .entry .stats ul
{
float: right;
width: 88%;
float: right;
width: 88%;
}
#content #plugins #frame .entry .stats ul
{
margin: 0;
padding: 0;
margin: 0;
padding: 0;
}
#content #plugins #frame .entry .stats dt
{
width: 27%;
width: 27%;
}
#content #plugins #frame .entry .stats dd
{
width: 72%;
width: 72%;
}

View File

@ -1,132 +1,132 @@
#content #query
{
background-image: url( ../../img/div.gif );
background-position: 22% 0;
background-repeat: repeat-y;
background-image: url( ../../img/div.gif );
background-position: 22% 0;
background-repeat: repeat-y;
}
#content #query #form
{
float: left;
width: 21%;
float: left;
width: 21%;
}
#content #query #form label
{
cursor: pointer;
display: block;
margin-top: 5px;
cursor: pointer;
display: block;
margin-top: 5px;
}
#content #query #form input,
#content #query #form select,
#content #query #form textarea
{
margin-bottom: 2px;
width: 100%;
margin-bottom: 2px;
width: 100%;
}
#content #query #form #start
{
float: left;
margin-right: 2%;
width: 49%;
float: left;
margin-right: 2%;
width: 49%;
}
#content #query #form #rows
{
width: 49%;
width: 49%;
}
#content #query #form .checkbox input
{
margin-bottom: 0;
width: auto;
margin-bottom: 0;
width: auto;
}
#content #query #form fieldset,
#content #query #form .optional.expanded
{
border: 1px solid #fff;
border-top: 1px solid #c0c0c0;
margin-bottom: 10px;
border: 1px solid #fff;
border-top: 1px solid #c0c0c0;
margin-bottom: 10px;
}
#content #query #form fieldset legend,
#content #query #form .optional.expanded legend
{
display: block;
margin-left: 10px;
padding: 0px 5px;
display: block;
margin-left: 10px;
padding: 0px 5px;
}
#content #query #form fieldset legend label
{
margin-top: 0;
margin-top: 0;
}
#content #query #form fieldset .fieldset
{
border-bottom: 1px solid #f0f0f0;
margin-bottom: 5px;
padding-bottom: 5px;
border-bottom: 1px solid #f0f0f0;
margin-bottom: 5px;
padding-bottom: 5px;
}
#content #query #form .optional
{
border: 0;
border: 0;
}
#content #query #form .optional .fieldset
{
display: none;
display: none;
}
#content #query #form .optional legend
{
margin-left: 0;
padding-left: 0;
margin-left: 0;
padding-left: 0;
}
#content #query #form .optional.expanded .fieldset
{
display: block;
display: block;
}
#content #query #result
{
display: none;
float: right;
width: 77%;
display: none;
float: right;
width: 77%;
}
#content #query #result #url
{
margin-bottom: 10px;
background-image: url( ../../img/ico/ui-address-bar.png );
background-position: 5px 50%;
border: 1px solid #f0f0f0;
box-shadow: 1px 1px 0 #f0f0f0;
-moz-box-shadow: 1px 1px 0 #f0f0f0;
-webkit-box-shadow: 1px 1px 0 #f0f0f0;
color: #c0c0c0;
display: block;
overflow: hidden;
padding: 5px;
padding-left: 26px;
white-space: nowrap;
margin-bottom: 10px;
background-image: url( ../../img/ico/ui-address-bar.png );
background-position: 5px 50%;
border: 1px solid #f0f0f0;
box-shadow: 1px 1px 0 #f0f0f0;
-moz-box-shadow: 1px 1px 0 #f0f0f0;
-webkit-box-shadow: 1px 1px 0 #f0f0f0;
color: #c0c0c0;
display: block;
overflow: hidden;
padding: 5px;
padding-left: 26px;
white-space: nowrap;
}
#content #query #result #url:focus,
#content #query #result #url:hover
{
border-color: #c0c0c0;
box-shadow: 1px 1px 0 #d8d8d8;
-moz-box-shadow: 1px 1px 0 #d8d8d8;
-webkit-box-shadow: 1px 1px 0 #d8d8d8;
color: #333;
border-color: #c0c0c0;
box-shadow: 1px 1px 0 #d8d8d8;
-moz-box-shadow: 1px 1px 0 #d8d8d8;
-webkit-box-shadow: 1px 1px 0 #d8d8d8;
color: #333;
}
#content #query #result #response
{
}
}

View File

@ -1,164 +1,164 @@
#content #replication
{
background-image: url( ../../img/div.gif );
background-position: 21% 0;
background-repeat: repeat-y;
background-image: url( ../../img/div.gif );
background-position: 21% 0;
background-repeat: repeat-y;
}
#content #replication #frame
{
float: right;
width: 78%;
float: right;
width: 78%;
}
#content #replication #navigation
{
float: left;
width: 20%;
float: left;
width: 20%;
}
#content #replication #error
{
background-color: #f00;
background-image: url( ../../img/ico/construction.png );
background-position: 10px 50%;
color: #fff;
display: none;
font-weight: bold;
margin-bottom: 20px;
padding: 10px;
padding-left: 35px;
background-color: #f00;
background-image: url( ../../img/ico/construction.png );
background-position: 10px 50%;
color: #fff;
display: none;
font-weight: bold;
margin-bottom: 20px;
padding: 10px;
padding-left: 35px;
}
#content #replication .block
{
border-bottom: 1px solid #c0c0c0;
margin-bottom: 20px;
padding-bottom: 20px;
border-bottom: 1px solid #c0c0c0;
margin-bottom: 20px;
padding-bottom: 20px;
}
#content #replication .block.last
{
border-bottom: 0;
border-bottom: 0;
}
#content #replication .masterOnly,
#content #replication .slaveOnly
{
display: none;
display: none;
}
#content #replication.master .masterOnly
{
display: block;
display: block;
}
#content #replication.slave .slaveOnly
{
display: block;
display: block;
}
#content #replication .replicating
{
display: none;
display: none;
}
#content #replication.replicating .replicating
{
display: block;
display: block;
}
#content #replication #progress
{
padding-bottom: 80px;
position: relative;
padding-bottom: 80px;
position: relative;
}
#content #replication #progress .info
{
padding: 5px;
padding: 5px;
}
#content #replication #progress #start
{
margin-left: 100px;
border-left: 1px solid #c0c0c0;
margin-left: 100px;
border-left: 1px solid #c0c0c0;
}
#content #replication #progress #bar
{
background-color: #f0f0f0;
margin-left: 100px;
margin-right: 100px;
position: relative;
background-color: #f0f0f0;
margin-left: 100px;
margin-right: 100px;
position: relative;
}
#content #replication #progress #bar #bar-info,
#content #replication #progress #bar #eta
{
position: absolute;
right: -100px;
width: 100px;
position: absolute;
right: -100px;
width: 100px;
}
#content #replication #progress #bar #bar-info
{
border-left: 1px solid #f0f0f0;
margin-top: 30px;
border-left: 1px solid #f0f0f0;
margin-top: 30px;
}
#content #replication #progress #eta .info
{
color: #c0c0c0;
height: 30px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
color: #c0c0c0;
height: 30px;
line-height: 30px;
padding-top: 0;
padding-bottom: 0;
}
#content #replication #progress #speed
{
color: #c0c0c0;
position: absolute;
right: 100px;
top: 0;
color: #c0c0c0;
position: absolute;
right: 100px;
top: 0;
}
#content #replication #progress #bar #done
{
background-color: #c0c0c0;
box-shadow: 5px 5px 10px #c0c0c0;
-moz-box-shadow: 5px 5px 10px #c0c0c0;
-webkit-box-shadow: 5px 5px 10px #c0c0c0;
height: 30px;
position: relative;
background-color: #c0c0c0;
box-shadow: 5px 5px 10px #c0c0c0;
-moz-box-shadow: 5px 5px 10px #c0c0c0;
-webkit-box-shadow: 5px 5px 10px #c0c0c0;
height: 30px;
position: relative;
}
#content #replication #progress #bar #done .percent
{
font-weight: bold;
height: 30px;
line-height: 30px;
padding-left: 5px;
padding-right: 5px;
position: absolute;
right: 0;
text-align: right;
font-weight: bold;
height: 30px;
line-height: 30px;
padding-left: 5px;
padding-right: 5px;
position: absolute;
right: 0;
text-align: right;
}
#content #replication #progress #bar #done #done-info
{
border-right: 1px solid #c0c0c0;
position: absolute;
right: 0;
margin-top: 30px;
text-align: right;
width: 100px;
border-right: 1px solid #c0c0c0;
position: absolute;
right: 0;
margin-top: 30px;
text-align: right;
width: 100px;
}
#content #replication #progress #bar #done #done-info .percent
{
font-weight: bold;
font-weight: bold;
}
#content #replication .block .label,
@ -166,149 +166,144 @@
#content #replication #current-file .progress,
#content #replication #iterations .iterations
{
float: left;
float: left;
}
#content #replication .block .label
{
width: 100px;
width: 100px;
}
#content #replication .block .label span
{
display: block;
padding-left: 21px;
display: block;
padding-left: 21px;
}
#content #replication #current-file
{
border-top: 1px solid #f0f0f0;
margin-top: 10px;
padding-top: 10px;
border-top: 1px solid #f0f0f0;
margin-top: 10px;
padding-top: 10px;
}
#content #replication #current-file .progress
{
color: #c0c0c0;
margin-left: 20px;
}
#content #replication #iterations
{
display: none;
color: #c0c0c0;
margin-left: 20px;
}
#content #replication #iterations .label span
{
background-image: url( ../../img/ico/node-design.png );
background-image: url( ../../img/ico/node-design.png );
}
#content #replication #iterations .iterations li
{
background-position: 100% 50%;
display: none;
padding-right: 21px;
background-position: 100% 50%;
display: none;
padding-right: 21px;
}
#content #replication #iterations .iterations.expanded li
{
display: block;
display: block;
}
#content #replication #iterations .iterations .latest
{
display: block;
display: block;
}
#content #replication #iterations .iterations .replicated
{
color: #80c480;
color: #80c480;
}
#content #replication #iterations .iterations ul:hover .replicated,
#content #replication #iterations .iterations .replicated.latest
{
color: #080;
color: #080;
}
#content #replication #iterations .iterations .replicated.latest
{
background-image: url( ../../img/ico/tick.png );
background-image: url( ../../img/ico/tick.png );
}
#content #replication #iterations .iterations .failed
{
color: #c48080;
color: #c48080;
}
#content #replication #iterations .iterations ul:hover .failed,
#content #replication #iterations .iterations .failed.latest
{
color: #800;
color: #800;
}
#content #replication #iterations .iterations .failed.latest
{
background-image: url( ../../img/ico/cross.png );
background-image: url( ../../img/ico/cross.png );
}
#content #replication #iterations .iterations a
{
border-top: 1px solid #f0f0f0;
display: none;
margin-top: 2px;
padding-top: 2px;
border-top: 1px solid #f0f0f0;
display: none;
margin-top: 2px;
padding-top: 2px;
}
#content #replication #iterations .iterations a span
{
background-position: 0 50%;
color: #c0c0c0;
display: none;
padding-left: 21px;
background-position: 0 50%;
color: #c0c0c0;
display: none;
padding-left: 21px;
}
#content #replication #iterations .iterations a span.expand
{
background-image: url( ../../img/ico/chevron-small-expand.png );
display: block;
background-image: url( ../../img/ico/chevron-small-expand.png );
display: block;
}
#content #replication #iterations .iterations.expanded a span.expand
{
display: none;
display: none;
}
#content #replication #iterations .iterations.expanded a span.collapse
{
background-image: url( ../../img/ico/chevron-small.png );
display: block;
background-image: url( ../../img/ico/chevron-small.png );
display: block;
}
#content #replication #details table
{
border-collapse: collapse;
border-collapse: collapse;
}
#content #replication #details table th
{
text-align: left;
text-align: left;
}
#content #replication.slave #details table .slaveOnly
{
display: table-row;
display: table-row;
}
#content #replication #details table thead th
{
color: #c0c0c0;
color: #c0c0c0;
}
#content #replication #details table thead th,
#content #replication #details table tbody td
{
padding-right: 20px;
padding-right: 20px;
}
#content #replication #details table thead td,
@ -316,148 +311,187 @@
#content #replication #details table tbody th,
#content #replication #details table tbody td div
{
padding-top: 3px;
padding-bottom: 3px;
padding-top: 3px;
padding-bottom: 3px;
}
#content #replication #details table tbody td,
#content #replication #details table tbody th
{
border-top: 1px solid #f0f0f0;
border-top: 1px solid #f0f0f0;
}
#content #replication #details table thead td
{
width: 100px;
width: 100px;
}
#content #replication #details table thead td span
{
background-image: url( ../../img/ico/clipboard-list.png );
background-position: 0 50%;
display: block;
padding-left: 21px;
background-image: url( ../../img/ico/clipboard-list.png );
background-position: 0 50%;
display: block;
padding-left: 21px;
}
#content #replication #details table tbody th
{
padding-right: 10px;
text-align: right;
padding-right: 10px;
text-align: right;
}
#content #replication #details table tbody .size
{
text-align: right;
white-space: nowrap;
text-align: right;
white-space: nowrap;
}
#content #replication #details table tbody .generation div
{
text-align: center;
text-align: center;
}
#content #replication #details table tbody .diff div
{
background-color: #fcfcc9;
padding-left: 1px;
padding-right: 1px;
background-color: #fcfcc9;
padding-left: 1px;
padding-right: 1px;
}
#content #replication .settings .label span
{
background-image: url( ../../img/ico/hammer-screwdriver.png );
background-image: url( ../../img/ico/hammer-screwdriver.png );
}
#content #replication .settings ul,
#content #replication .settings dl dt,
#content #replication .settings dl dd
{
float: left;
float: left;
}
#content #replication .settings ul li
{
border-top: 1px solid #f0f0f0;
display: none;
padding-top: 3px;
padding-top: 3px;
border-top: 1px solid #f0f0f0;
display: none;
padding-top: 3px;
padding-top: 3px;
}
#content #replication .settings ul li:first-child
{
border-top: 0;
padding-top: 0;
border-top: 0;
padding-top: 0;
}
#content #replication .settings dl dt
{
clear: left;
margin-right: 5px;
width: 120px;
clear: left;
margin-right: 5px;
width: 120px;
}
#content #replication .settings dl .ico
{
background-position: 0 50%;
padding-left: 21px;
background-position: 0 50%;
padding-left: 21px;
}
#content #replication .settings dl .ico.ico-0
{
background-image: url( ../../img/ico/slash.png );
background-image: url( ../../img/ico/slash.png );
}
#content #replication .settings dl .ico.ico-1
{
background-image: url( ../../img/ico/tick.png );
background-image: url( ../../img/ico/tick.png );
}
#content #replication .timer
{
box-shadow: 5px 5px 10px #c0c0c0;
-moz-box-shadow: 5px 5px 10px #c0c0c0;
-webkit-box-shadow: 5px 5px 10px #c0c0c0;
display: none;
margin-bottom: 20px;
padding: 10px;
}
#content #replication .timer p,
#content #replication .timer small
{
padding-left: 21px;
}
#content #replication .timer p
{
background-image: url( ../../img/ico/clock-select-remain.png );
background-position: 0 50%;
}
#content #replication .timer p .approx
{
color: #c0c0c0;
margin-right: 1px;
}
#content #replication .timer p .tick
{
font-weight: bold;
}
#content #replication .timer small
{
color: #c0c0c0;
display: none;
}
#content #replication #navigation button
{
background-position: 2px 50%;
margin-bottom: 10px;
padding-left: 21px;
background-position: 2px 50%;
margin-bottom: 10px;
padding-left: 21px;
}
#content #replication #navigation button.optional
{
display: none;
display: none;
}
#content #replication #navigation .replicate-now
{
background-image: url( ../../img/ico/document-convert.png );
background-image: url( ../../img/ico/document-convert.png );
}
#content #replication #navigation .abort-replication
{
background-color: #800;
background-image: url( ../../img/ico/hand.png );
border-color: #800;
color: #fff;
background-color: #800;
background-image: url( ../../img/ico/hand.png );
border-color: #800;
color: #fff;
}
#content #replication #navigation .disable-polling
{
background-image: url( ../../img/ico/cross.png );
background-image: url( ../../img/ico/cross.png );
}
#content #replication #navigation .enable-polling
{
background-image: url( ../../img/ico/tick.png );
background-image: url( ../../img/ico/tick.png );
}
#content #replication #navigation .disable-replication
{
background-image: url( ../../img/ico/cross.png );
background-image: url( ../../img/ico/cross.png );
}
#content #replication #navigation .enable-replication
{
background-image: url( ../../img/ico/tick.png );
background-image: url( ../../img/ico/tick.png );
}
#content #replication #navigation .refresh-status
{
background-image: url( ../../img/ico/arrow-circle.png );
background-image: url( ../../img/ico/arrow-circle.png );
}

View File

@ -1,76 +1,76 @@
#content #schema-browser .loader
{
background-position: 0 50%;
padding-left: 21px;
background-position: 0 50%;
padding-left: 21px;
}
#content #schema-browser.loaded
{
background-image: url( ../../img/div.gif );
background-position: 21% 0;
background-repeat: repeat-y;
background-image: url( ../../img/div.gif );
background-position: 21% 0;
background-repeat: repeat-y;
}
#content #schema-browser #data
{
float: right;
width: 78%;
float: right;
width: 78%;
}
#content #schema-browser #related
{
float: left;
width: 20%;
float: left;
width: 20%;
}
#content #schema-browser #related select
{
width: 100%;
width: 100%;
}
#content #schema-browser #related select optgroup
{
font-style: normal;
padding: 5px;
font-style: normal;
padding: 5px;
}
#content #schema-browser #related select option
{
padding-left: 10px;
padding-left: 10px;
}
#content #schema-browser #related #f-df-t
{
border-bottom: 1px solid #f0f0f0;
padding-bottom: 15px;
border-bottom: 1px solid #f0f0f0;
padding-bottom: 15px;
}
#content #schema-browser #related dl
{
margin-top: 15px;
margin-top: 15px;
}
#content #schema-browser #related dl dt,
#content #schema-browser #related dl dd a
{
color: #c0c0c0;
color: #c0c0c0;
}
#content #schema-browser #related dl dt
{
font-weight: bold;
margin-top: 5px;
font-weight: bold;
margin-top: 5px;
}
#content #schema-browser #related dl dd a
{
display: block;
padding-left: 10px;
display: block;
padding-left: 10px;
}
#content #schema-browser #related dl dd a:hover
{
background-color: #f8f8f8;
background-color: #f8f8f8;
}
#content #schema-browser #related .field .field,
@ -82,264 +82,346 @@
#content #schema-browser #related .active,
#content #schema-browser #related .active a
{
color: #333;
color: #333;
}
#content #schema-browser #related .copyfield,
#content #schema-browser #related .copyfield a
{
color: #666;
color: #666;
}
#content #schema-browser #data
{
display: none;
display: none;
}
#content #schema-browser #data #index dt
{
display: none;
float: left;
margin-right: 5px;
width: 150px;
display: none;
float: left;
margin-right: 5px;
width: 150px;
}
#content #schema-browser #data #field .field-options
{
margin-bottom: 20px;
margin-bottom: 10px;
}
#content #schema-browser #data #field .field-options .head h2
{
padding-left: 5px;
}
#content #schema-browser #data #field .field-options .options dt,
#content #schema-browser #data #field .field-options .options dd
{
float: left;
float: left;
}
#content #schema-browser #data #field .field-options .options dt
{
clear: left;
display: none;
margin-right: 5px;
width: 100px;
clear: left;
display: none;
margin-right: 5px;
width: 100px;
}
#content #schema-browser #data #field .field-options .options dd
{
margin-right: 5px;
margin-right: 5px;
}
#content #schema-browser #data #field .field-options .analyzer,
#content #schema-browser #data #field .field-options .analyzer li,
#content #schema-browser #data #field .field-options .analyzer ul,
#content #schema-browser #data #field .field-options .analyzer ul li
{
display: none;
display: none;
}
#content #schema-browser #data #field .field-options .analyzer p,
#content #schema-browser #data #field .field-options .analyzer dl
{
float: left;
float: left;
}
#content #schema-browser #data #field .field-options .analyzer p
{
margin-right: 5px;
text-align: right;
width: 100px;
margin-right: 5px;
text-align: right;
width: 100px;
}
#content #schema-browser #data #field .field-options .analyzer a
{
cursor: auto;
}
#content #schema-browser #data #field .field-options .analyzer .toggle
{
background-image: url( ../../img/ico/chevron-small-expand.png );
background-position: 100% 50%;
cursor: pointer;
display: block;
padding-right: 21px;
}
#content #schema-browser #data #field .field-options .analyzer .open .toggle
{
background-image: url( ../../img/ico/chevron-small.png );
}
#content #schema-browser #data #field .field-options .analyzer li
{
border-top: 1px solid #f0f0f0;
margin-top: 10px;
padding-top: 10px;
border-top: 1px solid #f0f0f0;
margin-top: 10px;
padding-top: 10px;
}
#content #schema-browser #data #field .field-options .analyzer ul
{
clear: left;
display: block;
margin-left: 30px;
padding-top: 5px;
clear: left;
display: none;
margin-left: 30px;
padding-top: 5px;
}
#content #schema-browser #data #field .field-options .analyzer .open ul
{
display: block;
}
#content #schema-browser #data #field .field-options .analyzer ul li
{
border-top: 1px solid #f8f8f8;
margin-top: 5px;
padding-top: 5px;
border-top: 1px solid #f8f8f8;
margin-top: 5px;
padding-top: 5px;
}
#content #schema-browser #data #field .field-options .analyzer ul p
{
color: #999;
margin-right: 5px;
text-align: right;
width: 70px;
color: #999;
margin-right: 5px;
text-align: right;
width: 70px;
}
#content #schema-browser #data #field .field-options .analyzer ul dd
{
margin-left: 20px;
margin-left: 20px;
}
#content #schema-browser #data #field .field-options .analyzer ul dd
{
background-image: url( ../../img/ico/document-list.png );
background-position: 0 50%;
color: #c0c0c0;
padding-left: 21px;
background-image: url( ../../img/ico/document-list.png );
background-position: 0 50%;
color: #c0c0c0;
padding-left: 21px;
}
#content #schema-browser #data #field .field-options .analyzer ul dd.ico-0
{
background-image: url( ../../img/ico/slash.png );
background-image: url( ../../img/ico/slash.png );
}
#content #schema-browser #data #field .field-options .analyzer ul dd.ico-1
{
background-image: url( ../../img/ico/tick.png );
background-image: url( ../../img/ico/tick.png );
}
#content #schema-browser #data #field .head
{
margin-bottom: 5px;
margin-bottom: 5px;
}
#content #schema-browser #data #field .terminfo-holder
{
border-top: 1px solid #c0c0c0;
padding-top: 10px;
}
#content #schema-browser #data #field .terminfo-holder .trigger
{
float: left;
width: 130px;
}
#content #schema-browser #data #field .terminfo-holder .trigger button
{
background-image: url( ../../img/ico/information.png );
background-position: 3px 50%;
display: block;
padding-left: 23px;
}
#content #schema-browser #data #field .terminfo-holder .status
{
border-left: 1px solid #f0f0f0;
display: none;
float: left;
padding-left: 20px;
padding-right: 20px;
}
#content #schema-browser #data #field .terminfo-holder.disabled .trigger button
{
background-color: #f0f0f0;
background-image: url( ../../img/ico/prohibition.png );
border-color: #fff;
color: #c0c0c0;
cursor: auto;
}
#content #schema-browser #data #field .terminfo-holder.disabled .status
{
display: block;
}
#content #schema-browser #data #field .terminfo-holder .trigger .autoload
{
display: none;
}
#content #schema-browser #data #field .terminfo-holder.loaded .trigger .autoload
{
background-image: url( ../../img/ico/ui-check-box-uncheck.png );
background-position: 0 50%;
color: #c0c0c0;
display: block;
margin-top: 10px;
padding-left: 21px;
}
#content #schema-browser #data #field .terminfo-holder .trigger .autoload:hover
{
color: #008;
}
#content #schema-browser #data #field .terminfo-holder .trigger .autoload.on
{
background-image: url( ../../img/ico/ui-check-box.png );
color: #333;
}
#content #schema-browser #data #field .topterms-holder
{
display: none;
float: left;
border-left: 1px solid #f0f0f0;
display: none;
float: left;
padding-left: 20px;
padding-right: 20px;
}
#content #schema-browser #data #field .topterms-holder .head input
{
height: 18px;
line-height: 16px;
text-align: right;
width: 30px;
}
#content #schema-browser #data #field .topterms-holder .head .max-holder
{
color: #c0c0c0;
color: #c0c0c0;
}
#content #schema-browser #data #field .topterms-holder table
#content #schema-browser #data #field .topterms-holder .head .max-holder:hover .max
{
border-collapse: collapse;
width: 100%;
color: #008;
}
#content #schema-browser #data #field .topterms-holder th,
#content #schema-browser #data #field .topterms-holder td
#content #schema-browser .topterms-holder li
{
border: 1px solid #f0f0f0;
padding: 1px 4px;
border-top: 1px solid #999;
margin-bottom: 5px;
}
#content #schema-browser #data #field .topterms-holder thead tr
#content #schema-browser .topterms-holder li p
{
background-color: #c0c0c0;
background-color: #999;
color: #fff;
float: left;
width: 25px;
}
#content #schema-browser #data #field .topterms-holder thead th
#content #schema-browser .topterms-holder li p span
{
text-align: left;
display: block;
padding-right: 2px;
text-align: right;
}
#content #schema-browser #data #field .topterms-holder tbody
#content #schema-browser .topterms-holder li ul
{
display: none;
margin-left: 30px;
}
#content #schema-browser #data #field .topterms-holder tbody .odd
#content #schema-browser .topterms-holder li li
{
background-color: #f0f0f0;
border-top: 0;
margin-bottom: 0;
white-space: nowrap;
}
#content #schema-browser #data #field .topterms-holder tbody .position
#content #schema-browser .topterms-holder li li.odd
{
color: #c0c0c0;
text-align: right;
background-color: #f0f0f0;
}
#content #schema-browser #data #field .topterms-holder .navi
#content #schema-browser .topterms-holder li li span
{
margin-top: 5px;
}
#content #schema-browser #data #field .topterms-holder .navi a
{
color: #c0c0c0;
display: block;
padding-top: 2px;
padding-bottom: 2px;
width: 49%;
}
#content #schema-browser #data #field .topterms-holder .navi a:hover
{
background-color: #f8f8f8;
color: #333;
}
#content #schema-browser #data #field .topterms-holder .navi .less
{
float: left;
}
#content #schema-browser #data #field .topterms-holder .navi .less span
{
background-image: url( ../../img/ico/chevron-small.png );
background-position: 0 50%;
padding-left: 18px;
}
#content #schema-browser #data #field .topterms-holder .navi .more
{
float: right;
text-align: right;
}
#content #schema-browser #data #field .topterms-holder .navi .more span
{
background-image: url( ../../img/ico/chevron-small-expand.png );
background-position: 100% 50%;
padding-right: 18px;
padding-left: 2px;
padding-right: 2px;
}
#content #schema-browser #data #field .histogram-holder
{
display: none;
float: left;
margin-left: 50px;
border-left: 1px solid #f0f0f0;
display: none;
float: left;
padding-left: 20px;
padding-right: 20px;
}
#content #schema-browser #data #field .histogram-holder .histogram
{
height: 150px;
height: 150px;
}
#content #schema-browser #data #field .histogram-holder .histogram.single canvas
{
background-color: #c0c0c0;
}
#content #schema-browser #data #field .histogram-holder dt,
#content #schema-browser #data #field .histogram-holder dd
{
float: left;
font-size: 10px;
text-align: center;
float: left;
font-size: 10px;
text-align: center;
}
#content #schema-browser #data #field .histogram-holder span
{
background-color: #f0f0f0;
display: block;
width: 20px;
background-color: #f0f0f0;
display: block;
width: 20px;
}
#content #schema-browser #data #field .histogram-holder dt
{
padding-right: 1px;
padding-right: 1px;
}
#content #schema-browser #data #field .histogram-holder dd
{
padding-right: 3px;
padding-right: 3px;
}
#content #schema-browser #data #field .histogram-holder dd span
{
width: 25px;
width: 25px;
}

View File

@ -1,167 +1,167 @@
#content #threads .loader
{
background-position: 0 50%;
padding-left: 21px;
background-position: 0 50%;
padding-left: 21px;
}
#content #threads #thread-dump table
{
border-collapse: collapse;
width: 100%;
border-collapse: collapse;
width: 100%;
}
#content #threads #thread-dump table .spacer,
#content #threads #thread-dump tbody .state
{
background-color: #fff;
border: 0;
background-color: #fff;
border: 0;
}
#content #threads #thread-dump table th,
#content #threads #thread-dump table td
{
border: 1px solid #c0c0c0;
padding: 5px 3px;
vertical-align: top;
border: 1px solid #c0c0c0;
padding: 5px 3px;
vertical-align: top;
}
#content #threads #thread-dump thead th
{
background-color: #c8c8c8;
font-weight: bold;
text-align: left;
background-color: #c8c8c8;
font-weight: bold;
text-align: left;
}
#content #threads #thread-dump thead th.name
{
width: 85%;
width: 85%;
}
#content #threads #thread-dump thead th.time
{
text-align: right;
width: 15%;
text-align: right;
width: 15%;
}
#content #threads #thread-dump tbody .odd
{
background-color: #f0f0f0;
background-color: #f0f0f0;
}
#content #threads #thread-dump tbody .RUNNABLE a
{
background-image: url( ../../img/ico/tick-circle.png );
background-image: url( ../../img/ico/tick-circle.png );
}
#content #threads #thread-dump tbody .WAITING a,
#content #threads #thread-dump tbody .TIMED_WAITING .a
{
background-image: url( ../../img/ico/hourglass.png );
background-image: url( ../../img/ico/hourglass.png );
}
#content #threads #thread-dump tbody .WAITING.lock a,
#content #threads #thread-dump tbody .TIMED_WAITING.lock a
{
background-image: url( ../../img/ico/hourglass--exclamation.png );
background-image: url( ../../img/ico/hourglass--exclamation.png );
}
#content #threads #thread-dump thead th:first-child,
#content #threads #thread-dump tbody td:first-child
{
border-left: 0;
border-left: 0;
}
#content #threads #thread-dump thead th:last-child,
#content #threads #thread-dump tbody td:last-child
{
border-right: 0;
border-right: 0;
}
#content #threads #thread-dump tbody .name a
{
background-position: 0 50%;
cursor: auto;
display: block;
padding-left: 21px;
background-position: 0 50%;
cursor: auto;
display: block;
padding-left: 21px;
}
#content #threads #thread-dump tbody .stacktrace .name a
{
cursor: pointer;
cursor: pointer;
}
#content #threads #thread-dump tbody .stacktrace .name a span
{
background-image: url( ../../img/ico/chevron-small-expand.png );
background-position: 100% 50%;
padding-right: 21px;
background-image: url( ../../img/ico/chevron-small-expand.png );
background-position: 100% 50%;
padding-right: 21px;
}
#content #threads #thread-dump tbody .stacktrace.open .name a span
{
background-image: url( ../../img/ico/chevron-small.png );
background-image: url( ../../img/ico/chevron-small.png );
}
#content #threads #thread-dump tbody .name p
{
background-image: url( ../../img/ico/arrow-000-small.png );
background-position: 0 50%;
color: #c0c0c0;
font-size: 11px;
margin-left: 21px;
padding-left: 21px;
background-image: url( ../../img/ico/arrow-000-small.png );
background-position: 0 50%;
color: #c0c0c0;
font-size: 11px;
margin-left: 21px;
padding-left: 21px;
}
#content #threads #thread-dump tbody .name div
{
border-top: 1px solid #c0c0c0;
display: none;
margin-left: 21px;
margin-top: 5px;
padding-top: 5px;
border-top: 1px solid #c0c0c0;
display: none;
margin-left: 21px;
margin-top: 5px;
padding-top: 5px;
}
#content #threads #thread-dump tbody .open .name div
{
display: block;
display: block;
}
#content #threads #thread-dump tbody .name ul
{
list-style-type: disc;
margin-left: 0.7em;
padding-left: 0.7em;
list-style-type: disc;
margin-left: 0.7em;
padding-left: 0.7em;
}
#content #threads #thread-dump tbody .time
{
text-align: right;
text-align: right;
}
#content #threads #thread-dump tbody .details
{
display: none;
display: none;
}
#content #threads .controls
{
padding-top: 5px;
padding-bottom: 5px;
padding-top: 5px;
padding-bottom: 5px;
}
#content #threads .controls a
{
background-image: url( ../../img/ico/chevron-small-expand.png );
padding-left: 21px;
background-image: url( ../../img/ico/chevron-small-expand.png );
padding-left: 21px;
}
#content #threads.expanded .controls a
{
background-image: url( ../../img/ico/chevron-small.png );
background-image: url( ../../img/ico/chevron-small.png );
}
#content #threads.expanded .controls .expand,
#content #threads.collapsed .controls .collapse
{
display: none;
display: none;
}

View File

@ -0,0 +1,317 @@
// Simple Set Clipboard System
// Author: Joseph Huckaby
var ZeroClipboard = {
version: "1.0.7",
clients: {}, // registered upload clients on page, indexed by id
moviePath: 'ZeroClipboard.swf', // URL to movie
nextId: 1, // ID of next movie
$: function(thingy) {
// simple DOM lookup utility function
if (typeof(thingy) == 'string') thingy = document.getElementById(thingy);
if (!thingy.addClass) {
// extend element with a few useful methods
thingy.hide = function() { this.style.display = 'none'; };
thingy.show = function() { this.style.display = ''; };
thingy.addClass = function(name) { this.removeClass(name); this.className += ' ' + name; };
thingy.removeClass = function(name) {
var classes = this.className.split(/\s+/);
var idx = -1;
for (var k = 0; k < classes.length; k++) {
if (classes[k] == name) { idx = k; k = classes.length; }
}
if (idx > -1) {
classes.splice( idx, 1 );
this.className = classes.join(' ');
}
return this;
};
thingy.hasClass = function(name) {
return !!this.className.match( new RegExp("\\s*" + name + "\\s*") );
};
}
return thingy;
},
setMoviePath: function(path) {
// set path to ZeroClipboard.swf
this.moviePath = path;
},
dispatch: function(id, eventName, args) {
// receive event from flash movie, send to client
var client = this.clients[id];
if (client) {
client.receiveEvent(eventName, args);
}
},
register: function(id, client) {
// register new client to receive events
this.clients[id] = client;
},
getDOMObjectPosition: function(obj, stopObj) {
// get absolute coordinates for dom element
var info = {
left: 0,
top: 0,
width: obj.width ? obj.width : obj.offsetWidth,
height: obj.height ? obj.height : obj.offsetHeight
};
while (obj && (obj != stopObj)) {
info.left += obj.offsetLeft;
info.top += obj.offsetTop;
obj = obj.offsetParent;
}
return info;
},
Client: function(elem) {
// constructor for new simple upload client
this.handlers = {};
// unique ID
this.id = ZeroClipboard.nextId++;
this.movieId = 'ZeroClipboardMovie_' + this.id;
// register client with singleton to receive flash events
ZeroClipboard.register(this.id, this);
// create movie
if (elem) this.glue(elem);
}
};
ZeroClipboard.Client.prototype = {
id: 0, // unique ID for us
ready: false, // whether movie is ready to receive events or not
movie: null, // reference to movie object
clipText: '', // text to copy to clipboard
handCursorEnabled: true, // whether to show hand cursor, or default pointer cursor
cssEffects: true, // enable CSS mouse effects on dom container
handlers: null, // user event handlers
glue: function(elem, appendElem, stylesToAdd) {
// glue to DOM element
// elem can be ID or actual DOM element object
this.domElement = ZeroClipboard.$(elem);
// float just above object, or zIndex 99 if dom element isn't set
var zIndex = 99;
if (this.domElement.style.zIndex) {
zIndex = parseInt(this.domElement.style.zIndex, 10) + 1;
}
if (typeof(appendElem) == 'string') {
appendElem = ZeroClipboard.$(appendElem);
}
else if (typeof(appendElem) == 'undefined') {
appendElem = document.getElementsByTagName('body')[0];
}
// find X/Y position of domElement
var box = ZeroClipboard.getDOMObjectPosition(this.domElement, appendElem);
// create floating DIV above element
this.div = document.createElement('div');
var style = this.div.style;
style.position = 'absolute';
style.left = '' + box.left + 'px';
style.top = '' + box.top + 'px';
style.width = '' + box.width + 'px';
style.height = '' + box.height + 'px';
style.zIndex = zIndex;
style.left = '0px';
style.top = '0px';
if (typeof(stylesToAdd) == 'object') {
for (addedStyle in stylesToAdd) {
style[addedStyle] = stylesToAdd[addedStyle];
}
}
// style.backgroundColor = '#f00'; // debug
appendElem.appendChild(this.div);
this.div.innerHTML = this.getHTML( box.width, box.height );
},
getHTML: function(width, height) {
// return HTML for movie
var html = '';
var flashvars = 'id=' + this.id +
'&width=' + width +
'&height=' + height;
if (navigator.userAgent.match(/MSIE/)) {
// IE gets an OBJECT tag
var protocol = location.href.match(/^https/i) ? 'https://' : 'http://';
html += '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="'+protocol+'download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" width="'+width+'" height="'+height+'" id="'+this.movieId+'" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="false" /><param name="movie" value="'+ZeroClipboard.moviePath+'" /><param name="loop" value="false" /><param name="menu" value="false" /><param name="quality" value="best" /><param name="bgcolor" value="#ffffff" /><param name="flashvars" value="'+flashvars+'"/><param name="wmode" value="transparent"/></object>';
}
else {
// all other browsers get an EMBED tag
html += '<embed id="'+this.movieId+'" src="'+ZeroClipboard.moviePath+'" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="'+width+'" height="'+height+'" name="'+this.movieId+'" align="middle" allowScriptAccess="always" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="'+flashvars+'" wmode="transparent" />';
}
return html;
},
hide: function() {
// temporarily hide floater offscreen
if (this.div) {
this.div.style.left = '-2000px';
}
},
show: function() {
// show ourselves after a call to hide()
this.reposition();
},
destroy: function() {
// destroy control and floater
if (this.domElement && this.div) {
this.hide();
this.div.innerHTML = '';
var body = document.getElementsByTagName('body')[0];
try { body.removeChild( this.div ); } catch(e) {;}
this.domElement = null;
this.div = null;
}
},
reposition: function(elem) {
// reposition our floating div, optionally to new container
// warning: container CANNOT change size, only position
if (elem) {
this.domElement = ZeroClipboard.$(elem);
if (!this.domElement) this.hide();
}
console.debug( this.domElement, this.div );
if (this.domElement && this.div) {
var box = ZeroClipboard.getDOMObjectPosition(this.domElement);
console.debug( box );
var style = this.div.style;
style.left = '' + box.left + 'px';
style.top = '' + box.top + 'px';
}
},
setText: function(newText) {
// set text to be copied to clipboard
this.clipText = newText;
if (this.ready) this.movie.setText(newText);
},
addEventListener: function(eventName, func) {
// add user event listener for event
// event types: load, queueStart, fileStart, fileComplete, queueComplete, progress, error, cancel
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
if (!this.handlers[eventName]) this.handlers[eventName] = [];
this.handlers[eventName].push(func);
},
setHandCursor: function(enabled) {
// enable hand cursor (true), or default arrow cursor (false)
this.handCursorEnabled = enabled;
if (this.ready) this.movie.setHandCursor(enabled);
},
setCSSEffects: function(enabled) {
// enable or disable CSS effects on DOM container
this.cssEffects = !!enabled;
},
receiveEvent: function(eventName, args) {
// receive event from flash
eventName = eventName.toString().toLowerCase().replace(/^on/, '');
// special behavior for certain events
switch (eventName) {
case 'load':
// movie claims it is ready, but in IE this isn't always the case...
// bug fix: Cannot extend EMBED DOM elements in Firefox, must use traditional function
this.movie = document.getElementById(this.movieId);
if (!this.movie) {
var self = this;
setTimeout( function() { self.receiveEvent('load', null); }, 1 );
return;
}
// firefox on pc needs a "kick" in order to set these in certain cases
if (!this.ready && navigator.userAgent.match(/Firefox/) && navigator.userAgent.match(/Windows/)) {
var self = this;
setTimeout( function() { self.receiveEvent('load', null); }, 100 );
this.ready = true;
return;
}
this.ready = true;
this.movie.setText( this.clipText );
this.movie.setHandCursor( this.handCursorEnabled );
break;
case 'mouseover':
if (this.domElement && this.cssEffects) {
this.domElement.addClass('hover');
if (this.recoverActive) this.domElement.addClass('active');
}
break;
case 'mouseout':
if (this.domElement && this.cssEffects) {
this.recoverActive = false;
if (this.domElement.hasClass('active')) {
this.domElement.removeClass('active');
this.recoverActive = true;
}
this.domElement.removeClass('hover');
}
break;
case 'mousedown':
if (this.domElement && this.cssEffects) {
this.domElement.addClass('active');
}
break;
case 'mouseup':
if (this.domElement && this.cssEffects) {
this.domElement.removeClass('active');
this.recoverActive = false;
}
break;
} // switch eventName
if (this.handlers[eventName]) {
for (var idx = 0, len = this.handlers[eventName].length; idx < len; idx++) {
var func = this.handlers[eventName][idx];
if (typeof(func) == 'function') {
// actual function reference
func(this, args);
}
else if ((typeof(func) == 'object') && (func.length == 2)) {
// PHP style object + method, i.e. [myObject, 'myMethod']
func[0][ func[1] ](this, args);
}
else if (typeof(func) == 'string') {
// name of function
window[func](this, args);
}
} // foreach event handler defined
} // user defined handler for event
}
};

View File

@ -17,11 +17,11 @@
if( 'undefined' === typeof( console ) )
{
var console = {
log : function() {},
debug : function() {},
dump : function() {},
error : function() {},
warn : function(){}
};
var console = {
log : function() {},
debug : function() {},
dump : function() {},
error : function() {},
warn : function(){}
};
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,47 @@
/*!
* jQuery Cookie Plugin
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2011, Klaus Hartl
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://www.opensource.org/licenses/mit-license.php
* http://www.opensource.org/licenses/GPL-2.0
*/
(function($) {
$.cookie = function(key, value, options) {
// key and at least value given, set cookie...
if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) {
options = $.extend({}, options);
if (value === null || value === undefined) {
options.expires = -1;
}
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setDate(t.getDate() + days);
}
value = String(value);
return (document.cookie = [
encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// key and possibly options given, get cookie...
options = value || {};
var decode = options.raw ? function(s) { return s; } : decodeURIComponent;
var pairs = document.cookie.split('; ');
for (var i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) {
if (decode(pair[0]) === key) return decode(pair[1] || ''); // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, thus pair[1] may be undefined
}
return null;
};
})(jQuery);

View File

@ -1,36 +1,54 @@
/*
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.
*/
require
(
[
'lib/order!lib/console',
'lib/order!jquery',
'lib/order!lib/jquery.form',
'lib/order!lib/jquery.jstree',
'lib/order!lib/jquery.sammy',
'lib/order!lib/jquery.sparkline',
'lib/order!lib/jquery.timeago',
'lib/order!lib/highlight',
'lib/order!scripts/app',
[
'lib/order!lib/console',
'lib/order!jquery',
'lib/order!lib/jquery.cookie',
'lib/order!lib/jquery.form',
'lib/order!lib/jquery.jstree',
'lib/order!lib/jquery.sammy',
'lib/order!lib/jquery.sparkline',
'lib/order!lib/jquery.timeago',
'lib/order!lib/highlight',
'lib/order!lib/ZeroClipboard',
'lib/order!scripts/app',
'lib/order!scripts/analysis',
'lib/order!scripts/cloud',
'lib/order!scripts/cores',
'lib/order!scripts/dataimport',
'lib/order!scripts/file',
'lib/order!scripts/index',
'lib/order!scripts/java-properties',
'lib/order!scripts/logging',
'lib/order!scripts/ping',
'lib/order!scripts/plugins',
'lib/order!scripts/query',
'lib/order!scripts/replication',
'lib/order!scripts/schema-browser',
'lib/order!scripts/threads',
'lib/order!scripts/analysis',
'lib/order!scripts/cloud',
'lib/order!scripts/cores',
'lib/order!scripts/dataimport',
'lib/order!scripts/file',
'lib/order!scripts/index',
'lib/order!scripts/java-properties',
'lib/order!scripts/logging',
'lib/order!scripts/ping',
'lib/order!scripts/plugins',
'lib/order!scripts/query',
'lib/order!scripts/replication',
'lib/order!scripts/schema-browser',
'lib/order!scripts/threads',
'lib/order!scripts/dashboard'
],
function( $ )
{
app.run();
}
'lib/order!scripts/dashboard'
],
function( $ )
{
app.run();
}
);

View File

@ -1,420 +1,441 @@
/*
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.
*/
// #/:core/analysis
sammy.get
(
/^#\/([\w\d-]+)\/(analysis)$/,
function( context )
{
var core_basepath = this.active_core.attr( 'data-basepath' );
var content_element = $( '#content' );
/^#\/([\w\d-]+)\/(analysis)$/,
function( context )
{
var core_basepath = this.active_core.attr( 'data-basepath' );
var content_element = $( '#content' );
$.get
$.get
(
'tpl/analysis.html',
function( template )
{
content_element
.html( template );
var analysis_element = $( '#analysis', content_element );
var analysis_form = $( 'form', analysis_element );
var analysis_result = $( '#analysis-result', analysis_element );
analysis_result.hide();
$.ajax
(
'tpl/analysis.html',
function( template )
{
url : core_basepath + '/admin/luke?wt=json&show=schema',
dataType : 'json',
context : $( '#type_or_name', analysis_form ),
beforeSend : function( xhr, settings )
{
content_element
.html( template );
var analysis_element = $( '#analysis', content_element );
var analysis_form = $( 'form', analysis_element );
var analysis_result = $( '#analysis-result', analysis_element );
analysis_result.hide();
$.ajax
this
.html( '<option value="">Loading ... </option>' )
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
var content = '';
var fields = [];
for( var field_name in response.schema.fields )
{
fields.push
(
{
url : core_basepath + '/admin/luke?wt=json&show=schema',
dataType : 'json',
context : $( '#type_or_name', analysis_form ),
beforeSend : function( xhr, settings )
{
this
.html( '<option value="">Loading ... </option>' )
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
var content = '';
var fields = [];
for( var field_name in response.schema.fields )
{
fields.push
(
'<option value="fieldname=' + field_name + '">' + field_name + '</option>'
);
}
if( 0 !== fields.length )
{
content += '<optgroup label="Fields">' + "\n";
content += fields.sort().join( "\n" ) + "\n";
content += '</optgroup>' + "\n";
}
var types = [];
for( var type_name in response.schema.types )
{
types.push
(
'<option value="fieldtype=' + type_name + '">' + type_name + '</option>'
);
}
if( 0 !== types.length )
{
content += '<optgroup label="Types">' + "\n";
content += types.sort().join( "\n" ) + "\n";
content += '</optgroup>' + "\n";
}
this
.html( content );
$( 'option[value="fieldname\=' + response.schema.defaultSearchField + '"]', this )
.attr( 'selected', 'selected' );
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
'<option value="fieldname=' + field_name + '">' + field_name + '</option>'
);
$( '.analysis-error .head a', analysis_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parents( '.analysis-error' )
.toggleClass( 'expanded' );
}
);
$( '.verbose_output a', analysis_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parent()
.toggleClass( 'active' );
}
if( 0 !== fields.length )
{
content += '<optgroup label="Fields">' + "\n";
content += fields.sort().join( "\n" ) + "\n";
content += '</optgroup>' + "\n";
}
analysis_result
.toggleClass( 'verbose_output' );
var types = [];
for( var type_name in response.schema.types )
{
types.push
(
'<option value="fieldtype=' + type_name + '">' + type_name + '</option>'
);
}
if( 0 !== types.length )
{
content += '<optgroup label="Types">' + "\n";
content += types.sort().join( "\n" ) + "\n";
content += '</optgroup>' + "\n";
}
check_empty_spacer();
}
);
this
.html( content );
$( 'option[value="fieldname\=' + response.schema.defaultSearchField + '"]', this )
.attr( 'selected', 'selected' );
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
);
$( '.analysis-error .head a', analysis_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parents( '.analysis-error' )
.toggleClass( 'expanded' );
}
);
$( '.verbose_output a', analysis_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parent()
.toggleClass( 'active' );
analysis_result
.toggleClass( 'verbose_output' );
check_empty_spacer();
}
);
var check_empty_spacer = function()
var check_empty_spacer = function()
{
var spacer_holder = $( 'td.part.data.spacer .holder', analysis_result );
if( 0 === spacer_holder.size() )
{
return false;
}
var verbose_output = analysis_result.hasClass( 'verbose_output' );
spacer_holder
.each
(
function( index, element )
{
element = $( element );
if( verbose_output )
{
var spacer_holder = $( 'td.part.data.spacer .holder', analysis_result );
var cell = element.parent();
element.height( cell.height() );
}
else
{
element.removeAttr( 'style' );
}
}
);
}
if( 0 === spacer_holder.size() )
{
return false;
}
var verbose_output = analysis_result.hasClass( 'verbose_output' );
spacer_holder
.each
(
function( index, element )
{
element = $( element );
if( verbose_output )
{
var cell = element.parent();
element.height( cell.height() );
}
else
{
element.removeAttr( 'style' );
}
}
);
var button = $( 'button', analysis_form )
analysis_form
.ajaxForm
(
{
url : core_basepath + '/analysis/field?wt=json',
dataType : 'json',
beforeSubmit : function( array, form, options )
{
loader.show( button );
button.attr( 'disabled', true );
array.push( { name: 'analysis.showmatch', value: 'true' } );
var type_or_name = $( '#type_or_name', form ).val().split( '=' );
array.push( { name: 'analysis.' + type_or_name[0], value: type_or_name[1] } );
},
success : function( response, status_text, xhr, form )
{
$( '.analysis-error', analysis_element )
.hide();
analysis_result
.empty()
.show();
for( var name in response.analysis.field_names )
{
build_analysis_table( 'name', name, response.analysis.field_names[name] );
}
for( var name in response.analysis.field_types )
{
build_analysis_table( 'type', name, response.analysis.field_types[name] );
}
var button = $( 'button', analysis_form )
analysis_form
.ajaxForm
(
{
url : core_basepath + '/analysis/field?wt=json',
dataType : 'json',
beforeSubmit : function( array, form, options )
{
loader.show( button );
button.attr( 'disabled', true );
array.push( { name: 'analysis.showmatch', value: 'true' } );
var type_or_name = $( '#type_or_name', form ).val().split( '=' );
array.push( { name: 'analysis.' + type_or_name[0], value: type_or_name[1] } );
},
success : function( response, status_text, xhr, form )
{
$( '.analysis-error', analysis_element )
.hide();
analysis_result
.empty()
.show();
for( var name in response.analysis.field_names )
{
build_analysis_table( 'name', name, response.analysis.field_names[name] );
}
for( var name in response.analysis.field_types )
{
build_analysis_table( 'type', name, response.analysis.field_types[name] );
}
check_empty_spacer();
},
error : function( xhr, text_status, error_thrown )
{
analysis_result
.empty()
.hide();
check_empty_spacer();
},
error : function( xhr, text_status, error_thrown )
{
analysis_result
.empty()
.hide();
if( 404 === xhr.status )
{
$( '#analysis-handler-missing', analysis_element )
.show();
}
else
{
var error_message = error_thrown.match( /^(.+Exception):\s+(.*)$/ );
if( 404 === xhr.status )
{
$( '#analysis-handler-missing', analysis_element )
.show();
}
else
{
var error_message = error_thrown.match( /^(.+Exception):\s+(.*)$/ );
$( '#analysis-error', analysis_element )
.show();
$( '#analysis-error', analysis_element )
.show();
if( error_message )
{
$( '#analysis-error .head a span', analysis_element )
.text( error_message[1] );
$( '#analysis-error .head a span', analysis_element )
.text( error_message[1] );
$( '#analysis-error .body', analysis_element )
.text( error_message[2].replace( /(\s+at\s+)/g, " at\n" ) );
}
else
{
$( '#analysis-error .head a span', analysis_element )
.text( error_thrown );
}
}
},
complete : function()
{
loader.hide( $( 'button', analysis_form ) );
button.removeAttr( 'disabled' );
}
}
);
$( '#analysis-error .body', analysis_element )
.text( error_message[2].replace( /(\s+at\s+)/g, " at\n" ) );
}
},
complete : function()
{
loader.hide( $( 'button', analysis_form ) );
button.removeAttr( 'disabled' );
}
}
);
var generate_class_name = function( type )
{
var classes = [type];
if( 'text' !== type )
{
classes.push( 'verbose_output' );
}
return classes.join( ' ' );
}
var generate_class_name = function( type )
{
var classes = [type];
if( 'text' !== type )
{
classes.push( 'verbose_output' );
}
return classes.join( ' ' );
}
var build_analysis_table = function( field_or_name, name, analysis_data )
{
for( var type in analysis_data )
{
var type_length = analysis_data[type].length;
if( 0 !== type_length )
{
var global_elements_count = 0;
for( var i = 0; i < analysis_data[type].length; i += 2 )
{
if( 'string' === typeof analysis_data[type][i+1] )
{
analysis_data[type][i+1] = [{ 'text': analysis_data[type][i+1] }]
}
global_elements_count = Math.max( global_elements_count,
analysis_data[type][i+1].length );
}
var build_analysis_table = function( field_or_name, name, analysis_data )
{
for( var type in analysis_data )
{
var type_length = analysis_data[type].length;
if( 0 !== type_length )
{
var global_elements_count = 0;
for( var i = 0; i < analysis_data[type].length; i += 2 )
{
if( 'string' === typeof analysis_data[type][i+1] )
{
analysis_data[type][i+1] = [{ 'text': analysis_data[type][i+1] }]
}
global_elements_count = Math.max( global_elements_count, analysis_data[type][i+1].length );
}
var content = '<div class="' + type + '">' + "\n";
content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
var content = '<div class="' + type + '">' + "\n";
content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
for( var i = 0; i < analysis_data[type].length; i += 2 )
{
var colspan = 1;
var elements = analysis_data[type][i+1];
var elements_count = global_elements_count;
for( var i = 0; i < analysis_data[type].length; i += 2 )
{
var colspan = 1;
var elements = analysis_data[type][i+1];
var elements_count = global_elements_count;
if( !elements[0].positionHistory )
{
colspan = elements_count;
elements_count = 1;
}
if( !elements[0].positionHistory )
{
colspan = elements_count;
elements_count = 1;
}
var legend = [];
for( var key in elements[0] )
{
var key_parts = key.split( '#' );
var used_key = key_parts.pop();
var short_key = used_key;
var legend = [];
for( var key in elements[0] )
{
var key_parts = key.split( '#' );
var used_key = key_parts.pop();
var short_key = used_key;
if( 1 === key_parts.length )
{
used_key = '<abbr title="' + key + '">' + used_key + '</abbr>';
}
if( 1 === key_parts.length )
{
used_key = '<abbr title="' + key + '">' + used_key + '</abbr>';
}
if( 'positionHistory' === short_key || 'match' === short_key )
{
continue;
}
if( 'positionHistory' === short_key || 'match' === short_key )
{
continue;
}
legend.push
(
'<tr class="' + generate_class_name( short_key ) + '">' +
'<td>' + used_key + '</td>' +
'</tr>'
);
}
legend.push
(
'<tr class="' + generate_class_name( short_key ) + '">' +
'<td>' + used_key + '</td>' +
'</tr>'
);
}
content += '<tbody>' + "\n";
content += '<tr class="step">' + "\n";
content += '<tbody>' + "\n";
content += '<tr class="step">' + "\n";
// analyzer
var analyzer_name = analysis_data[type][i]
// analyzer
var analyzer_name = analysis_data[type][i]
.replace( /(\$1)+$/g, '' );
var analyzer_short = -1 !== analyzer_name.indexOf( '$' )
? analyzer_name.split( '$' )[1]
: analyzer_name.split( '.' ).pop();
analyzer_short = analyzer_short.match( /[A-Z]/g ).join( '' );
var analyzer_short = -1 !== analyzer_name.indexOf( '$' )
? analyzer_name.split( '$' )[1]
: analyzer_name.split( '.' ).pop();
analyzer_short = analyzer_short.match( /[A-Z]/g ).join( '' );
content += '<td class="part analyzer"><div>' + "\n";
content += '<abbr title="' + analysis_data[type][i] + '">' + "\n";
content += analyzer_short + '</abbr></div></td>' + "\n";
content += '<td class="part analyzer"><div>' + "\n";
content += '<abbr title="' + analysis_data[type][i] + '">' + "\n";
content += analyzer_short + '</abbr></div></td>' + "\n";
// legend
content += '<td class="part legend"><div class="holder">' + "\n";
content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
content += '<tr><td>' + "\n";
content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
content += legend.join( "\n" ) + "\n";
content += '</table></td></tr></table></td>' + "\n";
// legend
content += '<td class="part legend"><div class="holder">' + "\n";
content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
content += '<tr><td>' + "\n";
content += '<table border="0" cellspacing="0" cellpadding="0">' + "\n";
content += legend.join( "\n" ) + "\n";
content += '</table></td></tr></table></td>' + "\n";
// data
var cell_content = '<td class="part data spacer" '
+ ' colspan="' + colspan + '">'
+ '<div class="holder">&nbsp;</div>'
+ '</td>';
var cells = new Array( elements_count + 1 ).join( cell_content );
content += cells + "\n";
// data
var cell_content = '<td class="part data spacer" colspan="' + colspan + '"><div class="holder">&nbsp;</div></td>';
var cells = new Array( elements_count + 1 ).join( cell_content );
content += cells + "\n";
content += '</tr>' + "\n";
content += '</tbody>' + "\n";
}
content += '</table>' + "\n";
content += '</div>' + "\n";
content += '</tr>' + "\n";
content += '</tbody>' + "\n";
}
content += '</table>' + "\n";
content += '</div>' + "\n";
$( '.' + type, analysis_result )
.remove();
$( '.' + type, analysis_result )
.remove();
analysis_result
.append( content );
analysis_result
.append( content );
var analysis_result_type = $( '.' + type, analysis_result );
var analysis_result_type = $( '.' + type, analysis_result );
for( var i = 0; i < analysis_data[type].length; i += 2 )
{
for( var j = 0; j < analysis_data[type][i+1].length; j += 1 )
{
var pos = analysis_data[type][i+1][j].positionHistory
? analysis_data[type][i+1][j].positionHistory[0]
: 1;
var selector = 'tr.step:eq(' + ( i / 2 ) +') '
+ 'td.data:eq(' + ( pos - 1 ) + ') '
+ '.holder';
var cell = $( selector, analysis_result_type );
for( var i = 0; i < analysis_data[type].length; i += 2 )
{
for( var j = 0; j < analysis_data[type][i+1].length; j += 1 )
{
var pos = analysis_data[type][i+1][j].positionHistory
? analysis_data[type][i+1][j].positionHistory[0]
: 1;
var selector = 'tr.step:eq(' + ( i / 2 ) +') '
+ 'td.data:eq(' + ( pos - 1 ) + ') '
+ '.holder';
var cell = $( selector, analysis_result_type );
cell.parent()
.removeClass( 'spacer' );
cell.parent()
.removeClass( 'spacer' );
var table = $( 'table tr.details', cell );
if( 0 === table.size() )
{
cell
.html
(
'<table border="0" cellspacing="0" cellpadding="0">' +
'<tr class="details"></tr></table>'
);
var table = $( 'table tr.details', cell );
}
var tokens = [];
for( var key in analysis_data[type][i+1][j] )
{
var short_key = key.split( '#' ).pop();
if( 'positionHistory' === short_key || 'match' === short_key )
{
continue;
}
var classes = [];
classes.push( generate_class_name( short_key ) );
var data = analysis_data[type][i+1][j][key];
if( 'object' === typeof data && data instanceof Array )
{
data = data.join( ' ' );
}
if( 'string' === typeof data )
{
data = data.esc();
}
if( null === data || 0 === data.length )
{
classes.push( 'empty' );
data = '&empty;';
}
if( analysis_data[type][i+1][j].match &&
( 'text' === short_key || 'raw_bytes' === short_key ) )
{
classes.push( 'match' );
}
tokens.push
(
'<tr class="' + classes.join( ' ' ) + '">' +
'<td>' + data + '</td>' +
'</tr>'
);
}
table
.append
(
'<td class="details">' +
'<table border="0" cellspacing="0" cellpadding="0">' +
tokens.join( "\n" ) +
'</table></td>'
);
}
}
}
}
var table = $( 'table tr.details', cell );
if( 0 === table.size() )
{
cell
.html
(
'<table border="0" cellspacing="0" cellpadding="0">' +
'<tr class="details"></tr></table>'
);
var table = $( 'table tr.details', cell );
}
var tokens = [];
for( var key in analysis_data[type][i+1][j] )
{
var short_key = key.split( '#' ).pop();
if( 'positionHistory' === short_key || 'match' === short_key )
{
continue;
}
var classes = [];
classes.push( generate_class_name( short_key ) );
var data = analysis_data[type][i+1][j][key];
if( 'object' === typeof data && data instanceof Array )
{
data = data.join( ' ' );
}
if( 'string' === typeof data )
{
data = data.esc();
}
if( null === data || 0 === data.length )
{
classes.push( 'empty' );
data = '&empty;';
}
if( analysis_data[type][i+1][j].match &&
( 'text' === short_key || 'raw_bytes' === short_key ) )
{
classes.push( 'match' );
}
tokens.push
(
'<tr class="' + classes.join( ' ' ) + '">' +
'<td>' + data + '</td>' +
'</tr>'
);
}
table
.append
(
'<td class="details">' +
'<table border="0" cellspacing="0" cellpadding="0">' +
tokens.join( "\n" ) +
'</table></td>'
);
}
}
}
}
);
}
}
}
);
}
);

View File

@ -1,263 +1,308 @@
/*
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.
*/
var loader = {
show : function( element )
{
$( element )
.addClass( 'loader' );
},
show : function( element )
{
$( element )
.addClass( 'loader' );
},
hide : function( element )
{
$( element )
.removeClass( 'loader' );
}
hide : function( element )
{
$( element )
.removeClass( 'loader' );
}
};
Number.prototype.esc = function()
{
return new String( this ).esc();
return new String( this ).esc();
}
String.prototype.esc = function()
{
return this.replace( /</g, '&lt;' ).replace( />/g, '&gt;' );
return this.replace( /</g, '&lt;' ).replace( />/g, '&gt;' );
}
SolrDate = function( date )
{
// ["Sat Mar 03 11:00:00 CET 2012", "Sat", "Mar", "03", "11:00:00", "CET", "2012"]
var parts = date.match( /^(\w+)\s+(\w+)\s+(\d+)\s+(\d+\:\d+\:\d+)\s+(\w+)\s+(\d+)$/ );
// "Sat Mar 03 2012 10:37:33"
return new Date( parts[1] + ' ' + parts[2] + ' ' + parts[3] + ' ' + parts[6] + ' ' + parts[4] );
}
var sammy = $.sammy
(
function()
{
this.bind
(
'run',
function( event, config )
{
if( 0 === config.start_url.length )
{
location.href = '#/';
return false;
}
}
);
function()
{
this.bind
(
'run',
function( event, config )
{
if( 0 === config.start_url.length )
{
location.href = '#/';
return false;
}
}
);
// activate_core
this.before
(
{},
function( context )
{
$( 'li[id].active', app.menu_element )
.removeClass( 'active' );
// activate_core
this.before
(
{},
function( context )
{
$( 'li[id].active', app.menu_element )
.removeClass( 'active' );
$( 'ul li.active', app.menu_element )
.removeClass( 'active' );
$( 'ul li.active', app.menu_element )
.removeClass( 'active' );
if( this.params.splat )
{
var active_element = $( '#' + this.params.splat[0], app.menu_element );
if( this.params.splat )
{
var active_element = $( '#' + this.params.splat[0], app.menu_element );
if( 0 === active_element.size() )
{
var first_core = $( 'li[data-basepath]', app.menu_element ).attr( 'id' );
var first_core_url = context.path.replace( new RegExp( '/' + this.params.splat[0] + '/' ), '/' + first_core + '/' );
if( 0 === active_element.size() )
{
var first_core = $( 'li[data-basepath]', app.menu_element ).attr( 'id' );
var first_core_url = context.path.replace( new RegExp( '/' + this.params.splat[0] + '/' ), '/' + first_core + '/' );
context.redirect( first_core_url );
return false;
}
context.redirect( first_core_url );
return false;
}
active_element
.addClass( 'active' );
active_element
.addClass( 'active' );
if( this.params.splat[1] )
{
$( '.' + this.params.splat[1], active_element )
.addClass( 'active' );
}
if( this.params.splat[1] )
{
$( '.' + this.params.splat[1], active_element )
.addClass( 'active' );
}
if( !active_element.hasClass( 'global' ) )
{
this.active_core = active_element;
}
}
}
);
}
if( !active_element.hasClass( 'global' ) )
{
this.active_core = active_element;
}
}
}
);
}
);
var solr_admin = function( app_config )
{
self = this,
menu_element = null,
menu_element = null,
is_multicore = null,
cores_data = null,
active_core = null,
environment_basepath = null,
is_multicore = null,
cores_data = null,
active_core = null,
environment_basepath = null,
config = app_config,
params = null,
dashboard_values = null,
schema_browser_data = null,
config = app_config,
params = null,
dashboard_values = null,
schema_browser_data = null,
plugin_data = null,
plugin_data = null,
this.menu_element = $( '#menu ul' );
this.config = config;
this.menu_element = $( '#menu ul' );
this.config = config;
this.run = function()
{
$.ajax
(
this.run = function()
{
$.ajax
(
{
url : config.solr_path + config.core_admin_path + '?wt=json',
dataType : 'json',
beforeSend : function( arr, form, options )
{
$( '#content' )
.html( '<div id="index"><div class="loader">Loading ...</div></div>' );
},
success : function( response )
{
self.cores_data = response.status;
is_multicore = 'undefined' === typeof response.status[''];
if( is_multicore )
{
self.menu_element
.addClass( 'multicore' );
$( '#cores', menu_element )
.show();
}
else
{
self.menu_element
.addClass( 'singlecore' );
}
for( var core_name in response.status )
{
var core_path = config.solr_path + '/' + core_name;
if( !core_name )
{
url : config.solr_path + config.core_admin_path + '?wt=json',
dataType : 'json',
beforeSend : function( arr, form, options )
{
$( '#content' )
.html( '<div id="index"><div class="loader">Loading ...</div></div>' );
},
success : function( response )
{
self.cores_data = response.status;
is_multicore = 'undefined' === typeof response.status[''];
if( is_multicore )
{
self.menu_element
.addClass( 'multicore' );
$( '#cores', menu_element )
.show();
}
else
{
self.menu_element
.addClass( 'singlecore' );
}
for( var core_name in response.status )
{
var core_path = config.solr_path + '/' + core_name;
if( !core_name )
{
core_name = 'singlecore';
core_path = config.solr_path
}
if( !environment_basepath )
{
environment_basepath = core_path;
}
var core_tpl = '<li id="' + core_name + '" data-basepath="' + core_path + '">' + "\n"
+ ' <p><a href="#/' + core_name + '">' + core_name + '</a></p>' + "\n"
+ ' <ul>' + "\n"
+ ' <li class="ping"><a rel="' + core_path + '/admin/ping"><span>Ping</span></a></li>' + "\n"
+ ' <li class="query"><a href="#/' + core_name + '/query"><span>Query</span></a></li>' + "\n"
+ ' <li class="schema"><a href="#/' + core_name + '/schema"><span>Schema</span></a></li>' + "\n"
+ ' <li class="config"><a href="#/' + core_name + '/config"><span>Config</span></a></li>' + "\n"
+ ' <li class="replication"><a href="#/' + core_name + '/replication"><span>Replication</span></a></li>' + "\n"
+ ' <li class="analysis"><a href="#/' + core_name + '/analysis"><span>Analysis</span></a></li>' + "\n"
+ ' <li class="schema-browser"><a href="#/' + core_name + '/schema-browser"><span>Schema Browser</span></a></li>' + "\n"
+ ' <li class="plugins"><a href="#/' + core_name + '/plugins"><span>Plugins</span></a></li>' + "\n"
+ ' <li class="dataimport"><a href="#/' + core_name + '/dataimport"><span>Dataimport</span></a></li>' + "\n"
+ ' </ul>' + "\n"
+ '</li>';
self.menu_element
.append( core_tpl );
}
$.ajax
(
{
url : environment_basepath + '/admin/system?wt=json',
dataType : 'json',
beforeSend : function( arr, form, options )
{
},
success : function( response )
{
self.dashboard_values = response;
var environment_args = null;
var cloud_args = null;
if( response.jvm && response.jvm.jmx && response.jvm.jmx.commandLineArgs )
{
var command_line_args = response.jvm.jmx.commandLineArgs.join( ' | ' );
environment_args = command_line_args
.match( /-Dsolr.environment=((dev|test|prod)?[\w\d]*)/i );
cloud_args = command_line_args
.match( /-Dzk/i );
}
// environment
var environment_element = $( '#environment' );
if( environment_args )
{
environment_element
.show();
if( environment_args[1] )
{
environment_element
.html( environment_args[1] );
}
if( environment_args[2] )
{
environment_element
.addClass( environment_args[2] );
}
}
else
{
environment_element
.remove();
}
// cloud
var cloud_nav_element = $( '#menu #cloud' );
if( cloud_args )
{
cloud_nav_element
.show();
}
// sammy
sammy.run( location.hash );
},
error : function()
{
},
complete : function()
{
loader.hide( this );
}
}
);
},
error : function()
{
},
complete : function()
{
}
core_name = 'singlecore';
core_path = config.solr_path
}
);
}
if( !environment_basepath )
{
environment_basepath = core_path;
}
var core_tpl = '<li id="' + core_name + '" data-basepath="' + core_path + '">' + "\n"
+ ' <p><a href="#/' + core_name + '">' + core_name + '</a></p>' + "\n"
+ ' <ul>' + "\n"
+ ' <li class="ping"><a rel="' + core_path + '/admin/ping"><span>Ping</span></a></li>' + "\n"
+ ' <li class="query"><a href="#/' + core_name + '/query"><span>Query</span></a></li>' + "\n"
+ ' <li class="schema"><a href="#/' + core_name + '/schema"><span>Schema</span></a></li>' + "\n"
+ ' <li class="config"><a href="#/' + core_name + '/config"><span>Config</span></a></li>' + "\n"
+ ' <li class="replication"><a href="#/' + core_name + '/replication"><span>Replication</span></a></li>' + "\n"
+ ' <li class="analysis"><a href="#/' + core_name + '/analysis"><span>Analysis</span></a></li>' + "\n"
+ ' <li class="schema-browser"><a href="#/' + core_name + '/schema-browser"><span>Schema Browser</span></a></li>' + "\n"
+ ' <li class="plugins"><a href="#/' + core_name + '/plugins"><span>Plugins</span></a></li>' + "\n"
+ ' <li class="dataimport"><a href="#/' + core_name + '/dataimport"><span>Dataimport</span></a></li>' + "\n"
+ ' </ul>' + "\n"
+ '</li>';
self.menu_element
.append( core_tpl );
}
$.ajax
(
{
url : environment_basepath + '/admin/system?wt=json',
dataType : 'json',
beforeSend : function( arr, form, options )
{
},
success : function( response )
{
self.dashboard_values = response;
var environment_args = null;
var cloud_args = null;
if( response.jvm && response.jvm.jmx && response.jvm.jmx.commandLineArgs )
{
var command_line_args = response.jvm.jmx.commandLineArgs.join( ' | ' );
environment_args = command_line_args.match( /-Dsolr.environment=((dev|test|prod)?[\w\d]*)/i );
cloud_args = command_line_args.match( /-Dzk/i );
}
// title
$( 'title', document )
.append( ' (' + response.core.host + ')' );
// environment
var environment_element = $( '#environment' );
if( environment_args )
{
environment_element
.show();
if( environment_args[1] )
{
environment_element
.html( environment_args[1] );
}
if( environment_args[2] )
{
environment_element
.addClass( environment_args[2] );
}
}
else
{
environment_element
.remove();
}
// cloud
var cloud_nav_element = $( '#menu #cloud' );
if( cloud_args )
{
cloud_nav_element
.show();
}
// sammy
sammy.run( location.hash );
},
error : function()
{
var main = $( '#main' );
$( 'div[id$="-wrapper"]', main )
.remove();
main
.addClass( 'error' )
.append
(
'<div class="message">This interface requires that you activate the admin request handlers, add the following configuration to your <code>solrconfig.xml:</code></div>' +
'<div class="code"><pre class="syntax language-xml"><code>' +
'<!-- Admin Handlers - This will register all the standard admin RequestHandlers. -->'.esc() + "\n" +
'<requestHandler name="/admin/" class="solr.admin.AdminHandlers" />'.esc() +
'</code></pre></div>'
);
hljs.highlightBlock( $( 'pre', main ).get(0) );
},
complete : function()
{
loader.hide( this );
}
}
);
},
error : function()
{
},
complete : function()
{
}
}
);
}
};
var app = new solr_admin( app_config );
var app = new solr_admin( app_config );

View File

@ -1,174 +1,332 @@
/*
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.
*/
// #/cloud
sammy.get
(
/^#\/(cloud)$/,
function( context )
{
var content_element = $( '#content' );
/^#\/(cloud)$/,
function( context )
{
var core_basepath = $( 'li[data-basepath]', app.menu_element ).attr( 'data-basepath' );
var content_element = $( '#content' );
$.get
(
'tpl/cloud.html',
function( template )
$.get
(
'tpl/cloud.html',
function( template )
{
content_element
.html( template );
var cloud_element = $( '#cloud', content_element );
var cloud_content = $( '.content', cloud_element );
var debug_element = $( '#debug', cloud_element );
var debug_button = $( 'a.debug', cloud_element );
var clipboard_element = $( '.clipboard', debug_element );
var clipboard_button = $( 'a', clipboard_element );
debug_button
.die( 'click' )
.live
(
'click',
function( event )
{
content_element
.html( template );
debug_element.trigger( 'show' );
return false;
}
);
var cloud_element = $( '#cloud', content_element );
var cloud_content = $( '.content', cloud_element );
$( '.close', debug_element )
.die( 'click' )
.live
(
'click',
function( event )
{
debug_element.trigger( 'hide' );
return false;
}
);
$.ajax
$( '.clipboard', debug_element )
.die( 'click' )
.live
(
'click',
function( event )
{
return false;
}
);
debug_element
.die( 'show' )
.live
(
'show',
function( event )
{
debug_button.hide();
debug_element.show();
$.ajax
(
{
url : core_basepath + '/zookeeper?wt=json&dump=true',
dataType : 'text',
context : debug_element,
beforeSend : function( xhr, settings )
{
$( '.debug', debug_element )
.html( '<span class="loader">Loading Dump ...</span>' );
ZeroClipboard.setMoviePath( 'img/ZeroClipboard.swf' );
clipboard_client = new ZeroClipboard.Client();
clipboard_client.addEventListener
(
'load',
function( client )
{
}
);
clipboard_client.addEventListener
(
'complete',
function( client, text )
{
clipboard_element
.addClass( 'copied' );
clipboard_button
.data( 'text', clipboard_button.text() )
.text( clipboard_button.data( 'copied' ) );
}
);
},
success : function( response, text_status, xhr )
{
clipboard_client.glue
(
clipboard_element.get(0),
clipboard_button.get(0)
);
clipboard_client.setText( response.replace( /\\/g, '\\\\' ) );
$( '.debug', debug_element )
.removeClass( 'loader' )
.text( response );
},
error : function( xhr, text_status, error_thrown )
{
},
complete : function( xhr, text_status )
{
}
}
);
}
)
.die( 'hide' )
.live
(
'hide',
function( event )
{
$( '.debug', debug_element )
.empty();
clipboard_element
.removeClass( 'copied' );
clipboard_button
.data( 'copied', clipboard_button.text() )
.text( clipboard_button.data( 'text' ) );
clipboard_client.destroy();
debug_button.show();
debug_element.hide();
}
);
$.ajax
(
{
url : core_basepath + '/zookeeper?wt=json',
dataType : 'json',
context : cloud_content,
beforeSend : function( xhr, settings )
{
//this
// .html( '<div class="loader">Loading ...</div>' );
},
success : function( response, text_status, xhr )
{
var self = this;
$( '#tree', this )
.jstree
(
{
url : app.config.zookeeper_path,
{
"plugins" : [ "json_data" ],
"json_data" : {
"data" : response.tree,
"progressive_render" : true
},
"core" : {
"animation" : 0
}
}
)
.jstree
(
'open_node',
'li:first'
);
var tree_links = $( '#tree a', this );
tree_links
.die( 'click' )
.live
(
'click',
function( event )
{
$( 'a.active', $( this ).parents( '#tree' ) )
.removeClass( 'active' );
$( this )
.addClass( 'active' );
cloud_content
.addClass( 'show' );
var file_content = $( '#file-content' );
$( 'a.close', file_content )
.die( 'click' )
.live
(
'click',
function( event )
{
$( '#tree a.active' )
.removeClass( 'active' );
cloud_content
.removeClass( 'show' );
return false;
}
);
$.ajax
(
{
url : this.href,
dataType : 'json',
context : cloud_content,
context : file_content,
beforeSend : function( xhr, settings )
{
//this
// .html( '<div class="loader">Loading ...</div>' );
//this
// .html( 'loading' )
// .show();
},
success : function( response, text_status, xhr )
{
var self = this;
$( '#tree', this )
.jstree
(
{
"plugins" : [ "json_data" ],
"json_data" : {
"data" : response.tree,
"progressive_render" : true
},
"core" : {
"animation" : 0
}
}
);
//this
// .html( '<pre>' + response.znode.data + '</pre>' );
var tree_links = $( '#tree a', this );
var props = [];
for( var key in response.znode.prop )
{
props.push
(
'<li><dl class="clearfix">' + "\n" +
'<dt>' + key.esc() + '</dt>' + "\n" +
'<dd>' + response.znode.prop[key].esc() + '</dd>' + "\n" +
'</dl></li>'
);
}
tree_links
.die( 'click' )
.live
(
'click',
function( event )
{
$( 'a.active', $( this ).parents( '#tree' ) )
.removeClass( 'active' );
$( this )
.addClass( 'active' );
$( '#prop ul', this )
.empty()
.html( props.join( "\n" ) );
cloud_content
.addClass( 'show' );
$( '#prop ul li:odd', this )
.addClass( 'odd' );
var file_content = $( '#file-content' );
var data_element = $( '#data', this );
$( 'a.close', file_content )
.die( 'click' )
.live
(
'click',
function( event )
{
$( '#tree a.active' )
.removeClass( 'active' );
cloud_content
.removeClass( 'show' );
if( 0 !== parseInt( response.znode.prop.children_count ) )
{
data_element.hide();
}
else
{
var data = response.znode.data
? '<pre>' + response.znode.data.esc() + '</pre>'
: '<em>File "' + response.znode.path + '" has no Content</em>';
return false;
}
);
$.ajax
(
{
url : this.href,
dataType : 'json',
context : file_content,
beforeSend : function( xhr, settings )
{
//this
// .html( 'loading' )
// .show();
},
success : function( response, text_status, xhr )
{
//this
// .html( '<pre>' + response.znode.data + '</pre>' );
var props = [];
for( var key in response.znode.prop )
{
props.push
(
'<li><dl class="clearfix">' + "\n" +
'<dt>' + key.esc() + '</dt>' + "\n" +
'<dd>' + response.znode.prop[key].esc() + '</dd>' + "\n" +
'</dl></li>'
);
}
$( '#prop ul', this )
.empty()
.html( props.join( "\n" ) );
$( '#prop ul li:odd', this )
.addClass( 'odd' );
var data_element = $( '#data', this );
if( 0 !== parseInt( response.znode.prop.children_count ) )
{
data_element.hide();
}
else
{
var data = response.znode.data
? '<pre>' + response.znode.data.esc() + '</pre>'
: '<em>File "' + response.znode.path + '" has no Content</em>';
data_element
.show()
.html( data );
}
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
}
);
return false;
}
);
data_element
.show()
.html( data );
}
},
error : function( xhr, text_status, error_thrown )
error : function( xhr, text_status, error_thrown)
{
var message = 'Loading of <code>' + app.config.zookeeper_path + '</code> failed with "' + text_status + '" '
+ '(<code>' + error_thrown.message + '</code>)';
if( 200 !== xhr.status )
{
message = 'Loading of <code>' + app.config.zookeeper_path + '</code> failed with HTTP-Status ' + xhr.status + ' ';
}
this
.html( '<div class="block" id="error">' + message + '</div>' );
},
complete : function( xhr, text_status )
{
}
}
}
);
return false;
}
);
},
error : function( xhr, text_status, error_thrown )
{
var message = 'Loading of <code>' + app.config.zookeeper_path + '</code> failed with "' + text_status + '" '
+ '(<code>' + error_thrown.message + '</code>)';
if( 200 !== xhr.status )
{
message = 'Loading of <code>' + app.config.zookeeper_path + '</code> failed with HTTP-Status ' + xhr.status + ' ';
}
this
.html( '<div class="block" id="error">' + message + '</div>' );
},
complete : function( xhr, text_status )
{
}
}
);
}
}
);
}
);

View File

@ -1,495 +1,512 @@
/*
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.
*/
sammy.bind
(
'cores_load_data',
function( event, params )
'cores_load_data',
function( event, params )
{
if( app.cores_data )
{
if( app.cores_data )
{
params.callback( app.cores_data );
return true;
}
$.ajax
(
{
url : app.config.solr_path + app.config.core_admin_path + '?wt=json',
dataType : 'json',
beforeSend : function( xhr, settings )
{
},
success : function( response, text_status, xhr )
{
app.cores_data = response.status;
params.callback( app.cores_data );
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
}
);
params.callback( app.cores_data );
return true;
}
$.ajax
(
{
url : app.config.solr_path + app.config.core_admin_path + '?wt=json',
dataType : 'json',
beforeSend : function( xhr, settings )
{
},
success : function( response, text_status, xhr )
{
app.cores_data = response.status;
params.callback( app.cores_data );
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
}
);
}
);
sammy.bind
(
'cores_build_navigation',
function( event, params )
'cores_build_navigation',
function( event, params )
{
var navigation_content = ['<ul>'];
for( var core in params.cores )
{
var navigation_content = ['<ul>'];
navigation_content.push( '<li><a href="' + params.basepath + core + '">' + core + '</a></li>' );
}
for( var core in params.cores )
{
navigation_content.push( '<li><a href="' + params.basepath + core + '">' + core + '</a></li>' );
}
params.navigation_element
.html( navigation_content.join( "\n" ) );
params.navigation_element
.html( navigation_content.join( "\n" ) );
$( 'a[href="' + params.basepath + params.current_core + '"]', params.navigation_element ).parent()
.addClass( 'current' );
}
$( 'a[href="' + params.basepath + params.current_core + '"]', params.navigation_element ).parent()
.addClass( 'current' );
}
);
sammy.bind
(
'cores_load_template',
function( event, params )
'cores_load_template',
function( event, params )
{
if( app.cores_template )
{
if( app.cores_template )
{
params.callback();
return true;
}
params.callback();
return true;
}
$.get
(
'tpl/cores.html',
function( template )
{
params.content_element
.html( template );
$.get
(
'tpl/cores.html',
function( template )
{
params.content_element
.html( template );
app.cores_template = template;
params.callback();
}
);
}
app.cores_template = template;
params.callback();
}
);
}
);
// #/cores
sammy.get
(
/^#\/(cores)$/,
function( context )
{
delete app.cores_template;
/^#\/(cores)$/,
function( context )
{
delete app.cores_template;
sammy.trigger
(
'cores_load_data',
sammy.trigger
(
'cores_load_data',
{
callback : function( cores )
{
var first_core = null;
for( var key in cores )
{
if( !first_core )
{
callback : function( cores )
first_core = key;
}
continue;
}
context.redirect( context.path + '/' + first_core );
}
}
);
}
);
// #/cores
sammy.get
(
/^#\/(cores)\//,
function( context )
{
var content_element = $( '#content' );
var path_parts = this.path.match( /^(.+\/cores\/)(.*)$/ );
var current_core = path_parts[2];
sammy.trigger
(
'cores_load_data',
{
callback : function( cores )
{
sammy.trigger
(
'cores_load_template',
{
content_element : content_element,
callback : function()
{
var cores_element = $( '#cores', content_element );
var navigation_element = $( '#navigation', cores_element );
var list_element = $( '#list', navigation_element );
var data_element = $( '#data', cores_element );
var core_data_element = $( '#core-data', data_element );
var index_data_element = $( '#index-data', data_element );
sammy.trigger
(
'cores_build_navigation',
{
cores : cores,
basepath : path_parts[1],
current_core : current_core,
navigation_element : list_element
}
);
var core_data = cores[current_core];
var core_basepath = $( '#' + current_core, app.menu_element ).attr( 'data-basepath' );
// core-data
$( 'h2 span', core_data_element )
.html( core_data.name );
$( '.startTime dd', core_data_element )
.html( core_data.startTime );
$( '.instanceDir dd', core_data_element )
.html( core_data.instanceDir );
$( '.dataDir dd', core_data_element )
.html( core_data.dataDir );
// index-data
$( '.lastModified dd', index_data_element )
.html( core_data.index.lastModified );
$( '.version dd', index_data_element )
.html( core_data.index.version );
$( '.numDocs dd', index_data_element )
.html( core_data.index.numDocs );
$( '.maxDoc dd', index_data_element )
.html( core_data.index.maxDoc );
$( '.optimized dd', index_data_element )
.addClass( core_data.index.optimized ? 'ico-1' : 'ico-0' );
$( '#actions .optimize', cores_element )
.show();
$( '.optimized dd span', index_data_element )
.html( core_data.index.optimized ? 'yes' : 'no' );
$( '.current dd', index_data_element )
.addClass( core_data.index.current ? 'ico-1' : 'ico-0' );
$( '.current dd span', index_data_element )
.html( core_data.index.current ? 'yes' : 'no' );
$( '.hasDeletions dd', index_data_element )
.addClass( core_data.index.hasDeletions ? 'ico-1' : 'ico-0' );
$( '.hasDeletions dd span', index_data_element )
.html( core_data.index.hasDeletions ? 'yes' : 'no' );
$( '.directory dd', index_data_element )
.html
(
core_data.index.directory
.replace( /:/g, ':&#8203;' )
.replace( /@/g, '@&#8203;' )
);
var core_names = [];
var core_selects = $( '#actions select', cores_element );
for( var key in cores )
{
var first_core = null;
for( var key in cores )
core_names.push( '<option value="' + key + '">' + key + '</option>' )
}
core_selects
.html( core_names.join( "\n") );
$( 'option[value="' + current_core + '"]', core_selects.filter( '#swap_core' ) )
.attr( 'selected', 'selected' );
$( 'option[value="' + current_core + '"]', core_selects.filter( '.other' ) )
.attr( 'disabled', 'disabled' )
.addClass( 'disabled' );
$( 'input[name="core"]', cores_element )
.val( current_core );
// layout
var actions_element = $( '.actions', cores_element );
var button_holder_element = $( '.button-holder.options', actions_element );
button_holder_element
.die( 'toggle' )
.live
(
'toggle',
function( event )
{
if( !first_core )
{
first_core = key;
}
continue;
}
context.redirect( context.path + '/' + first_core );
}
}
);
}
);
// #/cores
sammy.get
(
/^#\/(cores)\//,
function( context )
{
var content_element = $( '#content' );
var path_parts = this.path.match( /^(.+\/cores\/)(.*)$/ );
var current_core = path_parts[2];
sammy.trigger
(
'cores_load_data',
{
callback : function( cores )
{
sammy.trigger
(
'cores_load_template',
{
content_element : content_element,
callback : function()
{
var cores_element = $( '#cores', content_element );
var navigation_element = $( '#navigation', cores_element );
var list_element = $( '#list', navigation_element );
var data_element = $( '#data', cores_element );
var core_data_element = $( '#core-data', data_element );
var index_data_element = $( '#index-data', data_element );
sammy.trigger
(
'cores_build_navigation',
{
cores : cores,
basepath : path_parts[1],
current_core : current_core,
navigation_element : list_element
}
);
var core_data = cores[current_core];
var core_basepath = $( '#' + current_core, app.menu_element ).attr( 'data-basepath' );
// core-data
$( 'h2 span', core_data_element )
.html( core_data.name );
$( '.startTime dd', core_data_element )
.html( core_data.startTime );
$( '.instanceDir dd', core_data_element )
.html( core_data.instanceDir );
$( '.dataDir dd', core_data_element )
.html( core_data.dataDir );
// index-data
$( '.lastModified dd', index_data_element )
.html( core_data.index.lastModified );
$( '.version dd', index_data_element )
.html( core_data.index.version );
$( '.numDocs dd', index_data_element )
.html( core_data.index.numDocs );
$( '.maxDoc dd', index_data_element )
.html( core_data.index.maxDoc );
$( '.optimized dd', index_data_element )
.addClass( core_data.index.optimized ? 'ico-1' : 'ico-0' );
$( '#actions .optimize', cores_element )
.show();
$( '.optimized dd span', index_data_element )
.html( core_data.index.optimized ? 'yes' : 'no' );
$( '.current dd', index_data_element )
.addClass( core_data.index.current ? 'ico-1' : 'ico-0' );
$( '.current dd span', index_data_element )
.html( core_data.index.current ? 'yes' : 'no' );
$( '.hasDeletions dd', index_data_element )
.addClass( core_data.index.hasDeletions ? 'ico-1' : 'ico-0' );
$( '.hasDeletions dd span', index_data_element )
.html( core_data.index.hasDeletions ? 'yes' : 'no' );
$( '.directory dd', index_data_element )
.html
(
core_data.index.directory
.replace( /:/g, ':&#8203;' )
.replace( /@/g, '@&#8203;' )
);
var core_names = [];
var core_selects = $( '#actions select', cores_element );
for( var key in cores )
{
core_names.push( '<option value="' + key + '">' + key + '</option>' )
}
core_selects
.html( core_names.join( "\n") );
$( 'option[value="' + current_core + '"]', core_selects.filter( '#swap_core' ) )
.attr( 'selected', 'selected' );
$( 'option[value="' + current_core + '"]', core_selects.filter( '.other' ) )
.attr( 'disabled', 'disabled' )
.addClass( 'disabled' );
$( 'input[name="core"]', cores_element )
.val( current_core );
// layout
var actions_element = $( '.actions', cores_element );
var button_holder_element = $( '.button-holder.options', actions_element );
button_holder_element
.die( 'toggle' )
.live
(
'toggle',
function( event )
{
var element = $( this );
var element = $( this );
element
.toggleClass( 'active' );
element
.toggleClass( 'active' );
if( element.hasClass( 'active' ) )
{
button_holder_element
.not( element )
.removeClass( 'active' );
}
}
);
if( element.hasClass( 'active' ) )
{
button_holder_element
.not( element )
.removeClass( 'active' );
}
}
);
$( '.button a', button_holder_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parents( '.button-holder' )
.trigger( 'toggle' );
}
);
$( '.button a', button_holder_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parents( '.button-holder' )
.trigger( 'toggle' );
}
);
$( 'form a.submit', button_holder_element )
.die( 'click' )
.live
(
'click',
function( event )
{
var element = $( this );
var form_element = element.parents( 'form' );
var action = $( 'input[name="action"]', form_element ).val().toLowerCase();
$( 'form a.submit', button_holder_element )
.die( 'click' )
.live
(
'click',
function( event )
{
var element = $( this );
var form_element = element.parents( 'form' );
var action = $( 'input[name="action"]', form_element ).val().toLowerCase();
form_element
.ajaxSubmit
(
{
url : app.config.solr_path + app.config.core_admin_path + '?wt=json',
dataType : 'json',
beforeSubmit : function( array, form, options )
{
//loader
},
success : function( response, status_text, xhr, form )
{
delete app.cores_data;
form_element
.ajaxSubmit
(
{
url : app.config.solr_path + app.config.core_admin_path + '?wt=json',
dataType : 'json',
beforeSubmit : function( array, form, options )
{
//loader
},
success : function( response, status_text, xhr, form )
{
delete app.cores_data;
if( 'rename' === action )
{
context.redirect( path_parts[1] + $( 'input[name="other"]', form_element ).val() );
}
else if( 'swap' === action )
{
window.location.reload();
}
if( 'rename' === action )
{
context.redirect( path_parts[1] + $( 'input[name="other"]', form_element ).val() );
}
else if( 'swap' === action )
{
window.location.reload();
}
$( 'a.reset', form )
.trigger( 'click' );
},
error : function( xhr, text_status, error_thrown )
{
},
complete : function()
{
//loader
}
}
);
return false;
}
);
$( 'form a.reset', button_holder_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parents( 'form' )
.resetForm();
$( this ).parents( '.button-holder' )
.trigger( 'toggle' );
return false;
}
);
var reload_button = $( '#actions .reload', cores_element );
reload_button
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
url : app.config.solr_path + app.config.core_admin_path + '?wt=json&action=RELOAD&core=' + current_core,
dataType : 'json',
context : $( this ),
beforeSend : function( xhr, settings )
{
this
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
this
.addClass( 'success' );
window.setTimeout
(
function()
{
reload_button
.removeClass( 'success' );
},
5000
);
},
error : function( xhr, text_status, error_thrown )
{
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
);
}
);
$( '#actions .unload', cores_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
url : app.config.solr_path + app.config.core_admin_path + '?wt=json&action=UNLOAD&core=' + current_core,
dataType : 'json',
context : $( this ),
beforeSend : function( xhr, settings )
{
this
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
delete app.cores_data;
context.redirect( path_parts[1].substr( 0, path_parts[1].length - 1 ) );
},
error : function( xhr, text_status, error_thrown )
{
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
);
}
);
var optimize_button = $( '#actions .optimize', cores_element );
optimize_button
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
url : core_basepath + '/update?optimize=true&waitFlush=true&wt=json',
dataType : 'json',
context : $( this ),
beforeSend : function( xhr, settings )
{
this
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
this
.addClass( 'success' );
window.setTimeout
(
function()
{
optimize_button
.removeClass( 'success' );
},
5000
);
$( '.optimized dd.ico-0', index_data_element )
.removeClass( 'ico-0' )
.addClass( 'ico-1' );
},
error : function( xhr, text_status, error_thrown)
{
console.warn( 'd0h, optimize broken!' );
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
);
}
);
$( '.timeago', data_element )
.timeago();
$( 'ul', data_element )
.each
(
function( i, element )
{
$( 'li:odd', element )
.addClass( 'odd' );
}
)
$( 'a.reset', form )
.trigger( 'click' );
},
error : function( xhr, text_status, error_thrown )
{
},
complete : function()
{
//loader
}
}
);
return false;
}
);
$( 'form a.reset', button_holder_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parents( 'form' )
.resetForm();
$( this ).parents( '.button-holder' )
.trigger( 'toggle' );
return false;
}
);
var reload_button = $( '#actions .reload', cores_element );
reload_button
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
url : app.config.solr_path + app.config.core_admin_path + '?wt=json&action=RELOAD&core=' + current_core,
dataType : 'json',
context : $( this ),
beforeSend : function( xhr, settings )
{
this
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
this
.addClass( 'success' );
window.setTimeout
(
function()
{
reload_button
.removeClass( 'success' );
},
5000
);
},
error : function( xhr, text_status, error_thrown )
{
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
);
}
);
}
);
$( '#actions .unload', cores_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
url : app.config.solr_path + app.config.core_admin_path + '?wt=json&action=UNLOAD&core=' + current_core,
dataType : 'json',
context : $( this ),
beforeSend : function( xhr, settings )
{
this
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
delete app.cores_data;
context.redirect( path_parts[1].substr( 0, path_parts[1].length - 1 ) );
},
error : function( xhr, text_status, error_thrown )
{
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
);
}
);
var optimize_button = $( '#actions .optimize', cores_element );
optimize_button
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
url : core_basepath + '/update?optimize=true&waitFlush=true&wt=json',
dataType : 'json',
context : $( this ),
beforeSend : function( xhr, settings )
{
this
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
this
.addClass( 'success' );
window.setTimeout
(
function()
{
optimize_button
.removeClass( 'success' );
},
5000
);
$( '.optimized dd.ico-0', index_data_element )
.removeClass( 'ico-0' )
.addClass( 'ico-1' );
},
error : function( xhr, text_status, error_thrown)
{
console.warn( 'd0h, optimize broken!' );
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
);
}
);
$( '.timeago', data_element )
.timeago();
$( 'ul', data_element )
.each
(
function( i, element )
{
$( 'li:odd', element )
.addClass( 'odd' );
}
)
}
}
);
}
);
}
}
);
}
);

View File

@ -1,400 +1,417 @@
/*
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.
*/
// #/:core
sammy.get
(
/^#\/([\w\d-]+)$/,
function( context )
/^#\/([\w\d-]+)$/,
function( context )
{
var core_basepath = this.active_core.attr( 'data-basepath' );
var content_element = $( '#content' );
content_element
.removeClass( 'single' );
var core_menu = $( 'ul', this.active_core );
if( !core_menu.data( 'admin-extra-loaded' ) )
{
var core_basepath = this.active_core.attr( 'data-basepath' );
var content_element = $( '#content' );
content_element
.removeClass( 'single' );
var core_menu = $( 'ul', this.active_core );
if( !core_menu.data( 'admin-extra-loaded' ) )
core_menu.data( 'admin-extra-loaded', new Date() );
$.get
(
core_basepath + '/admin/file/?file=admin-extra.menu-top.html',
function( menu_extra )
{
core_menu.data( 'admin-extra-loaded', new Date() );
$.get
(
core_basepath + '/admin/file/?file=admin-extra.menu-top.html',
function( menu_extra )
{
core_menu
.prepend( menu_extra );
}
);
$.get
(
core_basepath + '/admin/file/?file=admin-extra.menu-bottom.html',
function( menu_extra )
{
core_menu
.append( menu_extra );
}
);
core_menu
.prepend( menu_extra );
}
$.get
(
'tpl/dashboard.html',
function( template )
{
content_element
.html( template );
var dashboard_element = $( '#dashboard' );
$.ajax
(
{
url : core_basepath + '/admin/luke?wt=json&show=index&numTerms=0',
dataType : 'json',
context : $( '#statistics', dashboard_element ),
beforeSend : function( xhr, settings )
{
$( 'h2', this )
.addClass( 'loader' );
$( '.message', this )
.show()
.html( 'Loading ...' );
$( '.content' )
.hide();
},
success : function( response, text_status, xhr )
{
$( '.message', this )
.empty()
.hide();
$( '.content', this )
.show();
var data = {
'index_num-docs' : response['index']['numDocs'],
'index_max-doc' : response['index']['maxDoc'],
'index_version' : response['index']['version'],
'index_segmentCount' : response['index']['segmentCount'],
'index_last-modified' : response['index']['lastModified']
};
for( var key in data )
{
$( '.' + key, this )
.show();
$( '.value.' + key, this )
.html( data[key] );
}
var optimized_element = $( '.value.index_optimized', this );
if( !response['index']['hasDeletions'] )
{
optimized_element
.addClass( 'ico-1' );
$( 'span', optimized_element )
.html( 'yes' );
}
else
{
optimized_element
.addClass( 'ico-0' );
$( 'span', optimized_element )
.html( 'no' );
}
var current_element = $( '.value.index_current', this );
if( response['index']['current'] )
{
current_element
.addClass( 'ico-1' );
$( 'span', current_element )
.html( 'yes' );
}
else
{
current_element
.addClass( 'ico-0' );
$( 'span', current_element )
.html( 'no' );
}
$( 'a', optimized_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
url : core_basepath + '/update?optimize=true&waitFlush=true&wt=json',
dataType : 'json',
context : $( this ),
beforeSend : function( xhr, settings )
{
this
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
this.parents( 'dd' )
.removeClass( 'ico-0' )
.addClass( 'ico-1' );
},
error : function( xhr, text_status, error_thrown)
{
console.warn( 'd0h, optimize broken!' );
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
);
}
);
$( '.timeago', this )
.timeago();
},
error : function( xhr, text_status, error_thrown )
{
this
.addClass( 'disabled' );
$( '.message', this )
.show()
.html( 'Luke is not configured' );
},
complete : function( xhr, text_status )
{
$( 'h2', this )
.removeClass( 'loader' );
}
}
);
$.ajax
(
{
url : core_basepath + '/replication?command=details&wt=json',
dataType : 'json',
context : $( '#replication', dashboard_element ),
beforeSend : function( xhr, settings )
{
$( 'h2', this )
.addClass( 'loader' );
$( '.message', this )
.show()
.html( 'Loading' );
$( '.content', this )
.hide();
},
success : function( response, text_status, xhr )
{
$( '.message', this )
.empty()
.hide();
$( '.content', this )
.show();
$( '.replication', context.active_core )
.show();
var data = response.details;
var is_slave = 'undefined' !== typeof( data.slave );
var headline = $( 'h2 span', this );
var details_element = $( '#details', this );
var current_type_element = $( ( is_slave ? '.slave' : '.master' ), this );
if( is_slave )
{
this
.addClass( 'slave' );
headline
.html( headline.html() + ' (Slave)' );
}
else
{
this
.addClass( 'master' );
headline
.html( headline.html() + ' (Master)' );
}
$( '.version div', current_type_element )
.html( data.indexVersion );
$( '.generation div', current_type_element )
.html( data.generation );
$( '.size div', current_type_element )
.html( data.indexSize );
if( is_slave )
{
var master_element = $( '.master', details_element );
$( '.version div', master_element )
.html( data.slave.masterDetails.indexVersion );
$( '.generation div', master_element )
.html( data.slave.masterDetails.generation );
$( '.size div', master_element )
.html( data.slave.masterDetails.indexSize );
if( data.indexVersion !== data.slave.masterDetails.indexVersion )
{
$( '.version', details_element )
.addClass( 'diff' );
}
else
{
$( '.version', details_element )
.removeClass( 'diff' );
}
if( data.generation !== data.slave.masterDetails.generation )
{
$( '.generation', details_element )
.addClass( 'diff' );
}
else
{
$( '.generation', details_element )
.removeClass( 'diff' );
}
}
},
error : function( xhr, text_status, error_thrown)
{
this
.addClass( 'disabled' );
$( '.message', this )
.show()
.html( 'Replication is not configured' );
},
complete : function( xhr, text_status )
{
$( 'h2', this )
.removeClass( 'loader' );
}
}
);
$.ajax
(
{
url : core_basepath + '/dataimport?command=details&wt=json',
dataType : 'json',
context : $( '#dataimport', dashboard_element ),
beforeSend : function( xhr, settings )
{
$( 'h2', this )
.addClass( 'loader' );
$( '.message', this )
.show()
.html( 'Loading' );
},
success : function( response, text_status, xhr )
{
$( '.message', this )
.empty()
.hide();
$( 'dl', this )
.show();
var data = {
'status' : response['status'],
'info' : response['statusMessages']['']
};
for( var key in data )
{
$( '.' + key, this )
.show();
$( '.value.' + key, this )
.html( data[key] );
}
},
error : function( xhr, text_status, error_thrown)
{
this
.addClass( 'disabled' );
$( '.message', this )
.show()
.html( 'Dataimport is not configured' );
},
complete : function( xhr, text_status )
{
$( 'h2', this )
.removeClass( 'loader' );
}
}
);
$.ajax
(
{
url : core_basepath + '/admin/file/?file=admin-extra.html',
dataType : 'html',
context : $( '#admin-extra', dashboard_element ),
beforeSend : function( xhr, settings )
{
$( 'h2', this )
.addClass( 'loader' );
$( '.message', this )
.show()
.html( 'Loading' );
$( '.content', this )
.hide();
},
success : function( response, text_status, xhr )
{
$( '.message', this )
.hide()
.empty();
$( '.content', this )
.show()
.html( response );
},
error : function( xhr, text_status, error_thrown)
{
this
.addClass( 'disabled' );
$( '.message', this )
.show()
.html( 'We found no "admin-extra.html" file.' );
},
complete : function( xhr, text_status )
{
$( 'h2', this )
.removeClass( 'loader' );
}
}
);
}
);
);
$.get
(
core_basepath + '/admin/file/?file=admin-extra.menu-bottom.html',
function( menu_extra )
{
core_menu
.append( menu_extra );
}
);
}
$.get
(
'tpl/dashboard.html',
function( template )
{
content_element
.html( template );
var dashboard_element = $( '#dashboard' );
$.ajax
(
{
url : core_basepath + '/admin/luke?wt=json&show=index&numTerms=0',
dataType : 'json',
context : $( '#statistics', dashboard_element ),
beforeSend : function( xhr, settings )
{
$( 'h2', this )
.addClass( 'loader' );
$( '.message', this )
.show()
.html( 'Loading ...' );
$( '.content' )
.hide();
},
success : function( response, text_status, xhr )
{
$( '.message', this )
.empty()
.hide();
$( '.content', this )
.show();
var data = {
'index_num-docs' : response['index']['numDocs'],
'index_max-doc' : response['index']['maxDoc'],
'index_version' : response['index']['version'],
'index_segmentCount' : response['index']['segmentCount'],
'index_last-modified' : response['index']['lastModified']
};
for( var key in data )
{
$( '.' + key, this )
.show();
$( '.value.' + key, this )
.html( data[key] );
}
var optimized_element = $( '.value.index_optimized', this );
if( !response['index']['hasDeletions'] )
{
optimized_element
.addClass( 'ico-1' );
$( 'span', optimized_element )
.html( 'yes' );
}
else
{
optimized_element
.addClass( 'ico-0' );
$( 'span', optimized_element )
.html( 'no' );
}
var current_element = $( '.value.index_current', this );
if( response['index']['current'] )
{
current_element
.addClass( 'ico-1' );
$( 'span', current_element )
.html( 'yes' );
}
else
{
current_element
.addClass( 'ico-0' );
$( 'span', current_element )
.html( 'no' );
}
$( 'a', optimized_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
url : core_basepath + '/update?optimize=true&waitFlush=true&wt=json',
dataType : 'json',
context : $( this ),
beforeSend : function( xhr, settings )
{
this
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
this.parents( 'dd' )
.removeClass( 'ico-0' )
.addClass( 'ico-1' );
},
error : function( xhr, text_status, error_thrown)
{
console.warn( 'd0h, optimize broken!' );
},
complete : function( xhr, text_status )
{
this
.removeClass( 'loader' );
}
}
);
}
);
$( '.timeago', this )
.timeago();
},
error : function( xhr, text_status, error_thrown )
{
this
.addClass( 'disabled' );
$( '.message', this )
.show()
.html( 'Luke is not configured' );
},
complete : function( xhr, text_status )
{
$( 'h2', this )
.removeClass( 'loader' );
}
}
);
$.ajax
(
{
url : core_basepath + '/replication?command=details&wt=json',
dataType : 'json',
context : $( '#replication', dashboard_element ),
beforeSend : function( xhr, settings )
{
$( 'h2', this )
.addClass( 'loader' );
$( '.message', this )
.show()
.html( 'Loading' );
$( '.content', this )
.hide();
},
success : function( response, text_status, xhr )
{
$( '.message', this )
.empty()
.hide();
$( '.content', this )
.show();
$( '.replication', context.active_core )
.show();
var data = response.details;
var is_slave = 'undefined' !== typeof( data.slave );
var headline = $( 'h2 span', this );
var details_element = $( '#details', this );
var current_type_element = $( ( is_slave ? '.slave' : '.master' ), this );
if( is_slave )
{
this
.addClass( 'slave' );
headline
.html( headline.html() + ' (Slave)' );
}
else
{
this
.addClass( 'master' );
headline
.html( headline.html() + ' (Master)' );
}
$( '.version div', current_type_element )
.html( data.indexVersion );
$( '.generation div', current_type_element )
.html( data.generation );
$( '.size div', current_type_element )
.html( data.indexSize );
if( is_slave )
{
var master_element = $( '.master', details_element );
$( '.version div', master_element )
.html( data.slave.masterDetails.indexVersion );
$( '.generation div', master_element )
.html( data.slave.masterDetails.generation );
$( '.size div', master_element )
.html( data.slave.masterDetails.indexSize );
if( data.indexVersion !== data.slave.masterDetails.indexVersion )
{
$( '.version', details_element )
.addClass( 'diff' );
}
else
{
$( '.version', details_element )
.removeClass( 'diff' );
}
if( data.generation !== data.slave.masterDetails.generation )
{
$( '.generation', details_element )
.addClass( 'diff' );
}
else
{
$( '.generation', details_element )
.removeClass( 'diff' );
}
}
},
error : function( xhr, text_status, error_thrown)
{
this
.addClass( 'disabled' );
$( '.message', this )
.show()
.html( 'Replication is not configured' );
},
complete : function( xhr, text_status )
{
$( 'h2', this )
.removeClass( 'loader' );
}
}
);
$.ajax
(
{
url : core_basepath + '/dataimport?command=details&wt=json',
dataType : 'json',
context : $( '#dataimport', dashboard_element ),
beforeSend : function( xhr, settings )
{
$( 'h2', this )
.addClass( 'loader' );
$( '.message', this )
.show()
.html( 'Loading' );
},
success : function( response, text_status, xhr )
{
$( '.message', this )
.empty()
.hide();
$( 'dl', this )
.show();
var data = {
'status' : response['status'],
'info' : response['statusMessages']['']
};
for( var key in data )
{
$( '.' + key, this )
.show();
$( '.value.' + key, this )
.html( data[key] );
}
},
error : function( xhr, text_status, error_thrown)
{
this
.addClass( 'disabled' );
$( '.message', this )
.show()
.html( 'Dataimport is not configured' );
},
complete : function( xhr, text_status )
{
$( 'h2', this )
.removeClass( 'loader' );
}
}
);
$.ajax
(
{
url : core_basepath + '/admin/file/?file=admin-extra.html',
dataType : 'html',
context : $( '#admin-extra', dashboard_element ),
beforeSend : function( xhr, settings )
{
$( 'h2', this )
.addClass( 'loader' );
$( '.message', this )
.show()
.html( 'Loading' );
$( '.content', this )
.hide();
},
success : function( response, text_status, xhr )
{
$( '.message', this )
.hide()
.empty();
$( '.content', this )
.show()
.html( response );
},
error : function( xhr, text_status, error_thrown)
{
this
.addClass( 'disabled' );
$( '.message', this )
.show()
.html( 'We found no "admin-extra.html" file.' );
},
complete : function( xhr, text_status )
{
$( 'h2', this )
.removeClass( 'loader' );
}
}
);
}
);
}
);

View File

@ -1,3 +1,20 @@
/*
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.
*/
sammy.bind
(
'dataimport_queryhandler_load',
@ -186,7 +203,7 @@ sammy.get
{
var code = $(
'<pre class="syntax language-xml"><code>' +
xhr.responseText.replace( /\</g, '&lt;' ).replace( /\>/g, '&gt;' ) +
xhr.responseText.esc() +
'</code></pre>'
);
this.html( code );
@ -415,38 +432,29 @@ sammy.get
// form
$( 'form', form_element )
.die( 'submit' )
.live
.ajaxForm
(
'submit',
function( event )
{
$.ajax
(
{
url : handler_url + '?command=full-import',
dataType : 'xml',
beforeSend : function( xhr, settings )
{
},
success : function( response, text_status, xhr )
{
console.debug( response );
dataimport_fetch_status();
},
error : function( xhr, text_status, error_thrown )
{
console.debug( arguments );
},
complete : function( xhr, text_status )
{
}
}
);
return false;
url : handler_url,
dataType : 'xml',
beforeSend : function( xhr, settings )
{
},
success : function( response, text_status, xhr )
{
console.debug( response );
dataimport_fetch_status();
},
error : function( xhr, text_status, error_thrown )
{
console.debug( arguments );
},
complete : function( xhr, text_status )
{
}
}
);
}
);
}
);
);

View File

@ -1,37 +1,54 @@
/*
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.
*/
// #/:core/schema, #/:core/config
sammy.get
(
/^#\/([\w\d-]+)\/(schema|config)$/,
function( context )
{
var core_basepath = this.active_core.attr( 'data-basepath' );
/^#\/([\w\d-]+)\/(schema|config)$/,
function( context )
{
var core_basepath = this.active_core.attr( 'data-basepath' );
$.ajax
(
{
url : core_basepath + app.config[ context.params.splat[1] + '_path' ],
dataType : 'xml',
context : $( '#content' ),
beforeSend : function( xhr, settings )
{
this
.html( '<div class="loader">Loading ...</div>' );
},
complete : function( xhr, text_status )
{
var code = $(
'<pre class="syntax language-xml"><code>' +
xhr.responseText.esc() +
'</code></pre>'
);
this.html( code );
$.ajax
(
{
url : core_basepath + app.config[ context.params.splat[1] + '_path' ],
dataType : 'xml',
context : $( '#content' ),
beforeSend : function( xhr, settings )
{
this
.html( '<div class="loader">Loading ...</div>' );
},
complete : function( xhr, text_status )
{
var code = $(
'<pre class="syntax language-xml"><code>' +
xhr.responseText.esc() +
'</code></pre>'
);
this.html( code );
if( 'success' === text_status )
{
hljs.highlightBlock( code.get(0) );
}
}
}
);
}
if( 'success' === text_status )
{
hljs.highlightBlock( code.get(0) );
}
}
}
);
}
);

View File

@ -1,184 +1,344 @@
/*
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.
*/
var parse_memory_value = function( value )
{
if( value !== Number( value ) )
{
var units = 'BKMGTPEZY';
var match = value.match( /^(\d+([,\.]\d+)?) (\w)\w?$/ );
var value = parseFloat( match[1] ) * Math.pow( 1024, units.indexOf( match[3].toUpperCase() ) );
}
return value;
};
var generate_bar = function( bar_container, bar_data, convert_label_values )
{
bar_holder = $( '.bar-holder', bar_container );
var bar_level = 1;
var max_width = Math.round( $( '.bar-max', bar_holder ).width() );
$( '.bar-max.val', bar_holder ).text( bar_data['max'] );
bar_level++;
var total_width = Math.round( ( bar_data['total'] * max_width ) / bar_data['max'] );
$( '.bar-total.bar', bar_holder ).width( Math.max( total_width, 1 ) );
$( '.bar-total.val', bar_holder ).text( bar_data['total'] );
if( bar_data['used'] )
{
bar_level++;
var used_width = Math.round( ( bar_data['used'] * max_width ) / bar_data['max'] );
$( '.bar-used.bar', bar_holder ).width( Math.min( used_width, total_width - 1 ) );
$( '.bar-used.val', bar_holder ).text( bar_data['used'] );
}
bar_holder
.addClass( 'bar-lvl-' + bar_level );
var percentage = ( ( ( bar_data['used'] || bar_data['total'] ) / bar_data['max'] ) * 100 ).toFixed(1);
var hl = $( '[data-desc="' + bar_container.attr( 'id' ) + '"]' );
$( '.bar-desc', hl )
.remove();
hl
.append( ' <small class="bar-desc">' + percentage + '%</small>' );
if( !!convert_label_values )
{
$( '.val', bar_holder )
.each
(
function()
{
var self = $( this );
var unit = null;
var byte_value = parseInt( self.html() );
self
.attr( 'title', 'raw: ' + byte_value + ' B' );
byte_value /= 1024;
byte_value /= 1024;
unit = 'MB';
if( 1024 <= byte_value )
{
byte_value /= 1024;
unit = 'GB';
}
byte_value = byte_value.toFixed( 2 ) + ' ' + unit;
self
.text( byte_value );
}
);
}
};
var system_info = function( element, system_data )
{
// -- usage
var load_average = system_data['system']['uptime'].match( /load average: (.+)/ );
if( load_average && load_average[1] )
{
var hl = $( '#system h2', element );
$( '.bar-desc', hl )
.remove();
hl
.append( ' <small class="bar-desc">' + load_average[1].split( ', ' ).join( ' ' ).esc() + '</small>' );
}
// -- physical-memory-bar
var bar_holder = $( '#physical-memory-bar', element );
if( !system_data['system']['totalPhysicalMemorySize'] )
{
bar_holder.hide();
}
else
{
bar_holder.show();
var bar_data = {
'max' : parse_memory_value( system_data['system']['totalPhysicalMemorySize'] ),
'total' : parse_memory_value( system_data['system']['totalPhysicalMemorySize'] - system_data['system']['freePhysicalMemorySize'] )
};
generate_bar( bar_holder, bar_data, true );
}
// -- swap-space-bar
var bar_holder = $( '#swap-space-bar', element );
if( !system_data['system']['totalSwapSpaceSize'] )
{
bar_holder.hide();
}
else
{
bar_holder.show();
var bar_data = {
'max' : parse_memory_value( system_data['system']['totalSwapSpaceSize'] ),
'total' : parse_memory_value( system_data['system']['totalSwapSpaceSize'] - system_data['system']['freeSwapSpaceSize'] )
};
generate_bar( bar_holder, bar_data, true );
}
// -- swap-space-bar
var bar_holder = $( '#file-descriptor-bar', element );
if( !system_data['system']['maxFileDescriptorCount'] )
{
bar_holder.hide();
}
else
{
bar_holder.show();
var bar_data = {
'max' : parse_memory_value( system_data['system']['maxFileDescriptorCount'] ),
'total' : parse_memory_value( system_data['system']['openFileDescriptorCount'] )
};
generate_bar( bar_holder, bar_data );
}
0 === $( '#system div[id$="-bar"]:visible', element ).size()
? $( '#system .no-info', element ).show()
: $( '#system .no-info', element ).hide();
// -- memory-bar
var jvm_memory = $.extend
(
{
'free' : null,
'total' : null,
'max' : null,
'used' : null,
'raw' : {
'free' : null,
'total' : null,
'max' : null,
'used' : null,
'used%' : null
}
},
system_data['jvm']['memory']
);
var bar_holder = $( '#jvm-memory-bar', element );
var bar_data = {
'max' : parse_memory_value( jvm_memory['raw']['max'] || jvm_memory['max'] ),
'total' : parse_memory_value( jvm_memory['raw']['total'] || jvm_memory['total'] ),
'used' : parse_memory_value( jvm_memory['raw']['used'] || jvm_memory['used'] )
};
generate_bar( bar_holder, bar_data, true );
}
// #/
sammy.get
(
/^#\/$/,
function( context )
{
var content_element = $( '#content' );
/^#\/$/,
function( context )
{
var content_element = $( '#content' );
$( '#index', app.menu_element )
.addClass( 'active' );
$( '#index', app.menu_element )
.addClass( 'active' );
content_element
.html( '<div id="index"></div>' );
content_element
.html( '<div id="index"></div>' );
$.ajax
(
$.ajax
(
{
url : 'tpl/index.html',
context : $( '#index', content_element ),
beforeSend : function( arr, form, options )
{
},
success : function( template )
{
var self = this;
this
.html( template );
var data = {
'start_time' : app.dashboard_values['jvm']['jmx']['startTime'],
'host' : app.dashboard_values['core']['host'],
'dir_instance' : app.dashboard_values['core']['directory']['instance'],
'dir_data' : app.dashboard_values['core']['directory']['data'],
'dir_index' : app.dashboard_values['core']['directory']['index'],
'jvm_version' : app.dashboard_values['jvm']['name'] + ' (' + app.dashboard_values['jvm']['version'] + ')',
'processors' : app.dashboard_values['jvm']['processors'],
'solr_spec_version' : app.dashboard_values['lucene']['solr-spec-version'],
'solr_impl_version' : app.dashboard_values['lucene']['solr-impl-version'],
'lucene_spec_version' : app.dashboard_values['lucene']['lucene-spec-version'],
'lucene_impl_version' : app.dashboard_values['lucene']['lucene-impl-version']
};
if( app.dashboard_values['core']['directory']['cwd'] )
{
data['dir_cwd'] = app.dashboard_values['core']['directory']['cwd'];
}
for( var key in data )
{
var value_element = $( '.' + key + ' dd', this );
value_element
.text( data[key].esc() );
value_element.closest( 'li' )
.show();
}
var commandLineArgs = app.dashboard_values['jvm']['jmx']['commandLineArgs'];
if( 0 !== commandLineArgs.length )
{
var cmd_arg_element = $( '.command_line_args dt', this );
var cmd_arg_key_element = $( '.command_line_args dt', this );
var cmd_arg_element = $( '.command_line_args dd', this );
for( var key in commandLineArgs )
{
url : 'tpl/index.html',
context : $( '#index', content_element ),
beforeSend : function( arr, form, options )
{
},
success : function( template )
{
this
.html( template );
cmd_arg_element = cmd_arg_element.clone();
cmd_arg_element.text( commandLineArgs[key] );
var jvm_memory = $.extend
(
{
'free' : null,
'total' : null,
'max' : null,
'used' : null,
'raw' : {
'free' : null,
'total' : null,
'max' : null,
'used' : null,
'used%' : null
}
},
app.dashboard_values['jvm']['memory']
);
var parse_memory_value = function( value )
{
if( value !== Number( value ) )
{
var units = 'BKMGTPEZY';
var match = value.match( /^(\d+([,\.]\d+)?) (\w)\w?$/ );
var value = parseFloat( match[1] ) * Math.pow( 1024, units.indexOf( match[3].toUpperCase() ) );
}
return value;
};
var memory_data = {
'memory-bar-max' : parse_memory_value( jvm_memory['raw']['max'] || jvm_memory['max'] ),
'memory-bar-total' : parse_memory_value( jvm_memory['raw']['total'] || jvm_memory['total'] ),
'memory-bar-used' : parse_memory_value( jvm_memory['raw']['used'] || jvm_memory['used'] )
};
for( var key in memory_data )
{
$( '.value.' + key, this )
.text( memory_data[key] );
}
var data = {
'start_time' : app.dashboard_values['jvm']['jmx']['startTime'],
'host' : app.dashboard_values['core']['host'],
'jvm' : app.dashboard_values['jvm']['name'] + ' (' + app.dashboard_values['jvm']['version'] + ')',
'solr_spec_version' : app.dashboard_values['lucene']['solr-spec-version'],
'solr_impl_version' : app.dashboard_values['lucene']['solr-impl-version'],
'lucene_spec_version' : app.dashboard_values['lucene']['lucene-spec-version'],
'lucene_impl_version' : app.dashboard_values['lucene']['lucene-impl-version']
};
if( app.dashboard_values['core']['directory']['cwd'] )
{
data['cwd'] = app.dashboard_values['core']['directory']['cwd'];
}
for( var key in data )
{
var value_element = $( '.' + key + ' dd', this );
value_element
.text( data[key] );
value_element.closest( 'li' )
.show();
}
var commandLineArgs = app.dashboard_values['jvm']['jmx']['commandLineArgs'];
if( 0 !== commandLineArgs.length )
{
var cmd_arg_element = $( '.command_line_args dt', this );
var cmd_arg_key_element = $( '.command_line_args dt', this );
var cmd_arg_element = $( '.command_line_args dd', this );
for( var key in commandLineArgs )
{
cmd_arg_element = cmd_arg_element.clone();
cmd_arg_element.text( commandLineArgs[key] );
cmd_arg_key_element
.after( cmd_arg_element );
}
cmd_arg_key_element.closest( 'li' )
.show();
$( '.command_line_args dd:last', this )
.remove();
$( '.command_line_args dd:odd', this )
.addClass( 'odd' );
}
$( '.timeago', this )
.timeago();
$( 'li:visible:odd', this )
.addClass( 'odd' );
// -- memory bar
var max_height = Math.round( $( '#memory-bar-max', this ).height() );
var total_height = Math.round( ( memory_data['memory-bar-total'] * max_height ) / memory_data['memory-bar-max'] );
var used_height = Math.round( ( memory_data['memory-bar-used'] * max_height ) / memory_data['memory-bar-max'] );
var memory_bar_total_value = $( '#memory-bar-total span', this ).first();
$( '#memory-bar-total', this )
.height( total_height );
$( '#memory-bar-used', this )
.height( used_height );
if( used_height < total_height + memory_bar_total_value.height() )
{
memory_bar_total_value
.addClass( 'upper' )
.css( 'margin-top', memory_bar_total_value.height() * -1 );
}
var memory_percentage = ( ( memory_data['memory-bar-used'] / memory_data['memory-bar-max'] ) * 100 ).toFixed(1);
var headline = $( '#memory h2 span', this );
headline
.text( headline.html() + ' (' + memory_percentage + '%)' );
$( '#memory-bar .value', this )
.each
(
function()
{
var self = $( this );
var byte_value = parseInt( self.html() );
self
.attr( 'title', 'raw: ' + byte_value + ' B' );
byte_value /= 1024;
byte_value /= 1024;
byte_value = byte_value.toFixed( 2 ) + ' MB';
self
.text( byte_value );
}
);
},
error : function( xhr, text_status, error_thrown )
{
},
complete : function( xhr, text_status )
{
}
cmd_arg_key_element
.after( cmd_arg_element );
}
);
}
cmd_arg_key_element.closest( 'li' )
.show();
$( '.command_line_args dd:last', this )
.remove();
$( '.command_line_args dd:odd', this )
.addClass( 'odd' );
}
$( '.timeago', this )
.timeago();
$( '.index-left .block li:visible:odd', this )
.addClass( 'odd' );
// -- system_info
system_info( this, app.dashboard_values );
$( '#system a.reload', this )
.die( 'click' )
.live
(
'click',
function( event )
{
$.ajax
(
{
url : environment_basepath + '/admin/system?wt=json',
dataType : 'json',
context : this,
beforeSend : function( arr, form, options )
{
loader.show( this );
},
success : function( response )
{
system_info( self, response );
},
error : function()
{
},
complete : function()
{
loader.hide( this );
}
}
);
return false;
}
);
},
error : function( xhr, text_status, error_thrown )
{
},
complete : function( xhr, text_status )
{
}
}
);
}
);

View File

@ -1,84 +1,101 @@
/*
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.
*/
// #/java-properties
sammy.get
(
/^#\/(java-properties)$/,
function( context )
{
var core_basepath = $( 'li[data-basepath]', app.menu_element ).attr( 'data-basepath' );
var content_element = $( '#content' );
/^#\/(java-properties)$/,
function( context )
{
var core_basepath = $( 'li[data-basepath]', app.menu_element ).attr( 'data-basepath' );
var content_element = $( '#content' );
content_element
.html( '<div id="java-properties"></div>' );
content_element
.html( '<div id="java-properties"></div>' );
$.ajax
(
$.ajax
(
{
url : core_basepath + '/admin/properties?wt=json',
dataType : 'json',
context : $( '#java-properties', content_element ),
beforeSend : function( xhr, settings )
{
this
.html( '<div class="loader">Loading ...</div>' );
},
success : function( response, text_status, xhr )
{
var system_properties = response['system.properties'];
var properties_data = {};
var properties_content = [];
var properties_order = [];
for( var key in system_properties )
{
var displayed_key = key.replace( /\./g, '.&#8203;' );
var displayed_value = [ system_properties[key] ];
var item_class = 'clearfix';
if( -1 !== key.indexOf( '.path' ) || -1 !== key.indexOf( '.dirs' ) )
{
url : core_basepath + '/admin/properties?wt=json',
dataType : 'json',
context : $( '#java-properties', content_element ),
beforeSend : function( xhr, settings )
{
this
.html( '<div class="loader">Loading ...</div>' );
},
success : function( response, text_status, xhr )
{
var system_properties = response['system.properties'];
var properties_data = {};
var properties_content = [];
var properties_order = [];
for( var key in system_properties )
{
var displayed_key = key.replace( /\./g, '.&#8203;' );
var displayed_value = [ system_properties[key] ];
var item_class = 'clearfix';
if( -1 !== key.indexOf( '.path' ) || -1 !== key.indexOf( '.dirs' ) )
{
displayed_value = system_properties[key].split( system_properties['path.separator'] );
if( 1 < displayed_value.length )
{
item_class += ' multi';
}
}
var item_content = '<li><dl class="' + item_class + '">' + "\n" +
'<dt>' + displayed_key.esc() + '</dt>' + "\n";
for( var i in displayed_value )
{
item_content += '<dd>' + displayed_value[i].esc() + '</dd>' + "\n";
}
item_content += '</dl></li>';
properties_data[key] = item_content;
properties_order.push( key );
}
properties_order.sort();
for( var i in properties_order )
{
properties_content.push( properties_data[properties_order[i]] );
}
this
.html( '<ul>' + properties_content.join( "\n" ) + '</ul>' );
$( 'li:odd', this )
.addClass( 'odd' );
$( '.multi dd:odd', this )
.addClass( 'odd' );
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
displayed_value = system_properties[key].split( system_properties['path.separator'] );
if( 1 < displayed_value.length )
{
item_class += ' multi';
}
}
);
}
var item_content = '<li><dl class="' + item_class + '">' + "\n"
+ '<dt>' + displayed_key.esc() + '</dt>' + "\n";
for( var i in displayed_value )
{
item_content += '<dd>' + displayed_value[i].esc() + '</dd>' + "\n";
}
item_content += '</dl></li>';
properties_data[key] = item_content;
properties_order.push( key );
}
properties_order.sort();
for( var i in properties_order )
{
properties_content.push( properties_data[properties_order[i]] );
}
this
.html( '<ul>' + properties_content.join( "\n" ) + '</ul>' );
$( 'li:odd', this )
.addClass( 'odd' );
$( '.multi dd:odd', this )
.addClass( 'odd' );
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
}
);
}
);

View File

@ -1,166 +1,236 @@
// #/logging
sammy.get
(
/^#\/(logging)$/,
function( context )
/*
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.
*/
var loglevel_path = null;
var logging_handler = function( response, text_status, xhr )
{
var self = this;
var loggers = response.loggers;
var levels = '<div class="selector-holder"><div class="selector">' + "\n"
+ '<a class="trigger"><span><em>null</em></span></a>' + "\n"
+ '<ul>' + "\n";
for( var key in response.levels )
{
var level = response.levels[key].esc();
levels += '<li><a href="#" data-level="' + level + '">' + level + '</a></li>' + "\n";
}
levels += '<li class="unset"><a href="#" data-level="unset">UNSET</a></li>' + "\n"
+ '</ul>' + "\n"
+ '<a class="close"><span>[x]</span></a>' + "\n"
+ '</div></div>';
var logger_tree = function( filter )
{
var logger_content = '';
var filter_regex = new RegExp( '^' + filter + '\\.\\w+$' );
for( var i in loggers )
{
var content_element = $( '#content' );
content_element
.html( '<div id="logging"></div>' );
var logger = loggers[i];
var continue_matcher = false;
if( !filter )
{
continue_matcher = logger.name.indexOf( '.' ) !== -1;
}
else
{
continue_matcher = !logger.name.match( filter_regex );
}
if( continue_matcher )
{
continue;
}
var logger_class = '';
if( logger.set )
{
logger_class = 'set';
}
if( !logger.level )
{
logger_class = 'null';
}
var logger_name = logger.name.split( '.' );
var display_name = logger_name.pop();
logger_content += '<li class="jstree-leaf" data-logger="' + logger.name.esc() + '">';
logger_content += '<ins class="trigger jstree-icon">&nbsp;</ins>' + "\n";
logger_content += '<a href="#" class="trigger '+ logger_class + '"' ;
if( logger.level )
{
logger_content += 'rel="' + logger.level.esc() + '" ';
}
logger_content += 'title="' + logger.name.esc() + '">' + "\n";
if( 0 !== logger_name.length )
{
logger_content += '<span class="ns">' + logger_name.join( '.' ).esc() + '.</span>';
}
logger_content += '<span class="name">' + display_name.esc() + '</span>' + "\n";
logger_content += '</a>';
logger_content += levels;
var child_logger_content = logger_tree( logger.name );
if( child_logger_content )
{
logger_content += '<ul>';
logger_content += child_logger_content;
logger_content += '</ul>';
}
logger_content += '</li>';
}
return logger_content;
};
var logger_content = logger_tree( null );
self
.html( '<ul class="tree jstree">' + logger_content + '</ul>' );
$( 'li:last-child', this )
.addClass( 'jstree-last' );
$( 'li.jstree-leaf > a', this )
.each
(
function( index, element )
{
element = $( element );
var level = element.attr( 'rel' );
if( level )
{
var selector = $( '.selector-holder', element.closest( 'li' ) );
$( 'a.trigger', selector )
.text( level.esc() );
$( 'ul a[data-level="' + level + '"]', selector ).first()
.addClass( 'level' );
}
}
)
$( '.trigger, .selector .close', this )
.die( 'click' )
.live
(
'click',
function( event )
{
$( '.selector-holder', $( this ).parents( 'li' ).first() ).first()
.trigger( 'toggle' );
return false;
}
);
$( '.selector-holder', this )
.die( 'toggle')
.live
(
'toggle',
function( event )
{
var row = $( this ).closest( 'li' );
$( 'a:first', row )
.toggleClass( 'open' );
$( '.selector-holder:first', row )
.toggleClass( 'open' );
}
);
$( '.selector ul a', this )
.die( 'click' )
.live
(
'click',
function( event )
{
var element = $( this );
$.ajax
(
{
url : loglevel_path,
dataType : 'json',
data : {
'wt' : 'json',
'set' : $( this ).parents( 'li[data-logger]' ).data( 'logger' ) + ':' + element.data( 'level' )
},
type : 'POST',
context : self,
beforeSend : function( xhr, settings )
{
url : 'logging.json',
dataType : 'json',
context : $( '#logging', content_element ),
beforeSend : function( xhr, settings )
{
this
.html( '<div class="loader">Loading ...</div>' );
},
success : function( response, text_status, xhr )
{
var logger = response.logger;
var loglevel = '<div class="loglevel %class%">' + "\n";
loglevel += '<a class="effective_level trigger"><span>%effective_level%</span></a>' + "\n";
loglevel += '<ul>' + "\n";
for( var key in response.levels )
{
var level = response.levels[key].esc();
loglevel += '<li class="' + level + '"><a>' + level + '</a></li>' + "\n";
}
loglevel += '<li class="UNSET"><a>UNSET</a></li>' + "\n";
loglevel += '</ul>' + "\n";
loglevel += '</div>';
var logger_tree = function( filter )
{
var logger_content = '';
var filter_regex = new RegExp( '^' + filter + '\\.\\w+$' );
for( var logger_name in logger )
{
var continue_matcher = false;
if( !filter )
{
continue_matcher = logger_name.indexOf( '.' ) !== -1;
}
else
{
continue_matcher = !logger_name.match( filter_regex );
}
if( continue_matcher )
{
continue;
}
var has_logger_instance = !!logger[logger_name];
var classes = [];
has_logger_instance
? classes.push( 'active' )
: classes.push( 'inactive' );
logger_content += '<li class="jstree-leaf">';
logger_content += '<ins class="jstree-icon">&nbsp;</ins>';
logger_content += '<a class="trigger ' + classes.join( ' ' ) + '" ' + "\n" +
'title="' + logger_name.esc() + '"><span>' + "\n" +
logger_name.split( '.' ).pop().esc() + "\n" +
'</span></a>';
logger_content += loglevel
.replace
(
/%class%/g,
classes.join( ' ' )
)
.replace
(
/%effective_level%/g,
has_logger_instance
? logger[logger_name].effective_level
: 'null'
);
var child_logger_content = logger_tree( logger_name );
if( child_logger_content )
{
logger_content += '<ul>';
logger_content += child_logger_content;
logger_content += '</ul>';
}
logger_content += '</li>';
}
return logger_content;
}
var logger_content = logger_tree( null );
var warn = '<div>TODO, this is not yet implemented. For now, use <a href="logging" style="color:00AA00;">the old logging UI</a></div><br/>'
this.html( warn + '<ul class="tree jstree">' + logger_content + '</ul>' );
$( 'li:last-child', this )
.addClass( 'jstree-last' );
$( '.loglevel', this )
.each
(
function( index, element )
{
var element = $( element );
var effective_level = $( '.effective_level span', element ).text();
element
.css( 'z-index', 800 - index );
$( 'ul .' + effective_level, element )
.addClass( 'selected' );
}
);
$( '.trigger', this )
.die( 'click' )
.live
(
'click',
function( event )
{
$( '.loglevel', $( this ).parents( 'li' ).first() ).first()
.trigger( 'toggle' );
}
);
$( '.loglevel', this )
.die( 'toggle')
.live
(
'toggle',
function( event )
{
$( this )
.toggleClass( 'open' );
}
);
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
}
element
.addClass( 'loader' );
},
success : logging_handler
}
);
}
return false;
}
);
};
// #/logging
sammy.get
(
/^#\/(logging)$/,
function( context )
{
var core_basepath = $( 'li[data-basepath]', app.menu_element ).attr( 'data-basepath' );
loglevel_path = core_basepath + '/admin/loglevel';
var content_element = $( '#content' );
content_element
.html( '<div id="logging"></div>' );
$.ajax
(
{
url : loglevel_path + '?wt=json',
dataType : 'json',
context : $( '#logging', content_element ),
beforeSend : function( xhr, settings )
{
this
.html( '<div class="loader">Loading ...</div>' );
},
success : logging_handler
}
);
}
);

View File

@ -1,58 +1,72 @@
/*
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.
*/
$( '.ping a', app.menu_element )
.live
(
'click',
function( event )
.live
(
'click',
function( event )
{
$.ajax
(
{
$.ajax
(
{
url : $( this ).attr( 'rel' ) + '?wt=json&ts=' + (new Date).getTime(),
dataType : 'json',
context: this,
beforeSend : function( arr, form, options )
{
loader.show( this );
},
success : function( response, text_status, xhr )
{
$( this )
.removeAttr( 'title' );
url : $( this ).attr( 'rel' ) + '?wt=json&ts=' + (new Date).getTime(),
dataType : 'json',
context: this,
beforeSend : function( arr, form, options )
{
loader.show( this );
},
success : function( response, text_status, xhr )
{
$( this )
.removeAttr( 'title' );
$( this ).parents( 'li' )
.removeClass( 'error' );
$( this ).parents( 'li' )
.removeClass( 'error' );
var qtime_element = $( '.qtime', this );
var qtime_element = $( '.qtime', this );
if( 0 === qtime_element.size() )
{
qtime_element = $( '<small class="qtime"> (<span></span>)</small>' );
if( 0 === qtime_element.size() )
{
qtime_element = $( '<small class="qtime"> (<span></span>)</small>' );
$( this )
.append
(
qtime_element
);
}
$( this )
.append( qtime_element );
}
$( 'span', qtime_element )
.html( response.responseHeader.QTime + 'ms' );
},
error : function( xhr, text_status, error_thrown )
{
$( this )
.attr( 'title', '/admin/ping is not configured (' + xhr.status + ': ' + error_thrown + ')' );
$( 'span', qtime_element )
.html( response.responseHeader.QTime + 'ms' );
},
error : function( xhr, text_status, error_thrown )
{
$( this )
.attr( 'title', '/admin/ping is not configured (' + xhr.status + ': ' + error_thrown + ')' );
$( this ).parents( 'li' )
.addClass( 'error' );
},
complete : function( xhr, text_status )
{
loader.hide( this );
}
}
);
return false;
$( this ).parents( 'li' )
.addClass( 'error' );
},
complete : function( xhr, text_status )
{
loader.hide( this );
}
}
);
);
return false;
}
);

View File

@ -1,259 +1,274 @@
/*
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.
*/
sammy.bind
(
'plugins_load',
function( event, params )
'plugins_load',
function( event, params )
{
var callback = function()
{
var callback = function()
{
params.callback( app.plugin_data.plugin_data, app.plugin_data.sort_table, app.plugin_data.types );
}
if( app.plugin_data )
{
callback( app.plugin_data );
return true;
}
var core_basepath = params.active_core.attr( 'data-basepath' );
$.ajax
(
{
url : core_basepath + '/admin/mbeans?stats=true&wt=json',
dataType : 'json',
beforeSend : function( xhr, settings )
{
},
success : function( response, text_status, xhr )
{
var types = [];
var sort_table = {};
var plugin_data = {};
var types_obj = {};
var plugin_key = null;
for( var i = 0; i < response['solr-mbeans'].length; i++ )
{
if( !( i % 2 ) )
{
plugin_key = response['solr-mbeans'][i];
}
else
{
plugin_data[plugin_key] = response['solr-mbeans'][i];
}
}
for( var key in plugin_data )
{
sort_table[key] = {
url : [],
component : [],
handler : []
};
for( var part_key in plugin_data[key] )
{
if( 0 < part_key.indexOf( '.' ) )
{
types_obj[key] = true;
sort_table[key]['handler'].push( part_key );
}
else if( 0 === part_key.indexOf( '/' ) )
{
types_obj[key] = true;
sort_table[key]['url'].push( part_key );
}
else
{
types_obj[key] = true;
sort_table[key]['component'].push( part_key );
}
}
}
for( var type in types_obj )
{
types.push( type );
}
types.sort();
app.plugin_data = {
'plugin_data' : plugin_data,
'sort_table' : sort_table,
'types' : types
}
$.get
(
'tpl/plugins.html',
function( template )
{
$( '#content' )
.html( template );
callback( app.plugin_data );
}
);
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
}
);
params.callback( app.plugin_data.plugin_data, app.plugin_data.sort_table, app.plugin_data.types );
}
if( app.plugin_data )
{
callback( app.plugin_data );
return true;
}
var core_basepath = params.active_core.attr( 'data-basepath' );
$.ajax
(
{
url : core_basepath + '/admin/mbeans?stats=true&wt=json',
dataType : 'json',
beforeSend : function( xhr, settings )
{
},
success : function( response, text_status, xhr )
{
var types = [];
var sort_table = {};
var plugin_data = {};
var types_obj = {};
var plugin_key = null;
for( var i = 0; i < response['solr-mbeans'].length; i++ )
{
if( !( i % 2 ) )
{
plugin_key = response['solr-mbeans'][i];
}
else
{
plugin_data[plugin_key] = response['solr-mbeans'][i];
}
}
for( var key in plugin_data )
{
sort_table[key] = {
url : [],
component : [],
handler : []
};
for( var part_key in plugin_data[key] )
{
if( 0 < part_key.indexOf( '.' ) )
{
types_obj[key] = true;
sort_table[key]['handler'].push( part_key );
}
else if( 0 === part_key.indexOf( '/' ) )
{
types_obj[key] = true;
sort_table[key]['url'].push( part_key );
}
else
{
types_obj[key] = true;
sort_table[key]['component'].push( part_key );
}
}
}
for( var type in types_obj )
{
types.push( type );
}
types.sort();
app.plugin_data = {
'plugin_data' : plugin_data,
'sort_table' : sort_table,
'types' : types
}
$.get
(
'tpl/plugins.html',
function( template )
{
$( '#content' )
.html( template );
callback( app.plugin_data );
}
);
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
}
);
}
);
// #/:core/plugins/$type
sammy.get
(
/^#\/([\w\d-]+)\/(plugins)\/(\w+)$/,
function( context )
{
var content_element = $( '#content' );
var type = context.params.splat[2].toUpperCase();
var context_path = context.path.split( '?' ).shift();
/^#\/([\w\d-]+)\/(plugins)\/(\w+)$/,
function( context )
{
var content_element = $( '#content' );
var type = context.params.splat[2].toUpperCase();
var context_path = context.path.split( '?' ).shift();
sammy.trigger
(
'plugins_load',
{
active_core : this.active_core,
callback : function( plugin_data, plugin_sort, types )
{
var frame_element = $( '#frame', content_element );
var navigation_element = $( '#navigation ul', content_element );
sammy.trigger
(
'plugins_load',
{
active_core : this.active_core,
callback : function( plugin_data, plugin_sort, types )
{
var frame_element = $( '#frame', content_element );
var navigation_element = $( '#navigation ul', content_element );
var navigation_content = [];
for( var i = 0; i < types.length; i++ )
{
var type_url = context.params.splat[0] + '/' +
context.params.splat[1] + '/' +
types[i].toLowerCase();
var navigation_content = [];
for( var i = 0; i < types.length; i++ )
{
var type_url = context.params.splat[0] + '/' + context.params.splat[1] + '/' + types[i].toLowerCase();
navigation_content.push
(
'<li class="' + types[i].toLowerCase() + '">' +
'<a href="#/' + type_url + '">' + types[i] + '</a>' +
'</li>'
);
}
navigation_content.push
(
'<li class="' + types[i].toLowerCase() + '">' +
'<a href="#/' + type_url + '">' + types[i] + '</a>' +
'</li>'
);
}
navigation_element
.html( navigation_content.join( "\n" ) );
navigation_element
.html( navigation_content.join( "\n" ) );
$( 'a[href="' + context_path + '"]', navigation_element )
.parent().addClass( 'current' );
$( 'a[href="' + context_path + '"]', navigation_element )
.parent().addClass( 'current' );
var content = '<ul>';
for( var sort_key in plugin_sort[type] )
{
plugin_sort[type][sort_key].sort();
var plugin_type_length = plugin_sort[type][sort_key].length;
var content = '<ul>';
for( var sort_key in plugin_sort[type] )
{
plugin_sort[type][sort_key].sort();
var plugin_type_length = plugin_sort[type][sort_key].length;
for( var i = 0; i < plugin_type_length; i++ )
{
content += '<li class="entry">' + "\n";
content += '<a href="' + context_path + '?entry=' + plugin_sort[type][sort_key][i] + '">';
content += plugin_sort[type][sort_key][i]
content += '</a>' + "\n";
content += '<ul class="detail">' + "\n";
for( var i = 0; i < plugin_type_length; i++ )
{
content += '<li class="entry">' + "\n";
content += '<a href="' + context_path + '?entry=' + plugin_sort[type][sort_key][i] + '">';
content += plugin_sort[type][sort_key][i]
content += '</a>' + "\n";
content += '<ul class="detail">' + "\n";
var details = plugin_data[type][ plugin_sort[type][sort_key][i] ];
for( var detail_key in details )
{
if( 'stats' !== detail_key )
{
var detail_value = details[detail_key];
var details = plugin_data[type][ plugin_sort[type][sort_key][i] ];
for( var detail_key in details )
{
if( 'stats' !== detail_key )
{
var detail_value = details[detail_key];
if( 'description' === detail_key )
{
detail_value = detail_value.replace( /,/g, ',&#8203;' );
}
else if( 'src' === detail_key )
{
detail_value = detail_value.replace( /\//g, '/&#8203;' );
}
if( 'description' === detail_key )
{
detail_value = detail_value.replace( /,/g, ',&#8203;' );
}
else if( 'src' === detail_key )
{
detail_value = detail_value.replace( /\//g, '/&#8203;' );
}
content += '<li><dl class="clearfix">' + "\n";
content += '<dt>' + detail_key + ':</dt>' + "\n";
content += '<dd>' + detail_value + '</dd>' + "\n";
content += '</dl></li>' + "\n";
}
else if( 'stats' === detail_key && details[detail_key] )
{
content += '<li class="stats clearfix">' + "\n";
content += '<span>' + detail_key + ':</span>' + "\n";
content += '<ul>' + "\n";
for( var stats_key in details[detail_key] )
{
var stats_value = details[detail_key][stats_key];
if( 'readerDir' === stats_key )
{
stats_value = stats_value.replace( /@/g, '@&#8203;' );
}
content += '<li><dl class="clearfix">' + "\n";
content += '<dt>' + stats_key + ':</dt>' + "\n";
content += '<dd>' + stats_value + '</dd>' + "\n";
content += '</dl></li>' + "\n";
}
content += '</ul></li>' + "\n";
}
}
content += '</ul>' + "\n";
}
}
content += '</ul>' + "\n";
frame_element
.html( content );
$( 'a[href="' + decodeURIComponent( context.path ) + '"]', frame_element )
.parent().addClass( 'expanded' );
$( '.entry', frame_element )
.each
(
function( i, entry )
{
$( '.detail > li', entry ).not( '.stats' ).filter( ':even' )
.addClass( 'odd' );
$( '.stats li:odd', entry )
.addClass( 'odd' );
}
);
content += '<li><dl class="clearfix">' + "\n";
content += '<dt>' + detail_key + ':</dt>' + "\n";
content += '<dd>' + detail_value + '</dd>' + "\n";
content += '</dl></li>' + "\n";
}
else if( 'stats' === detail_key && details[detail_key] )
{
content += '<li class="stats clearfix">' + "\n";
content += '<span>' + detail_key + ':</span>' + "\n";
content += '<ul>' + "\n";
for( var stats_key in details[detail_key] )
{
var stats_value = details[detail_key][stats_key];
if( 'readerDir' === stats_key )
{
stats_value = stats_value.replace( /@/g, '@&#8203;' );
}
content += '<li><dl class="clearfix">' + "\n";
content += '<dt>' + stats_key + ':</dt>' + "\n";
content += '<dd>' + stats_value + '</dd>' + "\n";
content += '</dl></li>' + "\n";
}
content += '</ul></li>' + "\n";
}
}
content += '</ul>' + "\n";
}
);
}
}
content += '</ul>' + "\n";
frame_element
.html( content );
$( 'a[href="' + decodeURIComponent( context.path ) + '"]', frame_element )
.parent().addClass( 'expanded' );
$( '.entry', frame_element )
.each
(
function( i, entry )
{
$( '.detail > li', entry ).not( '.stats' ).filter( ':even' )
.addClass( 'odd' );
$( '.stats li:odd', entry )
.addClass( 'odd' );
}
);
}
}
);
}
);
// #/:core/plugins
sammy.get
(
/^#\/([\w\d-]+)\/(plugins)$/,
function( context )
{
delete app.plugin_data;
/^#\/([\w\d-]+)\/(plugins)$/,
function( context )
{
delete app.plugin_data;
sammy.trigger
(
'plugins_load',
{
active_core : this.active_core,
callback : function( plugin_data, plugin_sort, types )
{
context.redirect( context.path + '/' + types[0].toLowerCase() );
}
}
);
}
sammy.trigger
(
'plugins_load',
{
active_core : this.active_core,
callback : function( plugin_data, plugin_sort, types )
{
context.redirect( context.path + '/' + types[0].toLowerCase() );
}
}
);
}
);

View File

@ -1,142 +1,155 @@
/*
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.
*/
// #/:core/query
sammy.get
(
/^#\/([\w\d-]+)\/(query)$/,
function( context )
{
var core_basepath = this.active_core.attr( 'data-basepath' );
var content_element = $( '#content' );
/^#\/([\w\d-]+)\/(query)$/,
function( context )
{
var core_basepath = this.active_core.attr( 'data-basepath' );
var content_element = $( '#content' );
$.get
(
'tpl/query.html',
function( template )
$.get
(
'tpl/query.html',
function( template )
{
content_element
.html( template );
var query_element = $( '#query', content_element );
var query_form = $( '#form form', query_element );
var url_element = $( '#url', query_element );
var result_element = $( '#result', query_element );
var response_element = $( '#response iframe', result_element );
url_element
.die( 'change' )
.live
(
'change',
function( event )
{
content_element
.html( template );
var check_iframe_ready_state = function()
{
var iframe_element = response_element.get(0).contentWindow.document || response_element.get(0).document;
var query_element = $( '#query', content_element );
var query_form = $( '#form form', query_element );
var url_element = $( '#url', query_element );
var result_element = $( '#result', query_element );
var response_element = $( '#response iframe', result_element );
url_element
.die( 'change' )
.live
(
'change',
function( event )
{
var check_iframe_ready_state = function()
{
var iframe_element = response_element.get(0).contentWindow.document ||
response_element.get(0).document;
if( !iframe_element )
{
console.debug( 'no iframe_element found', response_element );
return false;
}
url_element
.addClass( 'loader' );
if( 'complete' === iframe_element.readyState )
{
url_element
.removeClass( 'loader' );
}
else
{
window.setTimeout( check_iframe_ready_state, 100 );
}
}
check_iframe_ready_state();
response_element
.attr( 'src', this.href );
if( !response_element.hasClass( 'resized' ) )
{
response_element
.addClass( 'resized' )
.css( 'height', $( '#main' ).height() - 60 );
}
}
)
$( '.optional legend input[type=checkbox]', query_form )
.die( 'change' )
.live
(
'change',
function( event )
{
var fieldset = $( this ).parents( 'fieldset' );
this.checked
? fieldset.addClass( 'expanded' )
: fieldset.removeClass( 'expanded' );
}
)
for( var key in context.params )
if( !iframe_element )
{
if( 'string' === typeof context.params[key] )
{
$( '[name="' + key + '"]', query_form )
.val( context.params[key] );
}
console.debug( 'no iframe_element found', response_element );
return false;
}
query_form
.die( 'submit' )
.live
(
'submit',
function( event )
{
var form_map = {};
var form_values = [];
var all_form_values = query_form.formToArray();
url_element
.addClass( 'loader' );
for( var i = 0; i < all_form_values.length; i++ )
{
if( !all_form_values[i].value || 0 === all_form_values[i].value.length )
{
continue;
}
if( 'complete' === iframe_element.readyState )
{
url_element
.removeClass( 'loader' );
}
else
{
window.setTimeout( check_iframe_ready_state, 100 );
}
}
check_iframe_ready_state();
var name_parts = all_form_values[i].name.split( '.' );
if( 1 < name_parts.length && !form_map[name_parts[0]] )
{
console.debug( 'skip "' + all_form_values[i].name + '", parent missing' );
continue;
}
form_map[all_form_values[i].name] = all_form_values[i].value;
form_values.push( all_form_values[i] );
}
var query_url = window.location.protocol + '//' +
window.location.host +
core_basepath +
'/select?' +
$.param( form_values );
response_element
.attr( 'src', this.href );
url_element
.attr( 'href', query_url )
.text( query_url )
.trigger( 'change' );
result_element
.show();
return false;
}
);
if( !response_element.hasClass( 'resized' ) )
{
response_element
.addClass( 'resized' )
.css( 'height', $( '#main' ).height() - 60 );
}
}
);
}
)
$( '.optional legend input[type=checkbox]', query_form )
.die( 'change' )
.live
(
'change',
function( event )
{
var fieldset = $( this ).parents( 'fieldset' );
this.checked
? fieldset.addClass( 'expanded' )
: fieldset.removeClass( 'expanded' );
}
)
for( var key in context.params )
{
if( 'string' === typeof context.params[key] )
{
$( '[name="' + key + '"]', query_form )
.val( context.params[key] );
}
}
query_form
.die( 'submit' )
.live
(
'submit',
function( event )
{
var form_map = {};
var form_values = [];
var all_form_values = query_form.formToArray();
for( var i = 0; i < all_form_values.length; i++ )
{
if( !all_form_values[i].value || 0 === all_form_values[i].value.length )
{
continue;
}
var name_parts = all_form_values[i].name.split( '.' );
if( 1 < name_parts.length && !form_map[name_parts[0]] )
{
console.debug( 'skip "' + all_form_values[i].name + '", parent missing' );
continue;
}
form_map[all_form_values[i].name] = all_form_values[i].value;
form_values.push( all_form_values[i] );
}
var query_url = window.location.protocol + '//' + window.location.host
+ core_basepath + '/select?' + $.param( form_values );
url_element
.attr( 'href', query_url )
.text( query_url )
.trigger( 'change' );
result_element
.show();
return false;
}
);
}
);
}
);

View File

@ -1,443 +1,557 @@
/*
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.
*/
var timer_element = null;
var timer_timeout = null;
var core_basepath = null;
var navigation_element = null;
var replication_element = null;
var convert_duration_to_seconds = function( str )
{
var ret = 0;
var parts = new String( str ).split( ':' ).reverse();
var parts_count = parts.length;
for( var i = 0; i < parts_count; i++ )
{
ret += parseInt( parts[i], 10 ) * Math.pow( 60, i );
}
return ret;
}
var convert_seconds_to_readable_time = function( value )
{
var text = [];
value = parseInt( value );
var minutes = Math.floor( value / 60 );
var hours = Math.floor( minutes / 60 );
if( 0 !== hours )
{
text.push( hours + 'h' );
value -= hours * 60 * 60;
minutes -= hours * 60;
}
if( 0 !== minutes )
{
text.push( minutes + 'm' );
value -= minutes * 60;
}
if( 0 !== value )
{
text.push( value + 's' );
}
return text.join( ' ' );
}
var init_timer = function( next_tick )
{
if( timer_timeout )
{
window.clearTimeout( timer_timeout );
}
update_timer( next_tick );
}
var update_timer = function( next_tick )
{
if( 0 === next_tick )
{
replication_fetch_status();
return false;
}
$( 'p .tick', timer_element )
.text( convert_seconds_to_readable_time( next_tick ) );
timer_timeout = window.setTimeout
(
'update_timer( ' + --next_tick + ' )',
1000
);
}
var clear_timer = function()
{
if( timer_timeout )
{
window.clearTimeout( timer_timeout );
timer_element.hide();
}
}
var replication_fetch_status = function()
{
$.ajax
(
{
url : core_basepath + '/replication?command=details&wt=json',
dataType : 'json',
beforeSend : function( xhr, settings )
{
$( '.refresh-status', navigation_element )
.addClass( 'loader' );
clear_timer();
},
success : function( response, text_status, xhr )
{
$( '.refresh-status', navigation_element )
.removeClass( 'loader' );
var data = response.details;
var is_slave = 'true' === data.isSlave;
replication_element
.addClass( is_slave ? 'slave' : 'master' );
if( is_slave )
{
var error_element = $( '#error', replication_element );
if( data.slave.ERROR )
{
error_element
.html( data.slave.ERROR )
.show();
}
else
{
error_element
.hide()
.empty();
}
var progress_element = $( '#progress', replication_element );
var start_element = $( '#start', progress_element );
$( 'span', start_element )
.text( data.slave.replicationStartTime );
var eta_element = $( '#eta', progress_element );
$( 'span', eta_element )
.text( convert_seconds_to_readable_time( data.slave.timeRemaining ) );
var bar_element = $( '#bar', progress_element );
$( '.files span', bar_element )
.text( data.slave.numFilesToDownload );
$( '.size span', bar_element )
.text( data.slave.bytesToDownload );
var speed_element = $( '#speed', progress_element );
$( 'span', speed_element )
.text( data.slave.downloadSpeed );
var done_element = $( '#done', progress_element );
$( '.files span', done_element )
.text( data.slave.numFilesDownloaded );
$( '.size span', done_element )
.text( data.slave.bytesDownloaded );
$( '.percent span', done_element )
.text( parseInt(data.slave.totalPercent ) );
var percent = parseInt( data.slave.totalPercent );
if( 0 === percent )
{
done_element
.css( 'width', '1px' );
}
else
{
done_element
.css( 'width', percent + '%' );
}
var current_file_element = $( '#current-file', replication_element );
$( '.file', current_file_element )
.text( data.slave.currentFile );
$( '.done', current_file_element )
.text( data.slave.currentFileSizeDownloaded );
$( '.total', current_file_element )
.text( data.slave.currentFileSize );
$( '.percent', current_file_element )
.text( parseInt( data.slave.currentFileSizePercent ) );
if( !data.slave.indexReplicatedAtList )
{
data.slave.indexReplicatedAtList = [];
}
if( !data.slave.replicationFailedAtList )
{
data.slave.replicationFailedAtList = [];
}
var iterations_element = $( '#iterations', replication_element );
var iterations_list = $( '.iterations ul', iterations_element );
var iterations_data = [];
var iterations_obj = {};
for( var i in data.slave.indexReplicatedAtList )
{
var date = data.slave.indexReplicatedAtList[i];
if( !iterations_obj[date] )
{
iterations_obj[date] = true;
iterations_data.push( date );
}
}
for( var i in data.slave.replicationFailedAtList )
{
var date = data.slave.replicationFailedAtList[i];
if( !iterations_obj[date] )
{
iterations_obj[date] = true;
iterations_data.push( date );
}
}
iterations_data.sort().reverse();
if( 0 !== iterations_data.length )
{
var iterations = [];
for( var i = 0; i < iterations_data.length; i++ )
{
iterations.push( '<li data-date="' + iterations_data[i] + '">' + iterations_data[i] + '</li>' );
}
iterations_list
.html( iterations.join( "\n" ) )
.show();
$( data.slave.indexReplicatedAtList )
.each
(
function( key, value )
{
$( 'li[data-date="' + value + '"]', iterations_list )
.addClass( 'replicated' );
}
);
if( data.slave.indexReplicatedAt )
{
$( 'li[data-date="' + data.slave.indexReplicatedAt + '"]', iterations_list )
.addClass( 'latest' );
}
$( data.slave.replicationFailedAtList )
.each
(
function( key, value )
{
$( 'li[data-date="' + value + '"]', iterations_list )
.addClass( 'failed' );
}
);
if( data.slave.replicationFailedAt )
{
$( 'li[data-date="' + data.slave.replicationFailedAt + '"]', iterations_list )
.addClass( 'latest' );
}
if( 0 !== $( 'li:hidden', iterations_list ).size() )
{
$( 'a', iterations_element )
.show();
}
else
{
$( 'a', iterations_element )
.hide();
}
}
}
var details_element = $( '#details', replication_element );
var current_type_element = $( ( is_slave ? '.slave' : '.master' ), details_element );
$( '.version div', current_type_element )
.html( data.indexVersion );
$( '.generation div', current_type_element )
.html( data.generation );
$( '.size div', current_type_element )
.html( data.indexSize );
if( is_slave )
{
var master_element = $( '.master', details_element );
$( '.version div', master_element )
.html( data.slave.masterDetails.indexVersion );
$( '.generation div', master_element )
.html( data.slave.masterDetails.generation );
$( '.size div', master_element )
.html( data.slave.masterDetails.indexSize );
if( data.indexVersion !== data.slave.masterDetails.indexVersion )
{
$( '.version', details_element )
.addClass( 'diff' );
}
else
{
$( '.version', details_element )
.removeClass( 'diff' );
}
if( data.generation !== data.slave.masterDetails.generation )
{
$( '.generation', details_element )
.addClass( 'diff' );
}
else
{
$( '.generation', details_element )
.removeClass( 'diff' );
}
}
if( is_slave )
{
var settings_element = $( '#settings', replication_element );
if( data.slave.masterUrl )
{
$( '.masterUrl dd', settings_element )
.html( response.details.slave.masterUrl )
.parents( 'li' ).show();
}
var polling_content = '&nbsp;';
var polling_ico = 'ico-1';
if( 'true' === data.slave.isPollingDisabled )
{
polling_ico = 'ico-0';
$( '.disable-polling', navigation_element ).hide();
$( '.enable-polling', navigation_element ).show();
}
else
{
$( '.disable-polling', navigation_element ).show();
$( '.enable-polling', navigation_element ).hide();
if( data.slave.pollInterval )
{
polling_content = '(interval: ' + data.slave.pollInterval + ')';
}
}
$( '.isPollingDisabled dd', settings_element )
.removeClass( 'ico-0' )
.removeClass( 'ico-1' )
.addClass( polling_ico )
.html( polling_content )
.parents( 'li' ).show();
if( 'true' === data.slave.isReplicating )
{
replication_element
.addClass( 'replicating' );
$( '.replicate-now', navigation_element ).hide();
$( '.abort-replication', navigation_element ).show();
window.setTimeout( replication_fetch_status, 1000 );
}
else
{
replication_element
.removeClass( 'replicating' );
$( '.replicate-now', navigation_element ).show();
$( '.abort-replication', navigation_element ).hide();
if( 'false' === data.slave.isPollingDisabled && data.slave.pollInterval )
{
timer_element = $( '.timer', navigation_element );
approx_element = $( '.approx', timer_element );
var next_tick = convert_duration_to_seconds( data.slave.pollInterval );
approx_element.show();
if( data.slave.nextExecutionAt )
{
var nextExecutionAt = new SolrDate( data.slave.nextExecutionAt );
var currentDate = new SolrDate( data.slave.currentDate );
if( nextExecutionAt.getTime() > currentDate.getTime() )
{
next_tick = ( nextExecutionAt.getTime() - currentDate.getTime() ) / 1000;
approx_element.hide();
$( 'small', timer_element )
.text( data.slave.nextExecutionAt )
.show();
}
}
init_timer( next_tick );
timer_element
.show();
}
}
}
var master_settings_element = $( '#master-settings', replication_element );
var master_data = is_slave ? data.slave.masterDetails.master : data.master;
var replication_icon = 'ico-0';
if( 'true' === master_data.replicationEnabled )
{
replication_icon = 'ico-1';
$( '.disable-replication', navigation_element ).show();
$( '.enable-replication', navigation_element ).hide();
}
else
{
$( '.disable-replication', navigation_element ).hide();
$( '.enable-replication', navigation_element ).show();
}
$( '.replicationEnabled dd', master_settings_element )
.removeClass( 'ico-0' )
.removeClass( 'ico-1' )
.addClass( replication_icon )
.parents( 'li' ).show();
$( '.replicateAfter dd', master_settings_element )
.html( master_data.replicateAfter.join( ', ' ) )
.parents( 'li' ).show();
if( master_data.confFiles )
{
var conf_files = [];
var conf_data = master_data.confFiles.split( ',' );
for( var i = 0; i < conf_data.length; i++ )
{
var item = conf_data[i];
if( - 1 !== item.indexOf( ':' ) )
{
info = item.split( ':' );
item = '<abbr title="' + info[0] + ' » ' + info[1] + '">' + ( is_slave ? info[1] : info[0] ) + '</abbr>';
}
conf_files.push( item );
}
$( '.confFiles dd', master_settings_element )
.html( conf_files.join( ', ' ) )
.parents( 'li' ).show();
}
$( '.block', replication_element ).last()
.addClass( 'last' );
},
error : function( xhr, text_status, error_thrown )
{
$( '#content' )
.html( 'sorry, no replication-handler defined!' );
},
complete : function( xhr, text_status )
{
}
}
);
}
// #/:core/replication
sammy.get
(
/^#\/([\w\d-]+)\/(replication)$/,
function( context )
{
var core_basepath = this.active_core.attr( 'data-basepath' );
var content_element = $( '#content' );
/^#\/([\w\d-]+)\/(replication)$/,
function( context )
{
core_basepath = this.active_core.attr( 'data-basepath' );
var content_element = $( '#content' );
$.get
(
'tpl/replication.html',
function( template )
{
content_element
.html( template );
$.get
(
'tpl/replication.html',
function( template )
{
content_element
.html( template );
var replication_element = $( '#replication', content_element );
var navigation_element = $( '#navigation', replication_element );
replication_element = $( '#replication', content_element );
navigation_element = $( '#navigation', replication_element );
function convert_seconds_to_readable_time( value )
{
var text = [];
value = parseInt( value );
replication_fetch_status();
var minutes = Math.floor( value / 60 );
var hours = Math.floor( minutes / 60 );
if( 0 !== hours )
{
text.push( hours + 'h' );
value -= hours * 60 * 60;
minutes -= hours * 60;
}
if( 0 !== minutes )
{
text.push( minutes + 'm' );
value -= minutes * 60;
}
text.push( value + 's' );
return text.join( ' ' );
}
function replication_fetch_status()
{
$.ajax
(
{
url : core_basepath + '/replication?command=details&wt=json',
dataType : 'json',
beforeSend : function( xhr, settings )
{
$( '.refresh-status', navigation_element )
.addClass( 'loader' );
},
success : function( response, text_status, xhr )
{
$( '.refresh-status', navigation_element )
.removeClass( 'loader' );
var data = response.details;
var is_slave = 'true' === data.isSlave;
replication_element
.addClass( is_slave ? 'slave' : 'master' );
if( is_slave )
{
var error_element = $( '#error', replication_element );
if( data.slave.ERROR )
{
error_element
.html( data.slave.ERROR )
.show();
}
else
{
error_element
.hide()
.empty();
}
var progress_element = $( '#progress', replication_element );
var start_element = $( '#start', progress_element );
$( 'span', start_element )
.text( data.slave.replicationStartTime );
var eta_element = $( '#eta', progress_element );
$( 'span', eta_element )
.text( convert_seconds_to_readable_time( data.slave.timeRemaining ) );
var bar_element = $( '#bar', progress_element );
$( '.files span', bar_element )
.text( data.slave.numFilesToDownload );
$( '.size span', bar_element )
.text( data.slave.bytesToDownload );
var speed_element = $( '#speed', progress_element );
$( 'span', speed_element )
.text( data.slave.downloadSpeed );
var done_element = $( '#done', progress_element );
$( '.files span', done_element )
.text( data.slave.numFilesDownloaded );
$( '.size span', done_element )
.text( data.slave.bytesDownloaded );
$( '.percent span', done_element )
.text( parseInt(data.slave.totalPercent ) );
var percent = parseInt( data.slave.totalPercent );
if( 0 === percent )
{
done_element
.css( 'width', '1px' );
}
else
{
done_element
.css( 'width', percent + '%' );
}
var current_file_element = $( '#current-file', replication_element );
$( '.file', current_file_element )
.text( data.slave.currentFile );
$( '.done', current_file_element )
.text( data.slave.currentFileSizeDownloaded );
$( '.total', current_file_element )
.text( data.slave.currentFileSize );
$( '.percent', current_file_element )
.text( parseInt( data.slave.currentFileSizePercent ) );
if( !data.slave.indexReplicatedAtList )
{
data.slave.indexReplicatedAtList = [];
}
if( !data.slave.replicationFailedAtList )
{
data.slave.replicationFailedAtList = [];
}
var iterations_element = $( '#iterations', replication_element );
var iterations_list = $( '.iterations ul', iterations_element );
var iterations_data = [];
$.merge( iterations_data, data.slave.indexReplicatedAtList );
$.merge( iterations_data, data.slave.replicationFailedAtList );
if( 0 !== iterations_data.length )
{
var iterations = [];
for( var i = 0; i < iterations_data.length; i++ )
{
iterations.push
(
'<li data-date="' + iterations_data[i] + '">' +
iterations_data[i] + '</li>'
);
}
iterations_list
.html( iterations.join( "\n" ) )
.show();
$( data.slave.indexReplicatedAtList )
.each
(
function( key, value )
{
$( 'li[data-date="' + value + '"]', iterations_list )
.addClass( 'replicated' );
}
);
if( data.slave.indexReplicatedAt )
{
$(
'li[data-date="' + data.slave.indexReplicatedAt + '"]',
iterations_list
)
.addClass( 'latest' );
}
$( data.slave.replicationFailedAtList )
.each
(
function( key, value )
{
$( 'li[data-date="' + value + '"]', iterations_list )
.addClass( 'failed' );
}
);
if( data.slave.replicationFailedAt )
{
$(
'li[data-date="' + data.slave.replicationFailedAt + '"]',
iterations_list
)
.addClass( 'latest' );
}
if( 0 !== $( 'li:hidden', iterations_list ).size() )
{
$( 'a', iterations_element )
.show();
}
else
{
$( 'a', iterations_element )
.hide();
}
}
}
var details_element = $( '#details', replication_element );
var current_type_element = $( ( is_slave ? '.slave' : '.master' ), details_element );
$( '.version div', current_type_element )
.html( data.indexVersion );
$( '.generation div', current_type_element )
.html( data.generation );
$( '.size div', current_type_element )
.html( data.indexSize );
if( is_slave )
{
var master_element = $( '.master', details_element );
$( '.version div', master_element )
.html( data.slave.masterDetails.indexVersion );
$( '.generation div', master_element )
.html( data.slave.masterDetails.generation );
$( '.size div', master_element )
.html( data.slave.masterDetails.indexSize );
if( data.indexVersion !== data.slave.masterDetails.indexVersion )
{
$( '.version', details_element )
.addClass( 'diff' );
}
else
{
$( '.version', details_element )
.removeClass( 'diff' );
}
if( data.generation !== data.slave.masterDetails.generation )
{
$( '.generation', details_element )
.addClass( 'diff' );
}
else
{
$( '.generation', details_element )
.removeClass( 'diff' );
}
}
if( is_slave )
{
var settings_element = $( '#settings', replication_element );
if( data.slave.masterUrl )
{
$( '.masterUrl dd', settings_element )
.html( response.details.slave.masterUrl )
.parents( 'li' ).show();
}
var polling_content = '&nbsp;';
var polling_ico = 'ico-1';
if( 'true' === data.slave.isPollingDisabled )
{
polling_ico = 'ico-0';
$( '.disable-polling', navigation_element ).hide();
$( '.enable-polling', navigation_element ).show();
}
else
{
$( '.disable-polling', navigation_element ).show();
$( '.enable-polling', navigation_element ).hide();
if( data.slave.pollInterval )
{
polling_content = '(interval: ' + data.slave.pollInterval + ')';
}
}
$( '.isPollingDisabled dd', settings_element )
.removeClass( 'ico-0' )
.removeClass( 'ico-1' )
.addClass( polling_ico )
.html( polling_content )
.parents( 'li' ).show();
}
var master_settings_element = $( '#master-settings', replication_element );
var master_data = is_slave
? data.slave.masterDetails.master
: data.master;
var replication_icon = 'ico-0';
if( 'true' === master_data.replicationEnabled )
{
replication_icon = 'ico-1';
$( '.disable-replication', navigation_element ).show();
$( '.enable-replication', navigation_element ).hide();
}
else
{
$( '.disable-replication', navigation_element ).hide();
$( '.enable-replication', navigation_element ).show();
}
$( '.replicationEnabled dd', master_settings_element )
.removeClass( 'ico-0' )
.removeClass( 'ico-1' )
.addClass( replication_icon )
.parents( 'li' ).show();
$( '.replicateAfter dd', master_settings_element )
.html( master_data.replicateAfter.join( ', ' ) )
.parents( 'li' ).show();
if( master_data.confFiles )
{
var conf_files = [];
var conf_data = master_data.confFiles.split( ',' );
for( var i = 0; i < conf_data.length; i++ )
{
var item = conf_data[i];
if( - 1 !== item.indexOf( ':' ) )
{
info = item.split( ':' );
item = '<abbr title="' + info[0] + ' » ' + info[1] + '">'
+ ( is_slave ? info[1] : info[0] )
+ '</abbr>';
}
conf_files.push( item );
}
$( '.confFiles dd', master_settings_element )
.html( conf_files.join( ', ' ) )
.parents( 'li' ).show();
}
$( '.block', replication_element ).last()
.addClass( 'last' );
if( 'true' === data.slave.isReplicating )
{
replication_element
.addClass( 'replicating' );
$( '.replicate-now', navigation_element ).hide();
$( '.abort-replication', navigation_element ).show();
window.setTimeout( replication_fetch_status, 1000 );
}
else
{
replication_element
.removeClass( 'replicating' );
$( '.replicate-now', navigation_element ).show();
$( '.abort-replication', navigation_element ).hide();
}
},
error : function( xhr, text_status, error_thrown )
{
$( '#content' )
.html( 'sorry, no replication-handler defined!' );
},
complete : function( xhr, text_status )
{
}
}
);
}
replication_fetch_status();
$( '#iterations a', content_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parents( '.iterations' )
.toggleClass( 'expanded' );
$( '#iterations a', content_element )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).parents( '.iterations' )
.toggleClass( 'expanded' );
return false;
}
);
$( 'button', navigation_element )
.die( 'click' )
.live
(
'click',
function( event )
{
var button = $( this );
var command = button.data( 'command' );
if( button.hasClass( 'refresh-status' ) && !button.hasClass( 'loader' ) )
{
replication_fetch_status();
}
else if( command )
{
$.get
(
core_basepath + '/replication?command=' + command + '&wt=json',
function()
{
replication_fetch_status();
}
);
}
return false;
}
);
return false;
}
);
}
);
$( 'button', navigation_element )
.die( 'click' )
.live
(
'click',
function( event )
{
var button = $( this );
var command = button.data( 'command' );
if( button.hasClass( 'refresh-status' ) && !button.hasClass( 'loader' ) )
{
replication_fetch_status();
}
else if( command )
{
$.get
(
core_basepath + '/replication?command=' + command + '&wt=json',
function()
{
replication_fetch_status();
}
);
}
return false;
}
);
}
);
}
);

File diff suppressed because it is too large Load Diff

View File

@ -1,144 +1,159 @@
/*
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.
*/
// #/threads
sammy.get
(
/^#\/(threads)$/,
function( context )
{
var core_basepath = $( 'li[data-basepath]', app.menu_element ).attr( 'data-basepath' );
var content_element = $( '#content' );
/^#\/(threads)$/,
function( context )
{
var core_basepath = $( 'li[data-basepath]', app.menu_element ).attr( 'data-basepath' );
var content_element = $( '#content' );
$.get
$.get
(
'tpl/threads.html',
function( template )
{
content_element
.html( template );
$.ajax
(
'tpl/threads.html',
function( template )
{
url : core_basepath + '/admin/threads?wt=json',
dataType : 'json',
context : $( '#threads', content_element ),
beforeSend : function( xhr, settings )
{
content_element
.html( template );
},
success : function( response, text_status, xhr )
{
var self = this;
$.ajax
(
{
url : core_basepath + '/admin/threads?wt=json',
dataType : 'json',
context : $( '#threads', content_element ),
beforeSend : function( xhr, settings )
{
},
success : function( response, text_status, xhr )
{
var self = this;
var threadDumpData = response.system.threadDump;
var threadDumpContent = [];
var c = 0;
for( var i = 1; i < threadDumpData.length; i += 2 )
{
var state = threadDumpData[i].state.esc();
var name = '<a title="' + state +'"><span>' + threadDumpData[i].name.esc() + ' (' + threadDumpData[i].id.esc() + ')</span></a>';
var threadDumpData = response.system.threadDump;
var threadDumpContent = [];
var c = 0;
for( var i = 1; i < threadDumpData.length; i += 2 )
{
var state = threadDumpData[i].state.esc();
var name = '<a title="' + state +'"><span>' + threadDumpData[i].name.esc() + ' (' + threadDumpData[i].id.esc() + ')</span></a>';
var classes = [state];
var details = '';
var classes = [state];
var details = '';
if( 0 !== c % 2 )
{
classes.push( 'odd' );
}
if( 0 !== c % 2 )
{
classes.push( 'odd' );
}
if( threadDumpData[i].lock )
{
classes.push( 'lock' );
name += "\n" + '<p title="Waiting on">' + threadDumpData[i].lock.esc() + '</p>';
}
if( threadDumpData[i].lock )
{
classes.push( 'lock' );
name += "\n" + '<p title="Waiting on">' + threadDumpData[i].lock.esc() + '</p>';
}
if( threadDumpData[i].stackTrace && 0 !== threadDumpData[i].stackTrace.length )
{
classes.push( 'stacktrace' );
if( threadDumpData[i].stackTrace && 0 !== threadDumpData[i].stackTrace.length )
{
classes.push( 'stacktrace' );
var stack_trace = threadDumpData[i].stackTrace
.join( '###' )
.esc()
.replace( /\(/g, '&#8203;(' )
.replace( /###/g, '</li><li>' );
var stack_trace = threadDumpData[i].stackTrace
.join( '###' )
.esc()
.replace( /\(/g, '&#8203;(' )
.replace( /###/g, '</li><li>' );
name += '<div>' + "\n"
+ '<ul>' + "\n"
+ '<li>' + stack_trace + '</li>'
+ '</ul>' + "\n"
+ '</div>';
}
name += '<div>' + "\n"
+ '<ul>' + "\n"
+ '<li>' + stack_trace + '</li>'
+ '</ul>' + "\n"
+ '</div>';
}
var item = '<tr class="' + classes.join( ' ' ) +'">' + "\n"
+ '<td class="name">' + name + '</td>' + "\n"
+ '<td class="time">' + threadDumpData[i].cpuTime.esc() + '<br>' + threadDumpData[i].userTime.esc() + '</td>' + "\n"
+ '</tr>';
var item = '<tr class="' + classes.join( ' ' ) +'">' + "\n"
+ '<td class="name">' + name + '</td>' + "\n"
+ '<td class="time">' + threadDumpData[i].cpuTime.esc() + '<br>' + threadDumpData[i].userTime.esc() + '</td>' + "\n"
+ '</tr>';
threadDumpContent.push( item );
c++;
}
threadDumpContent.push( item );
c++;
}
var threadDumpBody = $( '#thread-dump tbody', this );
var threadDumpBody = $( '#thread-dump tbody', this );
threadDumpBody
.html( threadDumpContent.join( "\n" ) );
threadDumpBody
.html( threadDumpContent.join( "\n" ) );
$( '.name a', threadDumpBody )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).closest( 'tr' )
.toggleClass( 'open' );
}
);
$( '.controls a', this )
.die( 'click' )
.live
(
'click',
function( event )
{
var threads_element = $( self );
var is_collapsed = threads_element.hasClass( 'collapsed' );
var thread_rows = $( 'tr', threads_element );
thread_rows
.each
(
function( index, element )
{
if( is_collapsed )
{
$( element )
.addClass( 'open' );
}
else
{
$( element )
.removeClass( 'open' );
}
}
);
threads_element
.toggleClass( 'collapsed' )
.toggleClass( 'expanded' );
}
);
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
}
$( '.name a', threadDumpBody )
.die( 'click' )
.live
(
'click',
function( event )
{
$( this ).closest( 'tr' )
.toggleClass( 'open' );
}
);
$( '.controls a', this )
.die( 'click' )
.live
(
'click',
function( event )
{
var threads_element = $( self );
var is_collapsed = threads_element.hasClass( 'collapsed' );
var thread_rows = $( 'tr', threads_element );
thread_rows
.each
(
function( index, element )
{
if( is_collapsed )
{
$( element )
.addClass( 'open' );
}
else
{
$( element )
.removeClass( 'open' );
}
}
);
threads_element
.toggleClass( 'collapsed' )
.toggleClass( 'expanded' );
}
);
},
error : function( xhr, text_status, error_thrown)
{
},
complete : function( xhr, text_status )
{
}
}
);
}
}
);
}
);

View File

@ -1,113 +0,0 @@
{
"levels" : ["FINEST", "FINE", "CONFIG", "INFO", "WARNING", "SEVERE"],
"logger" : {
"root" : {
"level": { "effective_level" : "INFO" },
"effective_level" : "INFO"
},
"global" : { "effective_level" : "INFO" },
"javax" : null,
"javax.management" : { "effective_level" : "INFO" },
"javax.management.mbeanserver" : { "effective_level" : "INFO" },
"javax.management.misc" : { "effective_level" : "INFO" },
"javax.management.mlet" : { "effective_level" : "INFO" },
"javax.management.modelmbean" : { "effective_level" : "INFO" },
"javax.management.monitor" : { "effective_level" : "INFO" },
"javax.management.notification" : { "effective_level" : "INFO" },
"javax.management.relation" : { "effective_level" : "INFO" },
"javax.management.snmp" : { "effective_level" : "INFO" },
"javax.management.snmp.daemon" : { "effective_level" : "INFO" },
"javax.management.timer" : { "effective_level" : "INFO" },
"org" : null,
"org.apache" : null,
"org.apache.solr" : null,
"org.apache.solr.analysis" : null,
"org.apache.solr.analysis.BaseTokenFilterFactory" : { "effective_level" : "INFO" },
"org.apache.solr.analysis.BaseTokenStreamFactory" : { "effective_level" : "INFO" },
"org.apache.solr.analysis.BaseTokenizerFactory" : { "effective_level" : "INFO" },
"org.apache.solr.cloud" : null,
"org.apache.solr.cloud.SolrZkServer" : { "effective_level" : "INFO" },
"org.apache.solr.cloud.ZkController" : { "effective_level" : "INFO" },
"org.apache.solr.common" : null,
"org.apache.solr.common.cloud" : null,
"org.apache.solr.common.cloud.CloudState" : { "effective_level" : "INFO" },
"org.apache.solr.common.cloud.ConnectionManager" : { "effective_level" : "INFO" },
"org.apache.solr.common.cloud.DefaultConnectionStrategy" : { "effective_level" : "INFO" },
"org.apache.solr.common.cloud.SolrZkClient" : { "effective_level" : "INFO" },
"org.apache.solr.common.cloud.ZkStateReader" : { "effective_level" : "INFO" },
"org.apache.solr.common.util" : null,
"org.apache.solr.common.util.ConcurrentLRUCache" : { "effective_level" : "INFO" },
"org.apache.solr.common.util.SystemIdResolver" : { "effective_level" : "INFO" },
"org.apache.solr.core" : null,
"org.apache.solr.core.Config" : { "effective_level" : "INFO" },
"org.apache.solr.core.CoreContainer" : { "effective_level" : "INFO" },
"org.apache.solr.core.JmxMonitoredMap" : { "effective_level" : "INFO" },
"org.apache.solr.core.RequestHandlers" : { "effective_level" : "INFO" },
"org.apache.solr.core.SolrConfig" : { "effective_level" : "INFO" },
"org.apache.solr.core.SolrCore" : { "effective_level" : "INFO" },
"org.apache.solr.core.SolrResourceLoader" : { "effective_level" : "INFO" },
"org.apache.solr.handler" : null,
"org.apache.solr.handler.XmlUpdateRequestHandler" : { "effective_level" : "INFO" },
"org.apache.solr.handler.admin" : null,
"org.apache.solr.handler.admin.LukeRequestHandler" : { "effective_level" : "INFO" },
"org.apache.solr.handler.admin.SystemInfoHandler" : { "effective_level" : "INFO" },
"org.apache.solr.handler.component" : null,
"org.apache.solr.handler.component.QueryElevationComponent" : { "effective_level" : "INFO" },
"org.apache.solr.handler.component.SearchHandler" : { "effective_level" : "INFO" },
"org.apache.solr.handler.component.SpellCheckComponent" : { "effective_level" : "INFO" },
"org.apache.solr.highlight" : null,
"org.apache.solr.highlight.DefaultSolrHighlighter" : { "effective_level" : "INFO" },
"org.apache.solr.highlight.SolrHighlighter" : { "effective_level" : "INFO" },
"org.apache.solr.response" : null,
"org.apache.solr.response.BinaryResponseWriter" : { "effective_level" : "INFO" },
"org.apache.solr.response.XSLTResponseWriter" : { "effective_level" : "INFO" },
"org.apache.solr.schema" : null,
"org.apache.solr.schema.FieldType" : { "effective_level" : "INFO" },
"org.apache.solr.schema.IndexSchema" : { "effective_level" : "INFO" },
"org.apache.solr.search" : null,
"org.apache.solr.search.SolrIndexSearcher" : { "effective_level" : "INFO" },
"org.apache.solr.servlet" : null,
"org.apache.solr.servlet.NewLogLevelSelection" : { "effective_level" : "INFO" },
"org.apache.solr.servlet.SolrDispatchFilter" : { "effective_level" : "INFO" },
"org.apache.solr.servlet.SolrRequestParsers" : { "effective_level" : "INFO" },
"org.apache.solr.spelling" : null,
"org.apache.solr.spelling.AbstractLuceneSpellChecker" : { "effective_level" : "INFO" },
"org.apache.solr.spelling.IndexBasedSpellChecker" : { "effective_level" : "INFO" },
"org.apache.solr.update" : null,
"org.apache.solr.update.SolrIndexConfig" : { "effective_level" : "INFO" },
"org.apache.solr.update.UpdateHandler" : { "effective_level" : "INFO" },
"org.apache.solr.util" : null,
"org.apache.solr.util.plugin" : null,
"org.apache.solr.util.plugin.AbstractPluginLoader" : { "effective_level" : "INFO" },
"org.apache.zookeeper" : null,
"org.apache.zookeeper.ClientCnxn" : { "effective_level" : "INFO" },
"org.apache.zookeeper.CreateMode" : { "effective_level" : "INFO" },
"org.apache.zookeeper.ZooKeeper" : { "effective_level" : "INFO" },
"org.apache.zookeeper.common" : null,
"org.apache.zookeeper.common.PathTrie" : { "effective_level" : "INFO" },
"org.apache.zookeeper.jmx" : null,
"org.apache.zookeeper.jmx.MBeanRegistry" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server" : null,
"org.apache.zookeeper.server.ConnectionBean" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.DataTree" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.FinalRequestProcessor" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.NIOServerCnxn" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.PrepRequestProcessor" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.Request" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.SessionTrackerImpl" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.SyncRequestProcessor" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.WatchManager" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.ZKDatabase" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.ZooKeeperServer" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.ZooKeeperServerMain" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.persistence" : null,
"org.apache.zookeeper.server.persistence.FileSnap" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.persistence.FileTxnLog" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.persistence.FileTxnSnapLog" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.persistence.Util" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.quorum" : null,
"org.apache.zookeeper.server.quorum.QuorumPeerConfig" : { "effective_level" : "INFO" },
"org.apache.zookeeper.server.util" : null,
"org.apache.zookeeper.server.util.SerializeUtils" : { "effective_level" : "INFO" }
}
}

View File

@ -16,68 +16,68 @@ limitations under the License.
-->
<div id="analysis">
<div class="block analysis-error" id="analysis-handler-missing">
<div class="block analysis-error" id="analysis-handler-missing">
<div class="head">This Functionality requires the <code>/analysis/field</code> Handler to be registered and active!</div>
<div class="head">This Functionality requires the <code>/analysis/field</code> Handler to be registered and active!</div>
</div>
</div>
<div class="block analysis-error" id="analysis-error">
<div class="block analysis-error" id="analysis-error">
<div class="head"><a><span></span></a></div>
<div class="body"></div>
<div class="head"><a><span></span></a></div>
<div class="body"></div>
</div>
</div>
<div id="analysis-holder">
<div id="analysis-holder">
<div id="field-analysis">
<div id="field-analysis">
<form method="get">
<form method="get">
<ul class="clearfix">
<ul class="clearfix">
<li class="index">
<li class="index">
<label for="analysis_fieldvalue_index">Field Value (Index)</label>
<textarea name="analysis.fieldvalue" id="analysis_fieldvalue_index"></textarea>
<label for="analysis_fieldvalue_index">Field Value (Index)</label>
<textarea name="analysis.fieldvalue" id="analysis_fieldvalue_index"></textarea>
</li>
</li>
<li class="query">
<li class="query">
<label for="analysis_fieldvalue_query">Field Value (Query)</label>
<textarea name="analysis.query" id="analysis_fieldvalue_query"></textarea>
<label for="analysis_fieldvalue_query">Field Value (Query)</label>
<textarea name="analysis.query" id="analysis_fieldvalue_query"></textarea>
</li>
</li>
<li class="settings-holder clearfix">
<div class="settings">
<li class="settings-holder clearfix">
<div class="settings">
<label for="type_or_name">Analyse Fieldname / FieldType:</label>
<select id="type_or_name"></select>
<label for="type_or_name">Analyse Fieldname / FieldType:</label>
<select id="type_or_name"></select>
<div>
<div>
<button type="submit">Analyse Values</button>
<button type="submit">Analyse Values</button>
<div class="verbose_output active">
<a>Verbose Output</a>
</div>
<div class="verbose_output active">
<a>Verbose Output</a>
</div>
</div>
</div>
</div>
</li>
</div>
</li>
</ul>
</ul>
</form>
</form>
</div>
<div id="analysis-result" class="clearfix verbose_output"></div>
</div>
<div id="analysis-result" class="clearfix verbose_output"></div>
</div>
</div>

View File

@ -16,32 +16,39 @@ limitations under the License.
-->
<div id="cloud">
<div class="block">
<div class="block">
<h2><span>Zookeeper-Data</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<h2><span>Zookeeper-Data</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<div class="content clearfix">
<div class="content clearfix">
<div id="tree" class="tree">#tree</div>
<div id="file-content" class="clearfix">
<div id="tree" class="tree">#tree</div>
<div id="prop">
<ul></ul>
</div>
<div id="file-content" class="clearfix">
<div id="data"></div>
<div id="prop">
<ul></ul>
</div>
<a class="close"><span>[x]</span></a>
</div>
<div id="data"></div>
<a class="close"><span>[x]</span></a>
</div>
</div>
</div>
<a class="debug"><span>Generate Dump</span></a>
<div id="debug">
<ul class="clearfix">
<li class="clipboard"><a href="#" data-copied="Copied to Clipboard!">Copy to Clipboard (BUGGY!)</a></li>
<li class="close"><a href="#">Close</a></li>
</ul>
<pre class="debug"></pre>
</div>
</div>
</div>

View File

@ -16,225 +16,225 @@ limitations under the License.
-->
<div id="cores" class="clearfix">
<div id="frame">
<div id="frame">
<div id="actions" class="actions clearfix">
<div class="button-holder">
<div class="button">
<a class="reload">Reload</a>
</div>
</div>
<div class="button-holder options rename">
<div class="button">
<a class="rename">Rename</a>
</div>
<div class="button-content">
<div id="actions" class="actions clearfix">
<div class="button-holder">
<div class="button">
<a class="reload">Reload</a>
</div>
</div>
<div class="button-holder options rename">
<div class="button">
<a class="rename">Rename</a>
</div>
<div class="button-content">
<form>
<form>
<input type="hidden" name="action" value="RENAME">
<input type="hidden" name="action" value="RENAME">
<p class="clearfix"><label for="rename_core">from:</label>
<input type="text" name="core" id="rename_core" readonly="readonly"></p>
<p class="clearfix"><label for="rename_core">from:</label>
<input type="text" name="core" id="rename_core" readonly="readonly"></p>
<p class="clearfix"><label for="rename_other">to:</label>
<input type="text" name="other" id="rename_other"></p>
<p class="clearfix"><label for="rename_other">to:</label>
<input type="text" name="other" id="rename_other"></p>
<p class="clearfix buttons">
<a class="submit"><span>Rename</span></a>
<a class="reset"><span>Cancel</span></a>
</p>
<p class="clearfix buttons">
<a class="submit"><span>Rename</span></a>
<a class="reset"><span>Cancel</span></a>
</p>
</form>
</form>
</div>
</div>
<div class="button-holder options swap">
<div class="button">
<a class="swap">Swap</a>
</div>
<div class="button-content">
</div>
</div>
<div class="button-holder options swap">
<div class="button">
<a class="swap">Swap</a>
</div>
<div class="button-content">
<form>
<form>
<input type="hidden" name="action" value="SWAP">
<input type="hidden" name="core">
<input type="hidden" name="action" value="SWAP">
<input type="hidden" name="core">
<p class="clearfix"><label for="swap_core">this:</label>
<select id="swap_core" class="core" disabled="disabled">
</select></p>
<p class="clearfix"><label for="swap_core">this:</label>
<select id="swap_core" class="core" disabled="disabled">
</select></p>
<p class="clearfix"><label for="swap_other">and:</label>
<select name="other" id="swap_other" class="other">
</select></p>
<p class="clearfix"><label for="swap_other">and:</label>
<select name="other" id="swap_other" class="other">
</select></p>
<p class="clearfix buttons">
<a class="submit"><span>Swap</span></a>
<a class="reset"><span>Cancel</span></a>
</p>
<p class="clearfix buttons">
<a class="submit"><span>Swap</span></a>
<a class="reset"><span>Cancel</span></a>
</p>
</form>
</div>
</div>
<div class="button-holder">
<div class="button">
<a class="unload">Unload</a>
</div>
</div>
<div class="button-holder">
<div class="button">
<a class="optimize">Optimize</a>
</div>
</div>
</form>
</div>
</div>
<div class="button-holder">
<div class="button">
<a class="unload">Unload</a>
</div>
</div>
<div class="button-holder">
<div class="button">
<a class="optimize">Optimize</a>
</div>
</div>
</div>
</div>
<div id="data">
<div id="data">
<div class="block" id="core-data">
<div class="block" id="core-data">
<h2><span></span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<h2><span></span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<div class="content">
<div class="content">
<ul>
<ul>
<li class="startTime"><dl class="clearfix">
<dt><span>startTime:</span></dt>
<dd class="timeago"></dd>
</dl></li>
<li class="startTime"><dl class="clearfix">
<dt><span>startTime:</span></dt>
<dd class="timeago"></dd>
</dl></li>
<li class="instanceDir"><dl class="clearfix">
<dt><span>instanceDir:</span></dt>
<dd></dd>
</dl></li>
<li class="instanceDir"><dl class="clearfix">
<dt><span>instanceDir:</span></dt>
<dd></dd>
</dl></li>
<li class="dataDir"><dl class="clearfix">
<dt><span>dataDir:</span></dt>
<dd></dd>
</dl></li>
</ul>
</div>
</div>
<li class="dataDir"><dl class="clearfix">
<dt><span>dataDir:</span></dt>
<dd></dd>
</dl></li>
</ul>
</div>
</div>
<div class="block" id="index-data">
<div class="block" id="index-data">
<h2><span>Index</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<h2><span>Index</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<div class="content">
<ul>
<div class="content">
<ul>
<li class="lastModified"><dl class="clearfix">
<dt><span>lastModified:</span></dt>
<dd class="timeago"></dd>
</dl></li>
<li class="lastModified"><dl class="clearfix">
<dt><span>lastModified:</span></dt>
<dd class="timeago"></dd>
</dl></li>
<li class="version"><dl class="clearfix">
<dt><span>version:</span></dt>
<dd></dd>
</dl></li>
<li class="version"><dl class="clearfix">
<dt><span>version:</span></dt>
<dd></dd>
</dl></li>
<li class="numDocs"><dl class="clearfix">
<dt><span>numDocs:</span></dt>
<dd></dd>
</dl></li>
<li class="numDocs"><dl class="clearfix">
<dt><span>numDocs:</span></dt>
<dd></dd>
</dl></li>
<li class="maxDoc"><dl class="clearfix">
<dt><span>maxDoc:</span></dt>
<dd></dd>
</dl></li>
<li class="maxDoc"><dl class="clearfix">
<dt><span>maxDoc:</span></dt>
<dd></dd>
</dl></li>
<li class="optimized"><dl class="clearfix">
<dt><span>optimized:</span></dt>
<dd class="ico"><span></span></dd>
</dl></li>
<li class="optimized"><dl class="clearfix">
<dt><span>optimized:</span></dt>
<dd class="ico"><span></span></dd>
</dl></li>
<li class="current"><dl class="clearfix">
<dt><span>current:</span></dt>
<dd class="ico"><span></span></dd>
</dl></li>
<li class="current"><dl class="clearfix">
<dt><span>current:</span></dt>
<dd class="ico"><span></span></dd>
</dl></li>
<li class="hasDeletions"><dl class="clearfix">
<dt><span>hasDeletions:</span></dt>
<dd class="ico"><span></span></dd>
</dl></li>
<li class="hasDeletions"><dl class="clearfix">
<dt><span>hasDeletions:</span></dt>
<dd class="ico"><span></span></dd>
</dl></li>
<li class="directory"><dl class="clearfix">
<dt><span>directory:</span></dt>
<dd></dd>
</dl></li>
</ul>
</div>
</div>
<li class="directory"><dl class="clearfix">
<dt><span>directory:</span></dt>
<dd></dd>
</dl></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="navigation" class="clearfix">
<div id="navigation" class="clearfix">
<div class="actions">
<div class="button-holder options add">
<div class="button">
<a class="add">Add Core</a>
</div>
<div class="button-content">
<div class="actions">
<div class="button-holder options add">
<div class="button">
<a class="add">Add Core</a>
</div>
<div class="button-content">
<form>
<form>
<input type="hidden" name="action" value="CREATE">
<input type="hidden" name="action" value="CREATE">
<p class="clearfix"><label for="add_name">name:</label>
<input type="text" name="name" id="add_name"></p>
<p class="clearfix"><label for="add_name">name:</label>
<input type="text" name="name" id="add_name"></p>
<p class="clearfix"><label for="add_instanceDir">instanceDir:</label>
<input type="text" name="instanceDir" id="add_instanceDir"></p>
<p class="clearfix"><label for="add_instanceDir">instanceDir:</label>
<input type="text" name="instanceDir" id="add_instanceDir"></p>
<p class="clearfix"><label for="add_config">config:</label>
<input type="text" name="config" id="add_config"></p>
<p class="clearfix"><label for="add_config">config:</label>
<input type="text" name="config" id="add_config"></p>
<p class="clearfix"><label for="add_schema">schema:</label>
<input type="text" name="schema" id="add_schema"></p>
<p class="clearfix"><label for="add_schema">schema:</label>
<input type="text" name="schema" id="add_schema"></p>
<p class="clearfix"><label for="add_dataDir">dataDir:</label>
<input type="text" name="dataDir" id="dataDir"></p>
<p class="clearfix"><label for="add_dataDir">dataDir:</label>
<input type="text" name="dataDir" id="dataDir"></p>
<p class="clearfix buttons">
<a class="submit"><span>Add Core</span></a>
<a class="reset"><span>Cancel</span></a>
</p>
<p class="clearfix buttons">
<a class="submit"><span>Add Core</span></a>
<a class="reset"><span>Cancel</span></a>
</p>
</form>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="list">
<div id="list">
</div>
</div>
</div>
</div>
</div>

View File

@ -16,134 +16,126 @@ limitations under the License.
-->
<div id="dashboard">
<div class="clearfix">
<div class="clearfix">
<div class="block" id="statistics">
<div class="block" id="statistics">
<h2><span>Statistics</span></h2>
<h2><span>Statistics</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<div class="message-container">
<div class="message"></div>
</div>
<div class="content">
<div class="content">
<dl>
<dl>
<dt class="index_last-modified">Last Modified:</dt>
<dd class="index_last-modified value timeago"></dd>
<dt class="index_last-modified">Last Modified:</dt>
<dd class="index_last-modified value timeago"></dd>
<dt class="index_num-docs">Num Docs:</dt>
<dd class="index_num-docs value"></dd>
<dt class="index_num-docs">Num Docs:</dt>
<dd class="index_num-docs value"></dd>
<dt class="index_max-doc">Max Doc:</dt>
<dd class="index_max-doc value"></dd>
<dt class="index_max-doc">Max Doc:</dt>
<dd class="index_max-doc value"></dd>
<dt class="index_version">Version:</dt>
<dd class="index_version value"></dd>
<dt class="index_version">Version:</dt>
<dd class="index_version value"></dd>
<dt class="index_segmentCount">Segment Count:</dt>
<dd class="index_segmentCount value"></dd>
<dt class="index_segmentCount">Segment Count:</dt>
<dd class="index_segmentCount value"></dd>
<dt class="index_optimized">Optimized:</dt>
<dd class="index_optimized value ico"><span></span>
<a>optimize now</a></dd>
<dt class="index_optimized">Optimized:</dt>
<dd class="index_optimized value ico"><span></span>
<a>optimize now</a></dd>
<dt class="index_current">Current:</dt>
<dd class="index_current value ico"><span></span></dd>
<dt class="index_current">Current:</dt>
<dd class="index_current value ico"><span></span></dd>
</dl>
</dl>
</div>
</div>
</div>
</div>
<div class="block" id="admin-extra">
<div class="block" id="admin-extra">
<h2><span>Admin Extra</span></h2>
<h2><span>Admin Extra</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<div class="message-container">
<div class="message"></div>
</div>
<div class="content">
<div class="content">
</div>
</div>
</div>
</div>
<div class="clearfix">
<div class="block" id="replication">
</div>
<div class="clearfix">
<h2><span class="is-replicating">Replication</span></h2>
<div class="block" id="replication">
<h2><span class="is-replicating">Replication</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<div class="message-container">
<div class="message"></div>
</div>
<div class="content clearfix"id="details">
<div class="content clearfix"id="details">
<table border="0" cellspacing="0" cellpadding="0">
<table border="0" cellspacing="0" cellpadding="0">
<thead>
<thead>
<tr>
<tr>
<td><span>Index</span></td>
<th>Version</th>
<th><abbr title="Generation">Gen</abbr></th>
<th>Size</th>
<td><span>Index</span></td>
<th>Version</th>
<th><abbr title="Generation">Gen</abbr></th>
<th>Size</th>
</tr>
</tr>
</thead>
<tbody>
</thead>
<tbody>
<tr class="master">
<tr class="master">
<th>Master:</th>
<td class="version"><div>x</div></td>
<td class="generation"><div>y</div></td>
<td class="size"><div>z</div></td>
<th>Master:</th>
<td class="version"><div>x</div></td>
<td class="generation"><div>y</div></td>
<td class="size"><div>z</div></td>
</tr>
</tr>
<tr class="slave slaveOnly">
<tr class="slave slaveOnly">
<th>Slave:</th>
<td class="version"><div>a</div></td>
<td class="generation"><div>c</div></td>
<td class="size"><div>c</div></td>
<th>Slave:</th>
<td class="version"><div>a</div></td>
<td class="generation"><div>c</div></td>
<td class="size"><div>c</div></td>
</tr>
</tr>
</tbody>
</tbody>
</table>
</table>
</div>
</div>
<div class="block" id="dataimport">
<h2><span>Dataimport</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<div class="content">
<!--
status:
idle
info:
-->
</div>
</div>
</div>
</div>
<div class="block" id="dataimport">
<h2><span>Dataimport</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<div class="content"></div>
</div>
</div>
</div>

View File

@ -14,110 +14,237 @@ 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.
-->
<div id="index">
<div id="index" class="clearfix">
<div class="clearfix">
<div class="clearfix">
<div class="block" id="data">
<div class="index-left">
<h2><span>Dashboard</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<div class="block" id="instance">
<div class="content">
<h2><span>Instance</span></h2>
<ul class="data">
<div class="content">
<li class="start_time"><dl class="clearfix">
<dt><span>startTime</span></dt>
<dd class="timeago"></dd>
</dl></li>
<ul class="data">
<li class="host"><dl class="clearfix">
<dt><span>host</span></dt>
<dd></dd>
</dl></li>
<li class="start_time"><dl class="clearfix">
<dt><span>Start</span></dt>
<dd class="timeago"></dd>
</dl></li>
<li class="cwd"><dl class="clearfix">
<dt><span>cwd</span></dt>
<dd></dd>
</dl></li>
<li class="host"><dl class="clearfix">
<dt><span>Host</span></dt>
<dd></dd>
</dl></li>
<li class="jvm"><dl class="clearfix">
<dt><span>JVM</span></dt>
<dd></dd>
</dl></li>
<li class="dir dir_cwd"><dl class="clearfix">
<dt><span>CWD</span></dt>
<dd></dd>
</dl></li>
<li class="command_line_args"><dl class="clearfix">
<dt><span>commandLineArgs</span></dt>
<dd></dd>
</dl></li>
</ul>
<li class="dir dir_instance"><dl class="clearfix">
<dt><span>Instance</span></dt>
<dd></dd>
</dl></li>
<ul class="lucene">
<li class="dir dir_data"><dl class="clearfix">
<dt><span>Data</span></dt>
<dd></dd>
</dl></li>
<li class="solr_spec_version"><dl class="clearfix">
<dt><span>solr-spec-version</span></dt>
<dd></dd>
</dl></li>
<li class="solr_impl_version"><dl class="clearfix">
<dt class=""><span>solr-impl-version</span></dt>
<dd></dd>
</dl></li>
<li class="lucene_spec_version"><dl class="clearfix">
<dt><span>lucene-spec-version</span></dt>
<dd></dd>
</dl></li>
<li class="dir dir_index"><dl class="clearfix">
<dt><span>Index</span></dt>
<dd></dd>
</dl></li>
</ul>
<li class="lucene_impl_version"><dl class="clearfix">
<dt><span>lucene-impl-version</span></dt>
<dd></dd>
</dl></li>
</ul>
</div>
</div>
</div>
</div>
<div class="block" id="memory">
<div class="block" id="versions">
<h2><span>Memory</span></h2>
<div class="message-container">
<div class="message"></div>
</div>
<h2><span>Versions</span></h2>
<div class="content">
<div class="content">
<div id="memory-bar">
<ul class="data">
<div id="memory-bar-max">
<span class="memory-bar-max value"></span>
<li class="solr solr_spec_version"><dl class="clearfix">
<dt><span>solr-spec</span></dt>
<dd></dd>
</dl></li>
<li class="solr_impl_version"><dl class="clearfix">
<dt class=""><span>solr-impl</span></dt>
<dd></dd>
</dl></li>
<li class="lucene lucene_spec_version"><dl class="clearfix">
<dt><span>lucene-spec</span></dt>
<dd></dd>
</dl></li>
<div id="memory-bar-total" class="bar">
<span class="memory-bar-total value"></span>
<li class="lucene_impl_version"><dl class="clearfix">
<dt><span>lucene-impl</span></dt>
<dd></dd>
</dl></li>
</ul>
<div id="memory-bar-used" class="bar">
<span class="memory-bar-used value"></span>
</div>
</div>
</div>
</div>
</div>
<div class="index-right">
</div>
<div class="block" id="system">
</div>
<h2><span>System</span></h2>
<a class="reload"><span>reload</span></a>
</div>
<div class="content">
</div>
<div id="physical-memory-bar">
</div>
<p data-desc="physical-memory-bar">Physical Memory</p>
<div class="bar-holder">
<div class="bar-max bar">
<span class="bar-max val"></span>
<div class="bar-total bar">
<span class="bar-total val"></span>
</div>
</div>
</div>
</div>
<div id="swap-space-bar">
<p data-desc="swap-space-bar">Swap Space</p>
<div class="bar-holder">
<div class="bar-max bar">
<span class="bar-max val"></span>
<div class="bar-total bar">
<span class="bar-total val"></span>
</div>
</div>
</div>
</div>
<div id="file-descriptor-bar">
<p data-desc="file-descriptor-bar">File Descriptor Count</p>
<div class="bar-holder">
<div class="bar-max bar">
<span class="bar-max val"></span>
<div class="bar-total bar">
<span class="bar-total val"></span>
</div>
</div>
</div>
</div>
<p class="no-info">Sorry, no information available</p>
</div>
</div>
</div>
</div>
<div class="clearfix">
<div class="index-left">
<div class="block" id="jvm">
<h2><span>JVM</span></h2>
<div class="content clearfix">
<ul class="data">
<li class="jvm_version"><dl class="clearfix">
<dt><span>Runtime</span></dt>
<dd></dd>
</dl></li>
<li class="processors"><dl class="clearfix">
<dt><span>Processors</span></dt>
<dd></dd>
</dl></li>
<li class="command_line_args"><dl class="clearfix">
<dt><span>Args</span></dt>
<dd></dd>
</dl></li>
</ul>
</div>
</div>
</div>
<div class="index-right">
<div class="block" id="jvm-memory">
<h2><span data-desc="jvm-memory-bar">JVM-Memory</span></h2>
<div class="content">
<div id="jvm-memory-bar">
<div class="bar-holder">
<div class="bar-max bar">
<span class="bar-max val"></span>
<div class="bar-total bar">
<span class="bar-total val"></span>
<div class="bar-used bar">
<span class="bar-used val"></span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -16,15 +16,15 @@ limitations under the License.
-->
<div id="plugins" class="clearfix">
<div id="frame">
<div id="frame">
</div>
</div>
<div id="navigation" class="clearfix">
<div id="navigation" class="clearfix">
<ul>
</ul>
</div>
<ul>
</ul>
</div>
</div>

View File

@ -16,258 +16,296 @@ limitations under the License.
-->
<div id="query" class="clearfix">
<div id="form">
<div id="form">
<form action="#" method="get">
<form action="#" method="get">
<fieldset>
<legend>common</legend>
<div class="fieldset">
<fieldset>
<legend>common</legend>
<div class="fieldset">
<label for="q">
q
</label>
<textarea name="q" id="q">*:*</textarea>
<label for="q">
q
</label>
<textarea name="q" id="q">*:*</textarea>
<label for="fq">
<a rel="help">fq</a>
</label>
<input type="text" id="fq" name="fq" class="multiple">
<label for="fq">
<a rel="help">fq</a>
</label>
<input type="text" id="fq" name="fq" class="multiple">
<label for="sort">
<a rel="help">sort</a>
</label>
<input type="text" id="sort" name="sort" class="multiple">
<label for="sort">
<a rel="help">sort</a>
</label>
<input type="text" id="sort" name="sort" class="multiple">
<label for="start">
<a rel="help">start</a>,
<a rel="help">rows</a>
</label>
<input type="text" name="start" id="start" value="0">
<input type="text" name="rows" id="rows" value="10">
<label for="start">
<a rel="help">start</a>,
<a rel="help">rows</a>
</label>
<input type="text" name="start" id="start" value="0">
<input type="text" name="rows" id="rows" value="10">
<label for="fl">
<a rel="help">fl</a>
</label>
<input type="text" name="fl" id="fl" value="">
<label for="fl">
<a rel="help">fl</a>
</label>
<input type="text" name="fl" id="fl" value="">
<label for="qt">
<a rel="help">qt</a>
</label>
<input type="text" name="qt" id="qt" value="">
<label for="qt">
<a rel="help">qt</a>
</label>
<input type="text" name="qt" id="qt" value="">
<label for="wt">
<a rel="help">wt</a>
</label>
<select name="wt" id="wt">
<option>xml</option>
<option>json</option>
<option>python</option>
<option>ruby</option>
<option>php</option>
<option>csv</option>
</select>
<label for="wt">
<a rel="help">wt</a>
</label>
<select name="wt" id="wt">
<option>xml</option>
<option>json</option>
<option>python</option>
<option>ruby</option>
<option>php</option>
<option>csv</option>
</select>
<label for="indent" class="checkbox">
<input type="checkbox" name="indent" id="indent" value="true">
<a rel="help">indent</a>
</label>
<label for="indent" class="checkbox">
<input type="checkbox" name="indent" id="indent" value="true">
<a rel="help">indent</a>
</label>
<label for="debugQuery" class="checkbox">
<input type="checkbox" name="debugQuery" id="debugQuery" value="true">
<a rel="help">debugQuery</a>
</label>
<label for="debugQuery" class="checkbox">
<input type="checkbox" name="debugQuery" id="debugQuery" value="true">
<a rel="help">debugQuery</a>
</label>
</div>
</fieldset>
</div>
</fieldset>
<fieldset class="optional">
<legend>
<label for="dismax" class="checkbox">
<input type="checkbox" name="dismax" id="dismax" value="true">
dismax
</label>
</legend>
<div class="fieldset">
<fieldset class="optional">
<legend>
<label for="dismax" class="checkbox">
<input type="checkbox" name="dismax" id="dismax" value="true">
dismax
</label>
</legend>
<div class="fieldset">
<label for="q_alt">q.alt</label>
<input type="text" name="q.alt" id="q_alt">
<label for="q_alt">q.alt</label>
<input type="text" name="q.alt" id="q_alt">
<label for="qf">qf</label>
<input type="text" name="qf" id="qf">
<label for="qf">qf</label>
<input type="text" name="qf" id="qf">
<label for="mm">mm</label>
<input type="text" name="mm" id="mm">
<label for="mm">mm</label>
<input type="text" name="mm" id="mm">
<label for="pf">pf</label>
<input type="text" name="pf" id="pf">
<label for="pf">pf</label>
<input type="text" name="pf" id="pf">
<label for="ps">ps</label>
<input type="text" name="ps" id="ps">
<label for="ps">ps</label>
<input type="text" name="ps" id="ps">
<label for="qs">qs</label>
<input type="text" name="qs" id="qs">
<label for="qs">qs</label>
<input type="text" name="qs" id="qs">
<label for="tie">tie</label>
<input type="text" name="tie" id="tie">
<label for="tie">tie</label>
<input type="text" name="tie" id="tie">
<label for="bq">bq</label>
<input type="text" name="bq" id="bq">
<label for="bq">bq</label>
<input type="text" name="bq" id="bq">
<label for="bf">bf</label>
<input type="text" name="bf" id="bf">
</fieldset>
<label for="bf">bf</label>
<input type="text" name="bf" id="bf">
</fieldset>
<fieldset class="optional">
<legend>
<label for="hl" class="checkbox">
<input type="checkbox" name="hl" id="hl" value="true">
hl
</label>
</legend>
<div class="fieldset">
<fieldset class="optional">
<legend>
<label for="edismax" class="checkbox">
<input type="checkbox" name="edismax" id="edismax" value="true">
<strong>e</strong>dismax
</label>
</legend>
<div class="fieldset">
<label for="hl_fl">hl.fl</label>
<input type="text" name="hl.fl" id="hl_fl" value="">
<label for="q_alt">q.alt</label>
<input type="text" name="q.alt" id="q_alt">
<label for="hl_simple_pre">hl.simple.pre</label>
<input type="text" name="hl.simple.pre" id="hl_simple_pre" value="<em>">
<label for="qf">qf</label>
<input type="text" name="qf" id="qf">
<label for="hl_simple_post">hl.simple.post</label>
<input type="text" name="hl.simple.post" id="hl_simple_post" value="</em>">
<label for="mm">mm</label>
<input type="text" name="mm" id="mm">
<label for="hl_requireFieldMatch" class="checkbox">
<input type="checkbox" name="hl.requireFieldMatch" id="hl_requireFieldMatch" value="true">
hl.requireFieldMatch
</label>
<label for="pf">pf</label>
<input type="text" name="pf" id="pf">
<label for="hl_usePhraseHighlighter" class="checkbox">
<input type="checkbox" name="hl.usePhraseHighlighter" id="hl_usePhraseHighlighter" value="true">
hl.usePhraseHighlighter
</label>
<label for="ps">ps</label>
<input type="text" name="ps" id="ps">
<label for="hl_highlightMultiTerm" class="checkbox">
<input type="checkbox" name="hl.highlightMultiTerm" id="hl_highlightMultiTerm" value="true">
hl.highlightMultiTerm
</label>
</div>
</fieldset>
<label for="qs">qs</label>
<input type="text" name="qs" id="qs">
<fieldset class="optional">
<legend>
<label for="facet" class="checkbox">
<input type="checkbox" name="facet" id="facet" value="true">
facet
</label>
</legend>
<div class="fieldset">
<label for="tie">tie</label>
<input type="text" name="tie" id="tie">
<label for="facet_query">facet.query</label>
<textarea name="facet.query" id="facet_query"></textarea>
<label for="bq">bq</label>
<input type="text" name="bq" id="bq">
<label for="facet_field">facet.field</label>
<input type="text" name="facet.field" id="facet_field">
<label for="bf">bf</label>
<input type="text" name="bf" id="bf">
</fieldset>
<label for="facet_prefix">facet.prefix</label>
<input type="text" name="facet.prefix" id="facet_prefix">
<fieldset class="optional">
<legend>
<label for="hl" class="checkbox">
<input type="checkbox" name="hl" id="hl" value="true">
hl
</label>
</legend>
<div class="fieldset">
</div>
</fieldset>
<label for="hl_fl">hl.fl</label>
<input type="text" name="hl.fl" id="hl_fl" value="">
<fieldset class="optional">
<legend>
<label for="spatial" class="checkbox">
<input type="checkbox" name="spatial" id="spatial" value="true">
spatial
</label>
</legend>
<div class="fieldset">
<label for="hl_simple_pre">hl.simple.pre</label>
<input type="text" name="hl.simple.pre" id="hl_simple_pre" value="<em>">
<label for="pt">pt</label>
<input type="text" name="pt" id="pt">
<label for="hl_simple_post">hl.simple.post</label>
<input type="text" name="hl.simple.post" id="hl_simple_post" value="</em>">
<label for="sfield">sfield</label>
<input type="text" name="sfield" id="sfield">
<label for="hl_requireFieldMatch" class="checkbox">
<input type="checkbox" name="hl.requireFieldMatch" id="hl_requireFieldMatch" value="true">
hl.requireFieldMatch
</label>
<label for="d">d</label>
<input type="text" name="d" id="d">
</div>
</fieldset>
<label for="hl_usePhraseHighlighter" class="checkbox">
<input type="checkbox" name="hl.usePhraseHighlighter" id="hl_usePhraseHighlighter" value="true">
hl.usePhraseHighlighter
</label>
<fieldset class="optional">
<legend>
<label for="spellcheck" class="checkbox">
<input type="checkbox" name="spellcheck" id="spellcheck" value="true">
spellcheck
</label>
</legend>
<div class="fieldset">
<label for="hl_highlightMultiTerm" class="checkbox">
<input type="checkbox" name="hl.highlightMultiTerm" id="hl_highlightMultiTerm" value="true">
hl.highlightMultiTerm
</label>
</div>
</fieldset>
<label for="spellcheck_build" class="checkbox">
<input type="checkbox" name="spellcheck.build" id="spellcheck_build" value="true">
spellcheck.build
</label>
<fieldset class="optional">
<legend>
<label for="facet" class="checkbox">
<input type="checkbox" name="facet" id="facet" value="true">
facet
</label>
</legend>
<div class="fieldset">
<label for="spellcheck_reload" class="checkbox">
<input type="checkbox" name="spellcheck.reload" id="spellcheck_reload" value="true">
spellcheck.reload
</label>
<label for="facet_query">facet.query</label>
<textarea name="facet.query" id="facet_query"></textarea>
<label for="spellcheck_q">spellcheck.q</label>
<input type="text" name="spellcheck.q" id="spellcheck_q">
<label for="facet_field">facet.field</label>
<input type="text" name="facet.field" id="facet_field">
<label for="spellcheck_dictionary">spellcheck.dictionary</label>
<input type="text" name="spellcheck.dictionary" id="spellcheck_dictionary">
<label for="facet_prefix">facet.prefix</label>
<input type="text" name="facet.prefix" id="facet_prefix">
<label for="spellcheck_count">spellcheck.count</label>
<input type="text" name="spellcheck.count" id="spellcheck_count">
</div>
</fieldset>
<label for="spellcheck_onlyMorePopular" class="checkbox">
<input type="checkbox" name="spellcheck.onlyMorePopular" id="spellcheck_onlyMorePopular" value="true">
spellcheck.onlyMorePopular
</label>
<fieldset class="optional">
<legend>
<label for="spatial" class="checkbox">
<input type="checkbox" name="spatial" id="spatial" value="true">
spatial
</label>
</legend>
<div class="fieldset">
<label for="spellcheck_extendedResults" class="checkbox">
<input type="checkbox" name="spellcheck.extendedResults" id="spellcheck_extendedResults" value="true">
spellcheck.extendedResults
</label>
<label for="pt">pt</label>
<input type="text" name="pt" id="pt">
<label for="spellcheck_collate" class="checkbox">
<input type="checkbox" name="spellcheck.collate" id="spellcheck_collate" value="true">
spellcheck.collate
</label>
<label for="sfield">sfield</label>
<input type="text" name="sfield" id="sfield">
<label for="spellcheck_maxCollations">spellcheck.maxCollations</label>
<input type="text" name="spellcheck.maxCollations" id="spellcheck_maxCollations">
<label for="d">d</label>
<input type="text" name="d" id="d">
</div>
</fieldset>
<label for="spellcheck_maxCollationTries">spellcheck.maxCollationTries</label>
<input type="text" name="spellcheck.maxCollationTries" id="spellcheck_maxCollationTries">
<fieldset class="optional">
<legend>
<label for="spellcheck" class="checkbox">
<input type="checkbox" name="spellcheck" id="spellcheck" value="true">
spellcheck
</label>
</legend>
<div class="fieldset">
<label for="spellcheck_accuracy">spellcheck.accuracy</label>
<input type="text" name="spellcheck.accuracy" id="spellcheck_accuracy">
</fieldset>
<label for="spellcheck_build" class="checkbox">
<input type="checkbox" name="spellcheck.build" id="spellcheck_build" value="true">
spellcheck.build
</label>
<label for="spellcheck_reload" class="checkbox">
<input type="checkbox" name="spellcheck.reload" id="spellcheck_reload" value="true">
spellcheck.reload
</label>
<label for="spellcheck_q">spellcheck.q</label>
<input type="text" name="spellcheck.q" id="spellcheck_q">
<label for="spellcheck_dictionary">spellcheck.dictionary</label>
<input type="text" name="spellcheck.dictionary" id="spellcheck_dictionary">
<label for="spellcheck_count">spellcheck.count</label>
<input type="text" name="spellcheck.count" id="spellcheck_count">
<label for="spellcheck_onlyMorePopular" class="checkbox">
<input type="checkbox" name="spellcheck.onlyMorePopular" id="spellcheck_onlyMorePopular" value="true">
spellcheck.onlyMorePopular
</label>
<label for="spellcheck_extendedResults" class="checkbox">
<input type="checkbox" name="spellcheck.extendedResults" id="spellcheck_extendedResults" value="true">
spellcheck.extendedResults
</label>
<label for="spellcheck_collate" class="checkbox">
<input type="checkbox" name="spellcheck.collate" id="spellcheck_collate" value="true">
spellcheck.collate
</label>
<label for="spellcheck_maxCollations">spellcheck.maxCollations</label>
<input type="text" name="spellcheck.maxCollations" id="spellcheck_maxCollations">
<label for="spellcheck_maxCollationTries">spellcheck.maxCollationTries</label>
<input type="text" name="spellcheck.maxCollationTries" id="spellcheck_maxCollationTries">
<label for="spellcheck_accuracy">spellcheck.accuracy</label>
<input type="text" name="spellcheck.accuracy" id="spellcheck_accuracy">
</fieldset>
<button type="submit">Execute Query</button>
<button type="submit">Execute Query</button>
</form>
</form>
</div>
</div>
<div id="result">
<div id="result">
<a id="url" href="#"></a>
<a id="url" href="#"></a>
<div id="response">
<div id="response">
<iframe src="about:blank"></iframe>
</div>
<iframe src="about:blank"></iframe>
</div>
</div>
</div>
</div>

View File

@ -16,185 +16,192 @@ limitations under the License.
-->
<div id="replication" class="clearfix">
<div id="frame">
<div id="frame">
<div id="error"></div>
<div id="error"></div>
<div class="replicating block">
<div class="replicating block">
<div id="progress">
<div id="progress">
<div id="start"><div class="info">
<div id="start"><div class="info">
<span>Wed May 11 19:41:48 UTC 2011</span>
<span>Wed May 11 19:41:48 UTC 2011</span>
</div></div>
</div></div>
<div id="speed"><div class="info">
<div id="speed"><div class="info">
<span>5.1 MB</span>/s
<span>5.1 MB</span>/s
</div></div>
</div></div>
<div id="bar">
<div id="bar">
<div id="bar-info"><div class="info">
<div id="bar-info"><div class="info">
<div class="files"><span>24</span> Files</div>
<div class="size"><span>226.85 MB</span></div>
<div class="files"><span>24</span> Files</div>
<div class="size"><span>226.85 MB</span></div>
</div></div>
</div></div>
<div id="eta"><div class="info">
<div id="eta"><div class="info">
ETA: <span>25s</span>
ETA: <span>25s</span>
</div></div>
</div></div>
<div id="done" style="width: 20.0%;">
<div id="done" style="width: 20.0%;">
<div class="percent">
<div class="percent">
<span>20</span>%
</div>
<div id="done-info"><div class="info">
<div class="files"><span>2</span> Files</div>
<div class="size"><span>91.76 MB</span></div>
</div></div>
</div>
</div>
<span>20</span>%
</div>
<div id="current-file" class="clearfix">
<div id="done-info"><div class="info">
<div class="label"><span class="loader">Current File:</span></div>
<div class="file">_a.fdt</div>
<div class="progress">
<span class="done">84 MB</span> / <span class="total">102.98 MB</span> [<span class="percent">81</span>%]
</div>
<div class="files"><span>2</span> Files</div>
<div class="size"><span>91.76 MB</span></div>
</div></div>
</div>
</div>
</div>
<div id="iterations" class="slaveOnly block clearfix">
</div>
<div class="label"><span class="">Iterations:</span></div>
<div class="iterations">
<ul>
</ul>
<a>
<span class="expand">Show all Iterations</span>
<span class="collapse">Hide past Iterations</span>
</a>
</div>
<div id="current-file" class="clearfix">
<div class="label"><span class="loader">Current File:</span></div>
<div class="file">_a.fdt</div>
<div class="progress">
<span class="done">84 MB</span> / <span class="total">102.98 MB</span> [<span class="percent">81</span>%]
</div>
<div id="details" class="block clearfix">
</div>
</div>
<table border="0" cellspacing="0" cellpadding="0">
<div id="iterations" class="slaveOnly block clearfix">
<thead>
<div class="label"><span class="">Iterations:</span></div>
<div class="iterations">
<ul>
</ul>
<a>
<span class="expand">Show all Iterations</span>
<span class="collapse">Hide past Iterations</span>
</a>
</div>
</div>
<tr>
<div id="details" class="block clearfix">
<table border="0" cellspacing="0" cellpadding="0">
<thead>
<tr>
<td><span>Index</span></td>
<th>Version</th>
<th><abbr title="Generation">Gen</abbr></th>
<th>Size</th>
<td><span>Index</span></td>
<th>Version</th>
<th><abbr title="Generation">Gen</abbr></th>
<th>Size</th>
</tr>
</tr>
</thead>
<tbody>
</thead>
<tbody>
<tr class="master">
<tr class="master">
<th>Master:</th>
<td class="version"><div></div></td>
<td class="generation"><div></div></td>
<td class="size"><div></div></td>
<th>Master:</th>
<td class="version"><div></div></td>
<td class="generation"><div></div></td>
<td class="size"><div></div></td>
</tr>
</tr>
<tr class="slave slaveOnly">
<tr class="slave slaveOnly">
<th>Slave:</th>
<td class="version"><div></div></td>
<td class="generation"><div></div></td>
<td class="size"><div></div></td>
<th>Slave:</th>
<td class="version"><div></div></td>
<td class="generation"><div></div></td>
<td class="size"><div></div></td>
</tr>
</tr>
</tbody>
</tbody>
</table>
</table>
</div>
<div id="settings" class="settings block clearfix slaveOnly">
<div class="label"><span>Settings:</span></div>
<ul>
<li class="masterUrl"><dl class="clearfix">
<dt>master url:</dt>
<dd></dd>
</dl></li>
<li class="isPollingDisabled"><dl class="clearfix">
<dt>polling enable:</dt>
<dd class="ico">&nbsp;</dd>
</dl></li>
</ul>
</div>
<div id="master-settings" class="settings block clearfix">
<div class="label"><span>Settings (Master):</span></div>
<ul>
<li class="replicationEnabled"><dl class="clearfix">
<dt>replication enable:</dt>
<dd class="ico">&nbsp;</dd>
</dl></li>
<li class="replicateAfter"><dl class="clearfix">
<dt>replicateAfter:</dt>
<dd></dd>
</dl></li>
<li class="confFiles"><dl class="clearfix">
<dt>confFiles:</dt>
<dd></dd>
</dl></li>
</ul>
</div>
</div>
<div id="navigation">
<div id="settings" class="settings block clearfix slaveOnly">
<button class="refresh-status">Refresh Status</button>
<div class="slaveOnly">
<button class="optional replicate-now" data-command="fetchindex">Replicate now</button>
<button class="optional abort-replication" data-command="abortfetch">Abort Replication</button>
<button class="optional disable-polling" data-command="disablepoll">Disable Polling</button>
<button class="optional enable-polling" data-command="enablepoll">Enable Polling</button>
</div>
<div class="masterOnly">
<button class="optional disable-replication" data-command="disablereplication">Disable Replication</button>
<button class="optional enable-replication" data-command="enablereplication">Enable Replication</button>
</div>
<div class="label"><span>Settings:</span></div>
<ul>
<li class="masterUrl"><dl class="clearfix">
<dt>master url:</dt>
<dd></dd>
</dl></li>
<li class="isPollingDisabled"><dl class="clearfix">
<dt>polling enable:</dt>
<dd class="ico">&nbsp;</dd>
</dl></li>
</ul>
</div>
<div id="master-settings" class="settings block clearfix">
<div class="label"><span>Settings (Master):</span></div>
<ul>
<li class="replicationEnabled"><dl class="clearfix">
<dt>replication enable:</dt>
<dd class="ico">&nbsp;</dd>
</dl></li>
<li class="replicateAfter"><dl class="clearfix">
<dt>replicateAfter:</dt>
<dd></dd>
</dl></li>
<li class="confFiles"><dl class="clearfix">
<dt>confFiles:</dt>
<dd></dd>
</dl></li>
</ul>
</div>
</div>
<div id="navigation">
<div class="timer">
<p>Next Run: <span class="approx">~</span><span class="tick">15m 8s</span></p>
<small>Sat Mar 03 11:00:00 CET 2012</smalL>
</div>
<button class="refresh-status">Refresh Status</button>
<div class="slaveOnly">
<button class="optional replicate-now" data-command="fetchindex">Replicate now</button>
<button class="optional abort-replication" data-command="abortfetch">Abort Replication</button>
<button class="optional disable-polling" data-command="disablepoll">Disable Polling</button>
<button class="optional enable-polling" data-command="enablepoll">Enable Polling</button>
</div>
<div class="masterOnly">
<button class="optional disable-replication" data-command="disablereplication">Disable Replication</button>
<button class="optional enable-replication" data-command="enablereplication">Enable Replication</button>
</div>
</div>
</div>

View File

@ -16,147 +16,150 @@ limitations under the License.
-->
<div id="schema-browser" class="loaded">
<div class="clearfix">
<div class="clearfix">
<div id="data">
<div id="data">
<div id="field">
<div id="field">
<div class="field-options">
<div class="field-options">
<dl class="options clearfix">
<div class="block head">
<h2>
<span class="type"></span>:
<span class="name"></span>
</h2>
</div>
<dt class="field-type">Field-Type:</dt>
<dl class="options clearfix">
<dt class="properties">Properties:</dt>
<dt class="field-type">Field-Type:</dt>
<dt class="schema">Schema:</dt>
<dt class="properties">Properties:</dt>
<dt class="index">Index:</dt>
<dt class="schema">Schema:</dt>
<dt class="position-increment-gap"><abbr title="Position Increment Gap">PI Gap</abbr>:</dt>
<dt class="index">Index:</dt>
<dt class="docs">Docs:</dt>
<dt class="position-increment-gap"><abbr title="Position Increment Gap">PI Gap</abbr>:</dt>
<dt class="distinct">Distinct:</dt>
<dt class="docs">Docs:</dt>
<dt class="distinct">Distinct:</dt>
</dl>
</dl>
<ul class="analyzer">
<li class="clearfix index">
<ul class="analyzer">
<li class="clearfix index">
<p>Index Analyzer:</p>
<dl>
<dt></dt>
</dl>
<p>Index Analyzer:</p>
<dl>
<dt><a class="toggle"></a></dt>
</dl>
<ul>
<li class="clearfix tokenizer">
<p>Tokenizer:</p>
<dl>
</dl>
</li>
<li class="clearfix filters">
<p>Filters:</p>
<dl>
</dl>
</li>
</ul>
<ul>
<li class="clearfix tokenizer">
<p>Tokenizer:</p>
<dl>
</dl>
</li>
<li class="clearfix filters">
<p>Filters:</p>
<dl>
</dl>
</li>
</ul>
</li>
<li class="clearfix query">
</li>
<li class="clearfix query">
<p>Query Analyzer:</p>
<dl>
<dt></dt>
</dl>
<p>Query Analyzer:</p>
<dl>
<dt><a class="toggle"></a></dt>
</dl>
<ul>
<li class="clearfix tokenizer">
<p>Tokenizer:</p>
<dl>
</dl>
</li>
<li class="clearfix filters">
<p>Filters:</p>
<dl>
</dl>
</li>
</ul>
<ul>
<li class="clearfix tokenizer">
<p>Tokenizer:</p>
<dl>
</dl>
</li>
<li class="clearfix filters">
<p>Filters:</p>
<dl>
</dl>
</li>
</ul>
</li>
</ul>
</div>
<div class="terminfo-holder clearfix">
<div class="status loader">Loading Term Info ...</div>
<div class="topterms-holder">
<p class="head">Top <span class="shown"></span><span class="max-holder">/<span class="max"></span></span> Terms:</p>
<table border="0" cellspacing="0" cellpadding="0">
<thead>
<tr>
<th class="position" title="Position">&nbsp;</th>
<th class="term">Term</th>
<th class="frequency" title="Frequency">Frq</th>
</tr>
</thead>
</table>
<p class="navi clearfix">
<a class="less"><span>less</span></a>
<a class="more"><span>more</span></a>
</p>
</div>
<div class="histogram-holder">
<p class="head">Histogram:</p>
<div class="histogram"></div>
<dl class="clearfix">
</dl>
</div>
</div>
</div>
</li>
</ul>
</div>
<div id="related">
<div class="terminfo-holder clearfix">
<select>
<option value="" selected="selected">Please select ...</option>
</select>
<div class="trigger">
<button class="submit">Load Term Info</button>
<a class="autoload" title="Automatically load Term Info?"><span>Autoload™</span></a>
</div>
<p class="status">Sorry, no Term Info available :(</p>
<div class="topterms-holder">
<form>
<p class="head">
<input type="text">
<a class="max-holder" title="Load all Top-Terms">/<span class="max"></span></a> Top-Terms:
</p>
</form>
<ul>
</ul>
</div>
<div class="histogram-holder">
<p class="head">Histogram:</p>
<div class="histogram"></div>
<dl class="clearfix">
<dl id="f-df-t">
</dl>
<dl class="ukf-dsf">
<dt class="unique-key-field">Unique Key Field</dt>
<dt class="default-search-field">Default Search Field</dt>
</dl>
</div>
</div>
</div>
</div>
<div id="related">
<select>
<option value="" selected="selected">Please select ...</option>
</select>
<dl id="f-df-t">
</dl>
<dl class="ukf-dsf">
<dt class="unique-key-field">Unique Key Field</dt>
<dt class="default-search-field">Default Search Field</dt>
</dl>
</div>
</div>
</div>

View File

@ -16,41 +16,41 @@ limitations under the License.
-->
<div id="threads" class="collapsed">
<div class="controls">
<a>
<span class="expand">Show all Stacktraces</span>
<span class="collapse">Hide all Stacktraces</span>
</a>
</div>
<div class="controls">
<a>
<span class="expand">Show all Stacktraces</span>
<span class="collapse">Hide all Stacktraces</span>
</a>
</div>
<div id="thread-dump">
<div id="thread-dump">
<table border="0" cellpadding="0" cellspacing="0">
<table border="0" cellpadding="0" cellspacing="0">
<thead>
<thead>
<tr>
<tr>
<th class="name">name</th>
<th class="time">cpuTime / userTime</th>
<th class="name">name</th>
<th class="time">cpuTime / userTime</th>
</tr>
</tr>
</thead>
</thead>
<tbody>
<tbody>
</tbody>
</tbody>
</table>
</table>
</div>
</div>
<div class="controls">
<a>
<span class="expand">Show all Stacktraces</span>
<span class="collapse">Hide all Stacktraces</span>
</a>
</div>
<div class="controls">
<a>
<span class="expand">Show all Stacktraces</span>
<span class="collapse">Hide all Stacktraces</span>
</a>
</div>
</div>