图表的插件已经越来越多了,连google也提供了相应的api,今天我们再来折腾一个。这个插件基于
Open Flash Chart:http://teethgrinder.co.uk/open-flash-chart/
官方文档中提到了rails相关插件,其中有一个http://pullmonkey.com/写的,能用,但是感觉代码混乱,并且每次都会include一个swfobject.js,一个图还要写个action,不爽。于是乎想动手重写。
=====================================分割线===================================
分两步走:
第一:增加view相关的helper
第二:完全从写他的Grahp代码
今天先来说说第一步
首先new 一个 plugin
ruby script/generate plugin open_flash_chart
下载 http://teethgrinder.co.uk/open-flash-chart/ 上最新的代码,将open-flash-chart.swf 和 swfobject.js 按下图放置
新增task,用于将js,swf拷贝至public目录下,这个就很简单了,就是FileUtils cp 就可以了
file:/vendor/plugins/open_flash_chart/tasks/open_flash_chart_tasks.rake
namespace :chart do
desc 'Install the Open Flash Chart components'
task :install do
require 'fileutils'
FileUtils.rm_rf(File.join(File.join(RAILS_ROOT, 'public', 'javascripts', 'open_flash_chart')))
FileUtils.cp_r(File.join(File.dirname(__FILE__), '..', 'public', 'javascripts', 'open_flash_chart'),
File.join(RAILS_ROOT, 'public', 'javascripts'))
end
end
增加javascript_include_tag,我们定义为:chart
file:/vendor/plugins/open_flash_chart/lib/open_flash_chart.rb
module ActionView::Helpers::AssetTagHelper
alias_method :old_javascript_include_tag, :javascript_include_tag
def javascript_include_tag(*sources)
main_sources, application_source = [], []
if sources.include?(:chart)
sources.delete(:chart)
sources.push('open_flash_chart/swfobject')
end
unless sources.empty?
main_sources = old_javascript_include_tag(*sources).split("\n")
application_source = main_sources.pop if main_sources.last.include?('application.js')
end
[main_sources.join("\n"), application_source].join("\n")
end
end
增加view的helper方法,用于显示图片,这样就不用再新建一个action了
file:/vendor/plugins/open_flash_chart/lib/open_flash_chart.rb
module OpenFlashChart
module Helper
def open_flash_chart(width, height, url, background_color='#FFFFFF')
uuid = UUID.random_create.to_s
<<doc
<div id="#{uuid}">
Open Flash Chart.
</div>
<script type="text/javascript">
var so = new SWFObject("/javascripts/open_flash_chart/open-flash-chart.swf", "Open Flash Chart", "#{width}", "#{height}", "9", "#{background_color}");
so.addVariable("variable","true");
so.addVariable("data", "#{url}");
so.addParam("allowScriptAccess", "sameDomain");
so.write("#{uuid}");
</script>
doc
end
alias chart open_flash_chart
end
end
这里我们采用UUID来生成DIV的ID。(关于UUID可以参考我很久以前写的一篇帖子:http://mmm.iteye.com/blog/24298)
目前还没有时间自己来写graph的代码,继续沿用pullmonkey的,我们拿到手修改之,删掉不需要的,这断没有太的意思,代码又长,就不写了。
require 和 include 我们上面的代码
file:/vendor/plugins/open_flash_chart/init.rb
require 'uuidtools'
require 'open_flash_chart'
require 'graph'
ActionView::Base.send :include, OpenFlashChart::Helper
一个新的插件就诞生了,虽然现在还是基于pullmonkey写的,但是以后有时间一定会再次折腾:)
=====================================分割线===================================
我知道很多人对怎么折腾并不感兴趣,也许会跟我说:"别啰唆,告诉我怎么用就行了,烦死了"
OK
首先请忽略上面所有的内容,安装插件
ruby script/plugin install http://martinx.googlecode.com/svn/trunk/plugins/open_flash_chart
执行task拷贝js和swf文件
rake chart:install
在你的layout中添加javascript_include_tag :chart
<%= javascript_include_tag :defaults, :chart %>
在视图中使用 open_flash_chart 或者 chart 显示图表
<%= chart width, height, url[,background]%>
来个具体的例子吧:
我们采用http://pullmonkey.com/projects/open_flash_chart/view_source_code/candle中的代码
新建controller demo
ruby script/generate controller demo index
修改:
/app/views/demo/index.html.erb
<!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=UTF-8">
<%= javascript_include_tag :defaults, :chart %>
</head>
<body>
<%= chart 500, 250, '/demo/candle' %>
</body>
</html>
新建action :candle
file:/app/controllers/demo_controller.rb
重复的代码没什么好拷贝的,请查阅http://pullmonkey.com/projects/open_flash_chart/view_source_code/candle 上的action:candle
启动server,浏览一下 http://host:port/demo
来个截图:
下一步,下一步,彻底放弃他的graph.rb。
TO BE CONTINUE....
分享到:
- 2008-01-24 13:53
- 浏览 1929
- 评论(8)
- 论坛回复 / 浏览 (8 / 10161)
- 查看更多
相关推荐
"前端项目-chartjs-plugin-zoom.zip" 这个标题表明这是一个与前端开发相关的项目,特别提到了 "chartjs-plugin-zoom",这通常是指一个用于Chart.js库的插件,用于实现图表的缩放和平移功能。Chart.js是一个流行的...
而`chartjs-plugin-annotation`是Chart.js的一个插件,它提供了在图表上添加注释的功能,比如绘制直线、虚线、箭头、文本等,增强了图表的可解释性和交互性。 ### Chart.js基础 Chart.js是一个用纯JavaScript编写...
chartjs-plugin-zoom Chart.js> = 3.0.0的缩放和平移插件 为了获得Chart.js 2.6.0至2.9.x的支持,请使用 。 平移可以通过鼠标或手指来完成。 缩放是通过鼠标滚轮或捏合手势完成的。 用于手势识别。 文献资料 您...
chartjs-plugin-annotation.js Chart.js> = 3.0.0的注释插件 该插件需要注册。 它不能用作嵌入式插件。 对于Chart.js 2.4.0至2.9.x支持,请使用 该插件在图表区域上绘制线,框,点和椭圆。 注释适用于使用线性,...
和chart.js配套使用,实现cursor
chartjs-plugin-labels Chart.js插件,用于在饼图,甜甜圈图和极地图上显示标签。 原始Chart.PieceLabel.js 演示版 下载 CDN连结 您可以将以下链接放在脚本标签中 ...
chartjs-plugin-dragsegment Chart.js的插件 增加拖动线段的功能(折线图js)。 安装 使用npm安装插件: npm install chartjs-plugin-dragsegment 在Chartjs中注册插件: import Chart from 'chart.js' ; import ...
chartjs-plugin-dragdata.js 现在与Chart.js v3兼容 :party_popper: 寻找与Chart.js <2> = 2.4.0的插件使数据点可拖动。 支持触摸事件。在线演示图表类型演示版来源酒吧-简单酒吧泡泡-简单泡泡单杠-简单单杠线-单Y...
chartjs-plugin-streaming 实时流数据的插件1.2版或更早版本需要Chart.js2.6.x。 1.3版或更高版本需要Chart.js2.7.x。 1.8版需要Chart.js 2.7.x或2.8.x。安装您可以从下载最新版本的chartjs-plugin-streaming。 通过...
chartjs-plugin-rough 插件可创建具有手绘,粗略外观的图表0.2版要求Chart.js 2.7.0或更高版本,以及 2.0.1或更高版本。安装您可以从下载最新版本的chartjs-plugin-rough。 通过npm安装: npm install chartjs-...
概述 高度可定制的插件,可在任何类型的图表的数据上显示标签。 需要 > = 2.7.0 <3> npm install 然后,从存储库根目录可以使用以下命令: > npm run build // build dist files > npm run build:dev // build and...
Chart.js是一款轻量级的JavaScript库,专门用于在Web上绘制各种统计图表,如饼图、柱状图和线图。它以其简单易用、高效和灵活性而受到开发者喜爱。这个压缩包“Chart.js-master”很可能是Chart.js的源码仓库,包含...
另一个Docker插件 产生具有Docker相关功能的jenkins hpi插件的项目。 历史 当处于半工作状态时,我并稳定它。 ,就任其发展。 文件 在 ...Jenkins Cloud Slave的完整生命周期 ... 如果你不想改变你的更新中心,您可以...
chartjs-plugin-trendline 该插件在您的图表中绘制线性趋势线。 适用于Chart.js> 2.0 安装 直接在浏览器中加载 首先加载ChartJS,然后加载将自动向ChartJS注册的插件 < script src =" ...
npm install @jjppof/chartjs-plugin-zoom-pan-select 用法: import ChartJSEnhancements from '@jjppof/chartjs-plugin-zoom-pan-select' ; let enhancer = new ChartJSEnhancements ( chartjs_object ) ; ...
chartjs-plugin-colorschemes 预定义配色方案 您可以从基于 、 和等流行工具的预定义配色方案中为您的图表选择完美的颜色组合。 此插件需要 Chart.js 2.5.0 或更高版本。 安装 您可以从下载最新版本的 chartjs-...
用于向Vue添加图表的插件 目录 目的 该插件旨在允许Vue.js开发人员将完全React性和可自定义的图表合并到他们的应用程序中。 该插件是基于D3.js JavaScript库... 通过将其他图表添加到import文件夹中并将其导入v-chart-
这个插件,名为Another Backup Plugin (ABP),设计用于增强KeePass的经典版本,提供自动备份功能,确保用户的重要密码数据库在意外丢失后能够得到恢复。 在密码管理领域,KeePass是一款广受欢迎的开源软件,它允许...
This is yet another jQuery plugin to provide fixed headers for tables. It differs in the way that it does not require any odd ...
Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce,以及YARN(Yet Another Resource Negotiator)资源调度器。 Hadoop Eclipse Plugin的出现,极大地简化了开发者在Eclipse中的Hadoop应用...