|  | 
 | <!-- | 
 | 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. | 
 |  | 
 | --> | 
 | <nav class="navbar navbar-default navbar-fixed-top navbar-main"> | 
 |   <div id="fold-button" ng-click="showSidebar()" class="btn btn-default navbar-btn pull-left"><i class="fa fa-navicon"></i></div> | 
 |   <div class="navbar-title">Overview</div> | 
 |   <div class="navbar-info last first">Version: {{overview['flink-version']}}</div> | 
 |   <div ng-if="overview['flink-commit']" class="navbar-info last first">Commit: {{overview['flink-commit']}}</div> | 
 | </nav> | 
 | <div id="content-inner"> | 
 |   <div class="row"> | 
 |     <div class="col-md-6"> | 
 |       <div class="panel panel-default panel-dashboard"> | 
 |         <div class="panel-heading"> | 
 |           <div class="row"> | 
 |             <div class="col-xs-3"><i class="fa fa-tasks fa-3x"></i></div> | 
 |             <div class="col-xs-9 text-right"> | 
 |               <div class="huge">{{overview.taskmanagers}}</div> | 
 |               <div>Task Managers</div> | 
 |             </div> | 
 |           </div> | 
 |         </div> | 
 |         <div class="panel-heading"> | 
 |           <div class="row"> | 
 |             <div class="col-xs-3"><i class="fa fa-folder fa-3x"></i></div> | 
 |             <div class="col-xs-9 text-right"> | 
 |               <div class="huge">{{overview["slots-total"]}}</div> | 
 |               <div>Task Slots</div> | 
 |             </div> | 
 |           </div> | 
 |         </div> | 
 |         <div class="panel-heading"> | 
 |           <div class="row"> | 
 |             <div class="col-xs-3"><i class="fa fa-folder-o fa-3x"></i></div> | 
 |             <div class="col-xs-9 text-right"> | 
 |               <div class="huge">{{overview["slots-available"]}}</div> | 
 |               <div>Available Task Slots</div> | 
 |             </div> | 
 |           </div> | 
 |         </div> | 
 |       </div> | 
 |     </div> | 
 |     <div class="col-md-6"> | 
 |       <div class="panel panel-default panel-lg"> | 
 |         <div class="panel-heading">Total Jobs</div> | 
 |         <div class="list-group"> | 
 |           <div class="list-group-item"> | 
 |             <div class="badge badge-primary">{{overview["jobs-running"]}}</div>Running | 
 |           </div> | 
 |           <div class="list-group-item"> | 
 |             <div class="badge badge-success">{{overview["jobs-finished"]}}</div>Finished | 
 |           </div> | 
 |           <div class="list-group-item"> | 
 |             <div class="badge badge-info">{{overview["jobs-cancelled"]}}</div>Canceled | 
 |           </div> | 
 |           <div class="list-group-item"> | 
 |             <div class="badge badge-danger">{{overview["jobs-failed"]}}</div>Failed | 
 |           </div> | 
 |         </div> | 
 |       </div> | 
 |     </div> | 
 |   </div> | 
 |   <div class="panel panel-default"> | 
 |     <div class="panel-heading"> | 
 |       <h3 class="panel-title">Running Jobs</h3> | 
 |     </div> | 
 |     <div class="panel-body"> | 
 |       <table class="table table-hover table-clickable"> | 
 |         <thead> | 
 |           <tr> | 
 |             <th>Start Time</th> | 
 |             <th>End Time</th> | 
 |             <th>Duration</th> | 
 |             <th>Job Name</th> | 
 |             <th>Job ID</th> | 
 |             <th>Tasks</th> | 
 |             <th>Status</th> | 
 |           </tr> | 
 |         </thead> | 
 |         <tbody> | 
 |           <tr ng-repeat="job in runningJobs|orderBy:"'start-time'"" ui-sref="single-job.plan.subtasks({ jobid: job.jid })"> | 
 |             <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> | 
 |             <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> | 
 |             <td title="{{job.duration | humanizeDuration:false}}">{{job.duration | humanizeDuration:true}}</td> | 
 |             <td>{{job.name}}</td> | 
 |             <td>{{job.jid}}</td> | 
 |             <td class="label-group"> | 
 |               <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> | 
 |             </td> | 
 |             <td>  | 
 |               <bs-label status="{{job.state}}">{{job.state}}</bs-label> | 
 |             </td> | 
 |           </tr> | 
 |         </tbody> | 
 |       </table> | 
 |     </div> | 
 |   </div> | 
 |   <div class="panel panel-default"> | 
 |     <div class="panel-heading"> | 
 |       <h3 class="panel-title">Completed Jobs</h3> | 
 |     </div> | 
 |     <div class="panel-body"> | 
 |       <table class="table table-hover table-clickable"> | 
 |         <thead> | 
 |           <tr> | 
 |             <th>Start Time</th> | 
 |             <th>End Time</th> | 
 |             <th>Duration</th> | 
 |             <th>Job Name</th> | 
 |             <th>Job ID</th> | 
 |             <th>Tasks</th> | 
 |             <th>Status</th> | 
 |           </tr> | 
 |         </thead> | 
 |         <tbody> | 
 |           <tr ng-repeat="job in finishedJobs|orderBy:"'end-time'":true" ui-sref="single-job.plan.subtasks({ jobid: job.jid })"> | 
 |             <td>{{job['start-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> | 
 |             <td>{{job['end-time'] | amDateFormat:'YYYY-MM-DD, H:mm:ss'}}</td> | 
 |             <td title="{{job.duration | humanizeDuration:false}}">{{job.duration | humanizeDuration:true}}</td> | 
 |             <td>{{job.name}}</td> | 
 |             <td>{{job.jid}}</td> | 
 |             <td class="label-group"> | 
 |               <bs-label status="{{status}}" ng-repeat="(status, value) in job.tasks">{{value}}</bs-label> | 
 |             </td> | 
 |             <td>  | 
 |               <bs-label status="{{job.state}}">{{job.state}}</bs-label> | 
 |             </td> | 
 |           </tr> | 
 |         </tbody> | 
 |       </table> | 
 |     </div> | 
 |   </div> | 
 | </div> |