<!--
 Copyright (c) 2017 SONATA-NFV and Paderborn University
 ALL RIGHTS RESERVED.
 
 Licensed 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.

 Neither the name of the SONATA-NFV, Paderborn University
 nor the names of its contributors may be used to endorse or promote
 products derived from this software without specific prior written
 permission.

 This work has been performed in the framework of the SONATA project,
 funded by the European Commission under Grant number 671517 through
 the Horizon 2020 and 5G-PPP programmes. The authors would like to
 acknowledge the contributions of their colleagues of the SONATA
 partner consortium (www.sonata-nfv.eu).
-->

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>VIM-EMU Dashboard</title>

    <!-- Bootstrap -->
    <!--<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">-->
    <link href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/flatly/bootstrap.min.css" rel="stylesheet" integrity="sha384-+ENW/yibaokMnme+vBLnHMphUYxHs34h9lpdbSLuAwGkOKFRl4C34WkjazBtb7eT" crossorigin="anonymous">

    <link href="css/main.css" rel="stylesheet">

    <!-- jQuery -->
   <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js" type="text/javascript"></script>
    <!--<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.jss" type="text/javascript"></script>-->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js" type="text/javascript"></script>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->

    <script src="js/main.js" type="text/javascript"></script>


</head>
<style>

.link {
  stroke: #ccc;
}

.node text {
  pointer-events: none;
  font: 15px sans-serif;
}

</style>
<body>
  <div id="page-top" class="fixed-top">
    <div class="row">
      <div class="col-sm-4"><h1>VIM-EMU Dashboard</h1></div>
      <div class="col-sm-8 text-right">
        <img src="https://files.peuster.de/vimemu_dashboard_resources/upb.png">
        <img src="https://files.peuster.de/vimemu_dashboard_resources/tango.png">
        <img src="https://files.peuster.de/vimemu_dashboard_resources/osm.png">
      </div>
    </div>
  </div>
  
  <div id="content">


<div class="panel panel-primary">
  <!-- Default panel contents -->
  <div class="panel-heading"><span>Emulated Datacenters</span>&nbsp;&nbsp;<span class="badge" id="lbl_datacenter_count">0</span><span class="pull-right" id="lbl_lateness_datacenter">Lateness: -</span></div>
  <!-- Table -->
  <table class="table table-striped table-hover" id="table_datacenter">
  </table>
</div>

<div class="spacer">&nbsp;</div>
 
<div class="panel panel-primary">
  <!-- Default panel contents -->
  <div class="panel-heading"><span>Running Containers</span>&nbsp;&nbsp;<span class="badge" id="lbl_container_count">0</span><span class="pull-right" id="lbl_lateness_container">Lateness: -</span></div>
  <!-- Table -->
  <table class="table table-striped table-hover" id="table_container">
  </table>
</div>

<div class="spacer">&nbsp;</div>

<div class="panel panel-primary">
    <div class="panel-heading"><span>Deployment Graph</span>&nbsp;&nbsp;</div>
    <table class="table table-striped table-hover" id="table_graph">

    </table>
</div>
    <script src="https://d3js.org/d3.v3.min.js"></script>
    <script src="js/graph.js" type="text/javascript"></script>


</div>

<footer class="footer text-center small">(c) 2019 by ETSI OSM, 5GTANGO consortium, SONATA-NFV consortium, Paderborn University and IMEC</footer>


</body>

</html>
