azkaban-uncached
Changes
src/web/js/azkaban.flow.job.view.js 82(+42 -40)
src/web/js/azkaban.jobedit.view.js 184(+92 -92)
Details
diff --git a/src/java/azkaban/webapp/servlet/velocity/jobpage.vm b/src/java/azkaban/webapp/servlet/velocity/jobpage.vm
index caec118..b257f98 100644
--- a/src/java/azkaban/webapp/servlet/velocity/jobpage.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/jobpage.vm
@@ -88,24 +88,32 @@
## Job details table
- <button id="jobs-logs-btn" class="btn btn-default" href="${context}/manager?project=${project.name}&job=$jobid&history">Job History</button>
- <button id="edit-job-btn" class="btn btn-primary" onclick='jobEditView.show("${project.name}", "${flowid}", "${jobid}")'>Job Edit</button>
-
- <table id="all-jobs" class="table table-striped table-bordered">
- <thead>
- <tr>
- <th class="tb-pname">Parameter Name</th>
- <th class="tb-pvalue">Value</th>
- </tr>
- </thead>
- <tbody>
+
+ <div class="panel panel-default">
+ <div class="panel-heading">
+ <div class="pull-right">
+ <a id="jobs-logs-btn" class="btn btn-xs btn-default" href="${context}/manager?project=${project.name}&job=$jobid&history">Job History</a>
+ <button id="edit-job-btn" class="btn btn-xs btn-primary" onclick='jobEditView.show("${project.name}", "${flowid}", "${jobid}")'>Job Edit</button>
+ </div>
+ Job Properties
+ </div>
+
+ <table id="all-jobs" class="table table-striped table-bordered">
+ <thead>
+ <tr>
+ <th class="tb-pname">Parameter Name</th>
+ <th class="tb-pvalue">Value</th>
+ </tr>
+ </thead>
+ <tbody>
#foreach ($parameter in $parameters)
- <tr>
- <td class="first">$parameter.first</td><td>$parameter.second</td>
- </tr>
+ <tr>
+ <td class="first">$parameter.first</td><td>$parameter.second</td>
+ </tr>
#end
- </tbody>
- </table>
+ </tbody>
+ </table>
+ </div>
</div><!-- /col-lg-8 -->
<div class="col-lg-4">
<div class="well" id="job-summary">
src/web/js/azkaban.flow.job.view.js 82(+42 -40)
diff --git a/src/web/js/azkaban.flow.job.view.js b/src/web/js/azkaban.flow.job.view.js
index d4dff6b..fa72011 100644
--- a/src/web/js/azkaban.flow.job.view.js
+++ b/src/web/js/azkaban.flow.job.view.js
@@ -18,9 +18,10 @@ azkaban.JobListView = Backbone.View.extend({
events: {
"keyup input": "filterJobs",
"click li": "handleJobClick",
- "click .resetPanZoomBtn" : "handleResetPanZoom",
- "contextmenu li" : "handleContextMenuClick"
+ "click .resetPanZoomBtn": "handleResetPanZoom",
+ "contextmenu li": "handleContextMenuClick"
},
+
initialize: function(settings) {
this.model.bind('change:selected', this.handleSelectionChange, this);
this.model.bind('change:disabled', this.handleDisabledChange, this);
@@ -32,62 +33,56 @@ azkaban.JobListView = Backbone.View.extend({
this.contextMenu = settings.contextMenuCallback;
this.listNodes = {};
},
+
filterJobs: function(self) {
var filter = this.filterInput.val();
-
if (filter && filter.trim() != "") {
filter = filter.trim();
-
if (filter == "") {
if (this.filter) {
- this.jobs.children().each(
- function(){
- var a = $(this).find("a");
- $(a).html(this.jobid);
- $(this).show();
- }
- );
+ this.jobs.children().each(function(){
+ var a = $(this).find("a");
+ $(a).html(this.jobid);
+ $(this).show();
+ });
}
-
this.filter = null;
return;
}
}
else {
if (this.filter) {
- this.jobs.children().each(
- function(){
- var a = $(this).find("a");
- $(a).html(this.jobid);
- $(this).show();
- }
- );
+ this.jobs.children().each(function(){
+ var a = $(this).find("a");
+ $(a).html(this.jobid);
+ $(this).show();
+ });
}
this.filter = null;
return;
}
- this.jobs.children().each(
- function(){
- var jobid = this.jobid;
- var index = jobid.indexOf(filter);
- if (index != -1) {
- var a = $(this).find("a");
-
- var endIndex = index + filter.length;
- var newHTML = jobid.substring(0, index) + "<span>" + jobid.substring(index, endIndex) + "</span>" + jobid.substring(endIndex, jobid.length);
-
- $(a).html(newHTML);
- $(this).show();
- }
- else {
- $(this).hide();
- }
- });
-
- this.filter = filter;
+ this.jobs.children().each(function() {
+ var jobid = this.jobid;
+ var index = jobid.indexOf(filter);
+ if (index != -1) {
+ var a = $(this).find("a");
+
+ var endIndex = index + filter.length;
+ var newHTML = jobid.substring(0, index) + "<span>" + jobid.substring(index, endIndex) + "</span>" + jobid.substring(endIndex, jobid.length);
+
+ $(a).html(newHTML);
+ $(this).show();
+ }
+ else {
+ $(this).hide();
+ }
+ });
+
+ this.filter = filter;
},
+
handleStatusUpdate: function(evt) {
var updateData = this.model.get("update");
if (updateData.nodes) {
@@ -98,6 +93,7 @@ azkaban.JobListView = Backbone.View.extend({
}
}
},
+
assignInitialStatus: function(evt) {
var data = this.model.get("data");
for (var i = 0; i < data.nodes.length; ++i) {
@@ -105,6 +101,7 @@ azkaban.JobListView = Backbone.View.extend({
$(this.listNodes[updateNode.id]).addClass(updateNode.status);
}
},
+
render: function(self) {
var data = this.model.get("data");
var nodes = data.nodes;
@@ -117,7 +114,7 @@ azkaban.JobListView = Backbone.View.extend({
};
var nodeArray = nodes.slice(0);
- nodeArray.sort(function(a,b){
+ nodeArray.sort(function(a,b) {
var diff = a.y - b.y;
if (diff == 0) {
return a.x - b.x;
@@ -152,13 +149,15 @@ azkaban.JobListView = Backbone.View.extend({
this.assignInitialStatus(self);
this.handleDisabledChange(self);
},
+
handleContextMenuClick: function(evt) {
if (this.contextMenu) {
this.contextMenu(evt);
return false;
}
},
- handleJobClick : function(evt) {
+
+ handleJobClick: function(evt) {
var jobid = evt.currentTarget.jobid;
if(!evt.currentTarget.jobid) {
return;
@@ -177,6 +176,7 @@ azkaban.JobListView = Backbone.View.extend({
this.model.set({"selected": jobid});
}
},
+
handleDisabledChange: function(evt) {
var disabledMap = this.model.get("disabled");
var nodes = this.model.get("nodes");
@@ -190,6 +190,7 @@ azkaban.JobListView = Backbone.View.extend({
}
}
},
+
handleSelectionChange: function(evt) {
if (!this.model.hasChanged("selected")) {
return;
@@ -206,6 +207,7 @@ azkaban.JobListView = Backbone.View.extend({
$(this.listNodes[current]).addClass("selected");
}
},
+
handleResetPanZoom: function(evt) {
this.model.trigger("resetPanZoom");
}
src/web/js/azkaban.jobedit.view.js 184(+92 -92)
diff --git a/src/web/js/azkaban.jobedit.view.js b/src/web/js/azkaban.jobedit.view.js
index bdfd452..b1441c8 100644
--- a/src/web/js/azkaban.jobedit.view.js
+++ b/src/web/js/azkaban.jobedit.view.js
@@ -38,7 +38,7 @@ azkaban.JobEditView = Backbone.View.extend({
var tbl = document.getElementById("generalProps").tBodies[0];
var rows = tbl.rows;
var len = rows.length;
- for(var i=0; i < len-1; i++) {
+ for (var i = 0; i < len-1; i++) {
tbl.deleteRow(0);
}
},
@@ -54,56 +54,55 @@ azkaban.JobEditView = Backbone.View.extend({
var handleAddRow = this.handleAddRow;
-// var overrideParams;
-// var generalParams;
-// this.overrideParams = overrideParams;
-// this.generalParams = generalParams;
- var fetchJobInfo = {"project": this.projectName, "ajax":"fetchJobInfo", "flowName":this.flowName, "jobName":this.jobName};
-
+ /*var overrideParams;
+ var generalParams;
+ this.overrideParams = overrideParams;
+ this.generalParams = generalParams;*/
+ var fetchJobInfo = {
+ "project": this.projectName,
+ "ajax": "fetchJobInfo",
+ "flowName": this.flowName,
+ "jobName": this.jobName
+ };
var mythis = this;
-
- $.get(
- projectURL,
- fetchJobInfo,
- function(data) {
- if (data.error) {
- alert(data.error);
- }
- else {
- document.getElementById('jobName').innerHTML = data.jobName;
- document.getElementById('jobType').innerHTML = data.jobType;
- var generalParams = data.generalParams;
- var overrideParams = data.overrideParams;
-
-// for(var key in generalParams) {
-// var row = handleAddRow();
-// var td = $(row).find('span');
-// $(td[1]).text(key);
-// $(td[2]).text(generalParams[key]);
-// }
-
- mythis.overrideParams = overrideParams;
- mythis.generalParams = generalParams;
+ var fetchJobSuccessHandler = function(data) {
+ if (data.error) {
+ alert(data.error);
+ }
+ else {
+ document.getElementById('jobName').innerHTML = data.jobName;
+ document.getElementById('jobType').innerHTML = data.jobType;
+ var generalParams = data.generalParams;
+ var overrideParams = data.overrideParams;
- for(var okey in overrideParams) {
- if(okey != 'type' && okey != 'dependencies') {
- var row = handleAddRow();
- var td = $(row).find('span');
- $(td[1]).text(okey);
- $(td[2]).text(overrideParams[okey]);
- }
- }
+ /*for (var key in generalParams) {
+ var row = handleAddRow();
+ var td = $(row).find('span');
+ $(td[1]).text(key);
+ $(td[2]).text(generalParams[key]);
+ }*/
+ mythis.overrideParams = overrideParams;
+ mythis.generalParams = generalParams;
+
+ for (var okey in overrideParams) {
+ if (okey != 'type' && okey != 'dependencies') {
+ var row = handleAddRow();
+ var td = $(row).find('span');
+ $(td[1]).text(okey);
+ $(td[2]).text(overrideParams[okey]);
}
- },
- "json"
- );
+ }
+ }
+ };
+ $.get(projectURL, fetchJobInfo, fetchJobSuccessHandler, "json");
},
+
handleSet: function(evt) {
this.closeEditingTarget(evt);
var jobOverride = {};
- var editRows = $(".editRow");
+ var editRows = $(".editRow");
for (var i = 0; i < editRows.length; ++i) {
var row = editRows[i];
var td = $(row).find('span');
@@ -119,7 +118,7 @@ azkaban.JobEditView = Backbone.View.extend({
var generalParams = this.generalParams
jobOverride['type'] = overrideParams['type']
- if('dependencies' in overrideParams) {
+ if ('dependencies' in overrideParams) {
jobOverride['dependencies'] = overrideParams['dependencies']
}
@@ -137,32 +136,29 @@ azkaban.JobEditView = Backbone.View.extend({
var projectURL = this.projectURL
var redirectURL = projectURL+'?project='+project+'&flow='+flowName+'&job='+jobName;
+ var jobOverrideSuccessHandler = function(data) {
+ if (data.error) {
+ alert(data.error);
+ }
+ else {
+ window.location = redirectURL;
+ }
+ };
- $.get(
- projectURL,
- jobOverrideData,
- function(data) {
- if (data.error) {
- alert(data.error);
- }
- else {
- window.location = redirectURL;
- }
- },
- "json"
- );
+ $.get(projectURL, jobOverrideData, jobOverrideSuccessHandler, "json");
},
+
handleAddRow: function(evt) {
var tr = document.createElement("tr");
- var tdName = document.createElement("td");
- var tdValue = document.createElement("td");
+ var tdName = document.createElement("td");
+ var tdValue = document.createElement("td");
- var icon = document.createElement("span");
- $(icon).addClass("removeIcon");
- var nameData = document.createElement("span");
- $(nameData).addClass("spanValue");
- var valueData = document.createElement("span");
- $(valueData).addClass("spanValue");
+ var icon = document.createElement("span");
+ $(icon).addClass("removeIcon");
+ var nameData = document.createElement("span");
+ $(nameData).addClass("spanValue");
+ var valueData = document.createElement("span");
+ $(valueData).addClass("spanValue");
$(tdName).append(icon);
$(tdName).append(nameData);
@@ -171,18 +167,18 @@ azkaban.JobEditView = Backbone.View.extend({
nameData.myparent = tdName;
$(tdValue).append(valueData);
- $(tdValue).addClass("editable");
+ $(tdValue).addClass("editable");
valueData.myparent = tdValue;
$(tr).addClass("editRow");
- $(tr).append(tdName);
- $(tr).append(tdValue);
-
- $(tr).insertBefore("#addRow");
- return tr;
+ $(tr).append(tdName);
+ $(tr).append(tdValue);
+ $(tr).insertBefore("#addRow");
+ return tr;
},
- handleEditColumn : function(evt) {
+
+ handleEditColumn: function(evt) {
var curTarget = evt.currentTarget;
if (this.editingTarget != curTarget) {
@@ -201,9 +197,9 @@ azkaban.JobEditView = Backbone.View.extend({
$(input).focus();
var obj = this;
$(input).keypress(function(evt) {
- if(evt.which == 13) {
- obj.closeEditingTarget(evt);
- }
+ if (evt.which == 13) {
+ obj.closeEditingTarget(evt);
+ }
});
this.editingTarget = curTarget;
@@ -212,33 +208,37 @@ azkaban.JobEditView = Backbone.View.extend({
evt.preventDefault();
evt.stopPropagation();
},
- handleRemoveColumn : function(evt) {
+
+ handleRemoveColumn: function(evt) {
var curTarget = evt.currentTarget;
// Should be the table
var row = curTarget.parentElement.parentElement;
$(row).remove();
},
+
closeEditingTarget: function(evt) {
- if (this.editingTarget != null && this.editingTarget != evt.target && this.editingTarget != evt.target.myparent ) {
- var input = $(this.editingTarget).children("input")[0];
- var text = $(input).val();
- $(input).remove();
+ if (this.editingTarget != null &&
+ this.editingTarget != evt.target &&
+ this.editingTarget != evt.target.myparent) {
+ var input = $(this.editingTarget).children("input")[0];
+ var text = $(input).val();
+ $(input).remove();
- var valueData = document.createElement("span");
- $(valueData).addClass("spanValue");
- $(valueData).text(text);
+ var valueData = document.createElement("span");
+ $(valueData).addClass("spanValue");
+ $(valueData).text(text);
- if ($(this.editingTarget).hasClass("name")) {
- var icon = document.createElement("span");
- $(icon).addClass("removeIcon");
- $(this.editingTarget).append(icon);
- }
+ if ($(this.editingTarget).hasClass("name")) {
+ var icon = document.createElement("span");
+ $(icon).addClass("removeIcon");
+ $(this.editingTarget).append(icon);
+ }
- $(this.editingTarget).removeClass("editing");
- $(this.editingTarget).append(valueData);
- valueData.myparent=this.editingTarget;
- this.editingTarget = null;
- }
+ $(this.editingTarget).removeClass("editing");
+ $(this.editingTarget).append(valueData);
+ valueData.myparent=this.editingTarget;
+ this.editingTarget = null;
+ }
}
});