Extjs 制作柱状图
在JSP页面制作柱状图,可以根据数据的变化动态实时的变化
主要是使用EXTJS自带的插件达到效果
- Ext.require('Ext.chart.*');
- Ext.require([ 'Ext.Window', 'Ext.fx.target.Sprite', 'Ext.layout.container.Fit', 'Ext.window.MessageBox' ]);
然后编写显示的位置(模板)
- var chartComMonthBudgetPanel = Ext.create('Ext.Panel', {
- id : 'chartComMonthBudgetPanel',
- // store : matDeptMonthBudgetStore,
- title : '预算分解情况',
- frame : true
- });
在需要的地方展示出来,我将代码打包写在函数里,我自己在业务中调用查询
- function _selectMatDeptMonthBudget() {
- var records = Ext.getCmp('comMatBudgetCatPanel').getSelectionModel().getSelection();
- if (Ext.getCmp('YEAR_').getValue() == null) {
- Ext.MessageBox.show({
- title : '提示',
- msg : '请输入年份',
- buttons : Ext.MessageBox.OK,
- icon : Ext.MessageBox.WARNING
- });
- return false;
- }
- if (records.length == 0) {
- Ext.MessageBox.show({
- title : '提示',
- msg : '请选择物料预算分类',
- buttons : Ext.MessageBox.OK,
- icon : Ext.MessageBox.WARNING
- });
- return false;
- }
- if (Ext.getCmp('DEPT_CODE_').getValue() == null) {
- Ext.MessageBox.show({
- title : '提示',
- msg : '请选择作业区',
- buttons : Ext.MessageBox.OK,
- icon : Ext.MessageBox.WARNING
- });
- return false;
- }
- Ext.Ajax.request({
- url : 'loadMat.do',
- type : 'ajax',
- method : 'POST',
- params : {
- 'YEAR_' : Ext.getCmp('YEAR_').getValue(),
- 'MAT_BUDGET_CAT_ID_' : records[0].get('MAT_BUDGET_CAT_ID_'),
- 'DEPT_CODE_' : Ext.getCmp('DEPT_CODE_').getValue()
- },
- callback : function(options, success, response) {
- if (success) {
- var data = Ext.decode(response.responseText);
- if (data.success) {
- matDeptYearBudget = data.matDeptYearBudget;
- if (matDeptYearBudget != null) {
- Ext.getCmp('DEPT_YEAR_BUDGET_').setValue(matDeptYearBudget.BUDGET_);
- } else {
- Ext.getCmp('DEPT_YEAR_BUDGET_').setValue(0);
- }
- } else {
- Ext.getCmp('DEPT_YEAR_BUDGET_').setValue(0);
- }
- }
- }
- });
- Ext.Ajax.request({
- url : 'select.do',
- type : 'ajax',
- method : 'POST',
- params : {
- 'YEAR_' : Ext.getCmp('YEAR_').getValue(),
- 'MAT_BUDGET_CAT_ID_' : records[0].get('MAT_BUDGET_CAT_ID_'),
- 'DEPT_CODE_' : Ext.getCmp('DEPT_CODE_').getValue()
- },
- callback : function(options, success, response) {
- if (success) {
- var data = Ext.decode(response.responseText);
- if(chartComMonthBudget != null){
- Ext.getCmp('chartComMonthBudgetPanel').removeAll(true);
- ComMonthBudgetData =[];
- }
- if (data.success) {
- matDeptMonthBudgetList = data.matDeptMonthBudgetList;
- for(var i=1;i<=12;i++){
- var a=0;
- for(var j = 0; j < matDeptMonthBudgetList.length; j++){
- if(matDeptMonthBudgetList[j].MONTH_==i){
- ComMonthBudgetData.push({MONTH_ : matDeptMonthBudgetList[j].MONTH_ + '月',MONTH_BUDGET_ : matDeptMonthBudgetList[j].BUDGET_});
- a=a+1;
- }
- }
- if(a==0){
- ComMonthBudgetData.push({MONTH_: i +'月',MONTH_BUDGET_ : 0});
- }
- }
- }
- Ext.define('WeatherPoint', {
- extend : 'Ext.data.Model',
- fields : ['MONTH_BUDGET_','MONTH_']
- });
- var ComMonthBudgetStore = Ext.create('Ext.data.Store', {
- model : 'WeatherPoint',
- data : ComMonthBudgetData
- });
- //主要是此处的代码
- chartComMonthBudget = Ext.create('Ext.chart.Chart',{
- id : chartComMonthBudget,
- height:350,
- width:600,
- style: 'background:#fff',
- animate: true,
- shadow: true,
- store : ComMonthBudgetStore,
- axes: [{
- type: 'Numeric',
- position: 'left',
- fields: ['MONTH_BUDGET_'],
- label: {
- renderer: Ext.util.Format.numberRenderer('0,0')
- },
- grid: true,
- minimum: 0
- }, {
- type: 'Category',
- position: 'bottom',
- fields: ['MONTH_'],
- title: '预算分解情况',
- minimum: 1
- }],
- series: [{
- type: 'column',
- axis: 'left',
- highlight: true,
- tips: {
- trackMouse: true,
- width: 140,
- height: 28,
- renderer : function(storeItem, item) {
- this.setTitle(item.value[0] + ': '
- + Ext.util.Format.usMoney(item.value[1]));
- }},
- label: {
- display: 'insideEnd',
- // 'text-anchor': 'middle',//这句代码没有,在很多参考地方有,但查资料后不正确,没有。
- field: 'MONTH_BUDGET_',
- renderer: Ext.util.Format.numberRenderer('0'),
- orientation: 'vertical',
- color: '#333'
- },
- xField: 'MONTH_',
- yField: 'MONTH_BUDGET_'
- }]
- });
- Ext.getCmp('chartComMonthBudgetPanel').add(chartComMonthBudget);
- }
- }
- });
- }
我需要处理查询时,在点击查询后,显示最新的数据图,于是使用了代码
- if(chartComMonthBudget != null){
- Ext.getCmp('chartComMonthBudgetPanel').removeAll(true);
- ComMonthBudgetData =[];
- }
使每次显示最新的值。
后期对代码做了进一步的优化,由于Ext.chart.Chart本身就是EXTJS的一个组件,可以直接显示,不用放在面板里。对数据的存放做了处理
- var matComMonthBudgetStore = Ext.create('Ext.data.Store', {
- storeId : 'matComMonthBudgetStore',
- autoLoad : false,
- pageSize : -1,
- fields : [ 'MONTH_', 'MONTH_BUDGET_' ]
- });
- var matComMonthBudgetChart = Ext.create('Ext.chart.Chart', {
- id : 'matComMonthBudgetChart',
- store : matComMonthBudgetStore,
- title : '预算分解情况',
- frame : true,
- animate : true,
- shadow : true,
- axes : [ {
- type : 'Numeric',//Numeric轴来展示区域序列数据
- position : 'left',//numeric轴放在图表左侧
- fields : [ 'MONTH_BUDGET_' ],
- label : {
- renderer : Ext.util.Format.numberRenderer('0,0')
- },
- grid : true,//category和numeric轴都有grid集合,水平线和垂直线会覆盖图表的背景
- minimum : 0
- }, {
- type : 'Category',//Category轴来显示数据节点的名字
- position : 'bottom',//category轴放在图表下部
- fields : [ 'MONTH_' ],
- title : '预算分解情况',
- minimum : 1
- } ],
- series : [ {
- type : 'column',//显示图形类型- line:则线图;column:柱形图;radar:雷达图
- axis : 'left',
- highlight : true,//如果设置为真,当鼠标移动到上面时,高亮。
- tips : {//为可视化标记添加工具栏
- trackMouse : true,
- width : 140,
- height : 28,
- renderer : function(storeItem, item) {
- this.setTitle(item.value[0] + ': ' + Ext.util.Format.usMoney(item.value[1]));
- }
- },
- label : {
- display : 'insideEnd',//指定饼图标签的位置。包括"rotate", "middle", "insideStart", "insideEnd", "outside", "over", "under", 或者 "none"可以用来渲染标签。
- field : 'MONTH_BUDGET_',//标签要展示的字段的名称。
- renderer : Ext.util.Format.numberRenderer('0'),
- orientation : 'vertical',//"horizontal" 或者 "vertical"
- color : '#333'
- },
- xField : 'MONTH_',
- yField : 'MONTH_BUDGET_'
- } ]
- });
- Ext.Ajax.request({
- url : 'select.do',
- type : 'ajax',
- method : 'POST',
- params : {
- 'YEAR_' : Ext.getCmp('YEAR_').getValue(),
- 'MAT_BUDGET_CAT_ID_' : records[0].get('MAT_BUDGET_CAT_ID_'),
- 'DEPT_CODE_' : Ext.getCmp('DEPT_CODE_').getValue()
- },
- callback : function(options, success, response) {
- if (success) {
- var data = Ext.decode(response.responseText);
- if (data.success) {
- var matDeptMonthBudgetList = data.matDeptMonthBudgetList;
- var matComMonthBudgetStore = Ext.data.StoreManager.lookup('matComMonthBudgetStore');
- matComMonthBudgetStore.removeAll();
- for (var i = 0; i < 12; i++) {
- matComMonthBudgetStore.add({
- MONTH_ : (i + 1) + '月',
- MONTH_BUDGET_ : (matDeptMonthBudgetList[i].BUDGET_ != null ? matDeptMonthBudgetList[i].BUDGET_ : 0)
- });
- }
- }
- }
- }
- });
欢迎大家阅览,多多评论其中的不足!!
为工程师之路添砖加瓦!!
Extjs 制作柱状图的更多相关文章
- Vue整合d3.v5.js制作--柱状图(rect)
先上效果图: 图中柱状图变成纯蓝色是鼠标滑动过的颜色(颜色可改,本人配色能力十分的强,建议直接用默认设置即可 ( ᖛ ̫ ᖛ )ʃ)) 1.环境说明 Vue版本:"vue": &q ...
- 浅谈Extjs radiogroup change事件与items下的checked属性
在使用Extjs制作crud时,由于添加和修改界面的高度相似,使用了相同的row字段. 在角色字段中使用了change监听事件,用于动态的无效化权限分配字段,因为权限分配界面默认没有隐藏,设定了che ...
- Excel中用REPT函数制作图表
本文从以下七个方面,阐述在Excel中用REPT函数制作图表: 一. 图形效果展示 二. REPT语法解释 三. REPT制作条形图 四. REPT制作漏斗图 五. REPT制作蝴蝶图 六. REPT ...
- CSS3 - vue中纯css实现柱状图表效果
背景 以前我们制作柱状图都用echarts或者其他同类型的图表插件 这次是个移动端的需求,而且这个图表需要动画 使用echarts就会显得过重,而且动画达不到我想要的效果(主要是我自己愚蠢想不到好的动 ...
- D3+svg 案例
<!doctype html><html lang="en"><head> <meta charset="UTF-8" ...
- Python 数据图表工具的比较
Python 的科学栈相当成熟,各种应用场景都有相关的模块,包括机器学习和数据分析.数据可视化是发现数据和展示结果的重要一环,只不过过去以来,相对于 R 这样的工具,发展还是落后一些. 幸运的是,过去 ...
- C语言I 博客作业03
这个作业属于哪个课程 C语言程序设计II 这个作业要求在哪里 作业要求 我在这个课程的目标是 掌握关系运算.if-else语句.格式化输入语句scanf(),以及常用的数学库函数 这个作业在那个具体方 ...
- ELK学习实验009:安装kibana的仪表盘
一 metricbeat仪表盘 1.1 安装metricbeat仪表盘 可以将metricbeat数据在kibana中展示 [root@node4 ~]# cd /usr/local/metricbe ...
- ArcMap从建库到出图
1前言 本篇博主将介绍关于ArcMap建库.数据采集.拓扑检查.图表.制作符号等的基本操作. 2问题阐述 (1)检查现有block(线要素)图层,保证所有要素闭合,并将其转换为parcel(面要素): ...
随机推荐
- [NOIP2014]自测
这两天做完了2014年的noip提高. 因为以前看了SDSC2016时gty的课件,题目思路都知道了一点,做起来没多大困难. 100+100+75+100+100+70=545 里面水分好多,好多题都 ...
- Struts2文件上传和文件下载
一.单个文件上传 文件上传需要两个jar包: 首先制作一个简单的页面,用于实现文件上传 <h1>单个文件上传</h1> <s:form action="uplo ...
- [转载]彻底弄清struct和typedef struct
struct和typedef struct 分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int ...
- JSPatch
链接: JSPatch github项目主页 JSPatch技术文档 JSPatch基础用法总结 JSPatch – 动态更新iOS APP JSPatch使用小记 end
- codevs 2594 解药还是毒药
2594 解药还是毒药 http://codevs.cn/problem/2594/ 题目描述 Description Smart研制出对付各种症状的解药,可是他一个不小心,每种药都小小地配错了一点原 ...
- 超棒的javascript移动触摸设备开发类库-QUOjs
开发手机端网站.少不了手势事件? 手势事件怎么写? 手势事件怎么去判断? 对于新手来说.真的很Dan碎! 下面为大家推荐一款插件QUOjs 官方网站http://quojs.tapquo.com/ 这 ...
- VMware Workstation中网络连接之桥接、NAT和Host-only
在Windows XP系统中,安装好VMware Workstation虚拟机软件以后,我们可以查看一下"网络连接"窗口: 在窗口中多出了两块网卡: VMware Network ...
- 重新注册IIS
出现问题的原因是先装了.NET4.0,再装IIS造成 处理方法:管理员权限执行cmd, C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_reg ...
- linux搭载discuz
公司论坛是用discuz,简单了解了一下,原来是php+mysql搭载的论坛,于是本鸟便试试搭载discuz试试怎么玩,下面是linux下搭载discuz的过程 第一步是下载,由于discuz是运行在 ...
- bzoj1584
1584: [Usaco2009 Mar]Cleaning Up 打扫卫生 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 467 Solved: 31 ...