<!DOCTYPE HTML>
<html lang="en">
<head>
<!--
   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.
-->
<meta charset="utf-8" />
<title>Apache Falcon</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="description" content="" />
<meta name="author" content="" />
<link href="css/bootstrap.min.css" type="text/css" rel="stylesheet" />
<link href="css/falcon.css" type="text/css" rel="stylesheet" />
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="img/falcon-144.png" />
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="img/falcon-114.png" />
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="img/falcon-72.png" />
<link rel="apple-touch-icon-precomposed" href="img/falcon-57.png" />
<link rel="shortcut icon" href="img/favicon.png" />
</head>
<body>
<div class="navbar navbar-inverse falcon-docs-nav">
<div class="navbar-header"><button type="button" class="navbar-toggle" data-toggle="collapse" data-target=
".navbar-collapse"></button> <a class="navbar-brand falcon-brand">Apache Falcon</a></div>
<div class="navbar-collapse navbar-right collapse">
<ul class="nav navbar-nav">
<li><a class="btn-entity-list" href="index.html?type=feed">Data sets</a></li>
<li><a class="btn-entity-list" href="index.html?type=process">Processes</a></li>
<li><a class="btn-entity-list" href="index.html?type=cluster">Clusters</a></li>
</ul>
</div>
</div>
<div class="container">

<h3 class="link-icons entity-title" id="entity-title"></h3>
<br />
<div id="entity-info-container">
    <div id="alert-panel">
        <div class="alert alert-danger">
            <button type="button" class="close" onclick="$('#alert-panel').hide();">&times;</button>
            <div class="alert-body" id="alert-panel-body"></div>
        </div>
    </div>
<div class="panel panel-default" id="panel-instance" style="display:none">
<div class="panel-heading">Instances</div>
<div class="panel-body"></div>
</div>
<div class="panel panel-default" id="panel-definition">
<div class="panel-heading">Definition</div>
<div class="panel-body"> <textarea class="form-control" id="entity-def-textarea"></textarea></div>
</div>
<div class="panel panel-default" id="panel-dependency" style="display:none">
<div class="panel-heading">
Dependency
</div>
<div class="panel-body">
<div id="dep-view-list" style="display:none"></div>
<div id="dep-view-graph" style="display:none"></div>
</div>
<div class="panel-footer">
<div class="btn-group">
<button class="btn btn-primary" id="btn-dep-list">List view</button>
<button class="btn btn-default" id="btn-dep-graph">Graph view</button>
</div>
</div>
</div>
</div>

<div class="modal fade" id="lineage-modal" tabindex="-1" role="dialog" aria-hidden="true">
  <div class="modal-dialog" style="width:900px !important">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
        <h4 class="modal-title" id="myModalLabel">Lineage information</h4>
      </div>
      <div class="modal-body">
        <div>
          <h4><small>Legends</small></h4>
          <ul class="lineage-legend">
            <li class="lineage-legend-feed-inst">Feed instance</li>
            <li class="lineage-legend-feed-inst lineage-legend-terminal">Feed instance (terminal)</li>
            <li class="lineage-legend-process-inst">Process instance</li>
            <li class="lineage-legend-process-inst lineage-legend-terminal">Process instance (terminal)</li>
          </ul>
        </div>
        <div style="width:95%; overflow:scroll;">
          <center>
            <svg id="lineage-graph" width="920" height="600"></svg>
          </center>
        </div>
        <div>
          <div id="lineage-info-panel"></div>
        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

<hr />
<div class="footer">&#169; Apache Falcon, 2013</div>
</div>
<!-- /container -->
<script id="dependency-tmpl" type="text/x-dust-template">
<table class="table table-bordered">
  <tbody>
    {#entity}
    <tr><td><a class="link-icons entity-link-{type}" href="entity.html?type={type}&id={name}">{name}</a></td></tr>
    {/entity}
  </tbody>
</table>
</script><script id="instance-tmpl" type="text/x-dust-template">
<table class="table">
  <tbody>
    {#instances}
    <tr>
      <td><span class="instance-icons instance-link-{status}"></span> {instance}</td>
      <td style="width: 6em; text-align: right">
        {@if cond="'{status}' === 'SUCCEEDED'"}
        <a class="lineage-href" data-instance-name="{instance}">Lineage</a>&nbsp;
        {/if}
        {?logFile}<a href="{logFile}" target="_blank">Logs</a>{/logFile}
        {?details}<a style="cursor: pointer" class="instance-hdfs-log" data-toggle="tooltip" data-title="<div style='word-break:break-all;'>Log available at {details}</div>" data-html="true" data-trigger="click"><span class="glyphicon glyphicon-export"></span></a>{/details}
      </td>
    </tr>
    {/instances}
  </tbody>
</table>
</script>

<script type="text/x-dust-template" id="lineage-info-tmpl">
{#results}
<div class="row">
{#userWorkflowName}<div class="col-md-3"><h4><small>User workflow</small></h4>{.}</div>{/userWorkflowName}
{#userWorkflowEngine}<div class="col-md-3"><h4><small>User workflow engine</small></h4>{.}</div>{/userWorkflowEngine}
{#publisher}<div class="col-md-3"><h4><small>Publisher</small></h4>{.}</div>{/publisher}
{#runs-on}<div class="col-md-3"><h4><small>Runs on</small></h4>{.}</div>{/runs-on}
{#owner}<div class="col-md-3"><h4><small>Owner</small></h4>{.}</div>{/owner}
{#owned-by}<div class="col-md-3"><h4><small>Owned by</small></h4>{.}</div>{/owned-by}
</div>
{/results}
</script>

<script src="js/jquery-1.11.0.min.js" type="text/javascript">
</script><script src="js/bootstrap.min.js" type="text/javascript">
</script><script src="js/dust-full-2.0.0.min.js" type="text/javascript">
</script><script src="js/dust-helpers-1.2.0.min.js" type="text/javascript">
</script><script src="js/d3.v3.min.js" charset="utf-8">
</script><script src="js/dagre.min.js" type="text/javascript">
</script><script src="js/falcon.js" type="text/javascript">
</script><script src="js/falcon-entity.js" type="text/javascript">
</script><script src="js/falcon-lineage.js" type="text/javascript">
</script>
</body>
</html>
