Changeset 14197

Show
Ignore:
Timestamp:
06/27/08 15:04:35 (5 months ago)
Author:
toonetown
Message:

Fixes #6590 - add in message notifications for loading, error, and no data - similar to what exists in dijit.layout.ContentPane? !strict

Location:
dojox/trunk/grid
Files:
4 added
7 modified

Legend:

Unmodified
Added
Removed
  • dojox/trunk/grid/DataGrid.js

    r14196 r14197  
    2121        rowCount: 0, 
    2222 
     23        _isLoaded: false, 
     24        _isLoading: false, 
     25         
    2326        postCreate: function(){ 
    2427                this._pages = []; 
     
    129132                        } 
    130133                } 
     134                if(!this._isLoaded){ 
     135                        this._isLoading = false; 
     136                        this._isLoaded = true; 
     137                        if(!items || !items.length){ 
     138                                this.showMessage(this.noDataMessage); 
     139                        }else{ 
     140                                this.showMessage(); 
     141                        } 
     142                } 
    131143                this._pending_requests[req.start] = false; 
    132144        }, 
     
    134146        _onFetchError: function(err, req){ 
    135147                console.log(err); 
     148                if(!this._isLoaded){ 
     149                        this._isLoading = false; 
     150                        this._isLoaded = true; 
     151                        this.showMessage(this.errorMessage); 
     152                } 
    136153                this.onFetchError(err, req); 
    137154        }, 
     
    143160                var start = start || 0; 
    144161                if(this.store && !this._pending_requests[start]){ 
     162                        if(!this._isLoaded && !this._isLoading){ 
     163                                this._isLoading = true; 
     164                                this.showMessage(this.loadingMessage); 
     165                        } 
    145166                        this._pending_requests[start] = true; 
    146167                        //console.log("fetch: ", start); 
  • dojox/trunk/grid/resources/Grid.css

    r14040 r14197  
    2727.dojoxGrid-master-view  { 
    2828        position: relative; 
     29} 
     30 
     31/* master messages */ 
     32 
     33.dojoxGrid-master-messages { 
     34        position: relative; 
     35        padding: 1em; 
     36        text-align: center; 
     37        background-color: white; 
    2938} 
    3039 
  • dojox/trunk/grid/resources/nihiloGrid.css

    r14146 r14197  
    2727.nihilo .dojoxGrid-master-view  { 
    2828        position: relative; 
     29} 
     30 
     31/* master messages */ 
     32 
     33.nihilo .dojoxGrid-master-messages { 
     34        position: relative; 
     35        padding: 1em; 
     36        text-align: center; 
     37        background-color: #fefefe; 
    2938} 
    3039 
  • dojox/trunk/grid/resources/soriaGrid.css

    r14146 r14197  
    2727.soria .dojoxGrid-master-view  { 
    2828        position: relative; 
     29} 
     30 
     31/* master messages */ 
     32 
     33.soria .dojoxGrid-master-messages { 
     34        position: relative; 
     35        padding: 1em; 
     36        text-align: center; 
     37        background-color: #fefefe; 
    2938} 
    3039 
  • dojox/trunk/grid/resources/tundraGrid.css

    r14146 r14197  
    2727.tundra .dojoxGrid-master-view  { 
    2828        position: relative; 
     29} 
     30 
     31/* master messages */ 
     32 
     33.tundra .dojoxGrid-master-messages { 
     34        position: relative; 
     35        padding: 1em; 
     36        text-align: center; 
     37        background-color: #fefefe; 
     38} 
     39 
     40.tundra .dojoxGridLoading,  
     41.tundra .dojoxGridError { 
     42        background-position:left center; 
     43        background-repeat: no-repeat; 
     44        padding-left:25px; 
     45} 
     46 
     47.dijitRtl .tundra .dojoxGridLoading,  
     48.dijitRtl .tundra .dojoxGridError, 
     49.dijitRtl .tundra .dojoxGridNoData { 
     50        background-position:right; 
     51        padding-right:25px; 
     52        padding-left:0px; 
     53} 
     54 
     55.tundra .dojoxGridLoading { 
     56        background-image: url('../../../dijit/themes/tundra/images/loading.gif'); 
     57} 
     58 
     59.tundra .dojoxGridError { 
     60        background-image: url('../../../dijit/themes/tundra/images/warning.png'); 
    2961} 
    3062 
  • dojox/trunk/grid/resources/_Grid.html

    r13793 r14197  
    22        <div class="dojoxGrid-master-header" dojoAttachPoint="viewsHeaderNode"></div> 
    33        <div class="dojoxGrid-master-view" dojoAttachPoint="viewsNode"></div> 
     4        <div class="dojoxGrid-master-messages" style="display: none;" dojoAttachPoint="messagesNode"></div> 
    45        <span dojoAttachPoint="lastFocusNode" tabindex="0"></span> 
    56</div> 
  • dojox/trunk/grid/_Grid.js

    r14195 r14197  
    1515 
    1616dojo.require("dijit.Menu"); 
     17 
     18dojo.requireLocalization("dijit", "loading"); 
     19dojo.requireLocalization("dojox.grid", "grid"); 
    1720 
    1821(function(){ 
     
    158161                // Used to store the last two clicks, to ensure double-clicking occurs based on the intended row 
    159162                _click: null, 
     163                 
     164                // loadingMessage: String 
     165                //  Message that shows while the grid is loading 
     166                loadingMessage: "<span class='dojoxGridLoading'>${loadingState}</span>", 
     167 
     168                // errorMessage: String 
     169                //  Message that shows when the grid encounters an error loading 
     170                errorMessage: "<span class='dojoxGridError'>${errorState}</span>", 
     171 
     172                // noDataMessage: String 
     173                //  Message that shows if the grid has no data 
     174                noDataMessage: "<span class='dojoxGridNoData'>${noData}</span>", 
    160175 
    161176                // private 
     
    184199                        this.connect(this, "onShow", "renderOnIdle"); 
    185200                }, 
     201                 
     202                postMixInProperties: function(){ 
     203                        this.inherited(arguments); 
     204                        var messages = dojo.mixin(dojo.i18n.getLocalization("dijit", "loading", this.lang), 
     205                                                                dojo.i18n.getLocalization("dojox.grid", "grid", this.lang)); 
     206                        this.loadingMessage = dojo.string.substitute(this.loadingMessage, messages); 
     207                        this.errorMessage = dojo.string.substitute(this.errorMessage, messages); 
     208                        this.noDataMessage = dojo.string.substitute(this.noDataMessage, messages); 
     209                }, 
     210                 
    186211                postCreate: function(){ 
    187212                        // replace stock styleChanged with one that triggers an update 
     
    421446                        return null; 
    422447                }, 
     448                 
     449                showMessage: function(message){ 
     450                        if(message){ 
     451                                this.messagesNode.innerHTML = message; 
     452                                this.messagesNode.style.display = ""; 
     453                        }else{ 
     454                                this.messagesNode.innerHTML = ""; 
     455                                this.messagesNode.style.display = "none"; 
     456                        } 
     457                }, 
    423458 
    424459                _structureChanged: function() { 
     
    566601                        // views are position absolute, so they do not inflate the parent 
    567602                        if(this.autoHeight){ 
    568                                 this.viewsNode.style.height = this.views.measureContent() + 'px'; 
     603                                var size = Math.max(this.views.measureContent(), dojo.marginBox(this.messagesNode).h) + 'px'; 
     604                                this.viewsNode.style.height = size; 
    569605                        } 
    570606                },