Skip to content

Instantly share code, notes, and snippets.

@zachlendon
Created May 15, 2013 18:07
Show Gist options
  • Select an option

  • Save zachlendon/5586004 to your computer and use it in GitHub Desktop.

Select an option

Save zachlendon/5586004 to your computer and use it in GitHub Desktop.
Grid initComponent in ExtJS 4.1
initComponent: function() {
var me = this,
scroll = me.scroll,
vertical = false,
horizontal = false,
headerCtCfg = me.columns || me.colModel,
view,
border = me.border,
i, len;
if (me.columnLines) {
me.addCls(Ext.baseCSSPrefix + 'grid-with-col-lines');
}
if (me.rowLines) {
me.addCls(Ext.baseCSSPrefix + 'grid-with-row-lines');
}
me.store = Ext.data.StoreManager.lookup(me.store || 'ext-empty-store');
if (headerCtCfg instanceof Ext.grid.header.Container) {
me.headerCt = headerCtCfg;
me.headerCt.border = border;
me.columns = me.headerCt.items.items;
} else {
if (Ext.isArray(headerCtCfg)) {
headerCtCfg = {
items: headerCtCfg,
border: border
};
}
Ext.apply(headerCtCfg, {
forceFit: me.forceFit,
sortable: me.sortableColumns,
enableColumnMove: me.enableColumnMove,
enableColumnResize: me.enableColumnResize,
enableColumnHide: me.enableColumnHide,
border: border,
sealed: me.sealedColumns
});
me.columns = headerCtCfg.items;
if (me.enableLocking || Ext.ComponentQuery.query('{locked !== undefined}{processed != true}', me.columns).length) {
me.self.mixin('lockable', Ext.grid.Lockable);
me.injectLockable();
}
}
me.scrollTask = new Ext.util.DelayedTask(me.syncHorizontalScroll, me);
me.addEvents(
'reconfigure',
'viewready'
);
me.bodyCls = me.bodyCls || '';
me.bodyCls += (' ' + me.extraBodyCls);
me.cls = me.cls || '';
me.cls += (' ' + me.extraBaseCls);
delete me.autoScroll;
if (!me.hasView) {
if (!me.headerCt) {
me.headerCt = new Ext.grid.header.Container(headerCtCfg);
}
me.columns = me.headerCt.items.items;
if (me.store.buffered && !me.store.remoteSort) {
for (i = 0, len = me.columns.length; i < len; i++) {
me.columns[i].sortable = false;
}
}
if (me.hideHeaders) {
me.headerCt.height = 0;
me.headerCt.addCls(Ext.baseCSSPrefix + 'grid-header-ct-hidden');
me.addCls(Ext.baseCSSPrefix + 'grid-header-hidden');
if (Ext.isIEQuirks) {
me.headerCt.style = {
display: 'none'
};
}
}
if (scroll === true || scroll === 'both') {
vertical = horizontal = true;
} else if (scroll === 'horizontal') {
horizontal = true;
} else if (scroll === 'vertical') {
vertical = true;
}
me.relayHeaderCtEvents(me.headerCt);
me.features = me.features || [];
if (!Ext.isArray(me.features)) {
me.features = [me.features];
}
me.dockedItems = [].concat(me.dockedItems || []);
me.dockedItems.unshift(me.headerCt);
me.viewConfig = me.viewConfig || {};
if (me.store && me.store.buffered) {
me.viewConfig.preserveScrollOnRefresh = true;
} else if (me.invalidateScrollerOnRefresh !== undefined) {
me.viewConfig.preserveScrollOnRefresh = !me.invalidateScrollerOnRefresh;
}
view = me.getView();
me.items = [view];
me.hasView = true;
if (vertical) {
if (me.store.buffered) {
me.verticalScroller = new Ext.grid.PagingScroller(Ext.apply({
panel: me,
store: me.store,
view: me.view
}, me.verticalScroller));
}
}
if (horizontal) {
if (!me.hideHeaders) {
view.on({
scroll: {
fn: me.onHorizontalScroll,
element: 'el',
scope: me
}
});
}
}
me.mon(view.store, {
load: me.onStoreLoad,
scope: me
});
me.mon(view, {
viewready: me.onViewReady,
refresh: me.onRestoreHorzScroll,
scope: me
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment