Changeset 13008

Show
Ignore:
Timestamp:
03/10/08 15:07:23 (10 months ago)
Author:
jaredj
Message:

Adding in patch for getLabel provided by wolfram. refs #5257 \!strict

Location:
dojox/trunk/data
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • dojox/trunk/data/QueryReadStore.js

    r13003 r13008  
    8383 
    8484        _features: {'dojo.data.api.Read':true, 'dojo.data.api.Identity':true}, 
     85 
     86        _labelAttr: "label", 
    8587         
    8688        constructor: function(/* Object */ params){ 
     
    107109         
    108110        getValues: function(/* item */ item, /* attribute-name-string */ attribute){ 
     111                this._assertIsItem(item); 
    109112                var ret = []; 
    110113                if(this.hasAttribute(item, attribute)){ 
     
    255258 
    256259        getLabel: function(/* item */ item){ 
    257                 // Override it to return whatever the label shall be, see Read-API. 
    258                 return undefined; 
     260                //      summary: 
     261                //              See dojo.data.api.Read.getLabel() 
     262                if(this._labelAttr && this.isItem(item)){ 
     263                        return this.getValue(item, this._labelAttr); //String 
     264                } 
     265                return undefined; //undefined 
    259266        }, 
    260267 
    261268        getLabelAttributes: function(/* item */ item){ 
    262                 return null; 
    263         }, 
     269                //      summary: 
     270                //              See dojo.data.api.Read.getLabelAttributes() 
     271                if(this._labelAttr){ 
     272                        return [this._labelAttr]; //array 
     273                } 
     274                return null; //null 
     275        }, 
    264276         
    265277        _fetchItems: function(request, fetchHandler, errorHandler){ 
     
    311323                        var xhrHandler = xhrFunc({url:this.url, handleAs:"json-comment-optional", content:serverQuery}); 
    312324                        xhrHandler.addCallback(dojo.hitch(this, function(data){ 
    313                                 data=this._filterResponse(data); 
     325                                data = this._filterResponse(data); 
     326                                if (data.label){ 
     327                                        this._labelAttr = data.label; 
     328                                } 
    314329                                var numRows = data.numRows || -1; 
    315330 
  • dojox/trunk/data/tests/stores/QueryReadStore.js

    r13003 r13008  
    7070                                // Test for not-existing attributes without defaultValues and invalid items. 
    7171                                // TODO 
    72                                 t.assertEqual([], store, "getValues", [item, "NOT THERE"]); 
    73                                 t.assertEqual([], store, "getValues", ["not an item", "NOT THERE"]); 
    74                                  
     72                                t.assertEqual([], store.getValues(item, "NOT THERE")); 
     73                                var errThrown = false; 
     74                                try{ 
     75                                        //Should throw an exception. 
     76                                        var values = store.getValues("not an item", "NOT THERE"); 
     77                                }catch (e){ 
     78                                        errThrown = true; 
     79                                } 
     80                                t.assertTrue(errThrown); 
    7581                                d.callback(true); 
    7682                        } 
     
    8894                                var item = items[0]; 
    8995                                // The good case(s). 
    90                                 t.assertEqual(['name', 'label', 'abbreviation'], store.getAttributes(item)); 
     96                                t.assertEqual(['id', 'name', 'label', 'abbreviation'], store.getAttributes(item)); 
    9197                                t.assertError(Error, store, "getAttributes", [{}]); 
    9298                                 
     99                                d.callback(true); 
     100                        } 
     101                        store.fetch({query:{q:"Alabama"}, onComplete: onComplete}); 
     102                        return d; //Object 
     103                }, 
     104 
     105                function testReadApi_getLabel(t){ 
     106                        var store = dojox.data.tests.stores.QueryReadStore.getStore(); 
     107                        var d = new doh.Deferred(); 
     108                        function onComplete(items, request){ 
     109                                var item = items[0]; 
     110                                // The good cases. 
     111                                t.assertEqual(["<img src='images/Alabama.jpg'/>Alabama"], store.getLabel(item)); 
    93112                                d.callback(true); 
    94113                        }