nrevelle
1 Jan 2011, 4:37 PM
I have a card layout application with multiple lists, only one uses an indexBar. The list with the indexBar is not displayed by default (so not sure why the indexBar is even rendedered at load) but the indexBar displays and until I switch to the card with that list and use the indexBar it will not hide.
Minimized test version:
http://revelleweb.net/dev/sencha/test.html
Ext.namespace('CONF');
Ext.regModel('Session', {
fields: ['id', 'phid', 'title', 'descr', 'room','day','favorite', 'datetime', 'timesort', 'fname', 'lname','hp']
});
CONF.DailySchedule = function(config){
superConfig = {
filterType : config.filterType,
filterValue : config.filterValue,
store: config.store,
title: config.title,
layout: Ext.is.Phone ? 'fit' : {type: 'vbox', align: 'center', pack: 'center'},
items: [{
xtype: 'list',
fullscreen: true,
store: config.store,
itemTpl: config.itemTpl || '<div class="session"><b>{title}</b><br/>{room}</div>',
grouped: config.grouped || true,
indexBar: config.indexBar || false,
listeners:{itemtap:{fn:this.itemtap, scope:this}}
}],
listeners:{activate:{fn:this.refresh, scope:this}}
}
CONF.DailySchedule.superclass.constructor.call(this,superConfig);
}
Ext.extend(CONF.DailySchedule,Ext.Panel,{
itemtap : function(dv, index, item, e) {
},
refresh : function(){
if(this.filterType){
this.store.clearFilter(true);
this.store.filter(this.filterType, this.filterValue);
}
}
});
Ext.reg('conf-schedule', CONF.DailySchedule);
Ext.setup({
icon: 'icon.png',
tabletStartupScreen: 'tablet_startup.png',
phoneStartupScreen: 'phone_startup.png',
glossOnIcon: false,
onReady: function() {
CONF.Sessions = new Ext.data.Store({
model: 'Session', sorters: [{property : 'timesort', direction: 'ASC'},{property : 'title', direction: 'ASC'}],
getGroupString : function(record) {
return record.get('datetime');
},
data: sessiondata
});
CONF.Authors = new Ext.data.Store({
model: 'Session', sorters: [{property : 'lname', direction: 'ASC'},{property : 'fname', direction: 'ASC'}],
getGroupString : function(record) {
return record.get('lname')[0]
},
data: sessiondata
});
CONF.Authors.filter("hp", "1");
CONF.ui = new Ext.Panel({
fullscreen: true,
layout: 'card',
items: [
new Ext.TabPanel({
tabBar: {dock: 'bottom', layout: {pack: 'center'}},
fullscreen: true,
cardSwitchAnimation: {type: 'slide', cover: true},
defaults: {scroll: 'vertical'},
items: [
{title: 'Sponsors',html: 'Sponsors',iconCls: 'settings'},
{xtype:'tabpanel', title: 'Schedule',iconCls: 'favorites', layout: Ext.is.Phone ? 'fit' : {type: 'vbox', align: 'center', pack: 'center'},items:[
{xtype:'conf-schedule', title:'Fri', filterType:'day', filterValue:"1", store: CONF.Sessions, indexBar: false},
{xtype:'conf-schedule', title:'Sat', filterType:'day', filterValue:"2", store: CONF.Sessions, indexBar: false},
{xtype:'conf-schedule', title:'Sun', filterType:'day', filterValue:"3", store: CONF.Sessions, indexBar: false}
]},
{xtype:'panel', title:'Speakers', iconCls: 'settings', layout: Ext.is.Phone ? 'fit' : {type: 'vbox', align: 'center', pack: 'center'},items:[
{xtype:'conf-schedule', store: CONF.Authors, indexBar: true, itemTpl:"{fname} {lname}"}
]},
{title: 'Sponsors',html: 'Sponsors',iconCls: 'settings'},
]
})
]
});
CONF.ui.setActiveItem(0);
}
})
Minimized test version:
http://revelleweb.net/dev/sencha/test.html
Ext.namespace('CONF');
Ext.regModel('Session', {
fields: ['id', 'phid', 'title', 'descr', 'room','day','favorite', 'datetime', 'timesort', 'fname', 'lname','hp']
});
CONF.DailySchedule = function(config){
superConfig = {
filterType : config.filterType,
filterValue : config.filterValue,
store: config.store,
title: config.title,
layout: Ext.is.Phone ? 'fit' : {type: 'vbox', align: 'center', pack: 'center'},
items: [{
xtype: 'list',
fullscreen: true,
store: config.store,
itemTpl: config.itemTpl || '<div class="session"><b>{title}</b><br/>{room}</div>',
grouped: config.grouped || true,
indexBar: config.indexBar || false,
listeners:{itemtap:{fn:this.itemtap, scope:this}}
}],
listeners:{activate:{fn:this.refresh, scope:this}}
}
CONF.DailySchedule.superclass.constructor.call(this,superConfig);
}
Ext.extend(CONF.DailySchedule,Ext.Panel,{
itemtap : function(dv, index, item, e) {
},
refresh : function(){
if(this.filterType){
this.store.clearFilter(true);
this.store.filter(this.filterType, this.filterValue);
}
}
});
Ext.reg('conf-schedule', CONF.DailySchedule);
Ext.setup({
icon: 'icon.png',
tabletStartupScreen: 'tablet_startup.png',
phoneStartupScreen: 'phone_startup.png',
glossOnIcon: false,
onReady: function() {
CONF.Sessions = new Ext.data.Store({
model: 'Session', sorters: [{property : 'timesort', direction: 'ASC'},{property : 'title', direction: 'ASC'}],
getGroupString : function(record) {
return record.get('datetime');
},
data: sessiondata
});
CONF.Authors = new Ext.data.Store({
model: 'Session', sorters: [{property : 'lname', direction: 'ASC'},{property : 'fname', direction: 'ASC'}],
getGroupString : function(record) {
return record.get('lname')[0]
},
data: sessiondata
});
CONF.Authors.filter("hp", "1");
CONF.ui = new Ext.Panel({
fullscreen: true,
layout: 'card',
items: [
new Ext.TabPanel({
tabBar: {dock: 'bottom', layout: {pack: 'center'}},
fullscreen: true,
cardSwitchAnimation: {type: 'slide', cover: true},
defaults: {scroll: 'vertical'},
items: [
{title: 'Sponsors',html: 'Sponsors',iconCls: 'settings'},
{xtype:'tabpanel', title: 'Schedule',iconCls: 'favorites', layout: Ext.is.Phone ? 'fit' : {type: 'vbox', align: 'center', pack: 'center'},items:[
{xtype:'conf-schedule', title:'Fri', filterType:'day', filterValue:"1", store: CONF.Sessions, indexBar: false},
{xtype:'conf-schedule', title:'Sat', filterType:'day', filterValue:"2", store: CONF.Sessions, indexBar: false},
{xtype:'conf-schedule', title:'Sun', filterType:'day', filterValue:"3", store: CONF.Sessions, indexBar: false}
]},
{xtype:'panel', title:'Speakers', iconCls: 'settings', layout: Ext.is.Phone ? 'fit' : {type: 'vbox', align: 'center', pack: 'center'},items:[
{xtype:'conf-schedule', store: CONF.Authors, indexBar: true, itemTpl:"{fname} {lname}"}
]},
{title: 'Sponsors',html: 'Sponsors',iconCls: 'settings'},
]
})
]
});
CONF.ui.setActiveItem(0);
}
})