Alien-Web-ExtJS-V3
view release on metacpan or search on metacpan
share/src/widgets/list/ListView.js view on Meta::CPAN
cs = this.columns = columns;
// auto calculate missing column widths
if(colsWithWidth < len){
var remaining = len - colsWithWidth;
if(allocatedWidth < this.maxColumnWidth){
var perCol = ((this.maxColumnWidth-allocatedWidth) / remaining)/100;
for(var j = 0; j < len; j++){
var c = cs[j];
if(!c.width){
c.width = perCol;
}
}
}
}
Ext.list.ListView.superclass.initComponent.call(this);
},
onRender : function(){
this.autoEl = {
cls: 'x-list-wrap'
};
Ext.list.ListView.superclass.onRender.apply(this, arguments);
this.internalTpl.overwrite(this.el, {columns: this.columns});
this.innerBody = Ext.get(this.el.dom.childNodes[1].firstChild);
this.innerHd = Ext.get(this.el.dom.firstChild.firstChild);
if(this.hideHeaders){
this.el.dom.firstChild.style.display = 'none';
}
},
getTemplateTarget : function(){
return this.innerBody;
},
/**
* <p>Function which can be overridden which returns the data object passed to this
* view's {@link #tpl template} to render the whole ListView. The returned object
* shall contain the following properties:</p>
* <div class="mdetail-params"><ul>
* <li><b>columns</b> : String<div class="sub-desc">See <tt>{@link #columns}</tt></div></li>
* <li><b>rows</b> : String<div class="sub-desc">See
* <tt>{@link Ext.DataView}.{@link Ext.DataView#collectData collectData}</div></li>
* </ul></div>
* @param {Array} records An Array of {@link Ext.data.Record}s to be rendered into the DataView.
* @param {Number} startIndex the index number of the Record being prepared for rendering.
* @return {Object} A data object containing properties to be processed by a repeating
* XTemplate as described above.
*/
collectData : function(){
var rs = Ext.list.ListView.superclass.collectData.apply(this, arguments);
return {
columns: this.columns,
rows: rs
};
},
verifyInternalSize : function(){
if(this.lastSize){
this.onResize(this.lastSize.width, this.lastSize.height);
}
},
// private
onResize : function(w, h){
var body = this.innerBody.dom,
header = this.innerHd.dom,
scrollWidth = w - Ext.num(this.scrollOffset, Ext.getScrollBarWidth()) + 'px',
parentNode;
if(!body){
return;
}
parentNode = body.parentNode;
if(Ext.isNumber(w)){
if(this.reserveScrollOffset || ((parentNode.offsetWidth - parentNode.clientWidth) > 10)){
body.style.width = scrollWidth;
header.style.width = scrollWidth;
}else{
body.style.width = w + 'px';
header.style.width = w + 'px';
setTimeout(function(){
if((parentNode.offsetWidth - parentNode.clientWidth) > 10){
body.style.width = scrollWidth;
header.style.width = scrollWidth;
}
}, 10);
}
}
if(Ext.isNumber(h)){
parentNode.style.height = Math.max(0, h - header.parentNode.offsetHeight) + 'px';
}
},
updateIndexes : function(){
Ext.list.ListView.superclass.updateIndexes.apply(this, arguments);
this.verifyInternalSize();
},
findHeaderIndex : function(header){
header = header.dom || header;
var parentNode = header.parentNode,
children = parentNode.parentNode.childNodes,
i = 0,
c;
for(; c = children[i]; i++){
if(c == parentNode){
return i;
}
}
return -1;
},
setHdWidths : function(){
var els = this.innerHd.dom.getElementsByTagName('div'),
i = 0,
columns = this.columns,
len = columns.length;
for(; i < len; i++){
els[i].style.width = (columns[i].width*100) + '%';
}
}
});
Ext.reg('listview', Ext.list.ListView);
// Backwards compatibility alias
Ext.ListView = Ext.list.ListView;
( run in 0.457 second using v1.01-cache-2.11-cpan-5b529ec07f3 )