[model,bugfix][s]: if explicitly passed field info to a dataset use that over any field info derived from backend.
This commit is contained in:
parent
26a2a36c60
commit
4d128af797
@ -71,7 +71,13 @@ my.Dataset = Backbone.Model.extend({
|
||||
}
|
||||
|
||||
function handleResults(results) {
|
||||
var out = self._normalizeRecordsAndFields(results.records, results.fields);
|
||||
// if explicitly given the fields
|
||||
// (e.g. var dataset = new Dataset({fields: fields, ...})
|
||||
// use that field info over anything we get back by parsing the data
|
||||
// (results.fields)
|
||||
var fields = self.get('fields') || results.fields;
|
||||
|
||||
var out = self._normalizeRecordsAndFields(results.records, fields);
|
||||
if (results.useMemoryStore) {
|
||||
self._store = new recline.Backend.Memory.Store(out.records, out.fields);
|
||||
}
|
||||
|
||||
@ -177,6 +177,25 @@ test('Dataset getFieldsSummary', function () {
|
||||
});
|
||||
});
|
||||
|
||||
test('fetch without and with explicit fields', function () {
|
||||
var dataset = new recline.Model.Dataset({
|
||||
backend: 'csv',
|
||||
data: 'A,B\n1,2\n3,4'
|
||||
});
|
||||
dataset.fetch();
|
||||
equal(dataset.fields.at(0).id, 'A');
|
||||
equal(dataset.fields.at(0).get('type'), 'string');
|
||||
|
||||
var dataset = new recline.Model.Dataset({
|
||||
fields: [{id: 'X', type: 'number'}, {id: 'Y'}],
|
||||
backend: 'csv',
|
||||
data: 'A,B\n1,2\n3,4'
|
||||
});
|
||||
dataset.fetch();
|
||||
equal(dataset.fields.at(0).id, 'X');
|
||||
equal(dataset.fields.at(0).get('type'), 'number');
|
||||
});
|
||||
|
||||
test('_normalizeRecordsAndFields', function () {
|
||||
var data = [
|
||||
// fields but no records
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user