[view/data-explorer][m]: (refs #14) introduce ability to change number of rows viewed.

* This also necessitated a nice refactor whereby DataExplorer subviews running off a common Backbone Collection (DocumentList) re-rendering themselves in response to changes in that Collection.
This commit is contained in:
rgrp
2011-12-15 16:13:43 +00:00
parent 6e80e20f61
commit 8b9c76fd29
3 changed files with 52 additions and 18 deletions

View File

@@ -8,6 +8,10 @@ var my = {};
// A Dataset model.
my.Dataset = Backbone.Model.extend({
__type__: 'Dataset',
initialize: function() {
this.currentDocuments = new my.DocumentList();
},
getLength: function() {
return this.rowCount;
},
@@ -19,13 +23,14 @@ my.Dataset = Backbone.Model.extend({
// this does not fit very well with Backbone setup. Backbone really expects you to know the ids of objects your are fetching (which you do in classic RESTful ajax-y world). But this paradigm does not fill well with data set up we have here.
// This also illustrates the limitations of separating the Dataset and the Backend
getRows: function(numRows, start) {
var self = this;
var dfd = $.Deferred();
this.backend.getRows(this.id, numRows, start).then(function(rows) {
var docs = _.map(rows, function(row) {
return new my.Document(row);
});
var docList = new my.DocumentList(docs);
dfd.resolve(docList);
self.currentDocuments.reset(docs);
dfd.resolve(self.currentDocuments);
});
return dfd.promise();
}