- 浏览: 125442 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
xiejin2008:
最近1-2年比较流行的树组件 ztree
Dtree+Jquery动态生成树节点例子《新手可参考》 -
xiejin2008:
cyl5753 写道按照上面的步骤,访问https://127 ...
WebLogic Server 10.3 SSL配置及SSL协议传输的WebSevice调用 -
cyl5753:
按照上面的步骤,访问https://127.0.0.1:700 ...
WebLogic Server 10.3 SSL配置及SSL协议传输的WebSevice调用 -
wang1248912822:
[size=large][/size] [b] ...
Ext3.0 动态数据 Chart 初探 -
fushun_test:
很不错,柱状的每个珠子颜色和饼状的每个部分的颜色可以自定义吗 ...
Ext3.0 动态数据 Chart 初探
学习了Ext的Chart,看了官方提供的Example,也搜索了些资料。整理出了一份Ext Chart定时动态获取后台的Json数据的Demo。
参考的不错的文章有:
第一篇文章:http://atian25.iteye.com/blog/413947
这个有用的:关于Chart的一些样式和具体配置的用法参数:http://developer.yahoo.com/yui/charts/
Yahoo: http://developer.yahoo.com/flash/astra-flash/
http://www.hmgis.cn/post/366.html
发现ExtJs Chart的一个Bug: http://blog.csdn.net/acsu/archive/2009/11/26/4881834.aspx
如何自定义 ExtJS.chart.PieChart 各分块的颜色
http://www.cnblogs.com/beginor/archive/2009/11/22/1608034.html
Demo整体思路:
Servlert将List封装了JavaBean对象,JavaBean对象中的属性数据随机产生,然后通过Json-lib将List转换成json格式字符串,并且打印。
然后页面Js通过Ext.data.JsonReader ,Ext.data.Store 读取返回的json格式数据。
工程目录图:
Src目录:DataBean.java ,一个简单的JavaBean类。
DataServert.java 一个产生数据的Servlet 类(返回Json格式数据)。
WebRoot目录:chart 中,charts.js 关键的js代码。
extjs目录, ext中通用的js,css,swf等资源文件。
效果图片:
关键代码:
javaBean:
package com.bean; import java.io.Serializable; public class DataBean implements Serializable { private static final long serialVersionUID = 1L; private String name = ""; private int visits = 0; private int views = 0; public DataBean (String name, int visits, int views) { this.name = name; this.views = views; this.visits = visits; } public DataBean(){} public String getName () { return name; } public void setName ( String name ) { this.name = name; } public int getVisits () { return visits; } public void setVisits ( int visits ) { this.visits = visits; } public int getViews () { return views; } public void setViews ( int views ) { this.views = views; } }
DataServert:
package com.bean; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.Random; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; public class DataServert extends HttpServlet { /** * Constructor of the object. */ public DataServert () { super (); } /** * Destruction of the servlet. <br> */ public void destroy () { super.destroy (); // Just puts "destroy" string in log // Put your code here } /** * The doGet method of the servlet. <br> * * This method is called when a form has its tag value method equals to get. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doGet ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType ( "text/html;charset=utf-8" ); request.setCharacterEncoding ( "utf-8" ); PrintWriter out = response.getWriter (); String jsonString = ""; List<DataBean> list = new ArrayList<DataBean> (); String[] names = { "1G", "2G", "3G", "4G", "5G", "6G", "7G", "8G" }; Random random = new Random (); for (int i = 0; i < names.length; i++) { int num = random.nextInt ( 100 ) * 100; DataBean data = new DataBean ( names[i], num, num / 2 ); list.add ( data ); } JSONArray arryData = null; arryData = JSONArray.fromObject ( list ); jsonString = "{totalCount:" + list.size () + ",data:" + arryData.toString ().replaceAll ( "\n", "" ) + "}"; System.out.println (jsonString); out.print ( jsonString ); out.flush (); out.close (); } /** * The doPost method of the servlet. <br> * * This method is called when a form has its tag value method equals to post. * * @param request the request send by the client to the server * @param response the response send by the server to the client * @throws ServletException if an error occurred * @throws IOException if an error occurred */ public void doPost ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { doGet ( request, response ); } /** * Initialization of the servlet. <br> * * @throws ServletException if an error occurs */ public void init () throws ServletException { // Put your code here } }
charts.js
Ext.chart.Chart.CHART_URL = '../extjs/resources/charts.swf'; // 模板flash var json_store; Ext.onReady(function() { var json_reader = new Ext.data.JsonReader({ idProperty : "name", root : 'data', totalProperty : "totalCount", fields : [{ name : 'name', type : "string" }, { name : 'views', type : "int" }, { name : 'visits', type : "int" }] }); json_store = new Ext.data.Store({ proxy : new Ext.data.HttpProxy({ url : '../DataServert.do', method : 'POST' }), reader : json_reader }); // extra extra simple new Ext.Panel({ title : 'ExtJS.com Visits Trend, 2007/2008 ', renderTo : 'container', width : 500, height : 300, layout : 'fit', items : { xtype : 'linechart', // 类型 store : json_store, xField : 'name', // X轴取值 yField : 'visits', // Y轴取值 listeners : { itemclick : function(o) {// 点击事件. var rec = store.getAt(o.index); Ext.example.msg('被选中项:', '你选择了 {0}.', rec .get('name')); } }, series : [{ type : 'line', // line displayName : '点击数', yField : 'visits', style : { color : '#6666CC' } }] } }); // extra simple new Ext.Panel({ iconCls : 'chart', title : 'ExtJS.com Visits Trend, 2007/2008 (简单样式)', frame : true, renderTo : 'container', width : 500, height : 300, layout : 'fit', items : { xtype : 'columnchart', store : json_store, url : '../extjs/resources/charts.swf', xField : 'name', yField : 'visits', yAxis : new Ext.chart.NumericAxis({ displayName : 'Visits', labelRenderer : Ext.util.Format .numberRenderer('0,0') }), tipRenderer : function(chart, record) { return Ext.util.Format.number( record.data.visits, '0,0') + ' visits in ' + record.data.name; }, chartStyle : { animationEnabled : true,// 是否支持动态数据变化 legend : {// 图例 display : "bottom", spacing : 2, padding : 5, font : { name : 'Tahoma', color : '#3366FF', size : 12, bold : true } } }, series : [{ type : 'column', // line displayName : '点击数', yField : 'visits', style : { color : '#3366FF' } }] } }); // more complex with a custom look new Ext.Panel({ iconCls : 'chart',// 样式 title : 'ExtJS.com Visits and Pageviews, 2007/2008 (复杂样式)', frame : true, renderTo : 'container', width : 500, height : 300, layout : 'fit', items : { xtype : 'columnchart',// 柱状图 store : json_store, url : '../extjs/resources/charts.swf', xField : 'name',// X轴显示的值 yAxis : new Ext.chart.NumericAxis({ displayName : 'Visits', labelRenderer : Ext.util.Format .numberRenderer('0,0') }), // Y 轴显示的值 tipRenderer : function(chart, record, index, series) {// tip渲染 if (series.yField == 'visits') { return Ext.util.Format.number( record.data.visits, '0,0') + ' visits in ' + record.data.name; } else { return Ext.util.Format.number( record.data.views, '0,0') + ' page views in ' + record.data.name; } }, chartStyle : { padding : 10, animationEnabled : true,// 是否支持动态数据变化 font : {// 图表整体字体 name : 'Tahoma', color : 'silver', size : 11 }, border : { // color:'#3399FF', // size:1 }, background : { color : '#CCCCCC',// 背景颜色 alpha : 0.1 // 透明度 // image: // mode:stretch }, legend : {// 图例 display : "bottom", spacing : 2, padding : 5, font : { name : 'Tahoma', color : '#3366FF', size : 12, bold : true } }, dataTip : { // 鼠标经过,数据提示样式 padding : 5,// 提示内容与边框的距离 border : { color : "#FF3333", size : 1 }, background : { color : 0xDAE7F6,// 背景颜色透明度 alpha : .8 // 背景颜色透明度 }, font : { name : 'Tahoma', color : '#FF3300', size : 10, bold : true } }, xAxis : { // X 轴 color : 0x69aBc8, // X轴颜色 majorTicks : {// 大刻度值 color : 0x69aBc8, length : 4 }, minorTicks : {// 小刻度值 color : 0x69aBc8, length : 2 }, majorGridLines : { size : 1, color : '#999999' }, // showLabels:false, labelDistance : 4 }, yAxis : { color : 0x69aBc8, majorTicks : {// 大刻度值 color : 0x69aBc8, length : 4 }, minorTicks : {// 小刻度值 color : 0x69aBc8, length : 2 }, majorGridLines : { size : 1, color : '#999999' } } }, series : [{ type : 'column',// 柱状图 displayName : '浏览数', yField : 'views', style : { // image : 'bar.gif', // mode : 'stretch', color : '#66CCFF' } }, { type : 'column', // line displayName : '点击数', yField : 'visits', style : { color : '#FF3300' // lineAlpha:0.5, // lineColor:'#FF3300', // alpha:0.8, // size:10 } }] } }); // a new example new Ext.Panel({ width : 500, height : 300, renderTo : 'container', title : 'Stacked Bar Chart', items : { xtype : 'stackedbarchart',// 图表类型 store : json_store, yField : 'name', xAxis : new Ext.chart.NumericAxis({ stackingEnabled : true, labelRenderer : Ext.util.Format.usMoney // 格式化渲染 }), chartStyle : { legend : {// 图例 display : "top", spacing : 2, padding : 5, font : { name : 'Tahoma', color : '#3366FF', size : 12, bold : true } }, dataTip : { // 鼠标经过,数据提示样式 padding : 5,// 提示内容与边框的距离 border : { color : "#FF3333", size : 1 }, background : { color : 0xDAE7F6,// 背景颜色透明度 alpha : .8 // 背景颜色透明度 }, font : { name : 'Tahoma', color : '#FF3300', size : 10, bold : true } } }, series : [{ xField : 'views', displayName : '访问量' }, { xField : 'visits', displayName : '点击量' }] } }); // a Pie Chart example new Ext.Panel({ width : 400, height : 400, title : 'Pie Chart with Legend', renderTo : 'container', items : { store : json_store, xtype : 'piechart',// 餅圖 dataField : 'views',// 数据 categoryField : 'name',// 项目 // extra styles get applied to the chart defaults extraStyle : { legend : // 图例 { display : 'bottom', padding : 5, font : { family : 'Tahoma', size : 13 } } } } }); loadData(); }); function loadData() { json_store.reload(); setTimeout('loadData();', 1000); }
Charts.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <% String path = request.getContextPath (); String basePath = request.getScheme () + "://" + request.getServerName () + ":" + request.getServerPort () + path + "/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Charts</title> <link rel="stylesheet" type="text/css" href="../extjs/resources/css/ext-all.css" /> <!-- GC --> <!-- LIBS --> <script type="text/javascript" src="../extjs/adapter/ext/ext-base.js"></script> <!-- ENDLIBS --> <script type="text/javascript" src="../extjs/ext-all.js"></script> <script type="text/javascript" src="charts.js"></script> <!-- Common Styles for the examples --> <link rel="stylesheet" type="text/css" href="../extjs/shared/examples.css" /> <style type="text/css"> #container { padding: 10px; } #container .x-panel { margin: 10px; } #container .x-panel-ml { padding-left: 1px; } #container .x-panel-mr { padding-right: 1px; } #container .x-panel-bl { padding-left: 2px; } #container .x-panel-br { padding-right: 2px; } #container .x-panel-body { } #container .x-panel-mc { padding-top: 0; } #container .x-panel-bc .x-panel-footer { padding-bottom: 2px; } #container .x-panel-nofooter .x-panel-bc { height: 2px; } #container .x-toolbar { border: 1px solid #99BBE8; border-width: 0 0 1px 0; } .chart { background-image: url(chart.gif) !important; } </style> </head> <body> <script type="text/javascript" src="../extjs/shared/examples.js"></script> <!-- EXAMPLES --> <h1> Charts </h1> <div id="container"> </div> </body> </html>
下面附上源码:
- ExtCharts.rar (3.2 MB)
- 下载次数: 884
评论
想问几个问题:
1、如何将X轴定义为时间轴?
2、如果我的X轴是时间轴,如何将后台传得数据(比如时间是个字符串格式的)格式化成YYYY-MM-DD的格式
谢谢!
想问几个问题:
1、如何将X轴定义为时间轴?
2、如果我的X轴是时间轴,如何将后台传得数据(比如时间是个字符串格式的)格式化成YYYY-MM-DD的格式
谢谢!
发表评论
-
Origin字段 Header 为了防止CSRF的攻击
2014-07-08 12:09 1839为了防止CSRF的攻击,我们建议修改浏览器在发送POST请 ... -
eval解析JSON中的注意点
2013-12-08 18:32 778eval解析JSON中的注意点 在JS中将JSON的 ... -
jQuery ajax返回parsererror错误的解决方法
2013-12-04 22:38 1573jQuery ajax返回parsererror错误的解决 ... -
非常不错的Jquery图像报表Javascript类库.
2010-04-13 17:51 6887http://www.highcharts.com/ ... -
纯Java动态生成SVG饼图与JFreeChart超强功能生成SVG图表.
2009-12-13 21:20 4551SVG生成饼图,虽然代码实现,但是感觉太复杂,太耗费时间,还不 ... -
AJAX的中文乱码解决方法整理
2009-03-31 21:43 1211encodeURIComponent(dudu赛车),它是将中 ... -
手机主题网站,征集中文名字!炫出你的创意吧!
2009-03-27 14:58 1499手机主题网站,征集中文名字..炫出你的创意吧!! 网 ... -
Dtree+Jquery动态生成树节点例子《新手可参考》
2009-03-16 22:18 15502Dtree+Jquery动态生成树节点. 最近有朋友问我一个 ... -
Dom4j笔记总结《入门总结》
2009-03-13 08:51 1365Parsing XML 或许你想要做的第一件事情就是 ... -
答复: 代码评审怎么做,做到什么程度合适?
2009-03-11 09:26 1582不知道.看帖的人,有没 ... -
大家一起来讨论讨论像56和优酷等哪些网站,里面的动感相册功能是怎样实现的!
2009-01-08 16:53 1181大家一起来讨论讨论 像56和优酷等哪些网站,里面的动感相册功能 ... -
手机主题网站开发
2009-01-08 13:43 1398工作一段时间了,一直在公司开发这个网站. http:// ... -
SmartUpload缺陷:不能上传大文件,占内存耗CPU
2009-01-07 10:03 4491最近我们的网站项目,有一段时间,服务器运行到一定的时候时,就会 ... -
最近我公司的网站,服务器时间长了.就会报内存溢出.找不到原因
2008-12-22 17:10 1144最近我公司的网站,服务器时间长了,访问量变大.就会报内存溢出. ... -
怎样让一个网站,在搜索引擎中得到更够的搜索率呢?
2008-11-27 09:44 1158我们公司最近在做一个网站,大家提点建议呢,通过哪些方式能够让网 ...
相关推荐
7. **工具和辅助函数**:EXT3.0还提供了一些实用工具类和辅助函数,如Ext.util.CSS用于处理CSS样式,Ext.DomHelper用于动态创建DOM元素,以及Ext.Date用于日期时间操作等。 在阅读EXT3.0中文API文档时,开发者应该...
2. **数据绑定**:EXT3.0支持数据绑定,能够将数据模型与界面组件直接关联,实现数据的实时更新和同步。 3. **布局管理**:提供了多种布局方式,如绝对布局、流式布局、表格布局等,方便开发者构建复杂的页面结构。...
EXT3.0还支持自定义图标和动态加载。 5. 演示代码的运行:压缩包中的`demo`文件夹很可能包含了所有示例的HTML和JavaScript代码,可以直接在浏览器中运行。这有助于开发者直观地理解EXT3.0控件的使用方式,快速上手...
1. **日志式文件系统**:Ext3.0的核心特点是采用了日志记录的方式,这使得系统在崩溃或意外断电后能够快速恢复到一致状态,避免数据丢失。 2. **高性能**:通过优化的数据结构和算法,Ext3.0在读写速度上表现出色,...
Ext 3.0 中文文档Ext 3.0 中文文档Ext 3.0 中文文档Ext 3.0 中文文档Ext 3.0 中文文档Ext 3.0 中文文档Ext 3.0 中文文档Ext 3.0 中文文档Ext 3.0 中文文档Ext 3.0 中文文档Ext 3.0 中文文档
在EXT 3.0中文文档.CHM文件中,开发者可以找到关于EXT组件、布局、数据绑定、AJAX通信、事件处理等方面的详细信息。这个CHM文件通常包含一个索引和搜索功能,使得查找特定API或概念变得更加便捷。通过深入学习和理解...
EXT3.0 alpha 版本可能是指EXT3的一个早期开发版本,通常alpha版本是软件开发过程中的第一个公开测试版本,可能存在较多bug和不稳定因素。而EXT2.21可能是EXT2文件系统的某个更新版本,EXT2是EXT3的前身,不包含日志...
在 Ext 3.0 中,可以使用 GridPanel 显示数据,结合 Store 和 Proxy 实现数据的加载和筛选。同时,可以添加过滤器(Filter)或使用远程排序(remoteSort)来处理查询逻辑。 4. **动态树形菜单**:动态树形菜单是...
4. **事件监听与处理**:EXT3.0使用事件驱动模型,登录按钮的点击事件通常会触发一个函数,该函数负责收集表单数据,可能还会进行简单的客户端验证,然后使用Ajax技术向服务器发送POST请求。 5. **Ajax通信**:EXT...
Ext3.0中文帮助手册是针对Ext JavaScript库的详尽指南,主要面向开发者,提供了关于Ext 3.0版本的API文档。这个手册是开发基于Web的富客户端应用的重要参考资料,因为Ext是一个强大的用户界面框架,它允许创建复杂的...
Ext3.0是一款广泛应用于Web开发的JavaScript库,主要用于构建富客户端应用程序,特别是与数据管理、用户界面组件和Ajax交互相关的应用。它以其强大的功能、灵活性和高效的性能而备受推崇。"中文API"指的是该库的中文...
Ext3.0是Ext JS框架的一个重要版本,它在Web应用程序开发中提供了强大的用户界面组件和数据管理功能。此版本的发布RC1(Release Candidate 1)意味着它已接近最终稳定版,开发者可以开始测试并为正式版做好准备。API...
这份"Ext3.0中文文档"提供了全面的指南,帮助开发者深入理解并有效利用这个框架。 一、Store:在Ext 3.0中,Store是数据管理的核心。它负责存储和管理数据,与各种UI组件(如Grids和Trees)进行交互。Store可以连接...
4. **Tree**:EXT的树形组件用于展示层次结构的数据,支持动态加载、拖放操作和节点的展开/折叠。 5. **Tab Panel**:通过Tab Panel,可以创建带有多个标签页的应用界面,每个标签页可以包含不同的组件或面板。 6....
5. **表单处理**:Ext 3.0提供了强大的表单组件和数据验证机制,可以方便地创建和管理复杂的表单。 6. **树形结构**:TreePanel组件允许展示和操作层级数据,常用于文件系统或组织结构的展示。 7. **数据存储**:...
2. **数据绑定**:Ext 3.0引入了强大的数据绑定功能,使得UI组件能够实时反映数据源的变化。这通过Model、Store和View之间的联动实现,减少了代码量,提高了代码的可维护性。 3. **布局管理**:Ext 3.0 提供了多种...
在深入学习EXT 3.0源码时,建议先从核心类开始,例如Ext.Element(基础DOM操作)、Ext.Panel(基本组件)和Ext.data.Store(数据管理)。了解这些基础类的用法和实现原理后,再逐步探索更复杂的组件和功能,如Grid、...
2. 强大的数据绑定:通过Data Package,Ext3.0支持与后台数据的双向绑定,能够轻松实现数据的实时更新和同步。 3. 动态加载:支持按需加载组件和数据,优化页面性能,减少初始加载时间。 4. 完善的布局管理:提供...