azkaban-uncached
Changes
src/web/js/azkaban.exflow.view.js 71(+71 -0)
Details
diff --git a/src/java/azkaban/webapp/servlet/velocity/executingflowpage.vm b/src/java/azkaban/webapp/servlet/velocity/executingflowpage.vm
index f8c4281..a0fe230 100644
--- a/src/java/azkaban/webapp/servlet/velocity/executingflowpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/executingflowpage.vm
@@ -22,7 +22,13 @@
#parse("azkaban/webapp/servlet/velocity/javascript.vm")
<script type="text/javascript" src="${context}/js/moment.min.js"></script>
- <script type="text/javascript" src="${context}/js/bootstrap-datetimepicker.min.js"></script>
+ <script type="text/javascript" src="${context}/js/bootstrap-datetimepicker.min.js"></script>
+
+ <script type="text/javascript" src="${context}/js/dust-full-2.2.3.min.js"></script>
+ <script type="text/javascript" src="${context}/js/flowsummary.js"></script>
+ <script type="text/javascript" src="${context}/js/flowsummary-no-data.js"></script>
+ <script type="text/javascript" src="${context}/js/flowsummary-last-run.js"></script>
+
<script type="text/javascript" src="${context}/js/azkaban.common.utils.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.date.utils.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.context.menu.js"></script>
@@ -30,6 +36,7 @@
<script type="text/javascript" src="${context}/js/azkaban.job.status.utils.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.layout.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.exflow.view.js"></script>
+ <script type="text/javascript" src="${context}/js/azkaban.flow.stats.view.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.flow.job.view.js"></script>
<script type="text/javascript" src="${context}/js/azkaban.svg.graph.view.js"></script>
<script type="text/javascript" src="${context}/js/svgNavigate.js"></script>
@@ -104,7 +111,7 @@
<li id="graphViewLink"><a href="#graph">Graph</a></li>
<li id="jobslistViewLink"><a href="#jobslist">Job List</a></li>
<li id="flowLogViewLink"><a href="#log">Flow Log</a></li>
- <li id="statsLink"><a href="#stats">Stats</a></li>
+ <li id="statsViewLink"><a href="#stats">Stats</a></li>
<li class="nav-button pull-right"><button type="button" id="pausebtn" class="btn btn-primary">Pause</button></li>
<li class="nav-button pull-right"><button type="button" id="resumebtn" class="btn btn-primary">Resume</button></li>
<li class="nav-button pull-right"><button type="button" id="cancelbtn" class="btn btn-danger">Cancel</button></li>
@@ -166,7 +173,13 @@
## Stats view.
<div class="container-full" id="statsView">
- <div class="row" id="stats-view-content">
+ <div class="row" id="stats-view-content">
+ <div class="col-lg-12" id="flow-stats-container">
+ <div class="alert alert-default">
+ <h4>No stats available</h4>
+ <p>Stats for this flow execution are not available.</p>
+ </div>
+ </div>
</div><!-- /.row -->
</div><!-- /.container-fill -->
src/web/js/azkaban.exflow.view.js 71(+71 -0)
diff --git a/src/web/js/azkaban.exflow.view.js b/src/web/js/azkaban.exflow.view.js
index 4ac616b..6c1a76a 100644
--- a/src/web/js/azkaban.exflow.view.js
+++ b/src/web/js/azkaban.exflow.view.js
@@ -89,6 +89,7 @@ azkaban.FlowTabView = Backbone.View.extend({
"click #graphViewLink": "handleGraphLinkClick",
"click #jobslistViewLink": "handleJobslistLinkClick",
"click #flowLogViewLink": "handleLogLinkClick",
+ "click #statsViewLink": "handleStatsLinkClick",
"click #cancelbtn": "handleCancelClick",
"click #executebtn": "handleRestartClick",
"click #pausebtn": "handlePauseClick",
@@ -123,30 +124,49 @@ azkaban.FlowTabView = Backbone.View.extend({
$("#jobslistViewLink").removeClass("active");
$("#graphViewLink").addClass("active");
$("#flowLogViewLink").removeClass("active");
+ $("#statsViewLink").removeClass("active");
$("#jobListView").hide();
$("#graphView").show();
$("#flowLogView").hide();
+ $("#statsView").hide();
},
handleJobslistLinkClick: function() {
$("#graphViewLink").removeClass("active");
$("#jobslistViewLink").addClass("active");
$("#flowLogViewLink").removeClass("active");
+ $("#statsViewLink").removeClass("active");
$("#graphView").hide();
$("#jobListView").show();
$("#flowLogView").hide();
+ $("#statsView").hide();
},
handleLogLinkClick: function() {
$("#graphViewLink").removeClass("active");
$("#jobslistViewLink").removeClass("active");
$("#flowLogViewLink").addClass("active");
+ $("#statsViewLink").removeClass("active");
$("#graphView").hide();
$("#jobListView").hide();
$("#flowLogView").show();
+ $("#statsView").hide();
+ },
+
+ handleStatsLinkClick: function() {
+ $("#graphViewLink").removeClass("active");
+ $("#jobslistViewLink").removeClass("active");
+ $("#flowLogViewLink").removeClass("active");
+ $("#statsViewLink").addClass("active");
+
+ $("#graphView").hide();
+ $("#jobListView").hide();
+ $("#flowLogView").hide();
+ statsView.show();
+ $("#statsView").show();
},
handleFlowStatusChange: function() {
@@ -566,6 +586,40 @@ azkaban.FlowLogView = Backbone.View.extend({
}
});
+var statsView;
+azkaban.StatsView = Backbone.View.extend({
+ events: {
+ },
+
+ initialize: function(settings) {
+ this.model.bind('change:graph', this.statusUpdate, this);
+ this.model.bind('change:update', this.statusUpdate, this);
+ this.model.bind('render', this.render, this);
+ this.status = null;
+ this.rendered = false;
+ },
+
+ statusUpdate: function(evt) {
+ var data = this.model.get('data');
+ this.status = data.status;
+ },
+
+ show: function() {
+ this.model.trigger("render");
+ },
+
+ render: function(evt) {
+ if (this.rendered == true) {
+ return;
+ }
+ if (this.status != 'SUCCEEDED') {
+ return;
+ }
+ flowStatsView.show(execId);
+ this.rendered = true;
+ }
+});
+
var graphModel;
azkaban.GraphModel = Backbone.Model.extend({});
@@ -721,6 +775,9 @@ var attemptRightClick = function(event) {
return false;
}
+var flowStatsView;
+var flowStatsModel;
+
$(function() {
var selected;
@@ -757,6 +814,17 @@ $(function() {
el: $('#flow-status'),
model: graphModel
});
+
+ flowStatsModel = new azkaban.FlowStatsModel();
+ flowStatsView = new azkaban.FlowStatsView({
+ el: $('#stats-view-content'),
+ model: flowStatsModel
+ });
+
+ statsView = new azkaban.StatsView({
+ el: $('#statsView'),
+ model: graphModel
+ });
executionListView = new azkaban.ExecutionListView({
el: $('#jobListView'),
@@ -807,6 +875,9 @@ $(function() {
else if (hash == "#log") {
flowTabView.handleLogLinkClick();
}
+ else if (hash == "#stats") {
+ flowTabView.handleStatsLinkClick();
+ }
}
else {
flowTabView.handleGraphLinkClick();