From 87fa7529089a42c478484c3258c5012941fcfc90 Mon Sep 17 00:00:00 2001 From: Rufus Pollock Date: Fri, 17 Feb 2012 09:16:02 +0000 Subject: [PATCH] [#43,backend][s]: GDocs backend working (and has improved docs). --- src/backend.js | 18 +++++++++++++++--- test/model.test.js | 12 +++++------- 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/src/backend.js b/src/backend.js index 94435c16..98dff9da 100644 --- a/src/backend.js +++ b/src/backend.js @@ -272,15 +272,27 @@ this.recline.Model = this.recline.Model || {}; // ## Google spreadsheet backend // - // Connect to Google Docs spreadsheet. For write operations + // Connect to Google Docs spreadsheet. + // + // Dataset must have a url attribute pointing to the Gdocs + // spreadsheet's JSON feed e.g. + // + //
+  // var dataset = new recline.Model.Dataset({
+  //     url: 'https://spreadsheets.google.com/feeds/list/0Aon3JiuouxLUdDQwZE1JdV94cUd6NWtuZ0IyWTBjLWc/od6/public/values?alt=json'
+  //   },
+  //   'gdocs'
+  // );
+  // 
my.BackendGDoc = Backbone.Model.extend({ sync: function(method, model, options) { + var self = this; if (method === "read") { var dfd = $.Deferred(); var dataset = model; - $.getJSON(model.backendConfig.url, function(d) { - result = my.backends['gdocs'].gdocsToJavascript(d); + $.getJSON(model.get('url'), function(d) { + result = self.gdocsToJavascript(d); model.set({'headers': result.header}); // cache data onto dataset (we have loaded whole gdoc it seems!) model._dataCache = result.data; diff --git a/test/model.test.js b/test/model.test.js index 706fd08c..d44ff330 100644 --- a/test/model.test.js +++ b/test/model.test.js @@ -452,13 +452,11 @@ var sample_gdocs_spreadsheet_data = { } test("GDoc Backend", function() { - var dataset = new recline.Model.Dataset(); - dataset.backendConfig = { - type: 'gdocs', - url: 'https://spreadsheets.google.com/feeds/list/0Aon3JiuouxLUdDQwZE1JdV94cUd6NWtuZ0IyWTBjLWc/od6/public/values?alt=json' - }; - - console.log('got gdoc dataset', dataset); + var dataset = new recline.Model.Dataset({ + url: 'https://spreadsheets.google.com/feeds/list/0Aon3JiuouxLUdDQwZE1JdV94cUd6NWtuZ0IyWTBjLWc/od6/public/values?alt=json' + }, + 'gdocs' + ); var stub = sinon.stub($, 'getJSON', function(options, cb) { console.log('options are', options, cb);