<!--
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>
