From bcffe673369276be36dd051df6a04ef791d59471 Mon Sep 17 00:00:00 2001 From: Rufus Pollock Date: Sun, 15 Apr 2012 23:08:42 +0100 Subject: [PATCH] [#88,refactor][s]: create recline.Model.Dataset.restore function and move dataset restore stuff there from recline.View.DataExplorer.restore. --- src/model.js | 30 ++++++++++++++++++++++++++++++ src/view.js | 19 +++++-------------- 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/model.js b/src/model.js index 137244d7..1464ec46 100644 --- a/src/model.js +++ b/src/model.js @@ -141,6 +141,36 @@ my.Dataset = Backbone.Model.extend({ } }); + +// ### Dataset.restore +// +// Restore a Dataset instance from a serialized state. Serialized state for a +// Dataset is an Object like: +// +//
+// {
+//   backend: {backend type - i.e. value of dataset.backend.__type__}
+//   dataset: {result of dataset.toJSON()}
+//   ...
+// }
+my.Dataset.restore = function(state) {
+  // hack-y - restoring a memory dataset does not mean much ...
+  var dataset = null;
+  if (state.backend === 'memory') {
+    dataset = recline.Backend.createDataset(
+      [{stub: 'this is a stub dataset because we do not restore memory datasets'}],
+      [],
+      state.dataset
+    );
+  } else {
+    dataset = new recline.Model.Dataset(
+      state.dataset,
+      state.backend
+    );
+  }
+  return dataset;
+};
+
 // ## A Document (aka Row)
 // 
 // A single entry or row in the dataset
diff --git a/src/view.js b/src/view.js
index 6dedc111..5e3a4c02 100644
--- a/src/view.js
+++ b/src/view.js
@@ -140,6 +140,10 @@ this.recline.View = this.recline.View || {};
 //     readOnly: (default: false) run in read-only mode
 // }
 // 
+// +// Note that at present we do *not* serialize information about the actual set +// of views in use -- e.g. those specified by the views argument. Instead we +// expect the client to have initialized the DataExplorer with the relevant views. my.DataExplorer = Backbone.View.extend({ template: ' \
\ @@ -362,20 +366,7 @@ my.DataExplorer = Backbone.View.extend({ // // Restore a DataExplorer instance from a serialized state including the associated dataset my.DataExplorer.restore = function(state) { - // hack-y - restoring a memory dataset does not mean much ... - var dataset = null; - if (state.backend === 'memory') { - dataset = recline.Backend.createDataset( - [{stub: 'this is a stub dataset because we do not restore memory datasets'}], - [], - state.dataset - ); - } else { - dataset = new recline.Model.Dataset( - state.dataset, - state.backend - ); - } + var dataset = recline.Model.Dataset.restore(state); var explorer = new my.DataExplorer({ model: dataset, state: state