<!--

 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">
  <head>
    <title>Help</title>
    <link href="../../css/bootstrap.min.css" type="text/css" rel="stylesheet" />
    <link href="../../css/bootstrap-theme.min.css" type="text/css" rel="stylesheet" />
    <script src="../../js/jquery.js" type="text/javascript"></script>
    <script src="../../js/bootstrap.min.js" type="text/javascript"></script>
  </head>
  <body>
    <div class="container-fluid">
      <div class="row">
        <div class="col-xs-1 col-md-1 col-lg-1"></div>
        <div class="col-xs-10 col-md-10 col-lg-10">
          <h1>Hadoop Infrastructure Care Center Help</h1>

          <h2>Search</h2>
          <p class="lead">Auto complete search box to find widget by widget title.</p>

          <h2>User Activity</h2>
          <p class="lead">Default dashboard for user to customize and monitor user activities.</p>

          <h2>System Activity</h2>
          <p class="lead">System dashboard for monitoring system activities.</p>

          <h2>Graph Explorer</h2>
          <p class="lead">Add a Graph Explorer widget to current dashboard.</p>

          <h2>Settings</h2>
          <p class="lead">User preference settings.</p>

          <h2>Help</h2>
          <p class="lead">This page.</p>
        </div>
        <div class="col-xs-1 col-md-1 col-lg-1"></div>
      </div>
    </div>
  </body>
</html>
