论坛首页 编程语言技术论坛

lighttpd下rails FusionCharts图表

浏览 9314 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-08-08  
尝试使用open_flash_chart和FusionCharts,在rails中都可以实现。
用WEBrick启动web,不管在XP平台还是centos平台下,都运行正常。
但如果在centos启动lighttpd,open_flash_chart不能显示。而FusionCharts所提供的两种方法中,chart.setDataURL在lighttpd方式下不成功,并且该方式也不支持中文。

遂将满足lighttpd,并且支持中文的FusionChartsFree的chart.setDataXML实现方式总结如下,不理想的就是要自己构造XML字符串。
FusionChartsFree的好处就是不要进行插件的安装。拷贝相关的文件就可以了。
顺带提一句,发现:FusionChartsFree的速度比FusionCharts v3破解版速度快。


下载:FusionChartsFree
地址:http://www.fusioncharts.com/Free/
FusionCharts 是一个跨浏览器和跨平台的flash图表组件,能够被 ASP.NET, ASP, PHP, JSP, ColdFusion, Ruby on Rails, 简单 HTML 页面 甚至PPT调用. 几乎所有你知道的语言它都支持。

安装:
解压:FusionChartsFree.zip
1、在自己的rails项目程序的public目录下建立一个目录:FusionCharts;
2、将目录Charts下的所有swf文件全部拷贝到第1步建立的目录下;
3、将JSClass下的FusionCharts.js文件,拷贝到rails项目的public/javascripts下。

表结构:销售表markets
产品名:product_name   string
销售量:product_sum    integer

代码如下:
class ReportController < ApplicationController
  def index     #构造xml字符串
    my_market = Market.find(:all)
    strXML =[]
    strXML << "<graph caption='图表示例' xAxisName='产品' yAxisName='销量' showNames='1' decimalPrecision='0' formatNumberScale='0' BaseFontSize = '12'>"
    my_market.each do |m|
      strXML << "<set name='" + m.product_name + "' value='" + m.sum.to_s + "' />"
    end
    strXML << "</graph>"
    @my_str = strXML.to_s
  end
end


<!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" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
		<title>Contact:<%= controller.action_name %></title>
		<%= javascript_include_tag 'FusionCharts'%>
	</head>
	<body>
		<div id="chartdiv" align="center"></div>
		<script language="JavaScript" type="text/javascript">
		var myChart = new FusionCharts("/FusionCharts/FCF_Bar2D.swf", "myChartId", "600","500" );
        myChart.setDataXML("<%= @my_str %>")
        myChart.render("chartdiv");</script>
	</body>
</html>


FusionCharts的其它类型图表的xml格式,请见:FusionCharts解压后的Index.html说明。
   发表时间:2008-11-29  
请问你的Y轴能显示吗? 我的Y轴不能显示
0 请登录后投票
   发表时间:2008-11-29  
是Y轴的中文...
0 请登录后投票
   发表时间:2009-03-04  
rotateYAxisName='0' Y轴横着写就OK了
0 请登录后投票
   发表时间:2009-07-09  
我都 想使用rails中的xml builder,用xml url不行啊。这个问题折磨人啊。搞了好久还是没有解决
0 请登录后投票
   发表时间:2009-07-13  
为什么我用了之后总是提示“未结束的字符串常量”错误呢,而且看/FusionCharts/FCF_Bar2D.swf  里面也是“Error in Loading Data”?
0 请登录后投票
   发表时间:2009-07-13  
在生成的xml字符串中要使用单引号才行的。
0 请登录后投票
   发表时间:2009-07-13  
是啊  我是照上面写的啊,controller是这样的:
strXML << "<graph caption='show' xAxisName='subjects' yAxisName='num' showNames='1' decimalPrecision='0' formatNumberScale='0' BaseFontSize = '12'>"
     @results_charts.each do |m|
         strXML << "<set name='" + m.subject_name + "' value='" + m.nstl.to_s + "' />"
      end
     strXML << "</graph>"
      session[:my_str] = strXML.to_s

然后页面是这样的:
<div   id="chartdiv" align="center">
        <script language="JavaScript" type="text/javascript">
        var myChart = new FusionCharts("/FusionCharts/FCF_Bar2D.swf", "myChartId", "600","500" );
        myChart.setDataURL("<%= session[:my_str] %>")
       myChart.render("chartdiv");</script>
      </div>

可是还是提示出错啊,还是说“未结束的字符串常量”
0 请登录后投票
   发表时间:2009-07-13  
非常非常汗!原来我忘加了“;”了,不提示了,但是还是不能显示,错误为“Error in Loading Data”,难道要安装flash?大侠们你们都装了吗?不装不行吗?
0 请登录后投票
   发表时间:2009-07-13  
咦,教程里不是说如果有中文的话用setDataXML不行吗,要换成setDataURL吗?我用setDataURL不好用,用setDataXML反倒好用了,怪哉,怪哉!
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics