根据store后台返回数据,动态创建图表类型,以及图表对象中包括的柱形,线性等等对象。暂时只支持柱形、和线性图表。
/**
* Extjs4 动态创建图表
* author:shangql
* date:2012.12.12
*/
/**
* 判断空如果为空返回true
*
* @param obj
* @returns {Boolean}
*/
function isEmpty(obj){
if(typeof(obj) == 'undefined' || obj == ''){
return true;
}
}
/**
* 创建刻度引用字段
* @param num
* @returns {Array}
*/
function newNumericFields(num){
var fieldsArr = new Array();
for ( var i = 1; i <= num; i++) {
fieldsArr.push('data'+i);
}
return fieldsArr;
}
/**
* 创建数据集引用字段
* @param num
* @returns {Array}
*/
function newStoreFields(num){
var fieldsArr = new Array();
fieldsArr.push("name");
for ( var i = 1; i <= num; i++) {
fieldsArr.push('name'+i);
fieldsArr.push('data'+i);
}
return fieldsArr;
}
/**
* 创建Y坐标轴
*
* @param position
* 坐标轴显示位置(left;right)
* @returns 坐标轴对象
*/
function newNumeric(position){
var Numeric = {
type: 'Numeric',
minimum: 0,
position: position,
fields: ['data1','data2','data3','data4','data5','data6','data7','data8','data9'],
minorTickSteps: 9,
majorTickSteps:9,
grid: {
odd: {
opacity: 1,
fill: '#ddd',
stroke: '#bbb',
'stroke-width': 0.5
}
},
grid:true,
label:{
renderer:function(v){
return Ext.util.Format.round(v,2);
},
font: '10px Arial'
}
};
return Numeric;
}
/**
* 创建X坐标轴
*
* @param position
* 坐标轴显示位置(top;bottom)
* @param title
* 坐标轴显示标题(可以是'')
* @returns 坐标轴对象
*/
function newCategory(position,title){
var Category = {
type: 'Category',
position: position,
title: title,
fields: ['name'],
label: {
font: '9px Chancery'
}
};
return Category;
}
/**
* 创建柱
* @param position 线的轴刻度显示位置(left;right)
* @param tips 鼠标滑过图表显示的lable引用的字段
* @param title 图表图例汉字标题
* @param renderer 鼠标滑过图表显示的lable的单位
* @returns 柱形对象
*/
function newColumn (position,tips,title,renderer){
var column = {
type: 'column',
axis: position,
highlight: {
stroke:'green'
},
tips: {
trackMouse: true,
width: 140,
height: 28,
renderer: function(storeItem, item) {
if(isEmpty(renderer)){
this.setTitle(storeItem.get('name') + ': ' + storeItem.get(tips));
}else{
this.setTitle(storeItem.get('name') + ': ' + storeItem.get(tips) + renderer );
}
}
},
style:{
width:40
},
label: {
display: 'insideEnd',
'text-anchor': 'middle',
field: '',
renderer: Ext.util.Format.numberRenderer('0'),
orientation: 'vertical',
color: '#333'
},
title:title,
xField: 'name',
yField: tips
};
return column;
}
/**
* 创建线
* @param position 线的轴刻度显示位置(left;right)
* @param tips 鼠标滑过图表显示的lable引用的字段
* @param title 图表图例汉字标题
* @param renderer 鼠标滑过图表显示的lable的单位
* @returns 线形对象
*/
function newLine (position,tips,title,renderer){
var line = {
type: 'line',
highlight: {
size: 7,
radius: 7
},
axis: position,
smooth: true,
fill: false,
title:title,
xField: 'name',
yField: tips,
markerConfig: {
type: 'circle',
size: 4,
radius: 4,
'stroke-width': 0
},
style: {
'stroke-width': 3,
fill: false,
opacity: 0.2
},
tips: {
trackMouse: true,
width: 140,
height: 28,
renderer: function(storeItem, item) {
if(isEmpty(renderer)){
this.setTitle(storeItem.get('name') + ': ' + storeItem.get(tips));
}else{
this.setTitle(storeItem.get('name') + ': ' + storeItem.get(tips) + renderer );
}
}
}
};
return line;
}
/**
* 画图表
* @param store 数据集
* @param category 样式种类
* @param title 标题
* @param seriesType 图表类型 column;line(暂时 只支持 柱形,线形)
* @param renderer 渲染单位 可以为''
* @returns
*/
function drawChart(store,category,title,seriesType,renderer){
// 轴线数组
var axes = new Array();
// 图表类型数组
var series = new Array();
//============实例化轴============
// y左坐标轴
var leftNumeric = newNumeric('left');
var bottomTitle = title + "分析指标";
// x底部坐标轴
var bottomCategory = newCategory('bottom',bottomTitle);
// 添加到轴线数组,y左右坐标轴
axes.push(leftNumeric);
axes.push(bottomCategory);
//判断图表类型
if(seriesType == 'column'){
// 实例化柱形图
var column = newColumn('left','data1',title,renderer);
series.push(column);
}else if(seriesType == 'line'){
// 实例化线形图
var line = newLine('left','data1',title,renderer);
series.push(line);
}
// 创建图表对象
var chart = Ext.create('Ext.chart.Chart', {
xtype: 'chart',
width: $(window).width(),
height: $(window).height() * 0.9,
style: 'background:#fff',
animate: true,
shadow: false,
store: store,
theme: category,
insetPadding: 50,
legend: {
position: 'right'
},
axes: axes,
series: series
});
// 返回图表对象
return chart;
}
分享到:
相关推荐
- 可以利用Ext JS的API动态更新图表,例如改变数据源或调整配置。 - 利用Tips和事件监听器可以增加交互性,为用户提供更丰富的信息。 总结,Ext JS 4 Charts 提供了一套强大且灵活的工具来创建各种类型的图表。...
- 图表的基础元素包括系列(series)、轴(axes)、图例(legend)和提示(tooltip)等,这些都是创建图表的核心部分。 2. **创建图表** - 首先,你需要在HTML页面中引入ExtJS库和图表相关的CSS及JavaScript文件...
它提供了一整套组件和功能,包括布局管理、数据绑定、图表、表格等,使得开发者能够创建交互式、高性能的用户界面。在“ExtJs 连接数据库并且生成动态树”这个主题中,我们将探讨如何利用ExtJs来连接后端数据库,并...
在本案例中,我们将深入探讨如何使用ExtJS读取并解析后端返回的JSON格式数据,然后将这些数据呈现为动态的条形图,以实现吸引用户注意力的视觉效果。 首先,JSON(JavaScript Object Notation)是一种轻量级的数据...
它提供了一整套组件库,包括用于创建复杂布局、数据绑定、图表以及我们关注的“动态树”功能。动态树(Dynamic Tree)是指在运行时可以动态加载、添加、删除或更新节点的树形控件。在ExtJS中,这种功能主要通过`Ext....
总结起来,初始化并渲染一个ExtJS雷达图表,关键在于理解数据模型(store)、系列(series)配置以及轴(axes)的设定。通过合理的配置,我们可以有效地展示复杂数据,为用户提供直观的可视化体验。在实践中,不断...
它提供了丰富的组件库,包括数据绑定、布局管理、图表以及我们今天要讨论的重点——动态树形菜单。动态树加载菜单是 ExtJS 中一种常见且实用的功能,它允许用户在需要时按需加载树节点,从而提高应用性能,减少初次...
它提供了丰富的组件库,包括图表(Chart)功能,让开发者能够创建交互式的、数据驱动的可视化元素。在4.2版本中,ExtJS 的图表功能得到了进一步的增强,为用户提供了多种图表类型,其中柱状图(Bar Chart)是常用的...
在EXTJS中,可以创建一个Store对象来管理数据。数据可以是静态的,也可以动态从服务器加载。 2. 创建模型(Model):定义store中数据字段的结构。这有助于保持数据的一致性和完整性。 3. 创建chart:定义图表的...
例如,你可以创建一个动态更新的数据图表,展示实时销售数据或股票走势,使用户能直观地了解信息变化。 接下来,我们讨论多级联动下拉列表框控件。这种控件在许多数据筛选和导航场景中非常常见。在一级、二级、三级...
9. **EXTJS Charts与.NET图表控件**:EXTJS的图表组件能够生成各种复杂的数据可视化图表,与.NET的图表控件相比,EXTJS的图表更加动态和交互性更强。 10. **EXTJS Theming与.NET皮肤设计**:EXTJS允许开发者自定义...
EXTJS则是一个前端JavaScript库,它提供了丰富的用户界面组件,如数据网格(Grid)、图表、表单等,能够创建高度交互的Web应用。这个例子程序源码主要展示了如何将两者结合,动态生成Grid列表。 在ASP.NET中,...
ExtJS 4.0提供了一套丰富的组件库,包括表格、面板、表单、树形结构等,所有组件都可以动态创建和修改。这使得开发者可以构建高度交互和可配置的用户界面。 4. Store管理 Store是ExtJS 4中处理数据的主要对象,它...
EXTJS以其丰富的用户界面组件、数据网格、图表以及强大的布局管理而闻名,而ASP.NET则提供了稳定的后端服务支持。下面我们将深入探讨这个主题。 首先,EXTJS是一个基于JavaScript的前端框架,主要用来构建富互联网...
在实际开发中,结合这些知识点,你可以实现一个动态的、响应用户输入的图表组件,用户可以根据需求选择显示的数据部分,同时保持图表的清晰性和易读性。这不仅提高了用户体验,也有助于数据分析和决策制定。为了实现...
- 结合Servlet和JSP,Struts可以接收前端ExtJS发送的Ajax请求,处理业务逻辑,并返回JSON或XML数据,更新前端界面。 3. **MySQL数据库**: - MySQL是一个关系型数据库管理系统,广泛应用于Web应用开发,具有高...
EXTjs4.2中的图表组件得到了显著提升,提供了丰富的图表类型,包括柱状图、饼图、线图等,可以动态展示和交互,为数据分析和可视化提供了强大的工具。此外,4.2版本还改进了表格组件,增加了行编辑、列拖动等功能,...
7. **图表组件**:ExtJS的图表组件能生成各种类型的图表,如柱状图、饼图、线图等,适合数据可视化需求。 8. **Ajax通信**:ExtJS内置了Ajax功能,可以方便地进行异步请求,与服务器进行数据交换。 9. **事件处理*...
11. **图表组件**:虽然不是ExtJS 3.2的核心部分,但通过EXTJS的Charting库,可以创建各种数据可视化图表,如柱状图、饼图、线图等。 12. **JSP集成**:在描述中提到的"js+jsp实现功能",表明此压缩包可能包含与...
6. **图表和图形**:通过ExtJS的Charts模块,开发者可以创建各种数据可视化图表,如柱状图、折线图、饼图等,帮助用户更好地理解和解析数据。 7. **触摸友好**:随着移动设备的普及,ExtJS还提供了Ext JS Touch版本...