svn commit: r1776930 [19/19] - in /ofbiz/trunk/specialpurpose: lucene/ lucene/src/main/java/org/apache/ofbiz/content/search/ solr/ solr/src/main/java/org/apache/ofbiz/solr/webapp/ solr/webapp/solr/ solr/webapp/solr/WEB-INF/ solr/webapp/solr/css/ solr/w...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1776930 [19/19] - in /ofbiz/trunk/specialpurpose: lucene/ lucene/src/main/java/org/apache/ofbiz/content/search/ solr/ solr/src/main/java/org/apache/ofbiz/solr/webapp/ solr/webapp/solr/ solr/webapp/solr/WEB-INF/ solr/webapp/solr/css/ solr/w...

shijh
Added: ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/query.html
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/query.html?rev=1776930&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/query.html (added)
+++ ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/query.html Mon Jan  2 13:44:06 2017
@@ -0,0 +1,356 @@
+<!--
+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.
+-->
+<div id="query" class="clearfix">
+
+  <div id="form">
+    <form>
+      <label for="qt" title="Request handler in solrconfig.xml.">
+        <a rel="help">Request-Handler (qt)</a>
+      </label>
+      <input type="text" ng-model="qt" id="qt" value="/select" title="Request handler in solrconfig.xml.">
+
+      <fieldset class="common">
+        <legend>common</legend>
+        <div class="fieldset">
+
+        <label for="q" title="The query string.">
+          q
+        </label>
+        <textarea name="q" ng-model="query.q" id="q" title="The query string.">*:*</textarea>
+
+        <label for="fq" title="Filter query.">
+          <a rel="help">fq</a>
+        </label>
+        <div class="multiple">
+          <div class="row clearfix" ng-repeat="filter in filters">
+            <input type="text" ng-model="filter.fq" id="fq" name="fq" title="Filter query.">
+            <div class="buttons">
+              <a class="rem" ng-click="removeFilter($index)"><span></span></a>
+              <a class="add" ng-click="addFilter($index)"><span></span></a>
+            </div>
+          </div>
+        </div>
+
+        <label for="sort" title="Sort field or function with asc|desc.">
+          <a rel="help">sort</a>
+        </label>
+        <input type="text" ng-model="query.sort" id="sort" name="sort" title="Sort field or function with asc|desc.">
+
+        <label for="start" title="Number of leading documents to skip and number of documents to return after 'start'. (Integers)">
+          <a rel="help">start</a>,
+          <a rel="help">rows</a>
+        </label>
+        <div class="clearfix">
+          <input type="text" name="start" ng-model="query.start" id="start" placeholder="0" pattern="[0-9]+" title="Number of leading documents to skip. (Integer)">
+          <input type="text" name="rows" ng-model="query.rows" id="rows" placeholder="10" pattern="[0-9]+" title="Number of documents to return after 'start'. (Integer)">
+        </div>
+
+        <label for="fl" title="Field list, comma separated.">
+          <a rel="help">fl</a>
+        </label>
+        <input type="text" ng-model="query.fl" name="fl" id="fl" value="" title="Field list, comma separated.">
+
+        <label for="df" title="Default search field">
+          <a rel="help">df</a>
+        </label>
+        <input type="text" ng-model="query.df" name="df" id="df" value="" title="Default search field">
+
+        <label for="custom_parameters">
+          <a rel="help">Raw Query Parameters</a>
+        </label>
+        <input type="text" ng-model="rawParams" id="custom_parameters" value="" placeholder="key1=val1&amp;key2=val2">
+
+        <label for="wt" title="The writer type (response format).">
+          <a rel="help">wt</a>
+        </label>
+        <select name="wt" ng-model="query.wt" id="wt" title="The writer type (response format).">
+          <option>json</option>
+          <option>xml</option>
+          <option>python</option>
+          <option>ruby</option>
+          <option>php</option>
+          <option>csv</option>
+        </select>
+
+        <label for="indent" class="checkbox" title="Indent results.">
+          <input type="checkbox" ng-model="query.indent" name="indent" id="indent" title="Indent results." ng-true-value="'on'" ng-false-value="''">
+          indent
+        </label>
+
+        <label for="debugQuery" class="checkbox" title="Show timing and diagnostics.">
+          <input type="checkbox" ng-model="query.debugQuery" name="debugQuery" id="debugQuery" title="Show timing and diagnostics." ng-true-value="'on'" ng-false-value="''">
+          debugQuery
+        </label>
+
+        </div>
+      </fieldset>
+
+      <fieldset class="dismax optional">
+        <legend>
+          <label for="dismax" class="checkbox" title="Enable dismax.">
+            <input type="checkbox" ng-model="isDismax" name="defType" id="dismax" value="dismax">
+            dismax
+          </label>
+        </legend>
+        <div class="fieldset" ng-show="isDismax">
+
+        <label for="q_alt" title="Alternate query when 'q' is absent.">q.alt</label>
+        <input type="text" ng-model="dismax['q.alt']" name="q.alt" id="q_alt" title="Alternate query when 'q' is absent.">
+
+        <label for="qf" title="Query fields with optional boosts.">qf</label>
+        <input type="text" ng-model="dismax.qf" name="qf" id="qf" title="Query fields with optional boosts.">
+
+        <label for="mm" title="Min-should-match expression">mm</label>
+        <input type="text" ng-model="dismax.mm" name="mm" id="mm" title="Min-should-match expression.">
+
+        <label for="pf" title="Phrase boosted fields.">pf</label>
+        <input type="text" ng-model="dismax.pf" name="pf" id="pf" title="Phrase boosted fields.">
+
+        <label for="ps" title="Phrase boost slop.">ps</label>
+        <input type="text" ng-model="dismax.ps" name="ps" id="ps" title="Phrase boost slop.">
+
+        <label for="qs" title="Query string phrase slop.">qs</label>
+        <input type="text" ng-model="dismax.qs" name="qs" id="qs" title="Query string phrase slop.">
+
+        <label for="tie" title="Score tie-breaker. Try 0.1.">tie</label>
+        <input type="text" ng-model="dismax.tie" name="tie" id="tie" title="Score tie-breaker. Try 0.1.">
+
+        <label for="bq" title="Boost query.">bq</label>
+        <input type="text" ng-model="dismax.bq" name="bq" id="bq" title="Boost query.">
+
+        <label for="bf" title="Boost function (added).">bf</label>
+        <input type="text" ng-model="dismax.bf" name="bf" id="bf" title="Boost function (added).">
+
+        </div>
+      </fieldset>
+
+      <fieldset class="edismax optional">
+        <legend>
+          <label for="edismax" class="checkbox" title="Enable edismax.">
+            <input type="checkbox" ng-model="isEdismax" name="defType" id="edismax" value="edismax">
+            <strong>e</strong>dismax
+          </label>
+        </legend>
+        <div class="fieldset" ng-show="isEdismax">
+
+        <label for="edismax_q_alt" title="Alternate query when 'q' is absent.">q.alt</label>
+        <input type="text" ng-model="edismax['q.alt']" name="q.alt" id="edismax_q_alt"  title="Alternate query when 'q' is absent.">
+
+        <label for="edismax_qf" title="Query fields with optional boosts.">qf</label>
+        <input type="text" ng-model="edismax.qf" name="qf" id="edismax_qf" title="Query fields with optional boosts.">
+
+        <label for="edismax_mm" title="Min-should-match expression.">mm</label>
+        <input type="text" ng-model="edismax.mm" name="mm" id="edismax_mm" title="Min-should-match expression.">
+
+        <label for="edismax_pf" title="Phrase boosted fields.">pf</label>
+        <input type="text" ng-model="edismax.pf" name="pf" id="edismax_pf" title="Phrase boosted fields.">
+
+        <label for="edismax_ps" title="Phrase boost slop.">ps</label>
+        <input type="text" ng-model="edismax.ps" name="ps" id="edismax_ps" title="Phrase boost slop.">
+
+        <label for="edismax_qs" title="Query string phrase slop.">qs</label>
+        <input type="text" ng-model="edismax.qs" name="qs" id="edismax_qs" title="Query string phrase slop.">
+
+        <label for="edismax_tie" title="Score tie-breaker. Try 0.1.">tie</label>
+        <input type="text" ng-model="edismax.tie" name="tie" id="edismax_tie" title="Score tie-breaker. Try 0.1.">
+
+        <label for="edismax_bq" title="Boost query.">bq</label>
+        <input type="text" ng-model="edismax.bq" name="bq" id="edismax_bq" title="Boost query.">
+
+        <label for="edismax_bf" title="Boost function (added).">bf</label>
+        <input type="text" ng-model="edismax.bf" name="bf" id="edismax_bf" title="Boost function (added).">
+
+        <label for="edismax_uf" title="User Fields">uf</label>
+        <input type="text" ng-model="edismax.uf" name="uf" id="edismax_uf" title="User Fields">
+
+        <label for="edismax_pf2" title="bigram phrase boost fields">pf2</label>
+        <input type="text" ng-model="edismax.pf2" name="pf2" id="edismax_pf2" title="bigram phrase boost fields">
+
+        <label for="edismax_pf3" title="trigram phrase boost fields">pf3</label>
+        <input type="text" ng-model="edismax.pf3" name="pf3" id="edismax_pf3" title="trigram phrase boost fields">
+
+        <label for="edismax_ps2" title="phrase slop for bigram phrases">ps2</label>
+        <input type="text" ng-model="edismax.ps2" name="ps2" id="edismax_ps2" title="phrase slop for bigram phrases">
+
+        <label for="edismax_ps3" title="phrase slop for trigram phrases">ps3</label>
+        <input type="text" ng-model="edismax.ps3" name="ps3" id="edismax_ps3" title="phrase slop for trigram phrases">
+
+        <label for="edismax_boost" title="multiplicative boost function">boost</label>
+        <input type="text" ng-model="edismax.boost" name="boost" id="edismax_boost" title="multiplicative boost function">
+
+        <label for="edismax_stopwords" class="checkbox" title="remove stopwords from mandatory 'matching' component">
+          <input type="checkbox" ng-model="edismax.stopwords" name="stopwords" id="edismax_stopwords">
+          stopwords
+        </label>
+
+        <label for="edismax_lowercaseOperators" class="checkbox" title="Enable lower-case 'and' and 'or' as operators">
+          <input type="checkbox" ng-model="edismax.lowercaseOperators" name="lowercaseOperators" id="edismax_lowercaseOperators">
+          lowercaseOperators
+        </label>
+
+        </div>
+      </fieldset>
+
+      <fieldset class="hl optional">
+        <legend>
+          <label for="hl" class="checkbox" title="Enable highlighting.">
+            <input type="checkbox" ng-model="isHighlight" name="hl" id="hl" value="true">
+            hl
+          </label>
+        </legend>
+        <div class="fieldset" ng-show="isHighlight">
+
+        <label for="hl_fl" title="Fields to highlight on.">hl.fl</label>
+        <input type="text" ng-model="hl['hl.fl']" name="hl.fl" id="hl_fl" value="" title="Fields to highlight on.">
+
+        <label for="hl_simple_pre">hl.simple.pre</label>
+        <input type="text" ng-model="hl['hl.simple.pre']" name="hl.simple.pre" id="hl_simple_pre" value="<em>">
+
+        <label for="hl_simple_post">hl.simple.post</label>
+        <input type="text" ng-model="hl['hl.simple.post']"  name="hl.simple.post" id="hl_simple_post" value="</em>">
+
+        <label for="hl_requireFieldMatch" class="checkbox">
+          <input type="checkbox" ng-model="hl['hl.requireFieldMatch']" name="hl.requireFieldMatch" id="hl_requireFieldMatch" value="true">
+          hl.requireFieldMatch
+        </label>
+
+        <label for="hl_usePhraseHighlighter" class="checkbox">
+          <input type="checkbox" ng-model="hl['usePhraseHighLighter']" name="hl.usePhraseHighlighter" id="hl_usePhraseHighlighter" value="true">
+          hl.usePhraseHighlighter
+        </label>
+
+        <label for="hl_highlightMultiTerm" class="checkbox">
+          <input type="checkbox" ng-model="hl['hightlightMultiTerm']" name="hl.highlightMultiTerm" id="hl_highlightMultiTerm" value="true">
+          hl.highlightMultiTerm
+        </label>
+
+        </div>
+      </fieldset>
+
+      <fieldset class="facet optional">
+        <legend>
+          <label for="facet" class="checkbox" title="Enable faceting.">
+            <input type="checkbox" ng-model="isFacet" name="facet" id="facet">
+            facet
+          </label>
+        </legend>
+        <div class="fieldset" ng-show="isFacet">
+
+        <label for="facet_query">facet.query</label>
+        <textarea ng-model="facet['facet.query']" name="facet.query" id="facet_query"></textarea>
+
+        <label for="facet_field">facet.field</label>
+        <input type="text" ng-model="facet['facet.field']" name="facet.field" id="facet_field">
+
+        <label for="facet_prefix">facet.prefix</label>
+        <input type="text" ng-model="facet['facet.prefix']" name="facet.prefix" id="facet_prefix">
+
+        </div>
+      </fieldset>
+
+      <fieldset class="spatial optional">
+        <legend>
+          <label for="spatial" class="checkbox" title="Show spatial options">
+            <input type="checkbox" ng-model="isSpatial" name="spatial" id="spatial">
+            spatial
+          </label>
+        </legend>
+        <div class="fieldset" ng-show="isSpatial">
+
+        <label for="pt">pt</label>
+        <input type="text" ng-model="spatial.pt" name="pt" id="pt">
+
+        <label for="sfield">sfield</label>
+        <input type="text" ng-model="spatial.sfield" name="sfield" id="sfield">
+
+        <label for="d">d</label>
+        <input type="text" ng-model="spatial.d" name="d" id="d">
+
+        </div>
+      </fieldset>
+
+      <fieldset class="spellcheck optional">
+        <legend>
+          <label for="spellcheck" class="checkbox" title="Enable spellchecking.">
+            <input type="checkbox" ng-model="isSpellcheck" name="spellcheck" id="spellcheck">
+            spellcheck
+          </label>
+        </legend>
+        <div class="fieldset" ng-show="isSpellcheck">
+
+        <label for="spellcheck_build" class="checkbox">
+          <input type="checkbox" ng-model="spellcheck['spellcheck.build']" name="spellcheck.build" id="spellcheck_build" value="true">
+          spellcheck.build
+        </label>
+
+        <label for="spellcheck_reload" class="checkbox">
+          <input type="checkbox" ng-model="spellcheck['spellcheck.reload']" name="spellcheck.reload" id="spellcheck_reload" value="true">
+          spellcheck.reload
+        </label>
+
+        <label for="spellcheck_q">spellcheck.q</label>
+        <input type="text" ng-model="spellcheck['spellcheck.q']" name="spellcheck.q" id="spellcheck_q">
+
+        <label for="spellcheck_dictionary">spellcheck.dictionary</label>
+        <input type="text" ng-model="spellcheck['spellcheck.dictionary']" name="spellcheck.dictionary" id="spellcheck_dictionary">
+
+        <label for="spellcheck_count">spellcheck.count</label>
+        <input type="text" ng-model="spellcheck['spellcheck.count']" name="spellcheck.count" id="spellcheck_count">
+
+        <label for="spellcheck_onlyMorePopular" class="checkbox">
+          <input type="checkbox" ng-model="spellcheck['spellcheck.onlyMorePopular']" name="spellcheck.onlyMorePopular" id="spellcheck_onlyMorePopular" value="true">
+          spellcheck.onlyMorePopular
+        </label>
+
+        <label for="spellcheck_extendedResults" class="checkbox">
+          <input type="checkbox" ng-model="spellcheck['spellcheck.extendedResults']" name="spellcheck.extendedResults" id="spellcheck_extendedResults" value="true">
+          spellcheck.extendedResults
+        </label>
+
+        <label for="spellcheck_collate" class="checkbox">
+          <input type="checkbox" ng-model="spellcheck['spellcheck.collate']" name="spellcheck.collate" id="spellcheck_collate" value="true">
+          spellcheck.collate
+        </label>
+
+        <label for="spellcheck_maxCollations">spellcheck.maxCollations</label>
+        <input type="text" ng-model="spellcheck['spellcheck.maxCollations']" name="spellcheck.maxCollations" id="spellcheck_maxCollations">
+
+        <label for="spellcheck_maxCollationTries">spellcheck.maxCollationTries</label>
+        <input type="text" ng-model="spellcheck['spellcheck.maxCollationTries']" name="spellcheck.maxCollationTries" id="spellcheck_maxCollationTries">
+
+        <label for="spellcheck_accuracy">spellcheck.accuracy</label>
+        <input type="text" ng-model="spellcheck['spellcheck.accuracy']" name="spellcheck.accuracy" id="spellcheck_accuracy">
+       </div>
+
+      </fieldset>
+
+
+      <button type="submit" ng-click="doQuery()">Execute Query</button>
+    </form>
+  </div>
+
+  <div id="result">
+
+    <a ng-show="response.data" id="url" class="address-bar" ng-href="{{url}}">{{url}}</a>
+
+    <div id="response">
+      <pre class="syntax language-{{lang}}"><code ng-bind-html="response.data | highlight:lang | unsafe"></code></pre>
+    </div>
+
+  </div>
+
+</div>

Added: ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/replication.html
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/replication.html?rev=1776930&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/replication.html (added)
+++ ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/replication.html Mon Jan  2 13:44:06 2017
@@ -0,0 +1,239 @@
+<!--
+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.
+-->
+<div id="replication" class="clearfix" ng-class="{replicating:settings.isReplicating}">
+
+  <div id="frame">
+
+    <div id="error" ng-show="progress.ERROR">{{ progress.ERROR }}</div>
+
+    <div class="replicating block" ng-show="settings.isReplicating">
+
+      <div id="progress">
+
+        <div id="start"><div class="info">
+
+          <span>{{progress.replicationStartTime}}</span>
+                
+        </div></div>
+
+        <div id="speed"><div class="info">
+
+          <span>5.1 MB</span>/s
+                
+        </div></div>
+
+        <div id="bar">
+
+          <div id="bar-info"><div class="info">
+
+              <div class="files"><span>{{progress.numFilesToDownload}}</span> File<span ng-show="progress.numFilesToDownload&gt;1">s</span></div>
+              <div class="size"><span>{{progress.bytesToDownload}}</span></div>
+
+          </div></div>
+
+          <div id="eta"><div class="info">
+
+            ETA: <span>{{progress.timeRemaining | readableSeconds }}</span>
+                    
+          </div></div>
+
+          <div id="done" style="width: {{progress.totalPercentWidth}}">
+
+            <div class="percent">
+
+              <span>{{progress.totalPercent}}</span>%
+
+            </div>
+
+            <div id="done-info"><div class="info">
+
+              <div class="files"><span>{{progress.numFilesDownloaded}}</span> File<span ng-show="progress.numFilesDownloaded&gt;1">s</span></div>
+              <div class="size"><span>{{progress.bytesDownloaded}}</span></div>
+
+            </div></div>
+
+          </div>
+
+        </div>
+
+      </div>
+
+      <div id="current-file" class="clearfix">
+
+        <div class="label"><span class="loader">Current File:</span></div>
+        <div class="file">{{progress.currentFile}}</div>
+        <div class="progress">
+          <span class="done">{{progress.currentFileSizeDownloaded}}</span> / <span class="total">{{progress.currentFileSize}}</span> [<span class="percent">{{progress.currentFileSizePercent}}</span>%]
+        </div>
+
+      </div>
+        
+    </div>
+
+    <div id="iterations" class="slaveOnly block clearfix" ng-show="isSlave">
+
+      <div class="label"><span class="">Iterations:</span></div>
+      <div class="iterations" ng-show="iterations && showIterations">
+        <ul>
+            <li class="{{iteration.status}}" ng-class="{latest:iteration.latest}" ng-repeat="iteration in iterations |limitTo:iterationCount">{{iteration.date}}</li>
+        </ul>
+        <span ng-show="iterations.length&gt;1">
+          <a ng-show="iterationCount==1" ng-click="showIterations()"><span class="expand">Show all Iterations</span></a>
+          <a ng-show="iterationCount&gt;1" ng-click="hideIterations()"><span class="collapse">Hide past Iterations</span></a>
+        </span>
+
+      </div>
+        
+    </div>
+
+    <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>
+                    
+          </tr>
+                
+        </thead>
+        <tbody>
+
+          <tr class="masterSearch">
+
+            <th>Master (Searching)</th>
+            <td class="version" ng-class="{diff:versions.changedVersion}">
+                <div>{{versions.masterSearch.version}}</div>
+            </td>
+            <td class="generation" ng-class="{diff:versions.changedGeneration}">
+                <div>{{versions.masterSearch.generation}}</div>
+            </td>
+            <td class="size">
+                <div>{{versions.masterSearch.size}}</div>
+            </td>
+
+          </tr>
+
+          <tr class="master">
+
+            <th>Master (Replicable)</th>
+            <td class="version" ng-class="{diff:versions.changedVersion}">
+                <div>{{versions.master.version}}</div>
+            </td>
+            <td class="generation" ng-class="{diff:versions.changedGeneration}">
+                <div>{{versions.master.generation}}</div>
+            </td>
+            <td class="size">
+                <div>{{versions.master.size}}</div>
+            </td>
+
+          </tr>
+
+          <tr class="slave slaveOnly" ng-show="isSlave">
+
+            <th>Slave (Searching)</th>
+            <td class="version" ng-class="{diff:versions.changedVersion}">
+                <div>{{versions.slave.version}}</div>
+            </td>
+            <td class="generation" ng-class="{diff:versions.changedGeneration}">
+                <div>{{versions.slave.generation}}</div>
+            </td>
+            <td class="size">
+                <div>{{versions.slave.size}}</div>
+            </td>
+
+          </tr>
+
+        </tbody>
+
+      </table>
+
+    </div>
+
+    <div id="settings" class="settings block clearfix slaveOnly" ng-show="isSlave">
+
+      <div class="label"><span>Settings:</span></div>
+      <ul>
+        <li class="masterUrl" ng-show="settings.masterUrl">
+            <dl class="clearfix">
+                <dt>master url:</dt>
+                <dd>{{settings.masterUrl}}</dd>
+            </dl>
+        </li>
+        <li class="isPollingDisabled"><dl class="clearfix">
+          <dt>polling enable:</dt>
+            <dd class="ico" ng-class="{'ico-0':settings.isPollingDisabled, 'ico-1':!settings.isPollingDisabled}">
+                <span ng-show="settings.pollInterval">(interval: {{settings.pollInterval}})</span>&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" ng-class="{'ico-0':!master.replicationEnabled, 'ico-1':master.replicationEnabled}">&nbsp;</dd>
+        </dl></li>
+        <li class="replicateAfter"><dl class="clearfix">
+          <dt>replicateAfter:</dt>
+            <dd>{{master.replicateAfter}}</dd>
+        </dl></li>
+        <li class="confFiles" ng-show="master.files"><dl class="clearfix">
+          <dt>confFiles:</dt>
+            <dd><span ng-repeat="file in master.files"><attr title="{{file.title}}">{{file.name}}</attr>{{ $last ? '' :', '}}</span></dd>
+        </dl></li>
+      </ul>
+        
+    </div>
+    
+  </div>
+
+  <div id="navigation">
+
+    <div class="timer" ng-show="isSlave && !settings.isPollingDisabled &&!settings.isReplicating">
+
+      <p>Next Run: <span class="approx" ng-show="settings.isApprox">~</span><span class="tick">{{settings.tick | readableSeconds}}</span></p>
+      <small ng-show="settings.nextExecutionAt">{{settings.nextExecutionAt}}</small>
+    </div>
+
+    <button class="refresh-status" ng-click="refresh()"><span>Refresh Status</span></button>
+
+    <div class="slaveOnly" ng-show="isSlave">
+      <button class="optional replicate-now primary" ng-click="execute('fetchindex')" ng-show="!settings.isReplicating"><span>Replicate now</span></button>
+      <button class="optional abort-replication warn" ng-click="execute('abortfetch')" ng-show="settings.isReplicating"><span>Abort Replication</span></button>
+
+      <button class="optional disable-polling" ng-click="execute('disablepoll')" ng-show="!settings.isPollingDisabled"><span>Disable Polling</span></button>
+      <button class="optional enable-polling" ng-click="execute('enablepoll')" ng-show="settings.isPollingDisabled"><span>Enable Polling</span></button>
+    </div>
+
+    <div class="masterOnly" ng-show="!isSlave">
+      <button class="optional disable-replication warn" ng-click="execute('disablereplication')" ng-show="master.replicationEnabled"><span>Disable Replication</span></button>
+      <button class="optional enable-replication warn" ng-click="execute('enablereplication')" ng-show="!master.replicationEnabled"><span>Enable Replication</span></button>
+    </div>
+    
+  </div>
+
+</div>

Added: ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/schema.html
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/schema.html?rev=1776930&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/schema.html (added)
+++ ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/schema.html Mon Jan  2 13:44:06 2017
@@ -0,0 +1,448 @@
+<!--
+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.
+-->
+<div id="schema" class="loaded">
+
+  <div class="clearfix">
+
+    <div id="frame">
+    <div id="actions" class="actions clearfix" ng-show="isSchemaUpdatable">
+      <button id="addField" class="action" ng-click="toggleAddField()"><span>Add Field</span></button>
+      <button id="addDynamicField" class="action" ng-click="toggleAddDynamicField()"><span>Add Dynamic Field</span></button>
+      <button id="addCopyField" class="action" ng-click="toggleAddCopyField()"><span>Add Copy Field</span></button>
+
+      <div class="action add" data-rel="add" ng-show="showAddField" escape-pressed="hideAll()">
+
+          <p class="clearfix"><label for="add_name">name:</label>
+          <input type="text" id="add_name" ng-model="newField.name" focus-when="showAddField" placeholder="enter a field name"></p>
+
+          <p class="clearfix"><label for="add_type">field type:</label>
+          <select chosen type="text" id="add_type" ng-model="newField.type" ng-options="type for type in types"></select>
+          </p>
+
+          <p class="clearfix" ng-show="adding=='field'"><label for="add_default">default:</label>
+          <input type="text" id="add_default" ng-model="newField.default" placeholder="enter a default value if needed"></p>
+
+          <p class="clearfix">
+            <label class="checkbox" for="add_stored">
+              <input type="checkbox" ng-model="newField.stored" id="add_stored" title="Full field should be stored in index." ng-true-value="'true'" ng-false-value="'false'">
+            stored
+            </label>
+          </p>
+
+          <p class="clearfix">
+            <label class="checkbox" for="add_indexed">
+              <input type="checkbox" ng-model="newField.indexed" id="add_indexed" title="Field should be indexed." ng-true-value="'true'" ng-false-value="'false'">
+            indexed
+            </label>
+          </p>
+
+          <p class="clearfix">
+            <label class="checkbox" for="add_docValues">
+              <input type="checkbox" ng-model="newField.docValues" id="add_docValues" title="DocValues should be stored for the field." ng-true-value="'true'" ng-false-value="'false'">
+            docValues
+            </label>
+          </p>
+
+          <p class="clearfix">
+            <label class="checkbox" for="add_multiValued">
+              <input type="checkbox" ng-model="newField.multiValued" id="add_multiValued" title="Multiple values are allowed for this field." ng-true-value="'true'" ng-false-value="'false'">
+            multiValued
+            </label>
+          </p>
+
+          <p class="clearfix" ng-show="adding=='field'">
+            <label class="checkbox" for="add_required">
+              <input type="checkbox" ng-model="newField.required" id="add_required" title="Field must be provided for all documents." ng-true-value="'true'" ng-false-value="'false'">
+            required
+            </label>
+          </p>
+
+          <p class="clearfix">
+            <a ng-click="showOmit=!showOmit">
+              <span class="add_showhide" ng-hide="showOmit">Show omit options</span>
+              <span class="add_showhide open" ng-show="showOmit">Hide omit options</span>
+            </a>
+          </p>
+
+          <div ng-show="showOmit">
+
+            <p class="clearfix">
+              <label class="checkbox" for="add_omitNorms">
+                <input type="checkbox" ng-model="newField.omitNorms" id="add_omitNorms" title="Full field should be omitNorms in index." ng-true-value="'true'" ng-false-value="'false'">
+              omitNorms
+              </label>
+            </p>
+
+            <p class="clearfix">
+              <label class="checkbox" for="add_omitTermFreqAndPositions">
+                <input type="checkbox" ng-model="newField.omitTermFreqAndPositions" id="add_omitTermFreqAndPositions" title="Full field should be omitTermFreqAndPositions in index." ng-true-value="'true'" ng-false-value="'false'">
+              omitTermFreqAndPositions
+              </label>
+            </p>
+
+            <p class="clearfix">
+              <label class="checkbox" for="add_omitPositions">
+                <input type="checkbox" ng-model="newField.omitPositions" id="add_omitPositions" title="Full field should be omitPositions in index." ng-true-value="'true'" ng-false-value="'false'">
+              omitPositions
+              </label>
+            </p>
+          </div>
+
+          <p class="clearfix">
+            <a ng-click="showTermVectors=!showTermVectors">
+              <span class="add_showhide" ng-hide="showTermVectors">Show term vector options</span>
+              <span class="add_showhide open" ng-show="showTermVectors">Hide term vector options</span>
+            </a>
+          </p>
+          <div ng-show="showTermVectors">
+
+             <p class="clearfix">
+              <label class="checkbox" for="add_termVectors">
+                <input type="checkbox" ng-model="newField.termVectors" id="add_termVectors" title="Full field should be termVectors in index." ng-true-value="'true'" ng-false-value="'false'">
+              termVectors
+              </label>
+            </p>
+
+            <p class="clearfix">
+              <label class="checkbox" for="add_termPositions">
+                <input type="checkbox" ng-model="newField.termPositions" id="add_termPositions" title="Full field should be termPositions in index." ng-true-value="'true'" ng-false-value="'false'">
+              termPositions
+              </label>
+            </p>
+
+            <p class="clearfix">
+              <label class="checkbox" for="add_termOffsets">
+                <input type="checkbox" ng-model="newField.termOffsets" id="add_termOffsets" title="Full field should be termOffsets in index." ng-true-value="'true'" ng-false-value="'false'">
+              termOffsets
+              </label>
+            </p>
+
+            <p class="clearfix">
+              <label class="checkbox" for="add_termPayloads">
+                <input type="checkbox" ng-model="newField.termPayloads" id="add_termPayloads" title="Full field should be termPayloads in index." ng-true-value="'true'" ng-false-value="'false'">
+              termPayloads
+              </label>
+            </p>
+
+          </div>
+
+          <p class="clearfix">
+            <a ng-click="showSort=!showSort">
+              <span class="add_showhide" ng-hide="showSort">Show sort options</span>
+              <span class="add_showhide open" ng-show="showSort">Show sort options</span>
+            </a>
+          </p>
+          <div ng-show="showSort">
+            <p class="clearfix">
+              <label class="checkbox" for="add_sortMissingFirst">
+                <input type="checkbox" ng-model="newField.sortMissingFirst" id="add_sortMissingFirst" title="Full field should be sortMissingFirst in index." ng-true-value="'true'" ng-false-value="'false'">
+              sortMissingFirst
+              </label>
+            </p>
+
+            <p class="clearfix">
+              <label class="checkbox" for="add_sortMissingLast">
+                <input type="checkbox" ng-model="newField.sortMissingLast" id="add_sortMissingLast" title="Full field should be sortMissingLast in index." ng-true-value="'true'" ng-false-value="'false'">
+              sortMissingLast
+              </label>
+            </p>
+
+          </div>
+
+          <div ng-repeat="error in addErrors" ng-show="addErrors" class="clearfix note error">
+            <span>{{error}}</span></div>
+
+          <p class="clearfix buttons">
+            <button ng-show="adding=='field'" type="submit" class="submit" ng-class="{success: added}" ng-click="addField()"><span>Add Field</span></button>
+            <button ng-show="adding=='dynamicField'" type="submit" class="submit" ng-class="{success: added}" ng-click="addDynamicField()"><span>Add Dynamic Field</span></button>
+            <button type="reset" class="reset" ng-click="hideAll()"><span>Cancel</span></button>
+          </p>
+
+
+
+      </div>
+
+      <div class="action add" data-rel="add" ng-show="showAddCopyField" escape-pressed="hideAll()">
+
+        <form>
+
+          <p class="clearfix"><label for="add_source">source:</label>
+          <input type="text" id="add_source" ng-model="copyField.source" focus-when="showAddCopyField" placeholder="specify your source field or pattern"></p>
+
+          <p class="clearfix"><label for="add_dest">destination:</label>
+          <input type="text" id="add_dest" ng-model="copyField.dest" placeholder="specify your destination field or pattern"></p>
+
+          <div ng-repeat="error in addCopyFieldErrors" ng-show="addCopyFieldErrors" class="clearfix note error">
+            <span>{{error}}</span></div>
+
+          <p class="clearfix buttons">
+            <button type="submit" class="submit" ng-class="{success: added}" ng-click="addCopyField()"><span>Add CopyField</span></button>
+            <button type="reset" class="reset" ng-click="hideAll()"><span>Cancel</span></button>
+          </p>
+
+        </form>
+
+      </div>
+    </div>
+
+    <div id="data">
+
+      <div id="field">
+
+        <div class="field-options" ng-show="showing">
+
+          <div class="block head">
+            <h2>
+              <span class="type">{{selectedType}}</span>:
+              <span class="name">{{name}}</span>
+            </h2>
+          </div>
+
+          <div class="partial" ng-show="partialState">
+
+            <p>Because your Index is empty, we do not have enough Information about this Field</p>
+
+          </div>
+
+          <dl class="options clearfix">
+
+            <dt class="field-type">Field-Type:</dt>
+            <dd class="field-type">{{analysis.data.className}}</dd>
+
+            <dt class="similarity" ng-show="display.similarity">Similarity:</dt>
+            <dd class="similarity" ng-show="display.similarity">{{ display.similarity.details }} ({{ similarity.className }}) </dd>
+
+            <dt class="position-increment-gap" ng-show="display.positionIncrementGap"><abbr title="Position Increment Gap">PI Gap</abbr>:</dt>
+            <dd class="position-increment-gap" ng-show="display.positionIncrementGap">{{ display.positionIncrementGap }}</dd>
+
+            <dt class="docs" ng-show="display.docs">Docs:</dt>
+            <dd class="docs" ng-show="display.docs"><a href="{{display.docsUrl}}">{{display.docs | number}}</a></dd>
+
+            <dt class="distinct" ng-show="display.distinct">Distinct:</dt>
+            <dd class="distinct" ng-show="display.distinct">{{display.distinct}}</dd>
+
+          </dl>
+
+          <table class="flags" cellspacing="0" cellpadding="0" border="0" ng-show="display.columns.length!=0">
+
+            <thead>
+
+              <tr>
+                <td>Flags:</td>
+                <th ng-repeat="key in display.columns">{{key.name}}</th>
+
+              </tr>
+
+            </thead>
+
+              <tbody>
+              <tr ng-repeat="row in display.rows track by row.name">
+              <th>{{row.name}}</th>
+              <td colspan="2" class="text" ng-show="row.comment">{{row.comment}}</td>
+              <td ng-repeat="cell in row.cells"
+                  ng-class="{'check':cell.value}">
+                  <span ng-show="cell.value">âˆ?</span>
+                  <span ng-show="!cell.value">&nbsp;</span>
+              </td>
+              </tr>
+              </tbody>
+
+          </table>
+
+          <ul class="analyzer">
+            <li class="clearfix {{analyzer.key}}" ng-class="{open: analyzer.show}" ng-repeat="analyzer in analysis.analyzers">
+
+              <p><a class="analysis" ng-href="#/{{core}}/analysis?{{analysis.query}}"><span>{{analyzer.name}}&nbsp;Analyzer:</span></a></p>
+              <dl>
+                <dt><a ng-click="toggleAnalyzer(analyzer)" class="toggle">{{analyzer.detail.className}}</a></dt>
+              </dl>
+              <ul ng-show="analyzer.show">
+                <li class="clearfix {{componentType.key}} data" ng-repeat="componentType in analyzer.detail.componentTypes" ng-show="componentType.components">
+                  <p>{{componentType.label}}:</p>
+                  <dl>
+                      <dt ng-repeat-start="component in componentType.components">{{component.className}}</dt>
+                      <dd ng-repeat-end ng-repeat="arg in component.args"
+                          ng-class="{'ico-1': arg.booleanValue, 'ico-0': arg.booleanValue==false}">
+                          {{arg.name}}<span ng-show="arg.value">: {{arg.value}}</span>
+                      </dd>
+                  </dl>
+                </li>
+              </ul>
+            </li>
+          </ul>
+
+        </div>
+
+        <div class="terminfo-holder loaded clearfix" ng-class="{disabled: noTermData}" ng-show="is.field">
+
+          <div class="trigger">
+
+            <button class="submit" ng-click="toggleTerms()"><span ng-class="{loader:isLoadingTerms}">Load Term Info</span></button>
+            <br/>
+            <span ng-show="isCloudEnabled">N.B. Loaded from a single core - not from the whole collection.</span>
+
+            <a ng-show="showTerms" ng-click="toggleAutoload()" ng-class="{on:isAutoload}" class="autoload" title="Automatically load Term Info?"><span>Autoload</span></a>
+
+          </div>
+
+          <p ng-show="showTerms && noTerms" class="status">Sorry, no Term Info available :(</p>
+
+          <div ng-show="showTerms && termInfo.topTerms" class="topterms-holder">
+
+            <form>
+            <p class="head">
+              <input type="text" ng-model="topTermsCount" ng-change="loadTermInfo()">
+              <a class="max-holder" ng-click="loadAllTopTerms()" title="Load all Top-Terms">/<span class="max">{{termInfo.maxTerms | number}}</span></a> Top-Terms:
+              <a id="query_link" href="#/{{core}}/query?q={{name}}:[* TO *]"><span>Query</span>&nbsp;</a>
+            </p>
+            </form>
+
+            <ul>
+                <li class="clearfix" ng-repeat="countGroup in termInfo.topTerms">
+                    <p><span>{{countGroup.count}}</span></p>
+                    <ul>
+                        <li ng-repeat="term in countGroup.terms" ng-class="{odd:$odd}"><a ng-href="#/{{core}}/query?q=%7B!term+f%3D{{name | uriencode}}%7D{{term | uriencode}}">{{term}}</a></li>
+                    </ul>
+                </li>
+
+            </ul>
+
+          </div>
+
+          <div ng-show="showTerms && termInfo.histogram" class="histogram-holder">
+
+            <p class="head">Histogram:</p>
+            <ul>
+               <li ng-repeat="row in termInfo.histogram" ng-class="{odd:$odd}">
+                 <dl class="clearfix" style="width: {{(( row.value / termInfo.histogramMax ) * 100 )}}%;">
+                   <dt><span>{{ row.key | number}}</span></dt>
+                   <dd><span>{{ row.value | number }}</span></dd>
+                 </dl>
+               </li>
+
+            </ul>
+
+          </div>
+
+        </div>
+
+      </div>
+
+    </div>
+
+    <div id="related">
+     <select id="type_or_name"
+             ng-model="fieldOrType"
+             chosen
+             data-placeholder="Please select ..."
+             ng-change="selectFieldOrType()"
+             ng-options="f.value as f.label group by f.group for f in fieldsAndTypes"></select>
+
+      <dl id="f-df-t">
+
+        <dt class="field" ng-class="{active: selectedType=='Field'}" ng-show="leftbar.fields">Field</dt>
+        <dd class="field" ng-class="{active: selectedType=='Field'}" ng-repeat="field in leftbar.fields"><a href="#/{{core}}/schema?field={{field}}">{{field}}</a></dd>
+
+        <dt class="copyfield" ng-show="leftbar.copyFieldSources">Copied from</dt>
+        <dd class="copyfield" ng-repeat="field in leftbar.copyFieldSources">
+            <div class="clearfix" ng-hide="isSchemaUpdatable">
+              <a href="#/{{core}}/schema?field={{field.name}}">{{field.name}}</a>
+            </div>
+            <div class="clearfix updatable" ng-show="isSchemaUpdatable">
+              <a style="float:left;width:80%" href="#/{{core}}/schema?field={{field.name}}">{{field.name}}</a>
+              <span ng-click="toggleDeleteCopyField(field)" class="rem">&nbsp;</span>
+            </div>
+            <div class="action delete" ng-show="field.show">
+                <form class="delete">
+
+                  <p class="clearfix"><em>Are you sure you want to delete this CopyField?</em></p>
+                  <div ng-repeat="error in field.errors" ng-show="field.errors" class="clearfix note error">
+                    <span>{{error}}</span></div>
+
+                  <p class="clearfix buttons">
+                    <button class="submit" ng-class="{success: field.deleted}" ng-click="deleteCopyField(field, field.name, name)"><span>Delete</span></button>
+                    <button type="reset" class="reset" ng-click="toggleDeleteCopyField(field)"><span>Cancel</span></button>
+                  </p>
+                </form>
+            </div>
+        </dd>
+
+        <dt class="copyfield" ng-show="leftbar.copyFieldDests">Copied to</dt>
+        <dd class="copyfield" ng-repeat="field in leftbar.copyFieldDests">
+            <div class="clearfix" ng-hide="isSchemaUpdatable">
+              <a href="#/{{core}}/schema?field={{field.name}}">{{field.name}}</a>
+            </div>
+            <div class="clearfix updatable" ng-show="isSchemaUpdatable">
+              <a href="#/{{core}}/schema?field={{field.name}}">{{field.name}}</a>
+              <span ng-click="toggleDeleteCopyField(field)" class="rem">&nbsp;</span>
+            </div>
+            <div class="action delete" ng-show="field.show">
+                <form class="delete">
+
+                  <p class="clearfix"><em>Are you sure you want to delete this CopyField?</em></p>
+                  <div ng-repeat="error in field.errors" ng-show="field.errors" class="clearfix note error">
+                    <span>{{error}}</span></div>
+
+                  <p class="clearfix buttons">
+                    <button class="submit" ng-class="{success: field.deleted}" ng-click="deleteCopyField(field, name, field.name)"><span>Delete</span></button>
+                    <button type="reset" class="reset" ng-click="toggleDeleteCopyField(field)"><span>Cancel</span></button>
+                  </p>
+                </form>
+            </div>
+        </dd>
+        <dt class="dynamic-field" ng-class="{active: selectedType=='Dynamic Field'}" ng-show="leftbar.dynamicFields">Dynamic Field {{dynamicFields}} / {{dynamicFields.length()}}</dt>
+        <dd class="dynamic-field" ng-class="{active: selectedType=='Dynamic Field'}" ng-repeat="field in leftbar.dynamicFields"><a href="#/{{core}}/schema?dynamic-field={{field}}">{{field}}</a></dd>
+
+        <dt class="type" ng-class="{active: selectedType=='Type'}" ng-show="leftbar.types">Type</dt>
+        <dd class="type" ng-class="{active: selectedType=='Type'}" ng-repeat="type in leftbar.types"><a href="#/{{core}}/schema?type={{type}}">{{type}}</a></dd>
+
+        <dt></dt>
+        <dd class="active delete-field" ng-show="isSchemaUpdatable &amp;&amp; leftbar.fields &amp;&amp;!showDelete"><button ng-click="toggleDelete()"><span>delete field</span></button></dd>
+        <dd class="active delete-field" ng-show="isSchemaUpdatable &amp;&amp; leftbar.dynamicFields &amp;&amp;!showDelete"><button ng-click="toggleDelete()"><span>delete dynamic field</span></button></dd>
+
+        <div class="action delete" ng-show="showDelete">
+
+            <form class="delete">
+
+              <p class="clearfix"><em>Are you sure you want to delete this {{selectedType}}?</em></p>
+              <div ng-repeat="error in deleteErrors" ng-show="deleteErrors" class="clearfix note error">
+                <span>{{error}}</span></div>
+
+              <p class="clearfix buttons">
+                <button class="submit" ng-class="{success: deleted}" ng-click="delete()"><span>Delete</span></button>
+                <button type="reset" class="reset" ng-click="toggleDelete()"><span>Cancel</span></button>
+              </p>
+            </form>
+        </div>
+      </dl>
+
+      <dl class="ukf-dsf">
+
+        <dt class="unique-key-field" ng-class="{active: isUniqueKeyField}" ng-show="uniqueKeyField">Unique Key Field</dt>
+        <dd class="unique-key-field" ng-class="{active: isUniqueKeyField}"><a ng-href="#/{{core}}/schema?field={{uniqueKeyField}}">{{uniqueKeyField}}</a></dd>
+
+        <dt class="default-search-field" ng-class="{active: isDefaultSearchField}" ng-show="defaultSearchField">Default Search Field</dt>
+        <dd class="default-search-field" ng-class="{active: isDefaultSearchField}"><a ng-href="#/{{core}}/schema?field={{defaultSearchField}}">{{defaultSearchField}}</a></dd>
+
+      </dl>
+
+    </div>
+      </div>
+
+  </div>
+
+</div>

Added: ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/segments.html
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/segments.html?rev=1776930&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/segments.html (added)
+++ ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/segments.html Mon Jan  2 13:44:06 2017
@@ -0,0 +1,99 @@
+<!--
+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.
+-->
+<div id="segments">  
+  <div class="clearfix">
+    
+    <div class="block fieldlist" id="statistics">
+      
+      <h2><span>Segments</span></h2>
+            <p id="auto-refresh"><a ng-click="toggleAutoRefresh()" ng-class="{on:autorefresh}">Auto-Refresh</a></p>
+      <a class="reload" ng-click="refresh()"><span>reload</span></a>
+      
+      <div class="message-container">
+            <div class="message"></div>
+          </div>
+  
+          <div class="content">            
+        
+          <div id="result">
+        
+            <div id="response">
+        
+              <div class="segments-holder">
+      
+                 <ul>
+                             <li>
+                                 <dl class="clearfix" style="width:100%;">
+                                     <dt>
+                                     <div>Size</div>
+                                     </dt>
+                                     <dd>
+                                         <div class="start">0</div>
+                                         <div class="w5" ng-repeat="x in xaxis">
+                                             <span ng-show="x&gt;0.001">{{x.value}}</span>
+                                             <span ng-hide="x&gt;0.001">&nbsp;</span>
+                                         </div>
+                                         <div class="end">{{segmentMB | number}} MB</div>
+                                     </dd>
+                                 </dl>
+                             </li>
+                             <li ng-repeat="segment in segments">
+                                 <dl class="clearfix" ng-style="{width: segment.totalSize+'%'}">
+                                     <dt>
+                                     <div>{{ segment.name }}</div>
+                                     </dt>
+                                     <dd>
+                                         <div class="live" ng-class="{'merge-candidate':segment.mergeCandidate}"
+                                              ng-style="{width: segment.aliveDocSize+'%'}">&nbsp;</div>
+                                         <div class="tooltip">
+                                             <div>Segment <b>{{segment.name}}</b>:</div>
+                                             <div class="label">#docs:</div>
+                                             <div>{{ segment.size | number }}</div>
+                                             <div class="label">#dels:</div>
+                                             <div>{{ segment.delCount | number }}</div>
+                                             <div class="label">size:</div>
+                                             <div>{{ segment.sizeInBytes | number }} bytes</div>
+                                             <div class="label">age:</div>
+                                             <div>{{ segment.age }}</div>
+                                             <div class="label">source:</div>
+                                             <div>{{ segment.source }}</div>
+                                         </div>
+                                         <div class="deleted" ng-show="segment.deletedDocSize"
+                                              style="width: {{ segment.deletedDocSize }}%; margin-left:{{ segment.aliveDocSize}}%;">
+                                             &nbsp;</div>
+                                     </dd>
+                                 </dl>
+                             </li>
+                             <li>
+                                 <dl>
+                                     <dt></dt>
+                                     <dd>Deletions: {{ deletionsPercentage }}%</dd>
+                                 </dl>
+                             </li>
+                         </ul>
+        
+               </div>
+            
+            </div>
+            
+        </div>
+          </div>
+    </div>
+    
+  </div>  
+
+</div>

Added: ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/stream.html
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/stream.html?rev=1776930&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/stream.html (added)
+++ ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/stream.html Mon Jan  2 13:44:06 2017
@@ -0,0 +1,64 @@
+<!--
+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.
+-->
+<div id="stream" class="clearfix">
+
+  <div id="form">
+    <form>
+      <label for="expr" title="The expression string">
+        Streaming Expression (expr)
+      </label>
+      <textarea name="expr" ng-model="expr" id="expr" title="The expression string.">search(....)</textarea>
+
+      <button type="submit" ng-click="doStream()">Execute</button>
+      <input type="checkbox" ng-model="doExplanation" name="doExplanation" id="doExplanation" value="true">
+      <label for="explain" class="checkbox" title="Enable Explanation." ng-click="doExplanation = !doExplanation">
+        with explanation
+      </label>
+      
+    </form>
+  </div>
+
+  <div id="result">
+
+    <a ng-show="response.data" id="url" class="address-bar" ng-href="{{url}}">{{url}}</a>
+
+    <div ng-show="showExplanation" id="explanation" class="clearfix">
+      <div id="frame">
+        <div explanation-graph id="explanation-content" data="explanationData" depth="depth" leaf-count="leafCount" class="content clearfix" ng-show="showGraph">
+          <div id="legend">
+            <svg width="100%" height="15">
+                <g transform="translate(5,10)" class="stream-decorator"><circle r="4.5"></circle></g>
+                <g transform="translate(15,14)"><text>Stream Decorator</text></g>
+                <g transform="translate(140,10)" class="stream-source"><circle r="4.5"></circle></g>
+                <g transform="translate(150,14)"><text>Stream Source</text></g>
+                <g transform="translate(260,10)" class="graph-source"><circle r="4.5"></circle></g>
+                <g transform="translate(270,14)"><text>Graph Source</text></g>
+                <g transform="translate(375,10)" class="datastore"><circle r="4.5"></circle></g>
+                <g transform="translate(385,14)"><text>Datastore</text></g>
+            </svg>
+          </div>
+          <div id="canvas"></div>
+        </div>
+      </div>
+    </div>
+
+    <div id="response">
+      <pre class="syntax language-json"><code ng-bind-html="response.data | highlight:json | unsafe"></code></pre>
+    </div>
+  </div>
+
+</div>

Added: ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/threads.html
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/threads.html?rev=1776930&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/threads.html (added)
+++ ofbiz/trunk/specialpurpose/solr/webapp/solr/partials/threads.html Mon Jan  2 13:44:06 2017
@@ -0,0 +1,65 @@
+<!--
+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.
+-->
+<div id="threads" ng-class="showAllStacktraces ? 'expanded' : 'collapsed'">
+
+  <div class="controls">
+    <a ng-click="toggleStacktraces()">
+      <span>{{showAllStacktraces?"Hide":"Show"}} all Stacktraces</span>
+    </a>
+  </div>
+
+  <div id="thread-dump">
+
+    <table border="0" cellpadding="0" cellspacing="0">
+
+      <thead>
+
+        <tr>
+
+          <th class="name">name</th>
+          <th class="time">cpuTime / userTime</th>
+
+        </tr>
+
+      </thead>
+
+      <tbody>
+        <tr ng-repeat="thread in threads" class="{{$odd?'odd':''}} {{thread.lock?'lock':''}} {{thread.stackTrace?'stacktrace':''}} {{thread.state}}">
+          <td class="name">
+            <a title="{{thread.state}}" ng-click="toggleStacktrace(thread)"><span>{{thread.name}} ({{thread.id}})</span></a>
+            <p title="Waiting on" ng-show="thread.lock">{{thread.lock}}</p>
+            <div ng-show="thread.showStackTrace">
+              <ul>
+                <li ng-repeat="trace in thread.stackTrace track by trace.id">{{trace.trace}}</li>
+              </ul>
+            </div>
+          </td>
+          <td class="time">{{thread.cpuTime}}<br>{{thread.userTime}}</td>
+        </tr>
+      </tbody>
+
+    </table>
+
+  </div>
+
+  <div class="controls">
+    <a ng-click="toggleStacktraces()">
+      <span>{{showAllStacktraces?"Hide":"Show"}} all Stacktraces</span>
+    </a>
+  </div>
+
+</div>

Modified: ofbiz/trunk/specialpurpose/solr/webapp/solr/tpl/segments.html
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/solr/webapp/solr/tpl/segments.html?rev=1776930&r1=1776929&r2=1776930&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/solr/webapp/solr/tpl/segments.html (original)
+++ ofbiz/trunk/specialpurpose/solr/webapp/solr/tpl/segments.html Mon Jan  2 13:44:06 2017
@@ -14,36 +14,36 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY
 See the License for the specific language governing permissions and
 limitations under the License.
 -->
-<div id="segments">
- <div class="clearfix">
-
- <div class="block fieldlist" id="statistics">
-
- <h2><span>Segments</span></h2>
- <a class="reload"><span>reload</span></a>
-
- <div class="message-container">
-         <div class="message"></div>
-       </div>
-
-       <div class="content">      
-
-  <div id="result">
-
-    <div id="response">
-
-      <div class="segments-holder">
-
-         <ul></ul>
-
-       </div>
-    
-    </div>
-    
- </div>
-       </div>
- </div>
-
- </div>
+<div id="segments">  
+  <div class="clearfix">
+    
+    <div class="block fieldlist" id="statistics">
+      
+      <h2><span>Segments</span></h2>
+      <a class="reload"><span>reload</span></a>
+      
+      <div class="message-container">
+            <div class="message"></div>
+          </div>
+
+          <div class="content">            
+        
+          <div id="result">
+        
+            <div id="response">
+        
+              <div class="segments-holder">
+      
+                 <ul></ul>
+        
+               </div>
+            
+            </div>
+            
+        </div>
+          </div>
+    </div>
+    
+  </div>  
 
 </div>