[#51,backend/memory][s]: simple createDataset method to create in-memory dataset from raw array of hashes (and optional other info).
This commit is contained in:
@@ -2,6 +2,43 @@ this.recline = this.recline || {};
|
|||||||
this.recline.Backend = this.recline.Backend || {};
|
this.recline.Backend = this.recline.Backend || {};
|
||||||
|
|
||||||
(function($, my) {
|
(function($, my) {
|
||||||
|
// ## createDataset
|
||||||
|
//
|
||||||
|
// Convenience function to create a simple 'in-memory' dataset in one step.
|
||||||
|
//
|
||||||
|
// @param data: list of hashes for each document/row in the data ({key:
|
||||||
|
// value, key: value})
|
||||||
|
// @param fields: (optional) list of field hashes (each hash defining a hash
|
||||||
|
// as per recline.Model.Field). If fields not specified they will be taken
|
||||||
|
// from the data.
|
||||||
|
// @param metadata: (optional) dataset metadata - see recline.Model.Dataset.
|
||||||
|
// If not defined (or id not provided) id will be autogenerated.
|
||||||
|
my.createDataset = function(data, fields, metadata) {
|
||||||
|
if (!metadata) {
|
||||||
|
var metadata = {};
|
||||||
|
}
|
||||||
|
if (!metadata.id) {
|
||||||
|
metadata.id = String(Math.floor(Math.random() * 100000000) + 1);
|
||||||
|
}
|
||||||
|
var backend = recline.Model.backends['memory'];
|
||||||
|
var datasetInfo = {
|
||||||
|
documents: data,
|
||||||
|
metadata: metadata
|
||||||
|
};
|
||||||
|
if (fields) {
|
||||||
|
datasetInfo.fields = fields;
|
||||||
|
} else {
|
||||||
|
if (data) {
|
||||||
|
datasetInfo.fields = _.keys(data[0]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
backend.addDataset(datasetInfo);
|
||||||
|
var dataset = new recline.Model.Dataset({id: metadata.id}, 'memory');
|
||||||
|
dataset.fetch();
|
||||||
|
return dataset;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
// ## Memory Backend - uses in-memory data
|
// ## Memory Backend - uses in-memory data
|
||||||
//
|
//
|
||||||
// To use it you should provide in your constructor data:
|
// To use it you should provide in your constructor data:
|
||||||
|
|||||||
@@ -25,6 +25,17 @@ function makeBackendDataset() {
|
|||||||
return dataset;
|
return dataset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test('Memory Backend: createDataset', function () {
|
||||||
|
var dataset = recline.Backend.createDataset(memoryData.documents, memoryData.fields, memoryData.metadata);
|
||||||
|
equal(memoryData.metadata.id, dataset.id);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Memory Backend: createDataset 2', function () {
|
||||||
|
var dataset = recline.Backend.createDataset(memoryData.documents);
|
||||||
|
dataset.query();
|
||||||
|
equal(memoryData.documents.length, dataset.currentDocuments.length);
|
||||||
|
});
|
||||||
|
|
||||||
test('Memory Backend: basics', function () {
|
test('Memory Backend: basics', function () {
|
||||||
var dataset = makeBackendDataset();
|
var dataset = makeBackendDataset();
|
||||||
expect(3);
|
expect(3);
|
||||||
|
|||||||
Reference in New Issue
Block a user