azkaban-uncached
Changes
src/web/js/azkaban.table.sort.js 180(+92 -88)
Details
diff --git a/src/java/azkaban/webapp/servlet/velocity/index.vm b/src/java/azkaban/webapp/servlet/velocity/index.vm
index 500f4f3..bc15e11 100644
--- a/src/java/azkaban/webapp/servlet/velocity/index.vm
+++ b/src/java/azkaban/webapp/servlet/velocity/index.vm
@@ -93,7 +93,7 @@
<div class="row">
<div class="col-lg-12">
- <table class="table table-striped" id="all-jobs">
+ <table class="table table-striped table-bordered" id="all-jobs">
<thead>
<tr>
<th class="tb-name">Name</th>
@@ -106,13 +106,13 @@
#foreach($project in $projects)
<tr>
<td id="${project.name}" class="tb-name project-expand expanded">
- <span>+</span>
+ <span class="glyphicon glyphicon-plus"></span>
<a href="${context}/manager?project=${project.name}">$project.name</a>
</td>
<td class="tb-up-date">$utils.formatDate($project.lastModifiedTimestamp)</td>
<td class="tb-owner">$project.lastModifiedUser</td>
</tr>
- <tr id="${project.name}-child" style="display: none;">
+ <tr class="childrow collapse" id="${project.name}-child">
<td colspan="3">
<table class="table table-bordered">
<thead>
src/web/js/azkaban.table.sort.js 180(+92 -88)
diff --git a/src/web/js/azkaban.table.sort.js b/src/web/js/azkaban.table.sort.js
index 516448c..40f05e8 100644
--- a/src/web/js/azkaban.table.sort.js
+++ b/src/web/js/azkaban.table.sort.js
@@ -16,50 +16,52 @@
$.namespace('azkaban');
-azkaban.TableSorter= Backbone.View.extend({
- events : {
+azkaban.TableSorter = Backbone.View.extend({
+ events: {
"click .sortable": "handleClickSort"
},
- initialize : function(settings) {
+
+ initialize: function(settings) {
$(this.el).addClass("sortableTable");
- var thead = $(this.el).children("thead");
- var th = $(thead).find("th");
-
- $(th).addClass("sortable");
- $("th.ignoresort").removeClass("sortable");
- var sortDiv = document.createElement("div");
+ var thead = $(this.el).children("thead");
+ var th = $(thead).find("th");
+
+ $(th).addClass("sortable");
+ $("th.ignoresort").removeClass("sortable");
+ var sortDiv = document.createElement("div");
- $(sortDiv).addClass("sortIcon");
-
- $(th).append(sortDiv);
-
- var tbody = $(this.el).children("tbody");
- var rows = $(tbody).children("tr");
-
- var row;
- for (var i = 0; i < rows.length; ++i ) {
- var nextRow = rows[i];
- if (row && $(nextRow).hasClass("childrow")) {
- if (!row.childRows) {
- row.childRows = new Array();
- }
+ $(sortDiv).addClass("sortIcon");
+
+ $(th).append(sortDiv);
- row.childRows.push(nextRow);
+ var tbody = $(this.el).children("tbody");
+ var rows = $(tbody).children("tr");
+
+ var row;
+ for (var i = 0; i < rows.length; ++i ) {
+ var nextRow = rows[i];
+ if (row && $(nextRow).hasClass("childrow")) {
+ if (!row.childRows) {
+ row.childRows = new Array();
+ }
+ row.childRows.push(nextRow);
+ }
+ else {
+ row = nextRow;
+ }
}
- else {
- row = nextRow;
+
+ if (settings.initialSort) {
+ this.toggleSort(settings.initialSort);
}
- }
-
- if (settings.initialSort) {
- this.toggleSort(settings.initialSort);
- }
},
+
handleClickSort: function(evt) {
this.toggleSort(evt.currentTarget);
},
- toggleSort: function(th) {
+
+ toggleSort: function(th) {
console.log("sorting by index " + $(th).index());
if ($(th).hasClass("asc")) {
$(th).removeClass("asc");
@@ -81,70 +83,72 @@ azkaban.TableSorter= Backbone.View.extend({
this.sort($(th).index(), false);
}
},
- sort: function(index, desc) {
- var tbody = $(this.el).children("tbody");
- var rows = $(tbody).children("tr");
+
+ sort: function(index, desc) {
+ var tbody = $(this.el).children("tbody");
+ var rows = $(tbody).children("tr");
+
+ var tdToSort = new Array();
+ for (var i = 0; i < rows.length; ++i) {
+ var row = rows[i];
+ if (!$(row).hasClass("childrow")) {
+ var td = row.children[index];
+ tdToSort.push(td);
+ }
+ }
- var tdToSort = new Array();
- for (var i = 0; i < rows.length; ++i) {
- var row = rows[i];
- if (!$(row).hasClass("childrow")) {
- var td = row.children[index];
- tdToSort.push(td);
+ if (desc) {
+ tdToSort.sort(function(a,b) {
+ var texta = $(a).text().trim().toLowerCase();
+ var textb = $(b).text().trim().toLowerCase();
+
+ if (texta < textb) {
+ return 1;
+ }
+ else if (texta > textb) {
+ return -1;
+ }
+ else {
+ return 0;
+ }
+ });
+ }
+ else {
+ tdToSort.sort(function(a,b) {
+ var texta = $(a).text().trim().toLowerCase();
+ var textb = $(b).text().trim().toLowerCase();
+
+ if (texta < textb) {
+ return -1;
+ }
+ else if (texta > textb) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+ });
}
- }
- if (desc) {
- tdToSort.sort(function(a,b) {
- var texta = $(a).text().trim().toLowerCase();
- var textb = $(b).text().trim().toLowerCase();
-
- if (texta < textb) {
- return 1;
- }
- else if (texta > textb) {
- return -1;
- }
- else {
- return 0;
- }
- });
- }
- else {
- tdToSort.sort(function(a,b) {
- var texta = $(a).text().trim().toLowerCase();
- var textb = $(b).text().trim().toLowerCase();
+ var sortedTR = new Array();
+ for (var i = 0; i < tdToSort.length; ++i) {
+ var tr = $(tdToSort[i]).parent();
+ sortedTR.push(tr);
- if (texta < textb) {
- return -1;
- }
- else if (texta > textb) {
- return 1;
- }
- else {
- return 0;
+ var childRows = tr[0].childRows;
+ if (childRows) {
+ for(var j=0; j < childRows.length; ++j) {
+ sortedTR.push(childRows[j]);
+ }
}
- });
- }
-
- var sortedTR = new Array();
- for (var i = 0; i < tdToSort.length; ++i) {
- var tr = $(tdToSort[i]).parent();
- sortedTR.push(tr);
+ }
- var childRows = tr[0].childRows;
- if (childRows) {
- for(var j=0; j < childRows.length; ++j) {
- sortedTR.push(childRows[j]);
- }
+ for (var i = 0; i < sortedTR.length; ++i) {
+ $(tbody).append(sortedTR[i]);
}
- }
-
- for (var i = 0; i < sortedTR.length; ++i) {
- $(tbody).append(sortedTR[i]);
- }
},
+
render: function() {
- console.log("render graph");
+ console.log("render sorted table");
}
});