azkaban-developers
Details
diff --git a/src/java/azkaban/webapp/servlet/ExecutorServlet.java b/src/java/azkaban/webapp/servlet/ExecutorServlet.java
index 188454b..309ffc8 100644
--- a/src/java/azkaban/webapp/servlet/ExecutorServlet.java
+++ b/src/java/azkaban/webapp/servlet/ExecutorServlet.java
@@ -714,6 +714,10 @@ public class ExecutorServlet extends LoginAbstractAzkabanServlet {
}
Map<String, Object> map = getExecutableFlowUpdateInfo(exFlow, lastUpdateTime);
+ map.put("status", exFlow.getStatus());
+ map.put("startTime", exFlow.getStartTime());
+ map.put("endTime", exFlow.getEndTime());
+ map.put("updateTime", exFlow.getUpdateTime());
ret.putAll(map);
}
src/web/js/azkaban/view/exflow.js 22(+13 -9)
diff --git a/src/web/js/azkaban/view/exflow.js b/src/web/js/azkaban/view/exflow.js
index ee70319..aac9afd 100644
--- a/src/web/js/azkaban/view/exflow.js
+++ b/src/web/js/azkaban/view/exflow.js
@@ -677,14 +677,18 @@ var updateStatus = function() {
"lastUpdateTime": updateTime
};
+ graphModel.set({"lastUpdateTime":updateTime})
+
var successHandler = function(data) {
console.log("data updated");
- updateTime = data.updateTime;
-
- updateGraph(oldData, data);
-
- graphModel.set({"update": data});
- graphModel.trigger("change:update");
+ if (data.updateTime) {
+ updateTime = data.updateTime;
+
+ updateGraph(oldData, data);
+
+ graphModel.set({"update": data});
+ graphModel.trigger("change:update");
+ }
};
ajaxCall(requestURL, requestData, successHandler);
}
@@ -893,9 +897,9 @@ $(function() {
else if (hash == "#log") {
flowTabView.handleLogLinkClick();
}
- else if (hash == "#stats") {
- flowTabView.handleStatsLinkClick();
- }
+ else if (hash == "#stats") {
+ flowTabView.handleStatsLinkClick();
+ }
}
else {
flowTabView.handleGraphLinkClick();
src/web/js/azkaban/view/flow-job.js 19(+10 -9)
diff --git a/src/web/js/azkaban/view/flow-job.js b/src/web/js/azkaban/view/flow-job.js
index acd3c02..6efed62 100644
--- a/src/web/js/azkaban/view/flow-job.js
+++ b/src/web/js/azkaban/view/flow-job.js
@@ -95,24 +95,25 @@ azkaban.JobListView = Backbone.View.extend({
}
},
handleStatusUpdate: function(evt) {
- var updateData = this.model.get("update");
- if (updateData.nodes) {
- this.changeStatuses(updateData);
+ var data = this.model.get("data");
+ var lastUpdateTime = this.model.get("lastUpdateTime");
+ if (data.nodes) {
+ this.changeStatuses(data, lastUpdateTime);
}
},
- changeStatuses: function(data) {
+ changeStatuses: function(data, lastUpdateTime) {
for (var i = 0; i < data.nodes.length; ++i) {
var node = data.nodes[i];
- if (node.status) {
+ if (lastUpdateTime <= 0 || lastUpdateTime < node.updateTime) {
var liElement = node.listElement;
var child = $(liElement).children("a");
$(child).removeClass(statusList.join(' '));
$(child).addClass(node.status);
- $(child).attr("title", node.status + " (" + node.type + ")");
+ $(child).attr("title", node.status + " (" + node.type + ")").tooltip('fixTitle');
}
- if (node.type == "flow") {
- this.changeStatuses(node);
+ if (node.nodes) {
+ this.changeStatuses(node, lastUpdateTime);
}
}
},
@@ -124,7 +125,7 @@ azkaban.JobListView = Backbone.View.extend({
//
// this.assignInitialStatus(self);
this.handleDisabledChange(self);
- this.changeStatuses(data);
+ this.changeStatuses(data, 0);
$("li.listElement > a").tooltip({delay: {show: 500, hide: 100}, placement: 'top'});
},
renderTree : function(el, data, prefix) {