<!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>
<head>
  <title>Druid Overlord Console</title>
  <link rel="shortcut icon" type="image/ico" href="/favicon.png">
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <meta name="Description" content="Legacy Overlord Console"/>

  <style type="text/css">@import "old-console/css/style.css";</style>
  <style type="text/css">@import "old-console/css/demo_table.css";</style>

  <script type="text/javascript" src="old-console/js/underscore-1.2.2.js"></script>
  <script type="text/javascript" src="old-console/js/jquery-1.11.0.min.js"></script>
  <script type="text/javascript" src="old-console/js/jquery.dataTables-1.8.2.js"></script>
  <script type="text/javascript" src="old-console/js/druidTable-0.0.1.js"></script>
  <script type="text/javascript" src="old-console/js/tablehelper-0.0.2.js"></script>
  <script type="text/javascript" src="old-console/js/console-0.0.1.js"></script>
</head>

<body>
<div class="container">
  <div class="heading">Druid Overlord Console</div>
  <div class="supervisors_section" style="display: none;">
    <h2>Supervisors</h2>
    <table id="supervisorsTable"></table>
  </div>

  <h2>Running Tasks</h2>
  <div class="running_loading">Loading Running Tasks... this may take a few minutes</div>
  <table id="runningTable"></table>

  <h2>Pending Tasks - Tasks waiting to be assigned to a worker</h2>
  <div class="pending_loading">Loading Pending Tasks... this may take a few minutes</div>
  <table id="pendingTable"></table>

  <h2>Waiting Tasks - Tasks waiting on locks</h2>
  <div class="waiting_loading">Loading Waiting Tasks... this may take a few minutes</div>
  <table id="waitingTable"></table>

  <h2>Complete Tasks - Tasks recently completed</h2>
  <div class="complete_loading">Loading Complete Tasks... this may take a few minutes</div>
  <table id="completeTable"></table>

  <h2>MiddleManagers</h2>
  <div class="workers_loading">Loading Workers... this may take a few minutes</div>
  <table id="workerTable"></table>

  <h2>Autoscaling Activity</h2>
  <div class="events_loading">Loading Autoscaling Activities... this may take a few minutes</div>
  <table id="eventTable"></table>
</div>
</body>
</html>
