azkaban-aplcache

Fixing update to side bar.

1/15/2014 3:15:37 AM

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);
 	}
 
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();
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) {