<!--
   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.
-->
<!DOCTYPE html>
<html lang="en" class="no-js">
  <head>
    <link href="/hicc/css/bootstrap-theme.min.css" type="text/css" rel="stylesheet" />
    <link href="/hicc/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
    <script src="/hicc/js/jquery.js" type="text/javascript"></script>
    <script src="/hicc/js/bootstrap.min.js" type="text/javascript"></script>
    <style>
      html, body, .row, .container {
        height: 100%;
        min-height: 100%;
      }
      .menu {
        float:left;
        height: 95%;
      }
      .main {
        float:left;
        height: 95%;
      }
      iframe {
        border: 0px none transparent;
        width: 100%;
        height: 100%;
      }
      .container {
        width: 100%;
      }
    </style>
  </head>
  <body>
    <div class="container">
      <div class="row">
        <div class="menu col-md-2 col-lg-2">
          <h1>Quick Links</h1>
          <p><a href="http://$nn/explorer.html#/" target="link_target">Browse File System</a></p>
          <p><a href="http://$hm/tablesDetailed.jsp" target="link_target">Browse HBase Tables</a></p>
          <p><a href="http://$rm/" target="link_target">Browse Hadoop Applications</a></p>
          <p><a href="/hicc/ajax-solr/chukwa/" target="link_target">Search Log Files</a></p>
        </div>
        <div class="main col-md-10 col-lg-10">
          <iframe name="link_target" src="/hicc/ajax-solr/chukwa/" width="100%" height="100%"></iframe>
        </div>
      </div>
    </div>
  </body>
</html>
