diff --git a/css/data-explorer.css b/css/data-explorer.css
index 2e62d6ca..0844a9de 100644
--- a/css/data-explorer.css
+++ b/css/data-explorer.css
@@ -12,6 +12,12 @@
padding-left: 0;
}
+.header .recline-results-info {
+ line-height: 28px;
+ margin-left: 20px;
+ display: inline;
+}
+
.header .recline-query-editor {
float: right;
margin: 4px;
@@ -25,6 +31,10 @@
width: 30px;
}
+.header .recline-query-editor .pagination a {
+ line-height: 28px;
+}
+
.data-view-container {
display: block;
clear: both;
diff --git a/src/view.js b/src/view.js
index 26f4d86a..ef5d7f99 100644
--- a/src/view.js
+++ b/src/view.js
@@ -62,6 +62,9 @@ my.DataExplorer = Backbone.View.extend({
{{label}} \
{{/views}} \
\
+ \
+ Results found {{docCount}} \
+
\
\
\
\
@@ -106,6 +109,7 @@ my.DataExplorer = Backbone.View.extend({
});
this.model.bind('query:done', function(eventName) {
my.clearNotifications();
+ self.el.find('.doc-count').text(self.model.docCount || 'Unknown');
my.notify('Data loaded', {category: 'success'});
});
this.model.bind('query:fail', function(eventName, error) {
@@ -178,27 +182,47 @@ my.QueryEditor = Backbone.View.extend({
className: 'recline-query-editor',
template: ' \
\
',
events: {
- 'submit form': 'onFormSubmit'
+ 'submit form': 'onFormSubmit',
+ 'click .action-pagination-update': 'onPaginationUpdate'
},
initialize: function() {
+ _.bindAll(this, 'render');
this.el = $(this.el);
+ this.model.bind('change', this.render);
this.render();
},
onFormSubmit: function(e) {
e.preventDefault();
- var newSize = parseInt(this.el.find('input[name="size"]').val());
var newOffset = parseInt(this.el.find('input[name="offset"]').val());
+ var newSize = parseInt(this.el.find('input[name="to"]').val()) - newOffset;
this.model.set({size: newSize, offset: newOffset});
},
+ onPaginationUpdate: function(e) {
+ e.preventDefault();
+ var $el = $(e.target);
+ if ($el.parent().hasClass('prev')) {
+ var newOffset = this.model.get('offset') - Math.max(0, this.model.get('size'));
+ } else {
+ var newOffset = this.model.get('offset') + this.model.get('size');
+ }
+ this.model.set({offset: newOffset});
+ },
render: function() {
var tmplData = this.model.toJSON();
+ tmplData.to = this.model.get('offset') + this.model.get('size');
var templated = $.mustache(this.template, tmplData);
this.el.html(templated);
}