Changeset 596
- Timestamp:
- 05/05/09 13:46:08 (1 year ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
core/trunk/geoext/lib/GeoExt/data/FeatureReader.js
r588 r596 103 103 for (j = 0, lenJ = fields.length; j < lenJ; j++){ 104 104 field = fields.items[j]; 105 v = feature.attributes[field.mapping || field.name] || 106 field.defaultValue; 105 if (/[\[\.]/.test(field.mapping)) { 106 try { 107 v = new Function("obj", "return obj." + field.mapping)(feature.attributes); 108 } catch(e){ 109 v = field.defaultValue; 110 } 111 } 112 else { 113 v = feature.attributes[field.mapping || field.name] || field.defaultValue; 114 } 107 115 v = field.convert(v); 108 116 values[field.name] = v; core/trunk/geoext/tests/lib/GeoExt/data/FeatureReader.html
r280 r596 10 10 <script type="text/javascript"> 11 11 function test_constructor(t) { 12 t.plan( 2);12 t.plan(3); 13 13 var reader = new GeoExt.data.FeatureReader({}, [ 14 14 {'name': 'foo'}, 15 {'name': 'bar' }15 {'name': 'bar', 'mapping': 'bar_mapped'} 16 16 ]); 17 17 var fields = reader.recordType.prototype.fields; 18 // 2tests18 // 3 tests 19 19 t.eq(fields.items.length, 5, 'number of items is correct'); 20 20 t.ok(fields.items[3].name == 'foo' && 21 21 fields.items[4].name == 'bar', 22 'field values are correct'); 22 'field names are correct'); 23 t.ok(fields.items[3].mapping === null && 24 fields.items[4].mapping == 'bar_mapped', 25 'field mappings are correct'); 23 26 } 24 27 function test_readRecords(t) { 25 t.plan( 9);28 t.plan(11); 26 29 // setup 27 30 var reader, features, info, records; 28 31 reader = new GeoExt.data.FeatureReader({}, [ 29 {'name': 'foo'}, 30 {'name': 'bar'} 32 {'name': 'a'}, 33 {'name': 'b', 'mapping': 'b_mapped'}, 34 {'name': 'c', 'mapping': 'c_mapped.obj'} 31 35 ]); 32 36 features = [ 33 37 new OpenLayers.Feature.Vector(null, { 34 'foo': 'foo_0', 35 'bar': 'bar_0' 38 'a': 'a_value', 39 'b_mapped': 'b_value', 40 'c_mapped': {'obj': 'c_value'} 36 41 }), 37 42 new OpenLayers.Feature.Vector() … … 41 46 features[1].fid = 2; 42 47 features[1].state = OpenLayers.State.DELETE; 43 // 8tests48 // 10 tests 44 49 info = reader.readRecords(features); 45 50 records = info.records; 46 51 t.eq(info.totalRecords, 2, 'readRecords returns correct number of records'); 47 t.eq(records[0].get('foo'), 'foo_0', 'readRecords correctly set feature properties in record'); 52 t.eq(records[0].get('a'), 'a_value', 'readRecords correctly set feature properties in record'); 53 t.eq(records[0].get('b'), 'b_value', 'readRecords correctly set mapped feature properties in record'); 54 t.eq(records[0].get('c'), 'c_value', 'readRecords correctly set complex mapped feature properties in record'); 48 55 t.eq(records[0].get('fid'), 1, 'readRecords correctly set feature fid in record'); 49 56 t.eq(records[0].get('state'), OpenLayers.State.INSERT, 'readRecords correctly set feature state in record');