diff --git a/src/backend/localcsv.js b/src/backend/localcsv.js
index 7efb9a28..a924396c 100644
--- a/src/backend/localcsv.js
+++ b/src/backend/localcsv.js
@@ -2,7 +2,7 @@ this.recline = this.recline || {};
this.recline.Backend = this.recline.Backend || {};
(function($, my) {
- my.loadFromCSVFile = function(file) {
+ my.loadFromCSVFile = function(file, callback) {
var metadata = {
id: file.name,
file: file
@@ -10,7 +10,8 @@ this.recline.Backend = this.recline.Backend || {};
var reader = new FileReader();
// TODO
reader.onload = function(e) {
- // console.log(e.target.result);
+ var dataset = my.csvToDataset(e.target.result);
+ callback(dataset);
};
reader.onerror = function (e) {
alert('Failed to load file. Code: ' + e.target.error.code);
@@ -18,6 +19,22 @@ this.recline.Backend = this.recline.Backend || {};
reader.readAsText(file);
};
+ my.csvToDataset = function(csvString) {
+ var out = my.parseCSV(csvString);
+ fields = _.map(out[0], function(cell) {
+ return { id: cell, label: cell };
+ });
+ var data = _.map(out.slice(1), function(row) {
+ var _doc = {};
+ _.each(out[0], function(fieldId, idx) {
+ _doc[fieldId] = row[idx];
+ });
+ return _doc;
+ });
+ var dataset = recline.Backend.createDataset(data, fields);
+ return dataset;
+ }
+
// Converts a Comma Separated Values string into an array of arrays.
// Each line in the CSV becomes an array.
//
diff --git a/test/backend.localcsv.test.js b/test/backend.localcsv.test.js
index c37fc138..e9a3f174 100644
--- a/test/backend.localcsv.test.js
+++ b/test/backend.localcsv.test.js
@@ -19,6 +19,14 @@ test("parseCSV", function() {
'"Other, AN", 12:35\n';
var array = recline.Backend.parseCSV(csv, true);
deepEqual(exp, array);
+
+ var csv = 'Name, Value\n' +
+ '"Jones, Jay", 10\n' +
+ '"Xyz ""ABC"" O\'Brien", 11:35\n' +
+ '"Other, AN", 12:35\n';
+ var dataset = recline.Backend.csvToDataset(csv);
+ dataset.query();
+ equal(dataset.currentDocuments.length, 3);
});
})(this.jQuery);
diff --git a/test/index.html b/test/index.html
index f7e84fce..ee6c28f0 100644
--- a/test/index.html
+++ b/test/index.html
@@ -23,8 +23,10 @@
+
+