`

Rails和Flash创建漂亮的报表

阅读更多
本文将介绍一种结合Rails和Flash,创建报表的方法.
原文比较冗长,我简单翻译

1.生成效果如下:




2. 多种报表实现方式

GruffJfreeChart


Gruff 需要 RMagick,而JFreeChart 需要java支持,代码类似如下:
  def CreateChart
         pipe = IO.popen "java -cp C:\\InstantRails\\rails_apps\\project\\jfree\\src;C:\\InstantRails\\rails_apps\\project\\jfree\\lib\\jcommon-1.0.0-rc1.jar;C:\\InstantRails\\rails_apps\\project\\jfree\\lib\\jfreechart-1.0.0-rc1.jar; CreateChart" 
         pipe.close
         redirect_to "/graph/report" 
      end


XML/SWF做为Flash库,是个不错的选择 而且有插件支持.应该是免费



3. amCharts

这是我们要介绍的用法,因为,更容易用,虽然,免费版带水印.

这里下载
解压缩有三个文件.swf .xml和amcharts_key.txt

4. 数据源部分

这里通过rails的controller提供数据,传给FLex

  def population
    @cities = City.find(:all)
    @population_data_link = formatted_population_reports_url(:xml)
    respond_to do |format|
      format.html
      format.xml  { render :action => "population.xml.builder", :layout => false }
    end
  end


@cities 是City相关记录,有population

@populationdatalink 保存取得图表数据的url地址
这个地址,能够访问,是因为有路由如下
#routes.rb:

  map.resources :reports, :collection => {:population => :get}


5. Flash客户端支持检查

为了保证用户能够正常显示Flash 所以需要swfobject.js 那么,就要在view里增加
  <%= javascript_include_tag 'swfobject' %>


6. population.html.erb 显示

  <div id="population_chart" class='chart'>
    <strong>如果你没有Flash Player这里会显示</strong>
    <p>或者,版本不支持播放,需要更新</p>
  </div>

  <script type="text/javascript">
    // <![CDATA[    
    var so = new SWFObject("/amcolumn/amcolumn.swf", "population_chart", "800", "380", "8", "#000000");
    so.addVariable("path", "/amcolumn/");
    so.addVariable("settings_file", escape("/amcolumn/column_settings.xml"));
    so.addVariable("data_file", escape("<%= @population_data_link %>"));
    so.addVariable("additional_chart_settings", "<settings><labels><label><x>250</x><y>25</y><text_size>18</text_size><text><![CDATA[<b>California Population as of <%= Time.now.to_s(:db) %></b>]]></text></label></labels></settings>");
    so.addVariable("preloader_color", "#000000");
    so.write("population_chart");
    // ]]>
  </script>


引用
  so.addVariable("path", "/amcolumn/");
库文件地址



引用
  so.addVariable("settings_file", escape("/amcolumn/column_settings.xml"));
xml是配置文件


引用
  so.addVariable("data_file", escape("<%= @population_data_link %>"));



and population.xml.builder

  xml.instruct! :xml, :version=>"1.0", :encoding=>"UTF-8"
  xml.chart do
    # 生成城市名
    xml.series do    
      @cities.each_with_index do |city, index|
        xml.value city.name, :xid => index
      end
    end

    xml.graphs do
     #这部分用来控制显示
      xml.graph :gid => 'population' do
        @cities.each_with_index do |city, index|
          population = city.population
          case population
            # 当人口大于一百万显示红色
            when > 100000
              xml.value value, :xid => index, :color => "#ff43a8", :gradient_fill_colors => "#960040,#ff43a8", :description => level
            else
              xml.value value, :xid => index, :color => "#00C3C6", :gradient_fill_colors => "#009c9d,#00C3C6", :description => level
            end
        end
      end
    end

  end
  • 大小: 24.9 KB
  • 大小: 19.3 KB
  • 大小: 77.8 KB
分享到:
评论

相关推荐

    Rails 集成Open Flash Charts

    2. **配置**: 由于Open Flash Chart是基于Flash的,你需要在Rails应用的视图中引入相关的JavaScript和Flash资源。这通常通过在布局文件(如`application.html.erb`)中添加相应的HTML标签来完成。 3. **生成图表...

    FusionCharts_RoR

    5. **整合到Rails View**:在Rails的视图模板中,你需要嵌入Flash对象和相关的JavaScript代码,以显示图表。这通常涉及HTML和JavaScript的混合使用,确保Flash组件能正确加载并渲染数据。 6. **测试和优化**:最后...

    Web Chart 极品web报表控件收集Web+Chart

    FusionCharts - FusionCharts 是一个跨浏览器和跨平台的flash图表组件,能够被 ASP.NET, ASP, PHP, JSP, ColdFusion, Ruby on Rails, 简单 HTML 页面 甚至PPT调用. 几乎所有你知道的语言它都支持。 ? JFreeChart -...

    Chart 极品web报表控件收集(Flot,AmCharts, Emprise JavaScript Charts...)

    • FusionCharts - FusionCharts 是一个跨浏览器和跨平台的flash图表组件,能够被 ASP.NET, ASP, PHP, JSP, ColdFusion, Ruby on Rails, 简单 HTML 页面 甚至PPT调用. 几乎所有你知道的语言它都支持。 • ...

    FusionchartsXTV3.2.2最新版教程.

    FusionCharts充分利用Flash和JavaScriptHTML5创建完美的数据可视化效果 这是其他传统的服务端组件无法比拟的。因为它与XML和JSON数据一起工作所以能够 结合所有的服务端技术ASPASP.NETPHPJSP...

    FusionCharts Free中文开发指南[使用文档教程](配图)

    自99年以来,Flash技术经历了显著的发展,从简单的动画工具演变为能够处理复杂图形和报表的强大工具。FusionCharts Free充分利用了这一优势,提供了3D/2D柱形图、曲线图、饼图、环图、区域图、堆栈图、联合图、蜡烛...

    FusionCharts产品手册.pdf

    - **产品定位**:一种强大的图表制作工具,旨在帮助用户快速为Web和企业应用程序创建高质量的图表、仪表板和地图。 - **技术支持**:支持JavaScript (HTML5) 和 Flash 技术,适用于PC、Mac、iPad、iPhone等多种设备...

    fusioncharts中文幫助文檔

    随着时间的发展,Flash技术逐渐扩展其应用领域,尤其是在图形报表的呈现上表现出强大的能力。FusionCharts Free的最新版本为v2.1,此版本对JSP和Ruby on Rails的集成提供了更多支持,优化了FusionCharts DOM,使得...

    FusionCharts帮助文档.doc

    FusionCharts是一款强大的图表生成工具,由InfoSoft Global公司开发,专门用于创建吸引人的、交互式的图表和图形。它是一个基于Flash技术的组件,适用于多种编程语言环境,如ASP.NET, ASP, PHP, JSP, ColdFusion, ...

    Fusioncharts XT V3.2.2最新中文版教程

    Fusioncharts V3.2.2 是一款先进的图表制作工具,专为现代网站和企业应用程序设计,旨在帮助用户创建交互性强、视觉效果出众的图表。该版本是业界领先的企业级图表组件之一,能够实现在PC、Mac、iPad、iPhone以及...

    Fusioncharts XT V3.2.2中文版教程

    Fusioncharts XT V3.2.2是一款企业级的图表组件,可以帮助用户在网页应用程序和企业应用程序中创建交互式的图表。这款产品以它的强大的报表功能、生动的动画效果以及对多种设备的完美支持在全球范围内得到广泛认可。...

    JAVA上百实例源码以及开源项目源代码

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    java开源包1

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包11

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

    java开源包2

    MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:...

Global site tag (gtag.js) - Google Analytics