Twitter @radikft
 
				var childPanel1 = Ext.create('Ext.panel.Panel', {
    title: 'Child Panel 1',
    html: 'A Panel'
});
var childPanel2 = Ext.create('Ext.panel.Panel', {
    title: 'Child Panel 2',
    html: 'Another Panel'
});
Ext.create('Ext.container.Viewport', {
    items: [ childPanel1, childPanel2 ]
});Ext.create('Ext.tab.Panel', {
    renderTo: Ext.getBody(),
    height: 100,
    width: 200,
    items: [
        {
            xtype: 'panel',
            title: 'Tab One',
            html: 'The first tab',
            listeners: {
                render: function() {}
            }
        }
    ]
});	
Ext.define('My.custom.Component', {
    extend: 'Ext.Component'
}); 
				Ext.define('My.custom.Component', {
    extend: 'Ext.Component',
    onRender: function() {
        this.callParent(arguments); // call the superclass onRender method
    }
}); 
				 
				 
				function badTotalFn(menuItem) {
   var r = store.getRange(),
       total = 0;
 
   Ext.Array.each(r, function(rec) {
       total += rec.get(menuItem.up('dataIndex').dataIndex);
   });
}function goodTotalFn(menuItem) {
    var r = store.getRange(),
        field = menuItem.up('dataIndex').dataIndex;
        total = 0;
 
    for (var j = 0, l = r.length; j < l; j++) {
        total += r[j].get(field);
    }
 }| Browser | Bad | Good | 
|---|---|---|
| Chrome | 1700ms | 10ms | 
| IE9 | 18000ms | 500ms | 
| IE6 | Gave up | 532ms | 
{
    xtype: "tabpanel",
    items: [{
        title: "Results",
        items: {
            xtype: "grid"
            ...
        }
    }]
}{
    xtype: "tabpanel",
    items: [{
        title: "Results",
        xtype: "grid",
        ...
    }]
} 
				Ext.create('Ext.panel.Panel', {
    width: 400, height: 200,
    icon: '../shared/icons/fam/book.png',
    title: 'Test',
    tools: [{
        type: 'gear'
    }, {
        type: 'pin'
    }],
    renderTo: document.body
});