more docs on collumn model
[roojs1] / docs / src / Roo_grid_ColumnModel.js.html
1 <html><head><title>Roo/grid/ColumnModel.js</title><link rel="stylesheet" type="text/css" href="../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
2  * Based on:
3  * Ext JS Library 1.1.1
4  * Copyright(c) 2006-2007, Ext JS, LLC.
5  *
6  * Originally Released Under LGPL - original licence link has changed is not relivant.
7  *
8  * Fork - LGPL
9  * &lt;script type=&quot;text/javascript&quot;&gt;
10  */
11
12
13 /**
14  * @class Roo.grid.ColumnModel
15  * @extends Roo.util.Observable
16  * This is the default implementation of a ColumnModel used by the Grid. It defines
17  * the columns in the grid.
18  * &lt;br&gt;Usage:&lt;br&gt;
19  &lt;pre&gt;&lt;code&gt;
20  var colModel = new Roo.grid.ColumnModel([
21         {header: &quot;Ticker&quot;, width: 60, sortable: true, locked: true},
22         {header: &quot;Company Name&quot;, width: 150, sortable: true},
23         {header: &quot;Market Cap.&quot;, width: 100, sortable: true},
24         {header: &quot;$ Sales&quot;, width: 100, sortable: true, renderer: money},
25         {header: &quot;Employees&quot;, width: 100, sortable: true, resizable: false}
26  ]);
27  &lt;/code&gt;&lt;/pre&gt;
28  * &lt;p&gt;
29  
30  * The config options listed for this class are options which may appear in each
31  * individual column definition.
32  * &lt;br/&gt;RooJS Fix - column id's are not sequential but use Roo.id() - fixes bugs with layouts.
33  * @constructor
34  * @param {Object} config An Array of column config objects. See this class's
35  * config objects for details.
36 */
37 </span><span class="jsdoc-var">Roo.grid.ColumnModel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">){
38         </span><span class="jsdoc-comment">/**
39      * The config passed into the constructor
40      */
41     </span><span class="jsdoc-var">this.config </span><span class="jsdoc-syntax">= []; </span><span class="jsdoc-comment">//config;
42     </span><span class="jsdoc-var">this.lookup </span><span class="jsdoc-syntax">= {};
43
44     </span><span class="jsdoc-comment">// if no id, create one
45     // if the column does not have a dataIndex mapping,
46     // map it to the order it is in the config
47     </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">config.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
48         </span><span class="jsdoc-var">this.addColumn</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]);
49
50     }
51
52     </span><span class="jsdoc-comment">/**
53      * The width of columns which have no width specified (defaults to 100)
54      * @type Number
55      */
56     </span><span class="jsdoc-var">this.defaultWidth </span><span class="jsdoc-syntax">= 100;
57
58     </span><span class="jsdoc-comment">/**
59      * Default sortable of columns which have no sortable specified (defaults to false)
60      * @type Boolean
61      */
62     </span><span class="jsdoc-var">this.defaultSortable </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
63
64     </span><span class="jsdoc-var">this.addEvents</span><span class="jsdoc-syntax">({
65         </span><span class="jsdoc-comment">/**
66              * @event widthchange
67              * Fires when the width of a column changes.
68              * @param {ColumnModel} this
69              * @param {Number} columnIndex The column index
70              * @param {Number} newWidth The new width
71              */
72             </span><span class="jsdoc-string">&quot;widthchange&quot;</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
73         </span><span class="jsdoc-comment">/**
74              * @event headerchange
75              * Fires when the text of a header changes.
76              * @param {ColumnModel} this
77              * @param {Number} columnIndex The column index
78              * @param {Number} newText The new header text
79              */
80             </span><span class="jsdoc-string">&quot;headerchange&quot;</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
81         </span><span class="jsdoc-comment">/**
82              * @event hiddenchange
83              * Fires when a column is hidden or &quot;unhidden&quot;.
84              * @param {ColumnModel} this
85              * @param {Number} columnIndex The column index
86              * @param {Boolean} hidden true if hidden, false otherwise
87              */
88             </span><span class="jsdoc-string">&quot;hiddenchange&quot;</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
89             </span><span class="jsdoc-comment">/**
90          * @event columnmoved
91          * Fires when a column is moved.
92          * @param {ColumnModel} this
93          * @param {Number} oldIndex
94          * @param {Number} newIndex
95          */
96         </span><span class="jsdoc-string">&quot;columnmoved&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
97         </span><span class="jsdoc-comment">/**
98          * @event columlockchange
99          * Fires when a column's locked state is changed
100          * @param {ColumnModel} this
101          * @param {Number} colIndex
102          * @param {Boolean} locked true if locked
103          */
104         </span><span class="jsdoc-string">&quot;columnlockchange&quot; </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true
105     </span><span class="jsdoc-syntax">});
106     </span><span class="jsdoc-var">Roo.grid.ColumnModel.superclass.constructor.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">);
107 };
108 </span><span class="jsdoc-var">Roo.extend</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.grid.ColumnModel</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.util.Observable</span><span class="jsdoc-syntax">, {
109     </span><span class="jsdoc-comment">/**
110      * @cfg {String} header [required] The header text to display in the Grid view.
111      */
112         /**
113      * @cfg {String} xsHeader Header at Bootsrap Extra Small width (default for all)
114      */
115         /**
116      * @cfg {String} smHeader Header at Bootsrap Small width
117      */
118         /**
119      * @cfg {String} mdHeader Header at Bootsrap Medium width
120      */
121         /**
122      * @cfg {String} lgHeader Header at Bootsrap Large width
123      */
124         /**
125      * @cfg {String} xlHeader Header at Bootsrap extra Large width
126      */
127     /**
128      * @cfg {String} dataIndex  The name of the field in the grid's {@link Roo.data.Store}'s
129      * {@link Roo.data.Record} definition from which to draw the column's value. If not
130      * specified, the column's index is used as an index into the Record's data Array.
131      */
132     /**
133      * @cfg {Number} width  The initial width in pixels of the column. Using this
134      * instead of {@link Roo.grid.Grid#autoSizeColumns} is more efficient.
135      */
136     /**
137      * @cfg {Boolean} sortable True if sorting is to be allowed on this column.
138      * Defaults to the value of the {@link #defaultSortable} property.
139      * Whether local/remote sorting is used is specified in {@link Roo.data.Store#remoteSort}.
140      */
141     /**
142      * @cfg {Boolean} locked  True to lock the column in place while scrolling the Grid.  Defaults to false.
143      */
144     /**
145      * @cfg {Boolean} fixed  True if the column width cannot be changed.  Defaults to false.
146      */
147     /**
148      * @cfg {Boolean} resizable  False to disable column resizing. Defaults to true.
149      */
150     /**
151      * @cfg {Boolean} hidden  True to hide the column. Defaults to false.
152      */
153     /**
154      * @cfg {Function} renderer A function used to generate HTML markup for a cell
155      * given the cell's data value. See {@link #setRenderer}. If not specified, the
156      * default renderer returns the escaped data value. If an object is returned (bootstrap only)
157      * then it is treated as a Roo Component object instance, and it is rendered after the initial row is rendered
158      */
159        /**
160      * @cfg {Roo.grid.GridEditor} editor  For grid editors - returns the grid editor 
161      */
162     /**
163      * @cfg {String} align (left|right) Set the CSS text-align property of the column.  Defaults to undefined (left).
164      */
165     /**
166      * @cfg {String} valign (top|bottom|middle) Set the CSS vertical-align property of the column (eg. middle, top, bottom etc).  Defaults to undefined (middle)
167      */
168     /**
169      * @cfg {String} cursor ( auto|default|none|context-menu|help|pointer|progress|wait|cell|crosshair|text|vertical-text|alias|copy|move|no-drop|not-allowed|e-resize|n-resize|ne-resize|nw-resize|s-resize|se-resize|sw-resize|w-resize|ew-resize|ns-resize|nesw-resize|nwse-resize|col-resize|row-resize|all-scroll|zoom-in|zoom-out|grab|grabbing)
170      */
171     /**
172      * @cfg {String} tooltip mouse over tooltip text
173      */
174     /**
175      * @cfg {Number} xs  can be '0' for hidden at this size (number less than 12)
176      */
177     /**
178      * @cfg {Number} sm can be '0' for hidden at this size (number less than 12)
179      */
180     /**
181      * @cfg {Number} md can be '0' for hidden at this size (number less than 12)
182      */
183     /**
184      * @cfg {Number} lg   can be '0' for hidden at this size (number less than 12)
185      */
186         /**
187      * @cfg {Number} xl   can be '0' for hidden at this size (number less than 12)
188      */
189     /**
190      * Returns the id of the column at the specified index.
191      * @param {Number} index The column index
192      * @return {String} the id
193      */
194     </span><span class="jsdoc-var">getColumnId </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">){
195         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id</span><span class="jsdoc-syntax">;
196     },
197
198     </span><span class="jsdoc-comment">/**
199      * Returns the column for a specified id.
200      * @param {String} id The column id
201      * @return {Object} the column
202      */
203     </span><span class="jsdoc-var">getColumnById </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
204         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.lookup</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">];
205     },
206
207
208     </span><span class="jsdoc-comment">/**
209      * Returns the column Object for a specified dataIndex.
210      * @param {String} dataIndex The column dataIndex
211      * @return {Object|Boolean} the column or false if not found
212      */
213     </span><span class="jsdoc-var">getColumnByDataIndex</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dataIndex</span><span class="jsdoc-syntax">){
214         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.findColumnIndex</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dataIndex</span><span class="jsdoc-syntax">);
215         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">index </span><span class="jsdoc-syntax">&gt; -1 ? </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">index</span><span class="jsdoc-syntax">] : </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
216     },
217
218     </span><span class="jsdoc-comment">/**
219      * Returns the index for a specified column id.
220      * @param {String} id The column id
221      * @return {Number} the index, or -1 if not found
222      */
223     </span><span class="jsdoc-var">getIndexById </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
224         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
225             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">){
226                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">;
227             }
228         }
229         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">-1;
230     },
231
232     </span><span class="jsdoc-comment">/**
233      * Returns the index for a specified column dataIndex.
234      * @param {String} dataIndex The column dataIndex
235      * @return {Number} the index, or -1 if not found
236      */
237
238     </span><span class="jsdoc-var">findColumnIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dataIndex</span><span class="jsdoc-syntax">){
239         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
240             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dataIndex </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">dataIndex</span><span class="jsdoc-syntax">){
241                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">;
242             }
243         }
244         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">-1;
245     },
246
247
248     </span><span class="jsdoc-var">moveColumn </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oldIndex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newIndex</span><span class="jsdoc-syntax">){
249         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oldIndex</span><span class="jsdoc-syntax">];
250         </span><span class="jsdoc-var">this.config.splice</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oldIndex</span><span class="jsdoc-syntax">, 1);
251         </span><span class="jsdoc-var">this.config.splice</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">newIndex</span><span class="jsdoc-syntax">, 0, </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">);
252         </span><span class="jsdoc-var">this.dataMap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
253         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;columnmoved&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">oldIndex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">newIndex</span><span class="jsdoc-syntax">);
254     },
255
256     </span><span class="jsdoc-var">isLocked </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">){
257         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.locked </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
258     },
259
260     </span><span class="jsdoc-var">setLocked </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">suppressEvent</span><span class="jsdoc-syntax">){
261         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isLocked</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">){
262             </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
263         }
264         </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.locked </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
265         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">suppressEvent</span><span class="jsdoc-syntax">){
266             </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;columnlockchange&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
267         }
268     },
269
270     </span><span class="jsdoc-var">getTotalLockedWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
271         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">totalWidth </span><span class="jsdoc-syntax">= 0;
272         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
273             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isLocked</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) &amp;&amp; !</span><span class="jsdoc-var">this.isHidden</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)){
274                 </span><span class="jsdoc-var">this.totalWidth </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.getColumnWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
275             }
276         }
277         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">totalWidth</span><span class="jsdoc-syntax">;
278     },
279
280     </span><span class="jsdoc-var">getLockedCount </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(){
281         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
282             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.isLocked</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)){
283                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">;
284             }
285         }
286
287         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">;
288     },
289
290     </span><span class="jsdoc-comment">/**
291      * Returns the number of columns.
292      * @return {Number}
293      */
294     </span><span class="jsdoc-var">getColumnCount </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">visibleOnly</span><span class="jsdoc-syntax">){
295         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">visibleOnly </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
296             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= 0;
297             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
298                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.isHidden</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)){
299                     </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">++;
300                 }
301             }
302             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
303         }
304         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">;
305     },
306
307     </span><span class="jsdoc-comment">/**
308      * Returns the column configs that return true by the passed function that is called with (columnConfig, index)
309      * @param {Function} fn
310      * @param {Object} scope (optional)
311      * @return {Array} result
312      */
313     </span><span class="jsdoc-var">getColumnsBy </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">){
314         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= [];
315         </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
316             </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">c </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
317             </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">fn.call</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">scope</span><span class="jsdoc-syntax">||</span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) === </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">){
318                 </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">r.length</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
319             }
320         }
321         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">;
322     },
323
324     </span><span class="jsdoc-comment">/**
325      * Returns true if the specified column is sortable.
326      * @param {Number} col The column index
327      * @return {Boolean}
328      */
329     </span><span class="jsdoc-var">isSortable </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">){
330         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.sortable </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;undefined&quot;</span><span class="jsdoc-syntax">){
331             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.defaultSortable</span><span class="jsdoc-syntax">;
332         }
333         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.sortable</span><span class="jsdoc-syntax">;
334     },
335
336     </span><span class="jsdoc-comment">/**
337      * Returns the rendering (formatting) function defined for the column.
338      * @param {Number} col The column index.
339      * @return {Function} The function used to render the cell. See {@link #setRenderer}.
340      */
341     </span><span class="jsdoc-var">getRenderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">){
342         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.renderer</span><span class="jsdoc-syntax">){
343             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.grid.ColumnModel.defaultRenderer</span><span class="jsdoc-syntax">;
344         }
345         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.renderer</span><span class="jsdoc-syntax">;
346     },
347
348     </span><span class="jsdoc-comment">/**
349      * Sets the rendering (formatting) function for a column.
350      * @param {Number} col The column index
351      * @param {Function} fn The function to use to process the cell's raw data
352      * to return HTML markup for the grid view. The render function is called with
353      * the following parameters:&lt;ul&gt;
354      * &lt;li&gt;Data value.&lt;/li&gt;
355      * &lt;li&gt;Cell metadata. An object in which you may set the following attributes:&lt;ul&gt;
356      * &lt;li&gt;css A CSS style string to apply to the table cell.&lt;/li&gt;
357      * &lt;li&gt;attr An HTML attribute definition string to apply to the data container element &lt;i&gt;within&lt;/i&gt; the table cell.&lt;/li&gt;&lt;/ul&gt;
358      * &lt;li&gt;The {@link Roo.data.Record} from which the data was extracted.&lt;/li&gt;
359      * &lt;li&gt;Row index&lt;/li&gt;
360      * &lt;li&gt;Column index&lt;/li&gt;
361      * &lt;li&gt;The {@link Roo.data.Store} object from which the Record was extracted&lt;/li&gt;&lt;/ul&gt;
362      */
363     </span><span class="jsdoc-var">setRenderer </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">){
364         </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.renderer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">fn</span><span class="jsdoc-syntax">;
365     },
366
367     </span><span class="jsdoc-comment">/**
368      * Returns the width for the specified column.
369      * @param {Number} col The column index
370      * @param (optional) {String} gridSize bootstrap width size.
371      * @return {Number}
372      */
373     </span><span class="jsdoc-var">getColumnWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">gridSize</span><span class="jsdoc-syntax">)
374         {
375                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">cfg </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">];
376
377                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">gridSize</span><span class="jsdoc-syntax">) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
378                         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">cfg.width </span><span class="jsdoc-syntax">* 1 || </span><span class="jsdoc-var">this.defaultWidth</span><span class="jsdoc-syntax">;
379                 }
380                 </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">gridSize </span><span class="jsdoc-syntax">=== </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-comment">// if we set it..
381                         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">cfg.width </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
382                 }
383                 </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sizes </span><span class="jsdoc-syntax">= [</span><span class="jsdoc-string">'xl'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'lg'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'md'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'sm'</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">'xs'</span><span class="jsdoc-syntax">];
384
385                 </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">sizes.indexOf</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">gridSize</span><span class="jsdoc-syntax">); </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">sizes.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++) {
386                         </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">cfg</span><span class="jsdoc-syntax">[ </span><span class="jsdoc-var">sizes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] ] ) == </span><span class="jsdoc-string">'undefined'</span><span class="jsdoc-syntax">) {
387                                 </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
388                         }
389                         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">cfg</span><span class="jsdoc-syntax">[ </span><span class="jsdoc-var">sizes</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] ];
390                 }
391                 </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">1;
392
393     },
394
395     </span><span class="jsdoc-comment">/**
396      * Sets the width for a column.
397      * @param {Number} col The column index
398      * @param {Number} width The new width
399      */
400     </span><span class="jsdoc-var">setColumnWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">suppressEvent</span><span class="jsdoc-syntax">){
401         </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.width </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">;
402         </span><span class="jsdoc-var">this.totalWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
403         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">suppressEvent</span><span class="jsdoc-syntax">){
404              </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;widthchange&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">width</span><span class="jsdoc-syntax">);
405         }
406     },
407
408     </span><span class="jsdoc-comment">/**
409      * Returns the total width of all columns.
410      * @param {Boolean} includeHidden True to include hidden column widths
411      * @return {Number}
412      */
413     </span><span class="jsdoc-var">getTotalWidth </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">includeHidden</span><span class="jsdoc-syntax">){
414         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.totalWidth</span><span class="jsdoc-syntax">){
415             </span><span class="jsdoc-var">this.totalWidth </span><span class="jsdoc-syntax">= 0;
416             </span><span class="jsdoc-keyword">for</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= 0, </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">&lt; </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">++){
417                 </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">includeHidden </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.isHidden</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">)){
418                     </span><span class="jsdoc-var">this.totalWidth </span><span class="jsdoc-syntax">+= </span><span class="jsdoc-var">this.getColumnWidth</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">);
419                 }
420             }
421         }
422         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.totalWidth</span><span class="jsdoc-syntax">;
423     },
424
425     </span><span class="jsdoc-comment">/**
426      * Returns the header for the specified column.
427      * @param {Number} col The column index
428      * @return {String}
429      */
430     </span><span class="jsdoc-var">getColumnHeader </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">){
431         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.header</span><span class="jsdoc-syntax">;
432     },
433
434     </span><span class="jsdoc-comment">/**
435      * Sets the header for a column.
436      * @param {Number} col The column index
437      * @param {String} header The new header
438      */
439     </span><span class="jsdoc-var">setColumnHeader </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">){
440         </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.header </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">;
441         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;headerchange&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">header</span><span class="jsdoc-syntax">);
442     },
443
444     </span><span class="jsdoc-comment">/**
445      * Returns the tooltip for the specified column.
446      * @param {Number} col The column index
447      * @return {String}
448      */
449     </span><span class="jsdoc-var">getColumnTooltip </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">){
450             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.tooltip</span><span class="jsdoc-syntax">;
451     },
452     </span><span class="jsdoc-comment">/**
453      * Sets the tooltip for a column.
454      * @param {Number} col The column index
455      * @param {String} tooltip The new tooltip
456      */
457     </span><span class="jsdoc-var">setColumnTooltip </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">tooltip</span><span class="jsdoc-syntax">){
458             </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.tooltip </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">tooltip</span><span class="jsdoc-syntax">;
459     },
460
461     </span><span class="jsdoc-comment">/**
462      * Returns the dataIndex for the specified column.
463      * @param {Number} col The column index
464      * @return {Number}
465      */
466     </span><span class="jsdoc-var">getDataIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">){
467         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dataIndex</span><span class="jsdoc-syntax">;
468     },
469
470     </span><span class="jsdoc-comment">/**
471      * Sets the dataIndex for a column.
472      * @param {Number} col The column index
473      * @param {Number} dataIndex The new dataIndex
474      */
475     </span><span class="jsdoc-var">setDataIndex </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dataIndex</span><span class="jsdoc-syntax">){
476         </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.dataIndex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dataIndex</span><span class="jsdoc-syntax">;
477     },
478
479
480
481     </span><span class="jsdoc-comment">/**
482      * Returns true if the cell is editable.
483      * @param {Number} colIndex The column index
484      * @param {Number} rowIndex The row index - this is nto actually used..?
485      * @return {Boolean}
486      */
487     </span><span class="jsdoc-var">isCellEditable </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">rowIndex</span><span class="jsdoc-syntax">){
488         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.editable </span><span class="jsdoc-syntax">|| (</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.editable </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;undefined&quot; </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.editor</span><span class="jsdoc-syntax">)) ? </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
489     },
490
491     </span><span class="jsdoc-comment">/**
492      * Returns the editor defined for the cell/column.
493      * return false or null to disable editing.
494      * @param {Number} colIndex The column index
495      * @param {Number} rowIndex The row index
496      * @return {Object}
497      */
498     </span><span class="jsdoc-var">getCellEditor </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">rowIndex</span><span class="jsdoc-syntax">){
499         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.editor</span><span class="jsdoc-syntax">;
500     },
501
502     </span><span class="jsdoc-comment">/**
503      * Sets if a column is editable.
504      * @param {Number} col The column index
505      * @param {Boolean} editable True if the column is editable
506      */
507     </span><span class="jsdoc-var">setEditable </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editable</span><span class="jsdoc-syntax">){
508         </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.editable </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">editable</span><span class="jsdoc-syntax">;
509     },
510
511
512     </span><span class="jsdoc-comment">/**
513      * Returns true if the column is hidden.
514      * @param {Number} colIndex The column index
515      * @return {Boolean}
516      */
517     </span><span class="jsdoc-var">isHidden </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">){
518         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.hidden</span><span class="jsdoc-syntax">;
519     },
520
521
522     </span><span class="jsdoc-comment">/**
523      * Returns true if the column width cannot be changed
524      */
525     </span><span class="jsdoc-var">isFixed </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">){
526         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.fixed</span><span class="jsdoc-syntax">;
527     },
528
529     </span><span class="jsdoc-comment">/**
530      * Returns true if the column can be resized
531      * @return {Boolean}
532      */
533     </span><span class="jsdoc-var">isResizable </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">){
534         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">colIndex </span><span class="jsdoc-syntax">&gt;= 0 &amp;&amp; </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.resizable </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">false </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.fixed </span><span class="jsdoc-syntax">!== </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
535     },
536     </span><span class="jsdoc-comment">/**
537      * Sets if a column is hidden.
538      * @param {Number} colIndex The column index
539      * @param {Boolean} hidden True if the column is hidden
540      */
541     </span><span class="jsdoc-var">setHidden </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">hidden</span><span class="jsdoc-syntax">){
542         </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.hidden </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">hidden</span><span class="jsdoc-syntax">;
543         </span><span class="jsdoc-var">this.totalWidth </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
544         </span><span class="jsdoc-var">this.fireEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;hiddenchange&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">colIndex</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">hidden</span><span class="jsdoc-syntax">);
545     },
546
547     </span><span class="jsdoc-comment">/**
548      * Sets the editor for a column.
549      * @param {Number} col The column index
550      * @param {Object} editor The editor object
551      */
552     </span><span class="jsdoc-var">setEditor </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">editor</span><span class="jsdoc-syntax">){
553         </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">col</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.editor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">editor</span><span class="jsdoc-syntax">;
554     },
555     </span><span class="jsdoc-comment">/**
556      * Add a column (experimental...) - defaults to adding to the end..
557      * @param {Object} config 
558     */
559     </span><span class="jsdoc-var">addColumn </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">)
560     {
561
562         </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.config.length</span><span class="jsdoc-syntax">;
563         </span><span class="jsdoc-var">this.config</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
564
565         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">c.dataIndex </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;undefined&quot;</span><span class="jsdoc-syntax">){
566             </span><span class="jsdoc-var">c.dataIndex </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">;
567         }
568         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">c.renderer </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot;</span><span class="jsdoc-syntax">){
569             </span><span class="jsdoc-var">c.renderer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.util.Format</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">c.renderer</span><span class="jsdoc-syntax">];
570         }
571         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">c.id </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;undefined&quot;</span><span class="jsdoc-syntax">){
572             </span><span class="jsdoc-var">c.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.id</span><span class="jsdoc-syntax">();
573         }
574         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.editor </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">c.editor.xtype</span><span class="jsdoc-syntax">){
575             </span><span class="jsdoc-var">c.editor  </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.factory</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.editor</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">Roo.grid</span><span class="jsdoc-syntax">);
576         }
577         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.editor </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">c.editor.isFormField</span><span class="jsdoc-syntax">){
578             </span><span class="jsdoc-var">c.editor </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.grid.GridEditor</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">c.editor</span><span class="jsdoc-syntax">);
579         }
580         </span><span class="jsdoc-var">this.lookup</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">c.id</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">c</span><span class="jsdoc-syntax">;
581     }
582
583 });
584
585 </span><span class="jsdoc-var">Roo.grid.ColumnModel.defaultRenderer </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">)
586 {
587     </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;object&quot;</span><span class="jsdoc-syntax">) {
588         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">;
589     }
590         </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">value </span><span class="jsdoc-syntax">== </span><span class="jsdoc-string">&quot;string&quot; </span><span class="jsdoc-syntax">&amp;&amp; </span><span class="jsdoc-var">value.length </span><span class="jsdoc-syntax">&lt; 1){
591             </span><span class="jsdoc-keyword">return </span><span class="jsdoc-string">&quot;&amp;#160;&quot;</span><span class="jsdoc-syntax">;
592         }
593
594         </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">String.format</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">&quot;{0}&quot;</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">value</span><span class="jsdoc-syntax">);
595 };
596
597 </span><span class="jsdoc-comment">// Alias for backwards compatibility
598 </span><span class="jsdoc-var">Roo.grid.DefaultColumnModel </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.grid.ColumnModel</span><span class="jsdoc-syntax">;
599 </span></code></body></html>