[backend/gdocs][s]: support being given standard 'user' gdocs url by extracting spreadsheet key and generating url with it.
* This makes gdocs backend much easier to use!
This commit is contained in:
parent
5660c88020
commit
dd4fbeceb5
@ -17,13 +17,33 @@ this.recline.Backend = this.recline.Backend || {};
|
||||
// );
|
||||
// </pre>
|
||||
my.GDoc = Backbone.Model.extend({
|
||||
getUrl: function(dataset) {
|
||||
var url = dataset.get('url');
|
||||
if (url.indexOf('feeds/list') != -1) {
|
||||
return url;
|
||||
} else {
|
||||
// https://docs.google.com/spreadsheet/ccc?key=XXXX#gid=0
|
||||
var regex = /.*spreadsheet\/ccc?.*key=([^#?&+]+).*/
|
||||
var matches = url.match(regex);
|
||||
if (matches) {
|
||||
var key = matches[1];
|
||||
var worksheet = 1;
|
||||
var out = 'https://spreadsheets.google.com/feeds/list/' + key + '/' + worksheet + '/public/values?alt=json'
|
||||
return out;
|
||||
} else {
|
||||
alert('Failed to extract gdocs key from ' + url);
|
||||
}
|
||||
}
|
||||
},
|
||||
sync: function(method, model, options) {
|
||||
var self = this;
|
||||
if (method === "read") {
|
||||
var dfd = $.Deferred();
|
||||
var dataset = model;
|
||||
|
||||
$.getJSON(model.get('url'), function(d) {
|
||||
var url = this.getUrl(model);
|
||||
|
||||
$.getJSON(url, function(d) {
|
||||
result = self.gdocsToJavascript(d);
|
||||
model.fields.reset(_.map(result.field, function(fieldId) {
|
||||
return {id: fieldId};
|
||||
|
||||
@ -504,4 +504,15 @@ test("GDoc Backend", function() {
|
||||
$.getJSON.restore();
|
||||
});
|
||||
|
||||
test("GDoc Backend.getUrl", function() {
|
||||
var key = 'Abc_dajkdkjdafkj';
|
||||
var dataset = new recline.Model.Dataset({
|
||||
url: 'https://docs.google.com/spreadsheet/ccc?key=' + key + '#gid=0'
|
||||
});
|
||||
var backend = recline.Model.backends['gdocs'];
|
||||
var out = backend.getUrl(dataset);
|
||||
var exp = 'https://spreadsheets.google.com/feeds/list/' + key + '/1/public/values?alt=json'
|
||||
equal(exp, out);
|
||||
});
|
||||
|
||||
})(this.jQuery);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user