[#68,model/Field][s]: introduce default renderers for object and float:percentage.

This commit is contained in:
Rufus Pollock 2012-04-10 16:36:55 +01:00
parent dea4b3ece1
commit 498e9712c6
2 changed files with 29 additions and 2 deletions

View File

@ -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 <http://www.elasticsearch.org/guide/reference/api/search/query.html>
// * filter: See filters and <a href="http://www.elasticsearch.org/guide/reference/query-dsl/filtered-query.html">Filtered Query</a>
// * 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:
//

View File

@ -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 '<span class="field-' + field.id + '">' + value + '</span>';