[#57,backend,refactor][s]: create a recline.Backend.Base model which other backends inherit from.
* At the moment this added little other than a cleaner structure but will help with change for #57.
This commit is contained in:
parent
3412962a35
commit
767f9a23d6
@ -14,29 +14,41 @@ this.recline.Backend = this.recline.Backend || {};
|
||||
return model.backend.sync(method, model, options);
|
||||
}
|
||||
|
||||
// ## wrapInTimeout
|
||||
//
|
||||
// Crude way to catch backend errors
|
||||
// Many of backends use JSONP and so will not get error messages and this is
|
||||
// a crude way to catch those errors.
|
||||
my.wrapInTimeout = function(ourFunction) {
|
||||
var dfd = $.Deferred();
|
||||
var timeout = 5000;
|
||||
var timer = setTimeout(function() {
|
||||
dfd.reject({
|
||||
message: 'Request Error: Backend did not respond after ' + (timeout / 1000) + ' seconds'
|
||||
});
|
||||
}, timeout);
|
||||
ourFunction.done(function(arguments) {
|
||||
clearTimeout(timer);
|
||||
dfd.resolve(arguments);
|
||||
})
|
||||
.fail(function(arguments) {
|
||||
clearTimeout(timer);
|
||||
dfd.reject(arguments);
|
||||
})
|
||||
;
|
||||
return dfd.promise();
|
||||
}
|
||||
// ## recline.Backend.Base
|
||||
//
|
||||
// Base class for backends providing a template and convenience functions.
|
||||
// You do not have to inherit from this class but even when not it does provide guidance on the functions you must implement.
|
||||
my.Base = Backbone.Model.extend({
|
||||
sync: function(method, model, options) {
|
||||
},
|
||||
query: function(model, queryObj) {
|
||||
},
|
||||
|
||||
// ## _wrapInTimeout
|
||||
//
|
||||
// Convenience method providing a crude way to catch backend errors on JSONP calls.
|
||||
// Many of backends use JSONP and so will not get error messages and this is
|
||||
// a crude way to catch those errors.
|
||||
_wrapInTimeout: function(ourFunction) {
|
||||
var dfd = $.Deferred();
|
||||
var timeout = 5000;
|
||||
var timer = setTimeout(function() {
|
||||
dfd.reject({
|
||||
message: 'Request Error: Backend did not respond after ' + (timeout / 1000) + ' seconds'
|
||||
});
|
||||
}, timeout);
|
||||
ourFunction.done(function(arguments) {
|
||||
clearTimeout(timer);
|
||||
dfd.resolve(arguments);
|
||||
})
|
||||
.fail(function(arguments) {
|
||||
clearTimeout(timer);
|
||||
dfd.reject(arguments);
|
||||
})
|
||||
;
|
||||
return dfd.promise();
|
||||
}
|
||||
});
|
||||
|
||||
}(jQuery, this.recline.Backend));
|
||||
|
||||
|
||||
@ -16,7 +16,7 @@ this.recline.Backend = this.recline.Backend || {};
|
||||
// * format: (optional) csv | xls (defaults to csv if not specified)
|
||||
//
|
||||
// Note that this is a **read-only** backend.
|
||||
my.DataProxy = Backbone.Model.extend({
|
||||
my.DataProxy = my.Base.extend({
|
||||
defaults: {
|
||||
dataproxy_url: 'http://jsonpdataproxy.appspot.com'
|
||||
},
|
||||
@ -47,7 +47,7 @@ this.recline.Backend = this.recline.Backend || {};
|
||||
, dataType: 'jsonp'
|
||||
});
|
||||
var dfd = $.Deferred();
|
||||
my.wrapInTimeout(jqxhr).done(function(results) {
|
||||
this._wrapInTimeout(jqxhr).done(function(results) {
|
||||
if (results.error) {
|
||||
dfd.reject(results.error);
|
||||
}
|
||||
|
||||
@ -19,7 +19,7 @@ this.recline.Backend = this.recline.Backend || {};
|
||||
// localhost:9200 with index twitter and type tweet it would be
|
||||
//
|
||||
// <pre>http://localhost:9200/twitter/tweet</pre>
|
||||
my.ElasticSearch = Backbone.Model.extend({
|
||||
my.ElasticSearch = my.Base.extend({
|
||||
_getESUrl: function(dataset) {
|
||||
var out = dataset.get('elasticsearch_url');
|
||||
if (out) return out;
|
||||
@ -39,7 +39,7 @@ this.recline.Backend = this.recline.Backend || {};
|
||||
dataType: 'jsonp'
|
||||
});
|
||||
var dfd = $.Deferred();
|
||||
my.wrapInTimeout(jqxhr).done(function(schema) {
|
||||
this._wrapInTimeout(jqxhr).done(function(schema) {
|
||||
// only one top level key in ES = the type so we can ignore it
|
||||
var key = _.keys(schema)[0];
|
||||
var fieldData = _.map(schema[key].properties, function(dict, fieldName) {
|
||||
|
||||
@ -16,7 +16,7 @@ this.recline.Backend = this.recline.Backend || {};
|
||||
// 'gdocs'
|
||||
// );
|
||||
// </pre>
|
||||
my.GDoc = Backbone.Model.extend({
|
||||
my.GDoc = my.Base.extend({
|
||||
getUrl: function(dataset) {
|
||||
var url = dataset.get('url');
|
||||
if (url.indexOf('feeds/list') != -1) {
|
||||
|
||||
@ -69,7 +69,7 @@ this.recline.Backend = this.recline.Backend || {};
|
||||
// dataset.fetch();
|
||||
// etc ...
|
||||
// </pre>
|
||||
my.Memory = Backbone.Model.extend({
|
||||
my.Memory = my.Base.extend({
|
||||
initialize: function() {
|
||||
this.datasets = {};
|
||||
},
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user