azkaban-uncached

Details

diff --git a/src/java/azkaban/webapp/servlet/velocity/scheduledflowcalendarpage.vm b/src/java/azkaban/webapp/servlet/velocity/scheduledflowcalendarpage.vm
index 621dc5f..6db76fa 100644
--- a/src/java/azkaban/webapp/servlet/velocity/scheduledflowcalendarpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/scheduledflowcalendarpage.vm
@@ -17,18 +17,15 @@
 <!DOCTYPE html> 
 <html>
 	<head>
-#parse( "azkaban/webapp/servlet/velocity/style.vm" )
+
+#parse ("azkaban/webapp/servlet/velocity/style2.vm")
+#parse ("azkaban/webapp/servlet/velocity/javascript.vm")
+
 		<link rel="stylesheet" type="text/css" href="${context}/css/jquery-ui-1.10.1.custom.css" />
 		<link rel="stylesheet" type="text/css" href="${context}/css/jquery-ui.css" />
 		
-		<script type="text/javascript" src="${context}/js/jquery/jquery-1.9.1.js"></script>    
 		<script type="text/javascript" src="${context}/js/jqueryui/jquery-ui-1.10.1.custom.js"></script>
-		<script type="text/javascript" src="${context}/js/underscore-1.4.4-min.js"></script>
-		<script type="text/javascript" src="${context}/js/namespace.js"></script>
-		<script type="text/javascript" src="${context}/js/backbone-0.9.10-min.js"></script>
-		<script type="text/javascript" src="${context}/js/jquery.simplemodal-1.4.4.js"></script>
 		<script type="text/javascript" src="${context}/js/jquery/jquery.svg.min.js"></script>    
-		
 		<script type="text/javascript" src="${context}/js/jqueryui/jquery-ui-timepicker-addon.js"></script> 
 		<script type="text/javascript" src="${context}/js/jqueryui/jquery-ui-sliderAccess.js"></script>
 		<script type="text/javascript" src="${context}/js/azkaban.table.sort.js"></script>
@@ -46,39 +43,58 @@
 		<link rel="stylesheet" type="text/css" href="${context}/css/jquery.svg.css" />
 	</head>
 	<body>
-#set($current_page="schedule")
-#parse( "azkaban/webapp/servlet/velocity/nav.vm" )
-		<div class="messaging"><p id="messageClose">X</p><p id="message"></p></div>  
 
-		<div class="content">
-		
-#if($errorMsg)
-		<div class="box-error-message">$errorMsg</div>
+#set ($current_page="schedule")
+#parse ("azkaban/webapp/servlet/velocity/nav2.vm")
+
+    <div class="container">
+
+## Page error or success message.
+
+#if ($errorMsg)
+			<div class="panel panel-danger">
+				<div class="panel-heading">Error</div>
+				<div class="panel-body">
+					$errorMsg
+				</div>
+			</div>
 #else
-#if($error_message != "null")
-		<div class="box-error-message">$error_message</div>
-#elseif($success_message != "null")
-		<div class="box-success-message">$success_message</div>
+	#if ($error_message != "null")
+			<div class="alert alert-danger">$error_message</div>
+	#elseif ($success_message != "null")
+			<div class="alert alert-success">$success_message</div>
+	#end
 #end
-#end		
-		
-		<div id="all-scheduledFlows-content">
-			<div class="section-hd">
-				<h2>Scheduled Flows</h2>
-			</div>
-		</div>
-		
-		<div class="scheduledFlows">
-			<span class="nav-prev-week btn1" style="margin: 20px; margin-left: 50px;"><a>Previous Week</a></span>
-			<span class="nav-this-week btn1" style="margin: 20px;"><a>Today</a></span>
-			<span class="nav-next-week btn1" style="margin: 20px; margin-right: 50px;"><a>Next Week</a></span>
-			<div id="svgDivCustom">
-			
+
+	## Alert message
+
+			<div class="alert alert-dismissable alert-messaging" id="messaging">
+				<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
+				<p id="messaging-message"></p>
 			</div>
 		</div>
-		</div>
-		
-		<div id="contextMenu">
-		</div>
+
+    <div class="az-page-header">
+      <div class="container">
+        <h1>Scheduled Flows</h1>
+      </div>
+    </div>
+
+    <div class="container">
+      <div class="row">
+        <div class="col-lg-12">
+          <div class="pull-right">
+            <button type="button" class="nav-prev-week btn btn-default">Previous Week</button>
+            <button type="button" class="nav-this-week btn btn-default">Today</button>
+            <button type="button" class="nav-next-week btn btn-default">Next Week</button>
+          </div>
+          <div id="svgDivCustom"></div>
+        </div>
+      </div>
+      
+      <div id="contextMenu"></div>
+
+#parse ("azkaban/webapp/servlet/velocity/footer.vm")
+    </div>
 	</body>
 </html>
diff --git a/src/java/azkaban/webapp/servlet/velocity/triggerspage.vm b/src/java/azkaban/webapp/servlet/velocity/triggerspage.vm
index 6ccb348..73f0c5c 100644
--- a/src/java/azkaban/webapp/servlet/velocity/triggerspage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/triggerspage.vm
@@ -16,18 +16,15 @@
 
 <!DOCTYPE html> 
 <html>
-	<head>
-#parse( "azkaban/webapp/servlet/velocity/style.vm" )
+	<head lang="en">
+
+#parse("azkaban/webapp/servlet/velocity/style2.vm")
+#parse("azkaban/webapp/servlet/velocity/javascript.vm")
+
 		<link rel="stylesheet" type="text/css" href="${context}/css/jquery-ui-1.10.1.custom.css" />
 		<link rel="stylesheet" type="text/css" href="${context}/css/jquery-ui.css" />
 		
-		<script type="text/javascript" src="${context}/js/jquery/jquery-1.9.1.js"></script>    
 		<script type="text/javascript" src="${context}/js/jqueryui/jquery-ui-1.10.1.custom.js"></script>
-		<script type="text/javascript" src="${context}/js/underscore-1.4.4-min.js"></script>
-		<script type="text/javascript" src="${context}/js/namespace.js"></script>
-		<script type="text/javascript" src="${context}/js/backbone-0.9.10-min.js"></script>
-		<script type="text/javascript" src="${context}/js/jquery.simplemodal-1.4.4.js"></script>
-		
 		<script type="text/javascript" src="${context}/js/jqueryui/jquery-ui-timepicker-addon.js"></script> 
 		<script type="text/javascript" src="${context}/js/jqueryui/jquery-ui-sliderAccess.js"></script>
 		<script type="text/javascript" src="${context}/js/azkaban.table.sort.js"></script>
@@ -42,58 +39,78 @@
 		</script>
 	</head>
 	<body>
-#set($current_page="triggers")
-#parse( "azkaban/webapp/servlet/velocity/nav.vm" )
-		<div class="messaging"><p id="messageClose">X</p><p id="message"></p></div>  
 
-		<div class="content">
-		
-#if($errorMsg)
-		<div class="box-error-message">$errorMsg</div>
-#else
-#if($error_message != "null")
-		<div class="box-error-message">$error_message</div>
-#elseif($success_message != "null")
-		<div class="box-success-message">$success_message</div>
-#end
-#end		
-		
-			<div id="all-triggers-content">
-				<div class="section-hd">
-					<h2>All Triggers</h2>
-				</div>
+#set ($current_page="triggers")
+#parse ("azkaban/webapp/servlet/velocity/nav2.vm")
+
+    <div class="container">
+
+## Alert message
+
+			<div class="alert alert-dismissable alert-messaging" id="messaging">
+				<button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>
+				<p id="messaging-message"></p>
 			</div>
-			
-			<div class="triggers">
-				<table id="triggersTbl">
-					<thead>
-						<tr>
-							<th>ID</th>
-							<th>Source</th>
-							<th>Submitted By</th>
-							<th>Description</th>
-							<th>Status</th>
-							<!--th colspan="2" class="action ignoresort">Action</th-->
-						</tr>
-					</thead>
-					<tbody>
-						#if($triggers)
-#foreach($trigger in $triggers)
-						<tr class="row" >
 
-							<td>${trigger.triggerId}</td>
-							<td>${trigger.source}</td>
-							<td>${trigger.submitUser}</td>
-							<td>${trigger.getDescription()}</td>
-							<td>${trigger.getStatus()}</td>
-							<!--td><button id="expireTriggerBtn" onclick="expireTrigger(${trigger.triggerId})" >Expire Trigger</button></td-->
-						</tr>
+## Page error or success message.
+
+#if ($errorMsg)
+			<div class="panel panel-danger">
+				<div class="panel-heading">Error</div>
+				<div class="panel-body">
+					$errorMsg
+				</div>
+			</div>
+#else
+	#if ($error_message != "null")
+			<div class="alert alert-danger">$error_message</div>
+	#elseif ($success_message != "null")
+			<div class="alert alert-success">$success_message</div>
+	#end
 #end
+		</div>
+
+    <div class="az-page-header">
+      <div class="container">
+        <h1>All Triggers</h1>
+      </div>
+    </div>
+			
+    <div class="container">
+			<div class="row">
+        <div class="col-lg-12">
+          <table id="triggersTbl" class="table table-striped table-bordered table-condensed table-hover">
+            <thead>
+              <tr>
+                <th>ID</th>
+                <th>Source</th>
+                <th>Submitted By</th>
+                <th>Description</th>
+                <th>Status</th>
+                <!--th colspan="2" class="action ignoresort">Action</th-->
+              </tr>
+            </thead>
+            <tbody>
+#if($triggers)
+  #foreach($trigger in $triggers)
+              <tr class="row">
+                <td>${trigger.triggerId}</td>
+                <td>${trigger.source}</td>
+                <td>${trigger.submitUser}</td>
+                <td>${trigger.getDescription()}</td>
+                <td>${trigger.getStatus()}</td>
+                <!--td><button id="expireTriggerBtn" onclick="expireTrigger(${trigger.triggerId})" >Expire Trigger</button></td-->
+              </tr>
+  #end
 #else
-						<tr><td class="last">No Trigger Found</td></tr>
+              <tr><td class="last">No Trigger Found</td></tr>
 #end
-					</tbody>
-				</table>
-			</div>
+            </tbody>
+          </table>
+        </div>
+      </div>
+
+#parse ("azkaban/webapp/servlet/velocity/footer.vm")
+    </div>
 	</body>
 </html>
diff --git a/src/java/azkaban/webapp/servlet/velocity/viewer.vm b/src/java/azkaban/webapp/servlet/velocity/viewer.vm
index 7d18bee..9887bb9 100644
--- a/src/java/azkaban/webapp/servlet/velocity/viewer.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/viewer.vm
@@ -17,12 +17,9 @@
 <!DOCTYPE html> 
 <html>
 	<head>
-#parse( "azkaban/webapp/servlet/velocity/style.vm" )
-		<script type="text/javascript" src="${context}/js/jquery/jquery-1.9.1.js"></script>    
-		<script type="text/javascript" src="${context}/js/underscore-1.4.4-min.js"></script>
-		<script type="text/javascript" src="${context}/js/namespace.js"></script>
-		<script type="text/javascript" src="${context}/js/backbone-0.9.10-min.js"></script>
-		<script type="text/javascript" src="${context}/js/jquery.simplemodal-1.4.4.js"></script>
+
+#parse("azkaban/webapp/servlet/velocity/style2.vm")
+#parse("azkaban/webapp/servlet/velocity/javascript.vm")
 
 		<script type="text/javascript" src="${context}/js/azkaban.nav.js"></script>
 		<script type="text/javascript">
@@ -41,22 +38,29 @@
 		</style>
 	</head>
 	<body>
-#set($current_page="viewer")
 
-#parse( "azkaban/webapp/servlet/velocity/nav.vm" )
-		<div class="content">
-		
-		#if($errorMsg)
-                	<div class="box-error-message">$errorMsg</div>
-		#else
-			#if($error_message != "null")
-	                <div class="box-error-message">$error_message</div>
-			#elseif($success_message != "null")
-        	        <div class="box-success-message">$success_message</div>
-			#end
-		#end
+#set ($current_page="viewer")
+#parse ("azkaban/webapp/servlet/velocity/nav2.vm")
+
+    <div class="container">
+
+#if ($errorMsg)
+			<div class="panel panel-danger">
+				<div class="panel-heading">Error</div>
+				<div class="panel-body">
+					$errorMsg
+				</div>
+			</div>
+#else
+	#if ($error_message != "null")
+			<div class="alert alert-danger">$error_message</div>
+	#elseif ($success_message != "null")
+			<div class="alert alert-success">$success_message</div>
+	#end
+#end
 
-#parse($viewervm)
+#parse ($viewervm)
+#parse ("azkaban/webapp/servlet/velocity/footer.vm")
 		
 		</div>
 	</body>
diff --git a/src/web/js/azkaban.triggers.view.js b/src/web/js/azkaban.triggers.view.js
index 3b9dfc7..83771e9 100644
--- a/src/web/js/azkaban.triggers.view.js
+++ b/src/web/js/azkaban.triggers.view.js
@@ -19,65 +19,56 @@ $.namespace('azkaban');
 function expireTrigger(triggerId) {
 	var triggerURL = contextURL + "/triggers"
 	var redirectURL = contextURL + "/triggers"
-	$.post(
-			triggerURL,
-			{"ajax":"expireTrigger", "triggerId":triggerId},
-			function(data) {
-				if (data.error) {
-//                 alert(data.error)
-					$('#errorMsg').text(data.error);
-				}
-				else {
-// 		 alert("Schedule "+schedId+" removed!")
-					window.location = redirectURL;
-				}
-			},
-			"json"
-	)
+	var requestData = {"ajax": "expireTrigger", "triggerId": triggerId};
+	var successHandler = function(data) {
+    if (data.error) {
+      //alert(data.error)
+      $('#errorMsg').text(data.error);
+    }
+    else {
+      //alert("Schedule "+schedId+" removed!")
+      window.location = redirectURL;
+    }
+  };
+	$.post(triggerURL, requestData, successHandler, "json");
 }
 
 function removeSched(scheduleId) {
 	var scheduleURL = contextURL + "/schedule"
 	var redirectURL = contextURL + "/schedule"
-	$.post(
-			scheduleURL,
-			{"action":"removeSched", "scheduleId":scheduleId},
-			function(data) {
-				if (data.error) {
-//                 alert(data.error)
-					$('#errorMsg').text(data.error);
-				}
-				else {
-// 		 alert("Schedule "+schedId+" removed!")
-					window.location = redirectURL;
-				}
-			},
-			"json"
-	)
+	var requestData = {"action": "removeSched", "scheduleId": scheduleId};
+	var successHandler = function(data) {
+    if (data.error) {
+      //alert(data.error)
+      $('#errorMsg').text(data.error);
+    }
+    else {
+      //alert("Schedule "+schedId+" removed!")
+      window.location = redirectURL;
+    }
+  };
+	$.post(scheduleURL, requestData, successHandler, "json");
 }
 
 function removeSla(scheduleId) {
 	var scheduleURL = contextURL + "/schedule"
 	var redirectURL = contextURL + "/schedule"
-	$.post(
-			scheduleURL,
-			{"action":"removeSla", "scheduleId":scheduleId},
-			function(data) {
-				if (data.error) {
-//                 alert(data.error)
-					$('#errorMsg').text(data.error)
-				}
-				else {
-// 		 alert("Schedule "+schedId+" removed!")
-					window.location = redirectURL
-				}
-			},
-			"json"
-	)
+  var requestData = {"action": "removeSla", "scheduleId": scheduleId};
+	var successHandler = function(data) {
+    if (data.error) {
+      //alert(data.error)
+      $('#errorMsg').text(data.error)
+    }
+    else {
+      //alert("Schedule "+schedId+" removed!")
+      window.location = redirectURL
+    }
+  };
+	$.post(scheduleURL, requestData, successHandler, "json");
 }
 
 azkaban.ChangeSlaView = Backbone.View.extend({
-	events : {
+	events: {
 		"click" : "closeEditingTarget",
 		"click #set-sla-btn": "handleSetSla",	
 		"click #remove-sla-btn": "handleRemoveSla",
@@ -85,10 +76,11 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 		"click .modal-close": "handleSlaCancel",
 		"click #addRow": "handleAddRow"
 	},
-	initialize: function(setting) {
-
+	
+  initialize: function(setting) {
 	},
-	handleSlaCancel: function(evt) {
+	
+  handleSlaCancel: function(evt) {
 		console.log("Clicked cancel button");
 		var scheduleURL = contextURL + "/schedule";
 
@@ -98,11 +90,11 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 		var tFlowRules = document.getElementById("flowRulesTbl").tBodies[0];
 		var rows = tFlowRules.rows;
 		var rowLength = rows.length
-		for(var i = 0; i < rowLength-1; i++) {
+		for (var i = 0; i < rowLength-1; i++) {
 			tFlowRules.deleteRow(0);
 		}
-		
 	},
+
 	initFromSched: function(scheduleId, flowName) {
 		this.scheduleId = scheduleId;
 		
@@ -117,138 +109,123 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 		var ruleBoxOptions = ["SUCCESS", "FINISH"];
 		this.ruleBoxOptions = ruleBoxOptions;
 		
-		var fetchScheduleData = {"scheduleId": this.scheduleId, "ajax":"slaInfo"};
-		
-		$.get(
-				this.scheduleURL,
-				fetchScheduleData,
-				function(data) {
-					if (data.error) {
-						alert(data.error);
-					}
-					else {
-						if (data.slaEmails) {
-							$('#slaEmails').val(data.slaEmails.join());
-						}
-						
-						var allJobNames = data.allJobNames;
-						
-						indexToName[0] = "";
-						nameToIndex[flowName] = 0;
-						indexToText[0] = "flow " + flowName;
-						for(var i = 1; i <= allJobNames.length; i++) {
-							indexToName[i] = allJobNames[i-1];
-							nameToIndex[allJobNames[i-1]] = i;
-							indexToText[i] = "job " + allJobNames[i-1];
-						}
-						
-						
-						
-						
-						
-						// populate with existing settings
-						if(data.settings) {
-							
-							var tFlowRules = document.getElementById("flowRulesTbl").tBodies[0];
-							
-							for(var setting in data.settings) {
-								var rFlowRule = tFlowRules.insertRow(0);
-								
-								var cId = rFlowRule.insertCell(-1);
-								var idSelect = document.createElement("select");
-								for(var i in indexToName) {
-									idSelect.options[i] = new Option(indexToText[i], indexToName[i]);
-									if(data.settings[setting].id == indexToName[i]) {
-										idSelect.options[i].selected = true;
-									}
-								}								
-								cId.appendChild(idSelect);
-								
-								var cRule = rFlowRule.insertCell(-1);
-								var ruleSelect = document.createElement("select");
-								for(var i in ruleBoxOptions) {
-									ruleSelect.options[i] = new Option(ruleBoxOptions[i], ruleBoxOptions[i]);
-									if(data.settings[setting].rule == ruleBoxOptions[i]) {
-										ruleSelect.options[i].selected = true;
-									}
-								}
-								cRule.appendChild(ruleSelect);
-								
-								var cDuration = rFlowRule.insertCell(-1);
-								var duration = document.createElement("input");
-								duration.type = "text";
-								duration.setAttribute("class", "durationpick");
-								var rawMinutes = data.settings[setting].duration;
-								var intMinutes = rawMinutes.substring(0, rawMinutes.length-1);
-								var minutes = parseInt(intMinutes);
-								var hours = Math.floor(minutes / 60);
-								minutes = minutes % 60;
-								duration.value = hours + ":" + minutes;
-								cDuration.appendChild(duration);
+		var fetchScheduleData = {"scheduleId": this.scheduleId, "ajax": "slaInfo"};
+    var successHandler = function(data) {
+      if (data.error) {
+        alert(data.error);
+        return;
+      }
+      if (data.slaEmails) {
+        $('#slaEmails').val(data.slaEmails.join());
+      }
+      
+      var allJobNames = data.allJobNames;
+      
+      indexToName[0] = "";
+      nameToIndex[flowName] = 0;
+      indexToText[0] = "flow " + flowName;
+      for (var i = 1; i <= allJobNames.length; i++) {
+        indexToName[i] = allJobNames[i-1];
+        nameToIndex[allJobNames[i-1]] = i;
+        indexToText[i] = "job " + allJobNames[i-1];
+      }
+      
+      // populate with existing settings
+      if (data.settings) {
+        $('.durationpick').timepicker({hourMax: 99});
+        return;
+      }
+
+      var tFlowRules = document.getElementById("flowRulesTbl").tBodies[0];
+      for (var setting in data.settings) {
+        var rFlowRule = tFlowRules.insertRow(0);
+        
+        var cId = rFlowRule.insertCell(-1);
+        var idSelect = document.createElement("select");
+        for (var i in indexToName) {
+          idSelect.options[i] = new Option(indexToText[i], indexToName[i]);
+          if (data.settings[setting].id == indexToName[i]) {
+            idSelect.options[i].selected = true;
+          }
+        }								
+        cId.appendChild(idSelect);
+        
+        var cRule = rFlowRule.insertCell(-1);
+        var ruleSelect = document.createElement("select");
+        for (var i in ruleBoxOptions) {
+          ruleSelect.options[i] = new Option(ruleBoxOptions[i], ruleBoxOptions[i]);
+          if (data.settings[setting].rule == ruleBoxOptions[i]) {
+            ruleSelect.options[i].selected = true;
+          }
+        }
+        cRule.appendChild(ruleSelect);
+        
+        var cDuration = rFlowRule.insertCell(-1);
+        var duration = document.createElement("input");
+        duration.type = "text";
+        duration.setAttribute("class", "durationpick");
+        var rawMinutes = data.settings[setting].duration;
+        var intMinutes = rawMinutes.substring(0, rawMinutes.length-1);
+        var minutes = parseInt(intMinutes);
+        var hours = Math.floor(minutes / 60);
+        minutes = minutes % 60;
+        duration.value = hours + ":" + minutes;
+        cDuration.appendChild(duration);
 
-								var cEmail = rFlowRule.insertCell(-1);
-								var emailCheck = document.createElement("input");
-								emailCheck.type = "checkbox";
-								for(var act in data.settings[setting].actions) {
-									if(data.settings[setting].actions[act] == "EMAIL") {
-										emailCheck.checked = true;
-									}
-								}
-								cEmail.appendChild(emailCheck);
-								
-								var cKill = rFlowRule.insertCell(-1);
-								var killCheck = document.createElement("input");
-								killCheck.type = "checkbox";
-								for(var act in data.settings[setting].actions) {
-									if(data.settings[setting].actions[act] == "KILL") {
-										killCheck.checked = true;
-									}
-								}
-								cKill.appendChild(killCheck);
-								
-								$('.durationpick').timepicker({hourMax: 99});
-							}
-						}
-						$('.durationpick').timepicker({hourMax: 99});
-					}
-				},
-				"json"
-			);
+        var cEmail = rFlowRule.insertCell(-1);
+        var emailCheck = document.createElement("input");
+        emailCheck.type = "checkbox";
+        for (var act in data.settings[setting].actions) {
+          if (data.settings[setting].actions[act] == "EMAIL") {
+            emailCheck.checked = true;
+          }
+        }
+        cEmail.appendChild(emailCheck);
+        
+        var cKill = rFlowRule.insertCell(-1);
+        var killCheck = document.createElement("input");
+        killCheck.type = "checkbox";
+        for (var act in data.settings[setting].actions) {
+          if (data.settings[setting].actions[act] == "KILL") {
+            killCheck.checked = true;
+          }
+        }
+        cKill.appendChild(killCheck);
+        $('.durationpick').timepicker({hourMax: 99});
+      }
+      $('.durationpick').timepicker({hourMax: 99});
+    };
 		
+		$.get(this.scheduleURL, fetchScheduleData, successHandler, "json");
 		$('#slaModalBackground').show();
 		$('#sla-options').show();
 		
-//		this.schedFlowOptions = sched.flowOptions
+    //this.schedFlowOptions = sched.flowOptions
 		console.log("Loaded schedule info. Ready to set SLA.");
-
 	},
-	handleRemoveSla: function(evt) {
+	
+  handleRemoveSla: function(evt) {
 		console.log("Clicked remove sla button");
 		var scheduleURL = this.scheduleURL;
 		var redirectURL = this.scheduleURL;
-		$.post(
-				scheduleURL,
-				{"action":"removeSla", "scheduleId":this.scheduleId},
-				function(data) {
-				if (data.error) {
-						$('#errorMsg').text(data.error)
-					}
-					else {
-						window.location = redirectURL
-					}
-				"json"
-				}
-			);
-
+    var requestData = {"action": "removeSla", "scheduleId": this.scheduleId};
+    var successHandler = function(data) {
+      if (data.error) {
+        $('#errorMsg').text(data.error)
+      }
+      else {
+        window.location = redirectURL
+      }
+    };
+		$.post(scheduleURL, requestData, successHandler, "json");
 	},
-	handleSetSla: function(evt) {
-
+	
+  handleSetSla: function(evt) {
 		var slaEmails = $('#slaEmails').val();
 		var settings = {};
 		
-		
 		var tFlowRules = document.getElementById("flowRulesTbl").tBodies[0];
-		for(var row = 0; row < tFlowRules.rows.length-1; row++) {
+		for (var row = 0; row < tFlowRules.rows.length - 1; row++) {
 			var rFlowRule = tFlowRules.rows[row];
 			var id = rFlowRule.cells[0].firstChild.value;
 			var rule = rFlowRule.cells[1].firstChild.value;
@@ -266,24 +243,20 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 		};
 
 		var scheduleURL = this.scheduleURL;
+    var successHandler = function(data) {
+      if (data.error) {
+        alert(data.error);
+      }
+      else {
+        tFlowRules.length = 0;
+        window.location = scheduleURL;
+      }
+    };
 		
-		$.post(
-			scheduleURL,
-			slaData,
-			function(data) {
-				if (data.error) {
-					alert(data.error);
-				}
-				else {
-					tFlowRules.length = 0;
-					window.location = scheduleURL;
-				}
-			},
-			"json"
-		);
+		$.post(scheduleURL, slaData, successHandler, "json");
 	},
-	handleAddRow: function(evt) {
-		
+	
+  handleAddRow: function(evt) {
 		var indexToName = this.indexToName;
 		var nameToIndex = this.nameToIndex;
 		var indexToText = this.indexToText;
@@ -294,7 +267,7 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 		
 		var cId = rFlowRule.insertCell(-1);
 		var idSelect = document.createElement("select");
-		for(var i in indexToName) {
+		for (var i in indexToName) {
 			idSelect.options[i] = new Option(indexToText[i], indexToName[i]);
 		}
 		
@@ -302,7 +275,7 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 		
 		var cRule = rFlowRule.insertCell(-1);
 		var ruleSelect = document.createElement("select");
-		for(var i in ruleBoxOptions) {
+		for (var i in ruleBoxOptions) {
 			ruleSelect.options[i] = new Option(ruleBoxOptions[i], ruleBoxOptions[i]);
 		}
 		cRule.appendChild(ruleSelect);
@@ -324,10 +297,10 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 		cKill.appendChild(killCheck);
 		
 		$('.durationpick').timepicker({hourMax: 99});
-
 		return rFlowRule;
 	},
-	handleEditColumn : function(evt) {
+
+	handleEditColumn: function(evt) {
 		var curTarget = evt.currentTarget;
 	
 		if (this.editingTarget != curTarget) {
@@ -346,14 +319,15 @@ azkaban.ChangeSlaView = Backbone.View.extend({
 			this.editingTarget = curTarget;
 		}
 	},
-	handleRemoveColumn : function(evt) {
+
+	handleRemoveColumn: function(evt) {
 		var curTarget = evt.currentTarget;
 		// Should be the table
 		var row = curTarget.parentElement.parentElement;
 		$(row).remove();
 	},
-	closeEditingTarget: function(evt) {
 
+	closeEditingTarget: function(evt) {
 	}
 });
 
@@ -362,16 +336,14 @@ var tableSorterView;
 $(function() {
 	var selected;
 
-
 	slaView = new azkaban.ChangeSlaView({el:$('#sla-options')});
 	tableSorterView = new azkaban.TableSorter({el:$('#scheduledFlowsTbl')});
-//	var requestURL = contextURL + "/manager";
+  /*
+  var requestURL = contextURL + "/manager";
 
 	// Set up the Flow options view. Create a new one every time :p
-//	 $('#addSlaBtn').click( function() {
-//		 slaView.show();
-//	 });
-
-	 
-	
+  $('#addSlaBtn').click( function() {
+    slaView.show();
+  });
+  */
 });