`

(一)用grails和FusionCharts(饼图和柱形图)来实现fusionCharts的下钻(link)以及基于数据库动态获得XML

阅读更多




工作准备:把要用到的饼图和柱形图的flash(Column3D.swf,Pie3D.swf)
放到web项目的根目录FusionCharts(这个可以自己定义)中,在gsp页面中添加(FusionCharts.js) <scriptlanguage="JavaScript"src="${request.getContextPath()}/FusionCharts/FusionCharts.js">

1.在controller中的action代码 此时的情况是登录进入系统后要自动去获得
xml数据。
所以在登录进入时,直接在登录action里调用String getBigCatePieXml()(饼图)
String getbardataXml()方法(柱形图)
   

    String getBigCatePieXml(){
        def logman = Client.findByName(session.name)
        def logmanComany = logman.clientCompany

               //admin
       Sql sql = new Sql(dataSource)
        if(session.name=='admin'){       
 def typeStr = "select cate.pur_big_cate_id as type_id,
count(list.id) as num FROM pur_list as list,pur_category cate 
where list.type_id = cate.id  group by cate.pur_big_cate_id"
         typeArr = sql.rows(typeStr)
        //设备总数
        def allshebeiStr = "select count(id) as num FROM pur_list "
         allshebeiArr = sql.rows(allshebeiStr)
        }else{       
 //def logmanComany = logman.clientCompany
       // Sql sql = new Sql(dataSource)
        def typeStr = "select cate.pur_big_cate_id as type_id,
count(list.id) as num FROM pur_list as list,pur_category cate 
where list.type_id = cate.id and 
client_company_id = "+logmanComany.id 
+" group by cate.pur_big_cate_id"
         typeArr = sql.rows(typeStr)
        //设备总数
     def allshebeiStr = "select count(id) as num FROM
 pur_list
 where client_company_id = "+logmanComany.id
         allshebeiArr = sql.rows(allshebeiStr)
        }
def pieXmldata = 
"<chart caption='您当前共有${allshebeiArr[0].num}
台设备' baseFontSize='12' >"
          typeArr.each{
   pieXmldata+=" <set label='"+
PurBigCate.get(it.type_id).name+"' value='"+it.num+"' 
link='../purList/piesearchCate/"+it.type_id+"'/>"
	  }
//link是实现FusionCharts的下钻功能的,在接下来的文章将会说明多层次下钻(3层)
	  pieXmldata+="</chart>"
         println pieXmldata
	 return pieXmldata //得到pieXmldata 此为xml串 并且返回
	    }


String getbarXml(){
        def logman = Client.findByName(session.name)
	def logmanComany = logman.clientCompany

        def bigCate
        if(params.bigCate){
             bigCate = params.bigCate
        }
        //admin
        Sql sql = new Sql(dataSource)
        if(session.name=='admin'){
        def barStr = "select 
(to_char(list.purchase_time,'YYYY')) 
as year,count(list.id) as num from 
pur_list as list,pur_category as cate where list.type_id = cate.id "
        if(bigCate){
     barStr +=" and cate.pur_big_cate_id ="+bigCate
        }
        def barorder = " group by (to_char(list.purchase_time,'YYYY')) order by (to_char(list.purchase_time,'YYYY'))"
         barStrAll = barStr + barorder
        def maxStr = " group by 
(to_char(list.purchase_time,'YYYY')) order by num desc"
         barMaxStr = barStr+ maxStr
        }else{
       def barStr = "select 
(to_char(list.purchase_time,'YYYY')) 
as year,count(list.id) as num from 
pur_list as list,pur_category as cate where list.type_id = cate.id and list.client_company_id = "+logmanComany.id
        if(bigCate){
   barStr +=" and cate.pur_big_cate_id ="+bigCate
        }
        def barorder = " group by (to_char(list.purchase_time,'YYYY')) order by (to_char(list.purchase_time,'YYYY'))"
     barStrAll = barStr + barorder
    def maxStr = " group by (to_char(list.purchase_time,'YYYY')) order by num desc"
         barMaxStr = barStr+ maxStr
        }
	
	 barArr = sql.rows(barStrAll)
         barMaxArr = sql.rows(barMaxStr)
     def  zhuXmldata = "<chart caption='购入数量(台)' baseFontSize='12' >"
       barArr.each{
zhuXmldata+=" <set label='"+it.year+"年"+"' value='"+it.num+"' link='${request.getContextPath()}/purList/searchByYear/"+it.year+"' />"
	 }

	 zhuXmldata+="</chart>"
         println zhuXmldata
	 return zhuXmldata
    }


在homeBody里调用String getBigCatePieXml()(饼图)
String getbardataXml()方法(柱形图)
def homeBody ={
..................................//代码省略
def peixml = getBigCatePieXml()
	def barxml = getbarXml()
	         println peixml
		 println barxml
render(view:'homeBody',model:[peixml:peixml,barxml:barxml])
//把peixml,barxml传到页面(view:'homeBody')就是指homeBody.gsp  
}
    

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
<meta http-equiv='Content-Type' 
content='text/html; charset=GBK'/>
  <meta http-equiv="X-UA-Compatible" 
content="IE=EmulateIE7" />
     <script language="JavaScript" src="${request.getContextPath()}/FusionCharts/FusionCharts.js">//这个必须要写的
        </script>
      		<title>首页</title>
             
</head>   
[img][/img]<body style="background:#fff;">  
     。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。  //js以及代码省略                                              <divid="chartdivbing" align="center" ></div>
// 这是饼图
                                                        <scripttype="text/javascript">   
var xmldata = "${peixml}"
							 //alert(xmldata)
var myChart = new FusionCharts
("${request.getContextPath()}/FusionCharts/Pie3D.swf", 
"myChartId", "105%", "300", "0", "0");
                                                            myChart.setDataXML(xmldata)
//通过setDataXMl()方法来获得xml串
          
 myChart.render("chartdivbing")
         
</script>
       。。。。。。。。。。。。。。。。。。。。。。                                                     
                               
 </td>
                  //这是柱形图              
                  
 <div id="chartdivzhu"></div>
                        
 <script type="text/javascript" align="center">
 var xmlbardata = "${barxml}"
                          
 var myChart = new FusionCharts
("${request.getContextPath()}/FusionCharts/Column3D.swf", 
"myChartId", "100%", "300", "0", "0");
                          
 myChart.setDataXML(xmlbardata)
                          
 myChart.render("chartdivzhu")
                          
 </script>
         
                 
                      
</body>
</html>    



得到的效果如上饼图和柱形图
我把图片上传了 想看效果自己去看吧

  • 大小: 9.2 KB
  • 大小: 14.1 KB
2
0
分享到:
评论
1 楼 java-007 2010-10-27  
嗯,不错。支持。

相关推荐

    grails 配置mongodb数据库

    grails 配置mongodb数据库,并实现了用户登录的系统,只要将grails的环境配置好,安装上mongodb,再建立一个数据库ggtest,然后运行即可自动生成相应的集合数据。

    grails开发环境配置及应用开发

    详细讲解grails开发环境配置。 详细讲解grails连接mysql数据库,crud开发

    grails框架

    实际上,一个grails插件和一个grails应用基本是完全一样的,同样可以使用grails run-app命令来运行。区别仅在于一个插件的根目录下需要提供一个fooplugin.groovy文件,提供插件的一些描述信息。

    Grails 教程

    像Rails,Django和TurboGears这样的动态框架在Web开发领域开辟了一条新的道路,Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和...

    GRails 中文帮助文档(参考手册)和安装开发介绍帮助

    像Rails,Django和TurboGears这样的动态框架在Web开发领域开辟了一条新的道路,Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和...

    Grails Grails Grails

    Grails Grails Grails Grails Grails

    grails实现分页技术

    供初学者使用,在grails中只有list(自动生成)中有分页实现,而自己新增的页面中需自己实现分页,该文档中描述了如何实现分页以及注意点

    Eclipse下搭建Grails项目

    Grails项目的应用越来越多,而对于初学者来说,在Eclipse下搭建Grails项目是一个难题,这个文档将教会你如何搭建Grails项目,希望对你有所帮助。

    grails-开源框架使用指南

    像Rails,Django和TurboGears这样的动态框架在Web开发领域开辟了一条新的道路,Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和...

    Grails1.1中文文档

    因此我们要以一种新的思维方式来重新思考Web开发,Rails、Django和TurboGears这样的动态框架给我们铺平了道路。Grails建立在这些概念之上,它极大地降低了在Java平台上建立Web应用的复杂性。与那些框架不同的是,...

    Grails 中文参考手册

    6.1.7 XML和JSON响应 6.1.8 上传文件 6.1.9 命令对象 6.2 Groovy Server Pages 6.2.1 GSP基础 6.2.1.1 变量和作用域 6.2.1.2 逻辑和迭代 6.2.1.3 页面指令 6.2.1.4 表达式 6.2.2 GSP标签 6.2.2.1 变量和作用域 6.2....

    Grails3配置单独的数据库properties.pdf

    Grails3配置单独的数据库properties.pdf

    Grails 和 jQuery开发实例

    使用 Grails 和 jQuery 快速开发一个 Web Calendar 程序。

    Grails权威指南

    第1章 寻找grails之旅  1.1 java的困惑  1.2 webc2.0时代  1.3 java的力量  1.4 什么是grails  1.4.1 与java集成  1.4.2 简单而强大  1.4.3 吸取的经验教训  1.5 使用grails的原因 ...

    Grails-开源框架---使用指南(中文)

    Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。 Grails这个独特的框架被视为是提升工程师生产效率的动态工具,因为其...

    grails-3.3.9

    Grails是一套用于快速Web应用开发的开源框架,它基于Groovy编程语言,并构建于Spring、Hibernate等开源框架之上,是一个高生产力一站式框架。 Grails这个独特的框架被视为是提升工程师生产效率的动态工具,因为其...

    使用 Grails 快速开发 Web 应用程序

    Grails入门好资料

    Grails权威指南 Grails权威指南

    Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南Grails权威指南

    使用Grails快速开发Web应用.rar

    易于使用的基于Hibernate的对象-关系映射(ORM)层称为Groovy Server Pages (GSP)的表现层技术基于Spring MVC的控制器层构建于Gant 上的命令行脚本运行环境内置Jetty服务器,不用重新启动服务器就可以进行重新加载利用...

    grails 1.0.4

    Grails专为下一代JavaWeb应用程序而设计的框架,其借助于Groovy动态语言,使Web开发变得简单而方便。Grails尽量为更多现有的Java项目创建一个全面的框架(不仅局限于视图处理),这和当前一些Java框架提供给用户的一...

Global site tag (gtag.js) - Google Analytics