<!DOCTYPE html>
<!--
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.
-->

<html lang="en">
<head>
  <!-- Standard Meta -->
  <meta charset="utf-8"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
  <meta name="viewport"
        content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"/>

  <!-- Site Properties -->
  <title>Gearpump</title>
  <link rel="icon" type="image/png" href="logo.png">

  <!-- Static Resources -->
  <link rel="stylesheet" href="webjars/bootstrap/3.3.6/css/bootstrap.min.css"/>
  <!-- angular-strap requires the following 2 stylesheets -->
  <link rel="stylesheet" href="webjars/bootstrap-additions/0.3.1/dist/bootstrap-additions.min.css"/>
  <link rel="stylesheet" href="webjars/angular-motion/0.4.3/dist/angular-motion.min.css"/>
  <link rel="stylesheet" href="webjars/ui-select/0.14.2/dist/select.min.css"/>
  <link rel="stylesheet" href="webjars/angular-loading-bar/0.8.0/build/loading-bar.min.css"/>
  <link rel="stylesheet" href="webjars/vis/4.7.0/dist/vis.min.css"/>
  <link rel="stylesheet" href="webjars/dashing/0.4.8/dist/dashing.min.css"/>

  <!-- Site styles -->
  <link rel="stylesheet" href="webjars/dashing-deps/0.1.2/roboto/roboto.min.css"/>
  <link rel="stylesheet" href="webjars/font-awesome/4.5.0/css/font-awesome.min.css"/>
  <link rel="stylesheet" href="styles/bootstrap-override.css"/>
  <link rel="stylesheet" href="styles/dashboard.css"/>
</head>

<body>
<!-- app -->
<div ng-app="dashboard" ng-strict-di>
  <!-- header and footer are defined in views/landing -->
  <header></header>
  <breadcrumbs></breadcrumbs>
  <div class="container-fluid">
    <!--<div class="col-md-2" role="sidebar"-->
    <!--ng-include src="'views/landing/sidebar.html'"></div>-->
    <div class="row" ui-view></div>
  </div>
  <footer></footer>
</div>
<!-- end of app -->

<!-- Static Resources -->
<script src="webjars/jquery/2.2.0/jquery.min.js"></script>
<script src="webjars/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="webjars/angularjs/1.4.9/angular.min.js"></script>
<script src="webjars/angularjs/1.4.9/angular-cookies.min.js"></script>
<script src="webjars/angular-touch/1.5.0/angular-touch.min.js"></script>
<script src="webjars/angularjs/1.4.9/angular-animate.min.js"></script>
<script src="webjars/angularjs/1.4.9/angular-sanitize.min.js"></script>
<script src="webjars/angular-loading-bar/0.8.0/build/loading-bar.min.js"></script>
<script src="webjars/angular-ui-router/0.2.15/angular-ui-router.min.js"></script>
<script src="webjars/angular-strap/2.3.5/dist/angular-strap.min.js"></script>
<script src="webjars/angular-strap/2.3.5/dist/angular-strap.tpl.min.js"></script>
<script src="webjars/ui-select/0.14.2/dist/select.min.js"></script>
<script src="webjars/angular-smart-table/2.1.6/dist/smart-table.min.js"></script>
<script src="webjars/d3js/3.5.6/d3.min.js"></script>
<script src="webjars/momentjs/2.10.6/min/moment.min.js"></script>
<script src="webjars/lodash/3.10.1/lodash.min.js"></script>
<script src="webjars/vis/4.7.0/dist/vis.min.js"></script>
<script src="webjars/ng-file-upload/5.0.9/ng-file-upload-all.min.js"></script>
<script src="webjars/clipboard.js/0.1.1/clipboard.js"></script>
<script src="webjars/dashing-deps/0.1.2/echarts/2.2.7-compact/echarts-all.min.js"></script>
<script src="webjars/dashing/0.4.8/dist/dashing.min.js"></script>

<!-- Application -->
<script src="dashboard.js"></script>
<script src="i18n.js"></script>
<script src="services/models/models.js"></script>
<script src="services/models/metrics.js"></script>
<script src="services/models/metrics_provider.js"></script>
<script src="services/models/dag.js"></script>
<script src="services/models/streamingapp_metrics_provider.js"></script>
<script src="services/models/streamingapp_dag.js"></script>
<script src="services/locator.js"></script>
<script src="services/restapi.js"></script>
<script src="services/health_check_service.js"></script>
<script src="services/login_check.js"></script>
<script src="widgets/radio_group.js"></script>
<script src="widgets/metrics_period_switcher.js"></script>
<script src="views/landing/breadcrumbs.js"></script>
<script src="views/landing/header.js"></script>
<script src="views/cluster/master/master.js"></script>
<script src="views/cluster/workers/add_worker.js"></script>
<script src="views/cluster/workers/workers_listview.js"></script>
<script src="views/cluster/workers/worker/worker.js"></script>
<script src="views/jvm/jvm_metrics_view.js"></script>
<script src="views/apps/apps.js"></script>
<script src="views/apps/compose/compose.js"></script>
<script src="views/apps/compose/popups/choose_processor.js"></script>
<script src="views/apps/compose/popups/choose_edge.js"></script>
<script src="views/apps/submit/submit.js"></script>
<script src="views/apps/app/app.js"></script>
<script src="views/apps/app/overview.js"></script>
<script src="views/apps/app/executors_table.js"></script>
<script src="views/apps/app/alerts_table.js"></script>
<script src="views/apps/streamingapp/vis/network.js"></script>
<script src="views/apps/streamingapp/vis/network_style.js"></script>
<script src="views/apps/streamingapp/streamingapp.js"></script>
<script src="views/apps/streamingapp/overview.js"></script>
<script src="views/apps/streamingapp/metrics_charts.js"></script>
<script src="views/apps/streamingapp/metrics_table.js"></script>
<script src="views/apps/streamingapp/metric_selector.js"></script>
<script src="views/apps/streamingapp/dag.js"></script>
<script src="views/apps/streamingapp/popups/dag_edit.js"></script>
<script src="views/apps/streamingapp/processor.js"></script>
<script src="views/apps/streamingapp/processor_task_charts.js"></script>
<script src="views/apps/streamingapp/processor_task_table.js"></script>
<script src="views/apps/streamingapp/processor_task_pager.js"></script>
<script src="views/apps/streamingapp/executor.js"></script>
<script src="views/helper.js"></script>

</body>
</html>
