azkaban-developers

Merge pull request #140 from davidzchen/project-page-marker Add

2/5/2014 7:25:18 PM

Details

diff --git a/src/java/azkaban/webapp/servlet/velocity/projectpage.vm b/src/java/azkaban/webapp/servlet/velocity/projectpage.vm
index cd76ebd..52d4e37 100644
--- a/src/java/azkaban/webapp/servlet/velocity/projectpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/projectpage.vm
@@ -75,7 +75,8 @@
                   <a href="${context}/manager?project=${project.name}&flow=${flow.id}#executions" class="btn btn-info btn-xs">Executions</a>
                   <a href="${context}/manager?project=${project.name}&flow=${flow.id}#summary" class="btn btn-info btn-xs">Summary</a>
                 </div>
-			#end
+      #end
+                <span class="glyphicon glyphicon-chevron-down flow-expander-icon"></span>
                 <a href="${context}/manager?project=${project.name}&flow=${flow.id}">${flow.id}</a>
               </div>
               <div id="${flow.id}-child" class="panel-collapse panel-list collapse">
diff --git a/src/less/project.less b/src/less/project.less
index 34f3ddf..675dc30 100644
--- a/src/less/project.less
+++ b/src/less/project.less
@@ -64,6 +64,11 @@
 // Flow panel heading.
 .flow-expander {
   cursor: pointer;
+
+  .flow-expander-icon {
+    color: #9a9a9a;
+    margin-right: 5px;
+  }
 }
 
 .expanded-flow-job-list {
diff --git a/src/web/js/azkaban/view/project.js b/src/web/js/azkaban/view/project.js
index ccfeeb5..a63830a 100644
--- a/src/web/js/azkaban/view/project.js
+++ b/src/web/js/azkaban/view/project.js
@@ -50,6 +50,15 @@ azkaban.FlowTableView = Backbone.View.extend({
 		}
 		else if (target.loaded) {
 			$(targetExpanded).collapse('toggle');
+			var expander = $(target).children('.flow-expander-icon')[0];
+			if ($(expander).hasClass('glyphicon-chevron-down')) {
+				$(expander).removeClass('glyphicon-chevron-down');
+				$(expander).addClass('glyphicon-chevron-up');
+			}
+			else {
+				$(expander).removeClass('glyphicon-chevron-up');
+				$(expander).addClass('glyphicon-chevron-down');
+			}
 		}
 		else {
 			// projectName is available
@@ -65,6 +74,9 @@ azkaban.FlowTableView = Backbone.View.extend({
 				target.loading = false;
 				createJobListFunction(data, targetTBody);
 				$(targetExpanded).collapse('show');
+				var expander = $(target).children('.flow-expander-icon')[0];
+				$(expander).removeClass('glyphicon-chevron-down');
+				$(expander).addClass('glyphicon-chevron-up');
 			};
 			$.get(requestURL, requestData, successHandler, "json");
 		}
@@ -93,10 +105,10 @@ azkaban.FlowTableView = Backbone.View.extend({
 			if (execAccess) {
 				var hoverMenuDiv = document.createElement('div');
 				$(hoverMenuDiv).addClass('pull-right');
-        $(hoverMenuDiv).addClass('job-buttons');
+				$(hoverMenuDiv).addClass('job-buttons');
 				
 				var divRunJob = document.createElement('button');
-        $(divRunJob).attr('type', 'button');
+				$(divRunJob).attr('type', 'button');
 				$(divRunJob).addClass("btn");
 				$(divRunJob).addClass("btn-success");
 				$(divRunJob).addClass("btn-xs");
@@ -107,7 +119,7 @@ azkaban.FlowTableView = Backbone.View.extend({
 				$(hoverMenuDiv).append(divRunJob);
 				
 				var divRunWithDep = document.createElement("button");
-        $(divRunWithDep).attr('type', 'button');
+				$(divRunWithDep).attr('type', 'button');
 				$(divRunWithDep).addClass("btn");
 				$(divRunWithDep).addClass("btn-success");
 				$(divRunWithDep).addClass("btn-xs");
@@ -120,12 +132,12 @@ azkaban.FlowTableView = Backbone.View.extend({
 				$(li).append(hoverMenuDiv);
 			}
 			
-      var ida = document.createElement("a");
+			var ida = document.createElement("a");
 			$(ida).css("margin-left", level * 20);
-      $(ida).attr("href", requestURL + name);
-      $(ida).text(name);
+			$(ida).attr("href", requestURL + name);
+			$(ida).text(name);
 
-      $(li).append(ida);
+			$(li).append(ida);
 			$(innerTable).append(li);
 		}
 	},
@@ -140,7 +152,7 @@ azkaban.FlowTableView = Backbone.View.extend({
 		var currentTarget = evt.currentTarget;
 		$(".dependent").removeClass("dependent");
 		$(".dependency").removeClass("dependency");
-    this.highlightJob(currentTarget);
+		this.highlightJob(currentTarget);
 	},
 
 	highlightJob: function(currentTarget) {