HTRACE-146. Search page: Remove client-side sorting and improve pagination
diff --git a/htrace-core/src/web/app/models/span.js b/htrace-core/src/web/app/models/span.js
index 06b6b3c..b8dc114 100644
--- a/htrace-core/src/web/app/models/span.js
+++ b/htrace-core/src/web/app/models/span.js
@@ -60,6 +60,7 @@
state: {
pageSize: 10,
lastSpanId: null,
+ finished: false,
predicates: []
},
queryParams: {
@@ -95,7 +96,7 @@
}
return JSON.stringify({
- lim: this.state.pageSize,
+ lim: this.state.pageSize + 1,
pred: predicates
});
}
@@ -111,17 +112,25 @@
},
parseLinks: function(resp, xhr) {
- if (resp.length >= this.state.pageSize) {
- this.state.lastSpanId = resp[resp.length - 1].s;
+ this.state.finished = resp.length <= this.state.pageSize;
- return {
- "next": "/query?query=" + this.queryParams.query.call(this)
- };
- } else {
+ if (this.state.finished) {
this.state.lastSpanId = null;
+ } else {
+ this.state.lastSpanId = resp[this.state.pageSize - 1].s;
+ }
+ if (this.state.finished) {
return {};
}
+
+ return {
+ "next": "/query?query=" + this.queryParams.query.call(this)
+ };
+ },
+
+ parseRecords: function(resp) {
+ return resp.slice(0, 10);
},
setPredicates: function(predicates) {
diff --git a/htrace-core/src/web/app/setup.js b/htrace-core/src/web/app/setup.js
index 90915e3..3c32118 100644
--- a/htrace-core/src/web/app/setup.js
+++ b/htrace-core/src/web/app/setup.js
@@ -67,17 +67,20 @@
}
}
}),
- "editable": false
+ "editable": false,
+ "sortable": false
}, {
"name": "spanId",
"label": "ID",
"cell": "string",
- "editable": false
+ "editable": false,
+ "sortable": false
}, {
"name": "processId",
"label": "processId",
"cell": "string",
- "editable": false
+ "editable": false,
+ "sortable": false
}, {
"label": "Duration",
"cell": Backgrid.Cell.extend({
@@ -91,12 +94,14 @@
}
}
}),
- "editable": false
+ "editable": false,
+ "sortable": false
}, {
"name": "description",
"label": "Description",
"cell": "string",
- "editable": false
+ "editable": false,
+ "sortable": false
}],
"row": Backgrid.Row.extend({
"events": {