Changeset 13545

Show
Ignore:
Timestamp:
05/02/08 11:18:04 (7 months ago)
Author:
BryanForbes
Message:

!strict
refs #6546

  • Added initial dojo.data notification support (only onSet supported for now).

refs #6353

  • Moved dojox.grid._grid.GridView? to dojox.grid._View (also moved template to resources/View.html).
  • Moved dojox.grid._grid.Views to dojox.grid._ViewManager.
  • Moved dojox.grid._grid.builder classes to private classes in _View.js.
  • Moved functions from dojox.grid.lib that are only used in _View.js to private functions in _View.js.
  • Updated tests accordingly.
Location:
dojox/trunk/grid
Files:
1 removed
21 modified
3 moved

Legend:

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

    r13518 r13545  
    66        model: null, 
    77        query: { name: '*' }, 
     8        fetchText: '...', 
    89 
    910        _model_connects: null, 
     
    3031 
    3132        _onSet: function(item, attribute, oldValue, newValue){ 
     33                var info = this._identity_map[this.model.getIdentity(item)]; 
     34                if(info){ 
     35                        this.updateRow(info.idx); 
     36                } 
    3237        }, 
    3338 
     
    123128        _getItemAttr: function(idx, attr){ 
    124129                var item = this._getItem(idx); 
    125                 return (!item ? dojox.grid.na : this.model.getValue(item, attr)); 
     130                return (!item ? this.fetchText : this.model.getValue(item, attr)); 
    126131        }, 
    127132 
     
    187192                        return null; 
    188193                }else{ 
    189                         return [{ attribute: c.dataAttr, descending: (this.sortInfo>0) }]; 
     194                        return [{ attribute: c.dataAttr, descending: !(this.sortInfo>0) }]; 
    190195                } 
    191196        }, 
  • dojox/trunk/grid/tests/test_custom_sort.html

    r13440 r13545  
    3030        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3131        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    32         <script type="text/javascript" src="../_grid/builder.js"></script> 
     32 
    3333        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3434        <script type="text/javascript" src="../_Layout.js"></script> 
     
    3737        <script type="text/javascript" src="../_grid/selection.js"></script> 
    3838        <script type="text/javascript" src="../_grid/edit.js"></script> 
    39         <script type="text/javascript" src="../_grid/view.js"></script> 
     39        <script type="text/javascript" src="../_View.js"></script> 
    4040        <script type="text/javascript" src="../_grid/views.js"></script> 
    4141        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_data_grid.html

    r13518 r13545  
    3030        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3131        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    32         <script type="text/javascript" src="../_grid/builder.js"></script> 
     32 
    3333        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3434        <script type="text/javascript" src="../_Layout.js"></script> 
     
    3737        <script type="text/javascript" src="../_grid/selection.js"></script> 
    3838        <script type="text/javascript" src="../_grid/edit.js"></script> 
    39         <script type="text/javascript" src="../_grid/view.js"></script> 
     39        <script type="text/javascript" src="../_View.js"></script> 
    4040        <script type="text/javascript" src="../_grid/views.js"></script> 
    4141        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_edit.html

    r13443 r13545  
    4545        <script type="text/javascript" src="../_grid/drag.js"></script> 
    4646        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    47         <script type="text/javascript" src="../_grid/builder.js"></script> 
    4847        <script type="text/javascript" src="../_grid/cell.js"></script> 
    4948        <script type="text/javascript" src="../_Layout.js"></script> 
     
    5251        <script type="text/javascript" src="../_grid/selection.js"></script> 
    5352        <script type="text/javascript" src="../_grid/edit.js"></script> 
    54         <script type="text/javascript" src="../_grid/view.js"></script> 
     53        <script type="text/javascript" src="../_View.js"></script> 
    5554        <script type="text/javascript" src="../_grid/views.js"></script> 
    5655        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_edit_canEdit.html

    r13443 r13545  
    4545        <script type="text/javascript" src="../_grid/drag.js"></script> 
    4646        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    47         <script type="text/javascript" src="../_grid/builder.js"></script> 
    4847        <script type="text/javascript" src="../_grid/cell.js"></script> 
    4948        <script type="text/javascript" src="../_Layout.js"></script> 
     
    5251        <script type="text/javascript" src="../_grid/selection.js"></script> 
    5352        <script type="text/javascript" src="../_grid/edit.js"></script> 
    54         <script type="text/javascript" src="../_grid/view.js"></script> 
     53        <script type="text/javascript" src="../_View.js"></script> 
    5554        <script type="text/javascript" src="../_grid/views.js"></script> 
    5655        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_grid.html

    r13440 r13545  
    3333        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3434        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    35         <script type="text/javascript" src="../_grid/builder.js"></script> 
    3635        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3736        <script type="text/javascript" src="../_Layout.js"></script> 
     
    4039        <script type="text/javascript" src="../_grid/selection.js"></script> 
    4140        <script type="text/javascript" src="../_grid/edit.js"></script> 
    42         <script type="text/javascript" src="../_grid/view.js"></script> 
     41        <script type="text/javascript" src="../_View.js"></script> 
    4342        <script type="text/javascript" src="../_grid/views.js"></script> 
    4443        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_grid_dlg.html

    r13440 r13545  
    3737        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3838        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    39         <script type="text/javascript" src="../_grid/builder.js"></script> 
    4039        <script type="text/javascript" src="../_grid/cell.js"></script> 
    4140        <script type="text/javascript" src="../_Layout.js"></script> 
     
    4443        <script type="text/javascript" src="../_grid/selection.js"></script> 
    4544        <script type="text/javascript" src="../_grid/edit.js"></script> 
    46         <script type="text/javascript" src="../_grid/view.js"></script> 
     45        <script type="text/javascript" src="../_View.js"></script> 
    4746        <script type="text/javascript" src="../_grid/views.js"></script> 
    4847        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_grid_headerHeight.html

    r13443 r13545  
    3333        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3434        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    35         <script type="text/javascript" src="../_grid/builder.js"></script> 
    3635        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3736        <script type="text/javascript" src="../_Layout.js"></script> 
     
    4039        <script type="text/javascript" src="../_grid/selection.js"></script> 
    4140        <script type="text/javascript" src="../_grid/edit.js"></script> 
    42         <script type="text/javascript" src="../_grid/view.js"></script> 
     41        <script type="text/javascript" src="../_View.js"></script> 
    4342        <script type="text/javascript" src="../_grid/views.js"></script> 
    4443        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_grid_object_model_change.html

    r13440 r13545  
    3535        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3636        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    37         <script type="text/javascript" src="../_grid/builder.js"></script> 
     37 
    3838        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3939        <script type="text/javascript" src="../_Layout.js"></script> 
     
    4242        <script type="text/javascript" src="../_grid/selection.js"></script> 
    4343        <script type="text/javascript" src="../_grid/edit.js"></script> 
    44         <script type="text/javascript" src="../_grid/view.js"></script> 
     44        <script type="text/javascript" src="../_View.js"></script> 
    4545        <script type="text/javascript" src="../_grid/views.js"></script> 
    4646        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_grid_performance.html

    r13440 r13545  
    2727        <script type="text/javascript" src="../_grid/drag.js"></script> 
    2828        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    29         <script type="text/javascript" src="../_grid/builder.js"></script> 
     29 
    3030        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3131        <script type="text/javascript" src="../_Layout.js"></script> 
     
    3434        <script type="text/javascript" src="../_grid/selection.js"></script> 
    3535        <script type="text/javascript" src="../_grid/edit.js"></script> 
    36         <script type="text/javascript" src="../_grid/view.js"></script> 
     36        <script type="text/javascript" src="../_View.js"></script> 
    3737        <script type="text/javascript" src="../_grid/views.js"></script> 
    3838        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_grid_rtl.html

    r13440 r13545  
    3535        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3636        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    37         <script type="text/javascript" src="../_grid/builder.js"></script> 
     37 
    3838        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3939        <script type="text/javascript" src="../_Layout.js"></script> 
     
    4242        <script type="text/javascript" src="../_grid/selection.js"></script> 
    4343        <script type="text/javascript" src="../_grid/edit.js"></script> 
    44         <script type="text/javascript" src="../_grid/view.js"></script> 
     44        <script type="text/javascript" src="../_View.js"></script> 
    4545        <script type="text/javascript" src="../_grid/views.js"></script> 
    4646        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_grid_simple_structure.html

    r13440 r13545  
    3333        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3434        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    35         <script type="text/javascript" src="../_grid/builder.js"></script> 
     35 
    3636        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3737        <script type="text/javascript" src="../_Layout.js"></script> 
     
    4040        <script type="text/javascript" src="../_grid/selection.js"></script> 
    4141        <script type="text/javascript" src="../_grid/edit.js"></script> 
    42         <script type="text/javascript" src="../_grid/view.js"></script> 
     42        <script type="text/javascript" src="../_View.js"></script> 
    4343        <script type="text/javascript" src="../_grid/views.js"></script> 
    4444        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_grid_simple_structure2.html

    r13440 r13545  
    3333        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3434        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    35         <script type="text/javascript" src="../_grid/builder.js"></script> 
     35 
    3636        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3737        <script type="text/javascript" src="../_Layout.js"></script> 
     
    4040        <script type="text/javascript" src="../_grid/selection.js"></script> 
    4141        <script type="text/javascript" src="../_grid/edit.js"></script> 
    42         <script type="text/javascript" src="../_grid/view.js"></script> 
     42        <script type="text/javascript" src="../_View.js"></script> 
    4343        <script type="text/javascript" src="../_grid/views.js"></script> 
    4444        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_grid_tooltip_menu.html

    r13377 r13545  
    132132                        <div dojoType="dijit.PopupMenuItem"> 
    133133                                <span>Deeper Submenu</span> 
    134                                 <div dojoType="dijit.Menu" id="submenu4""> 
     134                                <div dojoType="dijit.Menu" id="submenu4"> 
    135135                                        <div dojoType="dijit.MenuItem" onClick="alert('Sub-submenu 1!')">Sub-sub-menu Item One</div> 
    136136                                        <div dojoType="dijit.MenuItem" onClick="alert('Sub-submenu 2!')">Sub-sub-menu Item Two</div> 
  • dojox/trunk/grid/tests/test_keyboard.html

    r13440 r13545  
    3030        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3131        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    32         <script type="text/javascript" src="../_grid/builder.js"></script> 
     32 
    3333        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3434        <script type="text/javascript" src="../_Layout.js"></script> 
     
    3737        <script type="text/javascript" src="../_grid/selection.js"></script> 
    3838        <script type="text/javascript" src="../_grid/edit.js"></script> 
    39         <script type="text/javascript" src="../_grid/view.js"></script> 
     39        <script type="text/javascript" src="../_View.js"></script> 
    4040        <script type="text/javascript" src="../_grid/views.js"></script> 
    4141        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_mysql_edit.html

    r13443 r13545  
    2626        <script type="text/javascript" src="../_grid/drag.js"></script> 
    2727        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    28         <script type="text/javascript" src="../_grid/builder.js"></script> 
     28 
    2929        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3030        <script type="text/javascript" src="../_Layout.js"></script> 
     
    3333        <script type="text/javascript" src="../_grid/selection.js"></script> 
    3434        <script type="text/javascript" src="../_grid/edit.js"></script> 
    35         <script type="text/javascript" src="../_grid/view.js"></script> 
     35        <script type="text/javascript" src="../_View.js"></script> 
    3636        <script type="text/javascript" src="../_grid/views.js"></script> 
    3737        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_sizing.html

    r13443 r13545  
    3333        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3434        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    35         <script type="text/javascript" src="../_grid/builder.js"></script> 
     35 
    3636        <script type="text/javascript" src="../_grid/cell.js"></script> 
    3737        <script type="text/javascript" src="../_Layout.js"></script> 
     
    4040        <script type="text/javascript" src="../_grid/selection.js"></script> 
    4141        <script type="text/javascript" src="../_grid/edit.js"></script> 
    42         <script type="text/javascript" src="../_grid/view.js"></script> 
     42        <script type="text/javascript" src="../_View.js"></script> 
    4343        <script type="text/javascript" src="../_grid/views.js"></script> 
    4444        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/tests/test_sizing_100rows.html

    r13443 r13545  
    3737        <script type="text/javascript" src="../_grid/drag.js"></script> 
    3838        <script type="text/javascript" src="../_grid/scroller.js"></script> 
    39         <script type="text/javascript" src="../_grid/builder.js"></script> 
     39 
    4040        <script type="text/javascript" src="../_grid/cell.js"></script> 
    4141        <script type="text/javascript" src="../_Layout.js"></script> 
     
    4444        <script type="text/javascript" src="../_grid/selection.js"></script> 
    4545        <script type="text/javascript" src="../_grid/edit.js"></script> 
    46         <script type="text/javascript" src="../_grid/view.js"></script> 
     46        <script type="text/javascript" src="../_View.js"></script> 
    4747        <script type="text/javascript" src="../_grid/views.js"></script> 
    4848        <script type="text/javascript" src="../_RowSelector.js"></script> 
  • dojox/trunk/grid/VirtualGrid.js

    r13505 r13545  
    44dojo.require("dojox.grid._grid.lib"); 
    55dojo.require("dojox.grid._grid.scroller"); 
    6 dojo.require("dojox.grid._grid.view"); 
    7 dojo.require("dojox.grid._grid.views"); 
     6dojo.require("dojox.grid._View"); 
     7dojo.require("dojox.grid._ViewManager"); 
    88dojo.require("dojox.grid._Layout"); 
    99dojo.require("dojox.grid._grid.rows"); 
     
    217217        // views 
    218218        createViews: function(){ 
    219                 this.views = new dojox.grid._grid.Views(this); 
     219                this.views = new dojox.grid._ViewManager(this); 
    220220                this.views.createView = dojo.hitch(this, "createView"); 
    221221        }, 
     
    248248        buildViews: function(){ 
    249249                for(var i=0, vs; (vs=this.layout.structure[i]); i++){ 
    250                         this.createView(vs.type || dojox._scopeName + ".grid._grid.GridView").setStructure(vs); 
     250                        this.createView(vs.type || dojox._scopeName + ".grid._View").setStructure(vs); 
    251251                } 
    252252                this.scroller.setContentNodes(this.views.getContentNodes()); 
  • dojox/trunk/grid/_grid/lib.js

    r13505 r13545  
    99        }, 
    1010 
    11         getTdIndex: function(td){ 
    12                 return td.cellIndex >=0 ? td.cellIndex : dojo.indexOf(td.parentNode.cells, td); 
    13         }, 
    14          
    15         getTrIndex: function(tr){ 
    16                 return tr.rowIndex >=0 ? tr.rowIndex : dojo.indexOf(tr.parentNode.childNodes, tr); 
    17         }, 
    18          
    19         getTr: function(rowOwner, index){ 
    20                 return rowOwner && ((rowOwner.rows||0)[index] || rowOwner.childNodes[index]); 
    21         }, 
    22          
    23         getTd: function(rowOwner, rowIndex, cellIndex){ 
    24                 // FIXME: what is inTable? 
    25                 return (dojox.grid.getTr(inTable, rowIndex)||0)[cellIndex]; 
    26         }, 
    27          
    28         findTable: function(node){ 
    29                 for (var n=node; n && n.tagName!='TABLE'; n=n.parentNode); 
    30                 return n; 
    31         }, 
    32          
    33         ascendDom: function(inNode, inWhile){ 
    34                 for (var n=inNode; n && inWhile(n); n=n.parentNode); 
    35                 return n; 
    36         }, 
    37          
    38         makeNotTagName: function(inTagName){ 
    39                 var name = inTagName.toUpperCase(); 
    40                 return function(node){ return node.tagName != name; }; 
    41         }, 
    42          
    4311        fire: function(ob, ev, args){ 
    4412                var fn = ob && ev && ob[ev]; 
  • dojox/trunk/grid/_RowSelector.js

    r13440 r13545  
    11dojo.provide("dojox.grid._RowSelector"); 
    2 dojo.require("dojox.grid._grid.view"); 
     2dojo.require("dojox.grid._View"); 
    33 
    4 dojo.declare('dojox.grid._RowSelector', dojox.grid._grid.GridView, { 
     4dojo.declare('dojox.grid._RowSelector', dojox.grid._View, { 
    55        // summary: 
    66        //      Custom grid view. If used in a grid structure, provides a small selectable region for grid rows. 
  • dojox/trunk/grid/_View.js

    r13409 r13545  
    1 dojo.provide("dojox.grid._grid.view"); 
     1dojo.provide("dojox.grid._View"); 
    22 
    33dojo.require("dijit._Widget"); 
    44dojo.require("dijit._Templated"); 
    55dojo.require("dojox.html.metrics"); 
    6 dojo.require("dojox.grid._grid.builder"); 
    7  
    8 dojo.declare('dojox.grid._grid.GridView', 
    9         [dijit._Widget, dijit._Templated], 
    10         { 
    11         // summary: 
    12         //              A collection of grid columns. A grid is comprised of a set of views that stack horizontally. 
    13         //              Grid creates views automatically based on grid's layout structure. 
    14         //              Users should typically not need to access individual views directly. 
    15         // 
    16         // defaultWidth: String 
    17         //              Default widget of the view 
    18         defaultWidth: "18em", 
    19  
    20         // viewWidth: String 
    21         //              Width for the view, in valid css unit 
    22         viewWidth: "", 
    23  
    24         templatePath: dojo.moduleUrl("dojox.grid","resources/GridView.html"), 
     6dojo.require("dojox.grid._grid.drag"); 
     7 
     8(function(){ 
     9        // private 
     10        var rowIndexTag = "gridRowIndex"; 
     11        var gridViewTag = "gridView"; 
     12 
     13        var getTdIndex = function(td){ 
     14                return td.cellIndex >=0 ? td.cellIndex : dojo.indexOf(td.parentNode.cells, td); 
     15        }; 
    2516         
    26         themeable: false, 
    27         classTag: 'dojoxGrid', 
    28         marginBottom: 0, 
    29         rowPad: 2, 
    30  
    31         postMixInProperties: function(){ 
    32                 this.rowNodes = []; 
    33         }, 
    34  
    35         postCreate: function(){ 
    36                 this.connect(this.scrollboxNode,"onscroll","doscroll"); 
    37                 dojox.grid.funnelEvents(this.contentNode, this, "doContentEvent", [ 'mouseover', 'mouseout', 'click', 'dblclick', 'contextmenu', 'mousedown' ]); 
    38                 dojox.grid.funnelEvents(this.headerNode, this, "doHeaderEvent", [ 'dblclick', 'mouseover', 'mouseout', 'mousemove', 'mousedown', 'click', 'contextmenu' ]); 
    39                 this.content = new dojox.grid._grid.ContentBuilder(this); 
    40                 this.header = new dojox.grid._grid.HeaderBuilder(this); 
    41                 //BiDi: in RTL case, style width='9000em' causes scrolling problem in head node 
    42                 if(!dojo._isBodyLtr()){ 
    43                         this.headerNodeContainer.style.width = ""; 
     17        var getTrIndex = function(tr){ 
     18                return tr.rowIndex >=0 ? tr.rowIndex : dojo.indexOf(tr.parentNode.childNodes, tr); 
     19        }; 
     20         
     21        var getTr = function(rowOwner, index){ 
     22                return rowOwner && ((rowOwner.rows||0)[index] || rowOwner.childNodes[index]); 
     23        }; 
     24 
     25        var findTable = function(node){ 
     26                for (var n=node; n && n.tagName!='TABLE'; n=n.parentNode); 
     27                return n; 
     28        }; 
     29         
     30        var ascendDom = function(inNode, inWhile){ 
     31                for (var n=inNode; n && inWhile(n); n=n.parentNode); 
     32                return n; 
     33        }; 
     34         
     35        var makeNotTagName = function(inTagName){ 
     36                var name = inTagName.toUpperCase(); 
     37                return function(node){ return node.tagName != name; }; 
     38        }; 
     39         
     40 
     41        // base class for generating markup for the views 
     42        var Builder = function(view){ 
     43                if(view){ 
     44                        this.view = view; 
     45                        this.grid = view.grid; 
    4446                }