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 @@ + +