如何在ExtJs中动态地将seriesStyles应用于piechart
我试图从JSON数据中动态地将“seriesstyles”设置为piechart。当“oneWeekStore”加载JSON数据时,我希望通过每个记录的“颜色”和setSeriesStyles动态迭代到PieChart。下面是片段如何在ExtJs中动态地将seriesStyles应用于piechart,extjs,pie-chart,Extjs,Pie Chart,我试图从JSON数据中动态地将“seriesstyles”设置为piechart。当“oneWeekStore”加载JSON数据时,我希望通过每个记录的“颜色”和setSeriesStyles动态迭代到PieChart。下面是片段 var oneWeekStore = new Ext.data.JsonStore({ id:'jsonStore', fields: ['appCount','appName'], autoLoad: true,
var oneWeekStore = new Ext.data.JsonStore({
id:'jsonStore',
fields: ['appCount','appName'],
autoLoad: true,
root: 'rows',
proxy:storeProxy,
baseParams:{
'interval':'oneWeek',
'fromDate':frmDt.getValue()
},
listeners: {load: {
fn:function(store,records,options) {
/*I wish iterate through each record,fetch 'color'
and setSeriesStyles. I tried passing sample arrays
as paramater to setSeriesStyles like
**colors= new Array('0x08E3FE','0x448991','0x054D56');
Ext.getCmp('test12').setSeriesStyles(colors)**
But FF throws error "this.swf is undefined". Could
you please let me know the right format to pass as
parameter. */
}
});
var panel = new Ext.Panel{
id: '1week', title:'1 week',
items : [
{ id:'test12',
xtype : 'piechart',
store : oneWeekStore,
dataField : 'appCount',
categoryField : 'appName',
extraStyle : {
legend:{
display : 'right',
padding : 5,
spacing: 2, font :color:0x000000,family:
'Arial', size:9},
border:{size :1,color :0x999999},
background:{color: 0xd6e1cc}
} } } ] }
我的JSON数据如下所示:
{"success":true,"rows":[{"appCount":"9693814","appName":"GED","color":"0xFB5D0D"},{"appCount":"5731","appName":"SGEF"","color":"0xFFFF6B"}]}
非常感谢您的指导您在那里有一个经典的比赛条件-您设置了一个依赖于未知状态的组件的活动 您设置的事件是加载数据存储,当加载完成后,它将尝试与面板交互,但此时我们不知道面板是否已渲染 你最好的办法是让这些事情中的一件发生在对另一件的反应中,例如: 1)加载存储 2)启动负载事件时,创建面板
var oneWeekStore = new Ext.data.JsonStore({
id:'jsonStore',
...,
listeners: {
load:function(store,records,options) {
var panel = new Ext.Panel({
...,
seriesStyles: colors,
...
});
}
}
});
或
1)创建面板(图表)
2)在面板的渲染事件中,加载存储(移除自动加载:true)
希望这能有所帮助。你有一个经典的比赛条件——你设置了一个运动中的事件,该事件依赖于一个状态未知的组件 您设置的事件是加载数据存储,当加载完成后,它将尝试与面板交互,但此时我们不知道面板是否已渲染 你最好的办法是让这些事情中的一件发生在对另一件的反应中,例如: 1)加载存储 2)启动负载事件时,创建面板
var oneWeekStore = new Ext.data.JsonStore({
id:'jsonStore',
...,
listeners: {
load:function(store,records,options) {
var panel = new Ext.Panel({
...,
seriesStyles: colors,
...
});
}
}
});
或
1)创建面板(图表)
2)在面板的渲染事件中,加载存储(移除自动加载:true)
希望这能有所帮助。我也在尝试找出setSeriesStyles的正确格式-YUI的文档和论坛很糟糕…我也在尝试找出setSeriesStyles的正确格式-YUI的文档和论坛很糟糕。。。