diff --git a/src/model.js b/src/model.js index 79ac4aa8..cb102004 100644 --- a/src/model.js +++ b/src/model.js @@ -186,6 +186,20 @@ my.Field = Backbone.Model.extend({ this.renderer = options.renderer; this.deriver = options.deriver; } + if (!this.renderer) { + this.renderer = this.defaultRenderers[this.get('type')]; + } + }, + defaultRenderers: { + object: function(val, field, doc) { + return JSON.stringify(val) + }, + 'float': function(val, field, doc) { + var format = field.get('format'); + if (format === 'percentage') { + return val + '%'; + } + } } }); @@ -217,7 +231,7 @@ my.FieldList = Backbone.Collection.extend({ // * query: Query in ES Query DSL // * filter: See filters and Filtered Query // * fields: set of fields to return - http://www.elasticsearch.org/guide/reference/api/search/fields.html -// * facets: TODO - see http://www.elasticsearch.org/guide/reference/api/search/facets/ +// * facets: specification of facets - see http://www.elasticsearch.org/guide/reference/api/search/facets/ // // Additions: // diff --git a/test/model.test.js b/test/model.test.js index 406692bc..2625a7a4 100644 --- a/test/model.test.js +++ b/test/model.test.js @@ -38,7 +38,20 @@ test('Field: basics', function () { equal('XX', out[0].label); }); -test('Field: deriver and renderer', function () { +test('Field: default renderers', function () { + var doc = new recline.Model.Document({x: 12.3, myobject: {a: 1, b: 2}}); + var field = new recline.Model.Field({id: 'myobject', type: 'object'}); + var out = doc.getFieldValue(field); + var exp = '{"a":1,"b":2}'; + equal(out, exp); + + var field = new recline.Model.Field({id: 'x', type: 'float', format: 'percentage'}); + var out = doc.getFieldValue(field); + var exp = '12.3%'; + equal(out, exp); +}); + +test('Field: custom deriver and renderer', function () { var doc = new recline.Model.Document({x: 123}); var cellRenderer = function(value, field) { return '' + value + '';