executionspage.vm

212 lines | 7.382 kB Blame History Raw Download
#*
 * Copyright 2012 LinkedIn Corp.
 *
 * Licensed 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>

  #parse("azkaban/webapp/servlet/velocity/style.vm")
  #parse("azkaban/webapp/servlet/velocity/javascript.vm")
  <script type="text/javascript" src="${context}/js/azkaban/util/ajax.js"></script>
  <script type="text/javascript" src="${context}/js/azkaban/view/executions.js"></script>
  <script type="text/javascript" src="${context}/js/jquery/jquery.tablesorter.js"></script>
  <script type="text/javascript">
    var contextURL = "${context}";
    var currentTime = ${currentTime};
    var timezone = "${timezone}";
    var errorMessage = null;
    var successMessage = null;

    $(document).ready(function () {
      var jobTable = $("#executingJobs");
      jobTable.tablesorter();
    });
  </script>
</head>
<body>

  #set ($current_page="executing")
  #parse ("azkaban/webapp/servlet/velocity/nav.vm")

## Page header.

<div class="az-page-header">
  <div class="container-full">
    <h1><a href="${context}/executor">Executing Flows</a></h1>
  </div>
</div>

<div class="container-full">

  #parse ("azkaban/webapp/servlet/velocity/alerts.vm")

## Page Content

  <ul class="nav nav-tabs nav-sm" id="header-tabs">
    <li id="currently-running-view-link"><a href="#currently-running">Currently Running</a></li>
    <li id="recently-finished-view-link"><a href="#recently-finished">Recently Finished</a></li>
  </ul>

  <div class="row" id="currently-running-view">
    <div class="col-xs-12">
      <i>* Click column headers to sort.</i>
      <table id="executingJobs"
             class="table table-striped table-bordered table-hover table-condensed executions-table">
        <thead>
        <tr>
          <th>#</th>
          <th class="execid">Execution Id</th>
          <th>Executor Id</th>
          <th>Flow</th>
          <th>Project</th>
          <th class="user">User</th>
          <th class="user">Proxy</th>
          <th class="date">Start Time</th>
          <th class="date">End Time</th>
          <th class="elapse">Elapsed</th>
          <th class="status">Status</th>
          <th class="action">Action</th>
        </tr>
        </thead>
        <tbody>

          #if ( !$null.isNull(${runningFlows}))
            #foreach ($flow in $runningFlows)
            <tr>
              <td class="tb-name">
                $velocityCount
              </td>
              <td class="tb-name">
                <a href="${context}/executor?execid=${flow.getFirst().executionId}">${flow.getFirst().executionId}</a>
              </td>
              <td>
                #if (${flow.getSecond().isPresent()})
                  ${flow.getSecond().get().getId()}
                #else
                  -
                #end
              </td>
              <td><a
                  href="${context}/manager?project=$vmutils.getProjectName(${flow.getFirst().projectId})&flow=${flow.getFirst().flowId}">${flow.getFirst().flowId}</a>
              </td>
              <td>
                <a href="${context}/manager?project=$vmutils.getProjectName(${flow.getFirst().projectId})">$vmutils.getProjectName(${flow.getFirst().projectId})</a>
              </td>
              <td>${flow.getFirst().submitUser}</td>
              <td>${flow.getFirst().proxyUsers}</td>
              <td>$utils.formatDate(${flow.getFirst().startTime})</td>
              <td>$utils.formatDate(${flow.getFirst().endTime})</td>
              <td>$utils.formatDuration(${flow.getFirst().startTime}, ${flow.getFirst().endTime})</td>
              <td>
                <div
                    class="status ${flow.getFirst().status}">$utils.formatStatus(${flow.getFirst().status})</div>
              </td>
              <td>
                <button type="button" id="cancelbtn" class="btn btn-danger btn-sm"
                        onclick="killFlow(${flow.getFirst().executionId})">Kill
                </button>
              </td>
            </tr>
            #end
          #else
          <tr>
            <td colspan="10">No Executing Flows</td>
          </tr>
          #end
        </tbody>
      </table>
    </div><!-- /col-xs-12 -->
  </div><!-- /row -->

  <div class="row" id="recently-finished-view">
    <div class="col-xs-12">
      <i>* Click column headers to sort.</i>
      <table id="recentlyFinished"
             class="table table-striped table-bordered table-hover table-condensed executions-table">
        <thead>
        <tr>
          <th>#</th>
          <th class="execid">Execution Id</th>
          <th>Flow</th>
          <th>Project</th>
          <th class="user">User</th>
          <th class="user">Proxy</th>
          <th class="date">Start Time</th>
          <th class="date">End Time</th>
          <th class="elapse">Elapsed</th>
          <th class="status">Status</th>
          <th class="action">Action</th>
        </tr>
        </thead>
        <tbody>
          #if ( !$null.isNull(${recentlyFinished}))
            #foreach ($flow in $recentlyFinished)
            <tr>
              <td class="tb-name">
                $velocityCount
              </td>
              <td class="tb-name execId">
                <a href="${context}/executor?execid=${flow.executionId}">${flow.executionId}</a>
              </td>
              <td><a
                  href="${context}/manager?project=$vmutils.getProjectName(${flow.projectId})&flow=${flow.flowId}">${flow.flowId}</a>
              </td>
              <td>
                <a href="${context}/manager?project=$vmutils.getProjectName(${flow.projectId})">$vmutils.getProjectName(${flow.projectId})</a>
              </td>
              <td>${flow.submitUser}</td>
              <td>${flow.proxyUsers}</td>
              <td>$utils.formatDate(${flow.startTime})</td>
              <td>$utils.formatDate(${flow.endTime})</td>
              <td>$utils.formatDuration(${flow.startTime}, ${flow.endTime})</td>
              <td>
                <div class="status ${flow.status}">$utils.formatStatus(${flow.status})</div>
              </td>
              <td></td>
            </tr>
            #end
          #else
          <tr>
            <td colspan="10">No Recently Finished</td>
          </tr>
          #end
        </tbody>
      </table>
    </div><!-- /col-xs-12 -->
  </div><!-- /row -->
  <div class="modal" id="messageDialog">
    <div class="modal-dialog">
      <div class="modal-content">
        <div class="modal-header" id="messageTitle">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;
          </button>
          <h4 class="modal-title">Error</h4>
        </div>
        <div class="modal-body" id="messageDiv">
          <p id="messageBox"></p>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-primary" data-dismiss="modal"
                  onclick="window.location.reload(true);">Dismiss
          </button>
        </div>
      </div>
    </div>
  </div>
</div><!-- /container-full -->
</body>
</html>