diff --git a/azkaban-web-server/src/main/resources/azkaban/webapp/servlet/velocity/executionspage.vm b/azkaban-web-server/src/main/resources/azkaban/webapp/servlet/velocity/executionspage.vm
index b36bfea..479b09c 100644
--- a/azkaban-web-server/src/main/resources/azkaban/webapp/servlet/velocity/executionspage.vm
+++ b/azkaban-web-server/src/main/resources/azkaban/webapp/servlet/velocity/executionspage.vm
@@ -20,7 +20,7 @@
#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">
@@ -108,7 +108,7 @@
<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></td>
+ <td><button type="button" id="cancelbtn" class="btn btn-danger btn-sm" onclick="killFlow(${flow.getFirst().executionId})">Kill</button></td>
</tr>
#end
#else
@@ -171,7 +171,22 @@
</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">×</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>
diff --git a/azkaban-web-server/src/web/js/azkaban/view/executions.js b/azkaban-web-server/src/web/js/azkaban/view/executions.js
index 2724d7c..28f0757 100644
--- a/azkaban-web-server/src/web/js/azkaban/view/executions.js
+++ b/azkaban-web-server/src/web/js/azkaban/view/executions.js
@@ -15,7 +15,26 @@
*/
$.namespace('azkaban');
-
+function killFlow(execId) {
+ var requestURL=document.location.href.replace("#currently-running","");
+ var requestData = {"execid": execId, "ajax": "cancelFlow"};
+ var successHandler = function(data) {
+ console.log("cancel clicked");
+ if (data.error) {
+ showDialog("Error", data.error);
+ }
+ else {
+ showDialog("Cancelled", "Flow has been cancelled.");
+
+ }
+ };
+ ajaxCall(requestURL, requestData, successHandler);
+}
+var showDialog = function(title, message) {
+ $('#messageTitle').text(title);
+ $('#messageBox').text(message);
+ $('#messageDialog').modal();
+}
var executionsTabView;
azkaban.ExecutionsTabView = Backbone.View.extend({
events: {